@skip-go/client 1.5.2 → 1.5.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/cjs/api/getAssets.cjs +5 -5
  2. package/dist/cjs/api/getAssetsBetweenChains.cjs +4 -4
  3. package/dist/cjs/api/getBridges.cjs +4 -4
  4. package/dist/cjs/api/getChains.cjs +4 -4
  5. package/dist/cjs/api/getVenues.cjs +4 -4
  6. package/dist/cjs/api/postAssetsFromSource.cjs +5 -5
  7. package/dist/cjs/api/postBalances.cjs +4 -4
  8. package/dist/cjs/api/postIbcOriginAssets.cjs +4 -4
  9. package/dist/cjs/api/postMessages.cjs +4 -4
  10. package/dist/cjs/api/postMessagesDirect.cjs +4 -4
  11. package/dist/cjs/api/postRecommendAssets.cjs +4 -4
  12. package/dist/cjs/api/postRoute.cjs +4 -4
  13. package/dist/cjs/api/postSubmitTransaction.cjs +4 -4
  14. package/dist/cjs/api/postTrackTransaction.cjs +4 -4
  15. package/dist/cjs/api/postTransactionStatus.cjs +4 -4
  16. package/dist/cjs/{chunk-EI4ZWAEU.cjs → chunk-262HFM6V.cjs} +2 -2
  17. package/dist/cjs/{chunk-XPQRSO4J.cjs → chunk-3NHW3XWK.cjs} +2 -2
  18. package/dist/cjs/{chunk-XEBVLUYW.cjs → chunk-4MV4GLIA.cjs} +2 -2
  19. package/dist/cjs/{chunk-MHVCR4QO.cjs → chunk-4NGHNHAS.cjs} +6 -6
  20. package/dist/cjs/{chunk-3IWLZ562.cjs → chunk-7SZZBUBD.cjs} +3 -3
  21. package/dist/cjs/{chunk-LARLMUFZ.cjs → chunk-APJDSXWR.cjs} +10 -10
  22. package/dist/cjs/{chunk-R3TSJPKH.cjs → chunk-AW6IQ7JH.cjs} +2 -2
  23. package/dist/cjs/{chunk-7D433NQ5.cjs → chunk-BCX2D6TE.cjs} +91 -18
  24. package/dist/cjs/{chunk-JUKPQLLQ.cjs → chunk-FF5UWES6.cjs} +4 -4
  25. package/dist/cjs/{chunk-MMGVGXA5.cjs → chunk-HFEMNOJS.cjs} +7 -1
  26. package/dist/cjs/{chunk-HEYFLFKD.cjs → chunk-I2FDWZZJ.cjs} +810 -109
  27. package/dist/cjs/{chunk-MFJ6S6TL.cjs → chunk-JWWJIJUE.cjs} +2 -2
  28. package/dist/cjs/{chunk-5RP766TT.cjs → chunk-KWH6S7PB.cjs} +6 -6
  29. package/dist/cjs/{chunk-GO4BJ6G2.cjs → chunk-NWD4MAMT.cjs} +14 -8
  30. package/dist/cjs/{chunk-66VIHDGM.cjs → chunk-PDTIT3JO.cjs} +13 -13
  31. package/dist/cjs/{chunk-2MAYN27U.cjs → chunk-PLO5CVGN.cjs} +2 -2
  32. package/dist/cjs/{chunk-5HZLL5KD.cjs → chunk-QAHHTQ7V.cjs} +4 -4
  33. package/dist/cjs/{chunk-AJYZ5GAD.cjs → chunk-RBM66GW6.cjs} +2 -2
  34. package/dist/cjs/{chunk-ULD54VE4.cjs → chunk-RC73RNNQ.cjs} +4 -4
  35. package/dist/cjs/{chunk-N2RG3CRN.cjs → chunk-S3BKLN4L.cjs} +2 -2
  36. package/dist/cjs/{chunk-KPV3PGBG.cjs → chunk-T5EGKQAT.cjs} +2 -2
  37. package/dist/cjs/chunk-UMBMSRZZ.cjs +185 -0
  38. package/dist/cjs/{chunk-4R6OCWRR.cjs → chunk-WKYP2NMS.cjs} +8 -6
  39. package/dist/cjs/{chunk-VMWCRZVT.cjs → chunk-XCFPRLX3.cjs} +8 -8
  40. package/dist/cjs/{chunk-XDKONUY6.cjs → chunk-ZBJZTBIW.cjs} +2 -2
  41. package/dist/cjs/index.cjs +189 -251
  42. package/dist/cjs/public-functions/executeMultipleRoutes.cjs +27 -17
  43. package/dist/cjs/public-functions/executeRoute.cjs +27 -17
  44. package/dist/cjs/public-functions/getEvmGasAmountForMessage.cjs +1 -1
  45. package/dist/cjs/public-functions/getFeeInfoForChain.cjs +6 -7
  46. package/dist/cjs/public-functions/getRecommendedGasPrice.cjs +8 -9
  47. package/dist/cjs/public-functions/getRouteWithGasOnReceive.cjs +39 -0
  48. package/dist/cjs/public-functions/getSigningStargateClient.cjs +6 -6
  49. package/dist/cjs/public-functions/setApiOptions.cjs +4 -4
  50. package/dist/cjs/public-functions/setClientOptions.cjs +5 -5
  51. package/dist/cjs/public-functions/subscribeToRouteStatus.cjs +9 -9
  52. package/dist/cjs/public-functions/validateCosmosGasBalance.cjs +8 -8
  53. package/dist/cjs/public-functions/waitForTransaction.cjs +6 -6
  54. package/dist/esm/api/getAssets.d.ts +1 -1
  55. package/dist/esm/api/getAssets.js +3 -3
  56. package/dist/esm/api/getAssetsBetweenChains.d.ts +21 -21
  57. package/dist/esm/api/getAssetsBetweenChains.js +3 -3
  58. package/dist/esm/api/getBridges.d.ts +1 -1
  59. package/dist/esm/api/getBridges.js +3 -3
  60. package/dist/esm/api/getChains.d.ts +1 -1
  61. package/dist/esm/api/getChains.js +3 -3
  62. package/dist/esm/api/getVenues.js +3 -3
  63. package/dist/esm/api/postAssetsFromSource.d.ts +1 -1
  64. package/dist/esm/api/postAssetsFromSource.js +4 -4
  65. package/dist/esm/api/postBalances.d.ts +2 -2
  66. package/dist/esm/api/postBalances.js +3 -3
  67. package/dist/esm/api/postIbcOriginAssets.d.ts +10 -10
  68. package/dist/esm/api/postIbcOriginAssets.js +3 -3
  69. package/dist/esm/api/postMessages.d.ts +12 -12
  70. package/dist/esm/api/postMessages.js +3 -3
  71. package/dist/esm/api/postMessagesDirect.d.ts +163 -161
  72. package/dist/esm/api/postMessagesDirect.js +3 -3
  73. package/dist/esm/api/postRecommendAssets.d.ts +11 -11
  74. package/dist/esm/api/postRecommendAssets.js +3 -3
  75. package/dist/esm/api/postRoute.d.ts +161 -159
  76. package/dist/esm/api/postRoute.js +3 -3
  77. package/dist/esm/api/postSubmitTransaction.d.ts +2 -2
  78. package/dist/esm/api/postSubmitTransaction.js +3 -3
  79. package/dist/esm/api/postTrackTransaction.d.ts +2 -2
  80. package/dist/esm/api/postTrackTransaction.js +3 -3
  81. package/dist/esm/api/postTransactionStatus.d.ts +36 -36
  82. package/dist/esm/api/postTransactionStatus.js +3 -3
  83. package/dist/esm/{callbacks-DCqqd0D9.d.ts → callbacks-C-KUJnDv.d.ts} +34 -4
  84. package/dist/esm/{chunk-GU3UHER5.js → chunk-2PWROHHX.js} +3 -3
  85. package/dist/esm/{chunk-MFHZBJGQ.js → chunk-3WFXBPS2.js} +1 -1
  86. package/dist/esm/{chunk-B36HVX2L.js → chunk-44IX6KPJ.js} +1 -1
  87. package/dist/esm/{chunk-WSAZDCXR.js → chunk-5IXH2QPF.js} +86 -16
  88. package/dist/esm/{chunk-Z2HSHJLW.js → chunk-6M7N6EAO.js} +3 -3
  89. package/dist/esm/{chunk-6HKZYODA.js → chunk-AUNRER4I.js} +1 -1
  90. package/dist/esm/{chunk-H2HTF2UF.js → chunk-FNTPI2AV.js} +1 -1
  91. package/dist/esm/{chunk-W5AA7QOQ.js → chunk-HDW6XFWX.js} +1 -1
  92. package/dist/esm/{chunk-RXZJUE4K.js → chunk-HELQO7PA.js} +2 -2
  93. package/dist/esm/{chunk-45B6E7AT.js → chunk-IHSSWY3M.js} +1 -1
  94. package/dist/esm/{chunk-JQOJIEZA.js → chunk-IKWC55JU.js} +739 -60
  95. package/dist/esm/{chunk-VQ5SIQWU.js → chunk-JYYCFKB4.js} +8 -7
  96. package/dist/esm/chunk-KNXMSLOB.js +1 -1
  97. package/dist/esm/{chunk-HPA2XUA3.js → chunk-KXQ2ASHQ.js} +1 -1
  98. package/dist/esm/{chunk-263RYJUL.js → chunk-MYGJGC62.js} +1 -1
  99. package/dist/esm/chunk-O4J7DHZA.js +180 -0
  100. package/dist/esm/{chunk-BNMWBXN3.js → chunk-QRKO56DH.js} +9 -4
  101. package/dist/esm/{chunk-VG3G5QHN.js → chunk-RFJYCJK4.js} +1 -1
  102. package/dist/esm/{chunk-A4MFVNZO.js → chunk-SFWTQBQT.js} +3 -3
  103. package/dist/esm/{chunk-7WXPBTSR.js → chunk-TNIGHYH2.js} +3 -3
  104. package/dist/esm/{chunk-EJZGYHGH.js → chunk-UBVBVJPY.js} +1 -1
  105. package/dist/esm/chunk-UIDIKXMB.js +1 -1
  106. package/dist/esm/{chunk-DQXGZGNJ.js → chunk-V7VKYD4J.js} +2 -2
  107. package/dist/esm/{chunk-X3PQKUOS.js → chunk-VGCTTJO7.js} +7 -1
  108. package/dist/esm/{chunk-TLVHKYQ3.js → chunk-VWOMKMH2.js} +1 -1
  109. package/dist/esm/{chunk-AGHQ7SIE.js → chunk-YGQ4NKTM.js} +1 -1
  110. package/dist/esm/{chunk-A35RPDUV.js → chunk-YLVUKXLR.js} +1 -1
  111. package/dist/esm/{client-types-BSZasIDd.d.ts → client-types-CGMuZ3zo.d.ts} +2 -2
  112. package/dist/esm/{generateApi-CwM4Ca30.d.ts → generateApi-D_-Gso-x.d.ts} +1 -1
  113. package/dist/esm/index.d.ts +166 -143
  114. package/dist/esm/index.js +26 -175
  115. package/dist/esm/public-functions/executeMultipleRoutes.d.ts +30 -10
  116. package/dist/esm/public-functions/executeMultipleRoutes.js +26 -16
  117. package/dist/esm/public-functions/executeRoute.d.ts +4 -4
  118. package/dist/esm/public-functions/executeRoute.js +26 -16
  119. package/dist/esm/public-functions/getCosmosGasAmountForMessage.d.ts +1 -1
  120. package/dist/esm/public-functions/getEvmGasAmountForMessage.d.ts +3 -3
  121. package/dist/esm/public-functions/getEvmGasAmountForMessage.js +1 -1
  122. package/dist/esm/public-functions/getFeeInfoForChain.d.ts +1 -1
  123. package/dist/esm/public-functions/getFeeInfoForChain.js +5 -6
  124. package/dist/esm/public-functions/getRecommendedGasPrice.js +7 -8
  125. package/dist/esm/public-functions/getRouteWithGasOnReceive.d.ts +20 -0
  126. package/dist/esm/public-functions/getRouteWithGasOnReceive.js +30 -0
  127. package/dist/esm/public-functions/getSigningStargateClient.js +5 -5
  128. package/dist/esm/public-functions/setApiOptions.d.ts +1 -1
  129. package/dist/esm/public-functions/setApiOptions.js +3 -3
  130. package/dist/esm/public-functions/setClientOptions.d.ts +4 -4
  131. package/dist/esm/public-functions/setClientOptions.js +4 -4
  132. package/dist/esm/public-functions/subscribeToRouteStatus.d.ts +4 -4
  133. package/dist/esm/public-functions/subscribeToRouteStatus.js +5 -5
  134. package/dist/esm/public-functions/validateCosmosGasBalance.d.ts +4 -4
  135. package/dist/esm/public-functions/validateCosmosGasBalance.js +7 -7
  136. package/dist/esm/public-functions/waitForTransaction.d.ts +38 -38
  137. package/dist/esm/public-functions/waitForTransaction.js +5 -5
  138. package/dist/esm/setClientOptions-C8g92xTm.d.ts +76 -0
  139. package/dist/esm/{swaggerTypes-Bh6hu5Q-.d.ts → swaggerTypes-B_jKfpvz.d.ts} +154 -132
  140. package/package.json +1 -1
  141. package/dist/cjs/chunk-D57TNRV3.cjs +0 -214
  142. package/dist/cjs/chunk-KSJ5QYMR.cjs +0 -185
  143. package/dist/cjs/chunk-KZOSEIWH.cjs +0 -10
  144. package/dist/cjs/chunk-Q33F7U2Y.cjs +0 -55
  145. package/dist/esm/chunk-4YTLUDRU.js +0 -212
  146. package/dist/esm/chunk-CP55HI6R.js +0 -53
  147. package/dist/esm/chunk-RHGDUD76.js +0 -180
  148. package/dist/esm/chunk-SWYON2RG.js +0 -7
  149. package/dist/esm/setClientOptions-CrXIODm0.d.ts +0 -19
  150. package/dist/cjs/{chunk-IDDRJJO5.cjs → chunk-DLT6Q6RB.cjs} +1 -1
  151. package/dist/esm/{chunk-OQDBWVET.js → chunk-QL423UEF.js} +1 -1
