@sodax/sdk 0.0.1-rc.25 → 0.0.1-rc.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +225 -129
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +224 -128
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var viem = require('viem');
|
|
4
|
-
var
|
|
4
|
+
var invariant11 = require('tiny-invariant');
|
|
5
5
|
var bcs = require('@mysten/sui/bcs');
|
|
6
6
|
var web3_js = require('@solana/web3.js');
|
|
7
7
|
var stellarSdk = require('@stellar/stellar-sdk');
|
|
@@ -39,7 +39,7 @@ function _interopNamespace(e) {
|
|
|
39
39
|
return Object.freeze(n);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
var
|
|
42
|
+
var invariant11__default = /*#__PURE__*/_interopDefault(invariant11);
|
|
43
43
|
var IconSdkRaw__namespace = /*#__PURE__*/_interopNamespace(IconSdkRaw);
|
|
44
44
|
var rlp__namespace = /*#__PURE__*/_interopNamespace(rlp);
|
|
45
45
|
var anchor__namespace = /*#__PURE__*/_interopNamespace(anchor);
|
|
@@ -6169,16 +6169,16 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
6169
6169
|
if (!fee) {
|
|
6170
6170
|
return 0n;
|
|
6171
6171
|
}
|
|
6172
|
-
|
|
6172
|
+
invariant11__default.default(inputAmount > 0n, "Input amount must be greater than 0");
|
|
6173
6173
|
let feeAmount = 0n;
|
|
6174
6174
|
if (isPartnerFeeAmount(fee)) {
|
|
6175
|
-
|
|
6175
|
+
invariant11__default.default(
|
|
6176
6176
|
fee.amount >= 0 && fee.amount <= inputAmount,
|
|
6177
6177
|
`Fee amount must be greater than 0 and less than or equal to the input amount: ${fee.amount}`
|
|
6178
6178
|
);
|
|
6179
6179
|
feeAmount = fee.amount;
|
|
6180
6180
|
} else if (isPartnerFeePercentage(fee)) {
|
|
6181
|
-
|
|
6181
|
+
invariant11__default.default(
|
|
6182
6182
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
6183
6183
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
6184
6184
|
);
|
|
@@ -6187,8 +6187,8 @@ function calculateFeeAmount(inputAmount, fee) {
|
|
|
6187
6187
|
return feeAmount;
|
|
6188
6188
|
}
|
|
6189
6189
|
function adjustAmountByFee(amount, fee, quoteType) {
|
|
6190
|
-
|
|
6191
|
-
|
|
6190
|
+
invariant11__default.default(amount > 0n, "Amount must be greater than 0");
|
|
6191
|
+
invariant11__default.default(quoteType === "exact_input" || quoteType === "exact_output", "Invalid quote type");
|
|
6192
6192
|
if (quoteType === "exact_input") {
|
|
6193
6193
|
return amount - calculateFeeAmount(amount, fee);
|
|
6194
6194
|
}
|
|
@@ -10269,6 +10269,58 @@ var SonicSpokeService = class _SonicSpokeService {
|
|
|
10269
10269
|
}
|
|
10270
10270
|
return spokeProvider.walletProvider.sendTransaction(rawTx);
|
|
10271
10271
|
}
|
|
10272
|
+
static async createSwapIntent(createIntentParams, creatorHubWalletAddress, solverConfig2, fee, spokeProvider, hubProvider, raw) {
|
|
10273
|
+
let inputToken = getHubAssetInfo(createIntentParams.srcChain, createIntentParams.inputToken)?.asset;
|
|
10274
|
+
if (createIntentParams.srcChain === hubProvider.chainConfig.chain.id && createIntentParams.inputToken.toLowerCase() === hubProvider.chainConfig.nativeToken.toLowerCase()) {
|
|
10275
|
+
inputToken = hubProvider.chainConfig.nativeToken;
|
|
10276
|
+
}
|
|
10277
|
+
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
10278
|
+
invariant11__default.default(
|
|
10279
|
+
inputToken,
|
|
10280
|
+
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
10281
|
+
);
|
|
10282
|
+
invariant11__default.default(
|
|
10283
|
+
outputToken,
|
|
10284
|
+
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
10285
|
+
);
|
|
10286
|
+
const [feeData, feeAmount] = EvmSolverService.createIntentFeeData(fee, createIntentParams.inputAmount);
|
|
10287
|
+
const intentsContract = solverConfig2.intentsContract;
|
|
10288
|
+
const intent = {
|
|
10289
|
+
...createIntentParams,
|
|
10290
|
+
inputToken,
|
|
10291
|
+
outputToken,
|
|
10292
|
+
inputAmount: createIntentParams.inputAmount - feeAmount,
|
|
10293
|
+
srcChain: getIntentRelayChainId(createIntentParams.srcChain),
|
|
10294
|
+
dstChain: getIntentRelayChainId(createIntentParams.dstChain),
|
|
10295
|
+
srcAddress: encodeAddress(createIntentParams.srcChain, createIntentParams.srcAddress),
|
|
10296
|
+
dstAddress: encodeAddress(createIntentParams.dstChain, createIntentParams.dstAddress),
|
|
10297
|
+
intentId: randomUint256(),
|
|
10298
|
+
creator: creatorHubWalletAddress,
|
|
10299
|
+
data: feeData
|
|
10300
|
+
// fee amount will be deducted from the input amount
|
|
10301
|
+
};
|
|
10302
|
+
const txData = EvmSolverService.encodeCreateIntent(intent, intentsContract);
|
|
10303
|
+
const rawTx = {
|
|
10304
|
+
from: await spokeProvider.walletProvider.getWalletAddress(),
|
|
10305
|
+
to: txData.address,
|
|
10306
|
+
data: txData.data,
|
|
10307
|
+
value: createIntentParams.inputToken.toLowerCase() === hubProvider.chainConfig.nativeToken.toLowerCase() ? createIntentParams.inputAmount : 0n
|
|
10308
|
+
};
|
|
10309
|
+
if (raw) {
|
|
10310
|
+
return [
|
|
10311
|
+
rawTx,
|
|
10312
|
+
intent,
|
|
10313
|
+
feeAmount,
|
|
10314
|
+
txData.data
|
|
10315
|
+
];
|
|
10316
|
+
}
|
|
10317
|
+
return [
|
|
10318
|
+
await spokeProvider.walletProvider.sendTransaction(rawTx),
|
|
10319
|
+
intent,
|
|
10320
|
+
feeAmount,
|
|
10321
|
+
txData.data
|
|
10322
|
+
];
|
|
10323
|
+
}
|
|
10272
10324
|
/**
|
|
10273
10325
|
* Get the balance of the token in the spoke chain.
|
|
10274
10326
|
* @param {Address} token - The address of the token to get the balance of.
|
|
@@ -10999,19 +11051,19 @@ async function postRequest(payload, apiUrl) {
|
|
|
10999
11051
|
return response.json();
|
|
11000
11052
|
}
|
|
11001
11053
|
async function submitTransaction(payload, apiUrl) {
|
|
11002
|
-
|
|
11003
|
-
|
|
11054
|
+
invariant11__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11055
|
+
invariant11__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11004
11056
|
return postRequest(payload, apiUrl);
|
|
11005
11057
|
}
|
|
11006
11058
|
async function getTransactionPackets(payload, apiUrl) {
|
|
11007
|
-
|
|
11008
|
-
|
|
11059
|
+
invariant11__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11060
|
+
invariant11__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11009
11061
|
return postRequest(payload, apiUrl);
|
|
11010
11062
|
}
|
|
11011
11063
|
async function getPacket(payload, apiUrl) {
|
|
11012
|
-
|
|
11013
|
-
|
|
11014
|
-
|
|
11064
|
+
invariant11__default.default(payload.params.chain_id.length > 0, "Invalid input parameters. source_chain_id empty");
|
|
11065
|
+
invariant11__default.default(payload.params.tx_hash.length > 0, "Invalid input parameters. tx_hash empty");
|
|
11066
|
+
invariant11__default.default(payload.params.conn_sn.length > 0, "Invalid input parameters. conn_sn empty");
|
|
11015
11067
|
return postRequest(payload, apiUrl);
|
|
11016
11068
|
}
|
|
11017
11069
|
async function waitUntilIntentExecuted(payload) {
|
|
@@ -11142,11 +11194,11 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11142
11194
|
inputToken = hubProvider.chainConfig.wrappedNativeToken;
|
|
11143
11195
|
}
|
|
11144
11196
|
const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
|
|
11145
|
-
|
|
11197
|
+
invariant11__default.default(
|
|
11146
11198
|
inputToken,
|
|
11147
11199
|
`hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`
|
|
11148
11200
|
);
|
|
11149
|
-
|
|
11201
|
+
invariant11__default.default(
|
|
11150
11202
|
outputToken,
|
|
11151
11203
|
`hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`
|
|
11152
11204
|
);
|
|
@@ -11178,7 +11230,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11178
11230
|
* @returns A tuple containing [encoded fee data, fee amount]. Fee amount will be 0n if no fee.
|
|
11179
11231
|
*/
|
|
11180
11232
|
static createIntentFeeData(fee, inputAmount) {
|
|
11181
|
-
|
|
11233
|
+
invariant11__default.default(inputAmount > 0n, "Input amount must be greater than 0");
|
|
11182
11234
|
if (!fee) {
|
|
11183
11235
|
return ["0x", 0n];
|
|
11184
11236
|
}
|
|
@@ -11186,7 +11238,7 @@ var EvmSolverService = class _EvmSolverService {
|
|
|
11186
11238
|
if (isPartnerFeeAmount(fee)) {
|
|
11187
11239
|
feeAmount = fee.amount;
|
|
11188
11240
|
} else if (isPartnerFeePercentage(fee)) {
|
|
11189
|
-
|
|
11241
|
+
invariant11__default.default(
|
|
11190
11242
|
fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE,
|
|
11191
11243
|
`Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`
|
|
11192
11244
|
);
|
|
@@ -11313,23 +11365,23 @@ var SolverApiService = class {
|
|
|
11313
11365
|
* }
|
|
11314
11366
|
*/
|
|
11315
11367
|
static async getQuote(payload, config) {
|
|
11316
|
-
|
|
11317
|
-
|
|
11318
|
-
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
|
|
11368
|
+
invariant11__default.default(payload.token_src.length > 0, "Empty token_src");
|
|
11369
|
+
invariant11__default.default(payload.token_src_blockchain_id.length > 0, "Empty token_src_blockchain_id");
|
|
11370
|
+
invariant11__default.default(payload.token_dst.length > 0, "Empty token_dst");
|
|
11371
|
+
invariant11__default.default(payload.token_dst_blockchain_id.length > 0, "Empty token_dst_blockchain_id");
|
|
11372
|
+
invariant11__default.default(payload.amount > 0n, "amount must be greater than 0");
|
|
11373
|
+
invariant11__default.default(
|
|
11322
11374
|
isValidOriginalAssetAddress(payload.token_src_blockchain_id, payload.token_src),
|
|
11323
11375
|
"unsupported token_src for src chain"
|
|
11324
11376
|
);
|
|
11325
|
-
|
|
11377
|
+
invariant11__default.default(
|
|
11326
11378
|
isValidOriginalAssetAddress(payload.token_dst_blockchain_id, payload.token_dst),
|
|
11327
11379
|
"unsupported token_dst for dst chain"
|
|
11328
11380
|
);
|
|
11329
11381
|
const tokenSrc = getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset;
|
|
11330
11382
|
const tokenDst = getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset;
|
|
11331
|
-
|
|
11332
|
-
|
|
11383
|
+
invariant11__default.default(tokenSrc, "hub asset not found for token_src");
|
|
11384
|
+
invariant11__default.default(tokenDst, "hub asset not found for token_dst");
|
|
11333
11385
|
try {
|
|
11334
11386
|
const response = await fetch(`${config.solverApiEndpoint}/quote`, {
|
|
11335
11387
|
method: "POST",
|
|
@@ -11424,7 +11476,7 @@ var SolverApiService = class {
|
|
|
11424
11476
|
}
|
|
11425
11477
|
}
|
|
11426
11478
|
static async getStatus(request, config) {
|
|
11427
|
-
|
|
11479
|
+
invariant11__default.default(request.intent_tx_hash.length > 0, "Empty intent_tx_hash");
|
|
11428
11480
|
try {
|
|
11429
11481
|
const response = await fetch(`${config.solverApiEndpoint}/status`, {
|
|
11430
11482
|
method: "POST",
|
|
@@ -11885,13 +11937,23 @@ var SolverService = class {
|
|
|
11885
11937
|
spokeProvider
|
|
11886
11938
|
}) {
|
|
11887
11939
|
try {
|
|
11888
|
-
if (spokeProvider instanceof EvmSpokeProvider
|
|
11940
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
11941
|
+
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
11942
|
+
return await Erc20Service.isAllowanceValid(
|
|
11943
|
+
params.inputToken,
|
|
11944
|
+
params.inputAmount,
|
|
11945
|
+
walletAddress,
|
|
11946
|
+
spokeProvider.chainConfig.addresses.assetManager,
|
|
11947
|
+
spokeProvider
|
|
11948
|
+
);
|
|
11949
|
+
}
|
|
11950
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
11889
11951
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
11890
11952
|
return await Erc20Service.isAllowanceValid(
|
|
11891
11953
|
params.inputToken,
|
|
11892
11954
|
params.inputAmount,
|
|
11893
11955
|
walletAddress,
|
|
11894
|
-
|
|
11956
|
+
getSolverConfig(types.SONIC_MAINNET_CHAIN_ID).intentsContract,
|
|
11895
11957
|
spokeProvider
|
|
11896
11958
|
);
|
|
11897
11959
|
}
|
|
@@ -11950,7 +12012,7 @@ var SolverService = class {
|
|
|
11950
12012
|
raw
|
|
11951
12013
|
}) {
|
|
11952
12014
|
try {
|
|
11953
|
-
if (spokeProvider instanceof EvmSpokeProvider
|
|
12015
|
+
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
11954
12016
|
const result = await Erc20Service.approve(
|
|
11955
12017
|
params.inputToken,
|
|
11956
12018
|
params.inputAmount,
|
|
@@ -11963,6 +12025,19 @@ var SolverService = class {
|
|
|
11963
12025
|
value: result
|
|
11964
12026
|
};
|
|
11965
12027
|
}
|
|
12028
|
+
if (spokeProvider instanceof SonicSpokeProvider) {
|
|
12029
|
+
const result = await Erc20Service.approve(
|
|
12030
|
+
params.inputToken,
|
|
12031
|
+
params.inputAmount,
|
|
12032
|
+
getSolverConfig(types.SONIC_MAINNET_CHAIN_ID).intentsContract,
|
|
12033
|
+
spokeProvider,
|
|
12034
|
+
raw
|
|
12035
|
+
);
|
|
12036
|
+
return {
|
|
12037
|
+
ok: true,
|
|
12038
|
+
value: result
|
|
12039
|
+
};
|
|
12040
|
+
}
|
|
11966
12041
|
return {
|
|
11967
12042
|
ok: false,
|
|
11968
12043
|
error: new Error("Approve only supported for EVM spoke chains")
|
|
@@ -12022,49 +12097,70 @@ var SolverService = class {
|
|
|
12022
12097
|
fee = this.config.partnerFee,
|
|
12023
12098
|
raw
|
|
12024
12099
|
}) {
|
|
12025
|
-
|
|
12100
|
+
invariant11__default.default(
|
|
12026
12101
|
isValidOriginalAssetAddress(params.srcChain, params.inputToken),
|
|
12027
12102
|
`Unsupported spoke chain token (params.srcChain): ${params.srcChain}, params.inputToken): ${params.inputToken}`
|
|
12028
12103
|
);
|
|
12029
|
-
|
|
12104
|
+
invariant11__default.default(
|
|
12030
12105
|
isValidOriginalAssetAddress(params.dstChain, params.outputToken),
|
|
12031
12106
|
`Unsupported spoke chain token (params.dstChain): ${params.dstChain}, params.outputToken): ${params.outputToken}`
|
|
12032
12107
|
);
|
|
12033
|
-
|
|
12034
|
-
|
|
12108
|
+
invariant11__default.default(isValidSpokeChainId(params.srcChain), `Invalid spoke chain (params.srcChain): ${params.srcChain}`);
|
|
12109
|
+
invariant11__default.default(isValidSpokeChainId(params.dstChain), `Invalid spoke chain (params.dstChain): ${params.dstChain}`);
|
|
12035
12110
|
try {
|
|
12036
12111
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12037
|
-
|
|
12112
|
+
invariant11__default.default(
|
|
12038
12113
|
params.srcAddress.toLowerCase() === walletAddress.toLowerCase(),
|
|
12039
12114
|
"srcAddress must be the same as wallet address"
|
|
12040
12115
|
);
|
|
12041
12116
|
const creatorHubWalletAddress = spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id ? walletAddress : await WalletAbstractionService.getUserHubWalletAddress(walletAddress, spokeProvider, this.hubProvider);
|
|
12042
|
-
|
|
12043
|
-
|
|
12044
|
-
|
|
12045
|
-
|
|
12046
|
-
|
|
12047
|
-
|
|
12048
|
-
|
|
12049
|
-
|
|
12050
|
-
|
|
12051
|
-
|
|
12052
|
-
|
|
12053
|
-
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12059
|
-
}
|
|
12060
|
-
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12064
|
-
|
|
12065
|
-
|
|
12066
|
-
|
|
12067
|
-
|
|
12117
|
+
if (spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id) {
|
|
12118
|
+
const [txResult, intent, feeAmount, data] = await SonicSpokeService.createSwapIntent(
|
|
12119
|
+
params,
|
|
12120
|
+
creatorHubWalletAddress,
|
|
12121
|
+
this.config,
|
|
12122
|
+
fee,
|
|
12123
|
+
spokeProvider,
|
|
12124
|
+
this.hubProvider,
|
|
12125
|
+
raw
|
|
12126
|
+
);
|
|
12127
|
+
return {
|
|
12128
|
+
ok: true,
|
|
12129
|
+
value: [
|
|
12130
|
+
txResult,
|
|
12131
|
+
{ ...intent, feeAmount },
|
|
12132
|
+
data
|
|
12133
|
+
]
|
|
12134
|
+
};
|
|
12135
|
+
}
|
|
12136
|
+
{
|
|
12137
|
+
const [data, intent, feeAmount] = EvmSolverService.constructCreateIntentData(
|
|
12138
|
+
{
|
|
12139
|
+
...params,
|
|
12140
|
+
srcAddress: walletAddress
|
|
12141
|
+
},
|
|
12142
|
+
creatorHubWalletAddress,
|
|
12143
|
+
this.config,
|
|
12144
|
+
fee,
|
|
12145
|
+
this.hubProvider
|
|
12146
|
+
);
|
|
12147
|
+
const txResult = await SpokeService.deposit(
|
|
12148
|
+
{
|
|
12149
|
+
from: walletAddress,
|
|
12150
|
+
to: creatorHubWalletAddress,
|
|
12151
|
+
token: params.inputToken,
|
|
12152
|
+
amount: params.inputAmount,
|
|
12153
|
+
data
|
|
12154
|
+
},
|
|
12155
|
+
spokeProvider,
|
|
12156
|
+
this.hubProvider,
|
|
12157
|
+
raw
|
|
12158
|
+
);
|
|
12159
|
+
return {
|
|
12160
|
+
ok: true,
|
|
12161
|
+
value: [txResult, { ...intent, feeAmount }, data]
|
|
12162
|
+
};
|
|
12163
|
+
}
|
|
12068
12164
|
} catch (error) {
|
|
12069
12165
|
return {
|
|
12070
12166
|
ok: false,
|
|
@@ -12087,8 +12183,8 @@ var SolverService = class {
|
|
|
12087
12183
|
*/
|
|
12088
12184
|
async cancelIntent(intent, spokeProvider, raw) {
|
|
12089
12185
|
try {
|
|
12090
|
-
|
|
12091
|
-
|
|
12186
|
+
invariant11__default.default(isValidIntentRelayChainId(intent.srcChain), `Invalid intent.srcChain: ${intent.srcChain}`);
|
|
12187
|
+
invariant11__default.default(isValidIntentRelayChainId(intent.dstChain), `Invalid intent.dstChain: ${intent.dstChain}`);
|
|
12092
12188
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
12093
12189
|
const creatorHubWalletAddress = spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id ? walletAddress : await WalletAbstractionService.getUserHubWalletAddress(walletAddress, spokeProvider, this.hubProvider);
|
|
12094
12190
|
const calls = [];
|
|
@@ -12600,7 +12696,7 @@ var IcxMigrationService = class {
|
|
|
12600
12696
|
migrateData(params) {
|
|
12601
12697
|
const calls = [];
|
|
12602
12698
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, params.address);
|
|
12603
|
-
|
|
12699
|
+
invariant11__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${params.address}`);
|
|
12604
12700
|
calls.push(
|
|
12605
12701
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.icxMigration, params.amount)
|
|
12606
12702
|
);
|
|
@@ -12616,7 +12712,7 @@ var IcxMigrationService = class {
|
|
|
12616
12712
|
revertMigration(params) {
|
|
12617
12713
|
const calls = [];
|
|
12618
12714
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, params.wICX);
|
|
12619
|
-
|
|
12715
|
+
invariant11__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${params.wICX}`);
|
|
12620
12716
|
calls.push(
|
|
12621
12717
|
Erc20Service.encodeApprove(
|
|
12622
12718
|
this.hubProvider.chainConfig.addresses.sodaToken,
|
|
@@ -12712,9 +12808,9 @@ var MigrationService = class {
|
|
|
12712
12808
|
async isAllowanceValid(params, action, spokeProvider) {
|
|
12713
12809
|
try {
|
|
12714
12810
|
if (action === "migrate") {
|
|
12715
|
-
|
|
12716
|
-
|
|
12717
|
-
|
|
12811
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
12812
|
+
invariant11__default.default(viem.isAddress(params.to) || isIconAddress(params.to), "To address is required");
|
|
12813
|
+
invariant11__default.default(
|
|
12718
12814
|
isIcxMigrateParams(params) || isBalnMigrateParams(params) || isUnifiedBnUSDMigrateParams(params),
|
|
12719
12815
|
"Invalid params"
|
|
12720
12816
|
);
|
|
@@ -12740,9 +12836,9 @@ var MigrationService = class {
|
|
|
12740
12836
|
};
|
|
12741
12837
|
}
|
|
12742
12838
|
if (action === "revert") {
|
|
12743
|
-
|
|
12744
|
-
|
|
12745
|
-
|
|
12839
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
12840
|
+
invariant11__default.default(params.to.length > 0, "To address is required");
|
|
12841
|
+
invariant11__default.default(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12746
12842
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12747
12843
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12748
12844
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -12798,9 +12894,9 @@ var MigrationService = class {
|
|
|
12798
12894
|
async approve(params, action, spokeProvider, raw) {
|
|
12799
12895
|
try {
|
|
12800
12896
|
if (action === "migrate") {
|
|
12801
|
-
|
|
12802
|
-
|
|
12803
|
-
|
|
12897
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
12898
|
+
invariant11__default.default(params.to.length > 0, "To address is required");
|
|
12899
|
+
invariant11__default.default(isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12804
12900
|
if (isUnifiedBnUSDMigrateParams(params) && spokeProvider.chainConfig.chain.type === "EVM") {
|
|
12805
12901
|
const evmSpokeProvider = spokeProvider;
|
|
12806
12902
|
const result = await Erc20Service.approve(
|
|
@@ -12821,9 +12917,9 @@ var MigrationService = class {
|
|
|
12821
12917
|
};
|
|
12822
12918
|
}
|
|
12823
12919
|
if (action === "revert") {
|
|
12824
|
-
|
|
12825
|
-
|
|
12826
|
-
|
|
12920
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
12921
|
+
invariant11__default.default(params.to.length > 0, "To address is required");
|
|
12922
|
+
invariant11__default.default(isIcxCreateRevertMigrationParams(params) || isUnifiedBnUSDMigrateParams(params), "Invalid params");
|
|
12827
12923
|
if (spokeProvider instanceof SonicSpokeProvider && isIcxCreateRevertMigrationParams(params)) {
|
|
12828
12924
|
const wallet = await spokeProvider.walletProvider.getWalletAddress();
|
|
12829
12925
|
const userRouter = await SonicSpokeService.getUserRouter(wallet, spokeProvider);
|
|
@@ -13235,13 +13331,13 @@ var MigrationService = class {
|
|
|
13235
13331
|
async createMigratebnUSDIntent(params, spokeProvider, unchecked = false, raw) {
|
|
13236
13332
|
try {
|
|
13237
13333
|
if (!unchecked) {
|
|
13238
|
-
|
|
13239
|
-
|
|
13240
|
-
|
|
13241
|
-
|
|
13242
|
-
|
|
13243
|
-
|
|
13244
|
-
|
|
13334
|
+
invariant11__default.default(isValidSpokeChainId(params.srcChainId), "Invalid spoke source chain ID");
|
|
13335
|
+
invariant11__default.default(isValidSpokeChainId(params.dstChainId), "Invalid spoke destination chain ID");
|
|
13336
|
+
invariant11__default.default(params.srcbnUSD.length > 0, "Legacy bnUSD token address is required");
|
|
13337
|
+
invariant11__default.default(params.dstbnUSD.length > 0, "New bnUSD token address is required");
|
|
13338
|
+
invariant11__default.default(params.amount > 0, "Amount must be greater than 0");
|
|
13339
|
+
invariant11__default.default(params.to.length > 0, "Recipient address is required");
|
|
13340
|
+
invariant11__default.default(
|
|
13245
13341
|
!(isLegacybnUSDToken(params.srcbnUSD) && isLegacybnUSDToken(params.dstbnUSD)),
|
|
13246
13342
|
"srcbnUSD and dstbnUSD cannot both be legacy bnUSD tokens"
|
|
13247
13343
|
);
|
|
@@ -13249,11 +13345,11 @@ var MigrationService = class {
|
|
|
13249
13345
|
let migrationData;
|
|
13250
13346
|
if (isLegacybnUSDToken(params.srcbnUSD)) {
|
|
13251
13347
|
if (!unchecked) {
|
|
13252
|
-
|
|
13348
|
+
invariant11__default.default(
|
|
13253
13349
|
isLegacybnUSDChainId(params.srcChainId),
|
|
13254
13350
|
"srcChainId must be a legacy bnUSD chain (icon, sui, stellar) if srcbnUSD is a legacy bnUSD token"
|
|
13255
13351
|
);
|
|
13256
|
-
|
|
13352
|
+
invariant11__default.default(
|
|
13257
13353
|
isNewbnUSDChainId(params.dstChainId),
|
|
13258
13354
|
"dstChainId must be a new bnUSD chain (all spoke chains besides Icon) if dstbnUSD is a legacy bnUSD token"
|
|
13259
13355
|
);
|
|
@@ -13268,15 +13364,15 @@ var MigrationService = class {
|
|
|
13268
13364
|
});
|
|
13269
13365
|
} else if (isLegacybnUSDToken(params.dstbnUSD)) {
|
|
13270
13366
|
if (!unchecked) {
|
|
13271
|
-
|
|
13367
|
+
invariant11__default.default(
|
|
13272
13368
|
isLegacybnUSDChainId(params.dstChainId),
|
|
13273
13369
|
"dstChainId must be a legacy bnUSD chain (sui, stellar, icon) if dstbnUSD is a legacy bnUSD token"
|
|
13274
13370
|
);
|
|
13275
|
-
|
|
13371
|
+
invariant11__default.default(
|
|
13276
13372
|
isNewbnUSDToken(params.srcbnUSD),
|
|
13277
13373
|
"srcbnUSD must be a new bnUSD token if dstbnUSD is a legacy bnUSD token"
|
|
13278
13374
|
);
|
|
13279
|
-
|
|
13375
|
+
invariant11__default.default(
|
|
13280
13376
|
isNewbnUSDChainId(params.srcChainId),
|
|
13281
13377
|
"srcChainId must be a new bnUSD chain (all spoke chains besides Icon) if srcbnUSD is a new bnUSD token"
|
|
13282
13378
|
);
|
|
@@ -13349,13 +13445,13 @@ var MigrationService = class {
|
|
|
13349
13445
|
*/
|
|
13350
13446
|
async createMigrateIcxToSodaIntent(params, spokeProvider, raw) {
|
|
13351
13447
|
try {
|
|
13352
|
-
|
|
13353
|
-
|
|
13354
|
-
|
|
13448
|
+
invariant11__default.default(params.amount > 0, "Amount must be greater than 0");
|
|
13449
|
+
invariant11__default.default(viem.isAddress(params.to), "Recipient address is required");
|
|
13450
|
+
invariant11__default.default(
|
|
13355
13451
|
params.address.toLowerCase() === spokeProvider.chainConfig.addresses.wICX.toLowerCase() || params.address.toLowerCase() === spokeProvider.chainConfig.nativeToken.toLowerCase(),
|
|
13356
13452
|
"Token must be wICX or native ICX token"
|
|
13357
13453
|
);
|
|
13358
|
-
|
|
13454
|
+
invariant11__default.default(spokeProvider instanceof IconSpokeProvider, "Spoke provider must be an instance of IconSpokeProvider");
|
|
13359
13455
|
const availableAmount = await this.icxMigration.getAvailableAmount();
|
|
13360
13456
|
if (availableAmount < params.amount) {
|
|
13361
13457
|
throw new Error(
|
|
@@ -13467,7 +13563,7 @@ var BnUSDMigrationService = class {
|
|
|
13467
13563
|
migrateData(params) {
|
|
13468
13564
|
const calls = [];
|
|
13469
13565
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.legacybnUSD);
|
|
13470
|
-
|
|
13566
|
+
invariant11__default.default(assetConfig, `hub asset not found for legacy bnUSD token: ${params.legacybnUSD}`);
|
|
13471
13567
|
const bnUSDVault = getMoneyMarketConfig(types.SONIC_MAINNET_CHAIN_ID).bnUSDVault;
|
|
13472
13568
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, assetConfig.vault, params.amount));
|
|
13473
13569
|
calls.push(EvmVaultTokenService.encodeDeposit(assetConfig.vault, assetConfig.asset, params.amount));
|
|
@@ -13479,7 +13575,7 @@ var BnUSDMigrationService = class {
|
|
|
13479
13575
|
return encodeContractCalls(calls);
|
|
13480
13576
|
}
|
|
13481
13577
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.newbnUSD);
|
|
13482
|
-
|
|
13578
|
+
invariant11__default.default(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13483
13579
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.asset, translatedAmount));
|
|
13484
13580
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
13485
13581
|
dstAssetConfig.decimal,
|
|
@@ -13512,14 +13608,14 @@ var BnUSDMigrationService = class {
|
|
|
13512
13608
|
let decimals = 18;
|
|
13513
13609
|
if (params.newbnUSD.toLowerCase() !== bnUSDVault.toLowerCase()) {
|
|
13514
13610
|
const assetConfig = getHubAssetInfo(params.srcChainId, params.newbnUSD);
|
|
13515
|
-
|
|
13611
|
+
invariant11__default.default(assetConfig, `hub asset not found for new bnUSD token: ${params.newbnUSD}`);
|
|
13516
13612
|
decimals = assetConfig.decimal;
|
|
13517
13613
|
calls.push(Erc20Service.encodeApprove(assetConfig.asset, bnUSDVault, params.amount));
|
|
13518
13614
|
calls.push(EvmVaultTokenService.encodeDeposit(bnUSDVault, assetConfig.asset, params.amount));
|
|
13519
13615
|
}
|
|
13520
13616
|
const translatedAmount = EvmVaultTokenService.translateIncomingDecimals(decimals, params.amount);
|
|
13521
13617
|
const dstAssetConfig = getHubAssetInfo(params.dstChainId, params.legacybnUSD);
|
|
13522
|
-
|
|
13618
|
+
invariant11__default.default(dstAssetConfig, `hub asset not found for new bnUSD token: ${params.legacybnUSD}`);
|
|
13523
13619
|
calls.push(EvmVaultTokenService.encodeWithdraw(bnUSDVault, dstAssetConfig.vault, translatedAmount));
|
|
13524
13620
|
calls.push(EvmVaultTokenService.encodeWithdraw(dstAssetConfig.vault, dstAssetConfig.asset, translatedAmount));
|
|
13525
13621
|
const translatedAmountOut = EvmVaultTokenService.translateOutgoingDecimals(
|
|
@@ -13602,7 +13698,7 @@ var BalnSwapService = class {
|
|
|
13602
13698
|
*/
|
|
13603
13699
|
async swapData(balnToken, params) {
|
|
13604
13700
|
const assetConfig = getHubAssetInfo(types.ICON_MAINNET_CHAIN_ID, balnToken);
|
|
13605
|
-
|
|
13701
|
+
invariant11__default.default(assetConfig, `hub asset not found for baln token: ${balnToken}`);
|
|
13606
13702
|
const calls = [];
|
|
13607
13703
|
calls.push(
|
|
13608
13704
|
Erc20Service.encodeApprove(assetConfig.asset, this.hubProvider.chainConfig.addresses.balnSwap, params.amount)
|
|
@@ -15366,9 +15462,9 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15366
15462
|
*/
|
|
15367
15463
|
async isAllowanceValid(params, spokeProvider) {
|
|
15368
15464
|
try {
|
|
15369
|
-
|
|
15370
|
-
|
|
15371
|
-
|
|
15465
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
15466
|
+
invariant11__default.default(params.token.length > 0, "Token is required");
|
|
15467
|
+
invariant11__default.default(
|
|
15372
15468
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15373
15469
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15374
15470
|
);
|
|
@@ -15463,19 +15559,19 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15463
15559
|
*/
|
|
15464
15560
|
async approve(params, spokeProvider, raw) {
|
|
15465
15561
|
try {
|
|
15466
|
-
|
|
15467
|
-
|
|
15468
|
-
|
|
15562
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
15563
|
+
invariant11__default.default(params.token.length > 0, "Token is required");
|
|
15564
|
+
invariant11__default.default(
|
|
15469
15565
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15470
15566
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15471
15567
|
);
|
|
15472
15568
|
const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
|
|
15473
15569
|
if (spokeProvider instanceof EvmSpokeProvider) {
|
|
15474
|
-
|
|
15570
|
+
invariant11__default.default(
|
|
15475
15571
|
params.action === "supply" || params.action === "repay",
|
|
15476
15572
|
"Invalid action (only supply and repay are supported on evm)"
|
|
15477
15573
|
);
|
|
15478
|
-
|
|
15574
|
+
invariant11__default.default(viem.isAddress(params.token), "Invalid token address");
|
|
15479
15575
|
const result = await Erc20Service.approve(
|
|
15480
15576
|
params.token,
|
|
15481
15577
|
params.amount,
|
|
@@ -15489,11 +15585,11 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15489
15585
|
};
|
|
15490
15586
|
}
|
|
15491
15587
|
if (spokeProvider instanceof SonicSpokeProvider && spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id) {
|
|
15492
|
-
|
|
15588
|
+
invariant11__default.default(
|
|
15493
15589
|
params.action === "withdraw" || params.action === "borrow" || params.action === "supply" || params.action === "repay",
|
|
15494
15590
|
"Invalid action (only withdraw, borrow, supply and repay are supported on sonic)"
|
|
15495
15591
|
);
|
|
15496
|
-
|
|
15592
|
+
invariant11__default.default(viem.isAddress(params.token), "Invalid token address");
|
|
15497
15593
|
if (params.action === "withdraw") {
|
|
15498
15594
|
const withdrawInfo = await SonicSpokeService.getWithdrawInfo(
|
|
15499
15595
|
params.token,
|
|
@@ -15665,10 +15761,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15665
15761
|
*/
|
|
15666
15762
|
async createSupplyIntent(params, spokeProvider, raw) {
|
|
15667
15763
|
try {
|
|
15668
|
-
|
|
15669
|
-
|
|
15670
|
-
|
|
15671
|
-
|
|
15764
|
+
invariant11__default.default(params.action === "supply", "Invalid action");
|
|
15765
|
+
invariant11__default.default(params.token.length > 0, "Token is required");
|
|
15766
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
15767
|
+
invariant11__default.default(
|
|
15672
15768
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15673
15769
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15674
15770
|
);
|
|
@@ -15820,10 +15916,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15820
15916
|
* }
|
|
15821
15917
|
*/
|
|
15822
15918
|
async createBorrowIntent(params, spokeProvider, raw) {
|
|
15823
|
-
|
|
15824
|
-
|
|
15825
|
-
|
|
15826
|
-
|
|
15919
|
+
invariant11__default.default(params.action === "borrow", "Invalid action");
|
|
15920
|
+
invariant11__default.default(params.token.length > 0, "Token is required");
|
|
15921
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
15922
|
+
invariant11__default.default(
|
|
15827
15923
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15828
15924
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15829
15925
|
);
|
|
@@ -15955,10 +16051,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
15955
16051
|
* }
|
|
15956
16052
|
*/
|
|
15957
16053
|
async createWithdrawIntent(params, spokeProvider, raw) {
|
|
15958
|
-
|
|
15959
|
-
|
|
15960
|
-
|
|
15961
|
-
|
|
16054
|
+
invariant11__default.default(params.action === "withdraw", "Invalid action");
|
|
16055
|
+
invariant11__default.default(params.token.length > 0, "Token is required");
|
|
16056
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16057
|
+
invariant11__default.default(
|
|
15962
16058
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
15963
16059
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
15964
16060
|
);
|
|
@@ -16110,10 +16206,10 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16110
16206
|
* }
|
|
16111
16207
|
*/
|
|
16112
16208
|
async createRepayIntent(params, spokeProvider, raw) {
|
|
16113
|
-
|
|
16114
|
-
|
|
16115
|
-
|
|
16116
|
-
|
|
16209
|
+
invariant11__default.default(params.action === "repay", "Invalid action");
|
|
16210
|
+
invariant11__default.default(params.token.length > 0, "Token is required");
|
|
16211
|
+
invariant11__default.default(params.amount > 0n, "Amount must be greater than 0");
|
|
16212
|
+
invariant11__default.default(
|
|
16117
16213
|
isMoneyMarketSupportedToken(spokeProvider.chainConfig.chain.id, params.token),
|
|
16118
16214
|
`Unsupported spoke chain (${spokeProvider.chainConfig.chain.id}) token: ${params.token}`
|
|
16119
16215
|
);
|
|
@@ -16156,7 +16252,7 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16156
16252
|
buildSupplyData(token, to, amount, spokeChainId) {
|
|
16157
16253
|
const calls = [];
|
|
16158
16254
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16159
|
-
|
|
16255
|
+
invariant11__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16160
16256
|
let assetAddress = assetConfig.asset;
|
|
16161
16257
|
const vaultAddress = assetConfig.vault;
|
|
16162
16258
|
const lendingPool = this.config.lendingPool;
|
|
@@ -16187,13 +16283,13 @@ var MoneyMarketService = class _MoneyMarketService {
|
|
|
16187
16283
|
* @returns {Hex} The transaction data.
|
|
16188
16284
|
*/
|
|
16189
16285
|
buildBorrowData(from, to, token, amount, spokeChainId) {
|
|
16190
|
-
|
|
16191
|
-
|
|
16286
|
+
invariant11__default.default(isValidSpokeChainId(spokeChainId), `Invalid spokeChainId: ${spokeChainId}`);
|
|
16287
|
+
invariant11__default.default(
|
|
16192
16288
|
isValidOriginalAssetAddress(spokeChainId, token),
|
|
16193
16289
|
`Unsupported spoke chain (${spokeChainId}) token: ${token}`
|
|
16194
16290
|
);
|
|
16195
16291
|
const assetConfig = getHubAssetInfo(spokeChainId, token);
|
|
16196
|
-
|
|
16292
|
+
invariant11__default.default(assetConfig, `hub asset not found for spoke chain token (token): ${token}`);
|
|
16197
16293
|
let assetAddress = assetConfig.asset;
|
|
16198
16294
|
const vaultAddress = assetConfig.vault;
|
|
16199
16295
|
const bnUSDVault = this.config.bnUSDVault;
|