@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.
- package/dist/cjs/api/getAssets.cjs +5 -5
- package/dist/cjs/api/getAssetsBetweenChains.cjs +4 -4
- package/dist/cjs/api/getBridges.cjs +4 -4
- package/dist/cjs/api/getChains.cjs +4 -4
- package/dist/cjs/api/getVenues.cjs +4 -4
- package/dist/cjs/api/postAssetsFromSource.cjs +5 -5
- package/dist/cjs/api/postBalances.cjs +4 -4
- package/dist/cjs/api/postIbcOriginAssets.cjs +4 -4
- package/dist/cjs/api/postMessages.cjs +4 -4
- package/dist/cjs/api/postMessagesDirect.cjs +4 -4
- package/dist/cjs/api/postRecommendAssets.cjs +4 -4
- package/dist/cjs/api/postRoute.cjs +4 -4
- package/dist/cjs/api/postSubmitTransaction.cjs +4 -4
- package/dist/cjs/api/postTrackTransaction.cjs +4 -4
- package/dist/cjs/api/postTransactionStatus.cjs +4 -4
- package/dist/cjs/{chunk-EI4ZWAEU.cjs → chunk-262HFM6V.cjs} +2 -2
- package/dist/cjs/{chunk-XPQRSO4J.cjs → chunk-3NHW3XWK.cjs} +2 -2
- package/dist/cjs/{chunk-XEBVLUYW.cjs → chunk-4MV4GLIA.cjs} +2 -2
- package/dist/cjs/{chunk-MHVCR4QO.cjs → chunk-4NGHNHAS.cjs} +6 -6
- package/dist/cjs/{chunk-3IWLZ562.cjs → chunk-7SZZBUBD.cjs} +3 -3
- package/dist/cjs/{chunk-LARLMUFZ.cjs → chunk-APJDSXWR.cjs} +10 -10
- package/dist/cjs/{chunk-R3TSJPKH.cjs → chunk-AW6IQ7JH.cjs} +2 -2
- package/dist/cjs/{chunk-7D433NQ5.cjs → chunk-BCX2D6TE.cjs} +91 -18
- package/dist/cjs/{chunk-JUKPQLLQ.cjs → chunk-FF5UWES6.cjs} +4 -4
- package/dist/cjs/{chunk-MMGVGXA5.cjs → chunk-HFEMNOJS.cjs} +7 -1
- package/dist/cjs/{chunk-HEYFLFKD.cjs → chunk-I2FDWZZJ.cjs} +810 -109
- package/dist/cjs/{chunk-MFJ6S6TL.cjs → chunk-JWWJIJUE.cjs} +2 -2
- package/dist/cjs/{chunk-5RP766TT.cjs → chunk-KWH6S7PB.cjs} +6 -6
- package/dist/cjs/{chunk-GO4BJ6G2.cjs → chunk-NWD4MAMT.cjs} +14 -8
- package/dist/cjs/{chunk-66VIHDGM.cjs → chunk-PDTIT3JO.cjs} +13 -13
- package/dist/cjs/{chunk-2MAYN27U.cjs → chunk-PLO5CVGN.cjs} +2 -2
- package/dist/cjs/{chunk-5HZLL5KD.cjs → chunk-QAHHTQ7V.cjs} +4 -4
- package/dist/cjs/{chunk-AJYZ5GAD.cjs → chunk-RBM66GW6.cjs} +2 -2
- package/dist/cjs/{chunk-ULD54VE4.cjs → chunk-RC73RNNQ.cjs} +4 -4
- package/dist/cjs/{chunk-N2RG3CRN.cjs → chunk-S3BKLN4L.cjs} +2 -2
- package/dist/cjs/{chunk-KPV3PGBG.cjs → chunk-T5EGKQAT.cjs} +2 -2
- package/dist/cjs/chunk-UMBMSRZZ.cjs +185 -0
- package/dist/cjs/{chunk-4R6OCWRR.cjs → chunk-WKYP2NMS.cjs} +8 -6
- package/dist/cjs/{chunk-VMWCRZVT.cjs → chunk-XCFPRLX3.cjs} +8 -8
- package/dist/cjs/{chunk-XDKONUY6.cjs → chunk-ZBJZTBIW.cjs} +2 -2
- package/dist/cjs/index.cjs +189 -251
- package/dist/cjs/public-functions/executeMultipleRoutes.cjs +27 -17
- package/dist/cjs/public-functions/executeRoute.cjs +27 -17
- package/dist/cjs/public-functions/getEvmGasAmountForMessage.cjs +1 -1
- package/dist/cjs/public-functions/getFeeInfoForChain.cjs +6 -7
- package/dist/cjs/public-functions/getRecommendedGasPrice.cjs +8 -9
- package/dist/cjs/public-functions/getRouteWithGasOnReceive.cjs +39 -0
- package/dist/cjs/public-functions/getSigningStargateClient.cjs +6 -6
- package/dist/cjs/public-functions/setApiOptions.cjs +4 -4
- package/dist/cjs/public-functions/setClientOptions.cjs +5 -5
- package/dist/cjs/public-functions/subscribeToRouteStatus.cjs +9 -9
- package/dist/cjs/public-functions/validateCosmosGasBalance.cjs +8 -8
- package/dist/cjs/public-functions/waitForTransaction.cjs +6 -6
- package/dist/esm/api/getAssets.d.ts +1 -1
- package/dist/esm/api/getAssets.js +3 -3
- package/dist/esm/api/getAssetsBetweenChains.d.ts +21 -21
- package/dist/esm/api/getAssetsBetweenChains.js +3 -3
- package/dist/esm/api/getBridges.d.ts +1 -1
- package/dist/esm/api/getBridges.js +3 -3
- package/dist/esm/api/getChains.d.ts +1 -1
- package/dist/esm/api/getChains.js +3 -3
- package/dist/esm/api/getVenues.js +3 -3
- package/dist/esm/api/postAssetsFromSource.d.ts +1 -1
- package/dist/esm/api/postAssetsFromSource.js +4 -4
- package/dist/esm/api/postBalances.d.ts +2 -2
- package/dist/esm/api/postBalances.js +3 -3
- package/dist/esm/api/postIbcOriginAssets.d.ts +10 -10
- package/dist/esm/api/postIbcOriginAssets.js +3 -3
- package/dist/esm/api/postMessages.d.ts +12 -12
- package/dist/esm/api/postMessages.js +3 -3
- package/dist/esm/api/postMessagesDirect.d.ts +163 -161
- package/dist/esm/api/postMessagesDirect.js +3 -3
- package/dist/esm/api/postRecommendAssets.d.ts +11 -11
- package/dist/esm/api/postRecommendAssets.js +3 -3
- package/dist/esm/api/postRoute.d.ts +161 -159
- package/dist/esm/api/postRoute.js +3 -3
- package/dist/esm/api/postSubmitTransaction.d.ts +2 -2
- package/dist/esm/api/postSubmitTransaction.js +3 -3
- package/dist/esm/api/postTrackTransaction.d.ts +2 -2
- package/dist/esm/api/postTrackTransaction.js +3 -3
- package/dist/esm/api/postTransactionStatus.d.ts +36 -36
- package/dist/esm/api/postTransactionStatus.js +3 -3
- package/dist/esm/{callbacks-DCqqd0D9.d.ts → callbacks-C-KUJnDv.d.ts} +34 -4
- package/dist/esm/{chunk-GU3UHER5.js → chunk-2PWROHHX.js} +3 -3
- package/dist/esm/{chunk-MFHZBJGQ.js → chunk-3WFXBPS2.js} +1 -1
- package/dist/esm/{chunk-B36HVX2L.js → chunk-44IX6KPJ.js} +1 -1
- package/dist/esm/{chunk-WSAZDCXR.js → chunk-5IXH2QPF.js} +86 -16
- package/dist/esm/{chunk-Z2HSHJLW.js → chunk-6M7N6EAO.js} +3 -3
- package/dist/esm/{chunk-6HKZYODA.js → chunk-AUNRER4I.js} +1 -1
- package/dist/esm/{chunk-H2HTF2UF.js → chunk-FNTPI2AV.js} +1 -1
- package/dist/esm/{chunk-W5AA7QOQ.js → chunk-HDW6XFWX.js} +1 -1
- package/dist/esm/{chunk-RXZJUE4K.js → chunk-HELQO7PA.js} +2 -2
- package/dist/esm/{chunk-45B6E7AT.js → chunk-IHSSWY3M.js} +1 -1
- package/dist/esm/{chunk-JQOJIEZA.js → chunk-IKWC55JU.js} +739 -60
- package/dist/esm/{chunk-VQ5SIQWU.js → chunk-JYYCFKB4.js} +8 -7
- package/dist/esm/chunk-KNXMSLOB.js +1 -1
- package/dist/esm/{chunk-HPA2XUA3.js → chunk-KXQ2ASHQ.js} +1 -1
- package/dist/esm/{chunk-263RYJUL.js → chunk-MYGJGC62.js} +1 -1
- package/dist/esm/chunk-O4J7DHZA.js +180 -0
- package/dist/esm/{chunk-BNMWBXN3.js → chunk-QRKO56DH.js} +9 -4
- package/dist/esm/{chunk-VG3G5QHN.js → chunk-RFJYCJK4.js} +1 -1
- package/dist/esm/{chunk-A4MFVNZO.js → chunk-SFWTQBQT.js} +3 -3
- package/dist/esm/{chunk-7WXPBTSR.js → chunk-TNIGHYH2.js} +3 -3
- package/dist/esm/{chunk-EJZGYHGH.js → chunk-UBVBVJPY.js} +1 -1
- package/dist/esm/chunk-UIDIKXMB.js +1 -1
- package/dist/esm/{chunk-DQXGZGNJ.js → chunk-V7VKYD4J.js} +2 -2
- package/dist/esm/{chunk-X3PQKUOS.js → chunk-VGCTTJO7.js} +7 -1
- package/dist/esm/{chunk-TLVHKYQ3.js → chunk-VWOMKMH2.js} +1 -1
- package/dist/esm/{chunk-AGHQ7SIE.js → chunk-YGQ4NKTM.js} +1 -1
- package/dist/esm/{chunk-A35RPDUV.js → chunk-YLVUKXLR.js} +1 -1
- package/dist/esm/{client-types-BSZasIDd.d.ts → client-types-CGMuZ3zo.d.ts} +2 -2
- package/dist/esm/{generateApi-CwM4Ca30.d.ts → generateApi-D_-Gso-x.d.ts} +1 -1
- package/dist/esm/index.d.ts +166 -143
- package/dist/esm/index.js +26 -175
- package/dist/esm/public-functions/executeMultipleRoutes.d.ts +30 -10
- package/dist/esm/public-functions/executeMultipleRoutes.js +26 -16
- package/dist/esm/public-functions/executeRoute.d.ts +4 -4
- package/dist/esm/public-functions/executeRoute.js +26 -16
- package/dist/esm/public-functions/getCosmosGasAmountForMessage.d.ts +1 -1
- package/dist/esm/public-functions/getEvmGasAmountForMessage.d.ts +3 -3
- package/dist/esm/public-functions/getEvmGasAmountForMessage.js +1 -1
- package/dist/esm/public-functions/getFeeInfoForChain.d.ts +1 -1
- package/dist/esm/public-functions/getFeeInfoForChain.js +5 -6
- package/dist/esm/public-functions/getRecommendedGasPrice.js +7 -8
- package/dist/esm/public-functions/getRouteWithGasOnReceive.d.ts +20 -0
- package/dist/esm/public-functions/getRouteWithGasOnReceive.js +30 -0
- package/dist/esm/public-functions/getSigningStargateClient.js +5 -5
- package/dist/esm/public-functions/setApiOptions.d.ts +1 -1
- package/dist/esm/public-functions/setApiOptions.js +3 -3
- package/dist/esm/public-functions/setClientOptions.d.ts +4 -4
- package/dist/esm/public-functions/setClientOptions.js +4 -4
- package/dist/esm/public-functions/subscribeToRouteStatus.d.ts +4 -4
- package/dist/esm/public-functions/subscribeToRouteStatus.js +5 -5
- package/dist/esm/public-functions/validateCosmosGasBalance.d.ts +4 -4
- package/dist/esm/public-functions/validateCosmosGasBalance.js +7 -7
- package/dist/esm/public-functions/waitForTransaction.d.ts +38 -38
- package/dist/esm/public-functions/waitForTransaction.js +5 -5
- package/dist/esm/setClientOptions-C8g92xTm.d.ts +76 -0
- package/dist/esm/{swaggerTypes-Bh6hu5Q-.d.ts → swaggerTypes-B_jKfpvz.d.ts} +154 -132
- package/package.json +1 -1
- package/dist/cjs/chunk-D57TNRV3.cjs +0 -214
- package/dist/cjs/chunk-KSJ5QYMR.cjs +0 -185
- package/dist/cjs/chunk-KZOSEIWH.cjs +0 -10
- package/dist/cjs/chunk-Q33F7U2Y.cjs +0 -55
- package/dist/esm/chunk-4YTLUDRU.js +0 -212
- package/dist/esm/chunk-CP55HI6R.js +0 -53
- package/dist/esm/chunk-RHGDUD76.js +0 -180
- package/dist/esm/chunk-SWYON2RG.js +0 -7
- package/dist/esm/setClientOptions-CrXIODm0.d.ts +0 -19
- package/dist/cjs/{chunk-IDDRJJO5.cjs → chunk-DLT6Q6RB.cjs} +1 -1
- package/dist/esm/{chunk-OQDBWVET.js → chunk-QL423UEF.js} +1 -1
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { updateRouteDetails } from './chunk-
|
|
2
|
-
import { validateCosmosGasBalance } from './chunk-
|
|
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-
|
|
6
|
-
import { GAS_STATION_CHAIN_IDS } from './chunk-
|
|
7
|
-
import { getRpcEndpointForChain, accountParser, getSigningStargateClient } from './chunk-
|
|
8
|
-
import { chains, findFirstWorkingEndpoint, getIsEthermint, getIsInitia } from './chunk-
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
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
|
|
23
|
-
import {
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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 (
|
|
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:
|
|
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
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1035
|
-
const
|
|
1036
|
-
|
|
1037
|
-
const
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
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
|
|
1559
|
+
const chains3 = await ClientState.getSkipChains();
|
|
1413
1560
|
const validations = userAddresses.map((userAddress) => {
|
|
1414
|
-
const chain =
|
|
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 =
|
|
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 !==
|
|
1608
|
+
if (addressList.length !== route2.requiredChainAddresses.length) {
|
|
1462
1609
|
addressList = userAddresses.map((x) => x.address);
|
|
1463
1610
|
}
|
|
1464
|
-
const validLength = addressList.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
|
-
|
|
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 };
|