@@ -1,15 +1,18 @@
1
- import { updateRouteDetails } from './chunk-WSAZDCXR.js';
2
- import { validateCosmosGasBalance } from './chunk-A4MFVNZO.js';
1
+ import { updateRouteDetails, executeAndSubscribeToRouteStatus } from './chunk-5IXH2QPF.js';
2
+ import { validateCosmosGasBalance } from './chunk-SFWTQBQT.js';
3
3
  import { getEncodeObjectFromCosmosMessage } from './chunk-KNXMSLOB.js';
4
4
  import { getEVMGasAmountForMessage } from './chunk-GV2QOWB4.js';
5
- import { BigNumber } from './chunk-VQ5SIQWU.js';
6
- import { GAS_STATION_CHAIN_IDS } from './chunk-SWYON2RG.js';
7
- import { getRpcEndpointForChain, accountParser, getSigningStargateClient } from './chunk-GU3UHER5.js';
8
- import { chains, findFirstWorkingEndpoint, getIsEthermint, getIsInitia } from './chunk-RHGDUD76.js';
9
- import { submitTransaction } from './chunk-W5AA7QOQ.js';
10
- import { venues } from './chunk-H2HTF2UF.js';
11
- import { ClientState, balances } from './chunk-263RYJUL.js';
12
- import { toCamel, wait } from './chunk-X3PQKUOS.js';
5
+ import { bignumber_default, BigNumber } from './chunk-JYYCFKB4.js';
6
+ import { GAS_STATION_CHAIN_IDS } from './chunk-QRKO56DH.js';
7
+ import { getRpcEndpointForChain, accountParser, getSigningStargateClient } from './chunk-2PWROHHX.js';
8
+ import { chains as chains$1, findFirstWorkingEndpoint, getIsEthermint, getIsInitia } from './chunk-O4J7DHZA.js';
9
+ import { messages } from './chunk-IHSSWY3M.js';
10
+ import { route } from './chunk-VWOMKMH2.js';
11
+ import { submitTransaction } from './chunk-HDW6XFWX.js';
12
+ import { trackTransaction } from './chunk-AUNRER4I.js';
13
+ import { venues } from './chunk-FNTPI2AV.js';
14
+ import { ClientState, chains, assets, balances } from './chunk-MYGJGC62.js';
15
+ import { ApiState, toCamel, wait } from './chunk-VGCTTJO7.js';
13
16
  import { StargateClient } from '@cosmjs/stargate';
14
17
  import { TxRaw } from 'cosmjs-types/cosmos/tx/v1beta1/tx.js';
15
18
  import { isOfflineDirectSigner, makeAuthInfoBytes, makeSignDoc, encodePubkey } from '@cosmjs/proto-signing';
@@ -19,9 +22,154 @@ import { PubKey } from 'cosmjs-types/cosmos/crypto/secp256k1/keys.js';
19
22
  import { Any } from 'cosmjs-types/google/protobuf/any.js';
