@@ -586,53 +586,47 @@ function OnRecvPacket(packet: Packet): Uint8Array | undefined {
586586 const data: IBCSwapPacketData = packet .data ;
587587 switch (data .type ) {
588588 case " MAKE_POOL" :
589- const makePoolMsg: MsgMakePoolRequest = protobuf . decode ( MsgMakePoolRequest , data .Data );
589+ const makePoolMsg: MsgMakePoolRequest = unmarshalJSON ( data .Data );
590590 abortTransactionUnless (data .stateChange .poolId !== " " );
591591 abortTransactionUnless (store .has (data .stateChange .poolId )); // existed already.
592592 const poolId = store .OnMakePoolReceived (makePoolMsg , data .stateChange .poolId , data .stateChange .sourceChainId );
593593 const makePoolRes = protobuf .encode ({ poolId });
594594 return makePoolRes ;
595595
596596 case " TAKE_POOL" :
597- const takePoolMsg: MsgTakePoolRequest = protobuf . decode ( MsgTakePoolRequest , data .Data );
597+ const takePoolMsg: MsgTakePoolRequest = unmarshalJSON ( data .Data );
598598 const takePoolRes = store .OnTakePoolReceived (takePoolMsg );
599599 const takePoolResEncoded = protobuf .encode ({ poolId: takePoolRes });
600600 return takePoolResEncoded ;
601601
602602 case " SINGLE_DEPOSIT" :
603- const singleDepositMsg: MsgSingleAssetDepositRequest = protobuf . decode ( MsgSingleAssetDepositRequest , data .Data );
603+ const singleDepositMsg: MsgSingleAssetDepositRequest = unmarshalJSON ( data .Data );
604604 abortTransactionUnless (data .stateChange .poolId === " " );
605605 const singleDepositRes = store .OnSingleAssetDepositReceived (singleDepositMsg , data .stateChange );
606606 const singleDepositResEncoded = protobuf .encode (singleDepositRes );
607607 return singleDepositResEncoded ;
608608
609609 case " MAKE_MULTI_DEPOSIT" :
610- const makeMultiDepositMsg: MsgMakeMultiAssetDepositRequest = protobuf .decode (
611- MsgMakeMultiAssetDepositRequest ,
612- data .Data
613- );
610+ const makeMultiDepositMsg: MsgMakeMultiAssetDepositRequest = unmarshalJSON (data .Data );
614611 const makeMultiDepositRes = k .OnMakeMultiAssetDepositReceived (makeMultiDepositMsg , data .stateChange );
615612 const makeMultiDepositResEncoded = protobuf .encode (makeMultiDepositRes );
616613 return makeMultiDepositResEncoded ;
617614
618615 case " TAKE_MULTI_DEPOSIT" :
619- const takeMultiDepositMsg: MsgTakeMultiAssetDepositRequest = protobuf .decode (
620- MsgTakeMultiAssetDepositRequest ,
621- data .Data
622- );
616+ const takeMultiDepositMsg: MsgTakeMultiAssetDepositRequest = unmarshalJSON (data .Data );
623617 const takeMultiDepositRes = k .OnTakeMultiAssetDepositReceived (takeMultiDepositMsg , data .stateChange );
624618 const takeMultiDepositResEncoded = protobuf .encode (takeMultiDepositRes );
625619 return takeMultiDepositResEncoded ;
626620
627621 case " MULTI_WITHDRAW" :
628- const multiWithdrawMsg: MsgMultiAssetWithdrawRequest = protobuf . decode ( MsgMultiAssetWithdrawRequest , data .Data );
622+ const multiWithdrawMsg: MsgMultiAssetWithdrawRequest = unmarshalJSON ( data .Data );
629623 const multiWithdrawRes = k .OnMultiAssetWithdrawReceived (multiWithdrawMsg , data .stateChange );
630624 const multiWithdrawResEncoded = protobuf .encode (multiWithdrawRes );
631625 return multiWithdrawResEncoded ;
632626
633627 case " LEFT_SWAP" :
634628 case " RIGHT_SWAP" :
635- const swapMsg: MsgSwapRequest = protobuf . decode ( MsgSwapRequest , data .Data );
629+ const swapMsg: MsgSwapRequest = unmarshalJSON ( data .Data );
636630 const swapRes = k .OnSwapReceived (swapMsg , data .stateChange );
637631 const swapResEncoded = protobuf .encode (swapRes );
638632 return swapResEncoded ;
@@ -656,26 +650,26 @@ function OnAcknowledgementPacket(packet: Packet, data: IBCSwapPacketData, ack: A
656650 default :
657651 switch (data .type ) {
658652 case " MAKE_POOL" :
659- const msgMakePool: MsgMakePoolRequest = protobuf . decode (data .Data );
653+ const msgMakePool: MsgMakePoolRequest = unmarshalJSON (data .Data );
660654 const errMakePool = store .OnMakePoolAcknowledged (msgMakePool , data .StateChange .PoolId );
661655 abortTransactionUnless (errMakePool === undefined );
662656 break ;
663657
664658 case " TAKE_POOL" :
665- const msgTakePool: MsgTakePoolRequest = protobuf . decode (data .Data );
659+ const msgTakePool: MsgTakePoolRequest = unmarshalJSON (data .Data );
666660 const errTakePool = store .OnTakePoolAcknowledged (msgTakePool );
667661 abortTransactionUnless (errTakePool === undefined );
668662 break ;
669663
670664 case " SINGLE_DEPOSIT" :
671- const msgSingleDeposit: MsgSingleAssetDepositRequest = protobuf . decode (data .Data );
665+ const msgSingleDeposit: MsgSingleAssetDepositRequest = punmarshalJSON (data .Data );
672666 const resSingleDeposit: MsgSingleAssetDepositResponse = protobuf .decode (ack .GetResult ());
673667 const errSingleDeposit = store .OnSingleAssetDepositAcknowledged (msgSingleDeposit , resSingleDeposit );
674668 abortTransactionUnless (errSingleDeposit === undefined );
675669 break ;
676670
677671 case " MAKE_MULTI_DEPOSIT" :
678- const msgMakeMultiDeposit: MsgMakeMultiAssetDepositRequest = protobuf . decode (data .Data );
672+ const msgMakeMultiDeposit: MsgMakeMultiAssetDepositRequest = unmarshalJSON (data .Data );
679673 const resMakeMultiDeposit: MsgMultiAssetDepositResponse = protobuf .decode (ack .GetResult ());
680674 const errMakeMultiDeposit = store .OnMakeMultiAssetDepositAcknowledged (
681675 msgMakeMultiDeposit ,
@@ -685,22 +679,22 @@ function OnAcknowledgementPacket(packet: Packet, data: IBCSwapPacketData, ack: A
685679 break ;
686680
687681 case " TAKE_MULTI_DEPOSIT" :
688- const msgTakeMultiDeposit: MsgTakeMultiAssetDepositRequest = protobuf . decode (data .Data );
682+ const msgTakeMultiDeposit: MsgTakeMultiAssetDepositRequest = unmarshalJSON (data .Data );
689683 const resTakeMultiDeposit: MsgTakePoolResponse = protobuf .decode (ack .GetResult ());
690684 const errTakeMultiDeposit = store .OnTakeMultiAssetDepositAcknowledged (msgTakeMultiDeposit , data .StateChange );
691685 abortTransactionUnless (errTakeMultiDeposit === undefined );
692686 break ;
693687
694688 case " MULTI_WITHDRAW" :
695- const msgMultiWithdraw: MsgMultiAssetWithdrawRequest = protobuf . decode (data .Data );
689+ const msgMultiWithdraw: MsgMultiAssetWithdrawRequest = unmarshalJSON (data .Data );
696690 const resMultiWithdraw: MsgMultiAssetWithdrawResponse = protobuf .decode (ack .GetResult ());
697691 const errMultiWithdraw = store .OnMultiAssetWithdrawAcknowledged (msgMultiWithdraw , resMultiWithdraw );
698692 abortTransactionUnless (errMultiWithdraw === undefined );
699693 break ;
700694
701695 case " LEFT_SWAP" :
702696 case " RIGHT_SWAP" :
703- const msgSwap: MsgSwapRequest = protobuf . decode (data .Data );
697+ const msgSwap: MsgSwapRequest = unmarshalJSON (data .Data );
704698 const resSwap: MsgSwapResponse = protobuf .decode (ack .GetResult ());
705699 const errSwap = store .OnSwapAcknowledged (msgSwap , resSwap );
706700 abortTransactionUnless (errSwap === undefined );
@@ -729,45 +723,39 @@ function refundPacketToken(packet: Packet, data: IBCSwapPacketData): Error | und
729723
730724 switch (data .type ) {
731725 case " MAKE_POOL" :
732- const makePoolMsg: MsgMakePoolRequest = protobuf . decode ( MsgMakePoolRequest , data .Data );
726+ const makePoolMsg: MsgMakePoolRequest = unmarshalJSON ( data .Data );
733727 // Refund initial liquidity
734728 sender = makePoolMsg .creator ;
735729 token = makePoolMsg .liquidity [0 ].balance ;
736730 break ;
737731
738732 case " SINGLE_DEPOSIT" :
739- const singleDepositMsg: MsgSingleAssetDepositRequest = protobuf . decode ( MsgSingleAssetDepositRequest , data .Data );
733+ const singleDepositMsg: MsgSingleAssetDepositRequest = unmarshalJSON ( data .Data );
740734 token = singleDepositMsg .token ;
741735 sender = singleDepositMsg .sender ;
742736 break ;
743737
744738 case " MAKE_MULTI_DEPOSIT" :
745- const makeMultiDepositMsg: MsgMakeMultiAssetDepositRequest = protobuf .decode (
746- MsgMakeMultiAssetDepositRequest ,
747- data .Data
748- );
739+ const makeMultiDepositMsg: MsgMakeMultiAssetDepositRequest = unmarshalJSON (data .Data );
749740 token = makeMultiDepositMsg .deposits [0 ].balance ;
750741 sender = makeMultiDepositMsg .deposits [0 ].sender ;
751742 break ;
752743
753744 case " TAKE_MULTI_DEPOSIT" :
754- const takeMultiDepositMsg: MsgTakeMultiAssetDepositRequest = protobuf .decode (
755- MsgTakeMultiAssetDepositRequest ,
756- data .Data
757- );
745+ const takeMultiDepositMsg: MsgTakeMultiAssetDepositRequest = unmarshalJSON (data .Data );
758746 const { order, found } = store .getMultiDepositOrder (takeMultiDepositMsg .poolId , takeMultiDepositMsg .orderId );
759747 abortTransactionUnless (found );
760748 token = order .Deposits [1 ];
761749 sender = msg .Sender ;
762750 break ;
763751 case " MULTI_WITHDRAW" :
764- const multiWithdrawMsg: MsgMultiAssetWithdrawRequest = protobuf . decode ( MsgMultiAssetWithdrawRequest , data .Data );
752+ const multiWithdrawMsg: MsgMultiAssetWithdrawRequest = unmarshalJSON ( data .Data );
765753 token = multiWithdrawMsg .poolToken ;
766754 sender = multiWithdrawMsg .receiver ;
767755 break ;
768756
769757 case " RIGHT_SWAP" :
770- const swapMsg: MsgSwapRequest = protobuf . decode ( MsgSwapRequest , data .Data );
758+ const swapMsg: MsgSwapRequest = unmarshalJSON ( data .Data );
771759 token = swapMsg .tokenIn ;
772760 sender = swapMsg .sender ;
773761 break ;
@@ -921,6 +909,17 @@ interface MsgSwapResponse {
921909These are methods that output a state change on the source chain, which will be subsequently synced to the destination chain.
922910
923911``` ts
912+ // Custom helper to support compatability with cosmwasm: Same function MarshalJSON/unmarshalJSON in Golang
913+ function marshalJSON(data : any ): Uint8Array {
914+ const jsonData = JSON .stringify (any );
915+ return protobuf .encode (json );
916+ }
917+
918+ function unmarshalJSON<T >(data : any ): T {
919+ const jsonData = protobuf .decode (data );
920+ return json .parse (jsonData ) as T
921+ }
922+
924923 function makePool(msg : MsgMakePoolRequest ): MsgMakePoolResponse {
925924
926925 const { counterPartyChainId, connected } = store .GetCounterPartyChainID (msg .sourcePort , msg .sourceChannel );
@@ -949,7 +948,7 @@ These are methods that output a state change on the source chain, which will be
949948
950949 const packet: IBCSwapPacketData = {
951950 type: " MAKE_POOL" ,
952- data: protobuf . encode (msg ),
951+ data: marshalJSON (msg ),
953952 stateChange: {
954953 poolId: poolId ,
955954 sourceChainId: store .ChainID (),
@@ -1045,7 +1044,7 @@ These are methods that output a state change on the source chain, which will be
10451044
10461045 const packet: IBCSwapPacketData = {
10471046 type: " MAKE_MULTI_DEPOSIT" ,
1048- data: protobuf . encode (msg ),
1047+ data: marshalJSON (msg ),
10491048 stateChange: { poolTokens: poolTokens },
10501049 };
10511050
@@ -1087,7 +1086,7 @@ These are methods that output a state change on the source chain, which will be
10871086
10881087 const packet: IBCSwapPacketData = {
10891088 type: " TAKE_MULTI_DEPOSIT" ,
1090- data: protobuf . encode (msg ),
1089+ data: marshalJSON (msg ),
10911090 stateChange: { poolTokens },
10921091 };
10931092
@@ -1125,7 +1124,7 @@ function singleAssetDeposit(msg: MsgSingleAssetDepositRequest): MsgSingleAssetDe
11251124
11261125 const packet: IBCSwapPacketData = {
11271126 type: " SINGLE_DEPOSIT" ,
1128- data: protobuf . encode (msg );,
1127+ data: marshalJSON (msg );,
11291128 stateChange: { poolTokens: [poolToken ] },
11301129 };
11311130
@@ -1156,7 +1155,7 @@ function multiAssetWithdraw(msg: MsgMultiAssetWithdrawRequest): MsgMultiAssetWit
11561155
11571156 const packet: IBCSwapPacketData = {
11581157 type: " MULTI_WITHDRAW" ,
1159- data: protobuf . encode (msg ),
1158+ data: marshalJSON (msg ),
11601159 stateChange: {
11611160 out: outs ,
11621161 poolTokens: [msg .poolToken ],
@@ -1206,7 +1205,7 @@ function swap(msg: MsgSwapRequest): MsgSwapResponse {
12061205
12071206 const packet : IBCSwapPacketData = {
12081207 type: msgType ,
1209- data: protobuf . encode (msg ),
1208+ data: marshalJSON (msg ),
12101209 stateChange: { out: [tokenOut ] },
12111210 };
12121211
0 commit comments