@@ -26,8 +26,11 @@ module Cardano.Api.Experimental.Tx.Internal.BodyContent.New
2626 , txMintValueToValue
2727
2828 -- * Getters and Setters
29+ , setTxAuxScripts
2930 , setTxCertificates
3031 , setTxCollateral
32+ , setTxCurrentTreasuryValue
33+ , setTxExtraKeyWits
3134 , setTxFee
3235 , setTxIns
3336 , setTxInsCollateral
@@ -36,10 +39,17 @@ module Cardano.Api.Experimental.Tx.Internal.BodyContent.New
3639 , setTxMintValue
3740 , setTxOuts
3841 , setTxProposalProcedures
42+ , setTxProtocolParams
43+ , setTxScriptValidity
44+ , setTxTreasuryDonation
3945 , setTxValidityLowerBound
4046 , setTxValidityUpperBound
4147 , setTxVotingProcedures
4248 , setTxWithdrawals
49+
50+ -- * Legacy conversions
51+ , legacyDatumToDatum
52+ , fromLegacyTxOut
4353 )
4454where
4555
@@ -64,12 +74,14 @@ import Cardano.Api.Experimental.Tx.Internal.Type
6474import Cardano.Api.Key.Internal
6575import Cardano.Api.Ledger.Internal.Reexport (StrictMaybe (.. ))
6676import Cardano.Api.Ledger.Internal.Reexport qualified as L
77+ import Cardano.Api.Plutus.Internal.ScriptData qualified as Api
6778import Cardano.Api.Tx.Internal.Body
6879 ( CtxTx
6980 , TxIn
7081 , toShelleyTxIn
7182 , toShelleyWithdrawal
7283 )
84+ import Cardano.Api.Tx.Internal.Output qualified as OldApi
7385import Cardano.Api.Tx.Internal.Sign
7486import Cardano.Api.Tx.Internal.TxMetadata
7587import Cardano.Api.Value.Internal (PolicyAssets , PolicyId , Value , policyAssetsToValue , toMaryValue )
@@ -313,6 +325,26 @@ extractDatumsAndHashes TxOutDatumHash{} = Nothing
313325extractDatumsAndHashes (TxOutSupplementalDatum h d) = Just (h, d)
314326extractDatumsAndHashes (TxOutDatumInline h d) = Just (h, d)
315327
328+ hashableScriptDatumToDatumAndHash :: L. Era era => Api. HashableScriptData -> (L. DataHash , L. Data era )
329+ hashableScriptDatumToDatumAndHash sd =
330+ (Api. unScriptDataHash $ Api. hashScriptDataBytes sd, Api. toAlonzoData sd)
331+
332+ legacyDatumToDatum
333+ :: forall era . IsEra era => OldApi. TxOutDatum CtxTx era -> Maybe (Datum CtxTx (LedgerEra era ))
334+ legacyDatumToDatum (OldApi. TxOutDatumHash _ h) = Just (TxOutDatumHash $ Api. unScriptDataHash h)
335+ legacyDatumToDatum (OldApi. TxOutSupplementalDatum _ hd) = do
336+ let (hash, d) = obtainCommonConstraints (useEra @ era ) $ hashableScriptDatumToDatumAndHash hd
337+ Just (TxOutSupplementalDatum hash d)
338+ legacyDatumToDatum (OldApi. TxOutDatumInline _ hd) = do
339+ let (hash, d) = obtainCommonConstraints (useEra @ era ) $ hashableScriptDatumToDatumAndHash hd
340+ Just (TxOutDatumInline hash d)
341+ legacyDatumToDatum OldApi. TxOutDatumNone = Nothing
342+
343+ fromLegacyTxOut :: forall era . IsEra era => OldApi. TxOut CtxTx era -> TxOut CtxTx (LedgerEra era )
344+ fromLegacyTxOut tOut@ (OldApi. TxOut _ _ d _) =
345+ let o = OldApi. toShelleyTxOutAny (convert $ useEra @ era ) tOut
346+ in obtainCommonConstraints (useEra @ era ) $ TxOut o (legacyDatumToDatum d)
347+
316348data TxInsReference era = TxInsReference [TxIn ] (Set (Datum CtxTx era ))
317349
318350data TxCollateral era
@@ -641,6 +673,12 @@ getDatums txInsRef txOutsFromTx = do
641673
642674-- Getters and Setters
643675
676+ setTxAuxScripts :: [SimpleScript era ] -> TxBodyContent era -> TxBodyContent era
677+ setTxAuxScripts v txBodyContent = txBodyContent{txAuxScripts = v}
678+
679+ setTxExtraKeyWits :: TxExtraKeyWitnesses -> TxBodyContent era -> TxBodyContent era
680+ setTxExtraKeyWits v txBodyContent = txBodyContent{txExtraKeyWits = v}
681+
644682setTxIns :: [(TxIn , AnyWitness era )] -> TxBodyContent era -> TxBodyContent era
645683setTxIns v txBodyContent = txBodyContent{txIns = v}
646684
@@ -650,6 +688,9 @@ setTxInsCollateral v txBodyContent = txBodyContent{txInsCollateral = v}
650688setTxInsReference :: TxInsReference era -> TxBodyContent era -> TxBodyContent era
651689setTxInsReference v txBodyContent = txBodyContent{txInsReference = v}
652690
691+ setTxProtocolParams :: L. PParams era -> TxBodyContent era -> TxBodyContent era
692+ setTxProtocolParams v txBodyContent = txBodyContent{txProtocolParams = Just v}
693+
653694setTxCollateral :: TxCollateral era -> TxBodyContent era -> TxBodyContent era
654695setTxCollateral v txBodyContent = txBodyContent{txCollateral = Just v}
655696
@@ -671,6 +712,9 @@ setTxOuts v txBodyContent = txBodyContent{txOuts = v}
671712setTxMintValue :: TxMintValue era -> TxBodyContent era -> TxBodyContent era
672713setTxMintValue v txBodyContent = txBodyContent{txMintValue = v}
673714
715+ setTxScriptValidity :: ScriptValidity -> TxBodyContent era -> TxBodyContent era
716+ setTxScriptValidity v txBodyContent = txBodyContent{txScriptValidity = v}
717+
674718setTxCertificates :: TxCertificates era -> TxBodyContent era -> TxBodyContent era
675719setTxCertificates v txBodyContent = txBodyContent{txCertificates = v}
676720
@@ -682,3 +726,9 @@ setTxVotingProcedures v txBodyContent = txBodyContent{txVotingProcedures = Just
682726
683727setTxProposalProcedures :: TxProposalProcedures era -> TxBodyContent era -> TxBodyContent era
684728setTxProposalProcedures v txBodyContent = txBodyContent{txProposalProcedures = Just v}
729+
730+ setTxCurrentTreasuryValue :: L. Coin -> TxBodyContent era -> TxBodyContent era
731+ setTxCurrentTreasuryValue v txBodyContent = txBodyContent{txCurrentTreasuryValue = Just v}
732+
733+ setTxTreasuryDonation :: L. Coin -> TxBodyContent era -> TxBodyContent era
734+ setTxTreasuryDonation v txBodyContent = txBodyContent{txTreasuryDonation = Just v}
0 commit comments