20
23
  import { Int53 } from '@cosmjs/math';
21
24
  import { SignMode } from 'cosmjs-types/cosmos/tx/signing/v1beta1/signing.js';
22
- import { isAddress, publicActions, maxUint256, formatUnits } from 'viem';
23
- import { Transaction, PublicKey, Connection, LAMPORTS_PER_SOL } from '@solana/web3.js';
25
+ import { defineChain, createPublicClient, fallback, http, isAddress, formatUnits, publicActions, maxUint256 } from 'viem';
26
+ import { PublicKey, Transaction, Connection, LAMPORTS_PER_SOL } from '@solana/web3.js';
24
27
  import { bech32m, bech32 } from 'bech32';
28
+ import { arbitrum, avalanche, base, bsc, celo, fantom, filecoin, kava, linea, mainnet, manta, moonbeam, optimism, polygon, polygonMumbai, sepolia, avalancheFuji, baseSepolia, optimismSepolia, arbitrumSepolia, blast, blastSepolia, forma, sei, bscTestnet, fantomTestnet, kavaTestnet, lineaSepolia, mantaSepoliaTestnet } from 'viem/chains';
29
+
30
+ // src/types/swaggerTypesJson.ts
31
+ var AutopilotActionJson = /* @__PURE__ */ ((AutopilotActionJson2) => {
32
+ AutopilotActionJson2["LIQUID_STAKE"] = "LIQUID_STAKE";
33
+ AutopilotActionJson2["CLAIM"] = "CLAIM";
34
+ return AutopilotActionJson2;
35
+ })(AutopilotActionJson || {});
36
+ var AxelarTransferStateJson = /* @__PURE__ */ ((AxelarTransferStateJson2) => {
37
+ AxelarTransferStateJson2["AXELAR_TRANSFER_UNKNOWN"] = "AXELAR_TRANSFER_UNKNOWN";
38
+ AxelarTransferStateJson2["AXELAR_TRANSFER_PENDING_CONFIRMATION"] = "AXELAR_TRANSFER_PENDING_CONFIRMATION";
39
+ AxelarTransferStateJson2["AXELAR_TRANSFER_PENDING_RECEIPT"] = "AXELAR_TRANSFER_PENDING_RECEIPT";
40
+ AxelarTransferStateJson2["AXELAR_TRANSFER_SUCCESS"] = "AXELAR_TRANSFER_SUCCESS";
41
+ AxelarTransferStateJson2["AXELAR_TRANSFER_FAILURE"] = "AXELAR_TRANSFER_FAILURE";
42
+ return AxelarTransferStateJson2;
43
+ })(AxelarTransferStateJson || {});
44
+ var AxelarTransferTypeJson = /* @__PURE__ */ ((AxelarTransferTypeJson2) => {
45
+ AxelarTransferTypeJson2["AXELAR_TRANSFER_CONTRACT_CALL_WITH_TOKEN"] = "AXELAR_TRANSFER_CONTRACT_CALL_WITH_TOKEN";
46
+ AxelarTransferTypeJson2["AXELAR_TRANSFER_SEND_TOKEN"] = "AXELAR_TRANSFER_SEND_TOKEN";
47
+ return AxelarTransferTypeJson2;
48
+ })(AxelarTransferTypeJson || {});
49
+ var CCTPTransferStateJson = /* @__PURE__ */ ((CCTPTransferStateJson2) => {
50
+ CCTPTransferStateJson2["CCTP_TRANSFER_UNKNOWN"] = "CCTP_TRANSFER_UNKNOWN";
51
+ CCTPTransferStateJson2["CCTP_TRANSFER_SENT"] = "CCTP_TRANSFER_SENT";
52
+ CCTPTransferStateJson2["CCTP_TRANSFER_PENDING_CONFIRMATION"] = "CCTP_TRANSFER_PENDING_CONFIRMATION";
53
+ CCTPTransferStateJson2["CCTP_TRANSFER_CONFIRMED"] = "CCTP_TRANSFER_CONFIRMED";
54
+ CCTPTransferStateJson2["CCTP_TRANSFER_RECEIVED"] = "CCTP_TRANSFER_RECEIVED";
55
+ return CCTPTransferStateJson2;
56
+ })(CCTPTransferStateJson || {});
57
+ var StargateTransferStateJson = /* @__PURE__ */ ((StargateTransferStateJson2) => {
58
+ StargateTransferStateJson2["STARGATE_TRANSFER_UNKNOWN"] = "STARGATE_TRANSFER_UNKNOWN";
59
+ StargateTransferStateJson2["STARGATE_TRANSFER_SENT"] = "STARGATE_TRANSFER_SENT";
60
+ StargateTransferStateJson2["STARGATE_TRANSFER_PENDING_CONFIRMATION"] = "STARGATE_TRANSFER_PENDING_CONFIRMATION";
61
+ StargateTransferStateJson2["STARGATE_TRANSFER_CONFIRMED"] = "STARGATE_TRANSFER_CONFIRMED";
62
+ StargateTransferStateJson2["STARGATE_TRANSFER_RECEIVED"] = "STARGATE_TRANSFER_RECEIVED";
63
+ StargateTransferStateJson2["STARGATE_TRANSFER_FAILED"] = "STARGATE_TRANSFER_FAILED";
64
+ return StargateTransferStateJson2;
65
+ })(StargateTransferStateJson || {});
66
+ var GoFastTransferStateJson = /* @__PURE__ */ ((GoFastTransferStateJson2) => {
67
+ GoFastTransferStateJson2["GO_FAST_TRANSFER_UNKNOWN"] = "GO_FAST_TRANSFER_UNKNOWN";
68
+ GoFastTransferStateJson2["GO_FAST_TRANSFER_SENT"] = "GO_FAST_TRANSFER_SENT";
69
+ GoFastTransferStateJson2["GO_FAST_POST_ACTION_FAILED"] = "GO_FAST_POST_ACTION_FAILED";
70
+ GoFastTransferStateJson2["GO_FAST_TRANSFER_TIMEOUT"] = "GO_FAST_TRANSFER_TIMEOUT";
71
+ GoFastTransferStateJson2["GO_FAST_TRANSFER_FILLED"] = "GO_FAST_TRANSFER_FILLED";
72
+ GoFastTransferStateJson2["GO_FAST_TRANSFER_REFUNDED"] = "GO_FAST_TRANSFER_REFUNDED";
73
+ return GoFastTransferStateJson2;
74
+ })(GoFastTransferStateJson || {});
75
+ var BridgeTypeJson = /* @__PURE__ */ ((BridgeTypeJson2) => {
76
+ BridgeTypeJson2["IBC"] = "IBC";
77
+ BridgeTypeJson2["AXELAR"] = "AXELAR";
78
+ BridgeTypeJson2["CCTP"] = "CCTP";
79
+ BridgeTypeJson2["HYPERLANE"] = "HYPERLANE";
80
+ BridgeTypeJson2["OPINIT"] = "OPINIT";
81
+ BridgeTypeJson2["GO_FAST"] = "GO_FAST";
82
+ BridgeTypeJson2["STARGATE"] = "STARGATE";
83
+ BridgeTypeJson2["LAYER_ZERO"] = "LAYER_ZERO";
84
+ BridgeTypeJson2["EUREKA"] = "EUREKA";
85
+ return BridgeTypeJson2;
86
+ })(BridgeTypeJson || {});
87
+ var ChainTypeJson = /* @__PURE__ */ ((ChainTypeJson2) => {
88
+ ChainTypeJson2["Cosmos"] = "cosmos";
89
+ ChainTypeJson2["Evm"] = "evm";
90
+ ChainTypeJson2["Svm"] = "svm";
91
+ return ChainTypeJson2;
92
+ })(ChainTypeJson || {});
93
+ var ContractCallWithTokenErrorTypeJson = /* @__PURE__ */ ((ContractCallWithTokenErrorTypeJson2) => {
94
+ ContractCallWithTokenErrorTypeJson2["CONTRACT_CALL_WITH_TOKEN_EXECUTION_ERROR"] = "CONTRACT_CALL_WITH_TOKEN_EXECUTION_ERROR";
95
+ return ContractCallWithTokenErrorTypeJson2;
96
+ })(ContractCallWithTokenErrorTypeJson || {});
97
+ var HyperlaneTransferStateJson = /* @__PURE__ */ ((HyperlaneTransferStateJson2) => {
98
+ HyperlaneTransferStateJson2["HYPERLANE_TRANSFER_UNKNOWN"] = "HYPERLANE_TRANSFER_UNKNOWN";
99
+ HyperlaneTransferStateJson2["HYPERLANE_TRANSFER_SENT"] = "HYPERLANE_TRANSFER_SENT";
100
+ HyperlaneTransferStateJson2["HYPERLANE_TRANSFER_FAILED"] = "HYPERLANE_TRANSFER_FAILED";
101
+ HyperlaneTransferStateJson2["HYPERLANE_TRANSFER_RECEIVED"] = "HYPERLANE_TRANSFER_RECEIVED";
102
+ return HyperlaneTransferStateJson2;
103
+ })(HyperlaneTransferStateJson || {});
104
+ var PacketErrorTypeJson = /* @__PURE__ */ ((PacketErrorTypeJson2) => {
105
+ PacketErrorTypeJson2["PACKET_ERROR_UNKNOWN"] = "PACKET_ERROR_UNKNOWN";
106
+ PacketErrorTypeJson2["PACKET_ERROR_ACKNOWLEDGEMENT"] = "PACKET_ERROR_ACKNOWLEDGEMENT";
107
+ PacketErrorTypeJson2["PACKET_ERROR_TIMEOUT"] = "PACKET_ERROR_TIMEOUT";
108
+ return PacketErrorTypeJson2;
109
+ })(PacketErrorTypeJson || {});
110
+ var ReasonJson = /* @__PURE__ */ ((ReasonJson2) => {
111
+ ReasonJson2["UNKNOWN"] = "UNKNOWN";
112
+ ReasonJson2["MOST_LIQUID"] = "MOST_LIQUID";
113
+ ReasonJson2["BASE_TOKEN"] = "BASE_TOKEN";
114
+ ReasonJson2["DIRECT"] = "DIRECT";
115
+ return ReasonJson2;
116
+ })(ReasonJson || {});
117
+ var RoutePriceWarningTypeJson = /* @__PURE__ */ ((RoutePriceWarningTypeJson2) => {
118
+ RoutePriceWarningTypeJson2["LOW_INFO_WARNING"] = "LOW_INFO_WARNING";
119
+ RoutePriceWarningTypeJson2["BAD_PRICE_WARNING"] = "BAD_PRICE_WARNING";
120
+ return RoutePriceWarningTypeJson2;
121
+ })(RoutePriceWarningTypeJson || {});
122
+ var SendTokenErrorTypeJson = /* @__PURE__ */ ((SendTokenErrorTypeJson2) => {
123
+ SendTokenErrorTypeJson2["SEND_TOKEN_EXECUTION_ERROR"] = "SEND_TOKEN_EXECUTION_ERROR";
124
+ return SendTokenErrorTypeJson2;
125
+ })(SendTokenErrorTypeJson || {});
126
+ var StatusErrorTypeJson = /* @__PURE__ */ ((StatusErrorTypeJson2) => {
127
+ StatusErrorTypeJson2["STATUS_ERROR_UNKNOWN"] = "STATUS_ERROR_UNKNOWN";
128
+ StatusErrorTypeJson2["STATUS_ERROR_TRANSACTION_EXECUTION"] = "STATUS_ERROR_TRANSACTION_EXECUTION";
129
+ StatusErrorTypeJson2["STATUS_ERROR_INDEXING"] = "STATUS_ERROR_INDEXING";
130
+ StatusErrorTypeJson2["STATUS_ERROR_TRANSFER"] = "STATUS_ERROR_TRANSFER";
131
+ return StatusErrorTypeJson2;
132
+ })(StatusErrorTypeJson || {});
133
+ var TransactionStateJson = /* @__PURE__ */ ((TransactionStateJson2) => {
134
+ TransactionStateJson2["STATE_SUBMITTED"] = "STATE_SUBMITTED";
135
+ TransactionStateJson2["STATE_PENDING"] = "STATE_PENDING";
136
+ TransactionStateJson2["STATE_ABANDONED"] = "STATE_ABANDONED";
137
+ TransactionStateJson2["STATE_COMPLETED_SUCCESS"] = "STATE_COMPLETED_SUCCESS";
138
+ TransactionStateJson2["STATE_COMPLETED_ERROR"] = "STATE_COMPLETED_ERROR";
139
+ TransactionStateJson2["STATE_PENDING_ERROR"] = "STATE_PENDING_ERROR";
140
+ return TransactionStateJson2;
141
+ })(TransactionStateJson || {});
142
+ var OPInitTransferStateJson = /* @__PURE__ */ ((OPInitTransferStateJson2) => {
143
+ OPInitTransferStateJson2["OPINIT_TRANSFER_UNKNOWN"] = "OPINIT_TRANSFER_UNKNOWN";
144
+ OPInitTransferStateJson2["OPINIT_TRANSFER_SENT"] = "OPINIT_TRANSFER_SENT";
145
+ OPInitTransferStateJson2["OPINIT_TRANSFER_RECEIVED"] = "OPINIT_TRANSFER_RECEIVED";
146
+ return OPInitTransferStateJson2;
147
+ })(OPInitTransferStateJson || {});
148
+ var LayerZeroTransferStateJson = /* @__PURE__ */ ((LayerZeroTransferStateJson2) => {
149
+ LayerZeroTransferStateJson2["LAYER_ZERO_TRANSFER_UNKNOWN"] = "LAYER_ZERO_TRANSFER_UNKNOWN";
150
+ LayerZeroTransferStateJson2["LAYER_ZERO_TRANSFER_SENT"] = "LAYER_ZERO_TRANSFER_SENT";
151
+ LayerZeroTransferStateJson2["LAYER_ZERO_TRANSFER_WAITING_FOR_COMPOSE"] = "LAYER_ZERO_TRANSFER_WAITING_FOR_COMPOSE";
152
+ LayerZeroTransferStateJson2["LAYER_ZERO_TRANSFER_RECEIVED"] = "LAYER_ZERO_TRANSFER_RECEIVED";
153
+ LayerZeroTransferStateJson2["LAYER_ZERO_TRANSFER_FAILED"] = "LAYER_ZERO_TRANSFER_FAILED";
154
+ return LayerZeroTransferStateJson2;
155
+ })(LayerZeroTransferStateJson || {});
156
+ var TransferStateJson = /* @__PURE__ */ ((TransferStateJson2) => {
157
+ TransferStateJson2["TRANSFER_UNKNOWN"] = "TRANSFER_UNKNOWN";
158
+ TransferStateJson2["TRANSFER_PENDING"] = "TRANSFER_PENDING";
159
+ TransferStateJson2["TRANSFER_RECEIVED"] = "TRANSFER_RECEIVED";
160
+ TransferStateJson2["TRANSFER_SUCCESS"] = "TRANSFER_SUCCESS";
161
+ TransferStateJson2["TRANSFER_FAILURE"] = "TRANSFER_FAILURE";
162
+ return TransferStateJson2;
163
+ })(TransferStateJson || {});
164
+ var FeeTypeJson = /* @__PURE__ */ ((FeeTypeJson2) => {
165
+ FeeTypeJson2["SMART_RELAY"] = "SMART_RELAY";
166
+ return FeeTypeJson2;
167
+ })(FeeTypeJson || {});
168
+ var FeeBehaviorJson = /* @__PURE__ */ ((FeeBehaviorJson2) => {
169
+ FeeBehaviorJson2["FEE_BEHAVIOR_DEDUCTED"] = "FEE_BEHAVIOR_DEDUCTED";
170
+ FeeBehaviorJson2["FEE_BEHAVIOR_ADDITIONAL"] = "FEE_BEHAVIOR_ADDITIONAL";
171
+ return FeeBehaviorJson2;
172
+ })(FeeBehaviorJson || {});
25
173
 
