@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.cjs
CHANGED
|
@@ -16,7 +16,7 @@ var rlp = require('rlp');
|
|
|
16
16
|
var splToken = require('@solana/spl-token');
|
|
17
17
|
var anchor = require('@coral-xyz/anchor');
|
|
18
18
|
var BN = require('bn.js');
|
|
19
|
-
var
|
|
19
|
+
var invariant12 = require('tiny-invariant');
|
|
20
20
|
var BigNumber4 = require('bignumber.js');
|
|
21
21
|
|
|
22
22
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -43,7 +43,7 @@ var IconSdkRaw__namespace = /*#__PURE__*/_interopNamespace(IconSdkRaw);
|
|
|
43
43
|
var rlp__namespace = /*#__PURE__*/_interopNamespace(rlp);
|
|
44
44
|
var anchor__namespace = /*#__PURE__*/_interopNamespace(anchor);
|
|
45
45
|
var BN__default = /*#__PURE__*/_interopDefault(BN);
|
|
46
|
-
var
|
|
46
|
+
var invariant12__default = /*#__PURE__*/_interopDefault(invariant12);
|
|
47
47
|
var BigNumber4__default = /*#__PURE__*/_interopDefault(BigNumber4);
|
|
48
48
|
|
|
49
49
|
// src/abis/asset-manager.abi.ts
|
|
@@ -6133,7 +6133,7 @@ async function waitForTransactionReceipt(hash, provider) {
|
|
|
6133
6133
|
return provider.waitForTransactionReceipt(hash);
|
|
6134
6134
|
}
|
|
6135
6135
|
var DEFAULT_MAX_RETRY = 3;
|
|
6136
|
-
var DEFAULT_RELAY_TX_TIMEOUT =
|
|
6136
|
+
var DEFAULT_RELAY_TX_TIMEOUT = 12e4;
|
|
6137
6137
|
var DEFAULT_RETRY_DELAY_MS = 2e3;
|
|
6138
6138
|
var ICON_TX_RESULT_WAIT_MAX_RETRY = 10;
|
|
6139
6139
|
var MAX_UINT256 = (1n << 256n) - 1n;
|
|
@@ -6141,6 +6141,12 @@ var FEE_PERCENTAGE_SCALE = 10000n;
|
|
|
6141
6141
|
var STELLAR_PRIORITY_FEE = "10000";
|
|
6142
6142
|
var STELLAR_DEFAULT_TX_TIMEOUT_SECONDS = 100;
|
|
6143
6143
|
var DEFAULT_DEADLINE_OFFSET = 300n;
|
|
6144
|
+
var DEFAULT_BACKEND_API_ENDPOINT = "https://apiv1.coolify.iconblockchain.xyz";
|
|
6145
|
+
var DEFAULT_BACKEND_API_TIMEOUT = 3e4;
|
|
6146
|
+
var DEFAULT_BACKEND_API_HEADERS = {
|
|
6147
|
+
"Content-Type": "application/json",
|
|
6148
|
+
Accept: "application/json"
|
|
6149
|
+
};
|
|
6144
6150
|
var VAULT_TOKEN_DECIMALS = 18;
|
|
6145
6151
|
var INTENT_RELAY_CHAIN_IDS = {
|
|
6146
6152
|
AVAX: 6n,
|
|
@@ -6215,6 +6221,155 @@ function getEvmViemChain(id) {
|
|
|
6215
6221
|
throw new Error(`Unsupported EVM chain ID: ${id}`);
|
|
6216
6222
|
}
|
|
6217
6223
|
}
|
|
6224
|
+
var HubVaultSymbols = [
|
|
6225
|
+
"sodaAVAX",
|
|
6226
|
+
"sodaBNB",
|
|
6227
|
+
"sodaETH",
|
|
6228
|
+
"sodaBTC",
|
|
6229
|
+
"sodaSUI",
|
|
6230
|
+
"sodaINJ",
|
|
6231
|
+
"sodaXLM",
|
|
6232
|
+
"sodaSOL",
|
|
6233
|
+
"sodaSODA",
|
|
6234
|
+
"sodaUSDT",
|
|
6235
|
+
"sodaUSDC",
|
|
6236
|
+
"bnUSD",
|
|
6237
|
+
"sodaPOL",
|
|
6238
|
+
"sodaNIBI",
|
|
6239
|
+
"sodaS",
|
|
6240
|
+
"IbnUSD"
|
|
6241
|
+
];
|
|
6242
|
+
var SodaTokens = {
|
|
6243
|
+
sodaBNB: {
|
|
6244
|
+
symbol: "sodaBNB",
|
|
6245
|
+
name: "Soda BNB",
|
|
6246
|
+
decimals: 18,
|
|
6247
|
+
address: "0x40Cd41b35DB9e5109ae7E54b44De8625dB320E6b",
|
|
6248
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6249
|
+
},
|
|
6250
|
+
sodaAVAX: {
|
|
6251
|
+
symbol: "sodaAVAX",
|
|
6252
|
+
name: "Soda AVAX",
|
|
6253
|
+
decimals: 18,
|
|
6254
|
+
address: "0x14238D267557E9d799016ad635B53CD15935d290",
|
|
6255
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6256
|
+
},
|
|
6257
|
+
sodaETH: {
|
|
6258
|
+
symbol: "sodaETH",
|
|
6259
|
+
name: "Soda ETH",
|
|
6260
|
+
decimals: 18,
|
|
6261
|
+
address: "0x4effB5813271699683C25c734F4daBc45B363709",
|
|
6262
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6263
|
+
},
|
|
6264
|
+
sodaBTC: {
|
|
6265
|
+
symbol: "sodaBTC",
|
|
6266
|
+
name: "Soda BTC",
|
|
6267
|
+
decimals: 18,
|
|
6268
|
+
address: "0x7A1A5555842Ad2D0eD274d09b5c4406a95799D5d",
|
|
6269
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6270
|
+
},
|
|
6271
|
+
sodaSOL: {
|
|
6272
|
+
symbol: "sodaSOL",
|
|
6273
|
+
name: "Soda SOL",
|
|
6274
|
+
decimals: 18,
|
|
6275
|
+
address: "0xdEa692287E2cE8Cb08FA52917Be0F16b1DACDC87",
|
|
6276
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6277
|
+
},
|
|
6278
|
+
sodaXLM: {
|
|
6279
|
+
symbol: "sodaXLM",
|
|
6280
|
+
name: "Soda XLM",
|
|
6281
|
+
decimals: 18,
|
|
6282
|
+
address: "0x6BC8C37cba91F76E68C9e6d689A9C21E4d32079B",
|
|
6283
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6284
|
+
},
|
|
6285
|
+
sodaINJ: {
|
|
6286
|
+
symbol: "sodaINJ",
|
|
6287
|
+
name: "Soda INJ",
|
|
6288
|
+
decimals: 18,
|
|
6289
|
+
address: "0x1f22279C89B213944b7Ea41daCB0a868DdCDFd13",
|
|
6290
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6291
|
+
},
|
|
6292
|
+
sodaNIBI: {
|
|
6293
|
+
symbol: "sodaNIBI",
|
|
6294
|
+
name: "Soda NIBI",
|
|
6295
|
+
decimals: 18,
|
|
6296
|
+
address: "0xc6c85287a8b173A509C2F198bB719A8a5a2d0C68",
|
|
6297
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6298
|
+
},
|
|
6299
|
+
sodaSUI: {
|
|
6300
|
+
symbol: "sodaSUI",
|
|
6301
|
+
name: "Soda SUI",
|
|
6302
|
+
decimals: 18,
|
|
6303
|
+
address: "0xdc5B4b00F98347E95b9F94911213DAB4C687e1e3",
|
|
6304
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6305
|
+
},
|
|
6306
|
+
bnUSD: {
|
|
6307
|
+
symbol: "bnUSD",
|
|
6308
|
+
name: "Balanced Dollar",
|
|
6309
|
+
decimals: 18,
|
|
6310
|
+
address: "0xE801CA34E19aBCbFeA12025378D19c4FBE250131",
|
|
6311
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6312
|
+
},
|
|
6313
|
+
sodaUSDC: {
|
|
6314
|
+
symbol: "sodaUSDC",
|
|
6315
|
+
name: "Soda USDC",
|
|
6316
|
+
decimals: 18,
|
|
6317
|
+
address: "0xAbbb91c0617090F0028BDC27597Cd0D038F3A833",
|
|
6318
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6319
|
+
},
|
|
6320
|
+
sodaUSDT: {
|
|
6321
|
+
symbol: "sodaUSDT",
|
|
6322
|
+
name: "Soda USDT",
|
|
6323
|
+
decimals: 18,
|
|
6324
|
+
address: "0xbDf1F453FCB61424011BBDDCB96cFDB30f3Fe876",
|
|
6325
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6326
|
+
},
|
|
6327
|
+
IbnUSD: {
|
|
6328
|
+
symbol: "IbnUSD",
|
|
6329
|
+
name: "ICON bnUSD (Migration)",
|
|
6330
|
+
decimals: 18,
|
|
6331
|
+
address: "0x9D4b663Eb075d2a1C7B8eaEFB9eCCC0510388B51",
|
|
6332
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6333
|
+
},
|
|
6334
|
+
sodaS: {
|
|
6335
|
+
symbol: "sodaS",
|
|
6336
|
+
name: "Soda S",
|
|
6337
|
+
decimals: 18,
|
|
6338
|
+
address: "0x62ecc3Eeb80a162c57624B3fF80313FE69f5203e",
|
|
6339
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6340
|
+
},
|
|
6341
|
+
sodaPOL: {
|
|
6342
|
+
symbol: "sodaPOL",
|
|
6343
|
+
name: "Soda POL",
|
|
6344
|
+
decimals: 18,
|
|
6345
|
+
address: "0x208ED38f4783328aA9eBFeC360D32e7520A9B779",
|
|
6346
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6347
|
+
},
|
|
6348
|
+
sodaSODA: {
|
|
6349
|
+
symbol: "sodaSODA",
|
|
6350
|
+
name: "Soda SODA",
|
|
6351
|
+
decimals: 18,
|
|
6352
|
+
address: "0x21685E341DE7844135329914Be6Bd8D16982d834",
|
|
6353
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6354
|
+
}
|
|
6355
|
+
};
|
|
6356
|
+
var SodaTokensAsHubAssets = Object.values(SodaTokens).reduce(
|
|
6357
|
+
(acc, token) => {
|
|
6358
|
+
acc[token.address] = {
|
|
6359
|
+
asset: token.address,
|
|
6360
|
+
decimal: token.decimals,
|
|
6361
|
+
symbol: token.symbol,
|
|
6362
|
+
name: token.name,
|
|
6363
|
+
vault: token.address
|
|
6364
|
+
};
|
|
6365
|
+
return acc;
|
|
6366
|
+
},
|
|
6367
|
+
{}
|
|
6368
|
+
);
|
|
6369
|
+
var SodaVaultTokensSet = new Set(Object.values(SodaTokens).map((token) => token.address.toLowerCase()));
|
|
6370
|
+
var isSodaVaultToken = (address) => {
|
|
6371
|
+
return SodaVaultTokensSet.has(address.toLowerCase());
|
|
6372
|
+
};
|
|
6218
6373
|
var hubChainConfig = {
|
|
6219
6374
|
[types.SONIC_MAINNET_CHAIN_ID]: {
|
|
6220
6375
|
chain: {
|
|
@@ -6229,6 +6384,7 @@ var hubChainConfig = {
|
|
|
6229
6384
|
icxMigration: "0x8294DE9fc60F5ABCc19245E5857071d7C42B9875",
|
|
6230
6385
|
balnSwap: "0x610a90B61b89a98b954d5750E94834Aa45d08d10",
|
|
6231
6386
|
sodaToken: "0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963"
|
|
6387
|
+
// SODA token on Sonic
|
|
6232
6388
|
},
|
|
6233
6389
|
nativeToken: "0x0000000000000000000000000000000000000000",
|
|
6234
6390
|
wrappedNativeToken: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38",
|
|
@@ -6254,44 +6410,45 @@ var spokeChainConfig = {
|
|
|
6254
6410
|
symbol: "S",
|
|
6255
6411
|
name: "Sonic",
|
|
6256
6412
|
decimals: 18,
|
|
6257
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6258
|
-
|
|
6259
|
-
bnUSD: {
|
|
6260
|
-
symbol: "bnUSD",
|
|
6261
|
-
name: "bnUSD",
|
|
6262
|
-
decimals: 18,
|
|
6263
|
-
address: "0xE801CA34E19aBCbFeA12025378D19c4FBE250131"
|
|
6413
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6414
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6264
6415
|
},
|
|
6265
6416
|
WETH: {
|
|
6266
6417
|
symbol: "WETH",
|
|
6267
6418
|
name: "Wrapped Ether",
|
|
6268
6419
|
decimals: 18,
|
|
6269
|
-
address: "0x50c42dEAcD8Fc9773493ED674b675bE577f2634b"
|
|
6420
|
+
address: "0x50c42dEAcD8Fc9773493ED674b675bE577f2634b",
|
|
6421
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6270
6422
|
},
|
|
6271
6423
|
USDC: {
|
|
6272
6424
|
symbol: "USDC",
|
|
6273
6425
|
name: "USD Coin",
|
|
6274
6426
|
decimals: 6,
|
|
6275
|
-
address: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894"
|
|
6427
|
+
address: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894",
|
|
6428
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6276
6429
|
},
|
|
6277
6430
|
USDT: {
|
|
6278
6431
|
symbol: "USDT",
|
|
6279
6432
|
name: "Tether USD",
|
|
6280
6433
|
decimals: 6,
|
|
6281
|
-
address: "0x6047828dc181963ba44974801FF68e538dA5eaF9"
|
|
6434
|
+
address: "0x6047828dc181963ba44974801FF68e538dA5eaF9",
|
|
6435
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6282
6436
|
},
|
|
6283
6437
|
wS: {
|
|
6284
6438
|
symbol: "wS",
|
|
6285
6439
|
name: "Wrapped Sonic",
|
|
6286
6440
|
decimals: 18,
|
|
6287
|
-
address: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38"
|
|
6441
|
+
address: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38",
|
|
6442
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6288
6443
|
},
|
|
6289
6444
|
SODA: {
|
|
6290
6445
|
symbol: "SODA",
|
|
6291
6446
|
name: "SODAX",
|
|
6292
6447
|
decimals: 18,
|
|
6293
|
-
address: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963"
|
|
6294
|
-
|
|
6448
|
+
address: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963",
|
|
6449
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6450
|
+
},
|
|
6451
|
+
...SodaTokens
|
|
6295
6452
|
}
|
|
6296
6453
|
},
|
|
6297
6454
|
[types.SOLANA_MAINNET_CHAIN_ID]: {
|
|
@@ -6310,19 +6467,29 @@ var spokeChainConfig = {
|
|
|
6310
6467
|
symbol: "SOL",
|
|
6311
6468
|
name: "Solana",
|
|
6312
6469
|
decimals: 9,
|
|
6313
|
-
address: "11111111111111111111111111111111"
|
|
6470
|
+
address: "11111111111111111111111111111111",
|
|
6471
|
+
xChainId: types.SOLANA_MAINNET_CHAIN_ID
|
|
6314
6472
|
},
|
|
6315
6473
|
bnUSD: {
|
|
6316
6474
|
symbol: "bnUSD",
|
|
6317
6475
|
name: "bnUSD",
|
|
6318
6476
|
decimals: 9,
|
|
6319
|
-
address: "3rSPCLNEF7Quw4wX8S1NyKivELoyij8eYA2gJwBgt4V5"
|
|
6477
|
+
address: "3rSPCLNEF7Quw4wX8S1NyKivELoyij8eYA2gJwBgt4V5",
|
|
6478
|
+
xChainId: types.SOLANA_MAINNET_CHAIN_ID
|
|
6320
6479
|
},
|
|
6321
6480
|
USDC: {
|
|
6322
6481
|
symbol: "USDC",
|
|
6323
6482
|
name: "USD Coin",
|
|
6324
6483
|
decimals: 6,
|
|
6325
|
-
address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
|
|
6484
|
+
address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
|
|
6485
|
+
xChainId: types.SOLANA_MAINNET_CHAIN_ID
|
|
6486
|
+
},
|
|
6487
|
+
SODA: {
|
|
6488
|
+
symbol: "SODA",
|
|
6489
|
+
name: "SODAX",
|
|
6490
|
+
decimals: 9,
|
|
6491
|
+
address: "8Bj8gSbga8My8qRkT1RrvgxFBExiGFgdRNHFaR9o2T3Q",
|
|
6492
|
+
xChainId: types.SOLANA_MAINNET_CHAIN_ID
|
|
6326
6493
|
}
|
|
6327
6494
|
},
|
|
6328
6495
|
gasPrice: "500000",
|
|
@@ -6346,25 +6513,36 @@ var spokeChainConfig = {
|
|
|
6346
6513
|
symbol: "AVAX",
|
|
6347
6514
|
name: "Avalanche",
|
|
6348
6515
|
decimals: 18,
|
|
6349
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6516
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6517
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6350
6518
|
},
|
|
6351
6519
|
bnUSD: {
|
|
6352
6520
|
symbol: "bnUSD",
|
|
6353
6521
|
name: "bnUSD",
|
|
6354
6522
|
decimals: 18,
|
|
6355
|
-
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F"
|
|
6523
|
+
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F",
|
|
6524
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6356
6525
|
},
|
|
6357
6526
|
USDT: {
|
|
6358
6527
|
symbol: "USDT",
|
|
6359
6528
|
name: "Tether USD",
|
|
6360
6529
|
decimals: 6,
|
|
6361
|
-
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"
|
|
6530
|
+
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
|
|
6531
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6362
6532
|
},
|
|
6363
6533
|
USDC: {
|
|
6364
6534
|
symbol: "USDC",
|
|
6365
6535
|
name: "USD Coin",
|
|
6366
6536
|
decimals: 6,
|
|
6367
|
-
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
|
|
6537
|
+
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
|
|
6538
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6539
|
+
},
|
|
6540
|
+
SODA: {
|
|
6541
|
+
symbol: "SODA",
|
|
6542
|
+
name: "SODAX",
|
|
6543
|
+
decimals: 18,
|
|
6544
|
+
address: "0x390ceed555905ec225Da330A188EA04e85570f00",
|
|
6545
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6368
6546
|
}
|
|
6369
6547
|
}
|
|
6370
6548
|
},
|
|
@@ -6385,13 +6563,22 @@ var spokeChainConfig = {
|
|
|
6385
6563
|
symbol: "NIBI",
|
|
6386
6564
|
name: "Nibiru",
|
|
6387
6565
|
decimals: 6,
|
|
6388
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6566
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6567
|
+
xChainId: types.NIBIRU_MAINNET_CHAIN_ID
|
|
6389
6568
|
},
|
|
6390
6569
|
bnUSD: {
|
|
6391
6570
|
symbol: "bnUSD",
|
|
6392
6571
|
name: "bnUSD",
|
|
6393
6572
|
decimals: 18,
|
|
6394
|
-
address: "0x043fb7e23350Dd5b77dE5E228B528763DEcb9131"
|
|
6573
|
+
address: "0x043fb7e23350Dd5b77dE5E228B528763DEcb9131",
|
|
6574
|
+
xChainId: types.NIBIRU_MAINNET_CHAIN_ID
|
|
6575
|
+
},
|
|
6576
|
+
SODA: {
|
|
6577
|
+
symbol: "SODA",
|
|
6578
|
+
name: "SODAX",
|
|
6579
|
+
decimals: 18,
|
|
6580
|
+
address: "0x5bda87f18109CA85fa7ADDf1D48B97734e9dc6F5",
|
|
6581
|
+
xChainId: types.NIBIRU_MAINNET_CHAIN_ID
|
|
6395
6582
|
}
|
|
6396
6583
|
}
|
|
6397
6584
|
},
|
|
@@ -6412,49 +6599,64 @@ var spokeChainConfig = {
|
|
|
6412
6599
|
symbol: "ETH",
|
|
6413
6600
|
name: "Ethereum",
|
|
6414
6601
|
decimals: 18,
|
|
6415
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6602
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6603
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6416
6604
|
},
|
|
6417
6605
|
bnUSD: {
|
|
6418
6606
|
symbol: "bnUSD",
|
|
6419
6607
|
name: "bnUSD",
|
|
6420
6608
|
decimals: 18,
|
|
6421
|
-
address: "0xA256dd181C3f6E5eC68C6869f5D50a712d47212e"
|
|
6609
|
+
address: "0xA256dd181C3f6E5eC68C6869f5D50a712d47212e",
|
|
6610
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6422
6611
|
},
|
|
6423
6612
|
wstETH: {
|
|
6424
6613
|
symbol: "wstETH",
|
|
6425
6614
|
name: "Wrapped stETH",
|
|
6426
6615
|
decimals: 18,
|
|
6427
|
-
address: "0x5979D7b546E38E414F7E9822514be443A4800529"
|
|
6616
|
+
address: "0x5979D7b546E38E414F7E9822514be443A4800529",
|
|
6617
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6428
6618
|
},
|
|
6429
6619
|
weETH: {
|
|
6430
6620
|
symbol: "weETH",
|
|
6431
6621
|
name: "Wrapped eETH",
|
|
6432
6622
|
decimals: 18,
|
|
6433
|
-
address: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe"
|
|
6623
|
+
address: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe",
|
|
6624
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6434
6625
|
},
|
|
6435
6626
|
tBTC: {
|
|
6436
6627
|
symbol: "tBTC",
|
|
6437
6628
|
name: "Arbitrum tBTC v2",
|
|
6438
6629
|
decimals: 18,
|
|
6439
|
-
address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40"
|
|
6630
|
+
address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40",
|
|
6631
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6440
6632
|
},
|
|
6441
6633
|
WBTC: {
|
|
6442
6634
|
symbol: "WBTC",
|
|
6443
6635
|
name: "Wrapped BTC",
|
|
6444
6636
|
decimals: 8,
|
|
6445
|
-
address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"
|
|
6637
|
+
address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
|
|
6638
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6446
6639
|
},
|
|
6447
6640
|
USDC: {
|
|
6448
6641
|
symbol: "USDC",
|
|
6449
6642
|
name: "USD Coin (USDC)",
|
|
6450
6643
|
decimals: 6,
|
|
6451
|
-
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
|
|
6644
|
+
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
6645
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6452
6646
|
},
|
|
6453
6647
|
USDT: {
|
|
6454
6648
|
symbol: "USDT",
|
|
6455
6649
|
name: "TetherToken",
|
|
6456
6650
|
decimals: 6,
|
|
6457
|
-
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"
|
|
6651
|
+
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
|
|
6652
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6653
|
+
},
|
|
6654
|
+
SODA: {
|
|
6655
|
+
symbol: "SODA",
|
|
6656
|
+
name: "SODAX",
|
|
6657
|
+
decimals: 18,
|
|
6658
|
+
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F",
|
|
6659
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6458
6660
|
}
|
|
6459
6661
|
}
|
|
6460
6662
|
},
|
|
@@ -6475,37 +6677,50 @@ var spokeChainConfig = {
|
|
|
6475
6677
|
symbol: "ETH",
|
|
6476
6678
|
name: "Ethereum",
|
|
6477
6679
|
decimals: 18,
|
|
6478
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6680
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6681
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6479
6682
|
},
|
|
6480
6683
|
bnUSD: {
|
|
6481
6684
|
symbol: "bnUSD",
|
|
6482
6685
|
name: "bnUSD",
|
|
6483
6686
|
decimals: 18,
|
|
6484
|
-
address: "0xAcfab3F31C0a18559D78556BBf297EC29c6cf8aa"
|
|
6687
|
+
address: "0xAcfab3F31C0a18559D78556BBf297EC29c6cf8aa",
|
|
6688
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6485
6689
|
},
|
|
6486
6690
|
weETH: {
|
|
6487
6691
|
symbol: "weETH",
|
|
6488
6692
|
name: "Wrapped eETH",
|
|
6489
6693
|
decimals: 18,
|
|
6490
|
-
address: "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a"
|
|
6694
|
+
address: "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a",
|
|
6695
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6491
6696
|
},
|
|
6492
6697
|
USDC: {
|
|
6493
6698
|
symbol: "USDC",
|
|
6494
6699
|
name: "USD Coin",
|
|
6495
6700
|
decimals: 6,
|
|
6496
|
-
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
|
|
6701
|
+
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
6702
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6497
6703
|
},
|
|
6498
6704
|
wstETH: {
|
|
6499
6705
|
symbol: "wstETH",
|
|
6500
6706
|
name: "Wrapped stETH",
|
|
6501
6707
|
decimals: 18,
|
|
6502
|
-
address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"
|
|
6708
|
+
address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452",
|
|
6709
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6503
6710
|
},
|
|
6504
6711
|
cbBTC: {
|
|
6505
6712
|
symbol: "cbBTC",
|
|
6506
6713
|
name: "Coinbase Wrapped BTC",
|
|
6507
6714
|
decimals: 8,
|
|
6508
|
-
address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"
|
|
6715
|
+
address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
|
|
6716
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6717
|
+
},
|
|
6718
|
+
SODA: {
|
|
6719
|
+
symbol: "SODA",
|
|
6720
|
+
name: "SODAX",
|
|
6721
|
+
decimals: 18,
|
|
6722
|
+
address: "0xdc5B4b00F98347E95b9F94911213DAB4C687e1e3",
|
|
6723
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6509
6724
|
}
|
|
6510
6725
|
}
|
|
6511
6726
|
},
|
|
@@ -6526,37 +6741,50 @@ var spokeChainConfig = {
|
|
|
6526
6741
|
symbol: "ETH",
|
|
6527
6742
|
name: "Ethereum",
|
|
6528
6743
|
decimals: 18,
|
|
6529
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6744
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6745
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6530
6746
|
},
|
|
6531
6747
|
bnUSD: {
|
|
6532
6748
|
symbol: "bnUSD",
|
|
6533
6749
|
name: "bnUSD",
|
|
6534
6750
|
decimals: 18,
|
|
6535
|
-
address: "0xF4f7dC27c17470a26d0de9039Cf0EA5045F100E8"
|
|
6751
|
+
address: "0xF4f7dC27c17470a26d0de9039Cf0EA5045F100E8",
|
|
6752
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6536
6753
|
},
|
|
6537
6754
|
USDC: {
|
|
6538
6755
|
symbol: "USDC",
|
|
6539
6756
|
name: "USD Coin",
|
|
6540
6757
|
decimals: 6,
|
|
6541
|
-
address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
|
|
6758
|
+
address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
6759
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6542
6760
|
},
|
|
6543
6761
|
wstETH: {
|
|
6544
6762
|
symbol: "wstETH",
|
|
6545
6763
|
name: "Wrapped stETH",
|
|
6546
6764
|
decimals: 18,
|
|
6547
|
-
address: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"
|
|
6765
|
+
address: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb",
|
|
6766
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6548
6767
|
},
|
|
6549
6768
|
weETH: {
|
|
6550
6769
|
symbol: "weETH",
|
|
6551
6770
|
name: "Wrapped eETH",
|
|
6552
6771
|
decimals: 18,
|
|
6553
|
-
address: "0x5A7fACB970D094B6C7FF1df0eA68D99E6e73CBFF"
|
|
6772
|
+
address: "0x5A7fACB970D094B6C7FF1df0eA68D99E6e73CBFF",
|
|
6773
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6554
6774
|
},
|
|
6555
6775
|
USDT: {
|
|
6556
6776
|
symbol: "USDT",
|
|
6557
6777
|
name: "Tether USD",
|
|
6558
6778
|
decimals: 6,
|
|
6559
|
-
address: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"
|
|
6779
|
+
address: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58",
|
|
6780
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6781
|
+
},
|
|
6782
|
+
SODA: {
|
|
6783
|
+
symbol: "SODA",
|
|
6784
|
+
name: "SODAX",
|
|
6785
|
+
decimals: 18,
|
|
6786
|
+
address: "0x1f22279C89B213944b7Ea41daCB0a868DdCDFd13",
|
|
6787
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6560
6788
|
}
|
|
6561
6789
|
}
|
|
6562
6790
|
},
|
|
@@ -6577,31 +6805,43 @@ var spokeChainConfig = {
|
|
|
6577
6805
|
symbol: "BNB",
|
|
6578
6806
|
name: "BNB",
|
|
6579
6807
|
decimals: 18,
|
|
6580
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6808
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6809
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6581
6810
|
},
|
|
6582
6811
|
bnUSD: {
|
|
6583
6812
|
symbol: "bnUSD",
|
|
6584
6813
|
name: "bnUSD",
|
|
6585
6814
|
decimals: 18,
|
|
6586
|
-
address: "0x8428FedC020737a5A2291F46cB1B80613eD71638"
|
|
6815
|
+
address: "0x8428FedC020737a5A2291F46cB1B80613eD71638",
|
|
6816
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6587
6817
|
},
|
|
6588
6818
|
ETHB: {
|
|
6589
6819
|
symbol: "ETHB",
|
|
6590
6820
|
name: "Ethereum BSC",
|
|
6591
6821
|
decimals: 18,
|
|
6592
|
-
address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8"
|
|
6822
|
+
address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8",
|
|
6823
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6593
6824
|
},
|
|
6594
6825
|
BTCB: {
|
|
6595
6826
|
symbol: "BTCB",
|
|
6596
6827
|
name: "Bitcoin BSC",
|
|
6597
6828
|
decimals: 18,
|
|
6598
|
-
address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c"
|
|
6829
|
+
address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c",
|
|
6830
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6599
6831
|
},
|
|
6600
6832
|
USDC: {
|
|
6601
6833
|
symbol: "USDC",
|
|
6602
6834
|
name: "USD Coin",
|
|
6603
6835
|
decimals: 18,
|
|
6604
|
-
address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d"
|
|
6836
|
+
address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
|
|
6837
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6838
|
+
},
|
|
6839
|
+
SODA: {
|
|
6840
|
+
symbol: "SODA",
|
|
6841
|
+
name: "SODAX",
|
|
6842
|
+
decimals: 18,
|
|
6843
|
+
address: "0xdc5B4b00F98347E95b9F94911213DAB4C687e1e3",
|
|
6844
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6605
6845
|
}
|
|
6606
6846
|
}
|
|
6607
6847
|
},
|
|
@@ -6622,19 +6862,29 @@ var spokeChainConfig = {
|
|
|
6622
6862
|
symbol: "POL",
|
|
6623
6863
|
name: "Polygon",
|
|
6624
6864
|
decimals: 18,
|
|
6625
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6865
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6866
|
+
xChainId: types.POLYGON_MAINNET_CHAIN_ID
|
|
6626
6867
|
},
|
|
6627
6868
|
bnUSD: {
|
|
6628
6869
|
symbol: "bnUSD",
|
|
6629
6870
|
name: "bnUSD",
|
|
6630
6871
|
decimals: 18,
|
|
6631
|
-
address: "0x39E77f86C1B1f3fbAb362A82b49D2E86C09659B4"
|
|
6872
|
+
address: "0x39E77f86C1B1f3fbAb362A82b49D2E86C09659B4",
|
|
6873
|
+
xChainId: types.POLYGON_MAINNET_CHAIN_ID
|
|
6632
6874
|
},
|
|
6633
6875
|
USDC: {
|
|
6634
6876
|
symbol: "USDC",
|
|
6635
6877
|
name: "USD Coin",
|
|
6636
6878
|
decimals: 6,
|
|
6637
|
-
address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
|
|
6879
|
+
address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
|
|
6880
|
+
xChainId: types.POLYGON_MAINNET_CHAIN_ID
|
|
6881
|
+
},
|
|
6882
|
+
SODA: {
|
|
6883
|
+
symbol: "SODA",
|
|
6884
|
+
name: "SODAX",
|
|
6885
|
+
decimals: 18,
|
|
6886
|
+
address: "0xDDF645F33eDAD18fC23E01416eD0267A1bF59D45",
|
|
6887
|
+
xChainId: types.POLYGON_MAINNET_CHAIN_ID
|
|
6638
6888
|
}
|
|
6639
6889
|
}
|
|
6640
6890
|
},
|
|
@@ -6659,19 +6909,29 @@ var spokeChainConfig = {
|
|
|
6659
6909
|
symbol: "INJ",
|
|
6660
6910
|
name: "Injective",
|
|
6661
6911
|
decimals: 18,
|
|
6662
|
-
address: "inj"
|
|
6912
|
+
address: "inj",
|
|
6913
|
+
xChainId: types.INJECTIVE_MAINNET_CHAIN_ID
|
|
6663
6914
|
},
|
|
6664
6915
|
bnUSD: {
|
|
6665
6916
|
symbol: "bnUSD",
|
|
6666
6917
|
name: "bnUSD",
|
|
6667
6918
|
decimals: 18,
|
|
6668
|
-
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/bnUSD"
|
|
6919
|
+
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/bnUSD",
|
|
6920
|
+
xChainId: types.INJECTIVE_MAINNET_CHAIN_ID
|
|
6669
6921
|
},
|
|
6670
6922
|
USDC: {
|
|
6671
6923
|
symbol: "USDC",
|
|
6672
6924
|
name: "USD Coin",
|
|
6673
6925
|
decimals: 6,
|
|
6674
|
-
address: "ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E"
|
|
6926
|
+
address: "ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E",
|
|
6927
|
+
xChainId: types.INJECTIVE_MAINNET_CHAIN_ID
|
|
6928
|
+
},
|
|
6929
|
+
SODA: {
|
|
6930
|
+
symbol: "SODA",
|
|
6931
|
+
name: "SODAX",
|
|
6932
|
+
decimals: 18,
|
|
6933
|
+
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/soda",
|
|
6934
|
+
xChainId: types.INJECTIVE_MAINNET_CHAIN_ID
|
|
6675
6935
|
}
|
|
6676
6936
|
},
|
|
6677
6937
|
gasPrice: "500000000inj",
|
|
@@ -6694,25 +6954,36 @@ var spokeChainConfig = {
|
|
|
6694
6954
|
symbol: "bnUSD",
|
|
6695
6955
|
name: "bnUSD",
|
|
6696
6956
|
decimals: 7,
|
|
6697
|
-
address: "CD6YBFFWMU2UJHX2NGRJ7RN76IJVTCC7MRA46DUBXNB7E6W7H7JRJ2CX"
|
|
6957
|
+
address: "CD6YBFFWMU2UJHX2NGRJ7RN76IJVTCC7MRA46DUBXNB7E6W7H7JRJ2CX",
|
|
6958
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6698
6959
|
},
|
|
6699
6960
|
XLM: {
|
|
6700
6961
|
symbol: "XLM",
|
|
6701
6962
|
name: "Stellar Lumens",
|
|
6702
6963
|
decimals: 7,
|
|
6703
|
-
address: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA"
|
|
6964
|
+
address: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
|
|
6965
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6704
6966
|
},
|
|
6705
6967
|
USDC: {
|
|
6706
6968
|
symbol: "USDC",
|
|
6707
6969
|
name: "USD Coin",
|
|
6708
6970
|
decimals: 7,
|
|
6709
|
-
address: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"
|
|
6971
|
+
address: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
|
|
6972
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6710
6973
|
},
|
|
6711
6974
|
legacybnUSD: {
|
|
6712
|
-
symbol: "bnUSD",
|
|
6975
|
+
symbol: "bnUSD (legacy)",
|
|
6713
6976
|
name: "legacybnUSD",
|
|
6714
6977
|
decimals: 18,
|
|
6715
|
-
address: "CCT4ZYIYZ3TUO2AWQFEOFGBZ6HQP3GW5TA37CK7CRZVFRDXYTHTYX7KP"
|
|
6978
|
+
address: "CCT4ZYIYZ3TUO2AWQFEOFGBZ6HQP3GW5TA37CK7CRZVFRDXYTHTYX7KP",
|
|
6979
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6980
|
+
},
|
|
6981
|
+
SODA: {
|
|
6982
|
+
symbol: "SODA",
|
|
6983
|
+
name: "SODAX",
|
|
6984
|
+
decimals: 7,
|
|
6985
|
+
address: "CAH5LKJC2ZB4RVUVEVL2QWJWNJLHQE2UF767ILLQ5EQ4O3OURR2XIUGM",
|
|
6986
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6716
6987
|
}
|
|
6717
6988
|
},
|
|
6718
6989
|
nativeToken: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
|
|
@@ -6739,61 +7010,78 @@ var spokeChainConfig = {
|
|
|
6739
7010
|
symbol: "SUI",
|
|
6740
7011
|
name: "SUI",
|
|
6741
7012
|
decimals: 9,
|
|
6742
|
-
address: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"
|
|
7013
|
+
address: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
|
|
7014
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6743
7015
|
},
|
|
6744
7016
|
bnUSD: {
|
|
6745
7017
|
symbol: "bnUSD",
|
|
6746
7018
|
name: "bnUSD",
|
|
6747
7019
|
decimals: 9,
|
|
6748
|
-
address: "0xff4de2b2b57dd7611d2812d231a467d007b702a101fd5c7ad3b278257cddb507::bnusd::BNUSD"
|
|
7020
|
+
address: "0xff4de2b2b57dd7611d2812d231a467d007b702a101fd5c7ad3b278257cddb507::bnusd::BNUSD",
|
|
7021
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6749
7022
|
},
|
|
6750
7023
|
USDC: {
|
|
6751
7024
|
symbol: "USDC",
|
|
6752
7025
|
name: "USD Coin",
|
|
6753
7026
|
decimals: 6,
|
|
6754
|
-
address: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"
|
|
7027
|
+
address: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
|
|
7028
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6755
7029
|
},
|
|
6756
7030
|
legacybnUSD: {
|
|
6757
|
-
symbol: "bnUSD",
|
|
7031
|
+
symbol: "bnUSD (legacy)",
|
|
6758
7032
|
name: "legacybnUSD",
|
|
6759
7033
|
decimals: 9,
|
|
6760
|
-
address: "0x03917a812fe4a6d6bc779c5ab53f8a80ba741f8af04121193fc44e0f662e2ceb::balanced_dollar::BALANCED_DOLLAR"
|
|
7034
|
+
address: "0x03917a812fe4a6d6bc779c5ab53f8a80ba741f8af04121193fc44e0f662e2ceb::balanced_dollar::BALANCED_DOLLAR",
|
|
7035
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6761
7036
|
},
|
|
6762
7037
|
afSUI: {
|
|
6763
7038
|
symbol: "afSUI",
|
|
6764
7039
|
name: "Aftermath Staked Sui",
|
|
6765
7040
|
decimals: 9,
|
|
6766
|
-
address: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI"
|
|
7041
|
+
address: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI",
|
|
7042
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6767
7043
|
},
|
|
6768
7044
|
mSUI: {
|
|
6769
7045
|
symbol: "mSUI",
|
|
6770
7046
|
name: "Mirai Staked SUI",
|
|
6771
7047
|
decimals: 9,
|
|
6772
|
-
address: "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI"
|
|
7048
|
+
address: "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI",
|
|
7049
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6773
7050
|
},
|
|
6774
7051
|
haSUI: {
|
|
6775
7052
|
symbol: "haSUI",
|
|
6776
7053
|
name: "haSUI",
|
|
6777
7054
|
decimals: 9,
|
|
6778
|
-
address: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"
|
|
7055
|
+
address: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",
|
|
7056
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6779
7057
|
},
|
|
6780
7058
|
vSUI: {
|
|
6781
7059
|
symbol: "vSUI",
|
|
6782
7060
|
name: "Volo Staked SUI",
|
|
6783
7061
|
decimals: 9,
|
|
6784
|
-
address: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT"
|
|
7062
|
+
address: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",
|
|
7063
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6785
7064
|
},
|
|
6786
7065
|
yapSUI: {
|
|
6787
7066
|
symbol: "yapSUI",
|
|
6788
7067
|
name: "Yap Staked SUI",
|
|
6789
7068
|
decimals: 9,
|
|
6790
|
-
address: "0x83f1bb8c91ecd1fd313344058b0eed94d63c54e41d8d1ae5bff1353443517d65::yap_sui::YAP_SUI"
|
|
7069
|
+
address: "0x83f1bb8c91ecd1fd313344058b0eed94d63c54e41d8d1ae5bff1353443517d65::yap_sui::YAP_SUI",
|
|
7070
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6791
7071
|
},
|
|
6792
7072
|
trevinSUI: {
|
|
6793
7073
|
symbol: "trevinSUI",
|
|
6794
7074
|
name: "Trevin Staked SUI",
|
|
6795
7075
|
decimals: 9,
|
|
6796
|
-
address: "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI"
|
|
7076
|
+
address: "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI",
|
|
7077
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
7078
|
+
},
|
|
7079
|
+
SODA: {
|
|
7080
|
+
symbol: "SODA",
|
|
7081
|
+
name: "SODAX",
|
|
7082
|
+
decimals: 9,
|
|
7083
|
+
address: "0x0a0393721732617a2a771535e83c0a46f04aeef7d03239bbbb1249bc0981b952::soda::SODA",
|
|
7084
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6797
7085
|
}
|
|
6798
7086
|
},
|
|
6799
7087
|
nativeToken: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
|
|
@@ -6814,7 +7102,7 @@ var spokeChainConfig = {
|
|
|
6814
7102
|
},
|
|
6815
7103
|
chain: {
|
|
6816
7104
|
id: types.ICON_MAINNET_CHAIN_ID,
|
|
6817
|
-
name: "ICON
|
|
7105
|
+
name: "ICON",
|
|
6818
7106
|
type: "ICON"
|
|
6819
7107
|
},
|
|
6820
7108
|
supportedTokens: {
|
|
@@ -6822,33 +7110,38 @@ var spokeChainConfig = {
|
|
|
6822
7110
|
symbol: "ICX",
|
|
6823
7111
|
name: "ICON",
|
|
6824
7112
|
decimals: 18,
|
|
6825
|
-
address: "cx0000000000000000000000000000000000000000"
|
|
7113
|
+
address: "cx0000000000000000000000000000000000000000",
|
|
7114
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6826
7115
|
},
|
|
6827
7116
|
wICX: {
|
|
6828
7117
|
symbol: "wICX",
|
|
6829
7118
|
name: "Wrapped ICX",
|
|
6830
7119
|
decimals: 18,
|
|
6831
|
-
address: "cx3975b43d260fb8ec802cef6e60c2f4d07486f11d"
|
|
7120
|
+
address: "cx3975b43d260fb8ec802cef6e60c2f4d07486f11d",
|
|
7121
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6832
7122
|
},
|
|
6833
7123
|
bnUSD: {
|
|
6834
7124
|
// same as legacy
|
|
6835
|
-
symbol: "bnUSD",
|
|
7125
|
+
symbol: "bnUSD (legacy)",
|
|
6836
7126
|
name: "bnUSD",
|
|
6837
7127
|
decimals: 18,
|
|
6838
|
-
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb"
|
|
7128
|
+
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb",
|
|
7129
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6839
7130
|
},
|
|
6840
7131
|
legacybnUSD: {
|
|
6841
7132
|
// duplicate of bnUSD purely for consistency with other legacy tokens chains (sui, stellar)
|
|
6842
|
-
symbol: "bnUSD",
|
|
7133
|
+
symbol: "bnUSD (legacy)",
|
|
6843
7134
|
name: "bnUSD",
|
|
6844
7135
|
decimals: 18,
|
|
6845
|
-
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb"
|
|
7136
|
+
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb",
|
|
7137
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6846
7138
|
},
|
|
6847
7139
|
BALN: {
|
|
6848
7140
|
symbol: "BALN",
|
|
6849
7141
|
name: "BALN",
|
|
6850
7142
|
decimals: 18,
|
|
6851
|
-
address: "cxf61cd5a45dc9f91c15aa65831a30a90d59a09619"
|
|
7143
|
+
address: "cxf61cd5a45dc9f91c15aa65831a30a90d59a09619",
|
|
7144
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6852
7145
|
}
|
|
6853
7146
|
},
|
|
6854
7147
|
nativeToken: "cx0000000000000000000000000000000000000000",
|
|
@@ -6856,26 +7149,8 @@ var spokeChainConfig = {
|
|
|
6856
7149
|
nid: "0x1"
|
|
6857
7150
|
}
|
|
6858
7151
|
};
|
|
6859
|
-
var HubVaultSymbols = [
|
|
6860
|
-
"sodaAVAX",
|
|
6861
|
-
"sodaBNB",
|
|
6862
|
-
"sodaETH",
|
|
6863
|
-
"sodaBTC",
|
|
6864
|
-
"sodaSUI",
|
|
6865
|
-
"sodaINJ",
|
|
6866
|
-
"sodaXLM",
|
|
6867
|
-
"sodaSOL",
|
|
6868
|
-
"sodaSODA",
|
|
6869
|
-
"sodaUSDT",
|
|
6870
|
-
"sodaUSDC",
|
|
6871
|
-
"bnUSD",
|
|
6872
|
-
"sodaPOL",
|
|
6873
|
-
"sodaNIBI",
|
|
6874
|
-
"sodaS",
|
|
6875
|
-
"IbnUSD"
|
|
6876
|
-
];
|
|
6877
7152
|
var hubVaults = {
|
|
6878
|
-
IbnUSD: {
|
|
7153
|
+
[SodaTokens.IbnUSD.symbol]: {
|
|
6879
7154
|
// ICON bnUSD (Migration) vault on Sonic contains legacy bnUSD tokens (stellar, sui, icon)
|
|
6880
7155
|
address: "0x9D4b663Eb075d2a1C7B8eaEFB9eCCC0510388B51",
|
|
6881
7156
|
reserves: [
|
|
@@ -6885,28 +7160,28 @@ var hubVaults = {
|
|
|
6885
7160
|
"0x1559B52d2e165da1505a542EA37C543c9137f52a"
|
|
6886
7161
|
]
|
|
6887
7162
|
},
|
|
6888
|
-
sodaS: {
|
|
7163
|
+
[SodaTokens.sodaS.symbol]: {
|
|
6889
7164
|
address: "0x62ecc3eeb80a162c57624b3ff80313fe69f5203e",
|
|
6890
7165
|
reserves: [
|
|
6891
7166
|
// hub asset addresses contained in the vault
|
|
6892
7167
|
"0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38"
|
|
6893
7168
|
]
|
|
6894
7169
|
},
|
|
6895
|
-
sodaNIBI: {
|
|
7170
|
+
[SodaTokens.sodaNIBI.symbol]: {
|
|
6896
7171
|
address: "0xc6c85287a8b173a509c2f198bb719a8a5a2d0c68",
|
|
6897
7172
|
reserves: [
|
|
6898
7173
|
// hub asset addresses contained in the vault
|
|
6899
7174
|
"0xe0064414c2c1a636a9424c7a17d86fbf7fd3f190"
|
|
6900
7175
|
]
|
|
6901
7176
|
},
|
|
6902
|
-
sodaPOL: {
|
|
7177
|
+
[SodaTokens.sodaPOL.symbol]: {
|
|
6903
7178
|
address: "0x208ed38f4783328aa9ebfec360d32e7520a9b779",
|
|
6904
7179
|
reserves: [
|
|
6905
7180
|
// hub asset addresses contained in the vault
|
|
6906
7181
|
"0x9ee17486571917837210824b0d4cadfe3b324d12"
|
|
6907
7182
|
]
|
|
6908
7183
|
},
|
|
6909
|
-
bnUSD: {
|
|
7184
|
+
[SodaTokens.bnUSD.symbol]: {
|
|
6910
7185
|
// new bnUSD vault on Sonic (also contains IbnUSD vault token as part of it)
|
|
6911
7186
|
address: "0xe801ca34e19abcbfea12025378d19c4fbe250131",
|
|
6912
7187
|
reserves: [
|
|
@@ -6925,19 +7200,33 @@ var hubVaults = {
|
|
|
6925
7200
|
"0xdf23097b9aeb917bf8fb70e99b6c528fffa35364",
|
|
6926
7201
|
"0x11b93c162aabffd026539bb3b9f9ec22c8b7ef8a",
|
|
6927
7202
|
"0x69425ffb14704124a58d6f69d510f74a59d9a5bc",
|
|
6928
|
-
"0x9d4b663eb075d2a1c7b8eaefb9eccc0510388b51"
|
|
7203
|
+
"0x9d4b663eb075d2a1c7b8eaefb9eccc0510388b51",
|
|
7204
|
+
"0xD1d14BF3324C901855A1f7d0d5CA4c8458D2a780"
|
|
6929
7205
|
]
|
|
6930
7206
|
},
|
|
6931
|
-
sodaSODA: {
|
|
7207
|
+
[SodaTokens.sodaSODA.symbol]: {
|
|
6932
7208
|
// SODA SODA vault
|
|
6933
7209
|
address: "0x21685e341de7844135329914be6bd8d16982d834",
|
|
6934
7210
|
reserves: [
|
|
6935
7211
|
// hub asset addresses contained in the vault
|
|
6936
|
-
"0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963"
|
|
7212
|
+
"0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963",
|
|
6937
7213
|
// SODA SODA hub asset
|
|
7214
|
+
"0xf51d7082375cdca8C19C74e1A0c77dA482aFDa4e",
|
|
7215
|
+
"0x93a367E5B37a1B9E8D04ef25a6Af40d181a3DfFF",
|
|
7216
|
+
"0x17fF8Ad5EBe6CA8B15751067cD0c89f0E580CD17",
|
|
7217
|
+
"0x4d12c72A8633588097D10e57b559ed642588e4C6",
|
|
7218
|
+
"0x26cd76cB5622Dc8638670A16E0Da5a51394A8DB1",
|
|
7219
|
+
"0x0eD0d274dC77ef460DC96b9fBaFF3EDB074e0471",
|
|
7220
|
+
"0x8D78A620E009Ba751Eb40d77A5e9Db48A3F2016b",
|
|
7221
|
+
"0x4Cf5Ce9594AEDdc5D3efe9d4Cdf0b944b4e73A53",
|
|
7222
|
+
"0xD749B5FfFED7cEDaa3239abDd16D677179C29AEc",
|
|
7223
|
+
"0x07Db7b1a96ebE474B20F52fF487cEE415adee79e",
|
|
7224
|
+
"0x20Ce75CdcEe44B1308365447b91B9c26e2b71Ffd",
|
|
7225
|
+
"0x5Db9CEc919f40C50809D9490DC3BbA4F05b0a1D7",
|
|
7226
|
+
"0x655730024B673B3378CD6031B1Cd01eaE9afb138"
|
|
6938
7227
|
]
|
|
6939
7228
|
},
|
|
6940
|
-
sodaAVAX: {
|
|
7229
|
+
[SodaTokens.sodaAVAX.symbol]: {
|
|
6941
7230
|
// SODA AVAX vault
|
|
6942
7231
|
address: "0x14238d267557e9d799016ad635b53cd15935d290",
|
|
6943
7232
|
reserves: [
|
|
@@ -6946,7 +7235,7 @@ var hubVaults = {
|
|
|
6946
7235
|
// AvalancheAVAX hub asset
|
|
6947
7236
|
]
|
|
6948
7237
|
},
|
|
6949
|
-
sodaBNB: {
|
|
7238
|
+
[SodaTokens.sodaBNB.symbol]: {
|
|
6950
7239
|
// SODA BNB vault
|
|
6951
7240
|
address: "0x40cd41b35db9e5109ae7e54b44de8625db320e6b",
|
|
6952
7241
|
reserves: [
|
|
@@ -6955,7 +7244,7 @@ var hubVaults = {
|
|
|
6955
7244
|
// BSC BNB hub asset
|
|
6956
7245
|
]
|
|
6957
7246
|
},
|
|
6958
|
-
sodaETH: {
|
|
7247
|
+
[SodaTokens.sodaETH.symbol]: {
|
|
6959
7248
|
// SODA ETH vault
|
|
6960
7249
|
address: "0x4effb5813271699683c25c734f4dabc45b363709",
|
|
6961
7250
|
reserves: [
|
|
@@ -6972,7 +7261,7 @@ var hubVaults = {
|
|
|
6972
7261
|
// Sonic WETH hub asset
|
|
6973
7262
|
]
|
|
6974
7263
|
},
|
|
6975
|
-
sodaBTC: {
|
|
7264
|
+
[SodaTokens.sodaBTC.symbol]: {
|
|
6976
7265
|
// SODA BTC vault
|
|
6977
7266
|
address: "0x7a1a5555842ad2d0ed274d09b5c4406a95799d5d",
|
|
6978
7267
|
reserves: [
|
|
@@ -6983,11 +7272,12 @@ var hubVaults = {
|
|
|
6983
7272
|
// Arbitrum wBTC hub asset
|
|
6984
7273
|
"0x96fc8540736f1598b7e235e6de8814062b3b5d3b",
|
|
6985
7274
|
// Arbitrum tBTC hub asset,
|
|
6986
|
-
"0xd8a24c71fea5bb81c66c01e532de7d9b11e13905"
|
|
7275
|
+
"0xd8a24c71fea5bb81c66c01e532de7d9b11e13905",
|
|
6987
7276
|
// BSC BTCB hub asset
|
|
7277
|
+
"0x03E99853C6376b13a4c6e4d0A115F1639c9FA14e"
|
|
6988
7278
|
]
|
|
6989
7279
|
},
|
|
6990
|
-
sodaSUI: {
|
|
7280
|
+
[SodaTokens.sodaSUI.symbol]: {
|
|
6991
7281
|
// SODA SUI vault
|
|
6992
7282
|
address: "0xdc5b4b00f98347e95b9f94911213dab4c687e1e3",
|
|
6993
7283
|
reserves: [
|
|
@@ -6996,7 +7286,7 @@ var hubVaults = {
|
|
|
6996
7286
|
// SUI SUI hub asset
|
|
6997
7287
|
]
|
|
6998
7288
|
},
|
|
6999
|
-
sodaINJ: {
|
|
7289
|
+
[SodaTokens.sodaINJ.symbol]: {
|
|
7000
7290
|
// SODA INJ vault
|
|
7001
7291
|
address: "0x1f22279c89b213944b7ea41dacb0a868ddcdfd13",
|
|
7002
7292
|
reserves: [
|
|
@@ -7005,7 +7295,7 @@ var hubVaults = {
|
|
|
7005
7295
|
// Injective INJ hub asset
|
|
7006
7296
|
]
|
|
7007
7297
|
},
|
|
7008
|
-
sodaXLM: {
|
|
7298
|
+
[SodaTokens.sodaXLM.symbol]: {
|
|
7009
7299
|
// SODA XLM vault
|
|
7010
7300
|
address: "0x6bc8c37cba91f76e68c9e6d689a9c21e4d32079b",
|
|
7011
7301
|
reserves: [
|
|
@@ -7014,7 +7304,7 @@ var hubVaults = {
|
|
|
7014
7304
|
// Stellar XLM hub asset
|
|
7015
7305
|
]
|
|
7016
7306
|
},
|
|
7017
|
-
sodaSOL: {
|
|
7307
|
+
[SodaTokens.sodaSOL.symbol]: {
|
|
7018
7308
|
// SODA SOL vault
|
|
7019
7309
|
address: "0xdea692287e2ce8cb08fa52917be0f16b1dacdc87",
|
|
7020
7310
|
reserves: [
|
|
@@ -7023,7 +7313,7 @@ var hubVaults = {
|
|
|
7023
7313
|
// Solana SOL hub asset
|
|
7024
7314
|
]
|
|
7025
7315
|
},
|
|
7026
|
-
sodaUSDT: {
|
|
7316
|
+
[SodaTokens.sodaUSDT.symbol]: {
|
|
7027
7317
|
// SODA USDT vault
|
|
7028
7318
|
address: "0xbdf1f453fcb61424011bbddcb96cfdb30f3fe876",
|
|
7029
7319
|
reserves: [
|
|
@@ -7035,7 +7325,7 @@ var hubVaults = {
|
|
|
7035
7325
|
// Sonic USDT
|
|
7036
7326
|
]
|
|
7037
7327
|
},
|
|
7038
|
-
sodaUSDC: {
|
|
7328
|
+
[SodaTokens.sodaUSDC.symbol]: {
|
|
7039
7329
|
address: "0xabbb91c0617090f0028bdc27597cd0d038f3a833",
|
|
7040
7330
|
reserves: [
|
|
7041
7331
|
"0x41abf4b1559ff709ef8150079bcb26db1fffd117",
|
|
@@ -7049,10 +7339,25 @@ var hubVaults = {
|
|
|
7049
7339
|
"0x4bc1211faa06fb50ff61a70331f56167ae511057",
|
|
7050
7340
|
"0x348007b53f25a9a857ab8ea81ec9e3ccbcf440f2",
|
|
7051
7341
|
"0xc3f020057510ffe10ceb882e1b48238b43d78a5e",
|
|
7052
|
-
"0x9d58508ad10d34048a11640735ca5075bba07b35"
|
|
7342
|
+
"0x9d58508ad10d34048a11640735ca5075bba07b35",
|
|
7343
|
+
"0xC1df02fb7b1b06bE886592C89F6955387998B2f7"
|
|
7053
7344
|
]
|
|
7054
7345
|
}
|
|
7055
7346
|
};
|
|
7347
|
+
var hubVaultTokensMap = new Map(
|
|
7348
|
+
Object.entries(hubVaults).map(([symbol, vault]) => [
|
|
7349
|
+
vault.address.toLowerCase(),
|
|
7350
|
+
{
|
|
7351
|
+
address: vault.address.toLowerCase(),
|
|
7352
|
+
symbol,
|
|
7353
|
+
name: symbol,
|
|
7354
|
+
decimals: 18
|
|
7355
|
+
}
|
|
7356
|
+
])
|
|
7357
|
+
);
|
|
7358
|
+
var getHubVaultTokenByAddress = (address) => {
|
|
7359
|
+
return hubVaultTokensMap.get(address.toLowerCase());
|
|
7360
|
+
};
|
|
7056
7361
|
var bnUSDLegacySpokeChainIds = [
|
|
7057
7362
|
types.ICON_MAINNET_CHAIN_ID,
|
|
7058
7363
|
types.SUI_MAINNET_CHAIN_ID,
|
|
@@ -7098,6 +7403,13 @@ var hubAssets = {
|
|
|
7098
7403
|
name: "Sonic",
|
|
7099
7404
|
vault: hubVaults.sodaS.address
|
|
7100
7405
|
},
|
|
7406
|
+
[spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].bnUSD]: {
|
|
7407
|
+
asset: "0x289cDa1043b4Ce26BDCa3c12E534f56b24308A5B",
|
|
7408
|
+
decimal: 18,
|
|
7409
|
+
symbol: "bnUSD",
|
|
7410
|
+
name: "bnUSD",
|
|
7411
|
+
vault: hubVaults.bnUSD.address
|
|
7412
|
+
},
|
|
7101
7413
|
[spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS.address]: {
|
|
7102
7414
|
asset: spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS.address,
|
|
7103
7415
|
decimal: 18,
|
|
@@ -7132,7 +7444,8 @@ var hubAssets = {
|
|
|
7132
7444
|
symbol: "SODA",
|
|
7133
7445
|
name: "SODA",
|
|
7134
7446
|
vault: hubVaults.sodaSODA.address
|
|
7135
|
-
}
|
|
7447
|
+
},
|
|
7448
|
+
...SodaTokensAsHubAssets
|
|
7136
7449
|
},
|
|
7137
7450
|
[types.AVALANCHE_MAINNET_CHAIN_ID]: {
|
|
7138
7451
|
[spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].nativeToken]: {
|
|
@@ -7162,6 +7475,13 @@ var hubAssets = {
|
|
|
7162
7475
|
symbol: "bnUSD",
|
|
7163
7476
|
name: "bnUSD",
|
|
7164
7477
|
vault: hubVaults.bnUSD.address
|
|
7478
|
+
},
|
|
7479
|
+
[spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7480
|
+
asset: "0xf51d7082375cdca8C19C74e1A0c77dA482aFDa4e",
|
|
7481
|
+
decimal: 18,
|
|
7482
|
+
symbol: "SODA",
|
|
7483
|
+
name: "SODAX",
|
|
7484
|
+
vault: hubVaults.sodaSODA.address
|
|
7165
7485
|
}
|
|
7166
7486
|
},
|
|
7167
7487
|
[types.ARBITRUM_MAINNET_CHAIN_ID]: {
|
|
@@ -7222,6 +7542,13 @@ var hubAssets = {
|
|
|
7222
7542
|
symbol: "bnUSD",
|
|
7223
7543
|
name: "bnUSD",
|
|
7224
7544
|
vault: hubVaults.bnUSD.address
|
|
7545
|
+
},
|
|
7546
|
+
[spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7547
|
+
asset: "0x93a367E5B37a1B9E8D04ef25a6Af40d181a3DfFF",
|
|
7548
|
+
decimal: 18,
|
|
7549
|
+
symbol: "SODA",
|
|
7550
|
+
name: "SODAX",
|
|
7551
|
+
vault: hubVaults.sodaSODA.address
|
|
7225
7552
|
}
|
|
7226
7553
|
},
|
|
7227
7554
|
[types.BASE_MAINNET_CHAIN_ID]: {
|
|
@@ -7268,6 +7595,13 @@ var hubAssets = {
|
|
|
7268
7595
|
name: "Wrapped Staked Ethereum",
|
|
7269
7596
|
vault: "0x"
|
|
7270
7597
|
// no vault yet
|
|
7598
|
+
},
|
|
7599
|
+
[spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7600
|
+
asset: "0x17fF8Ad5EBe6CA8B15751067cD0c89f0E580CD17",
|
|
7601
|
+
decimal: 18,
|
|
7602
|
+
symbol: "SODA",
|
|
7603
|
+
name: "SODAX",
|
|
7604
|
+
vault: hubVaults.sodaSODA.address
|
|
7271
7605
|
}
|
|
7272
7606
|
},
|
|
7273
7607
|
[types.OPTIMISM_MAINNET_CHAIN_ID]: {
|
|
@@ -7314,6 +7648,13 @@ var hubAssets = {
|
|
|
7314
7648
|
symbol: "USDT",
|
|
7315
7649
|
name: "Tether USD",
|
|
7316
7650
|
vault: hubVaults.sodaUSDT.address
|
|
7651
|
+
},
|
|
7652
|
+
[spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7653
|
+
asset: "0x0eD0d274dC77ef460DC96b9fBaFF3EDB074e0471",
|
|
7654
|
+
decimal: 18,
|
|
7655
|
+
symbol: "SODA",
|
|
7656
|
+
name: "SODAX",
|
|
7657
|
+
vault: hubVaults.sodaSODA.address
|
|
7317
7658
|
}
|
|
7318
7659
|
},
|
|
7319
7660
|
[types.NIBIRU_MAINNET_CHAIN_ID]: {
|
|
@@ -7330,6 +7671,13 @@ var hubAssets = {
|
|
|
7330
7671
|
symbol: "bnUSD",
|
|
7331
7672
|
name: "bnUSD",
|
|
7332
7673
|
vault: hubVaults.bnUSD.address
|
|
7674
|
+
},
|
|
7675
|
+
[spokeChainConfig[types.NIBIRU_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7676
|
+
asset: "0x26cd76cB5622Dc8638670A16E0Da5a51394A8DB1",
|
|
7677
|
+
decimal: 18,
|
|
7678
|
+
symbol: "SODA",
|
|
7679
|
+
name: "SODAX",
|
|
7680
|
+
vault: hubVaults.sodaSODA.address
|
|
7333
7681
|
}
|
|
7334
7682
|
},
|
|
7335
7683
|
[types.BSC_MAINNET_CHAIN_ID]: {
|
|
@@ -7367,6 +7715,13 @@ var hubAssets = {
|
|
|
7367
7715
|
symbol: "USDC",
|
|
7368
7716
|
name: "USD Coin",
|
|
7369
7717
|
vault: hubVaults.sodaUSDC.address
|
|
7718
|
+
},
|
|
7719
|
+
[spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7720
|
+
asset: "0x4d12c72A8633588097D10e57b559ed642588e4C6",
|
|
7721
|
+
decimal: 18,
|
|
7722
|
+
symbol: "SODA",
|
|
7723
|
+
name: "SODAX",
|
|
7724
|
+
vault: hubVaults.sodaSODA.address
|
|
7370
7725
|
}
|
|
7371
7726
|
},
|
|
7372
7727
|
[types.POLYGON_MAINNET_CHAIN_ID]: {
|
|
@@ -7390,6 +7745,13 @@ var hubAssets = {
|
|
|
7390
7745
|
symbol: "USDC",
|
|
7391
7746
|
name: "USD Coin",
|
|
7392
7747
|
vault: hubVaults.sodaUSDC.address
|
|
7748
|
+
},
|
|
7749
|
+
[spokeChainConfig[types.POLYGON_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7750
|
+
asset: "0x8D78A620E009Ba751Eb40d77A5e9Db48A3F2016b",
|
|
7751
|
+
decimal: 18,
|
|
7752
|
+
symbol: "SODA",
|
|
7753
|
+
name: "SODAX",
|
|
7754
|
+
vault: hubVaults.sodaSODA.address
|
|
7393
7755
|
}
|
|
7394
7756
|
},
|
|
7395
7757
|
[types.INJECTIVE_MAINNET_CHAIN_ID]: {
|
|
@@ -7413,6 +7775,13 @@ var hubAssets = {
|
|
|
7413
7775
|
symbol: "USDC",
|
|
7414
7776
|
name: "USD Coin",
|
|
7415
7777
|
vault: hubVaults.sodaUSDC.address
|
|
7778
|
+
},
|
|
7779
|
+
[spokeChainConfig[types.INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7780
|
+
asset: "0x20Ce75CdcEe44B1308365447b91B9c26e2b71Ffd",
|
|
7781
|
+
decimal: 18,
|
|
7782
|
+
symbol: "SODA",
|
|
7783
|
+
name: "SODAX",
|
|
7784
|
+
vault: hubVaults.sodaSODA.address
|
|
7416
7785
|
}
|
|
7417
7786
|
},
|
|
7418
7787
|
[types.STELLAR_MAINNET_CHAIN_ID]: {
|
|
@@ -7443,6 +7812,13 @@ var hubAssets = {
|
|
|
7443
7812
|
symbol: "legacybnUSD",
|
|
7444
7813
|
name: "legacybnUSD",
|
|
7445
7814
|
vault: hubVaults.IbnUSD.address
|
|
7815
|
+
},
|
|
7816
|
+
[spokeChainConfig[types.STELLAR_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7817
|
+
asset: "0xD749B5FfFED7cEDaa3239abDd16D677179C29AEc",
|
|
7818
|
+
decimal: 7,
|
|
7819
|
+
symbol: "SODA",
|
|
7820
|
+
name: "SODAX",
|
|
7821
|
+
vault: hubVaults.sodaSODA.address
|
|
7446
7822
|
}
|
|
7447
7823
|
},
|
|
7448
7824
|
[types.SUI_MAINNET_CHAIN_ID]: {
|
|
@@ -7521,6 +7897,13 @@ var hubAssets = {
|
|
|
7521
7897
|
symbol: "bnUSD",
|
|
7522
7898
|
name: "legacybnUSD",
|
|
7523
7899
|
vault: hubVaults.IbnUSD.address
|
|
7900
|
+
},
|
|
7901
|
+
[spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7902
|
+
asset: "0x5Db9CEc919f40C50809D9490DC3BbA4F05b0a1D7",
|
|
7903
|
+
decimal: 9,
|
|
7904
|
+
symbol: "SODA",
|
|
7905
|
+
name: "SODAX",
|
|
7906
|
+
vault: hubVaults.sodaSODA.address
|
|
7524
7907
|
}
|
|
7525
7908
|
},
|
|
7526
7909
|
[types.SOLANA_MAINNET_CHAIN_ID]: {
|
|
@@ -7544,6 +7927,13 @@ var hubAssets = {
|
|
|
7544
7927
|
symbol: "USDC",
|
|
7545
7928
|
name: "USD Coin",
|
|
7546
7929
|
vault: hubVaults.sodaUSDC.address
|
|
7930
|
+
},
|
|
7931
|
+
[spokeChainConfig[types.SOLANA_MAINNET_CHAIN_ID].supportedTokens.SODA.address]: {
|
|
7932
|
+
asset: "0x07Db7b1a96ebE474B20F52fF487cEE415adee79e",
|
|
7933
|
+
decimal: 9,
|
|
7934
|
+
symbol: "SODA",
|
|
7935
|
+
name: "SODAX",
|
|
7936
|
+
vault: hubVaults.sodaSODA.address
|
|
7547
7937
|
}
|
|
7548
7938
|
},
|
|
7549
7939
|
[types.ICON_MAINNET_CHAIN_ID]: {
|
|
@@ -7593,17 +7983,18 @@ var solverSupportedTokens = {
|
|
|
7593
7983
|
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.WETH,
|
|
7594
7984
|
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7595
7985
|
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.USDT,
|
|
7596
|
-
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS
|
|
7986
|
+
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS,
|
|
7987
|
+
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.bnUSD
|
|
7597
7988
|
],
|
|
7598
7989
|
[types.AVALANCHE_MAINNET_CHAIN_ID]: [
|
|
7599
7990
|
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.AVAX,
|
|
7600
7991
|
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDT,
|
|
7601
|
-
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7602
|
-
|
|
7992
|
+
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7993
|
+
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.bnUSD
|
|
7603
7994
|
],
|
|
7604
7995
|
[types.ARBITRUM_MAINNET_CHAIN_ID]: [
|
|
7605
7996
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7606
|
-
|
|
7997
|
+
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7607
7998
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.WBTC,
|
|
7608
7999
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.weETH,
|
|
7609
8000
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
@@ -7613,7 +8004,7 @@ var solverSupportedTokens = {
|
|
|
7613
8004
|
],
|
|
7614
8005
|
[types.BASE_MAINNET_CHAIN_ID]: [
|
|
7615
8006
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7616
|
-
|
|
8007
|
+
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7617
8008
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.weETH,
|
|
7618
8009
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7619
8010
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
@@ -7621,7 +8012,7 @@ var solverSupportedTokens = {
|
|
|
7621
8012
|
],
|
|
7622
8013
|
[types.OPTIMISM_MAINNET_CHAIN_ID]: [
|
|
7623
8014
|
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7624
|
-
|
|
8015
|
+
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7625
8016
|
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7626
8017
|
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
7627
8018
|
// spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.weETH, // NOTE: Not Implemented
|
|
@@ -7629,19 +8020,20 @@ var solverSupportedTokens = {
|
|
|
7629
8020
|
],
|
|
7630
8021
|
[types.POLYGON_MAINNET_CHAIN_ID]: [
|
|
7631
8022
|
spokeChainConfig[types.POLYGON_MAINNET_CHAIN_ID].supportedTokens.POL,
|
|
7632
|
-
|
|
8023
|
+
spokeChainConfig[types.POLYGON_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7633
8024
|
spokeChainConfig[types.POLYGON_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7634
8025
|
],
|
|
7635
8026
|
[types.BSC_MAINNET_CHAIN_ID]: [
|
|
7636
8027
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.BNB,
|
|
7637
8028
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.ETHB,
|
|
7638
8029
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.BTCB,
|
|
7639
|
-
|
|
8030
|
+
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7640
8031
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7641
8032
|
],
|
|
7642
8033
|
[types.SOLANA_MAINNET_CHAIN_ID]: [
|
|
7643
8034
|
spokeChainConfig[types.SOLANA_MAINNET_CHAIN_ID].supportedTokens.SOL,
|
|
7644
|
-
|
|
8035
|
+
spokeChainConfig[types.SOLANA_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
8036
|
+
// NOTE: Not Implemented
|
|
7645
8037
|
spokeChainConfig[types.SOLANA_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7646
8038
|
],
|
|
7647
8039
|
[types.ICON_MAINNET_CHAIN_ID]: [
|
|
@@ -7653,12 +8045,14 @@ var solverSupportedTokens = {
|
|
|
7653
8045
|
],
|
|
7654
8046
|
[types.STELLAR_MAINNET_CHAIN_ID]: [
|
|
7655
8047
|
spokeChainConfig[types.STELLAR_MAINNET_CHAIN_ID].supportedTokens.XLM,
|
|
7656
|
-
|
|
8048
|
+
spokeChainConfig[types.STELLAR_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
8049
|
+
// NOTE: Not Implemented
|
|
7657
8050
|
spokeChainConfig[types.STELLAR_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7658
8051
|
],
|
|
7659
8052
|
[types.SUI_MAINNET_CHAIN_ID]: [
|
|
7660
8053
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.SUI,
|
|
7661
|
-
|
|
8054
|
+
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
8055
|
+
// NOTE: Not Implemented
|
|
7662
8056
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7663
8057
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.afSUI,
|
|
7664
8058
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.mSUI,
|
|
@@ -7668,9 +8062,9 @@ var solverSupportedTokens = {
|
|
|
7668
8062
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.trevinSUI
|
|
7669
8063
|
],
|
|
7670
8064
|
[types.INJECTIVE_MAINNET_CHAIN_ID]: [
|
|
7671
|
-
spokeChainConfig[
|
|
8065
|
+
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.INJ,
|
|
7672
8066
|
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.bnUSD, // NOTE: Not Implemented
|
|
7673
|
-
spokeChainConfig[
|
|
8067
|
+
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7674
8068
|
],
|
|
7675
8069
|
[types.NIBIRU_MAINNET_CHAIN_ID]: [
|
|
7676
8070
|
// spokeChainConfig[NIBIRU_MAINNET_CHAIN_ID].supportedTokens.NIBI, // NOTE: Not Implemented
|
|
@@ -7802,11 +8196,30 @@ var chainIdToHubAssetsMap = new Map(
|
|
|
7802
8196
|
var supportedHubAssets = new Set(
|
|
7803
8197
|
Object.values(hubAssets).flatMap((assets) => Object.values(assets).map((info) => info.asset.toLowerCase()))
|
|
7804
8198
|
);
|
|
8199
|
+
var supportedSodaAssets = new Set(
|
|
8200
|
+
Object.values(hubAssets).flatMap((assets) => Object.values(assets).map((info) => info.vault.toLowerCase()))
|
|
8201
|
+
);
|
|
7805
8202
|
var spokeChainIdsSet = new Set(types.SPOKE_CHAIN_IDS);
|
|
8203
|
+
var getOriginalAssetInfoFromVault = (chainId, vault) => {
|
|
8204
|
+
const assets = hubAssets[chainId];
|
|
8205
|
+
if (!assets) {
|
|
8206
|
+
return [];
|
|
8207
|
+
}
|
|
8208
|
+
const vaultAddress = vault.toLowerCase();
|
|
8209
|
+
const result = [];
|
|
8210
|
+
for (const [spokeToken, info] of Object.entries(assets)) {
|
|
8211
|
+
if (info.vault.toLowerCase() === vaultAddress) {
|
|
8212
|
+
result.push(spokeToken);
|
|
8213
|
+
}
|
|
8214
|
+
}
|
|
8215
|
+
return result;
|
|
8216
|
+
};
|
|
7806
8217
|
var getHubAssetInfo = (chainId, asset) => originalAssetTohubAssetMap.get(chainId)?.get(asset.toLowerCase());
|
|
7807
8218
|
var isValidOriginalAssetAddress = (chainId, asset) => originalAssetTohubAssetMap.get(chainId)?.has(asset.toLowerCase()) ?? false;
|
|
7808
8219
|
var getOriginalAssetAddress = (chainId, hubAsset) => hubAssetToOriginalAssetMap.get(chainId)?.get(hubAsset.toLowerCase());
|
|
8220
|
+
var getOriginalTokenFromOriginalAssetAddress = (chainId, asset) => Object.values(spokeChainConfig[chainId].supportedTokens).find((t) => t.address.toLowerCase() === asset.toLowerCase()) ?? void 0;
|
|
7809
8221
|
var isValidHubAsset = (hubAsset) => supportedHubAssets.has(hubAsset.toLowerCase());
|
|
8222
|
+
var isValidVault = (vault) => supportedSodaAssets.has(vault.toLowerCase());
|
|
7810
8223
|
var isValidChainHubAsset = (chainId, hubAsset) => chainIdToHubAssetsMap.get(chainId)?.has(hubAsset.toLowerCase()) ?? false;
|
|
7811
8224
|
var isValidSpokeChainId = (chainId) => spokeChainIdsSet.has(chainId);
|
|
7812
8225
|
var isValidIntentRelayChainId = (chainId) => Object.values(INTENT_RELAY_CHAIN_IDS).some((id) => id === chainId);
|
|
@@ -7859,12 +8272,13 @@ var InjectiveSpokeProvider = class {
|
|
|
7859
8272
|
);
|
|
7860
8273
|
}
|
|
7861
8274
|
async getBalance(token) {
|
|
7862
|
-
|
|
8275
|
+
const response = await this.chainGrpcWasmApi.fetchSmartContractState(
|
|
7863
8276
|
this.chainConfig.addresses.assetManager,
|
|
7864
8277
|
sdkTs.toBase64({
|
|
7865
8278
|
get_balance: { denom: token }
|
|
7866
8279
|
})
|
|
7867
8280
|
);
|
|
8281
|
+
return sdkTs.fromBase64(response.data);
|
|
7868
8282
|
}
|
|
7869
8283
|
// Execute Methods (requires SigningCosmWasmClient)
|
|
7870
8284
|
/**
|
|
@@ -9315,7 +9729,7 @@ var EvmSpokeService = class _EvmSpokeService {
|
|
|
9315
9729
|
address: token,
|
|
9316
9730
|
abi: erc20Abi,
|
|
9317
9731
|
functionName: "balanceOf",
|
|
9318
|
-
args: [
|
|
9732
|
+
args: [spokeProvider.chainConfig.addresses.assetManager]
|
|
9319
9733
|
});
|
|
9320
9734
|
}
|
|
9321
9735
|
/**
|
|
@@ -9828,18 +10242,14 @@ var SolanaSpokeService = class _SolanaSpokeService {
|
|
|
9828
10242
|
);
|
|
9829
10243
|
}
|
|
9830
10244
|
static async getDeposit(token, spokeProvider) {
|
|
9831
|
-
const
|
|
9832
|
-
|
|
9833
|
-
spokeProvider.chainConfig.rpcUrl,
|
|
9834
|
-
spokeProvider.chainConfig.addresses.assetManager
|
|
9835
|
-
);
|
|
9836
|
-
const solToken = new web3_js.PublicKey(Buffer.from(token, "hex"));
|
|
10245
|
+
const assetManagerProgramId = new web3_js.PublicKey(spokeProvider.chainConfig.addresses.assetManager);
|
|
10246
|
+
const solToken = new web3_js.PublicKey(token);
|
|
9837
10247
|
if (isNative(new web3_js.PublicKey(solToken))) {
|
|
9838
|
-
const vaultNative = AssetManagerPDA.vault_native(
|
|
10248
|
+
const vaultNative = AssetManagerPDA.vault_native(assetManagerProgramId);
|
|
9839
10249
|
const balance = await spokeProvider.walletProvider.getBalance(vaultNative.pda.toBase58());
|
|
9840
10250
|
return BigInt(balance);
|
|
9841
10251
|
}
|
|
9842
|
-
const vaultToken = AssetManagerPDA.vault_token(
|
|
10252
|
+
const vaultToken = AssetManagerPDA.vault_token(assetManagerProgramId, new web3_js.PublicKey(solToken));
|
|
9843
10253
|
const tokenAccount = await spokeProvider.walletProvider.getTokenAccountBalance(vaultToken.pda.toBase58());
|
|
9844
10254
|
return BigInt(tokenAccount.value.amount);
|
|
9845
10255
|
}
|
|
@@ -10047,6 +10457,12 @@ var StellarSpokeService = class _StellarSpokeService {
|
|
|
10047
10457
|
raw
|
|
10048
10458
|
);
|
|
10049
10459
|
}
|
|
10460
|
+
/**
|
|
10461
|
+
* Get the balance of the token in the spoke chain asset manager.
|
|
10462
|
+
* @param token - The address of the token to get the balance of.
|
|
10463
|
+
* @param spokeProvider - The spoke provider.
|
|
10464
|
+
* @returns The balance of the token.
|
|
10465
|
+
*/
|
|
10050
10466
|
static async getDeposit(token, spokeProvider) {
|
|
10051
10467
|
return BigInt(await spokeProvider.getBalance(token));
|
|
10052
10468
|
}
|
|
@@ -10163,7 +10579,7 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10163
10579
|
* @returns {PromiseEvmTxReturnType<R>} A promise that resolves to the transaction hash
|
|
10164
10580
|
*/
|
|
10165
10581
|
static async deposit(params, spokeProvider, raw) {
|
|
10166
|
-
|
|
10582
|
+
invariant12__default.default(spokeProvider instanceof SonicSpokeProvider, "[SonicSpokeService] invalid spoke provider");
|
|
10167
10583
|
const userHubAddress = params.to ?? await _SonicSpokeService.getUserRouter(params.from, spokeProvider);
|
|
10168
10584
|
const calls = Array.from(
|
|
10169
10585
|
viem.decodeAbiParameters(
|
|
@@ -10228,11 +10644,11 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10228
10644
|
inputToken = hubProvider.chainConfig.nativeToken;
|
|
10229
10645
|
}
|
|
10230
10646
|
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
10231
|
-
|
|
10647
|
+
invariant12__default.default(
|
|
10232
10648
|
inputToken,
|
|
10233
10649
|
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
10234
10650
|
);
|
|
10235
|
-
|
|
10651
|
+
invariant12__default.default(
|
|
10236
10652
|
outputToken,
|
|
10237
10653
|
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
10238
10654
|
);
|
|
@@ -10295,7 +10711,7 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10295
10711
|
* @returns {PromiseEvmTxReturnType<R>} A promise that resolves to the transaction hash
|
|
10296
10712
|
*/
|
|
10297
10713
|
static async callWallet(payload, spokeProvider, raw) {
|
|
10298
|
-
|
|
10714
|
+
invariant12__default.default(spokeProvider instanceof SonicSpokeProvider, "[SonicSpokeService] invalid spoke provider");
|
|
10299
10715
|
const calls = viem.decodeAbiParameters(
|
|
10300
10716
|
[
|
|
10301
10717
|
{
|
|
@@ -10784,11 +11200,8 @@ var SpokeService = class _SpokeService {
|
|
|
10784
11200
|
*/
|
|
10785
11201
|
static async deposit(params, spokeProvider, hubProvider, raw, skipSimulation = false) {
|
|
10786
11202
|
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
spokeProvider,
|
|
10790
|
-
raw
|
|
10791
|
-
);
|
|
11203
|
+
const _params = params;
|
|
11204
|
+
return SonicSpokeService.deposit(_params, spokeProvider, raw);
|
|
10792
11205
|
}
|
|
10793
11206
|
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
10794
11207
|
await _SpokeService.verifyDepositSimulation(params, spokeProvider, hubProvider, skipSimulation);
|
|
@@ -10813,7 +11226,6 @@ var SpokeService = class _SpokeService {
|
|
|
10813
11226
|
);
|
|
10814
11227
|
}
|
|
10815
11228
|
if (spokeProvider instanceof SuiSpokeProvider) {
|
|
10816
|
-
await _SpokeService.verifyDepositSimulation(params, spokeProvider, hubProvider, skipSimulation);
|
|
10817
11229
|
return SuiSpokeService.deposit(
|
|
10818
11230
|
params,
|
|
10819
11231
|
spokeProvider,
|
|
@@ -10941,18 +11353,32 @@ var SpokeService = class _SpokeService {
|
|
|
10941
11353
|
raw
|
|
10942
11354
|
);
|
|
10943
11355
|
}
|
|
10944
|
-
if (
|
|
10945
|
-
await _SpokeService.
|
|
10946
|
-
|
|
10947
|
-
|
|
10948
|
-
|
|
10949
|
-
|
|
10950
|
-
|
|
10951
|
-
|
|
10952
|
-
|
|
10953
|
-
|
|
10954
|
-
|
|
10955
|
-
|
|
11356
|
+
if (!skipSimulation) {
|
|
11357
|
+
const result = await _SpokeService.simulateRecvMessage(
|
|
11358
|
+
{
|
|
11359
|
+
target: from,
|
|
11360
|
+
srcChainId: getIntentRelayChainId(spokeProvider.chainConfig.chain.id),
|
|
11361
|
+
srcAddress: await spokeProvider.walletProvider.getWalletAddressBytes(),
|
|
11362
|
+
payload
|
|
11363
|
+
},
|
|
11364
|
+
hubProvider
|
|
11365
|
+
);
|
|
11366
|
+
if (!result.success) {
|
|
11367
|
+
throw new Error("Simulation failed", { cause: result });
|
|
11368
|
+
}
|
|
11369
|
+
}
|
|
11370
|
+
if (isEvmSpokeProvider(spokeProvider)) {
|
|
11371
|
+
await _SpokeService.verifySimulation(from, payload, spokeProvider, hubProvider, skipSimulation);
|
|
11372
|
+
return await EvmSpokeService.callWallet(from, payload, spokeProvider, hubProvider);
|
|
11373
|
+
}
|
|
11374
|
+
if (isInjectiveSpokeProvider(spokeProvider)) {
|
|
11375
|
+
await _SpokeService.verifySimulation(from, payload, spokeProvider, hubProvider, skipSimulation);
|
|
11376
|
+
return await InjectiveSpokeService.callWallet(
|
|
11377
|
+
from,
|
|
11378
|
+
payload,
|
|
11379
|
+
spokeProvider,
|
|
11380
|
+
hubProvider,
|
|
11381
|
+
raw
|
|
10956
11382
|
);
|
|
10957
11383
|
}
|
|
10958
11384
|
if (isIconSpokeProvider(spokeProvider)) {
|
|
@@ -11009,19 +11435,19 @@ async function postRequest(payload, apiUrl) {
|
|
|
11009
11435
|
return response.json();
|
|
11010
11436
|
}
|
|
11011
11437
|
async function submitTransaction(payload, apiUrl) {
|
|
11012
|
-
|
|
11013
|
-
|
|
11438
|
+
invariant12__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11439
|
+
invariant12__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11014
11440
|
return postRequest(payload, apiUrl);
|
|
11015
11441
|
}
|
|
11016
11442
|
async function getTransactionPackets(payload, apiUrl) {
|
|
11017
|
-
|
|
11018
|
-
|
|
11443
|
+
invariant12__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11444
|
+
invariant12__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11019
11445
|
return postRequest(payload, apiUrl);
|
|
11020
11446
|
}
|
|
11021
11447
|
async function getPacket(payload, apiUrl) {
|
|
11022
|
-
|
|
11023
|
-
|
|
11024
|
-
|
|
11448
|
+
invariant12__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11449
|
+
invariant12__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11450
|
+
invariant12__default.default(payload.params.conn_sn.length > 0, "Invalid input parameters. conn_sn empty");
|
|
11025
11451
|
return postRequest(payload, apiUrl);
|
|
11026
11452
|
}
|
|
11027
11453
|
async function waitUntilIntentExecuted(payload) {
|
|
@@ -11152,11 +11578,11 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11152
11578
|
inputToken = hubProvider.chainConfig.wrappedNativeToken;
|
|
11153
11579
|
}
|
|
11154
11580
|
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
11155
|
-
|
|
11581
|
+
invariant12__default.default(
|
|
11156
11582
|
inputToken,
|
|
11157
11583
|
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
11158
11584
|
);
|
|
11159
|
-
|
|
11585
|
+
invariant12__default.default(
|
|
11160
11586
|
outputToken,
|
|
11161
11587
|
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
11162
11588
|
);
|
|
@@ -11188,7 +11614,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11188
11614
|
* @returns A tuple containing [encoded fee data, fee amount]. Fee amount will be 0n if no fee.
|
|
11189
11615
|
*/
|
|
11190
11616
|
static createIntentFeeData(fee, inputAmount) {
|
|
11191
|
-
|
|
11617
|
+
invariant12__default.default(inputAmount > 0n, "Input amount must be greater than 0");
|
|
11192
11618
|
if (!fee) {
|
|
11193
11619
|
return ["0x", 0n];
|
|
11194
11620
|
}
|
|
@@ -11196,7 +11622,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11196
11622
|
if (isPartnerFeeAmount(fee)) {
|
|
11197
11623
|
feeAmount = fee.amount;
|
|
11198
11624
|
} else if (isPartnerFeePercentage(fee)) {
|
|
11199
|
-
|
|
11625
|
+
invariant12__default.default(
|
|
11200
11626
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
11201
11627
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
11202
11628
|
);
|
|
@@ -11323,23 +11749,23 @@ var SolverApiService = class {
|
|
|
11323
11749
|
* }
|
|
11324
11750
|
*/
|
|
11325
11751
|
static async getQuote(payload, config) {
|
|
11326
|
-
|
|
11327
|
-
|
|
11328
|
-
|
|
11329
|
-
|
|
11330
|
-
|
|
11331
|
-
|
|
11752
|
+
invariant12__default.default(payload.token_src.length > 0, "Empty token_src");
|
|
11753
|
+
invariant12__default.default(payload.token_src_blockchain_id.length > 0, "Empty token_src_blockchain_id");
|
|
11754
|
+
invariant12__default.default(payload.token_dst.length > 0, "Empty token_dst");
|
|
11755
|
+
invariant12__default.default(payload.token_dst_blockchain_id.length > 0, "Empty token_dst_blockchain_id");
|
|
11756
|
+
invariant12__default.default(payload.amount > 0n, "amount must be greater than 0");
|
|
11757
|
+
invariant12__default.default(
|
|
11332
11758
|
isValidOriginalAssetAddress(payload.token_src_blockchain_id, payload.token_src),
|
|
11333
11759
|
"unsupported token_src for src chain"
|
|
11334
11760
|
);
|
|
11335
|
-
|
|
11761
|
+
invariant12__default.default(
|
|
11336
11762
|
isValidOriginalAssetAddress(payload.token_dst_blockchain_id, payload.token_dst),
|
|
11337
11763
|
"unsupported token_dst for dst chain"
|
|
11338
11764
|
);
|
|
11339
11765
|
const tokenSrc = getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset;
|
|
11340
11766
|
const tokenDst = getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset;
|
|
11341
|
-
|
|
11342
|
-
|
|
11767
|
+
invariant12__default.default(tokenSrc, "hub asset not found for token_src");
|
|
11768
|
+
invariant12__default.default(tokenDst, "hub asset not found for token_dst");
|
|
11343
11769
|
try {
|
|
11344
11770
|
const response = await fetch(`${config.solverApiEndpoint}/quote`, {
|
|
11345
11771
|
method: "POST",
|
|
@@ -11434,7 +11860,7 @@ var SolverApiService = class {
|
|
|
11434
11860
|
}
|
|
11435
11861
|
}
|
|
11436
11862
|
static async getStatus(request, config) {
|
|
11437
|
-
|
|
11863
|
+
invariant12__default.default(request.intent_tx_hash.length > 0, "Empty intent_tx_hash");
|
|
11438
11864
|
try {
|
|
11439
11865
|
const response = await fetch(`${config.solverApiEndpoint}/status`, {
|
|
11440
11866
|
method: "POST",
|
|
@@ -12066,19 +12492,19 @@ var SolverService = class {
|
|
|
12066
12492
|
fee = this.config.partnerFee,
|
|
12067
12493
|
raw
|
|
12068
12494
|
}) {
|
|
12069
|
-
|
|
12495
|
+
invariant12__default.default(
|
|
12070
12496
|
isValidOriginalAssetAddress(params.srcChain, params.inputToken),
|
|
12071
12497
|
`Unsupported spoke chain token (params.srcChain): ${params.srcChain}, params.inputToken): ${params.inputToken}`
|
|
12072
12498
|
);
|
|
12073
|
-
|
|
12499
|
+
invariant12__default.default(
|
|
12074
12500
|
isValidOriginalAssetAddress(params.dstChain, params.outputToken),
|
|
12075
12501
|
`Unsupported spoke chain token (params.dstChain): ${params.dstChain}, params.outputToken): ${params.outputToken}`
|
|
12076
12502
|
);
|
|
12077
|
-
|
|
12078
|
-
|
|
12503
|
+
invariant12__default.default(isValidSpokeChainId(params.srcChain), `Invalid spoke chain (params.srcChain): ${params.srcChain}`);
|
|
12504
|
+
invariant12__default.default(isValidSpokeChainId(params.dstChain), `Invalid spoke chain (params.dstChain): ${params.dstChain}`);
|
|
12079
12505
|
try {
|
|
12080
12506
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12081
|
-
|
|
12507
|
+
invariant12__default.default(
|
|
12082
12508
|
params.srcAddress.toLowerCase() === walletAddress.toLowerCase(),
|
|
12083
12509
|
"srcAddress must be the same as wallet address"
|
|
12084
12510
|
);
|
|
@@ -12152,8 +12578,8 @@ var SolverService = class {
|
|
|
12152
12578
|
*/
|
|
12153
12579
|
async cancelIntent(intent, spokeProvider, raw) {
|
|
12154
12580
|
try {
|
|
12155
|
-
|
|
12156
|
-
|
|
12581
|
+
invariant12__default.default(isValidIntentRelayChainId(intent.srcChain), `Invalid intent.srcChain: ${intent.srcChain}`);
|
|
12582
|
+
invariant12__default.default(isValidIntentRelayChainId(intent.dstChain), `Invalid intent.dstChain: ${intent.dstChain}`);
|
|
12157
12583
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12158
12584
|
const creatorHubWalletAddress = await deriveUserWalletAddress(spokeProvider, this.hubProvider, walletAddress);
|
|
12159
12585
|
const calls = [];
|
|
@@ -12200,7 +12626,7 @@ var SolverService = class {
|
|
|
12200
12626
|
* @returns {bigint} The deadline for the swap as a sum of hub chain block timestamp and deadline offset
|
|
12201
12627
|
*/
|
|
12202
12628
|
async getSwapDeadline(deadline = DEFAULT_DEADLINE_OFFSET) {
|
|
12203
|
-
|
|
12629
|
+
invariant12__default.default(deadline > 0n, "Deadline must be greater than 0");
|
|
12204
12630
|
const block = await this.hubProvider.publicClient.getBlock({
|
|
12205
12631
|
includeTransactions: false,
|
|
12206
12632
|
blockTag: "latest"
|
|
@@ -12678,7 +13104,7 @@ var IcxMigrationService = class {
|
|
|
12678
13104
|
migrateData(params) {
|
|
12679
13105
|
const calls = [];
|
|
12680
13106
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, params.address);
|
|
12681
|
-
|
|
13107
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${params.address}`);
|
|
12682
13108
|
calls.push(
|
|
12683
13109
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.icxMigration, params.amount)
|
|
12684
13110
|
);
|
|
@@ -12694,7 +13120,7 @@ var IcxMigrationService = class {
|
|
|
12694
13120
|
revertMigration(params) {
|
|
12695
13121
|
const calls = [];
|
|
12696
13122
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, params.wICX);
|
|
12697
|
-
|
|
13123
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${params.wICX}`);
|
|
12698
13124
|
calls.push(
|
|
12699
13125
|
Erc20Service.encodeApprove(
|
|
12700
13126
|
this.hubProvider.chainConfig.addresses.sodaToken,
|
|
@@ -12790,9 +13216,9 @@ var MigrationService = class {
|
|
|
12790
13216
|
async isAllowanceValid(params, action, spokeProvider) {
|
|
12791
13217
|
try {
|
|
12792
13218
|
if (action === "migrate") {
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
13219
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13220
|
+
invariant12__default.default(viem.isAddress(params.to) || isIconAddress(params.to), "To address is required");
|
|
13221
|
+
invariant12__default.default(
|
|
12796
13222
|
isIcxMigrateParams(params) || isBalnMigrateParams(params) || isUnifiedBnUSDMigrateParams(params),
|
|
12797
13223
|
"Invalid params"
|
|
12798
13224
|
);
|
|
@@ -12818,9 +13244,9 @@ var MigrationService = class {
|
|
|
12818
13244
|
};
|
|
12819
13245
|
}
|
|
12820
13246
|
if (action === "revert") {
|
|
12821
|
-
|
|
12822
|
-
|
|
12823
|
-
|
|
13247
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13248
|
+
invariant12__default.default(params.to.length > 0, "To address is required");
|
|
13249
|
+
invariant12__default.default(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12824
13250
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12825
13251
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12826
13252
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -12876,9 +13302,9 @@ var MigrationService = class {
|
|
|
12876
13302
|
async approve(params, action, spokeProvider, raw) {
|
|
12877
13303
|
try {
|
|
12878
13304
|
if (action === "migrate") {
|
|
12879
|
-
|
|
12880
|
-
|
|
12881
|
-
|
|
13305
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13306
|
+
invariant12__default.default(params.to.length > 0, "To address is required");
|
|
13307
|
+
invariant12__default.default(isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12882
13308
|
if (isUnifiedBnUSDMigrateParams(params) && spokeProvider.chainConfig.chain.type === "EVM") {
|
|
12883
13309
|
const evmSpokeProvider = spokeProvider;
|
|
12884
13310
|
const result = await Erc20Service.approve(
|
|
@@ -12899,9 +13325,9 @@ var MigrationService = class {
|
|
|
12899
13325
|
};
|
|
12900
13326
|
}
|
|
12901
13327
|
if (action === "revert") {
|
|
12902
|
-
|
|
12903
|
-
|
|
12904
|
-
|
|
13328
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13329
|
+
invariant12__default.default(params.to.length > 0, "To address is required");
|
|
13330
|
+
invariant12__default.default(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12905
13331
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12906
13332
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12907
13333
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -13313,13 +13739,13 @@ var MigrationService = class {
|
|
|
13313
13739
|
async createMigratebnUSDIntent(params, spokeProvider, unchecked = false, raw) {
|
|
13314
13740
|
try {
|
|
13315
13741
|
if (!unchecked) {
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
13321
|
-
|
|
13322
|
-
|
|
13742
|
+
invariant12__default.default(isValidSpokeChainId(params.srcChainId), "Invalid spoke source chain ID");
|
|
13743
|
+
invariant12__default.default(isValidSpokeChainId(params.dstChainId), "Invalid spoke destination chain ID");
|
|
13744
|
+
invariant12__default.default(params.srcbnUSD.length > 0, "Legacy bnUSD token address is required");
|
|
13745
|
+
invariant12__default.default(params.dstbnUSD.length > 0, "New bnUSD token address is required");
|
|
13746
|
+
invariant12__default.default(params.amount > 0, "Amount must be greater than 0");
|
|
13747
|
+
invariant12__default.default(params.to.length > 0, "Recipient address is required");
|
|
13748
|
+
invariant12__default.default(
|
|
13323
13749
|
!(isLegacybnUSDToken(params.srcbnUSD) && isLegacybnUSDToken(params.dstbnUSD)),
|
|
13324
13750
|
"srcbnUSD and dstbnUSD cannot both be legacy bnUSD tokens"
|
|
13325
13751
|
);
|
|
@@ -13327,11 +13753,11 @@ var MigrationService = class {
|
|
|
13327
13753
|
let migrationData;
|
|
13328
13754
|
if (isLegacybnUSDToken(params.srcbnUSD)) {
|
|
13329
13755
|
if (!unchecked) {
|
|
13330
|
-
|
|
13756
|
+
invariant12__default.default(
|
|
13331
13757
|
isLegacybnUSDChainId(params.srcChainId),
|
|
13332
13758
|
"srcChainId must be a legacy bnUSD chain (icon, sui, stellar) if srcbnUSD is a legacy bnUSD token"
|
|
13333
13759
|
);
|
|
13334
|
-
|
|
13760
|
+
invariant12__default.default(
|
|
13335
13761
|
isNewbnUSDChainId(params.dstChainId),
|
|
13336
13762
|
"dstChainId must be a new bnUSD chain (all spoke chains besides Icon) if dstbnUSD is a legacy bnUSD token"
|
|
13337
13763
|
);
|
|
@@ -13346,15 +13772,15 @@ var MigrationService = class {
|
|
|
13346
13772
|
});
|
|
13347
13773
|
} else if (isLegacybnUSDToken(params.dstbnUSD)) {
|
|
13348
13774
|
if (!unchecked) {
|
|
13349
|
-
|
|
13775
|
+
invariant12__default.default(
|
|
13350
13776
|
isLegacybnUSDChainId(params.dstChainId),
|
|
13351
13777
|
"dstChainId must be a legacy bnUSD chain (sui, stellar, icon) if dstbnUSD is a legacy bnUSD token"
|
|
13352
13778
|
);
|
|
13353
|
-
|
|
13779
|
+
invariant12__default.default(
|
|
13354
13780
|
isNewbnUSDToken(params.srcbnUSD),
|
|
13355
13781
|
"srcbnUSD must be a new bnUSD token if dstbnUSD is a legacy bnUSD token"
|
|
13356
13782
|
);
|
|
13357
|
-
|
|
13783
|
+
invariant12__default.default(
|
|
13358
13784
|
isNewbnUSDChainId(params.srcChainId),
|
|
13359
13785
|
"srcChainId must be a new bnUSD chain (all spoke chains besides Icon) if srcbnUSD is a new bnUSD token"
|
|
13360
13786
|
);
|
|
@@ -13427,13 +13853,13 @@ var MigrationService = class {
|
|
|
13427
13853
|
*/
|
|
13428
13854
|
async createMigrateIcxToSodaIntent(params, spokeProvider, raw) {
|
|
13429
13855
|
try {
|
|
13430
|
-
|
|
13431
|
-
|
|
13432
|
-
|
|
13856
|
+
invariant12__default.default(params.amount > 0, "Amount must be greater than 0");
|
|
13857
|
+
invariant12__default.default(viem.isAddress(params.to), "Recipient address is required");
|
|
13858
|
+
invariant12__default.default(
|
|
13433
13859
|
params.address.toLowerCase() === spokeProvider.chainConfig.addresses.wICX.toLowerCase() || params.address.toLowerCase() === spokeProvider.chainConfig.nativeToken.toLowerCase(),
|
|
13434
13860
|
"Token must be wICX or native ICX token"
|
|
13435
13861
|
);
|
|
13436
|
-
|
|
13862
|
+
invariant12__default.default(spokeProvider instanceof IconSpokeProvider, "Spoke provider must be an instance of IconSpokeProvider");
|
|
13437
13863
|
const availableAmount = await this.icxMigration.getAvailableAmount();
|
|
13438
13864
|
if (availableAmount < params.amount) {
|
|
13439
13865
|
throw new Error(
|
|
@@ -13545,7 +13971,7 @@ var BnUSDMigrationService = class {
|
|
|
13545
13971
|
migrateData(params) {
|
|
13546
13972
|
const calls = [];
|
|
13547
13973
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.legacybnUSD);
|
|
13548
|
-
|
|
13974
|
+
invariant12__default.default(assetConfig, `hub asset not found for legacy bnUSD token: ${params.legacybnUSD}`);
|
|
13549
13975
|
const bnUSDVault = getMoneyMarketConfig(types.SONIC_MAINNET_CHAIN_ID).bnUSDVault;
|
|
13550
13976
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, assetConfig.vault, params.amount));
|
|
13551
13977
|
calls.push(EvmVaultTokenService.encodeDeposit(assetConfig.vault, assetConfig.asset, params.amount));
|
|
@@ -13557,7 +13983,7 @@ var BnUSDMigrationService = class {
|
|
|
13557
13983
|
return encodeContractCalls(calls);
|
|
13558
13984
|
}
|
|
13559
13985
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.newbnUSD);
|
|
13560
|
-
|
|
13986
|
+
invariant12__default.default(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13561
13987
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.asset, translatedAmount));
|
|
13562
13988
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
13563
13989
|
dstAssetConfig.decimal,
|
|
@@ -13590,14 +14016,14 @@ var BnUSDMigrationService = class {
|
|
|
13590
14016
|
let decimals = 18;
|
|
13591
14017
|
if (params.newbnUSD.toLowerCase() !== bnUSDVault.toLowerCase()) {
|
|
13592
14018
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.newbnUSD);
|
|
13593
|
-
|
|
14019
|
+
invariant12__default.default(assetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13594
14020
|
decimals = assetConfig.decimal;
|
|
13595
14021
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, bnUSDVault, params.amount));
|
|
13596
14022
|
calls.push(EvmVaultTokenService.encodeDeposit(bnUSDVault, assetConfig.asset, params.amount));
|
|
13597
14023
|
}
|
|
13598
14024
|
const translatedAmount = EvmVaultTokenService.translateIncomingDecimals(decimals, params.amount);
|
|
13599
14025
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.legacybnUSD);
|
|
13600
|
-
|
|
14026
|
+
invariant12__default.default(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.legacybnUSD}`);
|
|
13601
14027
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.vault, translatedAmount));
|
|
13602
14028
|
calls.push(EvmVaultTokenService.encodeWithdraw(dstAssetConfig.vault, dstAssetConfig.asset, translatedAmount));
|
|
13603
14029
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
@@ -13680,7 +14106,7 @@ var BalnSwapService = class {
|
|
|
13680
14106
|
*/
|
|
13681
14107
|
async swapData(balnToken, params) {
|
|
13682
14108
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, balnToken);
|
|
13683
|
-
|
|
14109
|
+
invariant12__default.default(assetConfig, `hub asset not found for baln token: ${balnToken}`);
|
|
13684
14110
|
const calls = [];
|
|
13685
14111
|
calls.push(
|
|
13686
14112
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.balnSwap, params.amount)
|
|
@@ -13859,6 +14285,659 @@ var BalnSwapService = class {
|
|
|
13859
14285
|
}
|
|
13860
14286
|
};
|
|
13861
14287
|
|
|
14288
|
+
// src/services/backend/BackendApiService.ts
|
|
14289
|
+
var BackendApiService = class {
|
|
14290
|
+
baseURL;
|
|
14291
|
+
defaultHeaders;
|
|
14292
|
+
timeout;
|
|
14293
|
+
constructor(config) {
|
|
14294
|
+
this.baseURL = config?.baseURL ?? DEFAULT_BACKEND_API_ENDPOINT;
|
|
14295
|
+
this.timeout = config?.timeout ?? DEFAULT_BACKEND_API_TIMEOUT;
|
|
14296
|
+
this.defaultHeaders = config?.headers ?? DEFAULT_BACKEND_API_HEADERS;
|
|
14297
|
+
}
|
|
14298
|
+
/**
|
|
14299
|
+
* Make HTTP request using fetch API
|
|
14300
|
+
* @param endpoint - API endpoint path
|
|
14301
|
+
* @param config - Request configuration
|
|
14302
|
+
* @returns Promise<T>
|
|
14303
|
+
*/
|
|
14304
|
+
async makeRequest(endpoint, config) {
|
|
14305
|
+
const url = `${this.baseURL}${endpoint}`;
|
|
14306
|
+
const headers = { ...this.defaultHeaders, ...config.headers };
|
|
14307
|
+
const controller = new AbortController();
|
|
14308
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
14309
|
+
try {
|
|
14310
|
+
const response = await fetch(url, {
|
|
14311
|
+
method: config.method,
|
|
14312
|
+
headers,
|
|
14313
|
+
body: config.body,
|
|
14314
|
+
signal: controller.signal
|
|
14315
|
+
});
|
|
14316
|
+
clearTimeout(timeoutId);
|
|
14317
|
+
if (!response.ok) {
|
|
14318
|
+
const errorText = await response.text();
|
|
14319
|
+
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
14320
|
+
}
|
|
14321
|
+
const data = await response.json();
|
|
14322
|
+
return data;
|
|
14323
|
+
} catch (error) {
|
|
14324
|
+
clearTimeout(timeoutId);
|
|
14325
|
+
if (error instanceof Error) {
|
|
14326
|
+
if (error.name === "AbortError") {
|
|
14327
|
+
throw new Error(`Request timeout after ${this.timeout}ms`);
|
|
14328
|
+
}
|
|
14329
|
+
console.error("[BackendApiService] Request error:", error.message);
|
|
14330
|
+
throw error;
|
|
14331
|
+
}
|
|
14332
|
+
console.error("[BackendApiService] Unknown error:", error);
|
|
14333
|
+
throw new Error("Unknown error occurred");
|
|
14334
|
+
}
|
|
14335
|
+
}
|
|
14336
|
+
// Intent endpoints
|
|
14337
|
+
/**
|
|
14338
|
+
* Get intent details by transaction hash
|
|
14339
|
+
* @param txHash - Transaction hash
|
|
14340
|
+
* @returns Promise<IntentResponse>
|
|
14341
|
+
*/
|
|
14342
|
+
async getIntentByTxHash(txHash) {
|
|
14343
|
+
return this.makeRequest(`/intent/tx/${txHash}`, { method: "GET" });
|
|
14344
|
+
}
|
|
14345
|
+
/**
|
|
14346
|
+
* Get intent details by intent hash
|
|
14347
|
+
* @param intentHash - Intent hash
|
|
14348
|
+
* @returns Promise<IntentResponse>
|
|
14349
|
+
*/
|
|
14350
|
+
async getIntentByHash(intentHash) {
|
|
14351
|
+
return this.makeRequest(`/intent/${intentHash}`, { method: "GET" });
|
|
14352
|
+
}
|
|
14353
|
+
// Solver endpoints
|
|
14354
|
+
/**
|
|
14355
|
+
* Get the solver orderbook
|
|
14356
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14357
|
+
* @returns Promise<OrderbookResponse>
|
|
14358
|
+
*/
|
|
14359
|
+
async getOrderbook(params) {
|
|
14360
|
+
const queryParams = new URLSearchParams();
|
|
14361
|
+
queryParams.append("offset", params.offset);
|
|
14362
|
+
queryParams.append("limit", params.limit);
|
|
14363
|
+
const queryString = queryParams.toString();
|
|
14364
|
+
const endpoint = `/solver/orderbook?${queryString}`;
|
|
14365
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14366
|
+
}
|
|
14367
|
+
// Money Market endpoints
|
|
14368
|
+
/**
|
|
14369
|
+
* Get money market position for a specific user
|
|
14370
|
+
* @param userAddress - User's wallet address
|
|
14371
|
+
* @returns Promise<MoneyMarketPosition>
|
|
14372
|
+
*/
|
|
14373
|
+
async getMoneyMarketPosition(userAddress) {
|
|
14374
|
+
return this.makeRequest(`/moneymarket/position/${userAddress}`, { method: "GET" });
|
|
14375
|
+
}
|
|
14376
|
+
/**
|
|
14377
|
+
* Get all money market assets
|
|
14378
|
+
* @returns Promise<MoneyMarketAsset[]>
|
|
14379
|
+
*/
|
|
14380
|
+
async getAllMoneyMarketAssets() {
|
|
14381
|
+
return this.makeRequest("/moneymarket/asset/all", { method: "GET" });
|
|
14382
|
+
}
|
|
14383
|
+
/**
|
|
14384
|
+
* Get specific money market asset details
|
|
14385
|
+
* @param reserveAddress - Reserve contract address
|
|
14386
|
+
* @returns Promise<MoneyMarketAsset>
|
|
14387
|
+
*/
|
|
14388
|
+
async getMoneyMarketAsset(reserveAddress) {
|
|
14389
|
+
return this.makeRequest(`/moneymarket/asset/${reserveAddress}`, { method: "GET" });
|
|
14390
|
+
}
|
|
14391
|
+
/**
|
|
14392
|
+
* Get borrowers for a specific money market asset
|
|
14393
|
+
* @param reserveAddress - Reserve contract address
|
|
14394
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14395
|
+
* @returns Promise<MoneyMarketAssetBorrowers>
|
|
14396
|
+
*/
|
|
14397
|
+
async getMoneyMarketAssetBorrowers(reserveAddress, params) {
|
|
14398
|
+
const queryParams = new URLSearchParams();
|
|
14399
|
+
queryParams.append("offset", params.offset);
|
|
14400
|
+
queryParams.append("limit", params.limit);
|
|
14401
|
+
const queryString = queryParams.toString();
|
|
14402
|
+
const endpoint = `/moneymarket/asset/${reserveAddress}/borrowers?${queryString}`;
|
|
14403
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14404
|
+
}
|
|
14405
|
+
/**
|
|
14406
|
+
* Get suppliers for a specific money market asset
|
|
14407
|
+
* @param reserveAddress - Reserve contract address
|
|
14408
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14409
|
+
* @returns Promise<MoneyMarketAssetSuppliers>
|
|
14410
|
+
*/
|
|
14411
|
+
async getMoneyMarketAssetSuppliers(reserveAddress, params) {
|
|
14412
|
+
const queryParams = new URLSearchParams();
|
|
14413
|
+
queryParams.append("offset", params.offset);
|
|
14414
|
+
queryParams.append("limit", params.limit);
|
|
14415
|
+
const queryString = queryParams.toString();
|
|
14416
|
+
const endpoint = `/moneymarket/asset/${reserveAddress}/suppliers?${queryString}`;
|
|
14417
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14418
|
+
}
|
|
14419
|
+
/**
|
|
14420
|
+
* Get all money market borrowers
|
|
14421
|
+
* @param params - Object containing offset and limit parameters for pagination
|
|
14422
|
+
* @returns Promise<MoneyMarketBorrowers>
|
|
14423
|
+
*/
|
|
14424
|
+
async getAllMoneyMarketBorrowers(params) {
|
|
14425
|
+
const queryParams = new URLSearchParams();
|
|
14426
|
+
queryParams.append("offset", params.offset);
|
|
14427
|
+
queryParams.append("limit", params.limit);
|
|
14428
|
+
const queryString = queryParams.toString();
|
|
14429
|
+
const endpoint = `/moneymarket/borrowers?${queryString}`;
|
|
14430
|
+
return this.makeRequest(endpoint, { method: "GET" });
|
|
14431
|
+
}
|
|
14432
|
+
/**
|
|
14433
|
+
* Set custom headers for API requests
|
|
14434
|
+
* @param headers - Object containing header key-value pairs
|
|
14435
|
+
*/
|
|
14436
|
+
setHeaders(headers) {
|
|
14437
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
14438
|
+
this.defaultHeaders[key] = value;
|
|
14439
|
+
});
|
|
14440
|
+
}
|
|
14441
|
+
/**
|
|
14442
|
+
* Get the current base URL
|
|
14443
|
+
* @returns string
|
|
14444
|
+
*/
|
|
14445
|
+
getBaseURL() {
|
|
14446
|
+
return this.baseURL;
|
|
14447
|
+
}
|
|
14448
|
+
};
|
|
14449
|
+
var BridgeService = class {
|
|
14450
|
+
hubProvider;
|
|
14451
|
+
relayerApiEndpoint;
|
|
14452
|
+
config;
|
|
14453
|
+
constructor(hubProvider, relayerApiEndpoint, config = void 0) {
|
|
14454
|
+
this.config = config ? config : { partnerFee: void 0 };
|
|
14455
|
+
this.hubProvider = hubProvider;
|
|
14456
|
+
this.relayerApiEndpoint = relayerApiEndpoint;
|
|
14457
|
+
}
|
|
14458
|
+
/**
|
|
14459
|
+
* Get the fee for a given input amount
|
|
14460
|
+
* @param {bigint} inputAmount - The amount of input tokens
|
|
14461
|
+
* @returns {Promise<bigint>} The fee amount (denominated in input tokens)
|
|
14462
|
+
*
|
|
14463
|
+
* @example
|
|
14464
|
+
* const fee: bigint = await sodax.bridge.getFee(1000000000000000n);
|
|
14465
|
+
* console.log('Fee:', fee);
|
|
14466
|
+
*/
|
|
14467
|
+
getFee(inputAmount) {
|
|
14468
|
+
if (!this.config.partnerFee) {
|
|
14469
|
+
return 0n;
|
|
14470
|
+
}
|
|
14471
|
+
return calculateFeeAmount(inputAmount, this.config.partnerFee);
|
|
14472
|
+
}
|
|
14473
|
+
/**
|
|
14474
|
+
* Check if allowance is valid for the bridge transaction
|
|
14475
|
+
* @param params - The bridge parameters
|
|
14476
|
+
* @param spokeProvider - The spoke provider
|
|
14477
|
+
* @returns {Promise<Result<boolean, BridgeError<'ALLOWANCE_CHECK_FAILED'>>>}
|
|
14478
|
+
*/
|
|
14479
|
+
async isAllowanceValid({
|
|
14480
|
+
params,
|
|
14481
|
+
spokeProvider
|
|
14482
|
+
}) {
|
|
14483
|
+
try {
|
|
14484
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
14485
|
+
invariant12__default.default(params.srcAsset.length > 0, "Source asset is required");
|
|
14486
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14487
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
14488
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for EVM chain");
|
|
14489
|
+
const allowanceResult = await Erc20Service.isAllowanceValid(
|
|
14490
|
+
params.srcAsset,
|
|
14491
|
+
params.amount,
|
|
14492
|
+
walletAddress,
|
|
14493
|
+
spokeProvider.chainConfig.addresses.assetManager,
|
|
14494
|
+
spokeProvider
|
|
14495
|
+
);
|
|
14496
|
+
if (!allowanceResult.ok) {
|
|
14497
|
+
return {
|
|
14498
|
+
ok: false,
|
|
14499
|
+
error: {
|
|
14500
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14501
|
+
error: allowanceResult.error
|
|
14502
|
+
}
|
|
14503
|
+
};
|
|
14504
|
+
}
|
|
14505
|
+
return {
|
|
14506
|
+
ok: true,
|
|
14507
|
+
value: allowanceResult.value
|
|
14508
|
+
};
|
|
14509
|
+
}
|
|
14510
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
14511
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for Sonic chain");
|
|
14512
|
+
const userRouter = await SonicSpokeService.getUserRouter(walletAddress, spokeProvider);
|
|
14513
|
+
const allowanceResult = await Erc20Service.isAllowanceValid(
|
|
14514
|
+
params.srcAsset,
|
|
14515
|
+
params.amount,
|
|
14516
|
+
walletAddress,
|
|
14517
|
+
userRouter,
|
|
14518
|
+
spokeProvider
|
|
14519
|
+
);
|
|
14520
|
+
if (!allowanceResult.ok) {
|
|
14521
|
+
return {
|
|
14522
|
+
ok: false,
|
|
14523
|
+
error: {
|
|
14524
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14525
|
+
error: allowanceResult.error
|
|
14526
|
+
}
|
|
14527
|
+
};
|
|
14528
|
+
}
|
|
14529
|
+
return {
|
|
14530
|
+
ok: true,
|
|
14531
|
+
value: allowanceResult.value
|
|
14532
|
+
};
|
|
14533
|
+
}
|
|
14534
|
+
return {
|
|
14535
|
+
ok: true,
|
|
14536
|
+
value: true
|
|
14537
|
+
};
|
|
14538
|
+
} catch (error) {
|
|
14539
|
+
return {
|
|
14540
|
+
ok: false,
|
|
14541
|
+
error: {
|
|
14542
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14543
|
+
error
|
|
14544
|
+
}
|
|
14545
|
+
};
|
|
14546
|
+
}
|
|
14547
|
+
}
|
|
14548
|
+
/**
|
|
14549
|
+
* Approve token spending for the bridge transaction
|
|
14550
|
+
* @param params - The bridge parameters
|
|
14551
|
+
* @param spokeProvider - The spoke provider
|
|
14552
|
+
* @param raw - Whether to return raw transaction data
|
|
14553
|
+
* @returns Promise<Result<TxReturnType<S, R>, BridgeError<'APPROVAL_FAILED'>>>
|
|
14554
|
+
*/
|
|
14555
|
+
async approve({
|
|
14556
|
+
params,
|
|
14557
|
+
spokeProvider,
|
|
14558
|
+
raw
|
|
14559
|
+
}) {
|
|
14560
|
+
try {
|
|
14561
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
14562
|
+
invariant12__default.default(params.srcAsset.length > 0, "Source asset is required");
|
|
14563
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14564
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
14565
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for EVM chain");
|
|
14566
|
+
const result = await Erc20Service.approve(
|
|
14567
|
+
params.srcAsset,
|
|
14568
|
+
params.amount,
|
|
14569
|
+
spokeProvider.chainConfig.addresses.assetManager,
|
|
14570
|
+
spokeProvider,
|
|
14571
|
+
raw
|
|
14572
|
+
);
|
|
14573
|
+
return {
|
|
14574
|
+
ok: true,
|
|
14575
|
+
value: result
|
|
14576
|
+
};
|
|
14577
|
+
}
|
|
14578
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
14579
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for Sonic chain");
|
|
14580
|
+
const userRouter = await SonicSpokeService.getUserRouter(
|
|
14581
|
+
walletAddress,
|
|
14582
|
+
spokeProvider
|
|
14583
|
+
);
|
|
14584
|
+
const result = await Erc20Service.approve(params.srcAsset, params.amount, userRouter, spokeProvider, raw);
|
|
14585
|
+
return {
|
|
14586
|
+
ok: true,
|
|
14587
|
+
value: result
|
|
14588
|
+
};
|
|
14589
|
+
}
|
|
14590
|
+
return {
|
|
14591
|
+
ok: false,
|
|
14592
|
+
error: {
|
|
14593
|
+
code: "APPROVAL_FAILED",
|
|
14594
|
+
error: new Error("Approval only supported for EVM spoke chains")
|
|
14595
|
+
}
|
|
14596
|
+
};
|
|
14597
|
+
} catch (error) {
|
|
14598
|
+
console.error(error);
|
|
14599
|
+
return {
|
|
14600
|
+
ok: false,
|
|
14601
|
+
error: {
|
|
14602
|
+
code: "APPROVAL_FAILED",
|
|
14603
|
+
error
|
|
14604
|
+
}
|
|
14605
|
+
};
|
|
14606
|
+
}
|
|
14607
|
+
}
|
|
14608
|
+
/**
|
|
14609
|
+
* Execute a bridge transaction to transfer tokens from one chain to another
|
|
14610
|
+
* @param params - The bridge parameters including source/destination chains, assets, and recipient
|
|
14611
|
+
* @param spokeProvider - The spoke provider for the source chain
|
|
14612
|
+
* @param timeout - The timeout in milliseconds for the transaction. Default is 60 seconds.
|
|
14613
|
+
* @returns {Promise<Result<[SpokeTxHash, HubTxHash], BridgeError<BridgeErrorCode>>>} - Returns the transaction hashes for both spoke and hub chains or error
|
|
14614
|
+
*
|
|
14615
|
+
* @example
|
|
14616
|
+
* const result = await sodax.bridge.bridge(
|
|
14617
|
+
* {
|
|
14618
|
+
* srcChainId: '0x2105.base',
|
|
14619
|
+
* srcAsset: '0x...', // Address of the source token
|
|
14620
|
+
* amount: 1000n, // Amount to bridge (in token decimals)
|
|
14621
|
+
* dstChainId: '0x89.polygon',
|
|
14622
|
+
* dstAsset: '0x...', // Address of the destination token
|
|
14623
|
+
* recipient: '0x...', // Recipient address on destination chain
|
|
14624
|
+
* partnerFee: { address: '0x...', percentage: 0.1 } // Optional partner fee. Partner fees and denominated in vault token decimals (18)
|
|
14625
|
+
* },
|
|
14626
|
+
* spokeProvider,
|
|
14627
|
+
* 30000 // Optional timeout in milliseconds (default: 60000, i.e. 60 seconds)
|
|
14628
|
+
* );
|
|
14629
|
+
*
|
|
14630
|
+
* if (!result.ok) {
|
|
14631
|
+
* // Handle error
|
|
14632
|
+
* }
|
|
14633
|
+
*
|
|
14634
|
+
* const [
|
|
14635
|
+
* spokeTxHash, // transaction hash on the source chain
|
|
14636
|
+
* hubTxHash, // transaction hash on the hub chain
|
|
14637
|
+
* ] = result.value;
|
|
14638
|
+
* console.log('Bridge transaction hashes:', { spokeTxHash, hubTxHash });
|
|
14639
|
+
*/
|
|
14640
|
+
async bridge({
|
|
14641
|
+
params,
|
|
14642
|
+
spokeProvider,
|
|
14643
|
+
fee = this.config.partnerFee,
|
|
14644
|
+
timeout = DEFAULT_RELAY_TX_TIMEOUT
|
|
14645
|
+
}) {
|
|
14646
|
+
try {
|
|
14647
|
+
const txResult = await this.createBridgeIntent({ params, spokeProvider, fee, raw: false });
|
|
14648
|
+
if (!txResult.ok) {
|
|
14649
|
+
return txResult;
|
|
14650
|
+
}
|
|
14651
|
+
const packetResult = await relayTxAndWaitPacket(
|
|
14652
|
+
txResult.value,
|
|
14653
|
+
spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
|
|
14654
|
+
spokeProvider,
|
|
14655
|
+
this.relayerApiEndpoint,
|
|
14656
|
+
timeout
|
|
14657
|
+
);
|
|
14658
|
+
if (!packetResult.ok) {
|
|
14659
|
+
return {
|
|
14660
|
+
ok: false,
|
|
14661
|
+
error: {
|
|
14662
|
+
code: packetResult.error.code,
|
|
14663
|
+
error: packetResult.error
|
|
14664
|
+
}
|
|
14665
|
+
};
|
|
14666
|
+
}
|
|
14667
|
+
return { ok: true, value: [txResult.value, packetResult.value.dst_tx_hash] };
|
|
14668
|
+
} catch (error) {
|
|
14669
|
+
return {
|
|
14670
|
+
ok: false,
|
|
14671
|
+
error: {
|
|
14672
|
+
code: "BRIDGE_FAILED",
|
|
14673
|
+
error
|
|
14674
|
+
}
|
|
14675
|
+
};
|
|
14676
|
+
}
|
|
14677
|
+
}
|
|
14678
|
+
/**
|
|
14679
|
+
* Create bridge intent only (without relaying to hub)
|
|
14680
|
+
* NOTE: This method only executes the transaction on the spoke chain and creates the bridge intent
|
|
14681
|
+
* In order to successfully bridge tokens, you need to:
|
|
14682
|
+
* 1. Check if the allowance is sufficient using isAllowanceValid
|
|
14683
|
+
* 2. Approve the appropriate contract to spend the tokens using approve
|
|
14684
|
+
* 3. Create the bridge intent using this method
|
|
14685
|
+
* 4. Relay the transaction to the hub and await completion using the bridge method
|
|
14686
|
+
*
|
|
14687
|
+
* @param params - The bridge parameters including source/destination chains, assets, and recipient
|
|
14688
|
+
* @param spokeProvider - The spoke provider for the source chain
|
|
14689
|
+
* @param raw - Whether to return the raw transaction data
|
|
14690
|
+
* @returns {Promise<Result<TxReturnType<S, R>, BridgeError<BridgeErrorCode>>>} - Returns the transaction result
|
|
14691
|
+
*
|
|
14692
|
+
* @example
|
|
14693
|
+
* const bridgeService = new BridgeService(hubProvider, relayerApiEndpoint);
|
|
14694
|
+
* const result = await sodax.bridge.createBridgeIntent(
|
|
14695
|
+
* {
|
|
14696
|
+
* srcChainId: 'ethereum',
|
|
14697
|
+
* srcAsset: "0x123...", // source token address
|
|
14698
|
+
* amount: 1000000000000000000n, // 1 token in wei
|
|
14699
|
+
* dstChainId: 'polygon',
|
|
14700
|
+
* dstAsset: "0x456...", // destination token address
|
|
14701
|
+
* recipient: "0x789..." // recipient address
|
|
14702
|
+
* },
|
|
14703
|
+
* spokeProvider,
|
|
14704
|
+
* raw // Optional: true = return the raw transaction data, false = execute and return the transaction hash (default: false)
|
|
14705
|
+
* );
|
|
14706
|
+
*
|
|
14707
|
+
* if (result.ok) {
|
|
14708
|
+
* const txHash = result.value;
|
|
14709
|
+
* console.log('Bridge intent transaction hash:', txHash);
|
|
14710
|
+
* } else {
|
|
14711
|
+
* console.error('Bridge intent creation failed:', result.error);
|
|
14712
|
+
* }
|
|
14713
|
+
*/
|
|
14714
|
+
async createBridgeIntent({
|
|
14715
|
+
params,
|
|
14716
|
+
spokeProvider,
|
|
14717
|
+
fee = this.config.partnerFee,
|
|
14718
|
+
raw
|
|
14719
|
+
}) {
|
|
14720
|
+
try {
|
|
14721
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
14722
|
+
const srcAssetInfo = getHubAssetInfo(params.srcChainId, params.srcAsset);
|
|
14723
|
+
const dstAssetInfo = getHubAssetInfo(params.dstChainId, params.dstAsset);
|
|
14724
|
+
invariant12__default.default(srcAssetInfo, `Unsupported spoke chain (${params.srcChainId}) token: ${params.srcAsset}`);
|
|
14725
|
+
invariant12__default.default(dstAssetInfo, `Unsupported spoke chain (${params.dstChainId}) token: ${params.dstAsset}`);
|
|
14726
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14727
|
+
const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
|
|
14728
|
+
walletAddress,
|
|
14729
|
+
spokeProvider,
|
|
14730
|
+
this.hubProvider
|
|
14731
|
+
);
|
|
14732
|
+
const data = this.buildBridgeData(params, srcAssetInfo, dstAssetInfo, fee);
|
|
14733
|
+
const txResult = await SpokeService.deposit(
|
|
14734
|
+
{
|
|
14735
|
+
from: walletAddress,
|
|
14736
|
+
to: hubWallet,
|
|
14737
|
+
token: params.srcAsset,
|
|
14738
|
+
amount: params.amount,
|
|
14739
|
+
data
|
|
14740
|
+
},
|
|
14741
|
+
spokeProvider,
|
|
14742
|
+
this.hubProvider,
|
|
14743
|
+
raw
|
|
14744
|
+
);
|
|
14745
|
+
return {
|
|
14746
|
+
ok: true,
|
|
14747
|
+
value: txResult,
|
|
14748
|
+
data: {
|
|
14749
|
+
address: hubWallet,
|
|
14750
|
+
payload: data
|
|
14751
|
+
}
|
|
14752
|
+
};
|
|
14753
|
+
} catch (error) {
|
|
14754
|
+
console.error(error);
|
|
14755
|
+
return {
|
|
14756
|
+
ok: false,
|
|
14757
|
+
error: {
|
|
14758
|
+
code: "CREATE_BRIDGE_INTENT_FAILED",
|
|
14759
|
+
error
|
|
14760
|
+
}
|
|
14761
|
+
};
|
|
14762
|
+
}
|
|
14763
|
+
}
|
|
14764
|
+
/**
|
|
14765
|
+
* Build the bridge transaction data for executing the bridge operation on the hub
|
|
14766
|
+
* @param params - The create bridge intent parameters
|
|
14767
|
+
* @param srcAssetInfo - The source asset information
|
|
14768
|
+
* @param dstAssetInfo - The destination asset information
|
|
14769
|
+
* @returns Hex - The encoded contract calls for the bridge operation
|
|
14770
|
+
*/
|
|
14771
|
+
buildBridgeData(params, srcAssetInfo, dstAssetInfo, partnerFee) {
|
|
14772
|
+
const calls = [];
|
|
14773
|
+
let translatedAmount = params.amount;
|
|
14774
|
+
let srcVault = params.srcAsset;
|
|
14775
|
+
if (!isValidVault(srcAssetInfo.asset)) {
|
|
14776
|
+
calls.push(Erc20Service.encodeApprove(srcAssetInfo.asset, srcAssetInfo.vault, params.amount));
|
|
14777
|
+
calls.push(EvmVaultTokenService.encodeDeposit(srcAssetInfo.vault, srcAssetInfo.asset, params.amount));
|
|
14778
|
+
translatedAmount = EvmVaultTokenService.translateIncomingDecimals(srcAssetInfo.decimal, params.amount);
|
|
14779
|
+
srcVault = srcAssetInfo.vault;
|
|
14780
|
+
}
|
|
14781
|
+
const feeAmount = calculateFeeAmount(translatedAmount, partnerFee);
|
|
14782
|
+
if (partnerFee && feeAmount > 0n) {
|
|
14783
|
+
calls.push(Erc20Service.encodeTransfer(srcVault, partnerFee.address, feeAmount));
|
|
14784
|
+
}
|
|
14785
|
+
const withdrawAmount = translatedAmount - feeAmount;
|
|
14786
|
+
let translatedWithdrawAmount = withdrawAmount;
|
|
14787
|
+
if (!isValidVault(dstAssetInfo.asset)) {
|
|
14788
|
+
calls.push(EvmVaultTokenService.encodeWithdraw(dstAssetInfo.vault, dstAssetInfo.asset, withdrawAmount));
|
|
14789
|
+
translatedWithdrawAmount = EvmVaultTokenService.translateOutgoingDecimals(dstAssetInfo.decimal, withdrawAmount);
|
|
14790
|
+
}
|
|
14791
|
+
const encodedRecipientAddress = encodeAddress(params.dstChainId, params.recipient);
|
|
14792
|
+
if (params.dstChainId === this.hubProvider.chainConfig.chain.id) {
|
|
14793
|
+
calls.push(Erc20Service.encodeTransfer(dstAssetInfo.asset, encodedRecipientAddress, translatedWithdrawAmount));
|
|
14794
|
+
} else {
|
|
14795
|
+
invariant12__default.default(dstAssetInfo, `Unsupported hub chain (${params.dstChainId}) token: ${params.dstAsset}`);
|
|
14796
|
+
calls.push(
|
|
14797
|
+
EvmAssetManagerService.encodeTransfer(
|
|
14798
|
+
dstAssetInfo.asset,
|
|
14799
|
+
encodedRecipientAddress,
|
|
14800
|
+
translatedWithdrawAmount,
|
|
14801
|
+
this.hubProvider.chainConfig.addresses.assetManager
|
|
14802
|
+
)
|
|
14803
|
+
);
|
|
14804
|
+
}
|
|
14805
|
+
return encodeContractCalls(calls);
|
|
14806
|
+
}
|
|
14807
|
+
/**
|
|
14808
|
+
* Retrieves the deposited token balance held by the asset manager on a spoke chain.
|
|
14809
|
+
* This balance represents the available liquidity for bridging operations and is used to verify
|
|
14810
|
+
* that the target chain has sufficient funds to complete a bridge transaction.
|
|
14811
|
+
*
|
|
14812
|
+
* @param spokeProvider - The spoke provider instance
|
|
14813
|
+
* @param token - The token address to query the balance for
|
|
14814
|
+
* @returns {Promise<bigint>} - The token balance as a bigint value
|
|
14815
|
+
*/
|
|
14816
|
+
async getBridgeableAmount(from, to) {
|
|
14817
|
+
try {
|
|
14818
|
+
const fromHubAsset = getHubAssetInfo(from.xChainId, from.address);
|
|
14819
|
+
const toHubAsset = getHubAssetInfo(to.xChainId, to.address);
|
|
14820
|
+
invariant12__default.default(fromHubAsset, `Hub asset not found for token ${from.address} on chain ${from.xChainId}`);
|
|
14821
|
+
invariant12__default.default(toHubAsset, `Hub asset not found for token ${to.address} on chain ${to.xChainId}`);
|
|
14822
|
+
const [depositTokenInfo, reserves] = await Promise.all([
|
|
14823
|
+
EvmVaultTokenService.getTokenInfo(fromHubAsset.vault, fromHubAsset.asset, this.hubProvider.publicClient),
|
|
14824
|
+
EvmVaultTokenService.getVaultReserves(toHubAsset.vault, this.hubProvider.publicClient)
|
|
14825
|
+
]);
|
|
14826
|
+
if (!isValidVault(fromHubAsset.asset) && isValidVault(toHubAsset.asset)) {
|
|
14827
|
+
const fromTokenIndex2 = reserves.tokens.findIndex((t) => t.toLowerCase() === fromHubAsset.asset.toLowerCase());
|
|
14828
|
+
invariant12__default.default(
|
|
14829
|
+
fromTokenIndex2 !== -1,
|
|
14830
|
+
`Token ${fromHubAsset.asset} not found in the vault reserves for chain ${from.xChainId}`
|
|
14831
|
+
);
|
|
14832
|
+
const fromTokenDepositedAmount2 = reserves.balances[fromTokenIndex2] ?? 0n;
|
|
14833
|
+
const availableDeposit2 = depositTokenInfo.maxDeposit - fromTokenDepositedAmount2;
|
|
14834
|
+
return {
|
|
14835
|
+
ok: true,
|
|
14836
|
+
value: availableDeposit2
|
|
14837
|
+
};
|
|
14838
|
+
}
|
|
14839
|
+
if (isValidVault(fromHubAsset.asset)) {
|
|
14840
|
+
const tokenIndex2 = reserves.tokens.findIndex((t) => t.toLowerCase() === toHubAsset.asset.toLowerCase());
|
|
14841
|
+
invariant12__default.default(
|
|
14842
|
+
tokenIndex2 !== -1,
|
|
14843
|
+
`Token ${toHubAsset.asset} not found in the vault reserves for chain ${to.xChainId}`
|
|
14844
|
+
);
|
|
14845
|
+
const assetManagerBalance2 = reserves.balances[tokenIndex2] ?? 0n;
|
|
14846
|
+
return {
|
|
14847
|
+
ok: true,
|
|
14848
|
+
value: assetManagerBalance2
|
|
14849
|
+
};
|
|
14850
|
+
}
|
|
14851
|
+
const fromTokenIndex = reserves.tokens.findIndex((t) => t.toLowerCase() === fromHubAsset.asset.toLowerCase());
|
|
14852
|
+
invariant12__default.default(
|
|
14853
|
+
fromTokenIndex !== -1,
|
|
14854
|
+
`Token ${fromHubAsset.asset} not found in the vault reserves for chain ${from.xChainId}`
|
|
14855
|
+
);
|
|
14856
|
+
const fromTokenDepositedAmount = reserves.balances[fromTokenIndex] ?? 0n;
|
|
14857
|
+
const availableDeposit = depositTokenInfo.maxDeposit - fromTokenDepositedAmount;
|
|
14858
|
+
const tokenIndex = reserves.tokens.findIndex((t) => t.toLowerCase() === toHubAsset.asset.toLowerCase());
|
|
14859
|
+
invariant12__default.default(
|
|
14860
|
+
tokenIndex !== -1,
|
|
14861
|
+
`Token ${toHubAsset.asset} not found in the vault reserves for chain ${to.xChainId}`
|
|
14862
|
+
);
|
|
14863
|
+
const assetManagerBalance = reserves.balances[tokenIndex] ?? 0n;
|
|
14864
|
+
return {
|
|
14865
|
+
ok: true,
|
|
14866
|
+
value: availableDeposit < assetManagerBalance ? availableDeposit : assetManagerBalance
|
|
14867
|
+
};
|
|
14868
|
+
} catch (error) {
|
|
14869
|
+
console.error(error);
|
|
14870
|
+
return {
|
|
14871
|
+
ok: false,
|
|
14872
|
+
error
|
|
14873
|
+
};
|
|
14874
|
+
}
|
|
14875
|
+
}
|
|
14876
|
+
/**
|
|
14877
|
+
* Check if two assets on different chains are bridgeable
|
|
14878
|
+
* Two assets are bridgeable if they share the same vault on the hub chain
|
|
14879
|
+
* @param from - The source X token
|
|
14880
|
+
* @param to - The destination X token
|
|
14881
|
+
* @param unchecked - Whether to skip the chain ID validation
|
|
14882
|
+
* @returns boolean - true if assets are bridgeable, false otherwise
|
|
14883
|
+
*/
|
|
14884
|
+
isBridgeable({
|
|
14885
|
+
from,
|
|
14886
|
+
to,
|
|
14887
|
+
unchecked = false
|
|
14888
|
+
}) {
|
|
14889
|
+
try {
|
|
14890
|
+
if (!unchecked) {
|
|
14891
|
+
invariant12__default.default(isValidSpokeChainId(from.xChainId), `Invalid spoke chain (${from.xChainId})`);
|
|
14892
|
+
invariant12__default.default(isValidSpokeChainId(to.xChainId), `Invalid spoke chain (${to.xChainId})`);
|
|
14893
|
+
}
|
|
14894
|
+
const srcAssetInfo = getHubAssetInfo(from.xChainId, from.address);
|
|
14895
|
+
const dstAssetInfo = getHubAssetInfo(to.xChainId, to.address);
|
|
14896
|
+
invariant12__default.default(srcAssetInfo, `Hub asset not found for token ${from.address} on chain ${from.xChainId}`);
|
|
14897
|
+
invariant12__default.default(dstAssetInfo, `Hub asset not found for token ${to.address} on chain ${to.xChainId}`);
|
|
14898
|
+
return srcAssetInfo.vault.toLowerCase() === dstAssetInfo.vault.toLowerCase();
|
|
14899
|
+
} catch (error) {
|
|
14900
|
+
console.error(error);
|
|
14901
|
+
return false;
|
|
14902
|
+
}
|
|
14903
|
+
}
|
|
14904
|
+
/**
|
|
14905
|
+
* Get all bridgeable tokens from a source token to a destination chain
|
|
14906
|
+
* @param from - The source chain ID
|
|
14907
|
+
* @param to - The destination chain ID
|
|
14908
|
+
* @param token - The source token address
|
|
14909
|
+
* @returns XToken[] - Array of bridgeable tokens on the destination chain
|
|
14910
|
+
*/
|
|
14911
|
+
getBridgeableTokens(from, to, token) {
|
|
14912
|
+
try {
|
|
14913
|
+
const srcAssetInfo = getHubAssetInfo(from, token);
|
|
14914
|
+
invariant12__default.default(srcAssetInfo, `Hub asset not found for token ${token} on chain ${from}`);
|
|
14915
|
+
return {
|
|
14916
|
+
ok: true,
|
|
14917
|
+
value: this.filterTokensWithSameVault(spokeChainConfig[to].supportedTokens, to, srcAssetInfo)
|
|
14918
|
+
};
|
|
14919
|
+
} catch (error) {
|
|
14920
|
+
return {
|
|
14921
|
+
ok: false,
|
|
14922
|
+
error
|
|
14923
|
+
};
|
|
14924
|
+
}
|
|
14925
|
+
}
|
|
14926
|
+
filterTokensWithSameVault(tokens, to, srcAssetInfo) {
|
|
14927
|
+
const bridgeableTokens = [];
|
|
14928
|
+
for (const token of Object.values(tokens)) {
|
|
14929
|
+
const dstAssetInfo = getHubAssetInfo(to, token.address);
|
|
14930
|
+
if (dstAssetInfo && srcAssetInfo && dstAssetInfo.vault.toLowerCase() === srcAssetInfo.vault.toLowerCase()) {
|
|
14931
|
+
bridgeableTokens.push({
|
|
14932
|
+
...token,
|
|
14933
|
+
xChainId: to
|
|
14934
|
+
});
|
|
14935
|
+
}
|
|
14936
|
+
}
|
|
14937
|
+
return bridgeableTokens;
|
|
14938
|
+
}
|
|
14939
|
+
};
|
|
14940
|
+
|
|
13862
14941
|
// src/entities/Sodax.ts
|
|
13863
14942
|
var Sodax = class {
|
|
13864
14943
|
config;
|
|
@@ -13868,6 +14947,10 @@ var Sodax = class {
|
|
|
13868
14947
|
// Money Market service enabling cross-chain lending and borrowing
|
|
13869
14948
|
migration;
|
|
13870
14949
|
// ICX migration service enabling ICX migration to SODA
|
|
14950
|
+
backendApiService;
|
|
14951
|
+
// backend API service enabling backend API endpoints
|
|
14952
|
+
bridge;
|
|
14953
|
+
// Bridge service enabling cross-chain transfers
|
|
13871
14954
|
hubProvider;
|
|
13872
14955
|
// hub provider for the hub chain (e.g. Sonic mainnet)
|
|
13873
14956
|
relayerApiEndpoint;
|
|
@@ -13879,6 +14962,8 @@ var Sodax = class {
|
|
|
13879
14962
|
this.solver = config && config.solver ? new SolverService(config.solver, this.hubProvider, this.relayerApiEndpoint) : new SolverService(void 0, this.hubProvider, this.relayerApiEndpoint);
|
|
13880
14963
|
this.moneyMarket = config && config.moneyMarket ? new MoneyMarketService(config.moneyMarket, this.hubProvider, this.relayerApiEndpoint) : new MoneyMarketService(void 0, this.hubProvider, this.relayerApiEndpoint);
|
|
13881
14964
|
this.migration = config && config.migration ? new MigrationService(this.hubProvider, config.migration) : new MigrationService(this.hubProvider);
|
|
14965
|
+
this.bridge = config && config.bridge ? new BridgeService(this.hubProvider, this.relayerApiEndpoint, config.bridge) : new BridgeService(this.hubProvider, this.relayerApiEndpoint);
|
|
14966
|
+
this.backendApiService = new BackendApiService(config?.backendApiConfig);
|
|
13882
14967
|
}
|
|
13883
14968
|
};
|
|
13884
14969
|
|
|
@@ -13945,16 +15030,16 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
13945
15030
|
if (!fee) {
|
|
13946
15031
|
return 0n;
|
|
13947
15032
|
}
|
|
13948
|
-
|
|
15033
|
+
invariant12__default.default(inputAmount > 0n, "Input amount must be greater than 0");
|
|
13949
15034
|
let feeAmount = 0n;
|
|
13950
15035
|
if (isPartnerFeeAmount(fee)) {
|
|
13951
|
-
|
|
15036
|
+
invariant12__default.default(
|
|
13952
15037
|
fee.amount >= 0 && fee.amount <= inputAmount,
|
|
13953
15038
|
`Fee amount must be greater than 0 and less than or equal to the input amount: ${fee.amount}`
|
|
13954
15039
|
);
|
|
13955
15040
|
feeAmount = fee.amount;
|
|
13956
15041
|
} else if (isPartnerFeePercentage(fee)) {
|
|
13957
|
-
|
|
15042
|
+
invariant12__default.default(
|
|
13958
15043
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
13959
15044
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
13960
15045
|
);
|
|
@@ -13963,8 +15048,8 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
13963
15048
|
return feeAmount;
|
|
13964
15049
|
}
|
|
13965
15050
|
function adjustAmountByFee(amount, fee, quoteType) {
|
|
13966
|
-
|
|
13967
|
-
|
|
15051
|
+
invariant12__default.default(amount > 0n, "Amount must be greater than 0");
|
|
15052
|
+
invariant12__default.default(quoteType === "exact_input" || quoteType === "exact_output", "Invalid quote type");
|
|
13968
15053
|
if (quoteType === "exact_input") {
|
|
13969
15054
|
return amount - calculateFeeAmount(amount, fee);
|
|
13970
15055
|
}
|
|
@@ -15539,9 +16624,9 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15539
16624
|
*/
|
|
15540
16625
|
async isAllowanceValid(params, spokeProvider) {
|
|
15541
16626
|
try {
|
|
15542
|
-
|
|
15543
|
-
|
|
15544
|
-
|
|
16627
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16628
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16629
|
+
invariant12__default.default(
|
|
15545
16630
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15546
16631
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15547
16632
|
);
|
|
@@ -15636,19 +16721,19 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15636
16721
|
*/
|
|
15637
16722
|
async approve(params, spokeProvider, raw) {
|
|
15638
16723
|
try {
|
|
15639
|
-
|
|
15640
|
-
|
|
15641
|
-
|
|
16724
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16725
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16726
|
+
invariant12__default.default(
|
|
15642
16727
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15643
16728
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15644
16729
|
);
|
|
15645
16730
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
15646
16731
|
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
15647
|
-
|
|
16732
|
+
invariant12__default.default(
|
|
15648
16733
|
params.action === "supply" || params.action === "repay",
|
|
15649
16734
|
"Invalid action (only supply and repay are supported on evm)"
|
|
15650
16735
|
);
|
|
15651
|
-
|
|
16736
|
+
invariant12__default.default(viem.isAddress(params.token), "Invalid token address");
|
|
15652
16737
|
const result = await Erc20Service.approve(
|
|
15653
16738
|
params.token,
|
|
15654
16739
|
params.amount,
|
|
@@ -15662,11 +16747,11 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15662
16747
|
};
|
|
15663
16748
|
}
|
|
15664
16749
|
if (spokeProvider instanceof SonicSpokeProvider && spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id) {
|
|
15665
|
-
|
|
16750
|
+
invariant12__default.default(
|
|
15666
16751
|
params.action === "withdraw" || params.action === "borrow" || params.action === "supply" || params.action === "repay",
|
|
15667
16752
|
"Invalid action (only withdraw, borrow, supply and repay are supported on sonic)"
|
|
15668
16753
|
);
|
|
15669
|
-
|
|
16754
|
+
invariant12__default.default(viem.isAddress(params.token), "Invalid token address");
|
|
15670
16755
|
if (params.action === "withdraw") {
|
|
15671
16756
|
const withdrawInfo = await SonicSpokeService.getWithdrawInfo(
|
|
15672
16757
|
params.token,
|
|
@@ -15838,10 +16923,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15838
16923
|
*/
|
|
15839
16924
|
async createSupplyIntent(params, spokeProvider, raw) {
|
|
15840
16925
|
try {
|
|
15841
|
-
|
|
15842
|
-
|
|
15843
|
-
|
|
15844
|
-
|
|
16926
|
+
invariant12__default.default(params.action === "supply", "Invalid action");
|
|
16927
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16928
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16929
|
+
invariant12__default.default(
|
|
15845
16930
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15846
16931
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15847
16932
|
);
|
|
@@ -16003,10 +17088,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16003
17088
|
* }
|
|
16004
17089
|
*/
|
|
16005
17090
|
async createBorrowIntent(params, spokeProvider, raw) {
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
17091
|
+
invariant12__default.default(params.action === "borrow", "Invalid action");
|
|
17092
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
17093
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
17094
|
+
invariant12__default.default(
|
|
16010
17095
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16011
17096
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16012
17097
|
);
|
|
@@ -16139,10 +17224,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16139
17224
|
* }
|
|
16140
17225
|
*/
|
|
16141
17226
|
async createWithdrawIntent(params, spokeProvider, raw) {
|
|
16142
|
-
|
|
16143
|
-
|
|
16144
|
-
|
|
16145
|
-
|
|
17227
|
+
invariant12__default.default(params.action === "withdraw", "Invalid action");
|
|
17228
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
17229
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
17230
|
+
invariant12__default.default(
|
|
16146
17231
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16147
17232
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16148
17233
|
);
|
|
@@ -16290,10 +17375,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16290
17375
|
* }
|
|
16291
17376
|
*/
|
|
16292
17377
|
async createRepayIntent(params, spokeProvider, raw) {
|
|
16293
|
-
|
|
16294
|
-
|
|
16295
|
-
|
|
16296
|
-
|
|
17378
|
+
invariant12__default.default(params.action === "repay", "Invalid action");
|
|
17379
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
17380
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
17381
|
+
invariant12__default.default(
|
|
16297
17382
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16298
17383
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16299
17384
|
);
|
|
@@ -16346,7 +17431,7 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16346
17431
|
buildSupplyData(token, to, amount, spokeChainId) {
|
|
16347
17432
|
const calls = [];
|
|
16348
17433
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16349
|
-
|
|
17434
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16350
17435
|
let assetAddress = assetConfig.asset;
|
|
16351
17436
|
const vaultAddress = assetConfig.vault;
|
|
16352
17437
|
const lendingPool = this.config.lendingPool;
|
|
@@ -16377,13 +17462,13 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16377
17462
|
* @returns {Hex} The transaction data.
|
|
16378
17463
|
*/
|
|
16379
17464
|
buildBorrowData(from, to, token, amount, spokeChainId) {
|
|
16380
|
-
|
|
16381
|
-
|
|
17465
|
+
invariant12__default.default(isValidSpokeChainId(spokeChainId), `Invalid spokeChainId: ${spokeChainId}`);
|
|
17466
|
+
invariant12__default.default(
|
|
16382
17467
|
isValidOriginalAssetAddress(spokeChainId, token),
|
|
16383
17468
|
`Unsupported spoke chain (${spokeChainId}) token: ${token}`
|
|
16384
17469
|
);
|
|
16385
17470
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16386
|
-
|
|
17471
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16387
17472
|
let assetAddress = assetConfig.asset;
|
|
16388
17473
|
const vaultAddress = assetConfig.vault;
|
|
16389
17474
|
const bnUSDVault = this.config.bnUSDVault;
|
|
@@ -16707,11 +17792,16 @@ var SolverIntentErrorCode = /* @__PURE__ */ ((SolverIntentErrorCode2) => {
|
|
|
16707
17792
|
return SolverIntentErrorCode2;
|
|
16708
17793
|
})(SolverIntentErrorCode || {});
|
|
16709
17794
|
|
|
17795
|
+
exports.BackendApiService = BackendApiService;
|
|
16710
17796
|
exports.BalnSwapService = BalnSwapService;
|
|
16711
17797
|
exports.BigIntToHex = BigIntToHex;
|
|
16712
17798
|
exports.BigNumberZeroDecimal = BigNumberZeroDecimal;
|
|
16713
17799
|
exports.BnUSDMigrationService = BnUSDMigrationService;
|
|
17800
|
+
exports.BridgeService = BridgeService;
|
|
16714
17801
|
exports.ChainIdToIntentRelayChainId = ChainIdToIntentRelayChainId;
|
|
17802
|
+
exports.DEFAULT_BACKEND_API_ENDPOINT = DEFAULT_BACKEND_API_ENDPOINT;
|
|
17803
|
+
exports.DEFAULT_BACKEND_API_HEADERS = DEFAULT_BACKEND_API_HEADERS;
|
|
17804
|
+
exports.DEFAULT_BACKEND_API_TIMEOUT = DEFAULT_BACKEND_API_TIMEOUT;
|
|
16715
17805
|
exports.DEFAULT_DEADLINE_OFFSET = DEFAULT_DEADLINE_OFFSET;
|
|
16716
17806
|
exports.DEFAULT_MAX_RETRY = DEFAULT_MAX_RETRY;
|
|
16717
17807
|
exports.DEFAULT_RELAYER_API_ENDPOINT = DEFAULT_RELAYER_API_ENDPOINT;
|
|
@@ -16752,6 +17842,9 @@ exports.RAY_DECIMALS = RAY_DECIMALS;
|
|
|
16752
17842
|
exports.SECONDS_PER_YEAR = SECONDS_PER_YEAR;
|
|
16753
17843
|
exports.STELLAR_DEFAULT_TX_TIMEOUT_SECONDS = STELLAR_DEFAULT_TX_TIMEOUT_SECONDS;
|
|
16754
17844
|
exports.STELLAR_PRIORITY_FEE = STELLAR_PRIORITY_FEE;
|
|
17845
|
+
exports.SodaTokens = SodaTokens;
|
|
17846
|
+
exports.SodaTokensAsHubAssets = SodaTokensAsHubAssets;
|
|
17847
|
+
exports.SodaVaultTokensSet = SodaVaultTokensSet;
|
|
16755
17848
|
exports.Sodax = Sodax;
|
|
16756
17849
|
exports.SolanaSpokeProvider = SolanaSpokeProvider;
|
|
16757
17850
|
exports.SolverIntentErrorCode = SolverIntentErrorCode;
|
|
@@ -16810,12 +17903,15 @@ exports.getCompoundedBalance = getCompoundedBalance;
|
|
|
16810
17903
|
exports.getEvmViemChain = getEvmViemChain;
|
|
16811
17904
|
exports.getHubAssetInfo = getHubAssetInfo;
|
|
16812
17905
|
exports.getHubChainConfig = getHubChainConfig;
|
|
17906
|
+
exports.getHubVaultTokenByAddress = getHubVaultTokenByAddress;
|
|
16813
17907
|
exports.getIconAddressBytes = getIconAddressBytes;
|
|
16814
17908
|
exports.getIntentRelayChainId = getIntentRelayChainId;
|
|
16815
17909
|
exports.getLinearBalance = getLinearBalance;
|
|
16816
17910
|
exports.getMarketReferenceCurrencyAndUsdBalance = getMarketReferenceCurrencyAndUsdBalance;
|
|
16817
17911
|
exports.getMoneyMarketConfig = getMoneyMarketConfig;
|
|
16818
17912
|
exports.getOriginalAssetAddress = getOriginalAssetAddress;
|
|
17913
|
+
exports.getOriginalAssetInfoFromVault = getOriginalAssetInfoFromVault;
|
|
17914
|
+
exports.getOriginalTokenFromOriginalAssetAddress = getOriginalTokenFromOriginalAssetAddress;
|
|
16819
17915
|
exports.getPacket = getPacket;
|
|
16820
17916
|
exports.getRandomBytes = getRandomBytes;
|
|
16821
17917
|
exports.getReserveNormalizedIncome = getReserveNormalizedIncome;
|
|
@@ -16829,6 +17925,7 @@ exports.getTransactionPackets = getTransactionPackets;
|
|
|
16829
17925
|
exports.hexToBigInt = hexToBigInt;
|
|
16830
17926
|
exports.hubAssetToOriginalAssetMap = hubAssetToOriginalAssetMap;
|
|
16831
17927
|
exports.hubAssets = hubAssets;
|
|
17928
|
+
exports.hubVaultTokensMap = hubVaultTokensMap;
|
|
16832
17929
|
exports.hubVaults = hubVaults;
|
|
16833
17930
|
exports.hubVaultsAddressSet = hubVaultsAddressSet;
|
|
16834
17931
|
exports.intentRelayChainIdToSpokeChainIdMap = intentRelayChainIdToSpokeChainIdMap;
|
|
@@ -16875,6 +17972,7 @@ exports.isPartnerFeeAmount = isPartnerFeeAmount;
|
|
|
16875
17972
|
exports.isPartnerFeePercentage = isPartnerFeePercentage;
|
|
16876
17973
|
exports.isResponseAddressType = isResponseAddressType;
|
|
16877
17974
|
exports.isResponseSigningType = isResponseSigningType;
|
|
17975
|
+
exports.isSodaVaultToken = isSodaVaultToken;
|
|
16878
17976
|
exports.isSolanaSpokeProvider = isSolanaSpokeProvider;
|
|
16879
17977
|
exports.isSolverSupportedToken = isSolverSupportedToken;
|
|
16880
17978
|
exports.isSonicSpokeProvider = isSonicSpokeProvider;
|
|
@@ -16886,6 +17984,7 @@ exports.isValidHubAsset = isValidHubAsset;
|
|
|
16886
17984
|
exports.isValidIntentRelayChainId = isValidIntentRelayChainId;
|
|
16887
17985
|
exports.isValidOriginalAssetAddress = isValidOriginalAssetAddress;
|
|
16888
17986
|
exports.isValidSpokeChainId = isValidSpokeChainId;
|
|
17987
|
+
exports.isValidVault = isValidVault;
|
|
16889
17988
|
exports.isWaitUntilIntentExecutedFailed = isWaitUntilIntentExecutedFailed;
|
|
16890
17989
|
exports.moneyMarketReserveAssets = moneyMarketReserveAssets;
|
|
16891
17990
|
exports.moneyMarketReserveHubAssetsSet = moneyMarketReserveHubAssetsSet;
|
|
@@ -16914,6 +18013,7 @@ exports.spokeChainIdsSet = spokeChainIdsSet;
|
|
|
16914
18013
|
exports.submitTransaction = submitTransaction;
|
|
16915
18014
|
exports.supportedHubAssets = supportedHubAssets;
|
|
16916
18015
|
exports.supportedHubChains = supportedHubChains;
|
|
18016
|
+
exports.supportedSodaAssets = supportedSodaAssets;
|
|
16917
18017
|
exports.supportedSpokeChains = supportedSpokeChains;
|
|
16918
18018
|
exports.supportedTokensPerChain = supportedTokensPerChain;
|
|
16919
18019
|
exports.uiPoolDataAbi = uiPoolDataAbi;
|