44{-# LANGUAGE RankNTypes #-}
55{-# LANGUAGE StandaloneDeriving #-}
66{-# LANGUAGE TupleSections #-}
7+ {-# LANGUAGE TypeApplications #-}
78
89module Cardano.Api.Experimental.Tx.Internal.Certificate
910 ( Certificate (.. )
1516
1617import Cardano.Api.Address qualified as Api
1718import Cardano.Api.Certificate.Internal qualified as Api
19+ import Cardano.Api.Era.Internal.Core (DijkstraEra )
1820import Cardano.Api.Era.Internal.Eon.Convert
19- import Cardano.Api.Era.Internal.Eon.ConwayEraOnwards
2021import Cardano.Api.Era.Internal.Eon.ShelleyToBabbageEra qualified as Api
2122import Cardano.Api.Experimental.Era
2223import Cardano.Api.Experimental.Plutus.Internal.Script qualified as Exp
@@ -45,13 +46,18 @@ deriving instance Eq (Certificate era)
4546deriving instance Ord (Certificate era )
4647
4748convertToOldApiCertificate :: Era era -> Certificate (LedgerEra era ) -> Api. Certificate era
48- convertToOldApiCertificate ConwayEra (Certificate cert) =
49- Api. ConwayCertificate ConwayEraOnwardsConway cert
49+ convertToOldApiCertificate e (Certificate cert) =
50+ obtainCommonConstraints e $ Api. ConwayCertificate (convert e) cert
5051
5152convertToNewCertificate :: Era era -> Api. Certificate era -> Certificate (LedgerEra era )
52- convertToNewCertificate ConwayEra (Api. ConwayCertificate _ cert) = Certificate cert
53- convertToNewCertificate ConwayEra (Api. ShelleyRelatedCertificate sToBab _) =
54- case sToBab :: Api. ShelleyToBabbageEra ConwayEra of {}
53+ convertToNewCertificate era (Api. ConwayCertificate _ cert) =
54+ case era of
55+ ConwayEra -> Certificate cert
56+ DijkstraEra -> Certificate cert
57+ convertToNewCertificate era (Api. ShelleyRelatedCertificate sToBab _) =
58+ case era of
59+ ConwayEra -> case sToBab :: Api. ShelleyToBabbageEra ConwayEra of {}
60+ DijkstraEra -> case sToBab :: Api. ShelleyToBabbageEra DijkstraEra of {}
5561
5662mkTxCertificates
5763 :: forall era
@@ -61,29 +67,29 @@ mkTxCertificates
6167mkTxCertificates [] = TxCertificatesNone
6268mkTxCertificates certs =
6369 TxCertificates (convert useEra) $ fromList $ map (getStakeCred useEra) certs
64- where
65- getStakeCred
66- :: Era era
67- -> (Certificate (LedgerEra era ), AnyWitness (LedgerEra era ))
68- -> ( Api. Certificate era
69- , Api. BuildTxWith
70- Api. BuildTx
71- (Maybe (Api. StakeCredential , Api. Witness Api. WitCtxStake era ))
72- )
73- getStakeCred era (Certificate cert, witness) =
74- case era of
75- ConwayEra -> do
76- let oldApiCert = Api. ConwayCertificate (convert era) cert
77- mStakeCred = Api. selectStakeCredentialWitness oldApiCert
78- wit =
79- case witness of
80- AnyKeyWitnessPlaceholder -> Api. KeyWitness Api. KeyWitnessForStakeAddr
81- AnySimpleScriptWitness ss ->
82- Api. ScriptWitness Api. ScriptWitnessForStakeAddr $ newToOldSimpleScriptWitness era ss
83- AnyPlutusScriptWitness psw ->
84- Api. ScriptWitness Api. ScriptWitnessForStakeAddr $
85- newToOldPlutusCertificateScriptWitness ConwayEra psw
86- (oldApiCert, pure $ (,wit) <$> mStakeCred)
70+
71+ getStakeCred
72+ :: Era era
73+ -> (Certificate (LedgerEra era ), AnyWitness (LedgerEra era ))
74+ -> ( Api. Certificate era
75+ , Api. BuildTxWith
76+ Api. BuildTx
77+ (Maybe (Api. StakeCredential , Api. Witness Api. WitCtxStake era ))
78+ )
79+ getStakeCred e (Certificate cert, witness) = do
80+ let oldApiCert = obtainCommonConstraints e $ Api. ConwayCertificate (convert e) cert
81+ mStakeCred = Api. selectStakeCredentialWitness oldApiCert
82+ wit =
83+ case witness of
84+ AnyKeyWitnessPlaceholder -> Api. KeyWitness Api. KeyWitnessForStakeAddr
85+ AnySimpleScriptWitness ss ->
86+ Api. ScriptWitness Api. ScriptWitnessForStakeAddr $
87+ obtainCommonConstraints e $
88+ newToOldSimpleScriptWitness e ss
89+ AnyPlutusScriptWitness psw ->
90+ Api. ScriptWitness Api. ScriptWitnessForStakeAddr $
91+ newToOldPlutusCertificateScriptWitness e psw
92+ (oldApiCert, pure $ (,wit) <$> mStakeCred)
8793
8894newToOldSimpleScriptWitness
8995 :: L. AllegraEraScript (LedgerEra era )
@@ -127,12 +133,40 @@ newToOldPlutusCertificateScriptWitness ConwayEra (Exp.PlutusScriptWitness Plutus
127133 Api. NoScriptDatumForStake
128134 redeemer
129135 execUnits
136+ newToOldPlutusCertificateScriptWitness ConwayEra (Exp. PlutusScriptWitness Plutus. SPlutusV4 _scriptOrRef _ _redeemer _execUnits) =
137+ error " dijkstra"
138+ newToOldPlutusCertificateScriptWitness DijkstraEra (Exp. PlutusScriptWitness Plutus. SPlutusV1 scriptOrRef _ redeemer execUnits) =
139+ Api. PlutusScriptWitness
140+ Api. PlutusScriptV1InDijkstra
141+ Api. PlutusScriptV1
142+ (newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
143+ Api. NoScriptDatumForStake
144+ redeemer
145+ execUnits
146+ newToOldPlutusCertificateScriptWitness DijkstraEra (Exp. PlutusScriptWitness Plutus. SPlutusV2 scriptOrRef _ redeemer execUnits) =
147+ Api. PlutusScriptWitness
148+ Api. PlutusScriptV2InDijkstra
149+ Api. PlutusScriptV2
150+ (newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
151+ Api. NoScriptDatumForStake
152+ redeemer
153+ execUnits
154+ newToOldPlutusCertificateScriptWitness DijkstraEra (Exp. PlutusScriptWitness Plutus. SPlutusV3 scriptOrRef _ redeemer execUnits) =
155+ Api. PlutusScriptWitness
156+ Api. PlutusScriptV3InDijkstra
157+ Api. PlutusScriptV3
158+ (newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
159+ Api. NoScriptDatumForStake
160+ redeemer
161+ execUnits
162+ newToOldPlutusCertificateScriptWitness DijkstraEra (Exp. PlutusScriptWitness Plutus. SPlutusV4 _scriptOrRef _ _redeemer _execUnits) =
163+ error " dijkstra"
130164
131165newToOldPlutusScriptOrReferenceInput
132166 :: Era era
133167 -> Exp. PlutusScriptOrReferenceInput lang (LedgerEra era )
134168 -> Api. PlutusScriptOrReferenceInput oldlang
135- newToOldPlutusScriptOrReferenceInput ConwayEra (Exp. PReferenceScript txin) = Api. PReferenceScript txin
136- newToOldPlutusScriptOrReferenceInput ConwayEra (Exp. PScript (Exp. PlutusScriptInEra plutusRunnable)) =
169+ newToOldPlutusScriptOrReferenceInput _ (Exp. PReferenceScript txin) = Api. PReferenceScript txin
170+ newToOldPlutusScriptOrReferenceInput _ (Exp. PScript (Exp. PlutusScriptInEra plutusRunnable)) =
137171 let oldScript = L. unPlutusBinary . L. plutusBinary $ L. plutusFromRunnable plutusRunnable
138172 in Api. PScript $ Api. PlutusScriptSerialised oldScript
0 commit comments