@@ -56,27 +56,33 @@ const getScriptHex = (output: Serialization.TransactionOutput): HexBlob | null =
56
56
return scriptRef . toCbor ( ) ;
57
57
} ;
58
58
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 ;
60
65
const output = Serialization . TransactionOutput . fromCore ( txOut ) ;
61
66
const scriptHex = getScriptHex ( output ) ;
67
+ const format = isCollateral ? context ?. collateralReturnFormat : context ?. outputsFormat [ index ] ;
68
+ const isBabbageFormat = format === Ledger . TxOutputFormat . MAP_BABBAGE ;
62
69
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
+ } ;
79
85
} ;
80
86
81
87
export 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