@@ -56,27 +56,33 @@ const getScriptHex = (output: Serialization.TransactionOutput): HexBlob | null =
5656 return scriptRef . toCbor ( ) ;
5757} ;
5858
59- export const toTxOut : Transform < Cardano . TxOut , Ledger . TxOutput , LedgerTxTransformerContext > = ( txOut , context ) => {
59+ export const toTxOut : Transform <
60+ { txOut : Cardano . TxOut ; index : number ; isCollateral : boolean } ,
61+ Ledger . TxOutput ,
62+ LedgerTxTransformerContext
63+ > = ( elem , context ) => {
64+ const { txOut, index, isCollateral } = elem ;
6065 const output = Serialization . TransactionOutput . fromCore ( txOut ) ;
6166 const scriptHex = getScriptHex ( output ) ;
67+ const format = isCollateral ? context ?. collateralReturnFormat : context ?. outputsFormat [ index ] ;
68+ const isBabbageFormat = format === Ledger . TxOutputFormat . MAP_BABBAGE ;
6269
63- return context ?. useBabbageOutputs
64- ? {
65- amount : txOut . value . coins ,
66- datum : txOut . datumHash ? toDatumHash ( txOut . datumHash ) : txOut . datum ? toInlineDatum ( txOut . datum ) : null ,
67- destination : toDestination ( txOut , context ) ,
68- format : Ledger . TxOutputFormat . MAP_BABBAGE ,
69- referenceScriptHex : scriptHex ,
70- tokenBundle : mapTokenMap ( txOut . value . assets )
71- }
72- : {
73- amount : txOut . value . coins ,
74- datumHashHex : txOut . datumHash ? txOut . datumHash : null ,
75- destination : toDestination ( txOut , context ) ,
76- format : Ledger . TxOutputFormat . ARRAY_LEGACY ,
77- tokenBundle : mapTokenMap ( txOut . value . assets )
78- } ;
70+ return {
71+ amount : txOut . value . coins ,
72+ destination : toDestination ( txOut , context ) ,
73+ tokenBundle : mapTokenMap ( txOut . value . assets ) ,
74+ ...( isBabbageFormat
75+ ? {
76+ datum : txOut . datumHash ? toDatumHash ( txOut . datumHash ) : txOut . datum ? toInlineDatum ( txOut . datum ) : null ,
77+ format : Ledger . TxOutputFormat . MAP_BABBAGE ,
78+ referenceScriptHex : scriptHex
79+ }
80+ : {
81+ datumHashHex : txOut . datumHash ?? null ,
82+ format : Ledger . TxOutputFormat . ARRAY_LEGACY
83+ } )
84+ } ;
7985} ;
8086
8187export const mapTxOuts = ( txOuts : Cardano . TxOut [ ] , context : LedgerTxTransformerContext ) : Ledger . TxOutput [ ] =>
82- txOuts . map ( ( txOut ) => toTxOut ( txOut , context ) ) ;
88+ txOuts . map ( ( txOut , index ) => toTxOut ( { index , isCollateral : false , txOut } , context ) ) ;
0 commit comments