@sodax/sdk 0.0.1-rc.31 → 0.0.1-rc.32
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 +1021 -251
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +561 -27
- package/dist/index.d.ts +561 -27
- package/dist/index.mjs +1012 -253
- 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;
|
|
@@ -6215,6 +6215,155 @@ function getEvmViemChain(id) {
|
|
|
6215
6215
|
throw new Error(`Unsupported EVM chain ID: ${id}`);
|
|
6216
6216
|
}
|
|
6217
6217
|
}
|
|
6218
|
+
var HubVaultSymbols = [
|
|
6219
|
+
"sodaAVAX",
|
|
6220
|
+
"sodaBNB",
|
|
6221
|
+
"sodaETH",
|
|
6222
|
+
"sodaBTC",
|
|
6223
|
+
"sodaSUI",
|
|
6224
|
+
"sodaINJ",
|
|
6225
|
+
"sodaXLM",
|
|
6226
|
+
"sodaSOL",
|
|
6227
|
+
"sodaSODA",
|
|
6228
|
+
"sodaUSDT",
|
|
6229
|
+
"sodaUSDC",
|
|
6230
|
+
"bnUSD",
|
|
6231
|
+
"sodaPOL",
|
|
6232
|
+
"sodaNIBI",
|
|
6233
|
+
"sodaS",
|
|
6234
|
+
"IbnUSD"
|
|
6235
|
+
];
|
|
6236
|
+
var SodaTokens = {
|
|
6237
|
+
sodaBNB: {
|
|
6238
|
+
symbol: "sodaBNB",
|
|
6239
|
+
name: "Soda BNB",
|
|
6240
|
+
decimals: 18,
|
|
6241
|
+
address: "0x40Cd41b35DB9e5109ae7E54b44De8625dB320E6b",
|
|
6242
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6243
|
+
},
|
|
6244
|
+
sodaAVAX: {
|
|
6245
|
+
symbol: "sodaAVAX",
|
|
6246
|
+
name: "Soda AVAX",
|
|
6247
|
+
decimals: 18,
|
|
6248
|
+
address: "0x14238D267557E9d799016ad635B53CD15935d290",
|
|
6249
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6250
|
+
},
|
|
6251
|
+
sodaETH: {
|
|
6252
|
+
symbol: "sodaETH",
|
|
6253
|
+
name: "Soda ETH",
|
|
6254
|
+
decimals: 18,
|
|
6255
|
+
address: "0x4effB5813271699683C25c734F4daBc45B363709",
|
|
6256
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6257
|
+
},
|
|
6258
|
+
sodaBTC: {
|
|
6259
|
+
symbol: "sodaBTC",
|
|
6260
|
+
name: "Soda BTC",
|
|
6261
|
+
decimals: 18,
|
|
6262
|
+
address: "0x7A1A5555842Ad2D0eD274d09b5c4406a95799D5d",
|
|
6263
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6264
|
+
},
|
|
6265
|
+
sodaSOL: {
|
|
6266
|
+
symbol: "sodaSOL",
|
|
6267
|
+
name: "Soda SOL",
|
|
6268
|
+
decimals: 18,
|
|
6269
|
+
address: "0xdEa692287E2cE8Cb08FA52917Be0F16b1DACDC87",
|
|
6270
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6271
|
+
},
|
|
6272
|
+
sodaXLM: {
|
|
6273
|
+
symbol: "sodaXLM",
|
|
6274
|
+
name: "Soda XLM",
|
|
6275
|
+
decimals: 18,
|
|
6276
|
+
address: "0x6BC8C37cba91F76E68C9e6d689A9C21E4d32079B",
|
|
6277
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6278
|
+
},
|
|
6279
|
+
sodaINJ: {
|
|
6280
|
+
symbol: "sodaINJ",
|
|
6281
|
+
name: "Soda INJ",
|
|
6282
|
+
decimals: 18,
|
|
6283
|
+
address: "0x1f22279C89B213944b7Ea41daCB0a868DdCDFd13",
|
|
6284
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6285
|
+
},
|
|
6286
|
+
sodaNIBI: {
|
|
6287
|
+
symbol: "sodaNIBI",
|
|
6288
|
+
name: "Soda NIBI",
|
|
6289
|
+
decimals: 18,
|
|
6290
|
+
address: "0xc6c85287a8b173A509C2F198bB719A8a5a2d0C68",
|
|
6291
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6292
|
+
},
|
|
6293
|
+
sodaSUI: {
|
|
6294
|
+
symbol: "sodaSUI",
|
|
6295
|
+
name: "Soda SUI",
|
|
6296
|
+
decimals: 18,
|
|
6297
|
+
address: "0xdc5B4b00F98347E95b9F94911213DAB4C687e1e3",
|
|
6298
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6299
|
+
},
|
|
6300
|
+
bnUSD: {
|
|
6301
|
+
symbol: "bnUSD",
|
|
6302
|
+
name: "Balanced Dollar",
|
|
6303
|
+
decimals: 18,
|
|
6304
|
+
address: "0xE801CA34E19aBCbFeA12025378D19c4FBE250131",
|
|
6305
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6306
|
+
},
|
|
6307
|
+
sodaUSDC: {
|
|
6308
|
+
symbol: "sodaUSDC",
|
|
6309
|
+
name: "Soda USDC",
|
|
6310
|
+
decimals: 18,
|
|
6311
|
+
address: "0xAbbb91c0617090F0028BDC27597Cd0D038F3A833",
|
|
6312
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6313
|
+
},
|
|
6314
|
+
sodaUSDT: {
|
|
6315
|
+
symbol: "sodaUSDT",
|
|
6316
|
+
name: "Soda USDT",
|
|
6317
|
+
decimals: 18,
|
|
6318
|
+
address: "0xbDf1F453FCB61424011BBDDCB96cFDB30f3Fe876",
|
|
6319
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6320
|
+
},
|
|
6321
|
+
IbnUSD: {
|
|
6322
|
+
symbol: "IbnUSD",
|
|
6323
|
+
name: "ICON bnUSD (Migration)",
|
|
6324
|
+
decimals: 18,
|
|
6325
|
+
address: "0x9D4b663Eb075d2a1C7B8eaEFB9eCCC0510388B51",
|
|
6326
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6327
|
+
},
|
|
6328
|
+
sodaS: {
|
|
6329
|
+
symbol: "sodaS",
|
|
6330
|
+
name: "Soda S",
|
|
6331
|
+
decimals: 18,
|
|
6332
|
+
address: "0x62ecc3Eeb80a162c57624B3fF80313FE69f5203e",
|
|
6333
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6334
|
+
},
|
|
6335
|
+
sodaPOL: {
|
|
6336
|
+
symbol: "sodaPOL",
|
|
6337
|
+
name: "Soda POL",
|
|
6338
|
+
decimals: 18,
|
|
6339
|
+
address: "0x208ED38f4783328aA9eBFeC360D32e7520A9B779",
|
|
6340
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6341
|
+
},
|
|
6342
|
+
sodaSODA: {
|
|
6343
|
+
symbol: "sodaSODA",
|
|
6344
|
+
name: "Soda SODA",
|
|
6345
|
+
decimals: 18,
|
|
6346
|
+
address: "0x21685E341DE7844135329914Be6Bd8D16982d834",
|
|
6347
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6348
|
+
}
|
|
6349
|
+
};
|
|
6350
|
+
var SodaTokensAsHubAssets = Object.values(SodaTokens).reduce(
|
|
6351
|
+
(acc, token) => {
|
|
6352
|
+
acc[token.address] = {
|
|
6353
|
+
asset: token.address,
|
|
6354
|
+
decimal: token.decimals,
|
|
6355
|
+
symbol: token.symbol,
|
|
6356
|
+
name: token.name,
|
|
6357
|
+
vault: token.address
|
|
6358
|
+
};
|
|
6359
|
+
return acc;
|
|
6360
|
+
},
|
|
6361
|
+
{}
|
|
6362
|
+
);
|
|
6363
|
+
var SodaVaultTokensSet = new Set(Object.values(SodaTokens).map((token) => token.address.toLowerCase()));
|
|
6364
|
+
var isSodaVaultToken = (address) => {
|
|
6365
|
+
return SodaVaultTokensSet.has(address.toLowerCase());
|
|
6366
|
+
};
|
|
6218
6367
|
var hubChainConfig = {
|
|
6219
6368
|
[types.SONIC_MAINNET_CHAIN_ID]: {
|
|
6220
6369
|
chain: {
|
|
@@ -6254,44 +6403,45 @@ var spokeChainConfig = {
|
|
|
6254
6403
|
symbol: "S",
|
|
6255
6404
|
name: "Sonic",
|
|
6256
6405
|
decimals: 18,
|
|
6257
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6258
|
-
|
|
6259
|
-
bnUSD: {
|
|
6260
|
-
symbol: "bnUSD",
|
|
6261
|
-
name: "bnUSD",
|
|
6262
|
-
decimals: 18,
|
|
6263
|
-
address: "0xE801CA34E19aBCbFeA12025378D19c4FBE250131"
|
|
6406
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6407
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6264
6408
|
},
|
|
6265
6409
|
WETH: {
|
|
6266
6410
|
symbol: "WETH",
|
|
6267
6411
|
name: "Wrapped Ether",
|
|
6268
6412
|
decimals: 18,
|
|
6269
|
-
address: "0x50c42dEAcD8Fc9773493ED674b675bE577f2634b"
|
|
6413
|
+
address: "0x50c42dEAcD8Fc9773493ED674b675bE577f2634b",
|
|
6414
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6270
6415
|
},
|
|
6271
6416
|
USDC: {
|
|
6272
6417
|
symbol: "USDC",
|
|
6273
6418
|
name: "USD Coin",
|
|
6274
6419
|
decimals: 6,
|
|
6275
|
-
address: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894"
|
|
6420
|
+
address: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894",
|
|
6421
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6276
6422
|
},
|
|
6277
6423
|
USDT: {
|
|
6278
6424
|
symbol: "USDT",
|
|
6279
6425
|
name: "Tether USD",
|
|
6280
6426
|
decimals: 6,
|
|
6281
|
-
address: "0x6047828dc181963ba44974801FF68e538dA5eaF9"
|
|
6427
|
+
address: "0x6047828dc181963ba44974801FF68e538dA5eaF9",
|
|
6428
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6282
6429
|
},
|
|
6283
6430
|
wS: {
|
|
6284
6431
|
symbol: "wS",
|
|
6285
6432
|
name: "Wrapped Sonic",
|
|
6286
6433
|
decimals: 18,
|
|
6287
|
-
address: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38"
|
|
6434
|
+
address: "0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38",
|
|
6435
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6288
6436
|
},
|
|
6289
6437
|
SODA: {
|
|
6290
6438
|
symbol: "SODA",
|
|
6291
6439
|
name: "SODAX",
|
|
6292
6440
|
decimals: 18,
|
|
6293
|
-
address: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963"
|
|
6294
|
-
|
|
6441
|
+
address: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963",
|
|
6442
|
+
xChainId: types.SONIC_MAINNET_CHAIN_ID
|
|
6443
|
+
},
|
|
6444
|
+
...SodaTokens
|
|
6295
6445
|
}
|
|
6296
6446
|
},
|
|
6297
6447
|
[types.SOLANA_MAINNET_CHAIN_ID]: {
|
|
@@ -6310,19 +6460,22 @@ var spokeChainConfig = {
|
|
|
6310
6460
|
symbol: "SOL",
|
|
6311
6461
|
name: "Solana",
|
|
6312
6462
|
decimals: 9,
|
|
6313
|
-
address: "11111111111111111111111111111111"
|
|
6463
|
+
address: "11111111111111111111111111111111",
|
|
6464
|
+
xChainId: types.SOLANA_MAINNET_CHAIN_ID
|
|
6314
6465
|
},
|
|
6315
6466
|
bnUSD: {
|
|
6316
6467
|
symbol: "bnUSD",
|
|
6317
6468
|
name: "bnUSD",
|
|
6318
6469
|
decimals: 9,
|
|
6319
|
-
address: "3rSPCLNEF7Quw4wX8S1NyKivELoyij8eYA2gJwBgt4V5"
|
|
6470
|
+
address: "3rSPCLNEF7Quw4wX8S1NyKivELoyij8eYA2gJwBgt4V5",
|
|
6471
|
+
xChainId: types.SOLANA_MAINNET_CHAIN_ID
|
|
6320
6472
|
},
|
|
6321
6473
|
USDC: {
|
|
6322
6474
|
symbol: "USDC",
|
|
6323
6475
|
name: "USD Coin",
|
|
6324
6476
|
decimals: 6,
|
|
6325
|
-
address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
|
|
6477
|
+
address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
|
|
6478
|
+
xChainId: types.SOLANA_MAINNET_CHAIN_ID
|
|
6326
6479
|
}
|
|
6327
6480
|
},
|
|
6328
6481
|
gasPrice: "500000",
|
|
@@ -6346,25 +6499,29 @@ var spokeChainConfig = {
|
|
|
6346
6499
|
symbol: "AVAX",
|
|
6347
6500
|
name: "Avalanche",
|
|
6348
6501
|
decimals: 18,
|
|
6349
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6502
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6503
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6350
6504
|
},
|
|
6351
6505
|
bnUSD: {
|
|
6352
6506
|
symbol: "bnUSD",
|
|
6353
6507
|
name: "bnUSD",
|
|
6354
6508
|
decimals: 18,
|
|
6355
|
-
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F"
|
|
6509
|
+
address: "0x6958a4CBFe11406E2a1c1d3a71A1971aD8B3b92F",
|
|
6510
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6356
6511
|
},
|
|
6357
6512
|
USDT: {
|
|
6358
6513
|
symbol: "USDT",
|
|
6359
6514
|
name: "Tether USD",
|
|
6360
6515
|
decimals: 6,
|
|
6361
|
-
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"
|
|
6516
|
+
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
|
|
6517
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6362
6518
|
},
|
|
6363
6519
|
USDC: {
|
|
6364
6520
|
symbol: "USDC",
|
|
6365
6521
|
name: "USD Coin",
|
|
6366
6522
|
decimals: 6,
|
|
6367
|
-
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
|
|
6523
|
+
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
|
|
6524
|
+
xChainId: types.AVALANCHE_MAINNET_CHAIN_ID
|
|
6368
6525
|
}
|
|
6369
6526
|
}
|
|
6370
6527
|
},
|
|
@@ -6385,13 +6542,15 @@ var spokeChainConfig = {
|
|
|
6385
6542
|
symbol: "NIBI",
|
|
6386
6543
|
name: "Nibiru",
|
|
6387
6544
|
decimals: 6,
|
|
6388
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6545
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6546
|
+
xChainId: types.NIBIRU_MAINNET_CHAIN_ID
|
|
6389
6547
|
},
|
|
6390
6548
|
bnUSD: {
|
|
6391
6549
|
symbol: "bnUSD",
|
|
6392
6550
|
name: "bnUSD",
|
|
6393
6551
|
decimals: 18,
|
|
6394
|
-
address: "0x043fb7e23350Dd5b77dE5E228B528763DEcb9131"
|
|
6552
|
+
address: "0x043fb7e23350Dd5b77dE5E228B528763DEcb9131",
|
|
6553
|
+
xChainId: types.NIBIRU_MAINNET_CHAIN_ID
|
|
6395
6554
|
}
|
|
6396
6555
|
}
|
|
6397
6556
|
},
|
|
@@ -6412,49 +6571,57 @@ var spokeChainConfig = {
|
|
|
6412
6571
|
symbol: "ETH",
|
|
6413
6572
|
name: "Ethereum",
|
|
6414
6573
|
decimals: 18,
|
|
6415
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6574
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6575
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6416
6576
|
},
|
|
6417
6577
|
bnUSD: {
|
|
6418
6578
|
symbol: "bnUSD",
|
|
6419
6579
|
name: "bnUSD",
|
|
6420
6580
|
decimals: 18,
|
|
6421
|
-
address: "0xA256dd181C3f6E5eC68C6869f5D50a712d47212e"
|
|
6581
|
+
address: "0xA256dd181C3f6E5eC68C6869f5D50a712d47212e",
|
|
6582
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6422
6583
|
},
|
|
6423
6584
|
wstETH: {
|
|
6424
6585
|
symbol: "wstETH",
|
|
6425
6586
|
name: "Wrapped stETH",
|
|
6426
6587
|
decimals: 18,
|
|
6427
|
-
address: "0x5979D7b546E38E414F7E9822514be443A4800529"
|
|
6588
|
+
address: "0x5979D7b546E38E414F7E9822514be443A4800529",
|
|
6589
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6428
6590
|
},
|
|
6429
6591
|
weETH: {
|
|
6430
6592
|
symbol: "weETH",
|
|
6431
6593
|
name: "Wrapped eETH",
|
|
6432
6594
|
decimals: 18,
|
|
6433
|
-
address: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe"
|
|
6595
|
+
address: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe",
|
|
6596
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6434
6597
|
},
|
|
6435
6598
|
tBTC: {
|
|
6436
6599
|
symbol: "tBTC",
|
|
6437
6600
|
name: "Arbitrum tBTC v2",
|
|
6438
6601
|
decimals: 18,
|
|
6439
|
-
address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40"
|
|
6602
|
+
address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40",
|
|
6603
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6440
6604
|
},
|
|
6441
6605
|
WBTC: {
|
|
6442
6606
|
symbol: "WBTC",
|
|
6443
6607
|
name: "Wrapped BTC",
|
|
6444
6608
|
decimals: 8,
|
|
6445
|
-
address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"
|
|
6609
|
+
address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
|
|
6610
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6446
6611
|
},
|
|
6447
6612
|
USDC: {
|
|
6448
6613
|
symbol: "USDC",
|
|
6449
6614
|
name: "USD Coin (USDC)",
|
|
6450
6615
|
decimals: 6,
|
|
6451
|
-
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
|
|
6616
|
+
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
6617
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6452
6618
|
},
|
|
6453
6619
|
USDT: {
|
|
6454
6620
|
symbol: "USDT",
|
|
6455
6621
|
name: "TetherToken",
|
|
6456
6622
|
decimals: 6,
|
|
6457
|
-
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"
|
|
6623
|
+
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
|
|
6624
|
+
xChainId: types.ARBITRUM_MAINNET_CHAIN_ID
|
|
6458
6625
|
}
|
|
6459
6626
|
}
|
|
6460
6627
|
},
|
|
@@ -6475,37 +6642,43 @@ var spokeChainConfig = {
|
|
|
6475
6642
|
symbol: "ETH",
|
|
6476
6643
|
name: "Ethereum",
|
|
6477
6644
|
decimals: 18,
|
|
6478
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6645
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6646
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6479
6647
|
},
|
|
6480
6648
|
bnUSD: {
|
|
6481
6649
|
symbol: "bnUSD",
|
|
6482
6650
|
name: "bnUSD",
|
|
6483
6651
|
decimals: 18,
|
|
6484
|
-
address: "0xAcfab3F31C0a18559D78556BBf297EC29c6cf8aa"
|
|
6652
|
+
address: "0xAcfab3F31C0a18559D78556BBf297EC29c6cf8aa",
|
|
6653
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6485
6654
|
},
|
|
6486
6655
|
weETH: {
|
|
6487
6656
|
symbol: "weETH",
|
|
6488
6657
|
name: "Wrapped eETH",
|
|
6489
6658
|
decimals: 18,
|
|
6490
|
-
address: "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a"
|
|
6659
|
+
address: "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a",
|
|
6660
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6491
6661
|
},
|
|
6492
6662
|
USDC: {
|
|
6493
6663
|
symbol: "USDC",
|
|
6494
6664
|
name: "USD Coin",
|
|
6495
6665
|
decimals: 6,
|
|
6496
|
-
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
|
|
6666
|
+
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
6667
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6497
6668
|
},
|
|
6498
6669
|
wstETH: {
|
|
6499
6670
|
symbol: "wstETH",
|
|
6500
6671
|
name: "Wrapped stETH",
|
|
6501
6672
|
decimals: 18,
|
|
6502
|
-
address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"
|
|
6673
|
+
address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452",
|
|
6674
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6503
6675
|
},
|
|
6504
6676
|
cbBTC: {
|
|
6505
6677
|
symbol: "cbBTC",
|
|
6506
6678
|
name: "Coinbase Wrapped BTC",
|
|
6507
6679
|
decimals: 8,
|
|
6508
|
-
address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"
|
|
6680
|
+
address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
|
|
6681
|
+
xChainId: types.BASE_MAINNET_CHAIN_ID
|
|
6509
6682
|
}
|
|
6510
6683
|
}
|
|
6511
6684
|
},
|
|
@@ -6526,37 +6699,43 @@ var spokeChainConfig = {
|
|
|
6526
6699
|
symbol: "ETH",
|
|
6527
6700
|
name: "Ethereum",
|
|
6528
6701
|
decimals: 18,
|
|
6529
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6702
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6703
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6530
6704
|
},
|
|
6531
6705
|
bnUSD: {
|
|
6532
6706
|
symbol: "bnUSD",
|
|
6533
6707
|
name: "bnUSD",
|
|
6534
6708
|
decimals: 18,
|
|
6535
|
-
address: "0xF4f7dC27c17470a26d0de9039Cf0EA5045F100E8"
|
|
6709
|
+
address: "0xF4f7dC27c17470a26d0de9039Cf0EA5045F100E8",
|
|
6710
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6536
6711
|
},
|
|
6537
6712
|
USDC: {
|
|
6538
6713
|
symbol: "USDC",
|
|
6539
6714
|
name: "USD Coin",
|
|
6540
6715
|
decimals: 6,
|
|
6541
|
-
address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
|
|
6716
|
+
address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
6717
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6542
6718
|
},
|
|
6543
6719
|
wstETH: {
|
|
6544
6720
|
symbol: "wstETH",
|
|
6545
6721
|
name: "Wrapped stETH",
|
|
6546
6722
|
decimals: 18,
|
|
6547
|
-
address: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"
|
|
6723
|
+
address: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb",
|
|
6724
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6548
6725
|
},
|
|
6549
6726
|
weETH: {
|
|
6550
6727
|
symbol: "weETH",
|
|
6551
6728
|
name: "Wrapped eETH",
|
|
6552
6729
|
decimals: 18,
|
|
6553
|
-
address: "0x5A7fACB970D094B6C7FF1df0eA68D99E6e73CBFF"
|
|
6730
|
+
address: "0x5A7fACB970D094B6C7FF1df0eA68D99E6e73CBFF",
|
|
6731
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6554
6732
|
},
|
|
6555
6733
|
USDT: {
|
|
6556
6734
|
symbol: "USDT",
|
|
6557
6735
|
name: "Tether USD",
|
|
6558
6736
|
decimals: 6,
|
|
6559
|
-
address: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"
|
|
6737
|
+
address: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58",
|
|
6738
|
+
xChainId: types.OPTIMISM_MAINNET_CHAIN_ID
|
|
6560
6739
|
}
|
|
6561
6740
|
}
|
|
6562
6741
|
},
|
|
@@ -6577,31 +6756,36 @@ var spokeChainConfig = {
|
|
|
6577
6756
|
symbol: "BNB",
|
|
6578
6757
|
name: "BNB",
|
|
6579
6758
|
decimals: 18,
|
|
6580
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6759
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6760
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6581
6761
|
},
|
|
6582
6762
|
bnUSD: {
|
|
6583
6763
|
symbol: "bnUSD",
|
|
6584
6764
|
name: "bnUSD",
|
|
6585
6765
|
decimals: 18,
|
|
6586
|
-
address: "0x8428FedC020737a5A2291F46cB1B80613eD71638"
|
|
6766
|
+
address: "0x8428FedC020737a5A2291F46cB1B80613eD71638",
|
|
6767
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6587
6768
|
},
|
|
6588
6769
|
ETHB: {
|
|
6589
6770
|
symbol: "ETHB",
|
|
6590
6771
|
name: "Ethereum BSC",
|
|
6591
6772
|
decimals: 18,
|
|
6592
|
-
address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8"
|
|
6773
|
+
address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8",
|
|
6774
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6593
6775
|
},
|
|
6594
6776
|
BTCB: {
|
|
6595
6777
|
symbol: "BTCB",
|
|
6596
6778
|
name: "Bitcoin BSC",
|
|
6597
6779
|
decimals: 18,
|
|
6598
|
-
address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c"
|
|
6780
|
+
address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c",
|
|
6781
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6599
6782
|
},
|
|
6600
6783
|
USDC: {
|
|
6601
6784
|
symbol: "USDC",
|
|
6602
6785
|
name: "USD Coin",
|
|
6603
6786
|
decimals: 18,
|
|
6604
|
-
address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d"
|
|
6787
|
+
address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
|
|
6788
|
+
xChainId: types.BSC_MAINNET_CHAIN_ID
|
|
6605
6789
|
}
|
|
6606
6790
|
}
|
|
6607
6791
|
},
|
|
@@ -6622,19 +6806,22 @@ var spokeChainConfig = {
|
|
|
6622
6806
|
symbol: "POL",
|
|
6623
6807
|
name: "Polygon",
|
|
6624
6808
|
decimals: 18,
|
|
6625
|
-
address: "0x0000000000000000000000000000000000000000"
|
|
6809
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
6810
|
+
xChainId: types.POLYGON_MAINNET_CHAIN_ID
|
|
6626
6811
|
},
|
|
6627
6812
|
bnUSD: {
|
|
6628
6813
|
symbol: "bnUSD",
|
|
6629
6814
|
name: "bnUSD",
|
|
6630
6815
|
decimals: 18,
|
|
6631
|
-
address: "0x39E77f86C1B1f3fbAb362A82b49D2E86C09659B4"
|
|
6816
|
+
address: "0x39E77f86C1B1f3fbAb362A82b49D2E86C09659B4",
|
|
6817
|
+
xChainId: types.POLYGON_MAINNET_CHAIN_ID
|
|
6632
6818
|
},
|
|
6633
6819
|
USDC: {
|
|
6634
6820
|
symbol: "USDC",
|
|
6635
6821
|
name: "USD Coin",
|
|
6636
6822
|
decimals: 6,
|
|
6637
|
-
address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
|
|
6823
|
+
address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
|
|
6824
|
+
xChainId: types.POLYGON_MAINNET_CHAIN_ID
|
|
6638
6825
|
}
|
|
6639
6826
|
}
|
|
6640
6827
|
},
|
|
@@ -6659,19 +6846,22 @@ var spokeChainConfig = {
|
|
|
6659
6846
|
symbol: "INJ",
|
|
6660
6847
|
name: "Injective",
|
|
6661
6848
|
decimals: 18,
|
|
6662
|
-
address: "inj"
|
|
6849
|
+
address: "inj",
|
|
6850
|
+
xChainId: types.INJECTIVE_MAINNET_CHAIN_ID
|
|
6663
6851
|
},
|
|
6664
6852
|
bnUSD: {
|
|
6665
6853
|
symbol: "bnUSD",
|
|
6666
6854
|
name: "bnUSD",
|
|
6667
6855
|
decimals: 18,
|
|
6668
|
-
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/bnUSD"
|
|
6856
|
+
address: "factory/inj1d036ftaatxpkqsu9hja8r24rv3v33chz3appxp/bnUSD",
|
|
6857
|
+
xChainId: types.INJECTIVE_MAINNET_CHAIN_ID
|
|
6669
6858
|
},
|
|
6670
6859
|
USDC: {
|
|
6671
6860
|
symbol: "USDC",
|
|
6672
6861
|
name: "USD Coin",
|
|
6673
6862
|
decimals: 6,
|
|
6674
|
-
address: "ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E"
|
|
6863
|
+
address: "ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E",
|
|
6864
|
+
xChainId: types.INJECTIVE_MAINNET_CHAIN_ID
|
|
6675
6865
|
}
|
|
6676
6866
|
},
|
|
6677
6867
|
gasPrice: "500000000inj",
|
|
@@ -6694,25 +6884,29 @@ var spokeChainConfig = {
|
|
|
6694
6884
|
symbol: "bnUSD",
|
|
6695
6885
|
name: "bnUSD",
|
|
6696
6886
|
decimals: 7,
|
|
6697
|
-
address: "CD6YBFFWMU2UJHX2NGRJ7RN76IJVTCC7MRA46DUBXNB7E6W7H7JRJ2CX"
|
|
6887
|
+
address: "CD6YBFFWMU2UJHX2NGRJ7RN76IJVTCC7MRA46DUBXNB7E6W7H7JRJ2CX",
|
|
6888
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6698
6889
|
},
|
|
6699
6890
|
XLM: {
|
|
6700
6891
|
symbol: "XLM",
|
|
6701
6892
|
name: "Stellar Lumens",
|
|
6702
6893
|
decimals: 7,
|
|
6703
|
-
address: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA"
|
|
6894
|
+
address: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
|
|
6895
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6704
6896
|
},
|
|
6705
6897
|
USDC: {
|
|
6706
6898
|
symbol: "USDC",
|
|
6707
6899
|
name: "USD Coin",
|
|
6708
6900
|
decimals: 7,
|
|
6709
|
-
address: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"
|
|
6901
|
+
address: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
|
|
6902
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6710
6903
|
},
|
|
6711
6904
|
legacybnUSD: {
|
|
6712
|
-
symbol: "bnUSD",
|
|
6905
|
+
symbol: "bnUSD (legacy)",
|
|
6713
6906
|
name: "legacybnUSD",
|
|
6714
6907
|
decimals: 18,
|
|
6715
|
-
address: "CCT4ZYIYZ3TUO2AWQFEOFGBZ6HQP3GW5TA37CK7CRZVFRDXYTHTYX7KP"
|
|
6908
|
+
address: "CCT4ZYIYZ3TUO2AWQFEOFGBZ6HQP3GW5TA37CK7CRZVFRDXYTHTYX7KP",
|
|
6909
|
+
xChainId: types.STELLAR_MAINNET_CHAIN_ID
|
|
6716
6910
|
}
|
|
6717
6911
|
},
|
|
6718
6912
|
nativeToken: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
|
|
@@ -6739,61 +6933,71 @@ var spokeChainConfig = {
|
|
|
6739
6933
|
symbol: "SUI",
|
|
6740
6934
|
name: "SUI",
|
|
6741
6935
|
decimals: 9,
|
|
6742
|
-
address: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"
|
|
6936
|
+
address: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
|
|
6937
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6743
6938
|
},
|
|
6744
6939
|
bnUSD: {
|
|
6745
6940
|
symbol: "bnUSD",
|
|
6746
6941
|
name: "bnUSD",
|
|
6747
6942
|
decimals: 9,
|
|
6748
|
-
address: "0xff4de2b2b57dd7611d2812d231a467d007b702a101fd5c7ad3b278257cddb507::bnusd::BNUSD"
|
|
6943
|
+
address: "0xff4de2b2b57dd7611d2812d231a467d007b702a101fd5c7ad3b278257cddb507::bnusd::BNUSD",
|
|
6944
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6749
6945
|
},
|
|
6750
6946
|
USDC: {
|
|
6751
6947
|
symbol: "USDC",
|
|
6752
6948
|
name: "USD Coin",
|
|
6753
6949
|
decimals: 6,
|
|
6754
|
-
address: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"
|
|
6950
|
+
address: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
|
|
6951
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6755
6952
|
},
|
|
6756
6953
|
legacybnUSD: {
|
|
6757
|
-
symbol: "bnUSD",
|
|
6954
|
+
symbol: "bnUSD (legacy)",
|
|
6758
6955
|
name: "legacybnUSD",
|
|
6759
6956
|
decimals: 9,
|
|
6760
|
-
address: "0x03917a812fe4a6d6bc779c5ab53f8a80ba741f8af04121193fc44e0f662e2ceb::balanced_dollar::BALANCED_DOLLAR"
|
|
6957
|
+
address: "0x03917a812fe4a6d6bc779c5ab53f8a80ba741f8af04121193fc44e0f662e2ceb::balanced_dollar::BALANCED_DOLLAR",
|
|
6958
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6761
6959
|
},
|
|
6762
6960
|
afSUI: {
|
|
6763
6961
|
symbol: "afSUI",
|
|
6764
6962
|
name: "Aftermath Staked Sui",
|
|
6765
6963
|
decimals: 9,
|
|
6766
|
-
address: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI"
|
|
6964
|
+
address: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI",
|
|
6965
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6767
6966
|
},
|
|
6768
6967
|
mSUI: {
|
|
6769
6968
|
symbol: "mSUI",
|
|
6770
6969
|
name: "Mirai Staked SUI",
|
|
6771
6970
|
decimals: 9,
|
|
6772
|
-
address: "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI"
|
|
6971
|
+
address: "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI",
|
|
6972
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6773
6973
|
},
|
|
6774
6974
|
haSUI: {
|
|
6775
6975
|
symbol: "haSUI",
|
|
6776
6976
|
name: "haSUI",
|
|
6777
6977
|
decimals: 9,
|
|
6778
|
-
address: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"
|
|
6978
|
+
address: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",
|
|
6979
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6779
6980
|
},
|
|
6780
6981
|
vSUI: {
|
|
6781
6982
|
symbol: "vSUI",
|
|
6782
6983
|
name: "Volo Staked SUI",
|
|
6783
6984
|
decimals: 9,
|
|
6784
|
-
address: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT"
|
|
6985
|
+
address: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",
|
|
6986
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6785
6987
|
},
|
|
6786
6988
|
yapSUI: {
|
|
6787
6989
|
symbol: "yapSUI",
|
|
6788
6990
|
name: "Yap Staked SUI",
|
|
6789
6991
|
decimals: 9,
|
|
6790
|
-
address: "0x83f1bb8c91ecd1fd313344058b0eed94d63c54e41d8d1ae5bff1353443517d65::yap_sui::YAP_SUI"
|
|
6992
|
+
address: "0x83f1bb8c91ecd1fd313344058b0eed94d63c54e41d8d1ae5bff1353443517d65::yap_sui::YAP_SUI",
|
|
6993
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6791
6994
|
},
|
|
6792
6995
|
trevinSUI: {
|
|
6793
6996
|
symbol: "trevinSUI",
|
|
6794
6997
|
name: "Trevin Staked SUI",
|
|
6795
6998
|
decimals: 9,
|
|
6796
|
-
address: "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI"
|
|
6999
|
+
address: "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI",
|
|
7000
|
+
xChainId: types.SUI_MAINNET_CHAIN_ID
|
|
6797
7001
|
}
|
|
6798
7002
|
},
|
|
6799
7003
|
nativeToken: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
|
|
@@ -6814,7 +7018,7 @@ var spokeChainConfig = {
|
|
|
6814
7018
|
},
|
|
6815
7019
|
chain: {
|
|
6816
7020
|
id: types.ICON_MAINNET_CHAIN_ID,
|
|
6817
|
-
name: "ICON
|
|
7021
|
+
name: "ICON",
|
|
6818
7022
|
type: "ICON"
|
|
6819
7023
|
},
|
|
6820
7024
|
supportedTokens: {
|
|
@@ -6822,33 +7026,38 @@ var spokeChainConfig = {
|
|
|
6822
7026
|
symbol: "ICX",
|
|
6823
7027
|
name: "ICON",
|
|
6824
7028
|
decimals: 18,
|
|
6825
|
-
address: "cx0000000000000000000000000000000000000000"
|
|
7029
|
+
address: "cx0000000000000000000000000000000000000000",
|
|
7030
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6826
7031
|
},
|
|
6827
7032
|
wICX: {
|
|
6828
7033
|
symbol: "wICX",
|
|
6829
7034
|
name: "Wrapped ICX",
|
|
6830
7035
|
decimals: 18,
|
|
6831
|
-
address: "cx3975b43d260fb8ec802cef6e60c2f4d07486f11d"
|
|
7036
|
+
address: "cx3975b43d260fb8ec802cef6e60c2f4d07486f11d",
|
|
7037
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6832
7038
|
},
|
|
6833
7039
|
bnUSD: {
|
|
6834
7040
|
// same as legacy
|
|
6835
|
-
symbol: "bnUSD",
|
|
7041
|
+
symbol: "bnUSD (legacy)",
|
|
6836
7042
|
name: "bnUSD",
|
|
6837
7043
|
decimals: 18,
|
|
6838
|
-
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb"
|
|
7044
|
+
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb",
|
|
7045
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6839
7046
|
},
|
|
6840
7047
|
legacybnUSD: {
|
|
6841
7048
|
// duplicate of bnUSD purely for consistency with other legacy tokens chains (sui, stellar)
|
|
6842
|
-
symbol: "bnUSD",
|
|
7049
|
+
symbol: "bnUSD (legacy)",
|
|
6843
7050
|
name: "bnUSD",
|
|
6844
7051
|
decimals: 18,
|
|
6845
|
-
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb"
|
|
7052
|
+
address: "cx88fd7df7ddff82f7cc735c871dc519838cb235bb",
|
|
7053
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6846
7054
|
},
|
|
6847
7055
|
BALN: {
|
|
6848
7056
|
symbol: "BALN",
|
|
6849
7057
|
name: "BALN",
|
|
6850
7058
|
decimals: 18,
|
|
6851
|
-
address: "cxf61cd5a45dc9f91c15aa65831a30a90d59a09619"
|
|
7059
|
+
address: "cxf61cd5a45dc9f91c15aa65831a30a90d59a09619",
|
|
7060
|
+
xChainId: types.ICON_MAINNET_CHAIN_ID
|
|
6852
7061
|
}
|
|
6853
7062
|
},
|
|
6854
7063
|
nativeToken: "cx0000000000000000000000000000000000000000",
|
|
@@ -6856,26 +7065,8 @@ var spokeChainConfig = {
|
|
|
6856
7065
|
nid: "0x1"
|
|
6857
7066
|
}
|
|
6858
7067
|
};
|
|
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
7068
|
var hubVaults = {
|
|
6878
|
-
IbnUSD: {
|
|
7069
|
+
[SodaTokens.IbnUSD.symbol]: {
|
|
6879
7070
|
// ICON bnUSD (Migration) vault on Sonic contains legacy bnUSD tokens (stellar, sui, icon)
|
|
6880
7071
|
address: "0x9D4b663Eb075d2a1C7B8eaEFB9eCCC0510388B51",
|
|
6881
7072
|
reserves: [
|
|
@@ -6885,28 +7076,28 @@ var hubVaults = {
|
|
|
6885
7076
|
"0x1559B52d2e165da1505a542EA37C543c9137f52a"
|
|
6886
7077
|
]
|
|
6887
7078
|
},
|
|
6888
|
-
sodaS: {
|
|
7079
|
+
[SodaTokens.sodaS.symbol]: {
|
|
6889
7080
|
address: "0x62ecc3eeb80a162c57624b3ff80313fe69f5203e",
|
|
6890
7081
|
reserves: [
|
|
6891
7082
|
// hub asset addresses contained in the vault
|
|
6892
7083
|
"0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38"
|
|
6893
7084
|
]
|
|
6894
7085
|
},
|
|
6895
|
-
sodaNIBI: {
|
|
7086
|
+
[SodaTokens.sodaNIBI.symbol]: {
|
|
6896
7087
|
address: "0xc6c85287a8b173a509c2f198bb719a8a5a2d0c68",
|
|
6897
7088
|
reserves: [
|
|
6898
7089
|
// hub asset addresses contained in the vault
|
|
6899
7090
|
"0xe0064414c2c1a636a9424c7a17d86fbf7fd3f190"
|
|
6900
7091
|
]
|
|
6901
7092
|
},
|
|
6902
|
-
sodaPOL: {
|
|
7093
|
+
[SodaTokens.sodaPOL.symbol]: {
|
|
6903
7094
|
address: "0x208ed38f4783328aa9ebfec360d32e7520a9b779",
|
|
6904
7095
|
reserves: [
|
|
6905
7096
|
// hub asset addresses contained in the vault
|
|
6906
7097
|
"0x9ee17486571917837210824b0d4cadfe3b324d12"
|
|
6907
7098
|
]
|
|
6908
7099
|
},
|
|
6909
|
-
bnUSD: {
|
|
7100
|
+
[SodaTokens.bnUSD.symbol]: {
|
|
6910
7101
|
// new bnUSD vault on Sonic (also contains IbnUSD vault token as part of it)
|
|
6911
7102
|
address: "0xe801ca34e19abcbfea12025378d19c4fbe250131",
|
|
6912
7103
|
reserves: [
|
|
@@ -6925,19 +7116,33 @@ var hubVaults = {
|
|
|
6925
7116
|
"0xdf23097b9aeb917bf8fb70e99b6c528fffa35364",
|
|
6926
7117
|
"0x11b93c162aabffd026539bb3b9f9ec22c8b7ef8a",
|
|
6927
7118
|
"0x69425ffb14704124a58d6f69d510f74a59d9a5bc",
|
|
6928
|
-
"0x9d4b663eb075d2a1c7b8eaefb9eccc0510388b51"
|
|
7119
|
+
"0x9d4b663eb075d2a1c7b8eaefb9eccc0510388b51",
|
|
7120
|
+
"0xD1d14BF3324C901855A1f7d0d5CA4c8458D2a780"
|
|
6929
7121
|
]
|
|
6930
7122
|
},
|
|
6931
|
-
sodaSODA: {
|
|
7123
|
+
[SodaTokens.sodaSODA.symbol]: {
|
|
6932
7124
|
// SODA SODA vault
|
|
6933
7125
|
address: "0x21685e341de7844135329914be6bd8d16982d834",
|
|
6934
7126
|
reserves: [
|
|
6935
7127
|
// hub asset addresses contained in the vault
|
|
6936
|
-
"0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963"
|
|
7128
|
+
"0x7c7d53eecda37a87ce0d5bf8e0b24512a48dc963",
|
|
6937
7129
|
// SODA SODA hub asset
|
|
7130
|
+
"0xf51d7082375cdca8C19C74e1A0c77dA482aFDa4e",
|
|
7131
|
+
"0x93a367E5B37a1B9E8D04ef25a6Af40d181a3DfFF",
|
|
7132
|
+
"0x17fF8Ad5EBe6CA8B15751067cD0c89f0E580CD17",
|
|
7133
|
+
"0x4d12c72A8633588097D10e57b559ed642588e4C6",
|
|
7134
|
+
"0x26cd76cB5622Dc8638670A16E0Da5a51394A8DB1",
|
|
7135
|
+
"0x0eD0d274dC77ef460DC96b9fBaFF3EDB074e0471",
|
|
7136
|
+
"0x8D78A620E009Ba751Eb40d77A5e9Db48A3F2016b",
|
|
7137
|
+
"0x4Cf5Ce9594AEDdc5D3efe9d4Cdf0b944b4e73A53",
|
|
7138
|
+
"0xD749B5FfFED7cEDaa3239abDd16D677179C29AEc",
|
|
7139
|
+
"0x07Db7b1a96ebE474B20F52fF487cEE415adee79e",
|
|
7140
|
+
"0x20Ce75CdcEe44B1308365447b91B9c26e2b71Ffd",
|
|
7141
|
+
"0x5Db9CEc919f40C50809D9490DC3BbA4F05b0a1D7",
|
|
7142
|
+
"0x655730024B673B3378CD6031B1Cd01eaE9afb138"
|
|
6938
7143
|
]
|
|
6939
7144
|
},
|
|
6940
|
-
sodaAVAX: {
|
|
7145
|
+
[SodaTokens.sodaAVAX.symbol]: {
|
|
6941
7146
|
// SODA AVAX vault
|
|
6942
7147
|
address: "0x14238d267557e9d799016ad635b53cd15935d290",
|
|
6943
7148
|
reserves: [
|
|
@@ -6946,7 +7151,7 @@ var hubVaults = {
|
|
|
6946
7151
|
// AvalancheAVAX hub asset
|
|
6947
7152
|
]
|
|
6948
7153
|
},
|
|
6949
|
-
sodaBNB: {
|
|
7154
|
+
[SodaTokens.sodaBNB.symbol]: {
|
|
6950
7155
|
// SODA BNB vault
|
|
6951
7156
|
address: "0x40cd41b35db9e5109ae7e54b44de8625db320e6b",
|
|
6952
7157
|
reserves: [
|
|
@@ -6955,7 +7160,7 @@ var hubVaults = {
|
|
|
6955
7160
|
// BSC BNB hub asset
|
|
6956
7161
|
]
|
|
6957
7162
|
},
|
|
6958
|
-
sodaETH: {
|
|
7163
|
+
[SodaTokens.sodaETH.symbol]: {
|
|
6959
7164
|
// SODA ETH vault
|
|
6960
7165
|
address: "0x4effb5813271699683c25c734f4dabc45b363709",
|
|
6961
7166
|
reserves: [
|
|
@@ -6972,7 +7177,7 @@ var hubVaults = {
|
|
|
6972
7177
|
// Sonic WETH hub asset
|
|
6973
7178
|
]
|
|
6974
7179
|
},
|
|
6975
|
-
sodaBTC: {
|
|
7180
|
+
[SodaTokens.sodaBTC.symbol]: {
|
|
6976
7181
|
// SODA BTC vault
|
|
6977
7182
|
address: "0x7a1a5555842ad2d0ed274d09b5c4406a95799d5d",
|
|
6978
7183
|
reserves: [
|
|
@@ -6983,11 +7188,12 @@ var hubVaults = {
|
|
|
6983
7188
|
// Arbitrum wBTC hub asset
|
|
6984
7189
|
"0x96fc8540736f1598b7e235e6de8814062b3b5d3b",
|
|
6985
7190
|
// Arbitrum tBTC hub asset,
|
|
6986
|
-
"0xd8a24c71fea5bb81c66c01e532de7d9b11e13905"
|
|
7191
|
+
"0xd8a24c71fea5bb81c66c01e532de7d9b11e13905",
|
|
6987
7192
|
// BSC BTCB hub asset
|
|
7193
|
+
"0x03E99853C6376b13a4c6e4d0A115F1639c9FA14e"
|
|
6988
7194
|
]
|
|
6989
7195
|
},
|
|
6990
|
-
sodaSUI: {
|
|
7196
|
+
[SodaTokens.sodaSUI.symbol]: {
|
|
6991
7197
|
// SODA SUI vault
|
|
6992
7198
|
address: "0xdc5b4b00f98347e95b9f94911213dab4c687e1e3",
|
|
6993
7199
|
reserves: [
|
|
@@ -6996,7 +7202,7 @@ var hubVaults = {
|
|
|
6996
7202
|
// SUI SUI hub asset
|
|
6997
7203
|
]
|
|
6998
7204
|
},
|
|
6999
|
-
sodaINJ: {
|
|
7205
|
+
[SodaTokens.sodaINJ.symbol]: {
|
|
7000
7206
|
// SODA INJ vault
|
|
7001
7207
|
address: "0x1f22279c89b213944b7ea41dacb0a868ddcdfd13",
|
|
7002
7208
|
reserves: [
|
|
@@ -7005,7 +7211,7 @@ var hubVaults = {
|
|
|
7005
7211
|
// Injective INJ hub asset
|
|
7006
7212
|
]
|
|
7007
7213
|
},
|
|
7008
|
-
sodaXLM: {
|
|
7214
|
+
[SodaTokens.sodaXLM.symbol]: {
|
|
7009
7215
|
// SODA XLM vault
|
|
7010
7216
|
address: "0x6bc8c37cba91f76e68c9e6d689a9c21e4d32079b",
|
|
7011
7217
|
reserves: [
|
|
@@ -7014,7 +7220,7 @@ var hubVaults = {
|
|
|
7014
7220
|
// Stellar XLM hub asset
|
|
7015
7221
|
]
|
|
7016
7222
|
},
|
|
7017
|
-
sodaSOL: {
|
|
7223
|
+
[SodaTokens.sodaSOL.symbol]: {
|
|
7018
7224
|
// SODA SOL vault
|
|
7019
7225
|
address: "0xdea692287e2ce8cb08fa52917be0f16b1dacdc87",
|
|
7020
7226
|
reserves: [
|
|
@@ -7023,7 +7229,7 @@ var hubVaults = {
|
|
|
7023
7229
|
// Solana SOL hub asset
|
|
7024
7230
|
]
|
|
7025
7231
|
},
|
|
7026
|
-
sodaUSDT: {
|
|
7232
|
+
[SodaTokens.sodaUSDT.symbol]: {
|
|
7027
7233
|
// SODA USDT vault
|
|
7028
7234
|
address: "0xbdf1f453fcb61424011bbddcb96cfdb30f3fe876",
|
|
7029
7235
|
reserves: [
|
|
@@ -7035,7 +7241,7 @@ var hubVaults = {
|
|
|
7035
7241
|
// Sonic USDT
|
|
7036
7242
|
]
|
|
7037
7243
|
},
|
|
7038
|
-
sodaUSDC: {
|
|
7244
|
+
[SodaTokens.sodaUSDC.symbol]: {
|
|
7039
7245
|
address: "0xabbb91c0617090f0028bdc27597cd0d038f3a833",
|
|
7040
7246
|
reserves: [
|
|
7041
7247
|
"0x41abf4b1559ff709ef8150079bcb26db1fffd117",
|
|
@@ -7049,10 +7255,25 @@ var hubVaults = {
|
|
|
7049
7255
|
"0x4bc1211faa06fb50ff61a70331f56167ae511057",
|
|
7050
7256
|
"0x348007b53f25a9a857ab8ea81ec9e3ccbcf440f2",
|
|
7051
7257
|
"0xc3f020057510ffe10ceb882e1b48238b43d78a5e",
|
|
7052
|
-
"0x9d58508ad10d34048a11640735ca5075bba07b35"
|
|
7258
|
+
"0x9d58508ad10d34048a11640735ca5075bba07b35",
|
|
7259
|
+
"0xC1df02fb7b1b06bE886592C89F6955387998B2f7"
|
|
7053
7260
|
]
|
|
7054
7261
|
}
|
|
7055
7262
|
};
|
|
7263
|
+
var hubVaultTokensMap = new Map(
|
|
7264
|
+
Object.entries(hubVaults).map(([symbol, vault]) => [
|
|
7265
|
+
vault.address.toLowerCase(),
|
|
7266
|
+
{
|
|
7267
|
+
address: vault.address.toLowerCase(),
|
|
7268
|
+
symbol,
|
|
7269
|
+
name: symbol,
|
|
7270
|
+
decimals: 18
|
|
7271
|
+
}
|
|
7272
|
+
])
|
|
7273
|
+
);
|
|
7274
|
+
var getHubVaultTokenByAddress = (address) => {
|
|
7275
|
+
return hubVaultTokensMap.get(address.toLowerCase());
|
|
7276
|
+
};
|
|
7056
7277
|
var bnUSDLegacySpokeChainIds = [
|
|
7057
7278
|
types.ICON_MAINNET_CHAIN_ID,
|
|
7058
7279
|
types.SUI_MAINNET_CHAIN_ID,
|
|
@@ -7098,6 +7319,13 @@ var hubAssets = {
|
|
|
7098
7319
|
name: "Sonic",
|
|
7099
7320
|
vault: hubVaults.sodaS.address
|
|
7100
7321
|
},
|
|
7322
|
+
[spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].bnUSD]: {
|
|
7323
|
+
asset: "0x289cDa1043b4Ce26BDCa3c12E534f56b24308A5B",
|
|
7324
|
+
decimal: 18,
|
|
7325
|
+
symbol: "bnUSD",
|
|
7326
|
+
name: "bnUSD",
|
|
7327
|
+
vault: hubVaults.bnUSD.address
|
|
7328
|
+
},
|
|
7101
7329
|
[spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS.address]: {
|
|
7102
7330
|
asset: spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS.address,
|
|
7103
7331
|
decimal: 18,
|
|
@@ -7132,7 +7360,8 @@ var hubAssets = {
|
|
|
7132
7360
|
symbol: "SODA",
|
|
7133
7361
|
name: "SODA",
|
|
7134
7362
|
vault: hubVaults.sodaSODA.address
|
|
7135
|
-
}
|
|
7363
|
+
},
|
|
7364
|
+
...SodaTokensAsHubAssets
|
|
7136
7365
|
},
|
|
7137
7366
|
[types.AVALANCHE_MAINNET_CHAIN_ID]: {
|
|
7138
7367
|
[spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].nativeToken]: {
|
|
@@ -7593,17 +7822,18 @@ var solverSupportedTokens = {
|
|
|
7593
7822
|
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.WETH,
|
|
7594
7823
|
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7595
7824
|
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.USDT,
|
|
7596
|
-
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS
|
|
7825
|
+
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.wS,
|
|
7826
|
+
spokeChainConfig[types.SONIC_MAINNET_CHAIN_ID].supportedTokens.bnUSD
|
|
7597
7827
|
],
|
|
7598
7828
|
[types.AVALANCHE_MAINNET_CHAIN_ID]: [
|
|
7599
7829
|
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.AVAX,
|
|
7600
7830
|
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDT,
|
|
7601
|
-
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7602
|
-
|
|
7831
|
+
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7832
|
+
spokeChainConfig[types.AVALANCHE_MAINNET_CHAIN_ID].supportedTokens.bnUSD
|
|
7603
7833
|
],
|
|
7604
7834
|
[types.ARBITRUM_MAINNET_CHAIN_ID]: [
|
|
7605
7835
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7606
|
-
|
|
7836
|
+
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7607
7837
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.WBTC,
|
|
7608
7838
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.weETH,
|
|
7609
7839
|
spokeChainConfig[types.ARBITRUM_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
@@ -7613,7 +7843,7 @@ var solverSupportedTokens = {
|
|
|
7613
7843
|
],
|
|
7614
7844
|
[types.BASE_MAINNET_CHAIN_ID]: [
|
|
7615
7845
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7616
|
-
|
|
7846
|
+
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7617
7847
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.weETH,
|
|
7618
7848
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7619
7849
|
spokeChainConfig[types.BASE_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
@@ -7621,7 +7851,7 @@ var solverSupportedTokens = {
|
|
|
7621
7851
|
],
|
|
7622
7852
|
[types.OPTIMISM_MAINNET_CHAIN_ID]: [
|
|
7623
7853
|
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.ETH,
|
|
7624
|
-
|
|
7854
|
+
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7625
7855
|
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7626
7856
|
spokeChainConfig[types.OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.wstETH,
|
|
7627
7857
|
// spokeChainConfig[OPTIMISM_MAINNET_CHAIN_ID].supportedTokens.weETH, // NOTE: Not Implemented
|
|
@@ -7629,19 +7859,20 @@ var solverSupportedTokens = {
|
|
|
7629
7859
|
],
|
|
7630
7860
|
[types.POLYGON_MAINNET_CHAIN_ID]: [
|
|
7631
7861
|
spokeChainConfig[types.POLYGON_MAINNET_CHAIN_ID].supportedTokens.POL,
|
|
7632
|
-
|
|
7862
|
+
spokeChainConfig[types.POLYGON_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7633
7863
|
spokeChainConfig[types.POLYGON_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7634
7864
|
],
|
|
7635
7865
|
[types.BSC_MAINNET_CHAIN_ID]: [
|
|
7636
7866
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.BNB,
|
|
7637
7867
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.ETHB,
|
|
7638
7868
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.BTCB,
|
|
7639
|
-
|
|
7869
|
+
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7640
7870
|
spokeChainConfig[types.BSC_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7641
7871
|
],
|
|
7642
7872
|
[types.SOLANA_MAINNET_CHAIN_ID]: [
|
|
7643
7873
|
spokeChainConfig[types.SOLANA_MAINNET_CHAIN_ID].supportedTokens.SOL,
|
|
7644
|
-
|
|
7874
|
+
spokeChainConfig[types.SOLANA_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7875
|
+
// NOTE: Not Implemented
|
|
7645
7876
|
spokeChainConfig[types.SOLANA_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7646
7877
|
],
|
|
7647
7878
|
[types.ICON_MAINNET_CHAIN_ID]: [
|
|
@@ -7653,12 +7884,14 @@ var solverSupportedTokens = {
|
|
|
7653
7884
|
],
|
|
7654
7885
|
[types.STELLAR_MAINNET_CHAIN_ID]: [
|
|
7655
7886
|
spokeChainConfig[types.STELLAR_MAINNET_CHAIN_ID].supportedTokens.XLM,
|
|
7656
|
-
|
|
7887
|
+
spokeChainConfig[types.STELLAR_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7888
|
+
// NOTE: Not Implemented
|
|
7657
7889
|
spokeChainConfig[types.STELLAR_MAINNET_CHAIN_ID].supportedTokens.USDC
|
|
7658
7890
|
],
|
|
7659
7891
|
[types.SUI_MAINNET_CHAIN_ID]: [
|
|
7660
7892
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.SUI,
|
|
7661
|
-
|
|
7893
|
+
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.bnUSD,
|
|
7894
|
+
// NOTE: Not Implemented
|
|
7662
7895
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7663
7896
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.afSUI,
|
|
7664
7897
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.mSUI,
|
|
@@ -7668,9 +7901,9 @@ var solverSupportedTokens = {
|
|
|
7668
7901
|
spokeChainConfig[types.SUI_MAINNET_CHAIN_ID].supportedTokens.trevinSUI
|
|
7669
7902
|
],
|
|
7670
7903
|
[types.INJECTIVE_MAINNET_CHAIN_ID]: [
|
|
7671
|
-
spokeChainConfig[
|
|
7904
|
+
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.INJ,
|
|
7672
7905
|
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.bnUSD, // NOTE: Not Implemented
|
|
7673
|
-
spokeChainConfig[
|
|
7906
|
+
// spokeChainConfig[INJECTIVE_MAINNET_CHAIN_ID].supportedTokens.USDC,
|
|
7674
7907
|
],
|
|
7675
7908
|
[types.NIBIRU_MAINNET_CHAIN_ID]: [
|
|
7676
7909
|
// spokeChainConfig[NIBIRU_MAINNET_CHAIN_ID].supportedTokens.NIBI, // NOTE: Not Implemented
|
|
@@ -7802,11 +8035,30 @@ var chainIdToHubAssetsMap = new Map(
|
|
|
7802
8035
|
var supportedHubAssets = new Set(
|
|
7803
8036
|
Object.values(hubAssets).flatMap((assets) => Object.values(assets).map((info) => info.asset.toLowerCase()))
|
|
7804
8037
|
);
|
|
8038
|
+
var supportedSodaAssets = new Set(
|
|
8039
|
+
Object.values(hubAssets).flatMap((assets) => Object.values(assets).map((info) => info.vault.toLowerCase()))
|
|
8040
|
+
);
|
|
7805
8041
|
var spokeChainIdsSet = new Set(types.SPOKE_CHAIN_IDS);
|
|
8042
|
+
var getOriginalAssetInfoFromVault = (chainId, vault) => {
|
|
8043
|
+
const assets = hubAssets[chainId];
|
|
8044
|
+
if (!assets) {
|
|
8045
|
+
return [];
|
|
8046
|
+
}
|
|
8047
|
+
const vaultAddress = vault.toLowerCase();
|
|
8048
|
+
const result = [];
|
|
8049
|
+
for (const [spokeToken, info] of Object.entries(assets)) {
|
|
8050
|
+
if (info.vault.toLowerCase() === vaultAddress) {
|
|
8051
|
+
result.push(spokeToken);
|
|
8052
|
+
}
|
|
8053
|
+
}
|
|
8054
|
+
return result;
|
|
8055
|
+
};
|
|
7806
8056
|
var getHubAssetInfo = (chainId, asset) => originalAssetTohubAssetMap.get(chainId)?.get(asset.toLowerCase());
|
|
7807
8057
|
var isValidOriginalAssetAddress = (chainId, asset) => originalAssetTohubAssetMap.get(chainId)?.has(asset.toLowerCase()) ?? false;
|
|
7808
8058
|
var getOriginalAssetAddress = (chainId, hubAsset) => hubAssetToOriginalAssetMap.get(chainId)?.get(hubAsset.toLowerCase());
|
|
8059
|
+
var getOriginalTokenFromOriginalAssetAddress = (chainId, asset) => Object.values(spokeChainConfig[chainId].supportedTokens).find((t) => t.address.toLowerCase() === asset.toLowerCase()) ?? void 0;
|
|
7809
8060
|
var isValidHubAsset = (hubAsset) => supportedHubAssets.has(hubAsset.toLowerCase());
|
|
8061
|
+
var isValidVault = (vault) => supportedSodaAssets.has(vault.toLowerCase());
|
|
7810
8062
|
var isValidChainHubAsset = (chainId, hubAsset) => chainIdToHubAssetsMap.get(chainId)?.has(hubAsset.toLowerCase()) ?? false;
|
|
7811
8063
|
var isValidSpokeChainId = (chainId) => spokeChainIdsSet.has(chainId);
|
|
7812
8064
|
var isValidIntentRelayChainId = (chainId) => Object.values(INTENT_RELAY_CHAIN_IDS).some((id) => id === chainId);
|
|
@@ -7859,12 +8111,13 @@ var InjectiveSpokeProvider = class {
|
|
|
7859
8111
|
);
|
|
7860
8112
|
}
|
|
7861
8113
|
async getBalance(token) {
|
|
7862
|
-
|
|
8114
|
+
const response = await this.chainGrpcWasmApi.fetchSmartContractState(
|
|
7863
8115
|
this.chainConfig.addresses.assetManager,
|
|
7864
8116
|
sdkTs.toBase64({
|
|
7865
8117
|
get_balance: { denom: token }
|
|
7866
8118
|
})
|
|
7867
8119
|
);
|
|
8120
|
+
return sdkTs.fromBase64(response.data);
|
|
7868
8121
|
}
|
|
7869
8122
|
// Execute Methods (requires SigningCosmWasmClient)
|
|
7870
8123
|
/**
|
|
@@ -9315,7 +9568,7 @@ var EvmSpokeService = class _EvmSpokeService {
|
|
|
9315
9568
|
address: token,
|
|
9316
9569
|
abi: erc20Abi,
|
|
9317
9570
|
functionName: "balanceOf",
|
|
9318
|
-
args: [
|
|
9571
|
+
args: [spokeProvider.chainConfig.addresses.assetManager]
|
|
9319
9572
|
});
|
|
9320
9573
|
}
|
|
9321
9574
|
/**
|
|
@@ -9828,18 +10081,14 @@ var SolanaSpokeService = class _SolanaSpokeService {
|
|
|
9828
10081
|
);
|
|
9829
10082
|
}
|
|
9830
10083
|
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"));
|
|
10084
|
+
const assetManagerProgramId = new web3_js.PublicKey(spokeProvider.chainConfig.addresses.assetManager);
|
|
10085
|
+
const solToken = new web3_js.PublicKey(token);
|
|
9837
10086
|
if (isNative(new web3_js.PublicKey(solToken))) {
|
|
9838
|
-
const vaultNative = AssetManagerPDA.vault_native(
|
|
10087
|
+
const vaultNative = AssetManagerPDA.vault_native(assetManagerProgramId);
|
|
9839
10088
|
const balance = await spokeProvider.walletProvider.getBalance(vaultNative.pda.toBase58());
|
|
9840
10089
|
return BigInt(balance);
|
|
9841
10090
|
}
|
|
9842
|
-
const vaultToken = AssetManagerPDA.vault_token(
|
|
10091
|
+
const vaultToken = AssetManagerPDA.vault_token(assetManagerProgramId, new web3_js.PublicKey(solToken));
|
|
9843
10092
|
const tokenAccount = await spokeProvider.walletProvider.getTokenAccountBalance(vaultToken.pda.toBase58());
|
|
9844
10093
|
return BigInt(tokenAccount.value.amount);
|
|
9845
10094
|
}
|
|
@@ -10047,6 +10296,12 @@ var StellarSpokeService = class _StellarSpokeService {
|
|
|
10047
10296
|
raw
|
|
10048
10297
|
);
|
|
10049
10298
|
}
|
|
10299
|
+
/**
|
|
10300
|
+
* Get the balance of the token in the spoke chain asset manager.
|
|
10301
|
+
* @param token - The address of the token to get the balance of.
|
|
10302
|
+
* @param spokeProvider - The spoke provider.
|
|
10303
|
+
* @returns The balance of the token.
|
|
10304
|
+
*/
|
|
10050
10305
|
static async getDeposit(token, spokeProvider) {
|
|
10051
10306
|
return BigInt(await spokeProvider.getBalance(token));
|
|
10052
10307
|
}
|
|
@@ -10163,7 +10418,7 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10163
10418
|
* @returns {PromiseEvmTxReturnType<R>} A promise that resolves to the transaction hash
|
|
10164
10419
|
*/
|
|
10165
10420
|
static async deposit(params, spokeProvider, raw) {
|
|
10166
|
-
|
|
10421
|
+
invariant12__default.default(spokeProvider instanceof SonicSpokeProvider, "[SonicSpokeService] invalid spoke provider");
|
|
10167
10422
|
const userHubAddress = params.to ?? await _SonicSpokeService.getUserRouter(params.from, spokeProvider);
|
|
10168
10423
|
const calls = Array.from(
|
|
10169
10424
|
viem.decodeAbiParameters(
|
|
@@ -10228,11 +10483,11 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10228
10483
|
inputToken = hubProvider.chainConfig.nativeToken;
|
|
10229
10484
|
}
|
|
10230
10485
|
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
10231
|
-
|
|
10486
|
+
invariant12__default.default(
|
|
10232
10487
|
inputToken,
|
|
10233
10488
|
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
10234
10489
|
);
|
|
10235
|
-
|
|
10490
|
+
invariant12__default.default(
|
|
10236
10491
|
outputToken,
|
|
10237
10492
|
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
10238
10493
|
);
|
|
@@ -10295,7 +10550,7 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10295
10550
|
* @returns {PromiseEvmTxReturnType<R>} A promise that resolves to the transaction hash
|
|
10296
10551
|
*/
|
|
10297
10552
|
static async callWallet(payload, spokeProvider, raw) {
|
|
10298
|
-
|
|
10553
|
+
invariant12__default.default(spokeProvider instanceof SonicSpokeProvider, "[SonicSpokeService] invalid spoke provider");
|
|
10299
10554
|
const calls = viem.decodeAbiParameters(
|
|
10300
10555
|
[
|
|
10301
10556
|
{
|
|
@@ -10784,11 +11039,8 @@ var SpokeService = class _SpokeService {
|
|
|
10784
11039
|
*/
|
|
10785
11040
|
static async deposit(params, spokeProvider, hubProvider, raw, skipSimulation = false) {
|
|
10786
11041
|
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
spokeProvider,
|
|
10790
|
-
raw
|
|
10791
|
-
);
|
|
11042
|
+
const _params = params;
|
|
11043
|
+
return SonicSpokeService.deposit(_params, spokeProvider, raw);
|
|
10792
11044
|
}
|
|
10793
11045
|
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
10794
11046
|
await _SpokeService.verifyDepositSimulation(params, spokeProvider, hubProvider, skipSimulation);
|
|
@@ -10813,7 +11065,6 @@ var SpokeService = class _SpokeService {
|
|
|
10813
11065
|
);
|
|
10814
11066
|
}
|
|
10815
11067
|
if (spokeProvider instanceof SuiSpokeProvider) {
|
|
10816
|
-
await _SpokeService.verifyDepositSimulation(params, spokeProvider, hubProvider, skipSimulation);
|
|
10817
11068
|
return SuiSpokeService.deposit(
|
|
10818
11069
|
params,
|
|
10819
11070
|
spokeProvider,
|
|
@@ -10941,6 +11192,20 @@ var SpokeService = class _SpokeService {
|
|
|
10941
11192
|
raw
|
|
10942
11193
|
);
|
|
10943
11194
|
}
|
|
11195
|
+
if (!skipSimulation) {
|
|
11196
|
+
const result = await _SpokeService.simulateRecvMessage(
|
|
11197
|
+
{
|
|
11198
|
+
target: from,
|
|
11199
|
+
srcChainId: getIntentRelayChainId(spokeProvider.chainConfig.chain.id),
|
|
11200
|
+
srcAddress: await spokeProvider.walletProvider.getWalletAddressBytes(),
|
|
11201
|
+
payload
|
|
11202
|
+
},
|
|
11203
|
+
hubProvider
|
|
11204
|
+
);
|
|
11205
|
+
if (!result.success) {
|
|
11206
|
+
throw new Error("Simulation failed", { cause: result });
|
|
11207
|
+
}
|
|
11208
|
+
}
|
|
10944
11209
|
if (isEvmSpokeProvider(spokeProvider)) {
|
|
10945
11210
|
await _SpokeService.verifySimulation(from, payload, spokeProvider, hubProvider, skipSimulation);
|
|
10946
11211
|
return await EvmSpokeService.callWallet(from, payload, spokeProvider, hubProvider);
|
|
@@ -11009,19 +11274,19 @@ async function postRequest(payload, apiUrl) {
|
|
|
11009
11274
|
return response.json();
|
|
11010
11275
|
}
|
|
11011
11276
|
async function submitTransaction(payload, apiUrl) {
|
|
11012
|
-
|
|
11013
|
-
|
|
11277
|
+
invariant12__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11278
|
+
invariant12__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11014
11279
|
return postRequest(payload, apiUrl);
|
|
11015
11280
|
}
|
|
11016
11281
|
async function getTransactionPackets(payload, apiUrl) {
|
|
11017
|
-
|
|
11018
|
-
|
|
11282
|
+
invariant12__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11283
|
+
invariant12__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11019
11284
|
return postRequest(payload, apiUrl);
|
|
11020
11285
|
}
|
|
11021
11286
|
async function getPacket(payload, apiUrl) {
|
|
11022
|
-
|
|
11023
|
-
|
|
11024
|
-
|
|
11287
|
+
invariant12__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11288
|
+
invariant12__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11289
|
+
invariant12__default.default(payload.params.conn_sn.length > 0, "Invalid input parameters. conn_sn empty");
|
|
11025
11290
|
return postRequest(payload, apiUrl);
|
|
11026
11291
|
}
|
|
11027
11292
|
async function waitUntilIntentExecuted(payload) {
|
|
@@ -11152,11 +11417,11 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11152
11417
|
inputToken = hubProvider.chainConfig.wrappedNativeToken;
|
|
11153
11418
|
}
|
|
11154
11419
|
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
11155
|
-
|
|
11420
|
+
invariant12__default.default(
|
|
11156
11421
|
inputToken,
|
|
11157
11422
|
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
11158
11423
|
);
|
|
11159
|
-
|
|
11424
|
+
invariant12__default.default(
|
|
11160
11425
|
outputToken,
|
|
11161
11426
|
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
11162
11427
|
);
|
|
@@ -11188,7 +11453,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11188
11453
|
* @returns A tuple containing [encoded fee data, fee amount]. Fee amount will be 0n if no fee.
|
|
11189
11454
|
*/
|
|
11190
11455
|
static createIntentFeeData(fee, inputAmount) {
|
|
11191
|
-
|
|
11456
|
+
invariant12__default.default(inputAmount > 0n, "Input amount must be greater than 0");
|
|
11192
11457
|
if (!fee) {
|
|
11193
11458
|
return ["0x", 0n];
|
|
11194
11459
|
}
|
|
@@ -11196,7 +11461,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11196
11461
|
if (isPartnerFeeAmount(fee)) {
|
|
11197
11462
|
feeAmount = fee.amount;
|
|
11198
11463
|
} else if (isPartnerFeePercentage(fee)) {
|
|
11199
|
-
|
|
11464
|
+
invariant12__default.default(
|
|
11200
11465
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
11201
11466
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
11202
11467
|
);
|
|
@@ -11323,23 +11588,23 @@ var SolverApiService = class {
|
|
|
11323
11588
|
* }
|
|
11324
11589
|
*/
|
|
11325
11590
|
static async getQuote(payload, config) {
|
|
11326
|
-
|
|
11327
|
-
|
|
11328
|
-
|
|
11329
|
-
|
|
11330
|
-
|
|
11331
|
-
|
|
11591
|
+
invariant12__default.default(payload.token_src.length > 0, "Empty token_src");
|
|
11592
|
+
invariant12__default.default(payload.token_src_blockchain_id.length > 0, "Empty token_src_blockchain_id");
|
|
11593
|
+
invariant12__default.default(payload.token_dst.length > 0, "Empty token_dst");
|
|
11594
|
+
invariant12__default.default(payload.token_dst_blockchain_id.length > 0, "Empty token_dst_blockchain_id");
|
|
11595
|
+
invariant12__default.default(payload.amount > 0n, "amount must be greater than 0");
|
|
11596
|
+
invariant12__default.default(
|
|
11332
11597
|
isValidOriginalAssetAddress(payload.token_src_blockchain_id, payload.token_src),
|
|
11333
11598
|
"unsupported token_src for src chain"
|
|
11334
11599
|
);
|
|
11335
|
-
|
|
11600
|
+
invariant12__default.default(
|
|
11336
11601
|
isValidOriginalAssetAddress(payload.token_dst_blockchain_id, payload.token_dst),
|
|
11337
11602
|
"unsupported token_dst for dst chain"
|
|
11338
11603
|
);
|
|
11339
11604
|
const tokenSrc = getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset;
|
|
11340
11605
|
const tokenDst = getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset;
|
|
11341
|
-
|
|
11342
|
-
|
|
11606
|
+
invariant12__default.default(tokenSrc, "hub asset not found for token_src");
|
|
11607
|
+
invariant12__default.default(tokenDst, "hub asset not found for token_dst");
|
|
11343
11608
|
try {
|
|
11344
11609
|
const response = await fetch(`${config.solverApiEndpoint}/quote`, {
|
|
11345
11610
|
method: "POST",
|
|
@@ -11434,7 +11699,7 @@ var SolverApiService = class {
|
|
|
11434
11699
|
}
|
|
11435
11700
|
}
|
|
11436
11701
|
static async getStatus(request, config) {
|
|
11437
|
-
|
|
11702
|
+
invariant12__default.default(request.intent_tx_hash.length > 0, "Empty intent_tx_hash");
|
|
11438
11703
|
try {
|
|
11439
11704
|
const response = await fetch(`${config.solverApiEndpoint}/status`, {
|
|
11440
11705
|
method: "POST",
|
|
@@ -12066,19 +12331,19 @@ var SolverService = class {
|
|
|
12066
12331
|
fee = this.config.partnerFee,
|
|
12067
12332
|
raw
|
|
12068
12333
|
}) {
|
|
12069
|
-
|
|
12334
|
+
invariant12__default.default(
|
|
12070
12335
|
isValidOriginalAssetAddress(params.srcChain, params.inputToken),
|
|
12071
12336
|
`Unsupported spoke chain token (params.srcChain): ${params.srcChain}, params.inputToken): ${params.inputToken}`
|
|
12072
12337
|
);
|
|
12073
|
-
|
|
12338
|
+
invariant12__default.default(
|
|
12074
12339
|
isValidOriginalAssetAddress(params.dstChain, params.outputToken),
|
|
12075
12340
|
`Unsupported spoke chain token (params.dstChain): ${params.dstChain}, params.outputToken): ${params.outputToken}`
|
|
12076
12341
|
);
|
|
12077
|
-
|
|
12078
|
-
|
|
12342
|
+
invariant12__default.default(isValidSpokeChainId(params.srcChain), `Invalid spoke chain (params.srcChain): ${params.srcChain}`);
|
|
12343
|
+
invariant12__default.default(isValidSpokeChainId(params.dstChain), `Invalid spoke chain (params.dstChain): ${params.dstChain}`);
|
|
12079
12344
|
try {
|
|
12080
12345
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12081
|
-
|
|
12346
|
+
invariant12__default.default(
|
|
12082
12347
|
params.srcAddress.toLowerCase() === walletAddress.toLowerCase(),
|
|
12083
12348
|
"srcAddress must be the same as wallet address"
|
|
12084
12349
|
);
|
|
@@ -12152,8 +12417,8 @@ var SolverService = class {
|
|
|
12152
12417
|
*/
|
|
12153
12418
|
async cancelIntent(intent, spokeProvider, raw) {
|
|
12154
12419
|
try {
|
|
12155
|
-
|
|
12156
|
-
|
|
12420
|
+
invariant12__default.default(isValidIntentRelayChainId(intent.srcChain), `Invalid intent.srcChain: ${intent.srcChain}`);
|
|
12421
|
+
invariant12__default.default(isValidIntentRelayChainId(intent.dstChain), `Invalid intent.dstChain: ${intent.dstChain}`);
|
|
12157
12422
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12158
12423
|
const creatorHubWalletAddress = await deriveUserWalletAddress(spokeProvider, this.hubProvider, walletAddress);
|
|
12159
12424
|
const calls = [];
|
|
@@ -12200,7 +12465,7 @@ var SolverService = class {
|
|
|
12200
12465
|
* @returns {bigint} The deadline for the swap as a sum of hub chain block timestamp and deadline offset
|
|
12201
12466
|
*/
|
|
12202
12467
|
async getSwapDeadline(deadline = DEFAULT_DEADLINE_OFFSET) {
|
|
12203
|
-
|
|
12468
|
+
invariant12__default.default(deadline > 0n, "Deadline must be greater than 0");
|
|
12204
12469
|
const block = await this.hubProvider.publicClient.getBlock({
|
|
12205
12470
|
includeTransactions: false,
|
|
12206
12471
|
blockTag: "latest"
|
|
@@ -12678,7 +12943,7 @@ var IcxMigrationService = class {
|
|
|
12678
12943
|
migrateData(params) {
|
|
12679
12944
|
const calls = [];
|
|
12680
12945
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, params.address);
|
|
12681
|
-
|
|
12946
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${params.address}`);
|
|
12682
12947
|
calls.push(
|
|
12683
12948
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.icxMigration, params.amount)
|
|
12684
12949
|
);
|
|
@@ -12694,7 +12959,7 @@ var IcxMigrationService = class {
|
|
|
12694
12959
|
revertMigration(params) {
|
|
12695
12960
|
const calls = [];
|
|
12696
12961
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, params.wICX);
|
|
12697
|
-
|
|
12962
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${params.wICX}`);
|
|
12698
12963
|
calls.push(
|
|
12699
12964
|
Erc20Service.encodeApprove(
|
|
12700
12965
|
this.hubProvider.chainConfig.addresses.sodaToken,
|
|
@@ -12790,9 +13055,9 @@ var MigrationService = class {
|
|
|
12790
13055
|
async isAllowanceValid(params, action, spokeProvider) {
|
|
12791
13056
|
try {
|
|
12792
13057
|
if (action === "migrate") {
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
13058
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13059
|
+
invariant12__default.default(viem.isAddress(params.to) || isIconAddress(params.to), "To address is required");
|
|
13060
|
+
invariant12__default.default(
|
|
12796
13061
|
isIcxMigrateParams(params) || isBalnMigrateParams(params) || isUnifiedBnUSDMigrateParams(params),
|
|
12797
13062
|
"Invalid params"
|
|
12798
13063
|
);
|
|
@@ -12818,9 +13083,9 @@ var MigrationService = class {
|
|
|
12818
13083
|
};
|
|
12819
13084
|
}
|
|
12820
13085
|
if (action === "revert") {
|
|
12821
|
-
|
|
12822
|
-
|
|
12823
|
-
|
|
13086
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13087
|
+
invariant12__default.default(params.to.length > 0, "To address is required");
|
|
13088
|
+
invariant12__default.default(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12824
13089
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12825
13090
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12826
13091
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -12876,9 +13141,9 @@ var MigrationService = class {
|
|
|
12876
13141
|
async approve(params, action, spokeProvider, raw) {
|
|
12877
13142
|
try {
|
|
12878
13143
|
if (action === "migrate") {
|
|
12879
|
-
|
|
12880
|
-
|
|
12881
|
-
|
|
13144
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13145
|
+
invariant12__default.default(params.to.length > 0, "To address is required");
|
|
13146
|
+
invariant12__default.default(isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12882
13147
|
if (isUnifiedBnUSDMigrateParams(params) && spokeProvider.chainConfig.chain.type === "EVM") {
|
|
12883
13148
|
const evmSpokeProvider = spokeProvider;
|
|
12884
13149
|
const result = await Erc20Service.approve(
|
|
@@ -12899,9 +13164,9 @@ var MigrationService = class {
|
|
|
12899
13164
|
};
|
|
12900
13165
|
}
|
|
12901
13166
|
if (action === "revert") {
|
|
12902
|
-
|
|
12903
|
-
|
|
12904
|
-
|
|
13167
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
13168
|
+
invariant12__default.default(params.to.length > 0, "To address is required");
|
|
13169
|
+
invariant12__default.default(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12905
13170
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12906
13171
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12907
13172
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -13313,13 +13578,13 @@ var MigrationService = class {
|
|
|
13313
13578
|
async createMigratebnUSDIntent(params, spokeProvider, unchecked = false, raw) {
|
|
13314
13579
|
try {
|
|
13315
13580
|
if (!unchecked) {
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
13321
|
-
|
|
13322
|
-
|
|
13581
|
+
invariant12__default.default(isValidSpokeChainId(params.srcChainId), "Invalid spoke source chain ID");
|
|
13582
|
+
invariant12__default.default(isValidSpokeChainId(params.dstChainId), "Invalid spoke destination chain ID");
|
|
13583
|
+
invariant12__default.default(params.srcbnUSD.length > 0, "Legacy bnUSD token address is required");
|
|
13584
|
+
invariant12__default.default(params.dstbnUSD.length > 0, "New bnUSD token address is required");
|
|
13585
|
+
invariant12__default.default(params.amount > 0, "Amount must be greater than 0");
|
|
13586
|
+
invariant12__default.default(params.to.length > 0, "Recipient address is required");
|
|
13587
|
+
invariant12__default.default(
|
|
13323
13588
|
!(isLegacybnUSDToken(params.srcbnUSD) && isLegacybnUSDToken(params.dstbnUSD)),
|
|
13324
13589
|
"srcbnUSD and dstbnUSD cannot both be legacy bnUSD tokens"
|
|
13325
13590
|
);
|
|
@@ -13327,11 +13592,11 @@ var MigrationService = class {
|
|
|
13327
13592
|
let migrationData;
|
|
13328
13593
|
if (isLegacybnUSDToken(params.srcbnUSD)) {
|
|
13329
13594
|
if (!unchecked) {
|
|
13330
|
-
|
|
13595
|
+
invariant12__default.default(
|
|
13331
13596
|
isLegacybnUSDChainId(params.srcChainId),
|
|
13332
13597
|
"srcChainId must be a legacy bnUSD chain (icon, sui, stellar) if srcbnUSD is a legacy bnUSD token"
|
|
13333
13598
|
);
|
|
13334
|
-
|
|
13599
|
+
invariant12__default.default(
|
|
13335
13600
|
isNewbnUSDChainId(params.dstChainId),
|
|
13336
13601
|
"dstChainId must be a new bnUSD chain (all spoke chains besides Icon) if dstbnUSD is a legacy bnUSD token"
|
|
13337
13602
|
);
|
|
@@ -13346,15 +13611,15 @@ var MigrationService = class {
|
|
|
13346
13611
|
});
|
|
13347
13612
|
} else if (isLegacybnUSDToken(params.dstbnUSD)) {
|
|
13348
13613
|
if (!unchecked) {
|
|
13349
|
-
|
|
13614
|
+
invariant12__default.default(
|
|
13350
13615
|
isLegacybnUSDChainId(params.dstChainId),
|
|
13351
13616
|
"dstChainId must be a legacy bnUSD chain (sui, stellar, icon) if dstbnUSD is a legacy bnUSD token"
|
|
13352
13617
|
);
|
|
13353
|
-
|
|
13618
|
+
invariant12__default.default(
|
|
13354
13619
|
isNewbnUSDToken(params.srcbnUSD),
|
|
13355
13620
|
"srcbnUSD must be a new bnUSD token if dstbnUSD is a legacy bnUSD token"
|
|
13356
13621
|
);
|
|
13357
|
-
|
|
13622
|
+
invariant12__default.default(
|
|
13358
13623
|
isNewbnUSDChainId(params.srcChainId),
|
|
13359
13624
|
"srcChainId must be a new bnUSD chain (all spoke chains besides Icon) if srcbnUSD is a new bnUSD token"
|
|
13360
13625
|
);
|
|
@@ -13427,13 +13692,13 @@ var MigrationService = class {
|
|
|
13427
13692
|
*/
|
|
13428
13693
|
async createMigrateIcxToSodaIntent(params, spokeProvider, raw) {
|
|
13429
13694
|
try {
|
|
13430
|
-
|
|
13431
|
-
|
|
13432
|
-
|
|
13695
|
+
invariant12__default.default(params.amount > 0, "Amount must be greater than 0");
|
|
13696
|
+
invariant12__default.default(viem.isAddress(params.to), "Recipient address is required");
|
|
13697
|
+
invariant12__default.default(
|
|
13433
13698
|
params.address.toLowerCase() === spokeProvider.chainConfig.addresses.wICX.toLowerCase() || params.address.toLowerCase() === spokeProvider.chainConfig.nativeToken.toLowerCase(),
|
|
13434
13699
|
"Token must be wICX or native ICX token"
|
|
13435
13700
|
);
|
|
13436
|
-
|
|
13701
|
+
invariant12__default.default(spokeProvider instanceof IconSpokeProvider, "Spoke provider must be an instance of IconSpokeProvider");
|
|
13437
13702
|
const availableAmount = await this.icxMigration.getAvailableAmount();
|
|
13438
13703
|
if (availableAmount < params.amount) {
|
|
13439
13704
|
throw new Error(
|
|
@@ -13545,7 +13810,7 @@ var BnUSDMigrationService = class {
|
|
|
13545
13810
|
migrateData(params) {
|
|
13546
13811
|
const calls = [];
|
|
13547
13812
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.legacybnUSD);
|
|
13548
|
-
|
|
13813
|
+
invariant12__default.default(assetConfig, `hub asset not found for legacy bnUSD token: ${params.legacybnUSD}`);
|
|
13549
13814
|
const bnUSDVault = getMoneyMarketConfig(types.SONIC_MAINNET_CHAIN_ID).bnUSDVault;
|
|
13550
13815
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, assetConfig.vault, params.amount));
|
|
13551
13816
|
calls.push(EvmVaultTokenService.encodeDeposit(assetConfig.vault, assetConfig.asset, params.amount));
|
|
@@ -13557,7 +13822,7 @@ var BnUSDMigrationService = class {
|
|
|
13557
13822
|
return encodeContractCalls(calls);
|
|
13558
13823
|
}
|
|
13559
13824
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.newbnUSD);
|
|
13560
|
-
|
|
13825
|
+
invariant12__default.default(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13561
13826
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.asset, translatedAmount));
|
|
13562
13827
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
13563
13828
|
dstAssetConfig.decimal,
|
|
@@ -13590,14 +13855,14 @@ var BnUSDMigrationService = class {
|
|
|
13590
13855
|
let decimals = 18;
|
|
13591
13856
|
if (params.newbnUSD.toLowerCase() !== bnUSDVault.toLowerCase()) {
|
|
13592
13857
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.newbnUSD);
|
|
13593
|
-
|
|
13858
|
+
invariant12__default.default(assetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13594
13859
|
decimals = assetConfig.decimal;
|
|
13595
13860
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, bnUSDVault, params.amount));
|
|
13596
13861
|
calls.push(EvmVaultTokenService.encodeDeposit(bnUSDVault, assetConfig.asset, params.amount));
|
|
13597
13862
|
}
|
|
13598
13863
|
const translatedAmount = EvmVaultTokenService.translateIncomingDecimals(decimals, params.amount);
|
|
13599
13864
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.legacybnUSD);
|
|
13600
|
-
|
|
13865
|
+
invariant12__default.default(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.legacybnUSD}`);
|
|
13601
13866
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.vault, translatedAmount));
|
|
13602
13867
|
calls.push(EvmVaultTokenService.encodeWithdraw(dstAssetConfig.vault, dstAssetConfig.asset, translatedAmount));
|
|
13603
13868
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
@@ -13680,7 +13945,7 @@ var BalnSwapService = class {
|
|
|
13680
13945
|
*/
|
|
13681
13946
|
async swapData(balnToken, params) {
|
|
13682
13947
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, balnToken);
|
|
13683
|
-
|
|
13948
|
+
invariant12__default.default(assetConfig, `hub asset not found for baln token: ${balnToken}`);
|
|
13684
13949
|
const calls = [];
|
|
13685
13950
|
calls.push(
|
|
13686
13951
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.balnSwap, params.amount)
|
|
@@ -13858,6 +14123,497 @@ var BalnSwapService = class {
|
|
|
13858
14123
|
return spokeProvider.walletProvider.sendTransaction(tx);
|
|
13859
14124
|
}
|
|
13860
14125
|
};
|
|
14126
|
+
var BridgeService = class {
|
|
14127
|
+
hubProvider;
|
|
14128
|
+
relayerApiEndpoint;
|
|
14129
|
+
config;
|
|
14130
|
+
constructor(hubProvider, relayerApiEndpoint, config = void 0) {
|
|
14131
|
+
this.config = config ? config : { partnerFee: void 0 };
|
|
14132
|
+
this.hubProvider = hubProvider;
|
|
14133
|
+
this.relayerApiEndpoint = relayerApiEndpoint;
|
|
14134
|
+
}
|
|
14135
|
+
/**
|
|
14136
|
+
* Get the fee for a given input amount
|
|
14137
|
+
* @param {bigint} inputAmount - The amount of input tokens
|
|
14138
|
+
* @returns {Promise<bigint>} The fee amount (denominated in input tokens)
|
|
14139
|
+
*
|
|
14140
|
+
* @example
|
|
14141
|
+
* const fee: bigint = await sodax.bridge.getFee(1000000000000000n);
|
|
14142
|
+
* console.log('Fee:', fee);
|
|
14143
|
+
*/
|
|
14144
|
+
getFee(inputAmount) {
|
|
14145
|
+
if (!this.config.partnerFee) {
|
|
14146
|
+
return 0n;
|
|
14147
|
+
}
|
|
14148
|
+
return calculateFeeAmount(inputAmount, this.config.partnerFee);
|
|
14149
|
+
}
|
|
14150
|
+
/**
|
|
14151
|
+
* Check if allowance is valid for the bridge transaction
|
|
14152
|
+
* @param params - The bridge parameters
|
|
14153
|
+
* @param spokeProvider - The spoke provider
|
|
14154
|
+
* @returns {Promise<Result<boolean, BridgeError<'ALLOWANCE_CHECK_FAILED'>>>}
|
|
14155
|
+
*/
|
|
14156
|
+
async isAllowanceValid({
|
|
14157
|
+
params,
|
|
14158
|
+
spokeProvider
|
|
14159
|
+
}) {
|
|
14160
|
+
try {
|
|
14161
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
14162
|
+
invariant12__default.default(params.srcAsset.length > 0, "Source asset is required");
|
|
14163
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14164
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
14165
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for EVM chain");
|
|
14166
|
+
const allowanceResult = await Erc20Service.isAllowanceValid(
|
|
14167
|
+
params.srcAsset,
|
|
14168
|
+
params.amount,
|
|
14169
|
+
walletAddress,
|
|
14170
|
+
spokeProvider.chainConfig.addresses.assetManager,
|
|
14171
|
+
spokeProvider
|
|
14172
|
+
);
|
|
14173
|
+
if (!allowanceResult.ok) {
|
|
14174
|
+
return {
|
|
14175
|
+
ok: false,
|
|
14176
|
+
error: {
|
|
14177
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14178
|
+
error: allowanceResult.error
|
|
14179
|
+
}
|
|
14180
|
+
};
|
|
14181
|
+
}
|
|
14182
|
+
return {
|
|
14183
|
+
ok: true,
|
|
14184
|
+
value: allowanceResult.value
|
|
14185
|
+
};
|
|
14186
|
+
}
|
|
14187
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
14188
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for Sonic chain");
|
|
14189
|
+
const userRouter = await SonicSpokeService.getUserRouter(walletAddress, spokeProvider);
|
|
14190
|
+
const allowanceResult = await Erc20Service.isAllowanceValid(
|
|
14191
|
+
params.srcAsset,
|
|
14192
|
+
params.amount,
|
|
14193
|
+
walletAddress,
|
|
14194
|
+
userRouter,
|
|
14195
|
+
spokeProvider
|
|
14196
|
+
);
|
|
14197
|
+
if (!allowanceResult.ok) {
|
|
14198
|
+
return {
|
|
14199
|
+
ok: false,
|
|
14200
|
+
error: {
|
|
14201
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14202
|
+
error: allowanceResult.error
|
|
14203
|
+
}
|
|
14204
|
+
};
|
|
14205
|
+
}
|
|
14206
|
+
return {
|
|
14207
|
+
ok: true,
|
|
14208
|
+
value: allowanceResult.value
|
|
14209
|
+
};
|
|
14210
|
+
}
|
|
14211
|
+
return {
|
|
14212
|
+
ok: true,
|
|
14213
|
+
value: true
|
|
14214
|
+
};
|
|
14215
|
+
} catch (error) {
|
|
14216
|
+
return {
|
|
14217
|
+
ok: false,
|
|
14218
|
+
error: {
|
|
14219
|
+
code: "ALLOWANCE_CHECK_FAILED",
|
|
14220
|
+
error
|
|
14221
|
+
}
|
|
14222
|
+
};
|
|
14223
|
+
}
|
|
14224
|
+
}
|
|
14225
|
+
/**
|
|
14226
|
+
* Approve token spending for the bridge transaction
|
|
14227
|
+
* @param params - The bridge parameters
|
|
14228
|
+
* @param spokeProvider - The spoke provider
|
|
14229
|
+
* @param raw - Whether to return raw transaction data
|
|
14230
|
+
* @returns Promise<Result<TxReturnType<S, R>, BridgeError<'APPROVAL_FAILED'>>>
|
|
14231
|
+
*/
|
|
14232
|
+
async approve({
|
|
14233
|
+
params,
|
|
14234
|
+
spokeProvider,
|
|
14235
|
+
raw
|
|
14236
|
+
}) {
|
|
14237
|
+
try {
|
|
14238
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
14239
|
+
invariant12__default.default(params.srcAsset.length > 0, "Source asset is required");
|
|
14240
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14241
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
14242
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for EVM chain");
|
|
14243
|
+
const result = await Erc20Service.approve(
|
|
14244
|
+
params.srcAsset,
|
|
14245
|
+
params.amount,
|
|
14246
|
+
spokeProvider.chainConfig.addresses.assetManager,
|
|
14247
|
+
spokeProvider,
|
|
14248
|
+
raw
|
|
14249
|
+
);
|
|
14250
|
+
return {
|
|
14251
|
+
ok: true,
|
|
14252
|
+
value: result
|
|
14253
|
+
};
|
|
14254
|
+
}
|
|
14255
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
14256
|
+
invariant12__default.default(viem.isAddress(params.srcAsset), "Invalid source asset address for Sonic chain");
|
|
14257
|
+
const userRouter = await SonicSpokeService.getUserRouter(
|
|
14258
|
+
walletAddress,
|
|
14259
|
+
spokeProvider
|
|
14260
|
+
);
|
|
14261
|
+
const result = await Erc20Service.approve(params.srcAsset, params.amount, userRouter, spokeProvider, raw);
|
|
14262
|
+
return {
|
|
14263
|
+
ok: true,
|
|
14264
|
+
value: result
|
|
14265
|
+
};
|
|
14266
|
+
}
|
|
14267
|
+
return {
|
|
14268
|
+
ok: false,
|
|
14269
|
+
error: {
|
|
14270
|
+
code: "APPROVAL_FAILED",
|
|
14271
|
+
error: new Error("Approval only supported for EVM spoke chains")
|
|
14272
|
+
}
|
|
14273
|
+
};
|
|
14274
|
+
} catch (error) {
|
|
14275
|
+
console.error(error);
|
|
14276
|
+
return {
|
|
14277
|
+
ok: false,
|
|
14278
|
+
error: {
|
|
14279
|
+
code: "APPROVAL_FAILED",
|
|
14280
|
+
error
|
|
14281
|
+
}
|
|
14282
|
+
};
|
|
14283
|
+
}
|
|
14284
|
+
}
|
|
14285
|
+
/**
|
|
14286
|
+
* Execute a bridge transaction to transfer tokens from one chain to another
|
|
14287
|
+
* @param params - The bridge parameters including source/destination chains, assets, and recipient
|
|
14288
|
+
* @param spokeProvider - The spoke provider for the source chain
|
|
14289
|
+
* @param timeout - The timeout in milliseconds for the transaction. Default is 60 seconds.
|
|
14290
|
+
* @returns {Promise<Result<[SpokeTxHash, HubTxHash], BridgeError<BridgeErrorCode>>>} - Returns the transaction hashes for both spoke and hub chains or error
|
|
14291
|
+
*
|
|
14292
|
+
* @example
|
|
14293
|
+
* const result = await sodax.bridge.bridge(
|
|
14294
|
+
* {
|
|
14295
|
+
* srcChainId: '0x2105.base',
|
|
14296
|
+
* srcAsset: '0x...', // Address of the source token
|
|
14297
|
+
* amount: 1000n, // Amount to bridge (in token decimals)
|
|
14298
|
+
* dstChainId: '0x89.polygon',
|
|
14299
|
+
* dstAsset: '0x...', // Address of the destination token
|
|
14300
|
+
* recipient: '0x...', // Recipient address on destination chain
|
|
14301
|
+
* partnerFee: { address: '0x...', percentage: 0.1 } // Optional partner fee. Partner fees and denominated in vault token decimals (18)
|
|
14302
|
+
* },
|
|
14303
|
+
* spokeProvider,
|
|
14304
|
+
* 30000 // Optional timeout in milliseconds (default: 60000, i.e. 60 seconds)
|
|
14305
|
+
* );
|
|
14306
|
+
*
|
|
14307
|
+
* if (!result.ok) {
|
|
14308
|
+
* // Handle error
|
|
14309
|
+
* }
|
|
14310
|
+
*
|
|
14311
|
+
* const [
|
|
14312
|
+
* spokeTxHash, // transaction hash on the source chain
|
|
14313
|
+
* hubTxHash, // transaction hash on the hub chain
|
|
14314
|
+
* ] = result.value;
|
|
14315
|
+
* console.log('Bridge transaction hashes:', { spokeTxHash, hubTxHash });
|
|
14316
|
+
*/
|
|
14317
|
+
async bridge({
|
|
14318
|
+
params,
|
|
14319
|
+
spokeProvider,
|
|
14320
|
+
fee = this.config.partnerFee,
|
|
14321
|
+
timeout = DEFAULT_RELAY_TX_TIMEOUT
|
|
14322
|
+
}) {
|
|
14323
|
+
try {
|
|
14324
|
+
const txResult = await this.createBridgeIntent({ params, spokeProvider, fee, raw: false });
|
|
14325
|
+
if (!txResult.ok) {
|
|
14326
|
+
return txResult;
|
|
14327
|
+
}
|
|
14328
|
+
const packetResult = await relayTxAndWaitPacket(
|
|
14329
|
+
txResult.value,
|
|
14330
|
+
spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
|
|
14331
|
+
spokeProvider,
|
|
14332
|
+
this.relayerApiEndpoint,
|
|
14333
|
+
timeout
|
|
14334
|
+
);
|
|
14335
|
+
if (!packetResult.ok) {
|
|
14336
|
+
return {
|
|
14337
|
+
ok: false,
|
|
14338
|
+
error: {
|
|
14339
|
+
code: packetResult.error.code,
|
|
14340
|
+
error: packetResult.error
|
|
14341
|
+
}
|
|
14342
|
+
};
|
|
14343
|
+
}
|
|
14344
|
+
return { ok: true, value: [txResult.value, packetResult.value.dst_tx_hash] };
|
|
14345
|
+
} catch (error) {
|
|
14346
|
+
return {
|
|
14347
|
+
ok: false,
|
|
14348
|
+
error: {
|
|
14349
|
+
code: "BRIDGE_FAILED",
|
|
14350
|
+
error
|
|
14351
|
+
}
|
|
14352
|
+
};
|
|
14353
|
+
}
|
|
14354
|
+
}
|
|
14355
|
+
/**
|
|
14356
|
+
* Create bridge intent only (without relaying to hub)
|
|
14357
|
+
* NOTE: This method only executes the transaction on the spoke chain and creates the bridge intent
|
|
14358
|
+
* In order to successfully bridge tokens, you need to:
|
|
14359
|
+
* 1. Check if the allowance is sufficient using isAllowanceValid
|
|
14360
|
+
* 2. Approve the appropriate contract to spend the tokens using approve
|
|
14361
|
+
* 3. Create the bridge intent using this method
|
|
14362
|
+
* 4. Relay the transaction to the hub and await completion using the bridge method
|
|
14363
|
+
*
|
|
14364
|
+
* @param params - The bridge parameters including source/destination chains, assets, and recipient
|
|
14365
|
+
* @param spokeProvider - The spoke provider for the source chain
|
|
14366
|
+
* @param raw - Whether to return the raw transaction data
|
|
14367
|
+
* @returns {Promise<Result<TxReturnType<S, R>, BridgeError<BridgeErrorCode>>>} - Returns the transaction result
|
|
14368
|
+
*
|
|
14369
|
+
* @example
|
|
14370
|
+
* const bridgeService = new BridgeService(hubProvider, relayerApiEndpoint);
|
|
14371
|
+
* const result = await sodax.bridge.createBridgeIntent(
|
|
14372
|
+
* {
|
|
14373
|
+
* srcChainId: 'ethereum',
|
|
14374
|
+
* srcAsset: "0x123...", // source token address
|
|
14375
|
+
* amount: 1000000000000000000n, // 1 token in wei
|
|
14376
|
+
* dstChainId: 'polygon',
|
|
14377
|
+
* dstAsset: "0x456...", // destination token address
|
|
14378
|
+
* recipient: "0x789..." // recipient address
|
|
14379
|
+
* },
|
|
14380
|
+
* spokeProvider,
|
|
14381
|
+
* raw // Optional: true = return the raw transaction data, false = execute and return the transaction hash (default: false)
|
|
14382
|
+
* );
|
|
14383
|
+
*
|
|
14384
|
+
* if (result.ok) {
|
|
14385
|
+
* const txHash = result.value;
|
|
14386
|
+
* console.log('Bridge intent transaction hash:', txHash);
|
|
14387
|
+
* } else {
|
|
14388
|
+
* console.error('Bridge intent creation failed:', result.error);
|
|
14389
|
+
* }
|
|
14390
|
+
*/
|
|
14391
|
+
async createBridgeIntent({
|
|
14392
|
+
params,
|
|
14393
|
+
spokeProvider,
|
|
14394
|
+
fee = this.config.partnerFee,
|
|
14395
|
+
raw
|
|
14396
|
+
}) {
|
|
14397
|
+
try {
|
|
14398
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
14399
|
+
const srcAssetInfo = getHubAssetInfo(params.srcChainId, params.srcAsset);
|
|
14400
|
+
const dstAssetInfo = getHubAssetInfo(params.dstChainId, params.dstAsset);
|
|
14401
|
+
invariant12__default.default(srcAssetInfo, `Unsupported spoke chain (${params.srcChainId}) token: ${params.srcAsset}`);
|
|
14402
|
+
invariant12__default.default(dstAssetInfo, `Unsupported spoke chain (${params.dstChainId}) token: ${params.dstAsset}`);
|
|
14403
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
14404
|
+
const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
|
|
14405
|
+
walletAddress,
|
|
14406
|
+
spokeProvider,
|
|
14407
|
+
this.hubProvider
|
|
14408
|
+
);
|
|
14409
|
+
const data = this.buildBridgeData(params, srcAssetInfo, dstAssetInfo, fee);
|
|
14410
|
+
const txResult = await SpokeService.deposit(
|
|
14411
|
+
{
|
|
14412
|
+
from: walletAddress,
|
|
14413
|
+
to: hubWallet,
|
|
14414
|
+
token: params.srcAsset,
|
|
14415
|
+
amount: params.amount,
|
|
14416
|
+
data
|
|
14417
|
+
},
|
|
14418
|
+
spokeProvider,
|
|
14419
|
+
this.hubProvider,
|
|
14420
|
+
raw
|
|
14421
|
+
);
|
|
14422
|
+
return {
|
|
14423
|
+
ok: true,
|
|
14424
|
+
value: txResult,
|
|
14425
|
+
data: {
|
|
14426
|
+
address: hubWallet,
|
|
14427
|
+
payload: data
|
|
14428
|
+
}
|
|
14429
|
+
};
|
|
14430
|
+
} catch (error) {
|
|
14431
|
+
console.error(error);
|
|
14432
|
+
return {
|
|
14433
|
+
ok: false,
|
|
14434
|
+
error: {
|
|
14435
|
+
code: "CREATE_BRIDGE_INTENT_FAILED",
|
|
14436
|
+
error
|
|
14437
|
+
}
|
|
14438
|
+
};
|
|
14439
|
+
}
|
|
14440
|
+
}
|
|
14441
|
+
/**
|
|
14442
|
+
* Build the bridge transaction data for executing the bridge operation on the hub
|
|
14443
|
+
* @param params - The create bridge intent parameters
|
|
14444
|
+
* @param srcAssetInfo - The source asset information
|
|
14445
|
+
* @param dstAssetInfo - The destination asset information
|
|
14446
|
+
* @returns Hex - The encoded contract calls for the bridge operation
|
|
14447
|
+
*/
|
|
14448
|
+
buildBridgeData(params, srcAssetInfo, dstAssetInfo, partnerFee) {
|
|
14449
|
+
const calls = [];
|
|
14450
|
+
let translatedAmount = params.amount;
|
|
14451
|
+
let srcVault = params.srcAsset;
|
|
14452
|
+
if (!isValidVault(srcAssetInfo.asset)) {
|
|
14453
|
+
calls.push(Erc20Service.encodeApprove(srcAssetInfo.asset, srcAssetInfo.vault, params.amount));
|
|
14454
|
+
calls.push(EvmVaultTokenService.encodeDeposit(srcAssetInfo.vault, srcAssetInfo.asset, params.amount));
|
|
14455
|
+
translatedAmount = EvmVaultTokenService.translateIncomingDecimals(srcAssetInfo.decimal, params.amount);
|
|
14456
|
+
srcVault = srcAssetInfo.vault;
|
|
14457
|
+
}
|
|
14458
|
+
const feeAmount = calculateFeeAmount(translatedAmount, partnerFee);
|
|
14459
|
+
if (partnerFee && feeAmount > 0n) {
|
|
14460
|
+
calls.push(Erc20Service.encodeTransfer(srcVault, partnerFee.address, feeAmount));
|
|
14461
|
+
}
|
|
14462
|
+
const withdrawAmount = translatedAmount - feeAmount;
|
|
14463
|
+
let translatedWithdrawAmount = withdrawAmount;
|
|
14464
|
+
if (!isValidVault(dstAssetInfo.asset)) {
|
|
14465
|
+
calls.push(EvmVaultTokenService.encodeWithdraw(dstAssetInfo.vault, dstAssetInfo.asset, withdrawAmount));
|
|
14466
|
+
translatedWithdrawAmount = EvmVaultTokenService.translateOutgoingDecimals(dstAssetInfo.decimal, withdrawAmount);
|
|
14467
|
+
}
|
|
14468
|
+
const encodedRecipientAddress = encodeAddress(params.dstChainId, params.recipient);
|
|
14469
|
+
if (params.dstChainId === this.hubProvider.chainConfig.chain.id) {
|
|
14470
|
+
calls.push(Erc20Service.encodeTransfer(dstAssetInfo.asset, encodedRecipientAddress, translatedWithdrawAmount));
|
|
14471
|
+
} else {
|
|
14472
|
+
invariant12__default.default(dstAssetInfo, `Unsupported hub chain (${params.dstChainId}) token: ${params.dstAsset}`);
|
|
14473
|
+
calls.push(
|
|
14474
|
+
EvmAssetManagerService.encodeTransfer(
|
|
14475
|
+
dstAssetInfo.asset,
|
|
14476
|
+
encodedRecipientAddress,
|
|
14477
|
+
translatedWithdrawAmount,
|
|
14478
|
+
this.hubProvider.chainConfig.addresses.assetManager
|
|
14479
|
+
)
|
|
14480
|
+
);
|
|
14481
|
+
}
|
|
14482
|
+
return encodeContractCalls(calls);
|
|
14483
|
+
}
|
|
14484
|
+
/**
|
|
14485
|
+
* Retrieves the deposited token balance held by the asset manager on a spoke chain.
|
|
14486
|
+
* This balance represents the available liquidity for bridging operations and is used to verify
|
|
14487
|
+
* that the target chain has sufficient funds to complete a bridge transaction.
|
|
14488
|
+
*
|
|
14489
|
+
* @param spokeProvider - The spoke provider instance
|
|
14490
|
+
* @param token - The token address to query the balance for
|
|
14491
|
+
* @returns {Promise<bigint>} - The token balance as a bigint value
|
|
14492
|
+
*/
|
|
14493
|
+
async getBridgeableAmount(from, to) {
|
|
14494
|
+
try {
|
|
14495
|
+
const fromHubAsset = getHubAssetInfo(from.xChainId, from.address);
|
|
14496
|
+
const toHubAsset = getHubAssetInfo(to.xChainId, to.address);
|
|
14497
|
+
invariant12__default.default(fromHubAsset, `Hub asset not found for token ${from.address} on chain ${from.xChainId}`);
|
|
14498
|
+
invariant12__default.default(toHubAsset, `Hub asset not found for token ${to.address} on chain ${to.xChainId}`);
|
|
14499
|
+
const [depositTokenInfo, reserves] = await Promise.all([
|
|
14500
|
+
EvmVaultTokenService.getTokenInfo(fromHubAsset.vault, fromHubAsset.asset, this.hubProvider.publicClient),
|
|
14501
|
+
EvmVaultTokenService.getVaultReserves(toHubAsset.vault, this.hubProvider.publicClient)
|
|
14502
|
+
]);
|
|
14503
|
+
if (!isValidVault(fromHubAsset.asset) && isValidVault(toHubAsset.asset)) {
|
|
14504
|
+
const fromTokenIndex2 = reserves.tokens.findIndex((t) => t.toLowerCase() === fromHubAsset.asset.toLowerCase());
|
|
14505
|
+
invariant12__default.default(
|
|
14506
|
+
fromTokenIndex2 !== -1,
|
|
14507
|
+
`Token ${fromHubAsset.asset} not found in the vault reserves for chain ${from.xChainId}`
|
|
14508
|
+
);
|
|
14509
|
+
const fromTokenDepositedAmount2 = reserves.balances[fromTokenIndex2] ?? 0n;
|
|
14510
|
+
const availableDeposit2 = depositTokenInfo.maxDeposit - fromTokenDepositedAmount2;
|
|
14511
|
+
return {
|
|
14512
|
+
ok: true,
|
|
14513
|
+
value: availableDeposit2
|
|
14514
|
+
};
|
|
14515
|
+
}
|
|
14516
|
+
if (isValidVault(fromHubAsset.asset)) {
|
|
14517
|
+
const tokenIndex2 = reserves.tokens.findIndex((t) => t.toLowerCase() === toHubAsset.asset.toLowerCase());
|
|
14518
|
+
invariant12__default.default(
|
|
14519
|
+
tokenIndex2 !== -1,
|
|
14520
|
+
`Token ${toHubAsset.asset} not found in the vault reserves for chain ${to.xChainId}`
|
|
14521
|
+
);
|
|
14522
|
+
const assetManagerBalance2 = reserves.balances[tokenIndex2] ?? 0n;
|
|
14523
|
+
return {
|
|
14524
|
+
ok: true,
|
|
14525
|
+
value: assetManagerBalance2
|
|
14526
|
+
};
|
|
14527
|
+
}
|
|
14528
|
+
const fromTokenIndex = reserves.tokens.findIndex((t) => t.toLowerCase() === fromHubAsset.asset.toLowerCase());
|
|
14529
|
+
invariant12__default.default(
|
|
14530
|
+
fromTokenIndex !== -1,
|
|
14531
|
+
`Token ${fromHubAsset.asset} not found in the vault reserves for chain ${from.xChainId}`
|
|
14532
|
+
);
|
|
14533
|
+
const fromTokenDepositedAmount = reserves.balances[fromTokenIndex] ?? 0n;
|
|
14534
|
+
const availableDeposit = depositTokenInfo.maxDeposit - fromTokenDepositedAmount;
|
|
14535
|
+
const tokenIndex = reserves.tokens.findIndex((t) => t.toLowerCase() === toHubAsset.asset.toLowerCase());
|
|
14536
|
+
invariant12__default.default(
|
|
14537
|
+
tokenIndex !== -1,
|
|
14538
|
+
`Token ${toHubAsset.asset} not found in the vault reserves for chain ${to.xChainId}`
|
|
14539
|
+
);
|
|
14540
|
+
const assetManagerBalance = reserves.balances[tokenIndex] ?? 0n;
|
|
14541
|
+
return {
|
|
14542
|
+
ok: true,
|
|
14543
|
+
value: availableDeposit < assetManagerBalance ? availableDeposit : assetManagerBalance
|
|
14544
|
+
};
|
|
14545
|
+
} catch (error) {
|
|
14546
|
+
console.error(error);
|
|
14547
|
+
return {
|
|
14548
|
+
ok: false,
|
|
14549
|
+
error
|
|
14550
|
+
};
|
|
14551
|
+
}
|
|
14552
|
+
}
|
|
14553
|
+
/**
|
|
14554
|
+
* Check if two assets on different chains are bridgeable
|
|
14555
|
+
* Two assets are bridgeable if they share the same vault on the hub chain
|
|
14556
|
+
* @param from - The source X token
|
|
14557
|
+
* @param to - The destination X token
|
|
14558
|
+
* @param unchecked - Whether to skip the chain ID validation
|
|
14559
|
+
* @returns boolean - true if assets are bridgeable, false otherwise
|
|
14560
|
+
*/
|
|
14561
|
+
isBridgeable({
|
|
14562
|
+
from,
|
|
14563
|
+
to,
|
|
14564
|
+
unchecked = false
|
|
14565
|
+
}) {
|
|
14566
|
+
try {
|
|
14567
|
+
if (!unchecked) {
|
|
14568
|
+
invariant12__default.default(isValidSpokeChainId(from.xChainId), `Invalid spoke chain (${from.xChainId})`);
|
|
14569
|
+
invariant12__default.default(isValidSpokeChainId(to.xChainId), `Invalid spoke chain (${to.xChainId})`);
|
|
14570
|
+
}
|
|
14571
|
+
const srcAssetInfo = getHubAssetInfo(from.xChainId, from.address);
|
|
14572
|
+
const dstAssetInfo = getHubAssetInfo(to.xChainId, to.address);
|
|
14573
|
+
invariant12__default.default(srcAssetInfo, `Hub asset not found for token ${from.address} on chain ${from.xChainId}`);
|
|
14574
|
+
invariant12__default.default(dstAssetInfo, `Hub asset not found for token ${to.address} on chain ${to.xChainId}`);
|
|
14575
|
+
return srcAssetInfo.vault.toLowerCase() === dstAssetInfo.vault.toLowerCase();
|
|
14576
|
+
} catch (error) {
|
|
14577
|
+
console.error(error);
|
|
14578
|
+
return false;
|
|
14579
|
+
}
|
|
14580
|
+
}
|
|
14581
|
+
/**
|
|
14582
|
+
* Get all bridgeable tokens from a source token to a destination chain
|
|
14583
|
+
* @param from - The source chain ID
|
|
14584
|
+
* @param to - The destination chain ID
|
|
14585
|
+
* @param token - The source token address
|
|
14586
|
+
* @returns XToken[] - Array of bridgeable tokens on the destination chain
|
|
14587
|
+
*/
|
|
14588
|
+
getBridgeableTokens(from, to, token) {
|
|
14589
|
+
try {
|
|
14590
|
+
const srcAssetInfo = getHubAssetInfo(from, token);
|
|
14591
|
+
invariant12__default.default(srcAssetInfo, `Hub asset not found for token ${token} on chain ${from}`);
|
|
14592
|
+
return {
|
|
14593
|
+
ok: true,
|
|
14594
|
+
value: this.filterTokensWithSameVault(spokeChainConfig[to].supportedTokens, to, srcAssetInfo)
|
|
14595
|
+
};
|
|
14596
|
+
} catch (error) {
|
|
14597
|
+
return {
|
|
14598
|
+
ok: false,
|
|
14599
|
+
error
|
|
14600
|
+
};
|
|
14601
|
+
}
|
|
14602
|
+
}
|
|
14603
|
+
filterTokensWithSameVault(tokens, to, srcAssetInfo) {
|
|
14604
|
+
const bridgeableTokens = [];
|
|
14605
|
+
for (const token of Object.values(tokens)) {
|
|
14606
|
+
const dstAssetInfo = getHubAssetInfo(to, token.address);
|
|
14607
|
+
if (dstAssetInfo && srcAssetInfo && dstAssetInfo.vault.toLowerCase() === srcAssetInfo.vault.toLowerCase()) {
|
|
14608
|
+
bridgeableTokens.push({
|
|
14609
|
+
...token,
|
|
14610
|
+
xChainId: to
|
|
14611
|
+
});
|
|
14612
|
+
}
|
|
14613
|
+
}
|
|
14614
|
+
return bridgeableTokens;
|
|
14615
|
+
}
|
|
14616
|
+
};
|
|
13861
14617
|
|
|
13862
14618
|
// src/entities/Sodax.ts
|
|
13863
14619
|
var Sodax = class {
|
|
@@ -13868,6 +14624,8 @@ var Sodax = class {
|
|
|
13868
14624
|
// Money Market service enabling cross-chain lending and borrowing
|
|
13869
14625
|
migration;
|
|
13870
14626
|
// ICX migration service enabling ICX migration to SODA
|
|
14627
|
+
bridge;
|
|
14628
|
+
// Bridge service enabling cross-chain transfers
|
|
13871
14629
|
hubProvider;
|
|
13872
14630
|
// hub provider for the hub chain (e.g. Sonic mainnet)
|
|
13873
14631
|
relayerApiEndpoint;
|
|
@@ -13879,6 +14637,7 @@ var Sodax = class {
|
|
|
13879
14637
|
this.solver = config && config.solver ? new SolverService(config.solver, this.hubProvider, this.relayerApiEndpoint) : new SolverService(void 0, this.hubProvider, this.relayerApiEndpoint);
|
|
13880
14638
|
this.moneyMarket = config && config.moneyMarket ? new MoneyMarketService(config.moneyMarket, this.hubProvider, this.relayerApiEndpoint) : new MoneyMarketService(void 0, this.hubProvider, this.relayerApiEndpoint);
|
|
13881
14639
|
this.migration = config && config.migration ? new MigrationService(this.hubProvider, config.migration) : new MigrationService(this.hubProvider);
|
|
14640
|
+
this.bridge = config && config.bridge ? new BridgeService(this.hubProvider, this.relayerApiEndpoint, config.bridge) : new BridgeService(this.hubProvider, this.relayerApiEndpoint);
|
|
13882
14641
|
}
|
|
13883
14642
|
};
|
|
13884
14643
|
|
|
@@ -13945,16 +14704,16 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
13945
14704
|
if (!fee) {
|
|
13946
14705
|
return 0n;
|
|
13947
14706
|
}
|
|
13948
|
-
|
|
14707
|
+
invariant12__default.default(inputAmount > 0n, "Input amount must be greater than 0");
|
|
13949
14708
|
let feeAmount = 0n;
|
|
13950
14709
|
if (isPartnerFeeAmount(fee)) {
|
|
13951
|
-
|
|
14710
|
+
invariant12__default.default(
|
|
13952
14711
|
fee.amount >= 0 && fee.amount <= inputAmount,
|
|
13953
14712
|
`Fee amount must be greater than 0 and less than or equal to the input amount: ${fee.amount}`
|
|
13954
14713
|
);
|
|
13955
14714
|
feeAmount = fee.amount;
|
|
13956
14715
|
} else if (isPartnerFeePercentage(fee)) {
|
|
13957
|
-
|
|
14716
|
+
invariant12__default.default(
|
|
13958
14717
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
13959
14718
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
13960
14719
|
);
|
|
@@ -13963,8 +14722,8 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
13963
14722
|
return feeAmount;
|
|
13964
14723
|
}
|
|
13965
14724
|
function adjustAmountByFee(amount, fee, quoteType) {
|
|
13966
|
-
|
|
13967
|
-
|
|
14725
|
+
invariant12__default.default(amount > 0n, "Amount must be greater than 0");
|
|
14726
|
+
invariant12__default.default(quoteType === "exact_input" || quoteType === "exact_output", "Invalid quote type");
|
|
13968
14727
|
if (quoteType === "exact_input") {
|
|
13969
14728
|
return amount - calculateFeeAmount(amount, fee);
|
|
13970
14729
|
}
|
|
@@ -15539,9 +16298,9 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15539
16298
|
*/
|
|
15540
16299
|
async isAllowanceValid(params, spokeProvider) {
|
|
15541
16300
|
try {
|
|
15542
|
-
|
|
15543
|
-
|
|
15544
|
-
|
|
16301
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16302
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16303
|
+
invariant12__default.default(
|
|
15545
16304
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15546
16305
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15547
16306
|
);
|
|
@@ -15636,19 +16395,19 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15636
16395
|
*/
|
|
15637
16396
|
async approve(params, spokeProvider, raw) {
|
|
15638
16397
|
try {
|
|
15639
|
-
|
|
15640
|
-
|
|
15641
|
-
|
|
16398
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16399
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16400
|
+
invariant12__default.default(
|
|
15642
16401
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15643
16402
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15644
16403
|
);
|
|
15645
16404
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
15646
16405
|
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
15647
|
-
|
|
16406
|
+
invariant12__default.default(
|
|
15648
16407
|
params.action === "supply" || params.action === "repay",
|
|
15649
16408
|
"Invalid action (only supply and repay are supported on evm)"
|
|
15650
16409
|
);
|
|
15651
|
-
|
|
16410
|
+
invariant12__default.default(viem.isAddress(params.token), "Invalid token address");
|
|
15652
16411
|
const result = await Erc20Service.approve(
|
|
15653
16412
|
params.token,
|
|
15654
16413
|
params.amount,
|
|
@@ -15662,11 +16421,11 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15662
16421
|
};
|
|
15663
16422
|
}
|
|
15664
16423
|
if (spokeProvider instanceof SonicSpokeProvider && spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id) {
|
|
15665
|
-
|
|
16424
|
+
invariant12__default.default(
|
|
15666
16425
|
params.action === "withdraw" || params.action === "borrow" || params.action === "supply" || params.action === "repay",
|
|
15667
16426
|
"Invalid action (only withdraw, borrow, supply and repay are supported on sonic)"
|
|
15668
16427
|
);
|
|
15669
|
-
|
|
16428
|
+
invariant12__default.default(viem.isAddress(params.token), "Invalid token address");
|
|
15670
16429
|
if (params.action === "withdraw") {
|
|
15671
16430
|
const withdrawInfo = await SonicSpokeService.getWithdrawInfo(
|
|
15672
16431
|
params.token,
|
|
@@ -15838,10 +16597,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15838
16597
|
*/
|
|
15839
16598
|
async createSupplyIntent(params, spokeProvider, raw) {
|
|
15840
16599
|
try {
|
|
15841
|
-
|
|
15842
|
-
|
|
15843
|
-
|
|
15844
|
-
|
|
16600
|
+
invariant12__default.default(params.action === "supply", "Invalid action");
|
|
16601
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16602
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16603
|
+
invariant12__default.default(
|
|
15845
16604
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15846
16605
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15847
16606
|
);
|
|
@@ -16003,10 +16762,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16003
16762
|
* }
|
|
16004
16763
|
*/
|
|
16005
16764
|
async createBorrowIntent(params, spokeProvider, raw) {
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
16765
|
+
invariant12__default.default(params.action === "borrow", "Invalid action");
|
|
16766
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16767
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16768
|
+
invariant12__default.default(
|
|
16010
16769
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16011
16770
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16012
16771
|
);
|
|
@@ -16139,10 +16898,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16139
16898
|
* }
|
|
16140
16899
|
*/
|
|
16141
16900
|
async createWithdrawIntent(params, spokeProvider, raw) {
|
|
16142
|
-
|
|
16143
|
-
|
|
16144
|
-
|
|
16145
|
-
|
|
16901
|
+
invariant12__default.default(params.action === "withdraw", "Invalid action");
|
|
16902
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
16903
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16904
|
+
invariant12__default.default(
|
|
16146
16905
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16147
16906
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16148
16907
|
);
|
|
@@ -16290,10 +17049,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16290
17049
|
* }
|
|
16291
17050
|
*/
|
|
16292
17051
|
async createRepayIntent(params, spokeProvider, raw) {
|
|
16293
|
-
|
|
16294
|
-
|
|
16295
|
-
|
|
16296
|
-
|
|
17052
|
+
invariant12__default.default(params.action === "repay", "Invalid action");
|
|
17053
|
+
invariant12__default.default(params.token.length > 0, "Token is required");
|
|
17054
|
+
invariant12__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
17055
|
+
invariant12__default.default(
|
|
16297
17056
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16298
17057
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16299
17058
|
);
|
|
@@ -16346,7 +17105,7 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16346
17105
|
buildSupplyData(token, to, amount, spokeChainId) {
|
|
16347
17106
|
const calls = [];
|
|
16348
17107
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16349
|
-
|
|
17108
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16350
17109
|
let assetAddress = assetConfig.asset;
|
|
16351
17110
|
const vaultAddress = assetConfig.vault;
|
|
16352
17111
|
const lendingPool = this.config.lendingPool;
|
|
@@ -16377,13 +17136,13 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16377
17136
|
* @returns {Hex} The transaction data.
|
|
16378
17137
|
*/
|
|
16379
17138
|
buildBorrowData(from, to, token, amount, spokeChainId) {
|
|
16380
|
-
|
|
16381
|
-
|
|
17139
|
+
invariant12__default.default(isValidSpokeChainId(spokeChainId), `Invalid spokeChainId: ${spokeChainId}`);
|
|
17140
|
+
invariant12__default.default(
|
|
16382
17141
|
isValidOriginalAssetAddress(spokeChainId, token),
|
|
16383
17142
|
`Unsupported spoke chain (${spokeChainId}) token: ${token}`
|
|
16384
17143
|
);
|
|
16385
17144
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16386
|
-
|
|
17145
|
+
invariant12__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16387
17146
|
let assetAddress = assetConfig.asset;
|
|
16388
17147
|
const vaultAddress = assetConfig.vault;
|
|
16389
17148
|
const bnUSDVault = this.config.bnUSDVault;
|
|
@@ -16711,6 +17470,7 @@ exports.BalnSwapService = BalnSwapService;
|
|
|
16711
17470
|
exports.BigIntToHex = BigIntToHex;
|
|
16712
17471
|
exports.BigNumberZeroDecimal = BigNumberZeroDecimal;
|
|
16713
17472
|
exports.BnUSDMigrationService = BnUSDMigrationService;
|
|
17473
|
+
exports.BridgeService = BridgeService;
|
|
16714
17474
|
exports.ChainIdToIntentRelayChainId = ChainIdToIntentRelayChainId;
|
|
16715
17475
|
exports.DEFAULT_DEADLINE_OFFSET = DEFAULT_DEADLINE_OFFSET;
|
|
16716
17476
|
exports.DEFAULT_MAX_RETRY = DEFAULT_MAX_RETRY;
|
|
@@ -16752,6 +17512,9 @@ exports.RAY_DECIMALS = RAY_DECIMALS;
|
|
|
16752
17512
|
exports.SECONDS_PER_YEAR = SECONDS_PER_YEAR;
|
|
16753
17513
|
exports.STELLAR_DEFAULT_TX_TIMEOUT_SECONDS = STELLAR_DEFAULT_TX_TIMEOUT_SECONDS;
|
|
16754
17514
|
exports.STELLAR_PRIORITY_FEE = STELLAR_PRIORITY_FEE;
|
|
17515
|
+
exports.SodaTokens = SodaTokens;
|
|
17516
|
+
exports.SodaTokensAsHubAssets = SodaTokensAsHubAssets;
|
|
17517
|
+
exports.SodaVaultTokensSet = SodaVaultTokensSet;
|
|
16755
17518
|
exports.Sodax = Sodax;
|
|
16756
17519
|
exports.SolanaSpokeProvider = SolanaSpokeProvider;
|
|
16757
17520
|
exports.SolverIntentErrorCode = SolverIntentErrorCode;
|
|
@@ -16810,12 +17573,15 @@ exports.getCompoundedBalance = getCompoundedBalance;
|
|
|
16810
17573
|
exports.getEvmViemChain = getEvmViemChain;
|
|
16811
17574
|
exports.getHubAssetInfo = getHubAssetInfo;
|
|
16812
17575
|
exports.getHubChainConfig = getHubChainConfig;
|
|
17576
|
+
exports.getHubVaultTokenByAddress = getHubVaultTokenByAddress;
|
|
16813
17577
|
exports.getIconAddressBytes = getIconAddressBytes;
|
|
16814
17578
|
exports.getIntentRelayChainId = getIntentRelayChainId;
|
|
16815
17579
|
exports.getLinearBalance = getLinearBalance;
|
|
16816
17580
|
exports.getMarketReferenceCurrencyAndUsdBalance = getMarketReferenceCurrencyAndUsdBalance;
|
|
16817
17581
|
exports.getMoneyMarketConfig = getMoneyMarketConfig;
|
|
16818
17582
|
exports.getOriginalAssetAddress = getOriginalAssetAddress;
|
|
17583
|
+
exports.getOriginalAssetInfoFromVault = getOriginalAssetInfoFromVault;
|
|
17584
|
+
exports.getOriginalTokenFromOriginalAssetAddress = getOriginalTokenFromOriginalAssetAddress;
|
|
16819
17585
|
exports.getPacket = getPacket;
|
|
16820
17586
|
exports.getRandomBytes = getRandomBytes;
|
|
16821
17587
|
exports.getReserveNormalizedIncome = getReserveNormalizedIncome;
|
|
@@ -16829,6 +17595,7 @@ exports.getTransactionPackets = getTransactionPackets;
|
|
|
16829
17595
|
exports.hexToBigInt = hexToBigInt;
|
|
16830
17596
|
exports.hubAssetToOriginalAssetMap = hubAssetToOriginalAssetMap;
|
|
16831
17597
|
exports.hubAssets = hubAssets;
|
|
17598
|
+
exports.hubVaultTokensMap = hubVaultTokensMap;
|
|
16832
17599
|
exports.hubVaults = hubVaults;
|
|
16833
17600
|
exports.hubVaultsAddressSet = hubVaultsAddressSet;
|
|
16834
17601
|
exports.intentRelayChainIdToSpokeChainIdMap = intentRelayChainIdToSpokeChainIdMap;
|
|
@@ -16875,6 +17642,7 @@ exports.isPartnerFeeAmount = isPartnerFeeAmount;
|
|
|
16875
17642
|
exports.isPartnerFeePercentage = isPartnerFeePercentage;
|
|
16876
17643
|
exports.isResponseAddressType = isResponseAddressType;
|
|
16877
17644
|
exports.isResponseSigningType = isResponseSigningType;
|
|
17645
|
+
exports.isSodaVaultToken = isSodaVaultToken;
|
|
16878
17646
|
exports.isSolanaSpokeProvider = isSolanaSpokeProvider;
|
|
16879
17647
|
exports.isSolverSupportedToken = isSolverSupportedToken;
|
|
16880
17648
|
exports.isSonicSpokeProvider = isSonicSpokeProvider;
|
|
@@ -16886,6 +17654,7 @@ exports.isValidHubAsset = isValidHubAsset;
|
|
|
16886
17654
|
exports.isValidIntentRelayChainId = isValidIntentRelayChainId;
|
|
16887
17655
|
exports.isValidOriginalAssetAddress = isValidOriginalAssetAddress;
|
|
16888
17656
|
exports.isValidSpokeChainId = isValidSpokeChainId;
|
|
17657
|
+
exports.isValidVault = isValidVault;
|
|
16889
17658
|
exports.isWaitUntilIntentExecutedFailed = isWaitUntilIntentExecutedFailed;
|
|
16890
17659
|
exports.moneyMarketReserveAssets = moneyMarketReserveAssets;
|
|
16891
17660
|
exports.moneyMarketReserveHubAssetsSet = moneyMarketReserveHubAssetsSet;
|
|
@@ -16914,6 +17683,7 @@ exports.spokeChainIdsSet = spokeChainIdsSet;
|
|
|
16914
17683
|
exports.submitTransaction = submitTransaction;
|
|
16915
17684
|
exports.supportedHubAssets = supportedHubAssets;
|
|
16916
17685
|
exports.supportedHubChains = supportedHubChains;
|
|
17686
|
+
exports.supportedSodaAssets = supportedSodaAssets;
|
|
16917
17687
|
exports.supportedSpokeChains = supportedSpokeChains;
|
|
16918
17688
|
exports.supportedTokensPerChain = supportedTokensPerChain;
|
|
16919
17689
|
exports.uiPoolDataAbi = uiPoolDataAbi;
|