11{-# LANGUAGE DataKinds #-}
2+ {-# LANGUAGE DefaultSignatures #-}
23{-# LANGUAGE FlexibleContexts #-}
34{-# LANGUAGE GADTs #-}
45{-# LANGUAGE MultiParamTypeClasses #-}
@@ -69,6 +70,7 @@ import Cardano.Slotting.Time (SystemStart)
6970import Control.DeepSeq (NFData )
7071import Control.Monad.Trans.Fail.String (errorFail )
7172import Data.Aeson (ToJSON )
73+ import Data.Coerce (Coercible , coerce )
7274import Data.Kind (Type )
7375import Data.List.NonEmpty (NonEmpty , nonEmpty )
7476import Data.Text (Text )
@@ -93,17 +95,52 @@ class (PlutusLanguage l, EraPlutusContext era) => EraPlutusTxInfo (l :: Language
9395 ProtVer ->
9496 TxCert era ->
9597 Either (ContextError era ) (PlutusTxCert l )
98+ default toPlutusTxCert ::
99+ forall proxy.
100+ ( Era era
101+ , EraPlutusTxInfo l (PreviousEra era)
102+ , Coercible (ContextError (PreviousEra era)) (ContextError era)
103+ , Coercible (TxCert era) (TxCert (PreviousEra era))
104+ ) =>
105+ proxy l ->
106+ ProtVer ->
107+ TxCert era ->
108+ Either (ContextError era) (PlutusTxCert l)
109+ toPlutusTxCert = coerce $ toPlutusTxCert @ l @ (PreviousEra era ) @ proxy
96110
97111 toPlutusScriptPurpose ::
98112 proxy l ->
99113 ProtVer ->
100114 PlutusPurpose AsIxItem era ->
101115 Either (ContextError era ) (PlutusScriptPurpose l )
116+ default toPlutusScriptPurpose ::
117+ forall proxy.
118+ ( Era era
119+ , EraPlutusTxInfo l (PreviousEra era)
120+ , Coercible (ContextError (PreviousEra era)) (ContextError era)
121+ , Coercible (PlutusPurpose AsIxItem era) (PlutusPurpose AsIxItem (PreviousEra era))
122+ ) =>
123+ proxy l ->
124+ ProtVer ->
125+ PlutusPurpose AsIxItem era ->
126+ Either (ContextError era) (PlutusScriptPurpose l)
127+ toPlutusScriptPurpose = coerce $ toPlutusScriptPurpose @ l @ (PreviousEra era ) @ proxy
102128
103129 toPlutusTxInfo ::
104130 proxy l ->
105131 LedgerTxInfo era ->
106132 Either (ContextError era ) (PlutusTxInfo l )
133+ default toPlutusTxInfo ::
134+ forall proxy.
135+ ( Era era
136+ , EraPlutusTxInfo l (PreviousEra era)
137+ , Coercible (ContextError (PreviousEra era)) (ContextError era)
138+ , Coercible (LedgerTxInfo era) (LedgerTxInfo (PreviousEra era))
139+ ) =>
140+ proxy l ->
141+ LedgerTxInfo era ->
142+ Either (ContextError era) (PlutusTxInfo l)
143+ toPlutusTxInfo = coerce $ toPlutusTxInfo @ l @ (PreviousEra era ) @ proxy
107144
108145 toPlutusArgs ::
109146 proxy l ->
@@ -113,6 +150,21 @@ class (PlutusLanguage l, EraPlutusContext era) => EraPlutusTxInfo (l :: Language
113150 Maybe (Data era ) ->
114151 Data era ->
115152 Either (ContextError era ) (PlutusArgs l )
153+ default toPlutusArgs ::
154+ forall proxy.
155+ ( Era era
156+ , EraPlutusTxInfo l (PreviousEra era)
157+ , Coercible (ContextError (PreviousEra era)) (ContextError era)
158+ , Coercible (PlutusPurpose AsIxItem era) (PlutusPurpose AsIxItem (PreviousEra era))
159+ ) =>
160+ proxy l ->
161+ ProtVer ->
162+ PlutusTxInfo l ->
163+ PlutusPurpose AsIxItem era ->
164+ Maybe (Data era) ->
165+ Data era ->
166+ Either (ContextError era) (PlutusArgs l)
167+ toPlutusArgs = coerce $ toPlutusArgs @ l @ (PreviousEra era ) @ proxy
116168
117169class
118170 ( AlonzoEraScript era
0 commit comments