@@ -42,31 +42,27 @@ const getScriptHex = (output: Serialization.TransactionOutput): HexBlob | undefi
42
42
43
43
const getInlineDatum = ( datum : Cardano . PlutusData ) : string => Serialization . PlutusData . fromCore ( datum ) . toCbor ( ) ;
44
44
45
- export const toTxOut : Transform < Cardano . TxOut , Trezor . CardanoOutput , TrezorTxTransformerContext > = ( txOut , context ) => {
46
- const destination = toDestination ( txOut , context ) ;
45
+ export const toTxOut : Transform <
46
+ { txOut : Cardano . TxOut ; index : number ; isCollateral : boolean } ,
47
+ Trezor . CardanoOutput ,
48
+ TrezorTxTransformerContext
49
+ > = ( elem , context ) => {
50
+ const { txOut, index, isCollateral } = elem ;
47
51
const output = Serialization . TransactionOutput . fromCore ( txOut ) ;
48
52
const scriptHex = getScriptHex ( output ) ;
53
+ const format = isCollateral ? context ?. collateralReturnFormat : context ?. outputsFormat [ index ] ;
54
+ const isBabbage = format === Trezor . PROTO . CardanoTxOutputSerializationFormat . MAP_BABBAGE ;
49
55
50
- return context ?. useBabbageOutputs
51
- ? {
52
- ...destination ,
53
- amount : txOut . value . coins . toString ( ) ,
54
- datumHash : txOut . datumHash ?. toString ( ) ,
55
- format : Trezor . PROTO . CardanoTxOutputSerializationFormat . MAP_BABBAGE ,
56
- inlineDatum : txOut . datum ? getInlineDatum ( txOut . datum ) : undefined ,
57
- referenceScript : scriptHex ,
58
- tokenBundle : mapTokenMap ( txOut . value . assets )
59
- }
60
- : {
61
- ...destination ,
62
- amount : txOut . value . coins . toString ( ) ,
63
- datumHash : txOut . datumHash ?. toString ( ) ,
64
- format : Trezor . PROTO . CardanoTxOutputSerializationFormat . ARRAY_LEGACY ,
65
- inlineDatum : undefined ,
66
- referenceScript : undefined ,
67
- tokenBundle : mapTokenMap ( txOut . value . assets )
68
- } ;
56
+ return {
57
+ ...toDestination ( txOut , context ) ,
58
+ amount : txOut . value . coins . toString ( ) ,
59
+ datumHash : txOut . datumHash ?. toString ( ) ,
60
+ format,
61
+ inlineDatum : isBabbage ? ( txOut . datum ? getInlineDatum ( txOut . datum ) : undefined ) : undefined ,
62
+ referenceScript : isBabbage ? scriptHex : undefined ,
63
+ tokenBundle : mapTokenMap ( txOut . value . assets )
64
+ } ;
69
65
} ;
70
66
71
67
export const mapTxOuts = ( txOuts : Cardano . TxOut [ ] , context : TrezorTxTransformerContext ) : Trezor . CardanoOutput [ ] =>
72
- txOuts . map ( ( txOut ) => toTxOut ( txOut , context ) ) ;
68
+ txOuts . map ( ( txOut , index ) => toTxOut ( { index , isCollateral : false , txOut } , context ) ) ;
0 commit comments