26
174
  // src/private-functions/getRestEndpointForChain.ts
27
175
  var getRestEndpointForChain = async (chainId) => {
@@ -34,7 +182,7 @@ var getRestEndpointForChain = async (chainId) => {
34
182
  return endpointOptions.rest;
35
183
  }
36
184
  }
37
- const chain = chains().find((chain2) => chain2.chainId === chainId);
185
+ const chain = chains$1().find((chain2) => chain2.chainId === chainId);
38
186
  if (!chain) {
39
187
  throw new Error(
40
188
  `getRestEndpointForChain error: failed to find chain id '${chainId}' in registry`
@@ -171,11 +319,11 @@ var signCosmosMessageDirect = async (options) => {
171
319
  if (!accountFromSigner) {
172
320
  throw new Error("signCosmosMessageDirect error: failed to retrieve account from signer");
173
321
  }
174
- const messages = cosmosMsgs.map((cosmosMsg) => getEncodeObjectFromCosmosMessage(cosmosMsg));
322
+ const messages2 = cosmosMsgs.map((cosmosMsg) => getEncodeObjectFromCosmosMessage(cosmosMsg));
175
323
  const txBodyEncodeObject = {
176
324
  typeUrl: "/cosmos.tx.v1beta1.TxBody",
177
325
  value: {
178
- messages
326
+ messages: messages2
179
327
  }
180
328
  };
181
329
  const txBodyBytes = ClientState.registry.encode(txBodyEncodeObject);
@@ -214,11 +362,11 @@ var signCosmosMessageAmino = async (options) => {
214
362
  "signCosmosMessageAmino: failed to retrieve account from signer"
215
363
  );
216
364
  }
217
- const messages = cosmosMsgs.map(
365
+ const messages2 = cosmosMsgs.map(
218
366
  (cosmosMsg) => getEncodeObjectFromCosmosMessage(cosmosMsg)
219
367
  );
220
368
  const signMode = SignMode.SIGN_MODE_LEGACY_AMINO_JSON;
221
- const msgs = messages.map((msg) => ClientState.aminoTypes.toAmino(msg));
369
+ const msgs = messages2.map((msg) => ClientState.aminoTypes.toAmino(msg));
222
370
  const signDoc = makeSignDoc$1(
223
371
  msgs,
224
372
  fee,
@@ -232,7 +380,7 @@ var signCosmosMessageAmino = async (options) => {
232
380
  messages: signed.msgs.map((msg) => ClientState.aminoTypes.fromAmino(msg)),
233
381
  memo: signed.memo
234
382
  };
235
- signedTxBody.messages[0].value.memo = messages[0].value.memo;
383
+ signedTxBody.messages[0].value.memo = messages2[0].value.memo;
236
384
  const signedTxBodyEncodeObject = {
237
385
  typeUrl: "/cosmos.tx.v1beta1.TxBody",
238
386
  value: signedTxBody
@@ -270,7 +418,7 @@ var signCosmosTransaction = async ({
270
418
  throw new Error("executeCosmosTransaction error: tx is undefined");
271
419
  }
272
420
  const chainId = tx.cosmosTx?.chainId;
273
- const messages = tx.cosmosTx?.msgs;
421
+ const messages2 = tx.cosmosTx?.msgs;
274
422
  const currentUserAddress = userAddresses.find((x) => x.chainId === tx.cosmosTx?.chainId)?.address;
275
423
  const gasArray = ClientState.validateGasResults;
276
424
  const gas = gasArray?.find((gas2) => gas2?.error !== null && gas2?.error !== void 0);
@@ -284,7 +432,7 @@ var signCosmosTransaction = async ({
284
432
  if (chainId === void 0) {
285
433
  throw new Error("no chainId found for tx");
286
434
  }
287
- if (messages === void 0) {
435
+ if (messages2 === void 0) {
288
436
  throw new Error("no messages found for tx");
289
437
  }
290
438
  const { signer } = await getSigningStargateClient({
@@ -313,7 +461,7 @@ var signCosmosTransaction = async ({
313
461
  const commonRawTxBody = {
314
462
  signerAddress: currentUserAddress,
315
463
  chainId,
316
- cosmosMsgs: messages,
464
+ cosmosMsgs: messages2,
317
465
  fee,
318
466
  signerData: {
319
467
  accountNumber,
@@ -976,7 +1124,8 @@ var validateEvmGasBalance = async ({
976
1124
  };
977
1125
  var validateSvmGasBalance = async ({
978
1126
  tx,
979
- simulate
1127
+ simulate,
1128
+ feePayerAddress
980
1129
  }) => {
981
1130
  if (!tx) throw new Error("Transaction is required");
982
1131
  if (simulate === false) {
@@ -991,55 +1140,52 @@ var validateSvmGasBalance = async ({
991
1140
  const endpoint = await getRpcEndpointForChain(tx.chainId ?? "");
992
1141
  const connection = new Connection(endpoint);
993
1142
  if (!connection) throw new Error(`Failed to connect to ${tx.chainId}`);
994
- if (!tx.tx) {
995
- throw new Error("Transaction is required");
996
- }
997
- const txBuffer = Buffer.from(tx.tx, "base64");
998
- let transaction;
999
- try {
1000
- transaction = Transaction.from(txBuffer);
1001
- } catch (decodeError) {
1143
+ const gasAmount = await getSVMGasAmountForMessage(connection, tx);
1144
+ const skipBalances = await balances({
1145
+ chains: {
1146
+ solana: {
1147
+ address: feePayerAddress ?? tx?.signerAddress,
1148
+ denoms: ["solana-native"]
1149
+ }
1150
+ }
1151
+ });
1152
+ const gasBalance = skipBalances?.chains?.["solana"]?.denoms?.["solana-native"];
1153
+ if (!gasBalance) {
1002
1154
  return {
1003
1155
  success: false,
1004
- error: { decodeError: decodeError.message },
1156
+ error: `Insufficient balance for gas on Solana. Need ${gasAmount / LAMPORTS_PER_SOL} SOL.`,
1005
1157
  asset: null,
1006
1158
  fee: null
1007
1159
  };
1008
1160
  }
1009
- const simulation = await connection.simulateTransaction(transaction);
1010
- if (simulation.value.err) {
1011
- const logs = simulation.value.logs ?? [];
1012
- const shortfall = getSolShortfall(logs);
1013
- const insufficientLamports = logs.some((log) => log.includes("insufficient lamports")) && shortfall !== null;
1014
- const insufficientFundsForRent = Object.keys(simulation.value.err).includes(
1015
- "InsufficientFundsForRent"
1016
- );
1017
- const errMsg = insufficientLamports ? `Insufficient balance for gas on Solana. You need ${shortfall.toFixed(6)} SOL to proceed.` : insufficientFundsForRent ? "Insufficient funds for rent on Solana. You need to fund your account." : "Simulation failed";
1161
+ if (bignumber_default(gasBalance.amount ?? "").lt(gasAmount)) {
1018
1162
  return {
1019
1163
  success: false,
1020
- logs,
1021
- error: errMsg,
1164
+ error: `Insufficient balance for gas on Solana. Need ${gasAmount / LAMPORTS_PER_SOL} SOL but only have ${gasBalance.formattedAmount} SOL.`,
1022
1165
  asset: null,
1023
1166
  fee: null
1024
1167
  };
1025
1168
  }
1026
1169
  return {
1027
1170
  success: true,
1028
- logs: simulation.value.logs ?? [],
1029
1171
  error: null,
1030
1172
  asset: null,
1031
1173
  fee: null
1032
1174
  };
1033
1175
  };
1034
- function getSolShortfall(logs) {
1035
- const line = logs.find((l) => l.includes("insufficient lamports"));
1036
- if (!line) return null;
1037
- const m = line.match(/insufficient lamports (\d+), need (\d+)/);
1038
- if (!m) return null;
1039
- const have = parseInt(m[1] ?? "0", 10);
1040
- const need = parseInt(m[2] ?? "0", 10);
1041
- const shortfallLamports = need - have;
1042
- return shortfallLamports / LAMPORTS_PER_SOL;
1176
+ async function getSVMGasAmountForMessage(connection, tx) {
1177
+ const _tx = Buffer.from(tx?.tx ?? "", "base64");
1178
+ const transaction = Transaction.from(_tx);
1179
+ const gas = await connection.getFeeForMessage(
1180
+ transaction.compileMessage(),
1181
+ "confirmed"
1182
+ );
1183
+ if (!gas.value) {
1184
+ throw new Error(
1185
+ `estimateGasForSVMTx error: unable to get gas for transaction on ${tx?.chainId}`
1186
+ );
1187
+ }
1188
+ return gas.value;
1043
1189
  }
1044
1190
 
1045
1191
  // src/private-functions/validateGasBalances.ts
@@ -1141,7 +1287,8 @@ var validateGasBalances = async ({
1141
1287
  try {
1142
1288
  const res = await validateSvmGasBalance({
1143
1289
  tx: tx.svmTx,
1144
- simulate
1290
+ simulate,
1291
+ feePayerAddress: options.svmFeePayer?.address
1145
1292
  });
1146
1293
  return res;
1147
1294
  } catch (e) {
@@ -1409,9 +1556,9 @@ var getDefaultFallbackGasAmount = async (chainId, chainType) => {
1409
1556
  return defaultGasAmount;
1410
1557
  };
1411
1558
  var validateUserAddresses = async (userAddresses) => {
1412
- const chains2 = await ClientState.getSkipChains();
1559
+ const chains3 = await ClientState.getSkipChains();
1413
1560
  const validations = userAddresses.map((userAddress) => {
1414
- const chain = chains2.find((chain2) => chain2.chainId === userAddress.chainId);
1561
+ const chain = chains3.find((chain2) => chain2.chainId === userAddress.chainId);
1415
1562
  switch (chain?.chainType) {
1416
1563
  case "cosmos" /* Cosmos */:
1417
1564
  try {
@@ -1449,19 +1596,19 @@ var validateUserAddresses = async (userAddresses) => {
1449
1596
  };
1450
1597
  var createValidAddressList = async ({
1451
1598
  userAddresses,
1452
- route
1599
+ route: route2
1453
1600
  }) => {
1454
1601
  let addressList = [];
1455
1602
  userAddresses.forEach((userAddress, index) => {
1456
- const requiredChainAddress = route.requiredChainAddresses[index];
1603
+ const requiredChainAddress = route2.requiredChainAddresses[index];
1457
1604
  if (requiredChainAddress === userAddress?.chainId) {
1458
1605
  addressList.push(userAddress.address);
1459
1606
  }
1460
1607
  });
1461
- if (addressList.length !== route.requiredChainAddresses.length) {
1608
+ if (addressList.length !== route2.requiredChainAddresses.length) {
1462
1609
  addressList = userAddresses.map((x) => x.address);
1463
1610
  }
1464
- const validLength = addressList.length === route.requiredChainAddresses.length || addressList.length === route.chainIds?.length;
1611
+ const validLength = addressList.length === route2.requiredChainAddresses.length || addressList.length === route2.chainIds?.length;
1465
1612
  if (!validLength) {
1466
1613
  throw new Error("createValidAddressList error: invalid address list");
1467
1614
  }
@@ -1472,4 +1619,536 @@ var createValidAddressList = async ({
1472
1619
  return addressList;
1473
1620
  };
1474
1621
 
1475
- export { createValidAddressList, executeTransactions };
1622
+ // src/public-functions/executeRoute.ts
1623
+ var executeRoute = async (options) => {
1624
+ const { route: route2, userAddresses, appendCosmosMsgs, timeoutSeconds } = options;
1625
+ const { id: routeId } = updateRouteDetails({
1626
+ status: "unconfirmed",
1627
+ options
1628
+ });
1629
+ const addressList = await createValidAddressList({
1630
+ userAddresses,
1631
+ route: route2
1632
+ });
1633
+ const response = await messages({
1634
+ timeoutSeconds,
1635
+ amountIn: route2?.amountIn,
1636
+ amountOut: route2.estimatedAmountOut || "0",
1637
+ sourceAssetChainId: route2?.sourceAssetChainId,
1638
+ sourceAssetDenom: route2?.sourceAssetDenom,
1639
+ destAssetChainId: route2?.destAssetChainId,
1640
+ destAssetDenom: route2?.destAssetDenom,
1641
+ operations: route2?.operations,
1642
+ addressList,
1643
+ slippageTolerancePercent: options.slippageTolerancePercent || "1",
1644
+ chainIdsToAffiliates: ApiState.chainIdsToAffiliates,
1645
+ postRouteHandler: options.postRouteHandler,
1646
+ feePayerAddress: options.svmFeePayer?.address
1647
+ });
1648
+ if (appendCosmosMsgs) {
1649
+ Object.entries(appendCosmosMsgs).forEach(([chainId, msgs]) => {
1650
+ const txIndex = response?.txs?.findIndex(
1651
+ (tx2) => "cosmosTx" in tx2 && tx2.cosmosTx.chainId === chainId
1652
+ );
1653
+ if (txIndex === void 0 || txIndex === -1) return;
1654
+ const tx = response?.txs?.[txIndex];
1655
+ if (tx && "cosmosTx" in tx) {
1656
+ tx.cosmosTx.msgs?.unshift(...msgs);
1657
+ }
1658
+ });
1659
+ }
1660
+ const { transactionDetails, executeTransaction } = await executeTransactions({ ...options, routeId, txs: response?.txs });
1661
+ await executeAndSubscribeToRouteStatus({
1662
+ transactionDetails,
1663
+ executeTransaction,
1664
+ routeId,
1665
+ options
1666
+ });
1667
+ };
1668
+
1669
+ // src/public-functions/executeMultipleRoutes.ts
1670
+ var executeMultipleRoutes = async (options) => {
1671
+ const {
1672
+ route: route2,
1673
+ userAddresses,
1674
+ appendCosmosMsgs,
1675
+ postRouteHandler,
1676
+ slippageTolerancePercent,
1677
+ ...restOptions
1678
+ } = options;
1679
+ const addressList = {};
1680
+ for (const [routeKey, routeValue] of Object.entries(route2)) {
1681
+ const _userAddresses = userAddresses[routeKey];
1682
+ if (_userAddresses === void 0) {
1683
+ throw new Error(
1684
+ `executeMultipleRoutes error: no user addresses found for route: ${routeKey}`
1685
+ );
1686
+ }
1687
+ const routeAddressList = await createValidAddressList({
1688
+ userAddresses: _userAddresses,
1689
+ route: routeValue
1690
+ });
1691
+ addressList[routeKey] = routeAddressList;
1692
+ }
1693
+ const msgsResponses = await Promise.all(
1694
+ Object.entries(route2).map(async ([routeKey, routeValue]) => {
1695
+ const routeAddressList = addressList[routeKey];
1696
+ if (routeAddressList === void 0) {
1697
+ throw new Error(
1698
+ `executeMultipleRoutes error: address list not found for route ${routeKey}`
1699
+ );
1700
+ }
1701
+ return await messages({
1702
+ timeoutSeconds: options.timeoutSeconds,
1703
+ amountIn: routeValue?.amountIn,
1704
+ amountOut: routeValue.estimatedAmountOut || "0",
1705
+ sourceAssetChainId: routeValue?.sourceAssetChainId,
1706
+ sourceAssetDenom: routeValue?.sourceAssetDenom,
1707
+ destAssetChainId: routeValue?.destAssetChainId,
1708
+ destAssetDenom: routeValue?.destAssetDenom,
1709
+ operations: routeValue?.operations,
1710
+ addressList: routeAddressList,
1711
+ slippageTolerancePercent: slippageTolerancePercent?.[routeKey] || "1",
1712
+ chainIdsToAffiliates: ApiState.chainIdsToAffiliates,
1713
+ postRouteHandler: postRouteHandler?.[routeKey],
1714
+ feePayerAddress: options.svmFeePayer?.address
1715
+ });
1716
+ })
1717
+ );
1718
+ let msgsRecord = {};
1719
+ msgsResponses.forEach((msg, index2) => {
1720
+ const routeKey = Object.keys(route2)[index2];
1721
+ if (!routeKey) {
1722
+ throw new Error(
1723
+ `executeMultipleRoutes error: route key not found for index ${index2}`
1724
+ );
1725
+ }
1726
+ const addedCosmosMsgs = appendCosmosMsgs?.[routeKey];
1727
+ if (addedCosmosMsgs) {
1728
+ Object.entries(addedCosmosMsgs).forEach(([chainId, msgs]) => {
1729
+ const txIndex = msg?.txs?.findIndex(
1730
+ (tx2) => "cosmosTx" in tx2 && tx2.cosmosTx.chainId === chainId
1731
+ );
1732
+ if (txIndex === void 0 || txIndex === -1) return;
1733
+ const tx = msg?.txs?.[txIndex];
1734
+ if (tx && "cosmosTx" in tx) {
1735
+ tx.cosmosTx.msgs?.unshift(...msgs);
1736
+ }
1737
+ });
1738
+ }
1739
+ msgsRecord[routeKey] = msg;
1740
+ });
1741
+ let transferIndexToRouteKey = void 0;
1742
+ const cosmosTxIndex0Map = /* @__PURE__ */ new Map();
1743
+ let transferIndex = 0;
1744
+ for (const [routeKey, msgs] of Object.entries(msgsRecord)) {
1745
+ const firstTx = msgs?.txs?.[0];
1746
+ if (firstTx && "cosmosTx" in firstTx) {
1747
+ const { chainId, msgs: firstTxMsgs } = firstTx.cosmosTx;
1748
+ if (!transferIndexToRouteKey) {
1749
+ transferIndexToRouteKey = {};
1750
+ }
1751
+ transferIndexToRouteKey[transferIndex] = routeKey;
1752
+ transferIndex++;
1753
+ if (!cosmosTxIndex0Map.has(chainId)) {
1754
+ cosmosTxIndex0Map.set(chainId, {
1755
+ routeKey,
1756
+ firstCosmosTx: firstTx.cosmosTx
1757
+ });
1758
+ } else {
1759
+ const existing = cosmosTxIndex0Map.get(chainId);
1760
+ if (existing && firstTxMsgs) {
1761
+ const modifyTarget = msgsRecord[existing.routeKey]?.txs?.[0];
1762
+ if (modifyTarget && "cosmosTx" in modifyTarget) {
1763
+ modifyTarget.cosmosTx.msgs?.push(...firstTxMsgs);
1764
+ msgsRecord[routeKey]?.txs?.shift();
1765
+ }
1766
+ }
1767
+ }
1768
+ }
1769
+ }
1770
+ Object.entries(msgsRecord).forEach(([routeKey, msgs]) => {
1771
+ if (msgs?.txs?.length === 0) {
1772
+ delete msgsRecord[routeKey];
1773
+ }
1774
+ });
1775
+ let mainRouteId = void 0;
1776
+ let msgsRecordIndexToRouteId = {};
1777
+ let index = 0;
1778
+ const transactionDetailsList = {};
1779
+ const executeTransactionList = {};
1780
+ const mergedMainAndSecondaryRoutes = Object.entries(msgsRecord).length !== Object.entries(route2).length;
1781
+ for (const [routeKey, msgsResponse] of Object.entries(msgsRecord)) {
1782
+ const { id: routeId } = updateRouteDetails({
1783
+ status: "unconfirmed",
1784
+ options: {
1785
+ route: route2[routeKey],
1786
+ ...restOptions
1787
+ },
1788
+ mainRouteId,
1789
+ transferIndexToRouteKey
1790
+ });
1791
+ msgsRecordIndexToRouteId[index] = routeId;
1792
+ if (routeKey === "mainRoute") {
1793
+ mainRouteId = routeId;
1794
+ }
1795
+ const { transactionDetails, executeTransaction: _executeTransaction } = await executeTransactions({
1796
+ ...restOptions,
1797
+ routeId,
1798
+ txs: msgsResponse?.txs,
1799
+ route: route2[routeKey],
1800
+ userAddresses: userAddresses[routeKey],
1801
+ isMultiRoutes: true
1802
+ });
1803
+ const executeTransaction = async (index2) => {
1804
+ const txResult = await _executeTransaction(index2);
1805
+ if (routeKey !== "mainRoute" || mergedMainAndSecondaryRoutes) {
1806
+ const relatedRoutes = Object.entries(route2).filter(([key]) => key !== "mainRoute").map(([key, route3]) => ({ route: route3, routeKey: key, status: "pending" }));
1807
+ updateRouteDetails({
1808
+ options: {
1809
+ route: route2[routeKey],
1810
+ ...restOptions
1811
+ },
1812
+ routeId: mainRouteId,
1813
+ transferIndexToRouteKey,
1814
+ relatedRoutes
1815
+ });
1816
+ }
1817
+ return txResult;
1818
+ };
1819
+ if (transactionDetails[0]?.chainType === "evm" /* Evm */) {
1820
+ for (const [index2, transactionDetail] of transactionDetails.entries()) {
1821
+ const txResult = await executeTransaction(index2);
1822
+ if (txResult.txHash) {
1823
+ const trackResponse = await trackTransaction({
1824
+ chainId: transactionDetail.chainId,
1825
+ txHash: txResult.txHash,
1826
+ ...options.trackTxPollingOptions
1827
+ });
1828
+ await options?.onTransactionTracked?.({
1829
+ txHash: txResult.txHash,
1830
+ chainId: transactionDetail.chainId,
1831
+ explorerLink: trackResponse.explorerLink
1832
+ });
1833
+ transactionDetail.txHash = txResult.txHash;
1834
+ transactionDetail.explorerLink = trackResponse.explorerLink;
1835
+ }
1836
+ }
1837
+ } else {
1838
+ executeTransactionList[index] = executeTransaction;
1839
+ }
1840
+ transactionDetailsList[index] = transactionDetails;
1841
+ index++;
1842
+ }
1843
+ await Promise.all(
1844
+ Object.entries(msgsRecord).map(([routeKey, msgsResponse], index2) => {
1845
+ return executeAndSubscribeToRouteStatus({
1846
+ transactionDetails: transactionDetailsList[index2],
1847
+ executeTransaction: executeTransactionList[index2],
1848
+ routeId: msgsRecordIndexToRouteId[index2],
1849
+ options: {
1850
+ route: route2[routeKey],
1851
+ userAddresses: userAddresses[routeKey],
1852
+ ...restOptions,
1853
+ onRouteStatusUpdated: (routeStatus) => {
1854
+ const relatedRoutes = Object.entries(route2).filter(([key]) => key !== "mainRoute").map(([key, route3]) => ({ route: route3, routeKey: key, status: routeStatus.status }));
1855
+ if (routeKey !== "mainRoute") {
1856
+ updateRouteDetails({
1857
+ options: {
1858
+ route: route2[routeKey],
1859
+ ...restOptions
1860
+ },
1861
+ routeId: mainRouteId,
1862
+ transferIndexToRouteKey,
1863
+ relatedRoutes
1864
+ });
1865
+ }
1866
+ options.onRouteStatusUpdated?.(routeStatus);
1867
+ }
1868
+ }
1869
+ });
1870
+ })
1871
+ );
1872
+ };
1873
+
1874
+ // src/utils/coingecko.ts
1875
+ var getUsdPrice = async (coingeckoId) => {
1876
+ try {
1877
+ const response = await fetch(`https://api.coingecko.com/api/v3/simple/price?ids=${coingeckoId}&vs_currencies=usd`);
1878
+ const data = await response.json();
1879
+ return data?.[coingeckoId]?.usd;
1880
+ } catch (error) {
1881
+ return void 0;
1882
+ }
1883
+ };
1884
+
1885
+ // src/utils/numbers.ts
1886
+ var convertHumanReadableAmountToCryptoAmount = (humanReadableAmount, decimals) => {
1887
+ const cryptoAmount = new bignumber_default(humanReadableAmount).shiftedBy(decimals);
1888
+ return cryptoAmount.toFixed(0);
1889
+ };
1890
+ var formaTestnet = defineChain({
1891
+ id: 984123,
1892
+ name: "Forma Testnet",
1893
+ nativeCurrency: {
1894
+ name: "TIA",
1895
+ symbol: "TIA",
1896
+ decimals: 18
1897
+ },
1898
+ rpcUrls: {
1899
+ default: {
1900
+ http: ["https://rpc.sketchpad-1.forma.art"]
1901
+ }
1902
+ },
1903
+ blockExplorers: {
1904
+ default: {
1905
+ name: "Forma Explorer",
1906
+ url: "https://explorer.sketchpad-1.forma.art"
1907
+ }
1908
+ },
1909
+ testnet: true
1910
+ });
1911
+ var evmChains = [
1912
+ arbitrum,
1913
+ avalanche,
1914
+ base,
1915
+ bsc,
1916
+ celo,
1917
+ fantom,
1918
+ filecoin,
1919
+ kava,
1920
+ linea,
1921
+ mainnet,
1922
+ manta,
1923
+ moonbeam,
1924
+ optimism,
1925
+ polygon,
1926
+ polygonMumbai,
1927
+ sepolia,
1928
+ avalancheFuji,
1929
+ baseSepolia,
1930
+ optimismSepolia,
1931
+ arbitrumSepolia,
1932
+ blast,
1933
+ blastSepolia,
1934
+ forma,
1935
+ formaTestnet,
1936
+ sei,
1937
+ bscTestnet,
1938
+ fantomTestnet,
1939
+ kavaTestnet,
1940
+ lineaSepolia,
1941
+ mantaSepoliaTestnet
1942
+ ];
1943
+
1944
+ // src/utils/array.ts
1945
+ function isSubset(arrayA, arrayB) {
1946
+ const setA = new Set(arrayA);
1947
+ return arrayB.every((item) => setA.has(item));
1948
+ }
1949
+
1950
+ // src/public-functions/getRouteWithGasOnReceive.ts
1951
+ var GAS_ON_RECEIVE_AMOUNT_USD = {
1952
+ ["cosmos" /* Cosmos */]: 0.1,
1953
+ evm_l2: 2
1954
+ };
1955
+ var DISABLED_SOURCE_CHAINIDS = ["1", "11155111"];
1956
+ var DISABLED_DESTINATION_CHAINIDS = ["solana", "solana-devnet"];
1957
+ var getRouteWithGasOnReceive = async (props) => {
1958
+ const originalRoute = props.routeResponse;
1959
+ try {
1960
+ if (DISABLED_SOURCE_CHAINIDS.includes(originalRoute.sourceAssetChainId)) {
1961
+ throw new Error(
1962
+ `Routes from ${originalRoute.sourceAssetChainId} are not supported`
1963
+ );
1964
+ }
1965
+ if (DISABLED_DESTINATION_CHAINIDS.includes(originalRoute.destAssetChainId)) {
1966
+ throw new Error(
1967
+ `Routes to ${originalRoute.destAssetChainId} are not supported`
1968
+ );
1969
+ }
1970
+ const skipChains = ClientState.skipChains ? ClientState.skipChains : await chains({
1971
+ includeEvm: true,
1972
+ includeSvm: true,
1973
+ chainIds: [
1974
+ originalRoute.sourceAssetChainId,
1975
+ originalRoute.destAssetChainId
1976
+ ],
1977
+ onlyTestnets: props.onlyTestnets
1978
+ });
1979
+ const skipAssets = ClientState.skipAssets ? ClientState.skipAssets : await assets({
1980
+ chainIds: [
1981
+ originalRoute.sourceAssetChainId,
1982
+ originalRoute.destAssetChainId
1983
+ ],
1984
+ includeEvmAssets: true,
1985
+ includeSvmAssets: true,
1986
+ onlyTestnets: props.onlyTestnets
1987
+ });
1988
+ const destinationChain = skipChains?.find(
1989
+ (chain) => chain.chainId === originalRoute.destAssetChainId
1990
+ );
1991
+ if (destinationChain?.feeAssets.map((i) => i.denom).includes(originalRoute.destAssetDenom)) {
1992
+ throw new Error(
1993
+ "Destination asset is already a fee asset on the destination chain"
1994
+ );
1995
+ }
1996
+ const gasOnReceiveAmount = await getGasOnReceiveAmount({
1997
+ destinationChain,
1998
+ skipAssets,
1999
+ sourceAsset: skipAssets?.[originalRoute.sourceAssetChainId]?.find(
2000
+ (i) => i.denom === originalRoute.sourceAssetDenom
2001
+ )
2002
+ });
2003
+ if (!gasOnReceiveAmount || gasOnReceiveAmount.length === 0) {
2004
+ throw new Error(
2005
+ "No gas on receive amount found for the destination chain"
2006
+ );
2007
+ }
2008
+ const splitDenoms = chunkArray(gasOnReceiveAmount, 3);
2009
+ let gasRoute;
2010
+ for (const chunk of splitDenoms) {
2011
+ const feeAssetRoutes = chunk.map(
2012
+ async ({ amountOut, denom, amountIn }) => {
2013
+ try {
2014
+ const res = await route({
2015
+ ...props.routeRequest,
2016
+ destAssetDenom: denom,
2017
+ amountIn,
2018
+ amountOut,
2019
+ allowMultiTx: false
2020
+ });
2021
+ return res;
2022
+ } catch (_e) {
2023
+ return null;
2024
+ }
2025
+ }
2026
+ );
2027
+ const result = await Promise.all(feeAssetRoutes);
2028
+ const _gasRoute = result.find((result2) => result2?.usdAmountOut);
2029
+ if (_gasRoute?.usdAmountOut) {
2030
+ gasRoute = _gasRoute;
2031
+ break;
2032
+ }
2033
+ }
2034
+ if (!gasRoute) {
2035
+ throw new Error(
2036
+ "No gas route found for the destination chain with the provided assets"
2037
+ );
2038
+ }
2039
+ const mainRouteAmountIn = bignumber_default(originalRoute?.amountIn ?? 0).minus(bignumber_default(gasRoute.amountIn ?? 0)).toString();
2040
+ const mainRoute = await route({
2041
+ ...props.routeRequest,
2042
+ amountIn: mainRouteAmountIn,
2043
+ amountOut: void 0
2044
+ });
2045
+ if (!mainRoute) {
2046
+ throw new Error("No main route found with the provided assets");
2047
+ }
2048
+ if (originalRoute.txsRequired !== mainRoute.txsRequired || !isSubset(
2049
+ originalRoute?.requiredChainAddresses,
2050
+ mainRoute.requiredChainAddresses
2051
+ )) {
2052
+ throw new Error("Main route does not match the original route");
2053
+ }
2054
+ return {
2055
+ mainRoute,
2056
+ gasRoute
2057
+ };
2058
+ } catch (error) {
2059
+ return {
2060
+ mainRoute: originalRoute,
2061
+ gasRoute: void 0
2062
+ };
2063
+ }
2064
+ };
2065
+ var getGasOnReceiveAmount = async ({
2066
+ destinationChain,
2067
+ skipAssets,
2068
+ sourceAsset
2069
+ }) => {
2070
+ switch (destinationChain?.chainType) {
2071
+ case "cosmos" /* Cosmos */: {
2072
+ const usdPrice = sourceAsset?.coingeckoId ? await getUsdPrice(sourceAsset.coingeckoId) : void 0;
2073
+ return destinationChain.feeAssets.map((asset) => {
2074
+ const destinationAsset = skipAssets?.[destinationChain.chainId]?.find(
2075
+ (i) => i.denom === asset.denom
2076
+ );
2077
+ const gasPrice = asset.gasPrice?.average ?? asset.gasPrice?.high ?? asset.gasPrice?.low;
2078
+ if (!gasPrice || Number(gasPrice) === 0) {
2079
+ if (!usdPrice || !sourceAsset?.decimals) return;
2080
+ const gasOnReceiveAmountUsd = GAS_ON_RECEIVE_AMOUNT_USD["cosmos"];
2081
+ const amountIn = bignumber_default(gasOnReceiveAmountUsd).multipliedBy(usdPrice).toString();
2082
+ return {
2083
+ amountIn: convertHumanReadableAmountToCryptoAmount(
2084
+ amountIn,
2085
+ sourceAsset.decimals
2086
+ ),
2087
+ amountOut: void 0,
2088
+ denom: asset.denom
2089
+ };
2090
+ }
2091
+ return {
2092
+ amountIn: void 0,
2093
+ amountOut: gasPrice && destinationAsset?.decimals ? convertHumanReadableAmountToCryptoAmount(
2094
+ bignumber_default(gasPrice).multipliedBy(3).toNumber(),
2095
+ destinationAsset.decimals
2096
+ ) : void 0,
2097
+ denom: asset.denom
2098
+ };
2099
+ }).filter(Boolean);
2100
+ }
2101
+ case "evm" /* Evm */: {
2102
+ const sourceAssetPrice = sourceAsset?.coingeckoId ? await getUsdPrice(sourceAsset?.coingeckoId) : void 0;
2103
+ const destinationAsset = skipAssets?.[destinationChain.chainId]?.find(
2104
+ (i) => i.denom.includes("-native")
2105
+ );
2106
+ if (!sourceAssetPrice) {
2107
+ const chain = evmChains.find(
2108
+ (chain2) => chain2.id === Number(destinationChain?.chainId)
2109
+ );
2110
+ const client = createPublicClient({
2111
+ chain,
2112
+ transport: fallback([
2113
+ http("https://ethereum.publicnode.com"),
2114
+ http("https://rpc.ankr.com/eth"),
2115
+ http("https://cloudflare-eth.com")
2116
+ ])
2117
+ });
2118
+ const fees = await client.estimateFeesPerGas();
2119
+ return [
2120
+ {
2121
+ amountIn: void 0,
2122
+ amountOut: bignumber_default(15e4).multipliedBy(fees.maxFeePerGas.toString()).multipliedBy(3).toString(),
2123
+ denom: destinationAsset?.denom
2124
+ }
2125
+ ];
2126
+ }
2127
+ const gasPrice = bignumber_default(GAS_ON_RECEIVE_AMOUNT_USD["evm_l2"]).dividedBy(
2128
+ sourceAssetPrice
2129
+ ).toString();
2130
+ return [
2131
+ {
2132
+ amountOut: void 0,
2133
+ amountIn: sourceAsset?.decimals ? convertHumanReadableAmountToCryptoAmount(
2134
+ gasPrice,
2135
+ sourceAsset.decimals
2136
+ ) : void 0,
2137
+ denom: destinationAsset?.denom
2138
+ }
2139
+ ];
2140
+ }
2141
+ default: {
2142
+ return;
2143
+ }
2144
+ }
2145
+ };
2146
+ var chunkArray = (arr, size = 3) => {
2147
+ const result = [];
2148
+ for (let i = 0; i < arr.length; i += size) {
2149
+ result.push(arr.slice(i, i + size));
2150
+ }
2151
+ return result;
2152
+ };
2153
+
2154
+ export { AutopilotActionJson, AxelarTransferStateJson, AxelarTransferTypeJson, BridgeTypeJson, CCTPTransferStateJson, ChainTypeJson, ContractCallWithTokenErrorTypeJson, FeeBehaviorJson, FeeTypeJson, GoFastTransferStateJson, HyperlaneTransferStateJson, LayerZeroTransferStateJson, OPInitTransferStateJson, PacketErrorTypeJson, ReasonJson, RoutePriceWarningTypeJson, SendTokenErrorTypeJson, StargateTransferStateJson, StatusErrorTypeJson, TransactionStateJson, TransferStateJson, executeMultipleRoutes, executeRoute, getRouteWithGasOnReceive };