@@ -499,9 +499,35 @@ export abstract class TransactionBuilder extends BaseTransactionBuilder {
499499 let totalAmountToSend = CardanoWasm . BigNum . zero ( ) ;
500500 this . _transactionOutputs . forEach ( ( output ) => {
501501 const amount = CardanoWasm . BigNum . from_str ( output . amount ) ;
502- outputs . add (
503- CardanoWasm . TransactionOutput . new ( util . getWalletAddress ( output . address ) , CardanoWasm . Value . new ( amount ) )
504- ) ;
502+ if ( this . _sponsorshipInfo && this . _sponsorshipInfo . isRebuild && output . multiAssets ) {
503+ let txOutputBuilder = CardanoWasm . TransactionOutputBuilder . new ( ) ;
504+ const toAddress = util . getWalletAddress ( output . address ) ;
505+ txOutputBuilder = txOutputBuilder . with_address ( toAddress ) ;
506+ let txOutputAmountBuilder = txOutputBuilder . next ( ) ;
507+ const multiAssets = output . multiAssets as CardanoWasm . MultiAsset ;
508+ const multiAsset = CardanoWasm . MultiAsset . new ( ) ;
509+ for ( let i = 0 ; i < multiAssets . keys ( ) . len ( ) ; i ++ ) {
510+ const policyId = multiAssets . keys ( ) . get ( i ) ;
511+ const assets = multiAssets . get ( policyId ) ;
512+ const asset = CardanoWasm . Assets . new ( ) ;
513+ if ( ! assets ) {
514+ continue ;
515+ }
516+ const assetName = assets . keys ( ) . get ( 0 ) ;
517+ const quantity = assets . get ( assetName ) ;
518+ if ( ! quantity ) {
519+ continue ;
520+ }
521+ asset . insert ( assetName , quantity ) ;
522+ multiAsset . insert ( policyId , asset ) ;
523+ }
524+ txOutputAmountBuilder = txOutputAmountBuilder . with_coin_and_asset ( amount , multiAsset ) ;
525+ outputs . add ( txOutputAmountBuilder . build ( ) ) ;
526+ } else {
527+ outputs . add (
528+ CardanoWasm . TransactionOutput . new ( util . getWalletAddress ( output . address ) , CardanoWasm . Value . new ( amount ) )
529+ ) ;
530+ }
505531 totalAmountToSend = totalAmountToSend . checked_add ( amount ) ;
506532 } ) ;
507533
0 commit comments