@sodax/sdk 0.0.1-rc.31 → 0.0.1-rc.33
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/README.md +1 -0
- package/dist/index.cjs +1363 -263
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +862 -27
- package/dist/index.d.ts +862 -27
- package/dist/index.mjs +1350 -265
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getAbiItem, encodeAbiParameters, parseAbiParameters, fromHex, createPublicClient, http, toHex, erc20Abi as erc20Abi$1, encodeFunctionData, decodeAbiParameters, encodePacked, parseEventLogs, keccak256, isAddress } from 'viem';
|
|
2
2
|
import { nibiru, polygon, bsc, optimism, base, arbitrum, avalanche, sonic } from 'viem/chains';
|
|
3
|
-
import { SPOKE_CHAIN_IDS, ICON_MAINNET_CHAIN_ID, SUI_MAINNET_CHAIN_ID, STELLAR_MAINNET_CHAIN_ID, INJECTIVE_MAINNET_CHAIN_ID, POLYGON_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, OPTIMISM_MAINNET_CHAIN_ID, BASE_MAINNET_CHAIN_ID, ARBITRUM_MAINNET_CHAIN_ID, NIBIRU_MAINNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, SOLANA_MAINNET_CHAIN_ID
|
|
3
|
+
import { SONIC_MAINNET_CHAIN_ID, SPOKE_CHAIN_IDS, ICON_MAINNET_CHAIN_ID, SUI_MAINNET_CHAIN_ID, STELLAR_MAINNET_CHAIN_ID, INJECTIVE_MAINNET_CHAIN_ID, POLYGON_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, OPTIMISM_MAINNET_CHAIN_ID, BASE_MAINNET_CHAIN_ID, ARBITRUM_MAINNET_CHAIN_ID, NIBIRU_MAINNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, SOLANA_MAINNET_CHAIN_ID } from '@sodax/types';
|
|
4
4
|
export * from '@sodax/types';
|
|
5
|
-
import { ChainGrpcWasmApi, TxGrpcApi, toBase64 } from '@injectivelabs/sdk-ts';
|
|
5
|
+
import { ChainGrpcWasmApi, TxGrpcApi, toBase64, fromBase64 } from '@injectivelabs/sdk-ts';
|
|
6
6
|
import { getNetworkEndpoints, Network } from '@injectivelabs/networks';
|
|
7
7
|
import * as IconSdkRaw from 'icon-sdk-js';
|
|
8
8
|
import { SorobanRpc, Horizon, Contract, TransactionBuilder, BASE_FEE, nativeToScVal, TimeoutInfinite, rpc, scValToBigInt, Operation, Address, Account, FeeBumpTransaction } from '@stellar/stellar-sdk';
|
|
@@ -15,7 +15,7 @@ import * as rlp from 'rlp';
|
|
|
15
15
|
import { TOKEN_PROGRAM_ID } from '@solana/spl-token';
|
|
16
16
|
import * as anchor from '@coral-xyz/anchor';
|
|
17
17
|
import BN from 'bn.js';
|
|
18
|
-
import
|
|
18
|
+
import invariant12 from 'tiny-invariant';
|
|
19
19
|
import BigNumber4, { BigNumber } from 'bignumber.js';
|
|
20
20
|
|
|
21
21
|
// src/abis/asset-manager.abi.ts
|
|
@@ -6105,7 +6105,7 @@ async function waitForTransactionReceipt(hash, provider) {
|
|
|
6105
6105
|
return provider.waitForTransactionReceipt(hash);
|
|
6106
6106
|
}
|
|
6107
6107
|
var DEFAULT_MAX_RETRY = 3;
|
|
6108
|
-
var DEFAULT_RELAY_TX_TIMEOUT =
|
|
6108
|
+
var DEFAULT_RELAY_TX_TIMEOUT = 12e4;
|
|
6109
6109
|
var DEFAULT_RETRY_DELAY_MS = 2e3;
|
|
6110
6110
|
var ICON_TX_RESULT_WAIT_MAX_RETRY = 10;
|
|
6111
6111
|
var MAX_UINT256 = (1n << 256n) - 1n;
|
|
@@ -6113,6 +6113,12 @@ var FEE_PERCENTAGE_SCALE = 10000n;
|
|
|
6113
6113
|
var STELLAR_PRIORITY_FEE = "10000";
|
|
6114
6114
|
var STELLAR_DEFAULT_TX_TIMEOUT_SECONDS = 100;
|
|
6115
6115
|
var DEFAULT_DEADLINE_OFFSET = 300n;
|
|
6116
|
+
var DEFAULT_BACKEND_API_ENDPOINT = "https://apiv1.coolify.iconblockchain.xyz";
|
|
6117
|
+
var DEFAULT_BACKEND_API_TIMEOUT = 3e4;
|
|
6118
|
+
var DEFAULT_BACKEND_API_HEADERS = {
|
|
6119
|
+
"Content-Type": "application/json",
|
|
6120
|
+
Accept: "application/json"
|
|
6121
|
+
};
|
|
6116
6122
|
var VAULT_TOKEN_DECIMALS = 18;
|
|
6117
6123
|
var INTENT_RELAY_CHAIN_IDS = {
|
|
6118
6124
|
AVAX: 6n,
|
|
@@ -6187,6 +6193,155 @@ function getEvmViemChain(id) {
|
|
|
6187
6193
|
throw new Error(`Unsupported EVM chain ID: ${id}`);
|
|
6188
6194
|
}
|
|
6189
6195
|
}
|
|
6196
|
+
var HubVaultSymbols = [
|
|
6197
|
+
"sodaAVAX",
|
|
6198
|
+
"sodaBNB",
|
|
6199
|
+
"sodaETH",
|
|
6200
|
+
"sodaBTC",
|
|
6201
|
+
"sodaSUI",
|
|
6202
|
+
"sodaINJ",
|
|
6203
|
+
"sodaXLM",
|
|
6204
|
+
"sodaSOL",
|
|
6205
|
+
"sodaSODA",
|
|
6206
|
+
"sodaUSDT",
|
|
6207
|
+
"sodaUSDC",
|
|
6208
|
+
"bnUSD",
|
|
6209
|
+
"sodaPOL",
|
|
6210
|
+
"sodaNIBI",
|
|
6211
|
+
"sodaS",
|
|
6212
|
+
"IbnUSD"
|
|
6213
|
+
];
|
|
6214
|
+
var SodaTokens = {
|
|
6215
|
+
sodaBNB: {
|
|
6216
|
+
symbol: "sodaBNB",
|
|
6217
|
+
name: "Soda BNB",
|
|
6218
|
+
decimals: 18,
|
|
6219
|
+
address: "0x40Cd41b35DB9e5109ae7E54b44De8625dB320E6b",
|
|
6220
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6221
|
+
},
|
|
6222
|
+
sodaAVAX: {
|
|
6223
|
+
symbol: "sodaAVAX",
|
|
6224
|
+
name: "Soda AVAX",
|
|
6225
|
+
decimals: 18,
|
|
6226
|
+
address: "0x14238D267557E9d799016ad635B53CD15935d290",
|
|
6227
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6228
|
+
},
|
|
6229
|
+
sodaETH: {
|
|
6230
|
+
symbol: "sodaETH",
|
|
6231
|
+
name: "Soda ETH",
|
|
6232
|
+
decimals: 18,
|
|
6233
|
+
address: "0x4effB5813271699683C25c734F4daBc45B363709",
|
|
6234
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6235
|
+
},
|
|
6236
|
+
sodaBTC: {
|
|
6237
|
+
symbol: "sodaBTC",
|
|
6238
|
+
name: "Soda BTC",
|
|
6239
|
+
decimals: 18,
|
|
6240
|
+
address: "0x7A1A5555842Ad2D0eD274d09b5c4406a95799D5d",
|
|
6241
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6242
|
+
},
|
|
6243
|
+
sodaSOL: {
|
|
6244
|
+
symbol: "sodaSOL",
|
|
6245
|
+
name: "Soda SOL",
|
|
6246
|
+
decimals: 18,
|
|
6247
|
+
address: "0xdEa692287E2cE8Cb08FA52917Be0F16b1DACDC87",
|
|
6248
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6249
|
+
},
|
|
6250
|
+
sodaXLM: {
|
|
6251
|
+
symbol: "sodaXLM",
|
|
6252
|
+
name: "Soda XLM",
|
|
6253
|
+
decimals: 18,
|
|
6254
|
+
address: "0x6BC8C37cba91F76E68C9e6d689A9C21E4d32079B",
|
|
6255
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6256
|
+
},
|
|
6257
|
+
sodaINJ: {
|
|
6258
|
+
symbol: "sodaINJ",
|
|
6259
|
+
name: "Soda INJ",
|
|
6260
|
+
decimals: 18,
|
|
6261
|
+
address: "0x1f22279C89B213944b7Ea41daCB0a868DdCDFd13",
|
|
6262
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6263
|
+
},
|
|
6264
|
+
sodaNIBI: {
|
|
6265
|
+
symbol: "sodaNIBI",
|
|
6266
|
+
name: "Soda NIBI",
|
|
6267
|
+
decimals: 18,
|
|
6268
|
+
address: "0xc6c85287a8b173A509C2F198bB719A8a5a2d0C68",
|
|
6269
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6270
|
+
},
|
|
6271
|
+
sodaSUI: {
|
|
6272
|
+
symbol: "sodaSUI",
|
|
6273
|
+
name: "Soda SUI",
|
|
6274
|
+
decimals: 18,
|
|
6275
|
+
address: "0xdc5B4b00F98347E95b9F94911213DAB4C687e1e3",
|
|
6276
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6277
|
+
},
|
|
6278
|
+
bnUSD: {
|
|
6279
|
+
symbol: "bnUSD",
|
|
6280
|
+
name: "Balanced Dollar",
|
|
6281
|
+
decimals: 18,
|
|
6282
|
+
address: "0xE801CA34E19aBCbFeA12025378D19c4FBE250131",
|
|
6283
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6284
|
+
},
|
|
6285
|
+
sodaUSDC: {
|
|
6286
|
+
symbol: "sodaUSDC",
|
|
6287
|
+
name: "Soda USDC",
|
|
6288
|
+
decimals: 18,
|
|
6289
|
+
address: "0xAbbb91c0617090F0028BDC27597Cd0D038F3A833",
|
|
6290
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6291
|
+
},
|
|
6292
|
+
sodaUSDT: {
|
|
6293
|
+
symbol: "sodaUSDT",
|
|
6294
|
+
name: "Soda USDT",
|
|
6295
|
+
decimals: 18,
|
|
6296
|
+
address: "0xbDf1F453FCB61424011BBDDCB96cFDB30f3Fe876",
|
|
6297
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6298
|
+
},
|
|
6299
|
+
IbnUSD: {
|
|
6300
|
+
symbol: "IbnUSD",
|
|
6301
|
+
name: "ICON bnUSD (Migration)",
|
|
6302
|
+
decimals: 18,
|
|
6303
|
+
address: "0x9D4b663Eb075d2a1C7B8eaEFB9eCCC0510388B51",
|
|
6304
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6305
|
+
},
|
|
6306
|
+
sodaS: {
|
|
6307
|
+
symbol: "sodaS",
|
|
6308
|
+
name: "Soda S",
|
|
6309
|
+
decimals: 18,
|
|
6310
|
+
address: "0x62ecc3Eeb80a162c57624B3fF80313FE69f5203e",
|
|
6311
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6312
|
+
},
|
|
6313
|
+
sodaPOL: {
|
|
6314
|
+
symbol: "sodaPOL",
|
|
6315
|
+
name: "Soda POL",
|
|
6316
|
+
decimals: 18,
|
|
6317
|
+
address: "0x208ED38f4783328aA9eBFeC360D32e7520A9B779",
|
|
6318
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6319
|
+
},
|
|
6320
|
+
sodaSODA: {
|
|
6321
|
+
symbol: "sodaSODA",
|
|
6322
|
+
name: "Soda SODA",
|
|
6323
|
+
decimals: 18,
|
|
6324
|
+
address: "0x21685E341DE7844135329914Be6Bd8D16982d834",
|
|
6325
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6326
|
+
}
|
|
6327
|
+
};
|
|
6328
|
+
var SodaTokensAsHubAssets = Object.values(SodaTokens).reduce(
|
|
6329
|
+
(acc, token) => {
|
|
6330
|
+
acc[token.address] = {
|
|
6331
|
+
asset: token.address,
|
|
6332
|
+
decimal: token.decimals,
|
|
6333
|
+
symbol: token.symbol,
|
|
6334
|
+
name: token.name,
|
|
6335
|
+
vault: token.address
|
|
6336
|
+
};
|
|
6337
|
+
return acc;
|
|
6338
|
+
},
|
|
6339
|
+
{}
|
|
6340
|
+
);
|
|
6341
|
+
var SodaVaultTokensSet = new Set(Object.values(SodaTokens).map((token) => token.address.toLowerCase()));
|
|
6342
|
+
var isSodaVaultToken = (address) => {
|
|
6343
|
+
return SodaVaultTokensSet.has(address.toLowerCase());
|
|
6344
|
+
};
|
|
6190
6345
|
var hubChainConfig = {
|
|
6191
6346
|
[SONIC_MAINNET_CHAIN_ID]: {
|
|
6192
6347
|
chain: {
|
|
@@ -6201,6 +6356,7 @@ var hubChainConfig = {
|
|
|
6201
6356
|
icxMigration: "0x8294DE9fc60F5ABCc19245E5857071d7C42B9875",
|
|
6202
6357
|
balnSwap: "0x610a90B61b89a98b954d5750E94834Aa45d08d10",
|
|
6203
6358
|
sodaToken: "0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963"
|
|
6359
|
+
// SODA token on Sonic
|
|
6204
6360
|
},
|
|
6205
6361
|
nativeToken: "0x0000000000000000000000000000000000000000",
|
|
6206
6362
|
wrappedNativeToken: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38",
|
|
@@ -6226,44 +6382,45 @@ var spokeChainConfig = {
|
|
|
6226
6382
|
symbol: "S",
|
|
6227
6383
|
name: "Sonic",
|
|
6228
6384
|
decimals: 18,
|
|
6229
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6230
|
-
|
|
6231
|
-
bnUSD: {
|
|
6232
|
-
symbol: "bnUSD",
|
|
6233
|
-
name: "bnUSD",
|
|
6234
|
-
decimals: 18,
|
|
6235
|
-
address: "0xE801CA34E19aBCbFeA12025378D19c4FBE250131"
|
|
6385
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6386
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6236
6387
|
},
|
|
6237
6388
|
WETH: {
|
|
6238
6389
|
symbol: "WETH",
|
|
6239
6390
|
name: "Wrapped Ether",
|
|
6240
6391
|
decimals: 18,
|
|
6241
|
-
address: "0x50c42dEAcD8Fc9773493ED674b675bE577f2634b"
|
|
6392
|
+
address: "0x50c42dEAcD8Fc9773493ED674b675bE577f2634b",
|
|
6393
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6242
6394
|
},
|
|
6243
6395
|
USDC: {
|
|
6244
6396
|
symbol: "USDC",
|
|
6245
6397
|
name: "USD Coin",
|
|
6246
6398
|
decimals: 6,
|
|
6247
|
-
address: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894"
|
|
6399
|
+
address: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894",
|
|
6400
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6248
6401
|
},
|
|
6249
6402
|
USDT: {
|
|
6250
6403
|
symbol: "USDT",
|
|
6251
6404
|
name: "Tether USD",
|
|
6252
6405
|
decimals: 6,
|
|
6253
|
-
address: "0x6047828dc181963ba44974801FF68e538dA5eaF9"
|
|
6406
|
+
address: "0x6047828dc181963ba44974801FF68e538dA5eaF9",
|
|
6407
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6254
6408
|
},
|
|
6255
6409
|
wS: {
|
|
6256
6410
|
symbol: "wS",
|
|
6257
6411
|
name: "Wrapped Sonic",
|
|
6258
6412
|
decimals: 18,
|
|
6259
|
-
address: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38"
|
|
6413
|
+
address: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38",
|
|
6414
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6260
6415
|
},
|
|
6261
6416
|
SODA: {
|
|
6262
6417
|
symbol: "SODA",
|
|
6263
6418
|
name: "SODAX",
|
|
6264
6419
|
decimals: 18,
|
|
6265
|
-
address: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963"
|
|
6266
|
-
|
|
6420
|
+
address: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963",
|
|
6421
|
+
xChainId: SONIC_MAINNET_CHAIN_ID
|
|
6422
|
+
},
|
|
6423
|
+
...SodaTokens
|
|
6267
6424
|
}
|
|
6268
6425
|
},
|
|
6269
6426
|
[SOLANA_MAINNET_CHAIN_ID]: {
|
|
@@ -6282,19 +6439,29 @@ var spokeChainConfig = {
|
|
|
6282
6439
|
symbol: "SOL",
|
|
6283
6440
|
name: "Solana",
|
|
6284
6441
|
decimals: 9,
|
|
6285
|
-
address: "11111111111111111111111111111111"
|
|
6442
|
+
address: "11111111111111111111111111111111",
|
|
6443
|
+
xChainId: SOLANA_MAINNET_CHAIN_ID
|
|
6286
6444
|
},
|
|
6287
6445
|
bnUSD: {
|
|
6288
6446
|
symbol: "bnUSD",
|
|
6289
6447
|
name: "bnUSD",
|
|
6290
6448
|
decimals: 9,
|
|
6291
|
-
address: "3rSPCLNEF7Quw4wX8S1NyKivELoyij8eYA2gJwBgt4V5"
|
|
6449
|
+
address: "3rSPCLNEF7Quw4wX8S1NyKivELoyij8eYA2gJwBgt4V5",
|
|
6450
|
+
xChainId: SOLANA_MAINNET_CHAIN_ID
|
|
6292
6451
|
},
|
|
6293
6452
|
USDC: {
|
|
6294
6453
|
symbol: "USDC",
|
|
6295
6454
|
name: "USD Coin",
|
|
6296
6455
|
decimals: 6,
|
|
6297
|
-
address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
|
|
6456
|
+
address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
|
|
6457
|
+
xChainId: SOLANA_MAINNET_CHAIN_ID
|
|
6458
|
+
},
|
|
6459
|
+
SODA: {
|
|
6460
|
+
symbol: "SODA",
|
|
6461
|
+
name: "SODAX",
|
|
6462
|
+
decimals: 9,
|
|
6463
|
+
address: "8Bj8gSbga8My8qRkT1RrvgxFBExiGFgdRNHFaR9o2T3Q",
|
|
6464
|
+
xChainId: SOLANA_MAINNET_CHAIN_ID
|
|
6298
6465
|
}
|
|
6299
6466
|
},
|
|
6300
6467
|
gasPrice: "500000",
|
|
@@ -6318,25 +6485,36 @@ var spokeChainConfig = {
|
|
|
6318
6485
|
symbol: "AVAX",
|
|
6319
6486
|
name: "Avalanche",
|
|
6320
6487
|
decimals: 18,
|
|
6321
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6488
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6489
|
+
xChainId: AVALANCHE_MAINNET_CHAIN_ID
|
|
6322
6490
|
},
|
|
6323
6491
|
bnUSD: {
|
|
6324
6492
|
symbol: "bnUSD",
|
|
6325
6493
|
name: "bnUSD",
|
|
6326
6494
|
decimals: 18,
|
|
6327
|
-
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F"
|
|
6495
|
+
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F",
|
|
6496
|
+
xChainId: AVALANCHE_MAINNET_CHAIN_ID
|
|
6328
6497
|
},
|
|
6329
6498
|
USDT: {
|
|
6330
6499
|
symbol: "USDT",
|
|
6331
6500
|
name: "Tether USD",
|
|
6332
6501
|
decimals: 6,
|
|
6333
|
-
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"
|
|
6502
|
+
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
|
|
6503
|
+
xChainId: AVALANCHE_MAINNET_CHAIN_ID
|
|
6334
6504
|
},
|
|
6335
6505
|
USDC: {
|
|
6336
6506
|
symbol: "USDC",
|
|
6337
6507
|
name: "USD Coin",
|
|
6338
6508
|
decimals: 6,
|
|
6339
|
-
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
|
|
6509
|
+
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
|
|
6510
|
+
xChainId: AVALANCHE_MAINNET_CHAIN_ID
|
|
6511
|
+
},
|
|
6512
|
+
SODA: {
|
|
6513
|
+
symbol: "SODA",
|
|
6514
|
+
name: "SODAX",
|
|
6515
|
+
decimals: 18,
|
|
6516
|
+
address: "0x390ceed555905ec225Da330A188EA04e85570f00",
|
|
6517
|
+
xChainId: AVALANCHE_MAINNET_CHAIN_ID
|
|
6340
6518
|
}
|
|
6341
6519
|
}
|
|
6342
6520
|
},
|
|
@@ -6357,13 +6535,22 @@ var spokeChainConfig = {
|
|
|
6357
6535
|
symbol: "NIBI",
|
|
6358
6536
|
name: "Nibiru",
|
|
6359
6537
|
decimals: 6,
|
|
6360
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6538
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6539
|
+
xChainId: NIBIRU_MAINNET_CHAIN_ID
|
|
6361
6540
|
},
|
|
6362
6541
|
bnUSD: {
|
|
6363
6542
|
symbol: "bnUSD",
|
|
6364
6543
|
name: "bnUSD",
|
|
6365
6544
|
decimals: 18,
|
|
6366
|
-
address: "0x043fb7e23350Dd5b77dE5E228B528763DEcb9131"
|
|
6545
|
+
address: "0x043fb7e23350Dd5b77dE5E228B528763DEcb9131",
|
|
6546
|
+
xChainId: NIBIRU_MAINNET_CHAIN_ID
|
|
6547
|
+
},
|
|
6548
|
+
SODA: {
|
|
6549
|
+
symbol: "SODA",
|
|
6550
|
+
name: "SODAX",
|
|
6551
|
+
decimals: 18,
|
|
6552
|
+
address: "0x5bda87f18109CA85fa7ADDf1D48B97734e9dc6F5",
|
|
6553
|
+
xChainId: NIBIRU_MAINNET_CHAIN_ID
|
|
6367
6554
|
}
|
|
6368
6555
|
}
|
|
6369
6556
|
},
|
|
@@ -6384,49 +6571,64 @@ var spokeChainConfig = {
|
|
|
6384
6571
|
symbol: "ETH",
|
|
6385
6572
|
name: "Ethereum",
|
|
6386
6573
|
decimals: 18,
|
|
6387
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6574
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6575
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6388
6576
|
},
|
|
6389
6577
|
bnUSD: {
|
|
6390
6578
|
symbol: "bnUSD",
|
|
6391
6579
|
name: "bnUSD",
|
|
6392
6580
|
decimals: 18,
|
|
6393
|
-
address: "0xA256dd181C3f6E5eC68C6869f5D50a712d47212e"
|
|
6581
|
+
address: "0xA256dd181C3f6E5eC68C6869f5D50a712d47212e",
|
|
6582
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6394
6583
|
},
|
|
6395
6584
|
wstETH: {
|
|
6396
6585
|
symbol: "wstETH",
|
|
6397
6586
|
name: "Wrapped stETH",
|
|
6398
6587
|
decimals: 18,
|
|
6399
|
-
address: "0x5979D7b546E38E414F7E9822514be443A4800529"
|
|
6588
|
+
address: "0x5979D7b546E38E414F7E9822514be443A4800529",
|
|
6589
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6400
6590
|
},
|
|
6401
6591
|
weETH: {
|
|
6402
6592
|
symbol: "weETH",
|
|
6403
6593
|
name: "Wrapped eETH",
|
|
6404
6594
|
decimals: 18,
|
|
6405
|
-
address: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe"
|
|
6595
|
+
address: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe",
|
|
6596
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6406
6597
|
},
|
|
6407
6598
|
tBTC: {
|
|
6408
6599
|
symbol: "tBTC",
|
|
6409
6600
|
name: "Arbitrum tBTC v2",
|
|
6410
6601
|
decimals: 18,
|
|
6411
|
-
address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40"
|
|
6602
|
+
address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40",
|
|
6603
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6412
6604
|
},
|
|
6413
6605
|
WBTC: {
|
|
6414
6606
|
symbol: "WBTC",
|
|
6415
6607
|
name: "Wrapped BTC",
|
|
6416
6608
|
decimals: 8,
|
|
6417
|
-
address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"
|
|
6609
|
+
address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
|
|
6610
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6418
6611
|
},
|
|
6419
6612
|
USDC: {
|
|
6420
6613
|
symbol: "USDC",
|
|
6421
6614
|
name: "USD Coin (USDC)",
|
|
6422
6615
|
decimals: 6,
|
|
6423
|
-
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
|
|
6616
|
+
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
6617
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6424
6618
|
},
|
|
6425
6619
|
USDT: {
|
|
6426
6620
|
symbol: "USDT",
|
|
6427
6621
|
name: "TetherToken",
|
|
6428
6622
|
decimals: 6,
|
|
6429
|
-
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"
|
|
6623
|
+
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
|
|
6624
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6625
|
+
},
|
|
6626
|
+
SODA: {
|
|
6627
|
+
symbol: "SODA",
|
|
6628
|
+
name: "SODAX",
|
|
6629
|
+
decimals: 18,
|
|
6630
|
+
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F",
|
|
6631
|
+
xChainId: ARBITRUM_MAINNET_CHAIN_ID
|
|
6430
6632
|
}
|
|
6431
6633
|
}
|
|
6432
6634
|
},
|
|
@@ -6447,37 +6649,50 @@ var spokeChainConfig = {
|
|
|
6447
6649
|
symbol: "ETH",
|
|
6448
6650
|
name: "Ethereum",
|
|
6449
6651
|
decimals: 18,
|
|
6450
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6652
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6653
|
+
xChainId: BASE_MAINNET_CHAIN_ID
|
|
6451
6654
|
},
|
|
6452
6655
|
bnUSD: {
|
|
6453
6656
|
symbol: "bnUSD",
|
|
6454
6657
|
name: "bnUSD",
|
|
6455
6658
|
decimals: 18,
|
|
6456
|
-
address: "0xAcfab3F31C0a18559D78556BBf297EC29c6cf8aa"
|
|
6659
|
+
address: "0xAcfab3F31C0a18559D78556BBf297EC29c6cf8aa",
|
|
6660
|
+
xChainId: BASE_MAINNET_CHAIN_ID
|
|
6457
6661
|
},
|
|
6458
6662
|
weETH: {
|
|
6459
6663
|
symbol: "weETH",
|
|
6460
6664
|
name: "Wrapped eETH",
|
|
6461
6665
|
decimals: 18,
|
|
6462
|
-
address: "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a"
|
|
6666
|
+
address: "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a",
|
|
6667
|
+
xChainId: BASE_MAINNET_CHAIN_ID
|
|
6463
6668
|
},
|
|
6464
6669
|
USDC: {
|
|
6465
6670
|
symbol: "USDC",
|
|
6466
6671
|
name: "USD Coin",
|
|
6467
6672
|
decimals: 6,
|
|
6468
|
-
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
|
|
6673
|
+
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
6674
|
+
xChainId: BASE_MAINNET_CHAIN_ID
|
|
6469
6675
|
},
|
|
6470
6676
|
wstETH: {
|
|
6471
6677
|
symbol: "wstETH",
|
|
6472
6678
|
name: "Wrapped stETH",
|
|
6473
6679
|
decimals: 18,
|
|
6474
|
-
address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"
|
|
6680
|
+
address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452",
|
|
6681
|
+
xChainId: BASE_MAINNET_CHAIN_ID
|
|
6475
6682
|
},
|
|
6476
6683
|
cbBTC: {
|
|
6477
6684
|
symbol: "cbBTC",
|
|
6478
6685
|
name: "Coinbase Wrapped BTC",
|
|
6479
6686
|
decimals: 8,
|
|
6480
|
-
address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"
|
|
6687
|
+
address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
|
|
6688
|
+
xChainId: BASE_MAINNET_CHAIN_ID
|
|
6689
|
+
},
|
|
6690
|
+
SODA: {
|
|
6691
|
+
symbol: "SODA",
|
|
6692
|
+
name: "SODAX",
|
|
6693
|
+
decimals: 18,
|
|
6694
|
+
address: "0xdc5B4b00F98347E95b9F94911213DAB4C687e1e3",
|
|
6695
|
+
xChainId: BASE_MAINNET_CHAIN_ID
|
|
6481
6696
|
}
|
|
6482
6697
|
}
|
|
6483
6698
|
},
|
|
@@ -6498,37 +6713,50 @@ var spokeChainConfig = {
|
|
|
6498
6713
|
symbol: "ETH",
|
|
6499
6714
|
name: "Ethereum",
|
|
6500
6715
|
decimals: 18,
|
|
6501
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6716
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6717
|
+
xChainId: OPTIMISM_MAINNET_CHAIN_ID
|
|
6502
6718
|
},
|
|
6503
6719
|
bnUSD: {
|
|
6504
6720
|
symbol: "bnUSD",
|
|
6505
6721
|
name: "bnUSD",
|
|
6506
6722
|
decimals: 18,
|
|
6507
|
-
address: "0xF4f7dC27c17470a26d0de9039Cf0EA5045F100E8"
|
|
6723
|
+
address: "0xF4f7dC27c17470a26d0de9039Cf0EA5045F100E8",
|
|
6724
|
+
xChainId: OPTIMISM_MAINNET_CHAIN_ID
|
|
6508
6725
|
},
|
|
6509
6726
|
USDC: {
|
|
6510
6727
|
symbol: "USDC",
|
|
6511
6728
|
name: "USD Coin",
|
|
6512
6729
|
decimals: 6,
|
|
6513
|
-
address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
|
|
6730
|
+
address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
6731
|
+
xChainId: OPTIMISM_MAINNET_CHAIN_ID
|
|
6514
6732
|
},
|
|
6515
6733
|
wstETH: {
|
|
6516
6734
|
symbol: "wstETH",
|
|
6517
6735
|
name: "Wrapped stETH",
|
|
6518
6736
|
decimals: 18,
|
|
6519
|
-
address: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"
|
|
6737
|
+
address: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb",
|
|
6738
|
+
xChainId: OPTIMISM_MAINNET_CHAIN_ID
|
|
6520
6739
|
},
|
|
6521
6740
|
weETH: {
|
|
6522
6741
|
symbol: "weETH",
|
|
6523
6742
|
name: "Wrapped eETH",
|
|
6524
6743
|
decimals: 18,
|
|
6525
|
-
address: "0x5A7fACB970D094B6C7FF1df0eA68D99E6e73CBFF"
|
|
6744
|
+
address: "0x5A7fACB970D094B6C7FF1df0eA68D99E6e73CBFF",
|
|
6745
|
+
xChainId: OPTIMISM_MAINNET_CHAIN_ID
|
|
6526
6746
|
},
|
|
6527
6747
|
USDT: {
|
|
6528
6748
|
symbol: "USDT",
|
|
6529
6749
|
name: "Tether USD",
|
|
6530
6750
|
decimals: 6,
|
|
6531
|
-
address: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"
|
|
6751
|
+
address: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58",
|
|
6752
|
+
xChainId: OPTIMISM_MAINNET_CHAIN_ID
|
|
6753
|
+
},
|
|
6754
|
+
SODA: {
|
|
6755
|
+
symbol: "SODA",
|
|
6756
|
+
name: "SODAX",
|
|
6757
|
+
decimals: 18,
|
|
6758
|
+
address: "0x1f22279C89B213944b7Ea41daCB0a868DdCDFd13",
|
|
6759
|
+
xChainId: OPTIMISM_MAINNET_CHAIN_ID
|
|
6532
6760
|
}
|
|
6533
6761
|
}
|
|
6534
6762
|
},
|
|
@@ -6549,31 +6777,43 @@ var spokeChainConfig = {
|
|
|
6549
6777
|
symbol: "BNB",
|
|
6550
6778
|
name: "BNB",
|
|
6551
6779
|
decimals: 18,
|
|
6552
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6780
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6781
|
+
xChainId: BSC_MAINNET_CHAIN_ID
|
|
6553
6782
|
},
|
|
6554
6783
|
bnUSD: {
|
|
6555
6784
|
symbol: "bnUSD",
|
|
6556
6785
|
name: "bnUSD",
|
|
6557
6786
|
decimals: 18,
|
|
6558
|
-
address: "0x8428FedC020737a5A2291F46cB1B80613eD71638"
|
|
6787
|
+
address: "0x8428FedC020737a5A2291F46cB1B80613eD71638",
|
|
6788
|
+
xChainId: BSC_MAINNET_CHAIN_ID
|
|
6559
6789
|
},
|
|
6560
6790
|
ETHB: {
|
|
6561
6791
|
symbol: "ETHB",
|
|
6562
6792
|
name: "Ethereum BSC",
|
|
6563
6793
|
decimals: 18,
|
|
6564
|
-
address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8"
|
|
6794
|
+
address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8",
|
|
6795
|
+
xChainId: BSC_MAINNET_CHAIN_ID
|
|
6565
6796
|
},
|
|
6566
6797
|
BTCB: {
|
|
6567
6798
|
symbol: "BTCB",
|
|
6568
6799
|
name: "Bitcoin BSC",
|
|
6569
6800
|
decimals: 18,
|
|
6570
|
-
address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c"
|
|
6801
|
+
address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c",
|
|
6802
|
+
xChainId: BSC_MAINNET_CHAIN_ID
|
|
6571
6803
|
},
|
|
6572
6804
|
USDC: {
|
|
6573
6805
|
symbol: "USDC",
|
|
6574
6806
|
name: "USD Coin",
|
|
6575
6807
|
decimals: 18,
|
|
6576
|
-
address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d"
|
|
6808
|
+
address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
|
|
6809
|
+
xChainId: BSC_MAINNET_CHAIN_ID
|
|
6810
|
+
},
|
|
6811
|
+
SODA: {
|
|
6812
|
+
symbol: "SODA",
|
|
6813
|
+
name: "SODAX",
|
|
6814
|
+
decimals: 18,
|
|
6815
|
+
address: "0xdc5B4b00F98347E95b9F94911213DAB4C687e1e3",
|
|
6816
|
+
xChainId: BSC_MAINNET_CHAIN_ID
|
|
6577
6817
|
}
|
|
6578
6818
|
}
|
|
6579
6819
|
},
|
|
@@ -6594,19 +6834,29 @@ var spokeChainConfig = {
|
|
|
6594
6834
|
symbol: "POL",
|
|
6595
6835
|
name: "Polygon",
|
|
6596
6836
|
decimals: 18,
|
|
6597
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6837
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6838
|
+
xChainId: POLYGON_MAINNET_CHAIN_ID
|
|
6598
6839
|
},
|
|
6599
6840
|
bnUSD: {
|
|
6600
6841
|
symbol: "bnUSD",
|
|
6601
6842
|
name: "bnUSD",
|
|
6602
6843
|
decimals: 18,
|
|
6603
|
-
address: "0x39E77f86C1B1f3fbAb362A82b49D2E86C09659B4"
|
|
6844
|
+
address: "0x39E77f86C1B1f3fbAb362A82b49D2E86C09659B4",
|
|
6845
|
+
xChainId: POLYGON_MAINNET_CHAIN_ID
|
|
6604
6846
|
},
|
|
6605
6847
|
USDC: {
|
|
6606
6848
|
symbol: "USDC",
|
|
6607
6849
|
name: "USD Coin",
|
|
6608
6850
|
decimals: 6,
|
|
6609
|
-
address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
|
|
6851
|
+
address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
|
|
6852
|
+
xChainId: POLYGON_MAINNET_CHAIN_ID
|
|
6853
|
+
},
|
|
6854
|
+
SODA: {
|
|
6855
|
+
symbol: "SODA",
|
|
6856
|
+
name: "SODAX",
|
|
6857
|
+
decimals: 18,
|
|
6858
|
+
address: "0xDDF645F33eDAD18fC23E01416eD0267A1bF59D45",
|
|
6859
|
+
xChainId: POLYGON_MAINNET_CHAIN_ID
|
|
6610
6860
|
}
|
|
6611
6861
|
}
|
|
6612
6862
|
},
|
|
@@ -6631,19 +6881,29 @@ var spokeChainConfig = {
|
|
|
6631
6881
|
symbol: "INJ",
|
|
6632
6882
|
name: "Injective",
|
|
6633
6883
|
decimals: 18,
|
|
6634
|
-
address: "inj"
|
|
6884
|
+
address: "inj",
|
|
6885
|
+
xChainId: INJECTIVE_MAINNET_CHAIN_ID
|
|
6635
6886
|
},
|
|
6636
6887
|
bnUSD: {
|
|
6637
6888
|
symbol: "bnUSD",
|
|
6638
6889
|
name: "bnUSD",
|
|
6639
6890
|
decimals: 18,
|
|
6640
|
-
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/bnUSD"
|
|
6891
|
+
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/bnUSD",
|
|
6892
|
+
xChainId: INJECTIVE_MAINNET_CHAIN_ID
|
|
6641
6893
|
},
|
|
6642
6894
|
USDC: {
|
|
6643
6895
|
symbol: "USDC",
|
|
6644
6896
|
name: "USD Coin",
|
|
6645
6897
|
decimals: 6,
|
|
6646
|
-
address: "ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E"
|
|
6898
|
+
address: "ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E",
|
|
6899
|
+
xChainId: INJECTIVE_MAINNET_CHAIN_ID
|
|
6900
|
+
},
|
|
6901
|
+
SODA: {
|
|
6902
|
+
symbol: "SODA",
|
|
6903
|
+
name: "SODAX",
|
|
6904
|
+
decimals: 18,
|
|
6905
|
+
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/soda",
|
|
6906
|
+
xChainId: INJECTIVE_MAINNET_CHAIN_ID
|
|
6647
6907
|
}
|
|
6648
6908
|
},
|
|
6649
6909
|
gasPrice: "500000000inj",
|
|
@@ -6666,25 +6926,36 @@ var spokeChainConfig = {
|
|
|
6666
6926
|
symbol: "bnUSD",
|
|
6667
6927
|
name: "bnUSD",
|
|
6668
6928
|
decimals: 7,
|
|
6669
|
-
address: "CD6YBFFWMU2UJHX2NGRJ7RN76IJVTCC7MRA46DUBXNB7E6W7H7JRJ2CX"
|
|
6929
|
+
address: "CD6YBFFWMU2UJHX2NGRJ7RN76IJVTCC7MRA46DUBXNB7E6W7H7JRJ2CX",
|
|
6930
|
+
xChainId: STELLAR_MAINNET_CHAIN_ID
|
|
6670
6931
|
},
|
|
6671
6932
|
XLM: {
|
|
6672
6933
|
symbol: "XLM",
|
|
6673
6934
|
name: "Stellar Lumens",
|
|
6674
6935
|
decimals: 7,
|
|
6675
|
-
address: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA"
|
|
6936
|
+
address: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
|
|
6937
|
+
xChainId: STELLAR_MAINNET_CHAIN_ID
|
|
6676
6938
|
},
|
|
6677
6939
|
USDC: {
|
|
6678
6940
|
symbol: "USDC",
|
|
6679
6941
|
name: "USD Coin",
|
|
6680
6942
|
decimals: 7,
|
|
6681
|
-
address: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"
|
|
6943
|
+
address: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
|
|
6944
|
+
xChainId: STELLAR_MAINNET_CHAIN_ID
|
|
6682
6945
|
},
|
|
6683
6946
|
legacybnUSD: {
|
|
6684
|
-
symbol: "bnUSD",
|
|
6947
|
+
symbol: "bnUSD (legacy)",
|
|
6685
6948
|
name: "legacybnUSD",
|
|
6686
6949
|
decimals: 18,
|
|
6687
|
-
address: "CCT4ZYIYZ3TUO2AWQFEOFGBZ6HQP3GW5TA37CK7CRZVFRDXYTHTYX7KP"
|
|
6950
|
+
address: "CCT4ZYIYZ3TUO2AWQFEOFGBZ6HQP3GW5TA37CK7CRZVFRDXYTHTYX7KP",
|
|
6951
|
+
xChainId: STELLAR_MAINNET_CHAIN_ID
|
|
6952
|
+
},
|
|
6953
|
+
SODA: {
|
|
6954
|
+
symbol: "SODA",
|
|
6955
|
+
name: "SODAX",
|
|
6956
|
+
decimals: 7,
|
|
6957
|
+
address: "CAH5LKJC2ZB4RVUVEVL2QWJWNJLHQE2UF767ILLQ5EQ4O3OURR2XIUGM",
|
|
6958
|
+
xChainId: STELLAR_MAINNET_CHAIN_ID
|
|
6688
6959
|
}
|
|
6689
6960
|
},
|
|
6690
6961
|
nativeToken: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
|
|
@@ -6711,61 +6982,78 @@ var spokeChainConfig = {
|
|
|
6711
6982
|
symbol: "SUI",
|
|
6712
6983
|
name: "SUI",
|
|
6713
6984
|
decimals: 9,
|
|
6714
|
-
address: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"
|
|
6985
|
+
address: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
|
|
6986
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6715
6987
|
},
|
|
6716
6988
|
bnUSD: {
|
|
6717
6989
|
symbol: "bnUSD",
|
|
6718
6990
|
name: "bnUSD",
|
|
6719
6991
|
decimals: 9,
|
|
6720
|
-
address: "0xff4de2b2b57dd7611d2812d231a467d007b702a101fd5c7ad3b278257cddb507::bnusd::BNUSD"
|
|
6992
|
+
address: "0xff4de2b2b57dd7611d2812d231a467d007b702a101fd5c7ad3b278257cddb507::bnusd::BNUSD",
|
|
6993
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6721
6994
|
},
|
|
6722
6995
|
USDC: {
|
|
6723
6996
|
symbol: "USDC",
|
|
6724
6997
|
name: "USD Coin",
|
|
6725
6998
|
decimals: 6,
|
|
6726
|
-
address: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"
|
|
6999
|
+
address: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
|
|
7000
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6727
7001
|
},
|
|
6728
7002
|
legacybnUSD: {
|
|
6729
|
-
symbol: "bnUSD",
|
|
7003
|
+
symbol: "bnUSD (legacy)",
|
|
6730
7004
|
name: "legacybnUSD",
|
|
6731
7005
|
decimals: 9,
|
|
6732
|
-
address: "0x03917a812fe4a6d6bc779c5ab53f8a80ba741f8af04121193fc44e0f662e2ceb::balanced_dollar::BALANCED_DOLLAR"
|
|
7006
|
+
address: "0x03917a812fe4a6d6bc779c5ab53f8a80ba741f8af04121193fc44e0f662e2ceb::balanced_dollar::BALANCED_DOLLAR",
|
|
7007
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6733
7008
|
},
|
|
6734
7009
|
afSUI: {
|
|
6735
7010
|
symbol: "afSUI",
|
|
6736
7011
|
name: "Aftermath Staked Sui",
|
|
6737
7012
|
decimals: 9,
|
|
6738
|
-
address: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI"
|
|
7013
|
+
address: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI",
|
|
7014
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6739
7015
|
},
|
|
6740
7016
|
mSUI: {
|
|
6741
7017
|
symbol: "mSUI",
|
|
6742
7018
|
name: "Mirai Staked SUI",
|
|
6743
7019
|
decimals: 9,
|
|
6744
|
-
address: "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI"
|
|
7020
|
+
address: "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI",
|
|
7021
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6745
7022
|
},
|
|
6746
7023
|
haSUI: {
|
|
6747
7024
|
symbol: "haSUI",
|
|
6748
7025
|
name: "haSUI",
|
|
6749
7026
|
decimals: 9,
|
|
6750
|
-
address: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"
|
|
7027
|
+
address: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",
|
|
7028
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6751
7029
|
},
|
|
6752
7030
|
vSUI: {
|
|
6753
7031
|
symbol: "vSUI",
|
|
6754
7032
|
name: "Volo Staked SUI",
|
|
6755
7033
|
decimals: 9,
|
|
6756
|
-
address: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT"
|
|
7034
|
+
address: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",
|
|
7035
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6757
7036
|
},
|
|
6758
7037
|
yapSUI: {
|
|
6759
7038
|
symbol: "yapSUI",
|
|
6760
7039
|
name: "Yap Staked SUI",
|
|
6761
7040
|
decimals: 9,
|
|
6762
|
-
address: "0x83f1bb8c91ecd1fd313344058b0eed94d63c54e41d8d1ae5bff1353443517d65::yap_sui::YAP_SUI"
|
|
7041
|
+
address: "0x83f1bb8c91ecd1fd313344058b0eed94d63c54e41d8d1ae5bff1353443517d65::yap_sui::YAP_SUI",
|
|
7042
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6763
7043
|
},
|
|
6764
7044
|
trevinSUI: {
|
|
6765
7045
|
symbol: "trevinSUI",
|
|
6766
7046
|
name: "Trevin Staked SUI",
|
|
6767
7047
|
decimals: 9,
|
|
6768
|
-
address: "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI"
|
|
7048
|
+
address: "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI",
|
|
7049
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
7050
|
+
},
|
|
7051
|
+
SODA: {
|
|
7052
|
+
symbol: "SODA",
|
|
7053
|
+
name: "SODAX",
|
|
7054
|
+
decimals: 9,
|
|
7055
|
+
address: "0x0a0393721732617a2a771535e83c0a46f04aeef7d03239bbbb1249bc0981b952::soda::SODA",
|
|
7056
|
+
xChainId: SUI_MAINNET_CHAIN_ID
|
|
6769
7057
|
}
|
|
6770
7058
|
},
|
|
6771
7059
|
nativeToken: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
|
|
@@ -6786,7 +7074,7 @@ var spokeChainConfig = {
|
|
|
6786
7074
|
},
|
|
6787
7075
|
chain: {
|
|
6788
7076
|
id: ICON_MAINNET_CHAIN_ID,
|
|
6789
|
-
name: "ICON
|
|
7077
|
+
name: "ICON",
|
|
6790
7078
|
type: "ICON"
|
|
6791
7079
|
},
|
|
6792
7080
|
supportedTokens: {
|
|
@@ -6794,33 +7082,38 @@ var spokeChainConfig = {
|
|
|
6794
7082
|
symbol: "ICX",
|
|
6795
7083
|
name: "ICON",
|
|
6796
7084
|
decimals: 18,
|
|
6797
|
-
address: "cx0000000000000000000000000000000000000000"
|
|
7085
|
+
address: "cx0000000000000000000000000000000000000000",
|
|
7086
|
+
xChainId: ICON_MAINNET_CHAIN_ID
|
|
6798
7087
|
},
|
|
6799
7088
|
wICX: {
|
|
6800
7089
|
symbol: "wICX",
|
|
6801
7090
|
name: "Wrapped ICX",
|
|
6802
7091
|
decimals: 18,
|
|
6803
|
-
address: "cx3975b43d260fb8ec802cef6e60c2f4d07486f11d"
|
|
7092
|
+
address: "cx3975b43d260fb8ec802cef6e60c2f4d07486f11d",
|
|
7093
|
+
xChainId: ICON_MAINNET_CHAIN_ID
|
|
6804
7094
|
},
|
|
6805
7095
|
bnUSD: {
|
|
6806
7096
|
// same as legacy
|
|
6807
|
-
symbol: "bnUSD",
|
|
7097
|
+
symbol: "bnUSD (legacy)",
|
|
6808
7098
|
name: "bnUSD",
|
|
6809
7099
|
decimals: 18,
|
|
6810
|
-
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb"
|
|
7100
|
+
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb",
|
|
7101
|
+
xChainId: ICON_MAINNET_CHAIN_ID
|
|
6811
7102
|
},
|
|
6812
7103
|
legacybnUSD: {
|
|
6813
7104
|
// duplicate of bnUSD purely for consistency with other legacy tokens chains (sui, stellar)
|
|
6814
|
-
symbol: "bnUSD",
|
|
7105
|
+
symbol: "bnUSD (legacy)",
|
|
6815
7106
|
name: "bnUSD",
|
|
6816
7107
|
decimals: 18,
|
|
6817
|
-
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb"
|
|
7108
|
+
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb",
|
|
7109
|
+
xChainId: ICON_MAINNET_CHAIN_ID
|
|
6818
7110
|
},
|
|
6819
7111
|
BALN: {
|
|
6820
7112
|
symbol: "BALN",
|
|
6821
7113
|
name: "BALN",
|
|
6822
7114
|
decimals: 18,
|
|
6823
|
-
address: "cxf61cd5a45dc9f91c15aa65831a30a90d59a09619"
|
|
7115
|
+
address: "cxf61cd5a45dc9f91c15aa65831a30a90d59a09619",
|
|
7116
|
+
xChainId: ICON_MAINNET_CHAIN_ID
|
|
6824
7117
|
}
|
|
6825
7118
|
},
|
|
6826
7119
|
nativeToken: "cx0000000000000000000000000000000000000000",
|
|
@@ -6828,26 +7121,8 @@ var spokeChainConfig = {
|
|
|
6828
7121
|
nid: "0x1"
|
|
6829
7122
|
}
|
|
6830
7123
|
};
|
|
6831
|
-
var HubVaultSymbols = [
|
|
6832
|
-
"sodaAVAX",
|
|
6833
|
-
"sodaBNB",
|
|
6834
|
-
"sodaETH",
|
|
6835
|
-
"sodaBTC",
|
|
6836
|
-
"sodaSUI",
|
|
6837
|
-
"sodaINJ",
|
|
6838
|
-
"sodaXLM",
|
|
6839
|
-
"sodaSOL",
|
|
6840
|
-
"sodaSODA",
|
|
6841
|
-
"sodaUSDT",
|
|
6842
|
-
"sodaUSDC",
|
|
6843
|
-
"bnUSD",
|
|
6844
|
-
"sodaPOL",
|
|
6845
|
-
"sodaNIBI",
|
|
6846
|
-
"sodaS",
|
|
6847
|
-
"IbnUSD"
|
|
6848
|
-
];
|
|
6849
7124
|
var hubVaults = {
|
|
6850
|
-
IbnUSD: {
|
|
7125
|
+
[SodaTokens.IbnUSD.symbol]: {
|
|
6851
7126
|
// ICON bnUSD (Migration) vault on Sonic contains legacy bnUSD tokens (stellar, sui, icon)
|
|
6852
7127
|
address: "0x9D4b663Eb075d2a1C7B8eaEFB9eCCC0510388B51",
|
|
6853
7128
|
reserves: [
|
|
@@ -6857,28 +7132,28 @@ var hubVaults = {
|
|
|
6857
7132
|
"0x1559B52d2e165da1505a542EA37C543c9137f52a"
|
|
6858
7133
|
]
|
|
6859
7134
|
},
|
|
6860
|
-
sodaS: {
|
|
7135
|
+
[SodaTokens.sodaS.symbol]: {
|
|
6861
7136
|
address: "0x62ecc3eeb80a162c57624b3ff80313fe69f5203e",
|
|
6862
7137
|
reserves: [
|
|
6863
7138
|
// hub asset addresses contained in the vault
|
|
6864
7139
|
"0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38"
|
|
6865
7140
|
]
|
|
6866
7141
|
},
|
|
6867
|
-
sodaNIBI: {
|
|
7142
|
+
[SodaTokens.sodaNIBI.symbol]: {
|
|
6868
7143
|
address: "0xc6c85287a8b173a509c2f198bb719a8a5a2d0c68",
|
|
6869
7144
|
reserves: [
|
|
6870
7145
|
// hub asset addresses contained in the vault
|
|
6871
7146
|
"0xe0064414c2c1a636a9424c7a17d86fbf7fd3f190"
|
|
6872
7147
|
]
|
|
6873
7148
|
},
|
|
6874
|
-
sodaPOL: {
|
|
7149
|
+
[SodaTokens.sodaPOL.symbol]: {
|
|
6875
7150
|
address: "0x208ed38f4783328aa9ebfec360d32e7520a9b779",
|
|
6876
7151
|
reserves: [
|
|
6877
7152
|
// hub asset addresses contained in the vault
|
|
6878
7153
|
"0x9ee17486571917837210824b0d4cadfe3b324d12"
|
|
6879
7154
|
]
|
|
6880
7155
|
},
|
|
6881
|
-
bnUSD: {
|
|
7156
|
+
[SodaTokens.bnUSD.symbol]: {
|
|
6882
7157
|
// new bnUSD vault on Sonic (also contains IbnUSD vault token as part of it)
|
|
6883
7158
|
address: "0xe801ca34e19abcbfea12025378d19c4fbe250131",
|
|
6884
7159
|
reserves: [
|
|
@@ -6897,19 +7172,33 @@ var hubVaults = {
|
|
|
6897
7172
|
"0xdf23097b9aeb917bf8fb70e99b6c528fffa35364",
|
|
6898
7173
|
"0x11b93c162aabffd026539bb3b9f9ec22c8b7ef8a",
|
|
6899
7174
|
"0x69425ffb14704124a58d6f69d510f74a59d9a5bc",
|
|
6900
|
-
"0x9d4b663eb075d2a1c7b8eaefb9eccc0510388b51"
|
|
7175
|
+
"0x9d4b663eb075d2a1c7b8eaefb9eccc0510388b51",
|
|
7176
|
+
"0xD1d14BF3324C901855A1f7d0d5CA4c8458D2a780"
|
|
6901
7177
|
]
|
|
6902
7178
|
},
|
|
6903
|
-
sodaSODA: {
|
|
7179
|
+
[SodaTokens.sodaSODA.symbol]: {
|
|
6904
7180
|
// SODA SODA vault
|
|
6905
7181
|
address: "0x21685e341de7844135329914be6bd8d16982d834",
|
|
6906
7182
|
reserves: [
|
|
6907
7183
|
// hub asset addresses contained in the vault
|
|
6908
|
-
"0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963"
|
|
7184
|
+
"0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963",
|
|
6909
7185
|
// SODA SODA hub asset
|
|
7186
|
+
"0xf51d7082375cdca8C19C74e1A0c77dA482aFDa4e",
|
|
7187
|
+
"0x93a367E5B37a1B9E8D04ef25a6Af40d181a3DfFF",
|
|
7188
|
+
"0x17fF8Ad5EBe6CA8B15751067cD0c89f0E580CD17",
|
|
7189
|
+
"0x4d12c72A8633588097D10e57b559ed642588e4C6",
|
|
7190
|
+
"0x26cd76cB5622Dc8638670A16E0Da5a51394A8DB1",
|
|
7191
|
+
"0x0eD0d274dC77ef460DC96b9fBaFF3EDB074e0471",
|
|
7192
|
+
"0x8D78A620E009Ba751Eb40d77A5e9Db48A3F2016b",
|
|
7193
|
+
"0x4Cf5Ce9594AEDdc5D3efe9d4Cdf0b944b4e73A53",
|
|
7194
|
+
"0xD749B5FfFED7cEDaa3239abDd16D677179C29AEc",
|
|
7195
|
+
"0x07Db7b1a96ebE474B20F52fF487cEE415adee79e",
|
|
7196
|
+
"0x20Ce75CdcEe44B1308365447b91B9c26e2b71Ffd",
|
|
7197
|
+
"0x5Db9CEc919f40C50809D9490DC3BbA4F05b0a1D7",
|
|
7198
|
+
"0x655730024B673B3378CD6031B1Cd01eaE9afb138"
|
|
6910
7199
|
]
|
|
6911
7200
|
},
|
|
6912
|
-
sodaAVAX: {
|
|
7201
|
+
[SodaTokens.sodaAVAX.symbol]: {
|
|
6913
7202
|
// SODA AVAX vault
|
|
6914
7203
|
address: "0x14238d267557e9d799016ad635b53cd15935d290",
|
|
6915
7204
|
reserves: [
|
|
@@ -6918,7 +7207,7 @@ var hubVaults = {
|
|
|
6918
7207
|
// AvalancheAVAX hub asset
|
|
6919
7208
|
]
|
|
6920
7209
|
},
|
|
6921
|
-
sodaBNB: {
|
|
7210
|
+
[SodaTokens.sodaBNB.symbol]: {
|
|
6922
7211
|
// SODA BNB vault
|
|
6923
7212
|
address: "0x40cd41b35db9e5109ae7e54b44de8625db320e6b",
|
|
6924
7213
|
reserves: [
|
|
@@ -6927,7 +7216,7 @@ var hubVaults = {
|
|
|
6927
7216
|
// BSC BNB hub asset
|
|
6928
7217
|
]
|
|
6929
7218
|
},
|
|
6930
|
-
sodaETH: {
|
|
7219
|
+
[SodaTokens.sodaETH.symbol]: {
|
|
6931
7220
|
// SODA ETH vault
|
|
6932
7221
|
address: "0x4effb5813271699683c25c734f4dabc45b363709",
|
|
6933
7222
|
reserves: [
|
|
@@ -6944,7 +7233,7 @@ var hubVaults = {
|
|
|
6944
7233
|
// Sonic WETH hub asset
|
|
6945
7234
|
]
|
|
6946
7235
|
},
|
|
6947
|
-
sodaBTC: {
|
|
7236
|
+
[SodaTokens.sodaBTC.symbol]: {
|
|
6948
7237
|
// SODA BTC vault
|
|
6949
7238
|
address: "0x7a1a5555842ad2d0ed274d09b5c4406a95799d5d",
|
|
6950
7239
|
reserves: [
|
|
@@ -6955,11 +7244,12 @@ var hubVaults = {
|
|
|
6955
7244
|
// Arbitrum wBTC hub asset
|
|
6956
7245
|
"0x96fc8540736f1598b7e235e6de8814062b3b5d3b",
|
|
6957
7246
|
// Arbitrum tBTC hub asset,
|
|
6958
|
-
"0xd8a24c71fea5bb81c66c01e532de7d9b11e13905"
|
|
7247
|
+
"0xd8a24c71fea5bb81c66c01e532de7d9b11e13905",
|
|
6959
7248
|
// BSC BTCB hub asset
|
|
7249
|
+
"0x03E99853C6376b13a4c6e4d0A115F1639c9FA14e"
|
|
6960
7250
|
]
|
|
6961
7251
|
},
|
|
6962
|
-
sodaSUI: {
|
|
7252
|
+
[SodaTokens.sodaSUI.symbol]: {
|
|
6963
7253
|
// SODA SUI vault
|
|
6964
7254
|
address: "0xdc5b4b00f98347e95b9f94911213dab4c687e1e3",
|
|
6965
7255
|
reserves: [
|
|
@@ -6968,7 +7258,7 @@ var hubVaults = {
|
|
|
6968
7258
|
// SUI SUI hub asset
|
|
6969
7259
|
]
|
|
6970
7260
|
},
|
|
6971
|
-
sodaINJ: {
|
|
7261
|
+
[SodaTokens.sodaINJ.symbol]: {
|
|
6972
7262
|
// SODA INJ vault
|
|
6973
7263
|
address: "0x1f22279c89b213944b7ea41dacb0a868ddcdfd13",
|
|
6974
7264
|
reserves: [
|
|
@@ -6977,7 +7267,7 @@ var hubVaults = {
|
|
|
6977
7267
|
// Injective INJ hub asset
|
|
6978
7268
|
]
|
|
6979
7269
|
},
|
|
6980
|
-
sodaXLM: {
|
|
7270
|
+
[SodaTokens.sodaXLM.symbol]: {
|
|
6981
7271
|
// SODA XLM vault
|
|
6982
7272
|
address: "0x6bc8c37cba91f76e68c9e6d689a9c21e4d32079b",
|
|
6983
7273
|
reserves: [
|
|
@@ -6986,7 +7276,7 @@ var hubVaults = {
|
|
|
6986
7276
|
// Stellar XLM hub asset
|
|
6987
7277
|
]
|
|
6988
7278
|
},
|
|
6989
|
-
sodaSOL: {
|
|
7279
|
+
[SodaTokens.sodaSOL.symbol]: {
|
|
6990
7280
|
// SODA SOL vault
|
|
6991
7281
|
address: "0xdea692287e2ce8cb08fa52917be0f16b1dacdc87",
|
|
6992
7282
|
reserves: [
|
|
@@ -6995,7 +7285,7 @@ var hubVaults = {
|
|
|
6995
7285
|
// Solana SOL hub asset
|
|
6996
7286
|
]
|
|
6997
7287
|
},
|
|
6998
|
-
sodaUSDT: {
|
|
7288
|
+
[SodaTokens.sodaUSDT.symbol]: {
|
|
6999
7289
|
// SODA USDT vault
|
|
7000
7290
|
address: "0xbdf1f453fcb61424011bbddcb96cfdb30f3fe876",
|
|
7001
7291
|
reserves: [
|
|
@@ -7007,7 +7297,7 @@ var hubVaults = {
|
|
|
7007
7297
|
// Sonic USDT
|
|
7008
7298
|
]
|
|
7009
7299
|
},
|
|
7010
|
-
sodaUSDC: {
|
|
7300
|
+
[SodaTokens.sodaUSDC.symbol]: {
|
|
7011
7301
|
address: "0xabbb91c0617090f0028bdc27597cd0d038f3a833",
|
|
7012
7302
|
reserves: [
|
|
7013
7303
|
"0x41abf4b1559ff709ef8150079bcb26db1fffd117",
|
|
@@ -7021,10 +7311,25 @@ var hubVaults = {
|
|
|
7021
7311
|
"0x4bc1211faa06fb50ff61a70331f56167ae511057",
|
|
7022
7312
|
"0x348007b53f25a9a857ab8ea81ec9e3ccbcf440f2",
|
|
7023
7313
|
"0xc3f020057510ffe10ceb882e1b48238b43d78a5e",
|
|
7024
|
-
"0x9d58508ad10d34048a11640735ca5075bba07b35"
|
|
7314
|
+
"0x9d58508ad10d34048a11640735ca5075bba07b35",
|
|
7315
|
+
"0xC1df02fb7b1b06bE886592C89F6955387998B2f7"
|
|
7025
7316
|
]
|
|
7026
7317
|
}
|
|
7027
7318
|
};
|
|
7319
|
+
var hubVaultTokensMap = new Map(
|
|
7320
|
+
Object.entries(hubVaults).map(([symbol, vault]) => [
|
|
7321
|
+
vault.address.toLowerCase(),
|
|
7322
|
+
{
|
|
7323
|
+
address: vault.address.toLowerCase(),
|
|
7324
|
+
symbol,
|
|
7325
|
+
name: symbol,
|
|
7326
|
+
decimals: 18
|
|
7327
|
+
}
|
|
7328
|
+
])
|
|
7329
|
+
);
|
|
7330
|
+
var getHubVaultTokenByAddress = (address) => {
|
|
7331
|
+
return hubVaultTokensMap.get(address.toLowerCase());
|
|
7332
|
+
};
|
|
7028
7333
|
var bnUSDLegacySpokeChainIds = [
|
|
7029
7334
|
ICON_MAINNET_CHAIN_ID,
|
|
7030
7335
|
SUI_MAINNET_CHAIN_ID,
|
|
@@ -7070,6 +7375,13 @@ var hubAssets = {
|
|
|
7070
7375
|
name: "Sonic",
|
|
7071
7376
|
vault: hubVaults.sodaS.address
|
|
7072
7377
|
},
|
|
7378
|
+
[spokeChainConfig[SONIC_MAINNET_CHAIN_ID].bnUSD]: {
|
|
7379
|
+
asset: "0x289cDa1043b4Ce26BDCa3c12E534f56b24308A5B",
|
|
7380
|
+
decimal: 18,
|
|
7381
|
+
symbol: "bnUSD",
|
|
7382
|
+
name: "bnUSD",
|
|
7383
|
+
vault: hubVaults.bnUSD.address
|
|
7384
|
+
},
|
|
7073
7385
|
[spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.wS.address]: {
|
|
7074
7386
|
asset: spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.wS.address,
|
|
7075
7387
|
decimal: 18,
|
|
@@ -7104,7 +7416,8 @@ var hubAssets = {
|
|
|
7104
7416
|
symbol: "SODA",
|
|
7105
7417
|
name: "SODA",
|
|
7106
7418
|
vault: hubVaults.sodaSODA.address
|
|
7107
|
-
}
|
|
7419
|
+
},
|
|
7420
|
+
...SodaTokensAsHubAssets
|
|
7108
7421
|
},
|
|
7109
7422
|
[AVALANCHE_MAINNET_CHAIN_ID]: {
|
|
7110
7423
|
[spokeChainConfig[AVALANCHE_MAINNET_CHAIN_ID].nativeToken]: {
|
|
@@ -7134,6 +7447,13 @@ var hubAssets = {
|
|
|
7134
7447
|
symbol: "bnUSD",
|
|
7135
7448
|
name: "bnUSD",
|
|
7136
7449
|
vault: hubVaults.bnUSD.address
|
|
7450
|
+
},
|
|
7451
|
+
[spokeChainConfig[AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7452
|
+
asset: "0xf51d7082375cdca8C19C74e1A0c77dA482aFDa4e",
|
|
7453
|
+
decimal: 18,
|
|
7454
|
+
symbol: "SODA",
|
|
7455
|
+
name: "SODAX",
|
|
7456
|
+
vault: hubVaults.sodaSODA.address
|
|
7137
7457
|
}
|
|
7138
7458
|
},
|
|
7139
7459
|
[ARBITRUM_MAINNET_CHAIN_ID]: {
|
|
@@ -7194,6 +7514,13 @@ var hubAssets = {
|
|
|
7194
7514
|
symbol: "bnUSD",
|
|
7195
7515
|
name: "bnUSD",
|
|
7196
7516
|
vault: hubVaults.bnUSD.address
|
|
7517
|
+
},
|
|
7518
|
+
[spokeChainConfig[ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7519
|
+
asset: "0x93a367E5B37a1B9E8D04ef25a6Af40d181a3DfFF",
|
|
7520
|
+
decimal: 18,
|
|
7521
|
+
symbol: "SODA",
|
|
7522
|
+
name: "SODAX",
|
|
7523
|
+
vault: hubVaults.sodaSODA.address
|
|
7197
7524
|
}
|
|
7198
7525
|
},
|
|
7199
7526
|
[BASE_MAINNET_CHAIN_ID]: {
|
|
@@ -7240,6 +7567,13 @@ var hubAssets = {
|
|
|
7240
7567
|
name: "Wrapped Staked Ethereum",
|
|
7241
7568
|
vault: "0x"
|
|
7242
7569
|
// no vault yet
|
|
7570
|
+
},
|
|
7571
|
+
[spokeChainConfig[BASE_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7572
|
+
asset: "0x17fF8Ad5EBe6CA8B15751067cD0c89f0E580CD17",
|
|
7573
|
+
decimal: 18,
|
|
7574
|
+
symbol: "SODA",
|
|
7575
|
+
name: "SODAX",
|
|
7576
|
+
vault: hubVaults.sodaSODA.address
|
|
7243
7577
|
}
|
|
7244
7578
|
},
|
|
7245
7579
|
[OPTIMISM_MAINNET_CHAIN_ID]: {
|
|
@@ -7286,6 +7620,13 @@ var hubAssets = {
|
|
|
7286
7620
|
symbol: "USDT",
|
|
7287
7621
|
name: "Tether USD",
|
|
7288
7622
|
vault: hubVaults.sodaUSDT.address
|
|
7623
|
+
},
|
|
7624
|
+
[spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7625
|
+
asset: "0x0eD0d274dC77ef460DC96b9fBaFF3EDB074e0471",
|
|
7626
|
+
decimal: 18,
|
|
7627
|
+
symbol: "SODA",
|
|
7628
|
+
name: "SODAX",
|
|
7629
|
+
vault: hubVaults.sodaSODA.address
|
|
7289
7630
|
}
|
|
7290
7631
|
},
|
|
7291
7632
|
[NIBIRU_MAINNET_CHAIN_ID]: {
|
|
@@ -7302,6 +7643,13 @@ var hubAssets = {
|
|
|
7302
7643
|
symbol: "bnUSD",
|
|
7303
7644
|
name: "bnUSD",
|
|
7304
7645
|
vault: hubVaults.bnUSD.address
|
|
7646
|
+
},
|
|
7647
|
+
[spokeChainConfig[NIBIRU_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7648
|
+
asset: "0x26cd76cB5622Dc8638670A16E0Da5a51394A8DB1",
|
|
7649
|
+
decimal: 18,
|
|
7650
|
+
symbol: "SODA",
|
|
7651
|
+
name: "SODAX",
|
|
7652
|
+
vault: hubVaults.sodaSODA.address
|
|
7305
7653
|
}
|
|
7306
7654
|
},
|
|
7307
7655
|
[BSC_MAINNET_CHAIN_ID]: {
|
|
@@ -7339,6 +7687,13 @@ var hubAssets = {
|
|
|
7339
7687
|
symbol: "USDC",
|
|
7340
7688
|
name: "USD Coin",
|
|
7341
7689
|
vault: hubVaults.sodaUSDC.address
|
|
7690
|
+
},
|
|
7691
|
+
[spokeChainConfig[BSC_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7692
|
+
asset: "0x4d12c72A8633588097D10e57b559ed642588e4C6",
|
|
7693
|
+
decimal: 18,
|
|
7694
|
+
symbol: "SODA",
|
|
7695
|
+
name: "SODAX",
|
|
7696
|
+
vault: hubVaults.sodaSODA.address
|
|
7342
7697
|
}
|
|
7343
7698
|
},
|
|
7344
7699
|
[POLYGON_MAINNET_CHAIN_ID]: {
|
|
@@ -7362,6 +7717,13 @@ var hubAssets = {
|
|
|
7362
7717
|
symbol: "USDC",
|
|
7363
7718
|
name: "USD Coin",
|
|
7364
7719
|
vault: hubVaults.sodaUSDC.address
|
|
7720
|
+
},
|
|
7721
|
+
[spokeChainConfig[POLYGON_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7722
|
+
asset: "0x8D78A620E009Ba751Eb40d77A5e9Db48A3F2016b",
|
|
7723
|
+
decimal: 18,
|
|
7724
|
+
symbol: "SODA",
|
|
7725
|
+
name: "SODAX",
|
|
7726
|
+
vault: hubVaults.sodaSODA.address
|
|
7365
7727
|
}
|
|
7366
7728
|
},
|
|
7367
7729
|
[INJECTIVE_MAINNET_CHAIN_ID]: {
|
|
@@ -7385,6 +7747,13 @@ var hubAssets = {
|
|
|
7385
7747
|
symbol: "USDC",
|
|
7386
7748
|
name: "USD Coin",
|
|
7387
7749
|
vault: hubVaults.sodaUSDC.address
|
|
7750
|
+
},
|
|
7751
|
+
[spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7752
|
+
asset: "0x20Ce75CdcEe44B1308365447b91B9c26e2b71Ffd",
|
|
7753
|
+
decimal: 18,
|
|
7754
|
+
symbol: "SODA",
|
|
7755
|
+
name: "SODAX",
|
|
7756
|
+
vault: hubVaults.sodaSODA.address
|
|
7388
7757
|
}
|
|
7389
7758
|
},
|
|
7390
7759
|
[STELLAR_MAINNET_CHAIN_ID]: {
|
|
@@ -7415,6 +7784,13 @@ var hubAssets = {
|
|
|
7415
7784
|
symbol: "legacybnUSD",
|
|
7416
7785
|
name: "legacybnUSD",
|
|
7417
7786
|
vault: hubVaults.IbnUSD.address
|
|
7787
|
+
},
|
|
7788
|
+
[spokeChainConfig[STELLAR_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7789
|
+
asset: "0xD749B5FfFED7cEDaa3239abDd16D677179C29AEc",
|
|
7790
|
+
decimal: 7,
|
|
7791
|
+
symbol: "SODA",
|
|
7792
|
+
name: "SODAX",
|
|
7793
|
+
vault: hubVaults.sodaSODA.address
|
|
7418
7794
|
}
|
|
7419
7795
|
},
|
|
7420
7796
|
[SUI_MAINNET_CHAIN_ID]: {
|
|
@@ -7493,6 +7869,13 @@ var hubAssets = {
|
|
|
7493
7869
|
symbol: "bnUSD",
|
|
7494
7870
|
name: "legacybnUSD",
|
|
7495
7871
|
vault: hubVaults.IbnUSD.address
|
|
7872
|
+
},
|
|
7873
|
+
[spokeChainConfig[SUI_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7874
|
+
asset: "0x5Db9CEc919f40C50809D9490DC3BbA4F05b0a1D7",
|
|
7875
|
+
decimal: 9,
|
|
7876
|
+
symbol: "SODA",
|
|
7877
|
+
name: "SODAX",
|
|
7878
|
+
vault: hubVaults.sodaSODA.address
|
|
7496
7879
|
}
|
|
7497
7880
|
},
|
|
7498
7881
|
[SOLANA_MAINNET_CHAIN_ID]: {
|
|
@@ -7516,6 +7899,13 @@ var hubAssets = {
|
|
|
7516
7899
|
symbol: "USDC",
|
|
7517
7900
|
name: "USD Coin",
|
|
7518
7901
|
vault: hubVaults.sodaUSDC.address
|
|
7902
|
+
},
|
|
7903
|
+
[spokeChainConfig[SOLANA_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7904
|
+
asset: "0x07Db7b1a96ebE474B20F52fF487cEE415adee79e",
|
|
7905
|
+
decimal: 9,
|
|
7906
|
+
symbol: "SODA",
|
|
7907
|
+
name: "SODAX",
|
|
7908
|
+
vault: hubVaults.sodaSODA.address
|
|
7519
7909
|
}
|
|
7520
7910
|
},
|
|
7521
7911
|
[ICON_MAINNET_CHAIN_ID]: {
|
|
@@ -7565,17 +7955,18 @@ var solverSupportedTokens = {
|
|
|
7565
7955
|
spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.WETH,
|
|
7566
7956
|
spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7567
7957
|
spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.USDT,
|
|
7568
|
-
spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.wS
|
|
7958
|
+
spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.wS,
|
|
7959
|
+
spokeChainConfig[SONIC_MAINNET_CHAIN_ID].supportedTokens.bnUSD
|
|
7569
7960
|
],
|
|
7570
7961
|
[AVALANCHE_MAINNET_CHAIN_ID]: [
|
|
7571
7962
|
spokeChainConfig[AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.AVAX,
|
|
7572
7963
|
spokeChainConfig[AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDT,
|
|
7573
|
-
spokeChainConfig[AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7574
|
-
|
|
7964
|
+
spokeChainConfig[AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7965
|
+
spokeChainConfig[AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.bnUSD
|
|
7575
7966
|
],
|
|
7576
7967
|
[ARBITRUM_MAINNET_CHAIN_ID]: [
|
|
7577
7968
|
spokeChainConfig[ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7578
|
-
|
|
7969
|
+
spokeChainConfig[ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7579
7970
|
spokeChainConfig[ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.WBTC,
|
|
7580
7971
|
spokeChainConfig[ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.weETH,
|
|
7581
7972
|
spokeChainConfig[ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
@@ -7585,7 +7976,7 @@ var solverSupportedTokens = {
|
|
|
7585
7976
|
],
|
|
7586
7977
|
[BASE_MAINNET_CHAIN_ID]: [
|
|
7587
7978
|
spokeChainConfig[BASE_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7588
|
-
|
|
7979
|
+
spokeChainConfig[BASE_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7589
7980
|
spokeChainConfig[BASE_MAINNET_CHAIN_ID].supportedTokens.weETH,
|
|
7590
7981
|
spokeChainConfig[BASE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7591
7982
|
spokeChainConfig[BASE_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
@@ -7593,7 +7984,7 @@ var solverSupportedTokens = {
|
|
|
7593
7984
|
],
|
|
7594
7985
|
[OPTIMISM_MAINNET_CHAIN_ID]: [
|
|
7595
7986
|
spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7596
|
-
|
|
7987
|
+
spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7597
7988
|
spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7598
7989
|
spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
7599
7990
|
// spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.weETH, // NOTE: Not Implemented
|
|
@@ -7601,19 +7992,20 @@ var solverSupportedTokens = {
|
|
|
7601
7992
|
],
|
|
7602
7993
|
[POLYGON_MAINNET_CHAIN_ID]: [
|
|
7603
7994
|
spokeChainConfig[POLYGON_MAINNET_CHAIN_ID].supportedTokens.POL,
|
|
7604
|
-
|
|
7995
|
+
spokeChainConfig[POLYGON_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7605
7996
|
spokeChainConfig[POLYGON_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7606
7997
|
],
|
|
7607
7998
|
[BSC_MAINNET_CHAIN_ID]: [
|
|
7608
7999
|
spokeChainConfig[BSC_MAINNET_CHAIN_ID].supportedTokens.BNB,
|
|
7609
8000
|
spokeChainConfig[BSC_MAINNET_CHAIN_ID].supportedTokens.ETHB,
|
|
7610
8001
|
spokeChainConfig[BSC_MAINNET_CHAIN_ID].supportedTokens.BTCB,
|
|
7611
|
-
|
|
8002
|
+
spokeChainConfig[BSC_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7612
8003
|
spokeChainConfig[BSC_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7613
8004
|
],
|
|
7614
8005
|
[SOLANA_MAINNET_CHAIN_ID]: [
|
|
7615
8006
|
spokeChainConfig[SOLANA_MAINNET_CHAIN_ID].supportedTokens.SOL,
|
|
7616
|
-
|
|
8007
|
+
spokeChainConfig[SOLANA_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
8008
|
+
// NOTE: Not Implemented
|
|
7617
8009
|
spokeChainConfig[SOLANA_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7618
8010
|
],
|
|
7619
8011
|
[ICON_MAINNET_CHAIN_ID]: [
|
|
@@ -7625,12 +8017,14 @@ var solverSupportedTokens = {
|
|
|
7625
8017
|
],
|
|
7626
8018
|
[STELLAR_MAINNET_CHAIN_ID]: [
|
|
7627
8019
|
spokeChainConfig[STELLAR_MAINNET_CHAIN_ID].supportedTokens.XLM,
|
|
7628
|
-
|
|
8020
|
+
spokeChainConfig[STELLAR_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
8021
|
+
// NOTE: Not Implemented
|
|
7629
8022
|
spokeChainConfig[STELLAR_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7630
8023
|
],
|
|
7631
8024
|
[SUI_MAINNET_CHAIN_ID]: [
|
|
7632
8025
|
spokeChainConfig[SUI_MAINNET_CHAIN_ID].supportedTokens.SUI,
|
|
7633
|
-
|
|
8026
|
+
spokeChainConfig[SUI_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
8027
|
+
// NOTE: Not Implemented
|
|
7634
8028
|
spokeChainConfig[SUI_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7635
8029
|
spokeChainConfig[SUI_MAINNET_CHAIN_ID].supportedTokens.afSUI,
|
|
7636
8030
|
spokeChainConfig[SUI_MAINNET_CHAIN_ID].supportedTokens.mSUI,
|
|
@@ -7640,9 +8034,9 @@ var solverSupportedTokens = {
|
|
|
7640
8034
|
spokeChainConfig[SUI_MAINNET_CHAIN_ID].supportedTokens.trevinSUI
|
|
7641
8035
|
],
|
|
7642
8036
|
[INJECTIVE_MAINNET_CHAIN_ID]: [
|
|
7643
|
-
spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.INJ,
|
|
8037
|
+
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.INJ,
|
|
7644
8038
|
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.bnUSD, // NOTE: Not Implemented
|
|
7645
|
-
spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
8039
|
+
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7646
8040
|
],
|
|
7647
8041
|
[NIBIRU_MAINNET_CHAIN_ID]: [
|
|
7648
8042
|
// spokeChainConfig[NIBIRU_MAINNET_CHAIN_ID].supportedTokens.NIBI, // NOTE: Not Implemented
|
|
@@ -7774,11 +8168,30 @@ var chainIdToHubAssetsMap = new Map(
|
|
|
7774
8168
|
var supportedHubAssets = new Set(
|
|
7775
8169
|
Object.values(hubAssets).flatMap((assets) => Object.values(assets).map((info) => info.asset.toLowerCase()))
|
|
7776
8170
|
);
|
|
8171
|
+
var supportedSodaAssets = new Set(
|
|
8172
|
+
Object.values(hubAssets).flatMap((assets) => Object.values(assets).map((info) => info.vault.toLowerCase()))
|
|
8173
|
+
);
|
|
7777
8174
|
var spokeChainIdsSet = new Set(SPOKE_CHAIN_IDS);
|
|
8175
|
+
var getOriginalAssetInfoFromVault = (chainId, vault) => {
|
|
8176
|
+
const assets = hubAssets[chainId];
|
|
8177
|
+
if (!assets) {
|
|
8178
|
+
return [];
|
|
8179
|
+
}
|
|
8180
|
+
const vaultAddress = vault.toLowerCase();
|
|
8181
|
+
const result = [];
|
|
8182
|
+
for (const [spokeToken, info] of Object.entries(assets)) {
|
|
8183
|
+
if (info.vault.toLowerCase() === vaultAddress) {
|
|
8184
|
+
result.push(spokeToken);
|
|
8185
|
+
}
|
|
8186
|
+
}
|
|
8187
|
+
return result;
|
|
8188
|
+
};
|
|
7778
8189
|
var getHubAssetInfo = (chainId, asset) => originalAssetTohubAssetMap.get(chainId)?.get(asset.toLowerCase());
|
|
7779
8190
|
var isValidOriginalAssetAddress = (chainId, asset) => originalAssetTohubAssetMap.get(chainId)?.has(asset.toLowerCase()) ?? false;
|
|
7780
8191
|
var getOriginalAssetAddress = (chainId, hubAsset) => hubAssetToOriginalAssetMap.get(chainId)?.get(hubAsset.toLowerCase());
|
|
8192
|
+
var getOriginalTokenFromOriginalAssetAddress = (chainId, asset) => Object.values(spokeChainConfig[chainId].supportedTokens).find((t) => t.address.toLowerCase() === asset.toLowerCase()) ?? void 0;
|
|
7781
8193
|
var isValidHubAsset = (hubAsset) => supportedHubAssets.has(hubAsset.toLowerCase());
|
|
8194
|
+
var isValidVault = (vault) => supportedSodaAssets.has(vault.toLowerCase());
|
|
7782
8195
|
var isValidChainHubAsset = (chainId, hubAsset) => chainIdToHubAssetsMap.get(chainId)?.has(hubAsset.toLowerCase()) ?? false;
|
|
7783
8196
|
var isValidSpokeChainId = (chainId) => spokeChainIdsSet.has(chainId);
|
|
7784
8197
|
var isValidIntentRelayChainId = (chainId) => Object.values(INTENT_RELAY_CHAIN_IDS).some((id) => id === chainId);
|
|
@@ -7831,12 +8244,13 @@ var InjectiveSpokeProvider = class {
|
|
|
7831
8244
|
);
|
|
7832
8245
|
}
|
|
7833
8246
|
async getBalance(token) {
|
|
7834
|
-
|
|
8247
|
+
const response = await this.chainGrpcWasmApi.fetchSmartContractState(
|
|
7835
8248
|
this.chainConfig.addresses.assetManager,
|
|
7836
8249
|
toBase64({
|
|
7837
8250
|
get_balance: { denom: token }
|
|
7838
8251
|
})
|
|
7839
8252
|
);
|
|
8253
|
+
return fromBase64(response.data);
|
|
7840
8254
|
}
|
|
7841
8255
|
// Execute Methods (requires SigningCosmWasmClient)
|
|
7842
8256
|
/**
|
|
@@ -9287,7 +9701,7 @@ var EvmSpokeService = class _EvmSpokeService {
|
|
|
9287
9701
|
address: token,
|
|
9288
9702
|
abi: erc20Abi,
|
|
9289
9703
|
functionName: "balanceOf",
|
|
9290
|
-
args: [
|
|
9704
|
+
args: [spokeProvider.chainConfig.addresses.assetManager]
|
|
9291
9705
|
});
|
|
9292
9706
|
}
|
|
9293
9707
|
/**
|
|
@@ -9800,18 +10214,14 @@ var SolanaSpokeService = class _SolanaSpokeService {
|
|
|
9800
10214
|
);
|
|
9801
10215
|
}
|
|
9802
10216
|
static async getDeposit(token, spokeProvider) {
|
|
9803
|
-
const
|
|
9804
|
-
|
|
9805
|
-
spokeProvider.chainConfig.rpcUrl,
|
|
9806
|
-
spokeProvider.chainConfig.addresses.assetManager
|
|
9807
|
-
);
|
|
9808
|
-
const solToken = new PublicKey(Buffer.from(token, "hex"));
|
|
10217
|
+
const assetManagerProgramId = new PublicKey(spokeProvider.chainConfig.addresses.assetManager);
|
|
10218
|
+
const solToken = new PublicKey(token);
|
|
9809
10219
|
if (isNative(new PublicKey(solToken))) {
|
|
9810
|
-
const vaultNative = AssetManagerPDA.vault_native(
|
|
10220
|
+
const vaultNative = AssetManagerPDA.vault_native(assetManagerProgramId);
|
|
9811
10221
|
const balance = await spokeProvider.walletProvider.getBalance(vaultNative.pda.toBase58());
|
|
9812
10222
|
return BigInt(balance);
|
|
9813
10223
|
}
|
|
9814
|
-
const vaultToken = AssetManagerPDA.vault_token(
|
|
10224
|
+
const vaultToken = AssetManagerPDA.vault_token(assetManagerProgramId, new PublicKey(solToken));
|
|
9815
10225
|
const tokenAccount = await spokeProvider.walletProvider.getTokenAccountBalance(vaultToken.pda.toBase58());
|
|
9816
10226
|
return BigInt(tokenAccount.value.amount);
|
|
9817
10227
|
}
|
|
@@ -10019,6 +10429,12 @@ var StellarSpokeService = class _StellarSpokeService {
|
|
|
10019
10429
|
raw
|
|
10020
10430
|
);
|
|
10021
10431
|
}
|
|
10432
|
+
/**
|
|
10433
|
+
* Get the balance of the token in the spoke chain asset manager.
|
|
10434
|
+
* @param token - The address of the token to get the balance of.
|
|
10435
|
+
* @param spokeProvider - The spoke provider.
|
|
10436
|
+
* @returns The balance of the token.
|
|
10437
|
+
*/
|
|
10022
10438
|
static async getDeposit(token, spokeProvider) {
|
|
10023
10439
|
return BigInt(await spokeProvider.getBalance(token));
|
|
10024
10440
|
}
|
|
@@ -10135,7 +10551,7 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10135
10551
|
* @returns {PromiseEvmTxReturnType<R>} A promise that resolves to the transaction hash
|
|
10136
10552
|
*/
|
|
10137
10553
|
static async deposit(params, spokeProvider, raw) {
|
|
10138
|
-
|
|
10554
|
+
invariant12(spokeProvider instanceof SonicSpokeProvider, "[SonicSpokeService] invalid spoke provider");
|
|
10139
10555
|
const userHubAddress = params.to ?? await _SonicSpokeService.getUserRouter(params.from, spokeProvider);
|
|
10140
10556
|
const calls = Array.from(
|
|
10141
10557
|
decodeAbiParameters(
|
|
@@ -10200,11 +10616,11 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10200
10616
|
inputToken = hubProvider.chainConfig.nativeToken;
|
|
10201
10617
|
}
|
|
10202
10618
|
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
10203
|
-
|
|
10619
|
+
invariant12(
|
|
10204
10620
|
inputToken,
|
|
10205
10621
|
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
10206
10622
|
);
|
|
10207
|
-
|
|
10623
|
+
invariant12(
|
|
10208
10624
|
outputToken,
|
|
10209
10625
|
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
10210
10626
|
);
|
|
@@ -10267,7 +10683,7 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10267
10683
|
* @returns {PromiseEvmTxReturnType<R>} A promise that resolves to the transaction hash
|
|
10268
10684
|
*/
|
|
10269
10685
|
static async callWallet(payload, spokeProvider, raw) {
|
|
10270
|
-
|
|
10686
|
+
invariant12(spokeProvider instanceof SonicSpokeProvider, "[SonicSpokeService] invalid spoke provider");
|
|
10271
10687
|
const calls = decodeAbiParameters(
|
|
10272
10688
|
[
|
|
10273
10689
|
{
|
|
@@ -10756,11 +11172,8 @@ var SpokeService = class _SpokeService {
|
|
|
10756
11172
|
*/
|
|
10757
11173
|
static async deposit(params, spokeProvider, hubProvider, raw, skipSimulation = false) {
|
|
10758
11174
|
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
10759
|
-
|
|
10760
|
-
|
|
10761
|
-
spokeProvider,
|
|
10762
|
-
raw
|
|
10763
|
-
);
|
|
11175
|
+
const _params = params;
|
|
11176
|
+
return SonicSpokeService.deposit(_params, spokeProvider, raw);
|
|
10764
11177
|
}
|
|
10765
11178
|
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
10766
11179
|
await _SpokeService.verifyDepositSimulation(params, spokeProvider, hubProvider, skipSimulation);
|
|
@@ -10785,7 +11198,6 @@ var SpokeService = class _SpokeService {
|
|
|
10785
11198
|
);
|
|
10786
11199
|
}
|
|
10787
11200
|
if (spokeProvider instanceof SuiSpokeProvider) {
|
|
10788
|
-
await _SpokeService.verifyDepositSimulation(params, spokeProvider, hubProvider, skipSimulation);
|
|
10789
11201
|
return SuiSpokeService.deposit(
|
|
10790
11202
|
params,
|
|
10791
11203
|
spokeProvider,
|
|
@@ -10913,18 +11325,32 @@ var SpokeService = class _SpokeService {
|
|
|
10913
11325
|
raw
|
|
10914
11326
|
);
|
|
10915
11327
|
}
|
|
10916
|
-
if (
|
|
10917
|
-
await _SpokeService.
|
|
10918
|
-
|
|
10919
|
-
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10924
|
-
|
|
10925
|
-
|
|
10926
|
-
|
|
10927
|
-
|
|
11328
|
+
if (!skipSimulation) {
|
|
11329
|
+
const result = await _SpokeService.simulateRecvMessage(
|
|
11330
|
+
{
|
|
11331
|
+
target: from,
|
|
11332
|
+
srcChainId: getIntentRelayChainId(spokeProvider.chainConfig.chain.id),
|
|
11333
|
+
srcAddress: await spokeProvider.walletProvider.getWalletAddressBytes(),
|
|
11334
|
+
payload
|
|
11335
|
+
},
|
|
11336
|
+
hubProvider
|
|
11337
|
+
);
|
|
11338
|
+
if (!result.success) {
|
|
11339
|
+
throw new Error("Simulation failed", { cause: result });
|
|
11340
|
+
}
|
|
11341
|
+
}
|
|
11342
|
+
if (isEvmSpokeProvider(spokeProvider)) {
|
|
11343
|
+
await _SpokeService.verifySimulation(from, payload, spokeProvider, hubProvider, skipSimulation);
|
|
11344
|
+
return await EvmSpokeService.callWallet(from, payload, spokeProvider, hubProvider);
|
|
11345
|
+
}
|
|
11346
|
+
if (isInjectiveSpokeProvider(spokeProvider)) {
|
|
11347
|
+
await _SpokeService.verifySimulation(from, payload, spokeProvider, hubProvider, skipSimulation);
|
|
11348
|
+
return await InjectiveSpokeService.callWallet(
|
|
11349
|
+
from,
|
|
11350
|
+
payload,
|
|
11351
|
+
spokeProvider,
|
|
11352
|
+
hubProvider,
|
|
11353
|
+
raw
|
|
10928
11354
|
);
|
|
10929
11355
|
}
|
|
10930
11356
|
if (isIconSpokeProvider(spokeProvider)) {
|
|
@@ -10981,19 +11407,19 @@ async function postRequest(payload, apiUrl) {
|
|
|
10981
11407
|
return response.json();
|
|
10982
11408
|
}
|
|
10983
11409
|
async function submitTransaction(payload, apiUrl) {
|
|
10984
|
-
|
|
10985
|
-
|
|
11410
|
+
invariant12(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11411
|
+
invariant12(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
10986
11412
|
return postRequest(payload, apiUrl);
|
|
10987
11413
|
}
|
|
10988
11414
|
async function getTransactionPackets(payload, apiUrl) {
|
|
10989
|
-
|
|
10990
|
-
|
|
11415
|
+
invariant12(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11416
|
+
invariant12(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
10991
11417
|
return postRequest(payload, apiUrl);
|
|
10992
11418
|
}
|
|
10993
11419
|
async function getPacket(payload, apiUrl) {
|
|
10994
|
-
|
|
10995
|
-
|
|
10996
|
-
|
|
11420
|
+
invariant12(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11421
|
+
invariant12(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11422
|
+
invariant12(payload.params.conn_sn.length > 0, "Invalid input parameters. conn_sn empty");
|
|
10997
11423
|
return postRequest(payload, apiUrl);
|
|
10998
11424
|
}
|
|
10999
11425
|
async function waitUntilIntentExecuted(payload) {
|
|
@@ -11124,11 +11550,11 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11124
11550
|
inputToken = hubProvider.chainConfig.wrappedNativeToken;
|
|
11125
11551
|
}
|
|
11126
11552
|
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
11127
|
-
|
|
11553
|
+
invariant12(
|
|
11128
11554
|
inputToken,
|
|
11129
11555
|
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
11130
11556
|
);
|
|
11131
|
-
|
|
11557
|
+
invariant12(
|
|
11132
11558
|
outputToken,
|
|
11133
11559
|
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
11134
11560
|
);
|
|
@@ -11160,7 +11586,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11160
11586
|
* @returns A tuple containing [encoded fee data, fee amount]. Fee amount will be 0n if no fee.
|
|
11161
11587
|
*/
|
|
11162
11588
|
static createIntentFeeData(fee, inputAmount) {
|
|
11163
|
-
|
|
11589
|
+
invariant12(inputAmount > 0n, "Input amount must be greater than 0");
|
|
11164
11590
|
if (!fee) {
|
|
11165
11591
|
return ["0x", 0n];
|
|
11166
11592
|
}
|
|
@@ -11168,7 +11594,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11168
11594
|
if (isPartnerFeeAmount(fee)) {
|
|
11169
11595
|
feeAmount = fee.amount;
|
|
11170
11596
|
} else if (isPartnerFeePercentage(fee)) {
|
|
11171
|
-
|
|
11597
|
+
invariant12(
|
|
11172
11598
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
11173
11599
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
11174
11600
|
);
|
|
@@ -11295,23 +11721,23 @@ var SolverApiService = class {
|
|
|
11295
11721
|
* }
|
|
11296
11722
|
*/
|
|
11297
11723
|
static async getQuote(payload, config) {
|
|
11298
|
-
|
|
11299
|
-
|
|
11300
|
-
|
|
11301
|
-
|
|
11302
|
-
|
|
11303
|
-
|
|
11724
|
+
invariant12(payload.token_src.length > 0, "Empty token_src");
|
|
11725
|
+
invariant12(payload.token_src_blockchain_id.length > 0, "Empty token_src_blockchain_id");
|
|
11726
|
+
invariant12(payload.token_dst.length > 0, "Empty token_dst");
|
|
11727
|
+
invariant12(payload.token_dst_blockchain_id.length > 0, "Empty token_dst_blockchain_id");
|
|
11728
|
+
invariant12(payload.amount > 0n, "amount must be greater than 0");
|
|
11729
|
+
invariant12(
|
|
11304
11730
|
isValidOriginalAssetAddress(payload.token_src_blockchain_id, payload.token_src),
|
|
11305
11731
|
"unsupported token_src for src chain"
|
|
11306
11732
|
);
|
|
11307
|
-
|
|
11733
|
+
invariant12(
|
|
11308
11734
|
isValidOriginalAssetAddress(payload.token_dst_blockchain_id, payload.token_dst),
|
|
11309
11735
|
"unsupported token_dst for dst chain"
|
|
11310
11736
|
);
|
|
11311
11737
|
const tokenSrc = getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset;
|
|
11312
11738
|
const tokenDst = getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset;
|
|
11313
|
-
|
|
11314
|
-
|
|
11739
|
+
invariant12(tokenSrc, "hub asset not found for token_src");
|
|
11740
|
+
invariant12(tokenDst, "hub asset not found for token_dst");
|
|
11315
11741
|
try {
|
|
11316
11742
|
const response = await fetch(`${config.solverApiEndpoint}/quote`, {
|
|
11317
11743
|
method: "POST",
|
|
@@ -11406,7 +11832,7 @@ var SolverApiService = class {
|
|
|
11406
11832
|
}
|
|
11407
11833
|
}
|
|
11408
11834
|
static async getStatus(request, config) {
|
|
11409
|
-
|
|
11835
|
+
invariant12(request.intent_tx_hash.length > 0, "Empty intent_tx_hash");
|
|
11410
11836
|
try {
|
|
11411
11837
|
const response = await fetch(`${config.solverApiEndpoint}/status`, {
|
|
11412
11838
|
method: "POST",
|
|
@@ -12038,19 +12464,19 @@ var SolverService = class {
|
|
|
12038
12464
|
fee = this.config.partnerFee,
|
|
12039
12465
|
raw
|
|
12040
12466
|
}) {
|
|
12041
|
-
|
|
12467
|
+
invariant12(
|
|
12042
12468
|
isValidOriginalAssetAddress(params.srcChain, params.inputToken),
|
|
12043
12469
|
`Unsupported spoke chain token (params.srcChain): ${params.srcChain}, params.inputToken): ${params.inputToken}`
|
|
12044
12470
|
);
|
|
12045
|
-
|
|
12471
|
+
invariant12(
|
|
12046
12472
|
isValidOriginalAssetAddress(params.dstChain, params.outputToken),
|
|
12047
12473
|
`Unsupported spoke chain token (params.dstChain): ${params.dstChain}, params.outputToken): ${params.outputToken}`
|
|
12048
12474
|
);
|
|
12049
|
-
|
|
12050
|
-
|
|
12475
|
+
invariant12(isValidSpokeChainId(params.srcChain), `Invalid spoke chain (params.srcChain): ${params.srcChain}`);
|
|
12476
|
+
invariant12(isValidSpokeChainId(params.dstChain), `Invalid spoke chain (params.dstChain): ${params.dstChain}`);
|
|
12051
12477
|
try {
|
|
12052
12478
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12053
|
-
|
|
12479
|
+
invariant12(
|
|
12054
12480
|
params.srcAddress.toLowerCase() === walletAddress.toLowerCase(),
|
|
12055
12481
|
"srcAddress must be the same as wallet address"
|
|
12056
12482
|
);
|
|
@@ -12124,8 +12550,8 @@ var SolverService = class {
|
|
|
12124
12550
|
*/
|
|
12125
12551
|
async cancelIntent(intent, spokeProvider, raw) {
|
|
12126
12552
|
try {
|
|
12127
|
-
|
|
12128
|
-
|
|
12553
|
+
invariant12(isValidIntentRelayChainId(intent.srcChain), `Invalid intent.srcChain: ${intent.srcChain}`);
|
|
12554
|
+
invariant12(isValidIntentRelayChainId(intent.dstChain), `Invalid intent.dstChain: ${intent.dstChain}`);
|
|
12129
12555
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12130
12556
|
const creatorHubWalletAddress = await deriveUserWalletAddress(spokeProvider, this.hubProvider, walletAddress);
|
|
12131
12557
|
const calls = [];
|
|
@@ -12172,7 +12598,7 @@ var SolverService = class {
|
|
|
12172
12598
|
* @returns {bigint} The deadline for the swap as a sum of hub chain block timestamp and deadline offset
|
|
12173
12599
|
*/
|
|
12174
12600
|
async getSwapDeadline(deadline = DEFAULT_DEADLINE_OFFSET) {
|
|
12175
|
-
|
|
12601
|
+
invariant12(deadline > 0n, "Deadline must be greater than 0");
|
|
12176
12602
|
const block = await this.hubProvider.publicClient.getBlock({
|
|
12177
12603
|
includeTransactions: false,
|
|
12178
12604
|
blockTag: "latest"
|
|
@@ -12650,7 +13076,7 @@ var IcxMigrationService = class {
|
|
|
12650
13076
|
migrateData(params) {
|
|
12651
13077
|
const calls = [];
|
|
12652
13078
|
const assetConfig = getHubAssetInfo(ICON_MAINNET_CHAIN_ID, params.address);
|
|
12653
|
-
|
|
13079
|
+
invariant12(assetConfig, `hub asset not found for spoke chain token (token): ${params.address}`);
|
|
12654
13080
|
calls.push(
|
|
12655
13081
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.icxMigration, params.amount)
|
|
12656
13082
|
);
|
|
@@ -12666,7 +13092,7 @@ var IcxMigrationService = class {
|
|
|
12666
13092
|
revertMigration(params) {
|
|
12667
13093
|
const calls = [];
|
|
12668
13094
|
const assetConfig = getHubAssetInfo(ICON_MAINNET_CHAIN_ID, params.wICX);
|
|
12669
|
-
|
|
13095
|
+
invariant12(assetConfig, `hub asset not found for spoke chain token (token): ${params.wICX}`);
|
|
12670
13096
|
calls.push(
|
|
12671
13097
|
Erc20Service.encodeApprove(
|
|
12672
13098
|
this.hubProvider.chainConfig.addresses.sodaToken,
|
|
@@ -12762,9 +13188,9 @@ var MigrationService = class {
|
|
|
12762
13188
|
async isAllowanceValid(params, action, spokeProvider) {
|
|
12763
13189
|
try {
|
|
12764
13190
|
if (action === "migrate") {
|
|
12765
|
-
|
|
12766
|
-
|
|
12767
|
-
|
|
13191
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
13192
|
+
invariant12(isAddress(params.to) || isIconAddress(params.to), "To address is required");
|
|
13193
|
+
invariant12(
|
|
12768
13194
|
isIcxMigrateParams(params) || isBalnMigrateParams(params) || isUnifiedBnUSDMigrateParams(params),
|
|
12769
13195
|
"Invalid params"
|
|
12770
13196
|
);
|
|
@@ -12790,9 +13216,9 @@ var MigrationService = class {
|
|
|
12790
13216
|
};
|
|
12791
13217
|
}
|
|
12792
13218
|
if (action === "revert") {
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
13219
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
13220
|
+
invariant12(params.to.length > 0, "To address is required");
|
|
13221
|
+
invariant12(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12796
13222
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12797
13223
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12798
13224
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -12848,9 +13274,9 @@ var MigrationService = class {
|
|
|
12848
13274
|
async approve(params, action, spokeProvider, raw) {
|
|
12849
13275
|
try {
|
|
12850
13276
|
if (action === "migrate") {
|
|
12851
|
-
|
|
12852
|
-
|
|
12853
|
-
|
|
13277
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
13278
|
+
invariant12(params.to.length > 0, "To address is required");
|
|
13279
|
+
invariant12(isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12854
13280
|
if (isUnifiedBnUSDMigrateParams(params) && spokeProvider.chainConfig.chain.type === "EVM") {
|
|
12855
13281
|
const evmSpokeProvider = spokeProvider;
|
|
12856
13282
|
const result = await Erc20Service.approve(
|
|
@@ -12871,9 +13297,9 @@ var MigrationService = class {
|
|
|
12871
13297
|
};
|
|
12872
13298
|
}
|
|
12873
13299
|
if (action === "revert") {
|
|
12874
|
-
|
|
12875
|
-
|
|
12876
|
-
|
|
13300
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
13301
|
+
invariant12(params.to.length > 0, "To address is required");
|
|
13302
|
+
invariant12(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12877
13303
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12878
13304
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12879
13305
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -13285,13 +13711,13 @@ var MigrationService = class {
|
|
|
13285
13711
|
async createMigratebnUSDIntent(params, spokeProvider, unchecked = false, raw) {
|
|
13286
13712
|
try {
|
|
13287
13713
|
if (!unchecked) {
|
|
13288
|
-
|
|
13289
|
-
|
|
13290
|
-
|
|
13291
|
-
|
|
13292
|
-
|
|
13293
|
-
|
|
13294
|
-
|
|
13714
|
+
invariant12(isValidSpokeChainId(params.srcChainId), "Invalid spoke source chain ID");
|
|
13715
|
+
invariant12(isValidSpokeChainId(params.dstChainId), "Invalid spoke destination chain ID");
|
|
13716
|
+
invariant12(params.srcbnUSD.length > 0, "Legacy bnUSD token address is required");
|
|
13717
|
+
invariant12(params.dstbnUSD.length > 0, "New bnUSD token address is required");
|
|
13718
|
+
invariant12(params.amount > 0, "Amount must be greater than 0");
|
|
13719
|
+
invariant12(params.to.length > 0, "Recipient address is required");
|
|
13720
|
+
invariant12(
|
|
13295
13721
|
!(isLegacybnUSDToken(params.srcbnUSD) && isLegacybnUSDToken(params.dstbnUSD)),
|
|
13296
13722
|
"srcbnUSD and dstbnUSD cannot both be legacy bnUSD tokens"
|
|
13297
13723
|
);
|
|
@@ -13299,11 +13725,11 @@ var MigrationService = class {
|
|
|
13299
13725
|
let migrationData;
|
|
13300
13726
|
if (isLegacybnUSDToken(params.srcbnUSD)) {
|
|
13301
13727
|
if (!unchecked) {
|
|
13302
|
-
|
|
13728
|
+
invariant12(
|
|
13303
13729
|
isLegacybnUSDChainId(params.srcChainId),
|
|
13304
13730
|
"srcChainId must be a legacy bnUSD chain (icon, sui, stellar) if srcbnUSD is a legacy bnUSD token"
|
|
13305
13731
|
);
|
|
13306
|
-
|
|
13732
|
+
invariant12(
|
|
13307
13733
|
isNewbnUSDChainId(params.dstChainId),
|
|
13308
13734
|
"dstChainId must be a new bnUSD chain (all spoke chains besides Icon) if dstbnUSD is a legacy bnUSD token"
|
|
13309
13735
|
);
|
|
@@ -13318,15 +13744,15 @@ var MigrationService = class {
|
|
|
13318
13744
|
});
|
|
13319
13745
|
} else if (isLegacybnUSDToken(params.dstbnUSD)) {
|
|
13320
13746
|
if (!unchecked) {
|
|
13321
|
-
|
|
13747
|
+
invariant12(
|
|
13322
13748
|
isLegacybnUSDChainId(params.dstChainId),
|
|
13323
13749
|
"dstChainId must be a legacy bnUSD chain (sui, stellar, icon) if dstbnUSD is a legacy bnUSD token"
|
|
13324
13750
|
);
|
|
13325
|
-
|
|
13751
|
+
invariant12(
|
|
13326
13752
|
isNewbnUSDToken(params.srcbnUSD),
|
|
13327
13753
|
"srcbnUSD must be a new bnUSD token if dstbnUSD is a legacy bnUSD token"
|
|
13328
13754
|
);
|
|
13329
|
-
|
|
13755
|
+
invariant12(
|
|
13330
13756
|
isNewbnUSDChainId(params.srcChainId),
|
|
13331
13757
|
"srcChainId must be a new bnUSD chain (all spoke chains besides Icon) if srcbnUSD is a new bnUSD token"
|
|
13332
13758
|
);
|
|
@@ -13399,13 +13825,13 @@ var MigrationService = class {
|
|
|
13399
13825
|
*/
|
|
13400
13826
|
async createMigrateIcxToSodaIntent(params, spokeProvider, raw) {
|
|
13401
13827
|
try {
|
|
13402
|
-
|
|
13403
|
-
|
|
13404
|
-
|
|
13828
|
+
invariant12(params.amount > 0, "Amount must be greater than 0");
|
|
13829
|
+
invariant12(isAddress(params.to), "Recipient address is required");
|
|
13830
|
+
invariant12(
|
|
13405
13831
|
params.address.toLowerCase() === spokeProvider.chainConfig.addresses.wICX.toLowerCase() || params.address.toLowerCase() === spokeProvider.chainConfig.nativeToken.toLowerCase(),
|
|
13406
13832
|
"Token must be wICX or native ICX token"
|
|
13407
13833
|
);
|
|
13408
|
-
|
|
13834
|
+
invariant12(spokeProvider instanceof IconSpokeProvider, "Spoke provider must be an instance of IconSpokeProvider");
|
|
13409
13835
|
const availableAmount = await this.icxMigration.getAvailableAmount();
|
|
13410
13836
|
if (availableAmount < params.amount) {
|
|
13411
13837
|
throw new Error(
|
|
@@ -13517,7 +13943,7 @@ var BnUSDMigrationService = class {
|
|
|
13517
13943
|
migrateData(params) {
|
|
13518
13944
|
const calls = [];
|
|
13519
13945
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.legacybnUSD);
|
|
13520
|
-
|
|
13946
|
+
invariant12(assetConfig, `hub asset not found for legacy bnUSD token: ${params.legacybnUSD}`);
|
|
13521
13947
|
const bnUSDVault = getMoneyMarketConfig(SONIC_MAINNET_CHAIN_ID).bnUSDVault;
|
|
13522
13948
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, assetConfig.vault, params.amount));
|
|
13523
13949
|
calls.push(EvmVaultTokenService.encodeDeposit(assetConfig.vault, assetConfig.asset, params.amount));
|
|
@@ -13529,7 +13955,7 @@ var BnUSDMigrationService = class {
|
|
|
13529
13955
|
return encodeContractCalls(calls);
|
|
13530
13956
|
}
|
|
13531
13957
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.newbnUSD);
|
|
13532
|
-
|
|
13958
|
+
invariant12(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13533
13959
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.asset, translatedAmount));
|
|
13534
13960
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
13535
13961
|
dstAssetConfig.decimal,
|
|
@@ -13562,14 +13988,14 @@ var BnUSDMigrationService = class {
|
|
|
13562
13988
|
let decimals = 18;
|
|
13563
13989
|
if (params.newbnUSD.toLowerCase() !== bnUSDVault.toLowerCase()) {
|
|
13564
13990
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.newbnUSD);
|
|
13565
|
-
|
|
13991
|
+
invariant12(assetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13566
13992
|
decimals = assetConfig.decimal;
|
|
13567
13993
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, bnUSDVault, params.amount));
|
|
13568
13994
|
calls.push(EvmVaultTokenService.encodeDeposit(bnUSDVault, assetConfig.asset, params.amount));
|
|
13569
13995
|
}
|
|
13570
13996
|
const translatedAmount = EvmVaultTokenService.translateIncomingDecimals(decimals, params.amount);
|
|
13571
13997
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.legacybnUSD);
|
|
13572
|
-
|
|
13998
|
+
invariant12(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.legacybnUSD}`);
|
|
13573
13999
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.vault, translatedAmount));
|
|
13574
14000
|
calls.push(EvmVaultTokenService.encodeWithdraw(dstAssetConfig.vault, dstAssetConfig.asset, translatedAmount));
|
|
13575
14001
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
@@ -13652,7 +14078,7 @@ var BalnSwapService = class {
|
|
|
13652
14078
|
*/
|
|
13653
14079
|
async swapData(balnToken, params) {
|
|
13654
14080
|
const assetConfig = getHubAssetInfo(ICON_MAINNET_CHAIN_ID, balnToken);
|
|
13655
|
-
|
|
14081
|
+
invariant12(assetConfig, `hub asset not found for baln token: ${balnToken}`);
|
|
13656
14082
|
const calls = [];
|
|
13657
14083
|
calls.push(
|
|
13658
14084
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.balnSwap, params.amount)
|
|
@@ -13831,6 +14257,659 @@ var BalnSwapService = class {
|
|
|
13831
14257
|
}
|
|
13832
14258
|
};
|
|
13833
14259
|
|
|
14260
|
+
// src/services/backend/BackendApiService.ts
|
|
14261
|
+
var BackendApiService = class {
|
|
14262
|
+
baseURL;
|
|
14263
|
+
defaultHeaders;
|
|
14264
|
+
timeout;
|
|
14265
|
+
constructor(config) {
|
|
14266
|
+
this.baseURL = config?.baseURL ?? DEFAULT_BACKEND_API_ENDPOINT;
|
|
14267
|
+
this.timeout = config?.timeout ?? DEFAULT_BACKEND_API_TIMEOUT;
|
|
14268
|
+
this.defaultHeaders = config?.headers ?? DEFAULT_BACKEND_API_HEADERS;
|
|
14269
|
+
}
|
|
14270
|
+
/**
|
|
14271
|
+
* Make HTTP request using fetch API
|
|
14272
|
+
* @param endpoint - API endpoint path
|
|
14273
|
+
* @param config - Request configuration
|
|
14274
|
+
* @returns Promise<T>
|
|
14275
|
+
*/
|
|
14276
|
+
async makeRequest(endpoint, config) {
|
|
14277
|
+
const url = `${this.baseURL}${endpoint}`;
|
|
14278
|
+
const headers = { ...this.defaultHeaders, ...config.headers };
|
|
14279
|
+
const controller = new AbortController();
|
|
14280
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
14281
|
+
try {
|
|
14282
|
+
const response = await fetch(url, {
|
|
14283
|
+
method: config.method,
|
|
14284
|
+
headers,
|
|
14285
|
+
body: config.body,
|
|
14286
|
+
signal: controller.signal
|
|
14287
|
+
});
|
|
14288
|
+
clearTimeout(timeoutId);
|
|
14289
|
+
if (!response.ok) {
|
|
14290
|
+
const errorText = await response.text();
|
|
14291
|
+
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
14292
|
+
}
|
|
14293
|
+
const data = await response.json();
|
|
14294
|
+
return data;
|
|
14295
|
+
} catch (error) {
|
|
14296
|
+
clearTimeout(timeoutId);
|
|
14297
|
+
if (error instanceof Error) {
|
|
14298
|
+
if (error.name === "AbortError") {
|
|
14299
|
+
throw new Error(`Request timeout after ${this.timeout}ms`);
|
|
14300
|
+
}
|
|
14301
|
+
console.error("[BackendApiService] Request error:", error.message);
|
|
14302
|
+
throw error;
|
|
14303
|
+
}
|
|
14304
|
+
console.error("[BackendApiService] Unknown error:", error);
|
|
14305
|
+
throw new Error("Unknown error occurred");
|
|
14306
|
+
}
|
|
14307
|
+
}
|
|
14308
|
+
// Intent endpoints
|
|
14309
|
+
/**
|
|
14310
|
+
* Get intent details by transaction hash
|
|
14311
|
+
* @param txHash - Transaction hash
|
|
14312
|
+
* @returns Promise<IntentResponse>
|
|
14313
|
+
*/
|
|
14314
|
+
async getIntentByTxHash(txHash) {
|
|
14315
|
+
return this.makeRequest(`/intent/tx/${txHash}`, { method: "GET" });
|
|
14316
|
+
}
|
|
14317
|
+
/**
|
|
14318
|
+
* Get intent details by intent hash
|
|
14319
|
+
* @param intentHash - Intent hash
|
|
14320
|
+
* @returns Promise<IntentResponse>
|
|
14321
|
+
*/
|
|
14322
|
+
async getIntentByHash(intentHash) {
|
|
14323
|
+
return this.makeRequest(`/intent/${intentHash}`, { method: "GET" });
|
|
14324
|
+
}
|
|
14325
|
+
// Solver endpoints
|
|
14326
|
+
/**
|
|
14327
|
+
* Get the solver orderbook
|
|
14328
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14329
|
+
* @returns Promise<OrderbookResponse>
|
|
14330
|
+
*/
|
|
14331
|
+
async getOrderbook(params) {
|
|
14332
|
+
const queryParams = new URLSearchParams();
|
|
14333
|
+
queryParams.append("offset", params.offset);
|
|
14334
|
+
queryParams.append("limit", params.limit);
|
|
14335
|
+
const queryString = queryParams.toString();
|
|
14336
|
+
const endpoint = `/solver/orderbook?${queryString}`;
|
|
14337
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14338
|
+
}
|
|
14339
|
+
// Money Market endpoints
|
|
14340
|
+
/**
|
|
14341
|
+
* Get money market position for a specific user
|
|
14342
|
+
* @param userAddress - User's wallet address
|
|
14343
|
+
* @returns Promise<MoneyMarketPosition>
|
|
14344
|
+
*/
|
|
14345
|
+
async getMoneyMarketPosition(userAddress) {
|
|
14346
|
+
return this.makeRequest(`/moneymarket/position/${userAddress}`, { method: "GET" });
|
|
14347
|
+
}
|
|
14348
|
+
/**
|
|
14349
|
+
* Get all money market assets
|
|
14350
|
+
* @returns Promise<MoneyMarketAsset[]>
|
|
14351
|
+
*/
|
|
14352
|
+
async getAllMoneyMarketAssets() {
|
|
14353
|
+
return this.makeRequest("/moneymarket/asset/all", { method: "GET" });
|
|
14354
|
+
}
|
|
14355
|
+
/**
|
|
14356
|
+
* Get specific money market asset details
|
|
14357
|
+
* @param reserveAddress - Reserve contract address
|
|
14358
|
+
* @returns Promise<MoneyMarketAsset>
|
|
14359
|
+
*/
|
|
14360
|
+
async getMoneyMarketAsset(reserveAddress) {
|
|
14361
|
+
return this.makeRequest(`/moneymarket/asset/${reserveAddress}`, { method: "GET" });
|
|
14362
|
+
}
|
|
14363
|
+
/**
|
|
14364
|
+
* Get borrowers for a specific money market asset
|
|
14365
|
+
* @param reserveAddress - Reserve contract address
|
|
14366
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14367
|
+
* @returns Promise<MoneyMarketAssetBorrowers>
|
|
14368
|
+
*/
|
|
14369
|
+
async getMoneyMarketAssetBorrowers(reserveAddress, params) {
|
|
14370
|
+
const queryParams = new URLSearchParams();
|
|
14371
|
+
queryParams.append("offset", params.offset);
|
|
14372
|
+
queryParams.append("limit", params.limit);
|
|
14373
|
+
const queryString = queryParams.toString();
|
|
14374
|
+
const endpoint = `/moneymarket/asset/${reserveAddress}/borrowers?${queryString}`;
|
|
14375
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14376
|
+
}
|
|
14377
|
+
/**
|
|
14378
|
+
* Get suppliers for a specific money market asset
|
|
14379
|
+
* @param reserveAddress - Reserve contract address
|
|
14380
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14381
|
+
* @returns Promise<MoneyMarketAssetSuppliers>
|
|
14382
|
+
*/
|
|
14383
|
+
async getMoneyMarketAssetSuppliers(reserveAddress, params) {
|
|
14384
|
+
const queryParams = new URLSearchParams();
|
|
14385
|
+
queryParams.append("offset", params.offset);
|
|
14386
|
+
queryParams.append("limit", params.limit);
|
|
14387
|
+
const queryString = queryParams.toString();
|
|
14388
|
+
const endpoint = `/moneymarket/asset/${reserveAddress}/suppliers?${queryString}`;
|
|
14389
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14390
|
+
}
|
|
14391
|
+
/**
|
|
14392
|
+
* Get all money market borrowers
|
|
14393
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14394
|
+
* @returns Promise<MoneyMarketBorrowers>
|
|
14395
|
+
*/
|
|
14396
|
+
async getAllMoneyMarketBorrowers(params) {
|
|
14397
|
+
const queryParams = new URLSearchParams();
|
|
14398
|
+
queryParams.append("offset", params.offset);
|
|
14399
|
+
queryParams.append("limit", params.limit);
|
|
14400
|
+
const queryString = queryParams.toString();
|
|
14401
|
+
const endpoint = `/moneymarket/borrowers?${queryString}`;
|
|
14402
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14403
|
+
}
|
|
14404
|
+
/**
|
|
14405
|
+
* Set custom headers for API requests
|
|
14406
|
+
* @param headers - Object containing header key-value pairs
|
|
14407
|
+
*/
|
|
14408
|
+
setHeaders(headers) {
|
|
14409
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
14410
|
+
this.defaultHeaders[key] = value;
|
|
14411
|
+
});
|
|
14412
|
+
}
|
|
14413
|
+
/**
|
|
14414
|
+
* Get the current base URL
|
|
14415
|
+
* @returns string
|
|
14416
|
+
*/
|
|
14417
|
+
getBaseURL() {
|
|
14418
|
+
return this.baseURL;
|
|
14419
|
+
}
|
|
14420
|
+
};
|
|
14421
|
+
var BridgeService = class {
|
|
14422
|
+
hubProvider;
|
|
14423
|
+
relayerApiEndpoint;
|
|
14424
|
+
config;
|
|
14425
|
+
constructor(hubProvider, relayerApiEndpoint, config = void 0) {
|
|
14426
|
+
this.config = config ? config : { partnerFee: void 0 };
|
|
14427
|
+
this.hubProvider = hubProvider;
|
|
14428
|
+
this.relayerApiEndpoint = relayerApiEndpoint;
|
|
14429
|
+
}
|
|
14430
|
+
/**
|
|
14431
|
+
* Get the fee for a given input amount
|
|
14432
|
+
* @param {bigint} inputAmount - The amount of input tokens
|
|
14433
|
+
* @returns {Promise<bigint>} The fee amount (denominated in input tokens)
|
|
14434
|
+
*
|
|
14435
|
+
* @example
|
|
14436
|
+
* const fee: bigint = await sodax.bridge.getFee(1000000000000000n);
|
|
14437
|
+
* console.log('Fee:', fee);
|
|
14438
|
+
*/
|
|
14439
|
+
getFee(inputAmount) {
|
|
14440
|
+
if (!this.config.partnerFee) {
|
|
14441
|
+
return 0n;
|
|
14442
|
+
}
|
|
14443
|
+
return calculateFeeAmount(inputAmount, this.config.partnerFee);
|
|
14444
|
+
}
|
|
14445
|
+
/**
|
|
14446
|
+
* Check if allowance is valid for the bridge transaction
|
|
14447
|
+
* @param params - The bridge parameters
|
|
14448
|
+
* @param spokeProvider - The spoke provider
|
|
14449
|
+
* @returns {Promise<Result<boolean, BridgeError<'ALLOWANCE_CHECK_FAILED'>>>}
|
|
14450
|
+
*/
|
|
14451
|
+
async isAllowanceValid({
|
|
14452
|
+
params,
|
|
14453
|
+
spokeProvider
|
|
14454
|
+
}) {
|
|
14455
|
+
try {
|
|
14456
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
14457
|
+
invariant12(params.srcAsset.length > 0, "Source asset is required");
|
|
14458
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14459
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
14460
|
+
invariant12(isAddress(params.srcAsset), "Invalid source asset address for EVM chain");
|
|
14461
|
+
const allowanceResult = await Erc20Service.isAllowanceValid(
|
|
14462
|
+
params.srcAsset,
|
|
14463
|
+
params.amount,
|
|
14464
|
+
walletAddress,
|
|
14465
|
+
spokeProvider.chainConfig.addresses.assetManager,
|
|
14466
|
+
spokeProvider
|
|
14467
|
+
);
|
|
14468
|
+
if (!allowanceResult.ok) {
|
|
14469
|
+
return {
|
|
14470
|
+
ok: false,
|
|
14471
|
+
error: {
|
|
14472
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14473
|
+
error: allowanceResult.error
|
|
14474
|
+
}
|
|
14475
|
+
};
|
|
14476
|
+
}
|
|
14477
|
+
return {
|
|
14478
|
+
ok: true,
|
|
14479
|
+
value: allowanceResult.value
|
|
14480
|
+
};
|
|
14481
|
+
}
|
|
14482
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
14483
|
+
invariant12(isAddress(params.srcAsset), "Invalid source asset address for Sonic chain");
|
|
14484
|
+
const userRouter = await SonicSpokeService.getUserRouter(walletAddress, spokeProvider);
|
|
14485
|
+
const allowanceResult = await Erc20Service.isAllowanceValid(
|
|
14486
|
+
params.srcAsset,
|
|
14487
|
+
params.amount,
|
|
14488
|
+
walletAddress,
|
|
14489
|
+
userRouter,
|
|
14490
|
+
spokeProvider
|
|
14491
|
+
);
|
|
14492
|
+
if (!allowanceResult.ok) {
|
|
14493
|
+
return {
|
|
14494
|
+
ok: false,
|
|
14495
|
+
error: {
|
|
14496
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14497
|
+
error: allowanceResult.error
|
|
14498
|
+
}
|
|
14499
|
+
};
|
|
14500
|
+
}
|
|
14501
|
+
return {
|
|
14502
|
+
ok: true,
|
|
14503
|
+
value: allowanceResult.value
|
|
14504
|
+
};
|
|
14505
|
+
}
|
|
14506
|
+
return {
|
|
14507
|
+
ok: true,
|
|
14508
|
+
value: true
|
|
14509
|
+
};
|
|
14510
|
+
} catch (error) {
|
|
14511
|
+
return {
|
|
14512
|
+
ok: false,
|
|
14513
|
+
error: {
|
|
14514
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14515
|
+
error
|
|
14516
|
+
}
|
|
14517
|
+
};
|
|
14518
|
+
}
|
|
14519
|
+
}
|
|
14520
|
+
/**
|
|
14521
|
+
* Approve token spending for the bridge transaction
|
|
14522
|
+
* @param params - The bridge parameters
|
|
14523
|
+
* @param spokeProvider - The spoke provider
|
|
14524
|
+
* @param raw - Whether to return raw transaction data
|
|
14525
|
+
* @returns Promise<Result<TxReturnType<S, R>, BridgeError<'APPROVAL_FAILED'>>>
|
|
14526
|
+
*/
|
|
14527
|
+
async approve({
|
|
14528
|
+
params,
|
|
14529
|
+
spokeProvider,
|
|
14530
|
+
raw
|
|
14531
|
+
}) {
|
|
14532
|
+
try {
|
|
14533
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
14534
|
+
invariant12(params.srcAsset.length > 0, "Source asset is required");
|
|
14535
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14536
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
14537
|
+
invariant12(isAddress(params.srcAsset), "Invalid source asset address for EVM chain");
|
|
14538
|
+
const result = await Erc20Service.approve(
|
|
14539
|
+
params.srcAsset,
|
|
14540
|
+
params.amount,
|
|
14541
|
+
spokeProvider.chainConfig.addresses.assetManager,
|
|
14542
|
+
spokeProvider,
|
|
14543
|
+
raw
|
|
14544
|
+
);
|
|
14545
|
+
return {
|
|
14546
|
+
ok: true,
|
|
14547
|
+
value: result
|
|
14548
|
+
};
|
|
14549
|
+
}
|
|
14550
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
14551
|
+
invariant12(isAddress(params.srcAsset), "Invalid source asset address for Sonic chain");
|
|
14552
|
+
const userRouter = await SonicSpokeService.getUserRouter(
|
|
14553
|
+
walletAddress,
|
|
14554
|
+
spokeProvider
|
|
14555
|
+
);
|
|
14556
|
+
const result = await Erc20Service.approve(params.srcAsset, params.amount, userRouter, spokeProvider, raw);
|
|
14557
|
+
return {
|
|
14558
|
+
ok: true,
|
|
14559
|
+
value: result
|
|
14560
|
+
};
|
|
14561
|
+
}
|
|
14562
|
+
return {
|
|
14563
|
+
ok: false,
|
|
14564
|
+
error: {
|
|
14565
|
+
code: "APPROVAL_FAILED",
|
|
14566
|
+
error: new Error("Approval only supported for EVM spoke chains")
|
|
14567
|
+
}
|
|
14568
|
+
};
|
|
14569
|
+
} catch (error) {
|
|
14570
|
+
console.error(error);
|
|
14571
|
+
return {
|
|
14572
|
+
ok: false,
|
|
14573
|
+
error: {
|
|
14574
|
+
code: "APPROVAL_FAILED",
|
|
14575
|
+
error
|
|
14576
|
+
}
|
|
14577
|
+
};
|
|
14578
|
+
}
|
|
14579
|
+
}
|
|
14580
|
+
/**
|
|
14581
|
+
* Execute a bridge transaction to transfer tokens from one chain to another
|
|
14582
|
+
* @param params - The bridge parameters including source/destination chains, assets, and recipient
|
|
14583
|
+
* @param spokeProvider - The spoke provider for the source chain
|
|
14584
|
+
* @param timeout - The timeout in milliseconds for the transaction. Default is 60 seconds.
|
|
14585
|
+
* @returns {Promise<Result<[SpokeTxHash, HubTxHash], BridgeError<BridgeErrorCode>>>} - Returns the transaction hashes for both spoke and hub chains or error
|
|
14586
|
+
*
|
|
14587
|
+
* @example
|
|
14588
|
+
* const result = await sodax.bridge.bridge(
|
|
14589
|
+
* {
|
|
14590
|
+
* srcChainId: '0x2105.base',
|
|
14591
|
+
* srcAsset: '0x...', // Address of the source token
|
|
14592
|
+
* amount: 1000n, // Amount to bridge (in token decimals)
|
|
14593
|
+
* dstChainId: '0x89.polygon',
|
|
14594
|
+
* dstAsset: '0x...', // Address of the destination token
|
|
14595
|
+
* recipient: '0x...', // Recipient address on destination chain
|
|
14596
|
+
* partnerFee: { address: '0x...', percentage: 0.1 } // Optional partner fee. Partner fees and denominated in vault token decimals (18)
|
|
14597
|
+
* },
|
|
14598
|
+
* spokeProvider,
|
|
14599
|
+
* 30000 // Optional timeout in milliseconds (default: 60000, i.e. 60 seconds)
|
|
14600
|
+
* );
|
|
14601
|
+
*
|
|
14602
|
+
* if (!result.ok) {
|
|
14603
|
+
* // Handle error
|
|
14604
|
+
* }
|
|
14605
|
+
*
|
|
14606
|
+
* const [
|
|
14607
|
+
* spokeTxHash, // transaction hash on the source chain
|
|
14608
|
+
* hubTxHash, // transaction hash on the hub chain
|
|
14609
|
+
* ] = result.value;
|
|
14610
|
+
* console.log('Bridge transaction hashes:', { spokeTxHash, hubTxHash });
|
|
14611
|
+
*/
|
|
14612
|
+
async bridge({
|
|
14613
|
+
params,
|
|
14614
|
+
spokeProvider,
|
|
14615
|
+
fee = this.config.partnerFee,
|
|
14616
|
+
timeout = DEFAULT_RELAY_TX_TIMEOUT
|
|
14617
|
+
}) {
|
|
14618
|
+
try {
|
|
14619
|
+
const txResult = await this.createBridgeIntent({ params, spokeProvider, fee, raw: false });
|
|
14620
|
+
if (!txResult.ok) {
|
|
14621
|
+
return txResult;
|
|
14622
|
+
}
|
|
14623
|
+
const packetResult = await relayTxAndWaitPacket(
|
|
14624
|
+
txResult.value,
|
|
14625
|
+
spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
|
|
14626
|
+
spokeProvider,
|
|
14627
|
+
this.relayerApiEndpoint,
|
|
14628
|
+
timeout
|
|
14629
|
+
);
|
|
14630
|
+
if (!packetResult.ok) {
|
|
14631
|
+
return {
|
|
14632
|
+
ok: false,
|
|
14633
|
+
error: {
|
|
14634
|
+
code: packetResult.error.code,
|
|
14635
|
+
error: packetResult.error
|
|
14636
|
+
}
|
|
14637
|
+
};
|
|
14638
|
+
}
|
|
14639
|
+
return { ok: true, value: [txResult.value, packetResult.value.dst_tx_hash] };
|
|
14640
|
+
} catch (error) {
|
|
14641
|
+
return {
|
|
14642
|
+
ok: false,
|
|
14643
|
+
error: {
|
|
14644
|
+
code: "BRIDGE_FAILED",
|
|
14645
|
+
error
|
|
14646
|
+
}
|
|
14647
|
+
};
|
|
14648
|
+
}
|
|
14649
|
+
}
|
|
14650
|
+
/**
|
|
14651
|
+
* Create bridge intent only (without relaying to hub)
|
|
14652
|
+
* NOTE: This method only executes the transaction on the spoke chain and creates the bridge intent
|
|
14653
|
+
* In order to successfully bridge tokens, you need to:
|
|
14654
|
+
* 1. Check if the allowance is sufficient using isAllowanceValid
|
|
14655
|
+
* 2. Approve the appropriate contract to spend the tokens using approve
|
|
14656
|
+
* 3. Create the bridge intent using this method
|
|
14657
|
+
* 4. Relay the transaction to the hub and await completion using the bridge method
|
|
14658
|
+
*
|
|
14659
|
+
* @param params - The bridge parameters including source/destination chains, assets, and recipient
|
|
14660
|
+
* @param spokeProvider - The spoke provider for the source chain
|
|
14661
|
+
* @param raw - Whether to return the raw transaction data
|
|
14662
|
+
* @returns {Promise<Result<TxReturnType<S, R>, BridgeError<BridgeErrorCode>>>} - Returns the transaction result
|
|
14663
|
+
*
|
|
14664
|
+
* @example
|
|
14665
|
+
* const bridgeService = new BridgeService(hubProvider, relayerApiEndpoint);
|
|
14666
|
+
* const result = await sodax.bridge.createBridgeIntent(
|
|
14667
|
+
* {
|
|
14668
|
+
* srcChainId: 'ethereum',
|
|
14669
|
+
* srcAsset: "0x123...", // source token address
|
|
14670
|
+
* amount: 1000000000000000000n, // 1 token in wei
|
|
14671
|
+
* dstChainId: 'polygon',
|
|
14672
|
+
* dstAsset: "0x456...", // destination token address
|
|
14673
|
+
* recipient: "0x789..." // recipient address
|
|
14674
|
+
* },
|
|
14675
|
+
* spokeProvider,
|
|
14676
|
+
* raw // Optional: true = return the raw transaction data, false = execute and return the transaction hash (default: false)
|
|
14677
|
+
* );
|
|
14678
|
+
*
|
|
14679
|
+
* if (result.ok) {
|
|
14680
|
+
* const txHash = result.value;
|
|
14681
|
+
* console.log('Bridge intent transaction hash:', txHash);
|
|
14682
|
+
* } else {
|
|
14683
|
+
* console.error('Bridge intent creation failed:', result.error);
|
|
14684
|
+
* }
|
|
14685
|
+
*/
|
|
14686
|
+
async createBridgeIntent({
|
|
14687
|
+
params,
|
|
14688
|
+
spokeProvider,
|
|
14689
|
+
fee = this.config.partnerFee,
|
|
14690
|
+
raw
|
|
14691
|
+
}) {
|
|
14692
|
+
try {
|
|
14693
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
14694
|
+
const srcAssetInfo = getHubAssetInfo(params.srcChainId, params.srcAsset);
|
|
14695
|
+
const dstAssetInfo = getHubAssetInfo(params.dstChainId, params.dstAsset);
|
|
14696
|
+
invariant12(srcAssetInfo, `Unsupported spoke chain (${params.srcChainId}) token: ${params.srcAsset}`);
|
|
14697
|
+
invariant12(dstAssetInfo, `Unsupported spoke chain (${params.dstChainId}) token: ${params.dstAsset}`);
|
|
14698
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14699
|
+
const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
|
|
14700
|
+
walletAddress,
|
|
14701
|
+
spokeProvider,
|
|
14702
|
+
this.hubProvider
|
|
14703
|
+
);
|
|
14704
|
+
const data = this.buildBridgeData(params, srcAssetInfo, dstAssetInfo, fee);
|
|
14705
|
+
const txResult = await SpokeService.deposit(
|
|
14706
|
+
{
|
|
14707
|
+
from: walletAddress,
|
|
14708
|
+
to: hubWallet,
|
|
14709
|
+
token: params.srcAsset,
|
|
14710
|
+
amount: params.amount,
|
|
14711
|
+
data
|
|
14712
|
+
},
|
|
14713
|
+
spokeProvider,
|
|
14714
|
+
this.hubProvider,
|
|
14715
|
+
raw
|
|
14716
|
+
);
|
|
14717
|
+
return {
|
|
14718
|
+
ok: true,
|
|
14719
|
+
value: txResult,
|
|
14720
|
+
data: {
|
|
14721
|
+
address: hubWallet,
|
|
14722
|
+
payload: data
|
|
14723
|
+
}
|
|
14724
|
+
};
|
|
14725
|
+
} catch (error) {
|
|
14726
|
+
console.error(error);
|
|
14727
|
+
return {
|
|
14728
|
+
ok: false,
|
|
14729
|
+
error: {
|
|
14730
|
+
code: "CREATE_BRIDGE_INTENT_FAILED",
|
|
14731
|
+
error
|
|
14732
|
+
}
|
|
14733
|
+
};
|
|
14734
|
+
}
|
|
14735
|
+
}
|
|
14736
|
+
/**
|
|
14737
|
+
* Build the bridge transaction data for executing the bridge operation on the hub
|
|
14738
|
+
* @param params - The create bridge intent parameters
|
|
14739
|
+
* @param srcAssetInfo - The source asset information
|
|
14740
|
+
* @param dstAssetInfo - The destination asset information
|
|
14741
|
+
* @returns Hex - The encoded contract calls for the bridge operation
|
|
14742
|
+
*/
|
|
14743
|
+
buildBridgeData(params, srcAssetInfo, dstAssetInfo, partnerFee) {
|
|
14744
|
+
const calls = [];
|
|
14745
|
+
let translatedAmount = params.amount;
|
|
14746
|
+
let srcVault = params.srcAsset;
|
|
14747
|
+
if (!isValidVault(srcAssetInfo.asset)) {
|
|
14748
|
+
calls.push(Erc20Service.encodeApprove(srcAssetInfo.asset, srcAssetInfo.vault, params.amount));
|
|
14749
|
+
calls.push(EvmVaultTokenService.encodeDeposit(srcAssetInfo.vault, srcAssetInfo.asset, params.amount));
|
|
14750
|
+
translatedAmount = EvmVaultTokenService.translateIncomingDecimals(srcAssetInfo.decimal, params.amount);
|
|
14751
|
+
srcVault = srcAssetInfo.vault;
|
|
14752
|
+
}
|
|
14753
|
+
const feeAmount = calculateFeeAmount(translatedAmount, partnerFee);
|
|
14754
|
+
if (partnerFee && feeAmount > 0n) {
|
|
14755
|
+
calls.push(Erc20Service.encodeTransfer(srcVault, partnerFee.address, feeAmount));
|
|
14756
|
+
}
|
|
14757
|
+
const withdrawAmount = translatedAmount - feeAmount;
|
|
14758
|
+
let translatedWithdrawAmount = withdrawAmount;
|
|
14759
|
+
if (!isValidVault(dstAssetInfo.asset)) {
|
|
14760
|
+
calls.push(EvmVaultTokenService.encodeWithdraw(dstAssetInfo.vault, dstAssetInfo.asset, withdrawAmount));
|
|
14761
|
+
translatedWithdrawAmount = EvmVaultTokenService.translateOutgoingDecimals(dstAssetInfo.decimal, withdrawAmount);
|
|
14762
|
+
}
|
|
14763
|
+
const encodedRecipientAddress = encodeAddress(params.dstChainId, params.recipient);
|
|
14764
|
+
if (params.dstChainId === this.hubProvider.chainConfig.chain.id) {
|
|
14765
|
+
calls.push(Erc20Service.encodeTransfer(dstAssetInfo.asset, encodedRecipientAddress, translatedWithdrawAmount));
|
|
14766
|
+
} else {
|
|
14767
|
+
invariant12(dstAssetInfo, `Unsupported hub chain (${params.dstChainId}) token: ${params.dstAsset}`);
|
|
14768
|
+
calls.push(
|
|
14769
|
+
EvmAssetManagerService.encodeTransfer(
|
|
14770
|
+
dstAssetInfo.asset,
|
|
14771
|
+
encodedRecipientAddress,
|
|
14772
|
+
translatedWithdrawAmount,
|
|
14773
|
+
this.hubProvider.chainConfig.addresses.assetManager
|
|
14774
|
+
)
|
|
14775
|
+
);
|
|
14776
|
+
}
|
|
14777
|
+
return encodeContractCalls(calls);
|
|
14778
|
+
}
|
|
14779
|
+
/**
|
|
14780
|
+
* Retrieves the deposited token balance held by the asset manager on a spoke chain.
|
|
14781
|
+
* This balance represents the available liquidity for bridging operations and is used to verify
|
|
14782
|
+
* that the target chain has sufficient funds to complete a bridge transaction.
|
|
14783
|
+
*
|
|
14784
|
+
* @param spokeProvider - The spoke provider instance
|
|
14785
|
+
* @param token - The token address to query the balance for
|
|
14786
|
+
* @returns {Promise<bigint>} - The token balance as a bigint value
|
|
14787
|
+
*/
|
|
14788
|
+
async getBridgeableAmount(from, to) {
|
|
14789
|
+
try {
|
|
14790
|
+
const fromHubAsset = getHubAssetInfo(from.xChainId, from.address);
|
|
14791
|
+
const toHubAsset = getHubAssetInfo(to.xChainId, to.address);
|
|
14792
|
+
invariant12(fromHubAsset, `Hub asset not found for token ${from.address} on chain ${from.xChainId}`);
|
|
14793
|
+
invariant12(toHubAsset, `Hub asset not found for token ${to.address} on chain ${to.xChainId}`);
|
|
14794
|
+
const [depositTokenInfo, reserves] = await Promise.all([
|
|
14795
|
+
EvmVaultTokenService.getTokenInfo(fromHubAsset.vault, fromHubAsset.asset, this.hubProvider.publicClient),
|
|
14796
|
+
EvmVaultTokenService.getVaultReserves(toHubAsset.vault, this.hubProvider.publicClient)
|
|
14797
|
+
]);
|
|
14798
|
+
if (!isValidVault(fromHubAsset.asset) && isValidVault(toHubAsset.asset)) {
|
|
14799
|
+
const fromTokenIndex2 = reserves.tokens.findIndex((t) => t.toLowerCase() === fromHubAsset.asset.toLowerCase());
|
|
14800
|
+
invariant12(
|
|
14801
|
+
fromTokenIndex2 !== -1,
|
|
14802
|
+
`Token ${fromHubAsset.asset} not found in the vault reserves for chain ${from.xChainId}`
|
|
14803
|
+
);
|
|
14804
|
+
const fromTokenDepositedAmount2 = reserves.balances[fromTokenIndex2] ?? 0n;
|
|
14805
|
+
const availableDeposit2 = depositTokenInfo.maxDeposit - fromTokenDepositedAmount2;
|
|
14806
|
+
return {
|
|
14807
|
+
ok: true,
|
|
14808
|
+
value: availableDeposit2
|
|
14809
|
+
};
|
|
14810
|
+
}
|
|
14811
|
+
if (isValidVault(fromHubAsset.asset)) {
|
|
14812
|
+
const tokenIndex2 = reserves.tokens.findIndex((t) => t.toLowerCase() === toHubAsset.asset.toLowerCase());
|
|
14813
|
+
invariant12(
|
|
14814
|
+
tokenIndex2 !== -1,
|
|
14815
|
+
`Token ${toHubAsset.asset} not found in the vault reserves for chain ${to.xChainId}`
|
|
14816
|
+
);
|
|
14817
|
+
const assetManagerBalance2 = reserves.balances[tokenIndex2] ?? 0n;
|
|
14818
|
+
return {
|
|
14819
|
+
ok: true,
|
|
14820
|
+
value: assetManagerBalance2
|
|
14821
|
+
};
|
|
14822
|
+
}
|
|
14823
|
+
const fromTokenIndex = reserves.tokens.findIndex((t) => t.toLowerCase() === fromHubAsset.asset.toLowerCase());
|
|
14824
|
+
invariant12(
|
|
14825
|
+
fromTokenIndex !== -1,
|
|
14826
|
+
`Token ${fromHubAsset.asset} not found in the vault reserves for chain ${from.xChainId}`
|
|
14827
|
+
);
|
|
14828
|
+
const fromTokenDepositedAmount = reserves.balances[fromTokenIndex] ?? 0n;
|
|
14829
|
+
const availableDeposit = depositTokenInfo.maxDeposit - fromTokenDepositedAmount;
|
|
14830
|
+
const tokenIndex = reserves.tokens.findIndex((t) => t.toLowerCase() === toHubAsset.asset.toLowerCase());
|
|
14831
|
+
invariant12(
|
|
14832
|
+
tokenIndex !== -1,
|
|
14833
|
+
`Token ${toHubAsset.asset} not found in the vault reserves for chain ${to.xChainId}`
|
|
14834
|
+
);
|
|
14835
|
+
const assetManagerBalance = reserves.balances[tokenIndex] ?? 0n;
|
|
14836
|
+
return {
|
|
14837
|
+
ok: true,
|
|
14838
|
+
value: availableDeposit < assetManagerBalance ? availableDeposit : assetManagerBalance
|
|
14839
|
+
};
|
|
14840
|
+
} catch (error) {
|
|
14841
|
+
console.error(error);
|
|
14842
|
+
return {
|
|
14843
|
+
ok: false,
|
|
14844
|
+
error
|
|
14845
|
+
};
|
|
14846
|
+
}
|
|
14847
|
+
}
|
|
14848
|
+
/**
|
|
14849
|
+
* Check if two assets on different chains are bridgeable
|
|
14850
|
+
* Two assets are bridgeable if they share the same vault on the hub chain
|
|
14851
|
+
* @param from - The source X token
|
|
14852
|
+
* @param to - The destination X token
|
|
14853
|
+
* @param unchecked - Whether to skip the chain ID validation
|
|
14854
|
+
* @returns boolean - true if assets are bridgeable, false otherwise
|
|
14855
|
+
*/
|
|
14856
|
+
isBridgeable({
|
|
14857
|
+
from,
|
|
14858
|
+
to,
|
|
14859
|
+
unchecked = false
|
|
14860
|
+
}) {
|
|
14861
|
+
try {
|
|
14862
|
+
if (!unchecked) {
|
|
14863
|
+
invariant12(isValidSpokeChainId(from.xChainId), `Invalid spoke chain (${from.xChainId})`);
|
|
14864
|
+
invariant12(isValidSpokeChainId(to.xChainId), `Invalid spoke chain (${to.xChainId})`);
|
|
14865
|
+
}
|
|
14866
|
+
const srcAssetInfo = getHubAssetInfo(from.xChainId, from.address);
|
|
14867
|
+
const dstAssetInfo = getHubAssetInfo(to.xChainId, to.address);
|
|
14868
|
+
invariant12(srcAssetInfo, `Hub asset not found for token ${from.address} on chain ${from.xChainId}`);
|
|
14869
|
+
invariant12(dstAssetInfo, `Hub asset not found for token ${to.address} on chain ${to.xChainId}`);
|
|
14870
|
+
return srcAssetInfo.vault.toLowerCase() === dstAssetInfo.vault.toLowerCase();
|
|
14871
|
+
} catch (error) {
|
|
14872
|
+
console.error(error);
|
|
14873
|
+
return false;
|
|
14874
|
+
}
|
|
14875
|
+
}
|
|
14876
|
+
/**
|
|
14877
|
+
* Get all bridgeable tokens from a source token to a destination chain
|
|
14878
|
+
* @param from - The source chain ID
|
|
14879
|
+
* @param to - The destination chain ID
|
|
14880
|
+
* @param token - The source token address
|
|
14881
|
+
* @returns XToken[] - Array of bridgeable tokens on the destination chain
|
|
14882
|
+
*/
|
|
14883
|
+
getBridgeableTokens(from, to, token) {
|
|
14884
|
+
try {
|
|
14885
|
+
const srcAssetInfo = getHubAssetInfo(from, token);
|
|
14886
|
+
invariant12(srcAssetInfo, `Hub asset not found for token ${token} on chain ${from}`);
|
|
14887
|
+
return {
|
|
14888
|
+
ok: true,
|
|
14889
|
+
value: this.filterTokensWithSameVault(spokeChainConfig[to].supportedTokens, to, srcAssetInfo)
|
|
14890
|
+
};
|
|
14891
|
+
} catch (error) {
|
|
14892
|
+
return {
|
|
14893
|
+
ok: false,
|
|
14894
|
+
error
|
|
14895
|
+
};
|
|
14896
|
+
}
|
|
14897
|
+
}
|
|
14898
|
+
filterTokensWithSameVault(tokens, to, srcAssetInfo) {
|
|
14899
|
+
const bridgeableTokens = [];
|
|
14900
|
+
for (const token of Object.values(tokens)) {
|
|
14901
|
+
const dstAssetInfo = getHubAssetInfo(to, token.address);
|
|
14902
|
+
if (dstAssetInfo && srcAssetInfo && dstAssetInfo.vault.toLowerCase() === srcAssetInfo.vault.toLowerCase()) {
|
|
14903
|
+
bridgeableTokens.push({
|
|
14904
|
+
...token,
|
|
14905
|
+
xChainId: to
|
|
14906
|
+
});
|
|
14907
|
+
}
|
|
14908
|
+
}
|
|
14909
|
+
return bridgeableTokens;
|
|
14910
|
+
}
|
|
14911
|
+
};
|
|
14912
|
+
|
|
13834
14913
|
// src/entities/Sodax.ts
|
|
13835
14914
|
var Sodax = class {
|
|
13836
14915
|
config;
|
|
@@ -13840,6 +14919,10 @@ var Sodax = class {
|
|
|
13840
14919
|
// Money Market service enabling cross-chain lending and borrowing
|
|
13841
14920
|
migration;
|
|
13842
14921
|
// ICX migration service enabling ICX migration to SODA
|
|
14922
|
+
backendApiService;
|
|
14923
|
+
// backend API service enabling backend API endpoints
|
|
14924
|
+
bridge;
|
|
14925
|
+
// Bridge service enabling cross-chain transfers
|
|
13843
14926
|
hubProvider;
|
|
13844
14927
|
// hub provider for the hub chain (e.g. Sonic mainnet)
|
|
13845
14928
|
relayerApiEndpoint;
|
|
@@ -13851,6 +14934,8 @@ var Sodax = class {
|
|
|
13851
14934
|
this.solver = config && config.solver ? new SolverService(config.solver, this.hubProvider, this.relayerApiEndpoint) : new SolverService(void 0, this.hubProvider, this.relayerApiEndpoint);
|
|
13852
14935
|
this.moneyMarket = config && config.moneyMarket ? new MoneyMarketService(config.moneyMarket, this.hubProvider, this.relayerApiEndpoint) : new MoneyMarketService(void 0, this.hubProvider, this.relayerApiEndpoint);
|
|
13853
14936
|
this.migration = config && config.migration ? new MigrationService(this.hubProvider, config.migration) : new MigrationService(this.hubProvider);
|
|
14937
|
+
this.bridge = config && config.bridge ? new BridgeService(this.hubProvider, this.relayerApiEndpoint, config.bridge) : new BridgeService(this.hubProvider, this.relayerApiEndpoint);
|
|
14938
|
+
this.backendApiService = new BackendApiService(config?.backendApiConfig);
|
|
13854
14939
|
}
|
|
13855
14940
|
};
|
|
13856
14941
|
|
|
@@ -13917,16 +15002,16 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
13917
15002
|
if (!fee) {
|
|
13918
15003
|
return 0n;
|
|
13919
15004
|
}
|
|
13920
|
-
|
|
15005
|
+
invariant12(inputAmount > 0n, "Input amount must be greater than 0");
|
|
13921
15006
|
let feeAmount = 0n;
|
|
13922
15007
|
if (isPartnerFeeAmount(fee)) {
|
|
13923
|
-
|
|
15008
|
+
invariant12(
|
|
13924
15009
|
fee.amount >= 0 && fee.amount <= inputAmount,
|
|
13925
15010
|
`Fee amount must be greater than 0 and less than or equal to the input amount: ${fee.amount}`
|
|
13926
15011
|
);
|
|
13927
15012
|
feeAmount = fee.amount;
|
|
13928
15013
|
} else if (isPartnerFeePercentage(fee)) {
|
|
13929
|
-
|
|
15014
|
+
invariant12(
|
|
13930
15015
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
13931
15016
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
13932
15017
|
);
|
|
@@ -13935,8 +15020,8 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
13935
15020
|
return feeAmount;
|
|
13936
15021
|
}
|
|
13937
15022
|
function adjustAmountByFee(amount, fee, quoteType) {
|
|
13938
|
-
|
|
13939
|
-
|
|
15023
|
+
invariant12(amount > 0n, "Amount must be greater than 0");
|
|
15024
|
+
invariant12(quoteType === "exact_input" || quoteType === "exact_output", "Invalid quote type");
|
|
13940
15025
|
if (quoteType === "exact_input") {
|
|
13941
15026
|
return amount - calculateFeeAmount(amount, fee);
|
|
13942
15027
|
}
|
|
@@ -15511,9 +16596,9 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15511
16596
|
*/
|
|
15512
16597
|
async isAllowanceValid(params, spokeProvider) {
|
|
15513
16598
|
try {
|
|
15514
|
-
|
|
15515
|
-
|
|
15516
|
-
|
|
16599
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
16600
|
+
invariant12(params.token.length > 0, "Token is required");
|
|
16601
|
+
invariant12(
|
|
15517
16602
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15518
16603
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15519
16604
|
);
|
|
@@ -15608,19 +16693,19 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15608
16693
|
*/
|
|
15609
16694
|
async approve(params, spokeProvider, raw) {
|
|
15610
16695
|
try {
|
|
15611
|
-
|
|
15612
|
-
|
|
15613
|
-
|
|
16696
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
16697
|
+
invariant12(params.token.length > 0, "Token is required");
|
|
16698
|
+
invariant12(
|
|
15614
16699
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15615
16700
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15616
16701
|
);
|
|
15617
16702
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
15618
16703
|
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
15619
|
-
|
|
16704
|
+
invariant12(
|
|
15620
16705
|
params.action === "supply" || params.action === "repay",
|
|
15621
16706
|
"Invalid action (only supply and repay are supported on evm)"
|
|
15622
16707
|
);
|
|
15623
|
-
|
|
16708
|
+
invariant12(isAddress(params.token), "Invalid token address");
|
|
15624
16709
|
const result = await Erc20Service.approve(
|
|
15625
16710
|
params.token,
|
|
15626
16711
|
params.amount,
|
|
@@ -15634,11 +16719,11 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15634
16719
|
};
|
|
15635
16720
|
}
|
|
15636
16721
|
if (spokeProvider instanceof SonicSpokeProvider && spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id) {
|
|
15637
|
-
|
|
16722
|
+
invariant12(
|
|
15638
16723
|
params.action === "withdraw" || params.action === "borrow" || params.action === "supply" || params.action === "repay",
|
|
15639
16724
|
"Invalid action (only withdraw, borrow, supply and repay are supported on sonic)"
|
|
15640
16725
|
);
|
|
15641
|
-
|
|
16726
|
+
invariant12(isAddress(params.token), "Invalid token address");
|
|
15642
16727
|
if (params.action === "withdraw") {
|
|
15643
16728
|
const withdrawInfo = await SonicSpokeService.getWithdrawInfo(
|
|
15644
16729
|
params.token,
|
|
@@ -15810,10 +16895,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15810
16895
|
*/
|
|
15811
16896
|
async createSupplyIntent(params, spokeProvider, raw) {
|
|
15812
16897
|
try {
|
|
15813
|
-
|
|
15814
|
-
|
|
15815
|
-
|
|
15816
|
-
|
|
16898
|
+
invariant12(params.action === "supply", "Invalid action");
|
|
16899
|
+
invariant12(params.token.length > 0, "Token is required");
|
|
16900
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
16901
|
+
invariant12(
|
|
15817
16902
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15818
16903
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15819
16904
|
);
|
|
@@ -15975,10 +17060,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15975
17060
|
* }
|
|
15976
17061
|
*/
|
|
15977
17062
|
async createBorrowIntent(params, spokeProvider, raw) {
|
|
15978
|
-
|
|
15979
|
-
|
|
15980
|
-
|
|
15981
|
-
|
|
17063
|
+
invariant12(params.action === "borrow", "Invalid action");
|
|
17064
|
+
invariant12(params.token.length > 0, "Token is required");
|
|
17065
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
17066
|
+
invariant12(
|
|
15982
17067
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15983
17068
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15984
17069
|
);
|
|
@@ -16111,10 +17196,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16111
17196
|
* }
|
|
16112
17197
|
*/
|
|
16113
17198
|
async createWithdrawIntent(params, spokeProvider, raw) {
|
|
16114
|
-
|
|
16115
|
-
|
|
16116
|
-
|
|
16117
|
-
|
|
17199
|
+
invariant12(params.action === "withdraw", "Invalid action");
|
|
17200
|
+
invariant12(params.token.length > 0, "Token is required");
|
|
17201
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
17202
|
+
invariant12(
|
|
16118
17203
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16119
17204
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16120
17205
|
);
|
|
@@ -16262,10 +17347,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16262
17347
|
* }
|
|
16263
17348
|
*/
|
|
16264
17349
|
async createRepayIntent(params, spokeProvider, raw) {
|
|
16265
|
-
|
|
16266
|
-
|
|
16267
|
-
|
|
16268
|
-
|
|
17350
|
+
invariant12(params.action === "repay", "Invalid action");
|
|
17351
|
+
invariant12(params.token.length > 0, "Token is required");
|
|
17352
|
+
invariant12(params.amount > 0n, "Amount must be greater than 0");
|
|
17353
|
+
invariant12(
|
|
16269
17354
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16270
17355
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16271
17356
|
);
|
|
@@ -16318,7 +17403,7 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16318
17403
|
buildSupplyData(token, to, amount, spokeChainId) {
|
|
16319
17404
|
const calls = [];
|
|
16320
17405
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16321
|
-
|
|
17406
|
+
invariant12(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16322
17407
|
let assetAddress = assetConfig.asset;
|
|
16323
17408
|
const vaultAddress = assetConfig.vault;
|
|
16324
17409
|
const lendingPool = this.config.lendingPool;
|
|
@@ -16349,13 +17434,13 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16349
17434
|
* @returns {Hex} The transaction data.
|
|
16350
17435
|
*/
|
|
16351
17436
|
buildBorrowData(from, to, token, amount, spokeChainId) {
|
|
16352
|
-
|
|
16353
|
-
|
|
17437
|
+
invariant12(isValidSpokeChainId(spokeChainId), `Invalid spokeChainId: ${spokeChainId}`);
|
|
17438
|
+
invariant12(
|
|
16354
17439
|
isValidOriginalAssetAddress(spokeChainId, token),
|
|
16355
17440
|
`Unsupported spoke chain (${spokeChainId}) token: ${token}`
|
|
16356
17441
|
);
|
|
16357
17442
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16358
|
-
|
|
17443
|
+
invariant12(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16359
17444
|
let assetAddress = assetConfig.asset;
|
|
16360
17445
|
const vaultAddress = assetConfig.vault;
|
|
16361
17446
|
const bnUSDVault = this.config.bnUSDVault;
|
|
@@ -16679,6 +17764,6 @@ var SolverIntentErrorCode = /* @__PURE__ */ ((SolverIntentErrorCode2) => {
|
|
|
16679
17764
|
return SolverIntentErrorCode2;
|
|
16680
17765
|
})(SolverIntentErrorCode || {});
|
|
16681
17766
|
|
|
16682
|
-
export { BalnSwapService, BigIntToHex, BigNumberZeroDecimal, BnUSDMigrationService, ChainIdToIntentRelayChainId, DEFAULT_DEADLINE_OFFSET, DEFAULT_MAX_RETRY, DEFAULT_RELAYER_API_ENDPOINT, DEFAULT_RELAY_TX_TIMEOUT, DEFAULT_RETRY_DELAY_MS, EVM_CHAIN_IDS, EVM_SPOKE_CHAIN_IDS, Erc20Service, EvmAssetManagerService, EvmHubProvider, EvmSolverService, EvmSpokeProvider, EvmSpokeService, EvmVaultTokenService, EvmWalletAbstraction, FEE_PERCENTAGE_SCALE, HALF_RAY, HALF_WAD, HubVaultSymbols, ICON_TX_RESULT_WAIT_MAX_RETRY, INTENT_RELAY_CHAIN_IDS, IconSpokeProvider, IcxMigrationService, InjectiveSpokeProvider, IntentCreatedEventAbi, IntentDataType, IntentsAbi, LTV_PRECISION, LendingPoolService, LockupMultiplier, LockupPeriod, MAX_UINT256, MigrationService, MoneyMarketDataService, MoneyMarketService, RAY, RAY_DECIMALS, SECONDS_PER_YEAR, STELLAR_DEFAULT_TX_TIMEOUT_SECONDS, STELLAR_PRIORITY_FEE, Sodax, SolanaSpokeProvider, SolverIntentErrorCode, SolverIntentStatusCode, SolverService, SonicSpokeProvider, SonicSpokeService, SpokeService, StellarSpokeProvider, SuiSpokeProvider, SuiSpokeService, SupportedMigrationTokens, USD_DECIMALS, UiPoolDataProviderService, VAULT_TOKEN_DECIMALS, WAD, WAD_RAY_RATIO, WEI_DECIMALS, WalletAbstractionService, adjustAmountByFee, assetManagerAbi, balnSwapAbi, binomialApproximatedRayPow, bnUSDLegacySpokeChainIds, bnUSDLegacyTokens, bnUSDNewTokens, calculateAllReserveIncentives, calculateAllUserIncentives, calculateAvailableBorrowsMarketReferenceCurrency, calculateCompoundedInterest, calculateCompoundedRate, calculateFeeAmount, calculateHealthFactorFromBalances, calculateHealthFactorFromBalancesBigUnits, calculateLinearInterest, calculatePercentageFeeAmount, chainIdToHubAssetsMap, connectionAbi, deriveUserWalletAddress, encodeAddress, encodeContractCalls, erc20Abi, formatBasisPoints, formatEModeCategory, formatEModes, formatPercentage, formatReserve, formatReserveUSD, formatReserves, formatReservesAndIncentives, formatUserSummary, formatUserSummaryAndIncentives, getAllLegacybnUSDTokens, getAndFormatReserveEModes, getCompoundedBalance, getEvmViemChain, getHubAssetInfo, getHubChainConfig, getIconAddressBytes, getIntentRelayChainId, getLinearBalance, getMarketReferenceCurrencyAndUsdBalance, getMoneyMarketConfig, getOriginalAssetAddress, getPacket, getRandomBytes, getReserveNormalizedIncome, getReservesEModes, getSolanaAddressBytes, getSolverConfig, getSpokeChainIdFromIntentRelayChainId, getSupportedMoneyMarketTokens, getSupportedSolverTokens, getTransactionPackets, hexToBigInt, hubAssetToOriginalAssetMap, hubAssets, hubVaults, hubVaultsAddressSet, intentRelayChainIdToSpokeChainIdMap, isBalnMigrateParams, isConfiguredMoneyMarketConfig, isConfiguredSolverConfig, isEvmHubChainConfig, isEvmInitializedConfig, isEvmSpokeChainConfig, isEvmSpokeProvider, isEvmUninitializedBrowserConfig, isEvmUninitializedConfig, isEvmUninitializedPrivateKeyConfig, isIconAddress, isIconSpokeProvider, isIcxCreateRevertMigrationParams, isIcxMigrateParams, isInjectiveSpokeProvider, isIntentCreationFailedError, isIntentCreationUnknownError, isIntentPostExecutionFailedError, isIntentRelayChainId, isIntentSubmitTxFailedError, isJsonRpcPayloadResponse, isLegacybnUSDChainId, isLegacybnUSDToken, isMoneyMarketBorrowUnknownError, isMoneyMarketCreateBorrowIntentFailedError, isMoneyMarketCreateRepayIntentFailedError, isMoneyMarketCreateSupplyIntentFailedError, isMoneyMarketCreateWithdrawIntentFailedError, isMoneyMarketRelayTimeoutError, isMoneyMarketRepayUnknownError, isMoneyMarketReserveAsset, isMoneyMarketReserveHubAsset, isMoneyMarketSubmitTxFailedError, isMoneyMarketSupplyUnknownError, isMoneyMarketSupportedToken, isMoneyMarketWithdrawUnknownError, isNativeToken, isNewbnUSDChainId, isNewbnUSDToken, isPartnerFeeAmount, isPartnerFeePercentage, isResponseAddressType, isResponseSigningType, isSolanaSpokeProvider, isSolverSupportedToken, isSonicSpokeProvider, isStellarSpokeProvider, isSuiSpokeProvider, isUnifiedBnUSDMigrateParams, isValidChainHubAsset, isValidHubAsset, isValidIntentRelayChainId, isValidOriginalAssetAddress, isValidSpokeChainId, isWaitUntilIntentExecutedFailed, moneyMarketReserveAssets, moneyMarketReserveHubAssetsSet, moneyMarketSupportedTokens, nativeToUSD, newbnUSDSpokeChainIds, normalize, normalizeBN, normalizedToUsd, originalAssetTohubAssetMap, poolAbi, randomUint256, rayDiv, rayMul, rayPow, rayToWad, relayTxAndWaitPacket, requestAddress, requestJsonRpc, requestSigning, retry, sonicWalletFactoryAbi, spokeAssetManagerAbi, spokeChainConfig, spokeChainIdsSet, submitTransaction, supportedHubAssets, supportedHubChains, supportedSpokeChains, supportedTokensPerChain, uiPoolDataAbi, valueToBigNumber, valueToZDBigNumber, variableDebtTokenAbi, vaultTokenAbi, wadToRay, waitForTransactionReceipt, waitUntilIntentExecuted, walletFactoryAbi, wrappedSonicAbi };
|
|
17767
|
+
export { BackendApiService, BalnSwapService, BigIntToHex, BigNumberZeroDecimal, BnUSDMigrationService, BridgeService, ChainIdToIntentRelayChainId, DEFAULT_BACKEND_API_ENDPOINT, DEFAULT_BACKEND_API_HEADERS, DEFAULT_BACKEND_API_TIMEOUT, DEFAULT_DEADLINE_OFFSET, DEFAULT_MAX_RETRY, DEFAULT_RELAYER_API_ENDPOINT, DEFAULT_RELAY_TX_TIMEOUT, DEFAULT_RETRY_DELAY_MS, EVM_CHAIN_IDS, EVM_SPOKE_CHAIN_IDS, Erc20Service, EvmAssetManagerService, EvmHubProvider, EvmSolverService, EvmSpokeProvider, EvmSpokeService, EvmVaultTokenService, EvmWalletAbstraction, FEE_PERCENTAGE_SCALE, HALF_RAY, HALF_WAD, HubVaultSymbols, ICON_TX_RESULT_WAIT_MAX_RETRY, INTENT_RELAY_CHAIN_IDS, IconSpokeProvider, IcxMigrationService, InjectiveSpokeProvider, IntentCreatedEventAbi, IntentDataType, IntentsAbi, LTV_PRECISION, LendingPoolService, LockupMultiplier, LockupPeriod, MAX_UINT256, MigrationService, MoneyMarketDataService, MoneyMarketService, RAY, RAY_DECIMALS, SECONDS_PER_YEAR, STELLAR_DEFAULT_TX_TIMEOUT_SECONDS, STELLAR_PRIORITY_FEE, SodaTokens, SodaTokensAsHubAssets, SodaVaultTokensSet, Sodax, SolanaSpokeProvider, SolverIntentErrorCode, SolverIntentStatusCode, SolverService, SonicSpokeProvider, SonicSpokeService, SpokeService, StellarSpokeProvider, SuiSpokeProvider, SuiSpokeService, SupportedMigrationTokens, USD_DECIMALS, UiPoolDataProviderService, VAULT_TOKEN_DECIMALS, WAD, WAD_RAY_RATIO, WEI_DECIMALS, WalletAbstractionService, adjustAmountByFee, assetManagerAbi, balnSwapAbi, binomialApproximatedRayPow, bnUSDLegacySpokeChainIds, bnUSDLegacyTokens, bnUSDNewTokens, calculateAllReserveIncentives, calculateAllUserIncentives, calculateAvailableBorrowsMarketReferenceCurrency, calculateCompoundedInterest, calculateCompoundedRate, calculateFeeAmount, calculateHealthFactorFromBalances, calculateHealthFactorFromBalancesBigUnits, calculateLinearInterest, calculatePercentageFeeAmount, chainIdToHubAssetsMap, connectionAbi, deriveUserWalletAddress, encodeAddress, encodeContractCalls, erc20Abi, formatBasisPoints, formatEModeCategory, formatEModes, formatPercentage, formatReserve, formatReserveUSD, formatReserves, formatReservesAndIncentives, formatUserSummary, formatUserSummaryAndIncentives, getAllLegacybnUSDTokens, getAndFormatReserveEModes, getCompoundedBalance, getEvmViemChain, getHubAssetInfo, getHubChainConfig, getHubVaultTokenByAddress, getIconAddressBytes, getIntentRelayChainId, getLinearBalance, getMarketReferenceCurrencyAndUsdBalance, getMoneyMarketConfig, getOriginalAssetAddress, getOriginalAssetInfoFromVault, getOriginalTokenFromOriginalAssetAddress, getPacket, getRandomBytes, getReserveNormalizedIncome, getReservesEModes, getSolanaAddressBytes, getSolverConfig, getSpokeChainIdFromIntentRelayChainId, getSupportedMoneyMarketTokens, getSupportedSolverTokens, getTransactionPackets, hexToBigInt, hubAssetToOriginalAssetMap, hubAssets, hubVaultTokensMap, hubVaults, hubVaultsAddressSet, intentRelayChainIdToSpokeChainIdMap, isBalnMigrateParams, isConfiguredMoneyMarketConfig, isConfiguredSolverConfig, isEvmHubChainConfig, isEvmInitializedConfig, isEvmSpokeChainConfig, isEvmSpokeProvider, isEvmUninitializedBrowserConfig, isEvmUninitializedConfig, isEvmUninitializedPrivateKeyConfig, isIconAddress, isIconSpokeProvider, isIcxCreateRevertMigrationParams, isIcxMigrateParams, isInjectiveSpokeProvider, isIntentCreationFailedError, isIntentCreationUnknownError, isIntentPostExecutionFailedError, isIntentRelayChainId, isIntentSubmitTxFailedError, isJsonRpcPayloadResponse, isLegacybnUSDChainId, isLegacybnUSDToken, isMoneyMarketBorrowUnknownError, isMoneyMarketCreateBorrowIntentFailedError, isMoneyMarketCreateRepayIntentFailedError, isMoneyMarketCreateSupplyIntentFailedError, isMoneyMarketCreateWithdrawIntentFailedError, isMoneyMarketRelayTimeoutError, isMoneyMarketRepayUnknownError, isMoneyMarketReserveAsset, isMoneyMarketReserveHubAsset, isMoneyMarketSubmitTxFailedError, isMoneyMarketSupplyUnknownError, isMoneyMarketSupportedToken, isMoneyMarketWithdrawUnknownError, isNativeToken, isNewbnUSDChainId, isNewbnUSDToken, isPartnerFeeAmount, isPartnerFeePercentage, isResponseAddressType, isResponseSigningType, isSodaVaultToken, isSolanaSpokeProvider, isSolverSupportedToken, isSonicSpokeProvider, isStellarSpokeProvider, isSuiSpokeProvider, isUnifiedBnUSDMigrateParams, isValidChainHubAsset, isValidHubAsset, isValidIntentRelayChainId, isValidOriginalAssetAddress, isValidSpokeChainId, isValidVault, isWaitUntilIntentExecutedFailed, moneyMarketReserveAssets, moneyMarketReserveHubAssetsSet, moneyMarketSupportedTokens, nativeToUSD, newbnUSDSpokeChainIds, normalize, normalizeBN, normalizedToUsd, originalAssetTohubAssetMap, poolAbi, randomUint256, rayDiv, rayMul, rayPow, rayToWad, relayTxAndWaitPacket, requestAddress, requestJsonRpc, requestSigning, retry, sonicWalletFactoryAbi, spokeAssetManagerAbi, spokeChainConfig, spokeChainIdsSet, submitTransaction, supportedHubAssets, supportedHubChains, supportedSodaAssets, supportedSpokeChains, supportedTokensPerChain, uiPoolDataAbi, valueToBigNumber, valueToZDBigNumber, variableDebtTokenAbi, vaultTokenAbi, wadToRay, waitForTransactionReceipt, waitUntilIntentExecuted, walletFactoryAbi, wrappedSonicAbi };
|
|
16683
17768
|
//# sourceMappingURL=index.mjs.map
|
|
16684
17769
|
//# sourceMappingURL=index.mjs.map
|