@subwallet/extension-base 1.3.21-0 → 1.3.23-0
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/background/KoniTypes.d.ts +75 -2
- package/background/KoniTypes.js +2 -0
- package/cjs/background/KoniTypes.js +2 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/signing.js +6 -2
- package/cjs/core/logic-validation/recipientAddress.js +9 -1
- package/cjs/core/logic-validation/transfer.js +35 -29
- package/cjs/core/types.js +1 -0
- package/cjs/core/utils.js +12 -1
- package/cjs/defaults.js +1 -1
- package/cjs/koni/api/dotsama/crowdloan.js +1 -1
- package/cjs/koni/api/nft/index.js +9 -16
- package/cjs/koni/api/staking/index.js +3 -4
- package/cjs/koni/background/handlers/Extension.js +234 -96
- package/cjs/koni/background/handlers/State.js +15 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/cardano/consts.js +11 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/index.js +63 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/utils.js +74 -0
- package/cjs/services/balance-service/helpers/subscribe/index.js +21 -7
- package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +2 -2
- package/cjs/services/balance-service/index.js +4 -2
- package/cjs/services/balance-service/transfer/cardano-transfer.js +122 -0
- package/cjs/services/balance-service/transfer/token.js +4 -4
- package/cjs/services/chain-service/constants.js +8 -3
- package/cjs/services/chain-service/handler/CardanoApi.js +176 -0
- package/cjs/services/chain-service/handler/CardanoChainHandler.js +83 -0
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -2
- package/cjs/services/chain-service/handler/TonApi.js +2 -5
- package/cjs/services/chain-service/index.js +38 -7
- package/cjs/services/chain-service/utils/index.js +40 -11
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +2 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/mythos.js +337 -0
- package/cjs/services/earning-service/service.js +10 -12
- package/cjs/services/earning-service/utils/index.js +2 -0
- package/cjs/services/fee-service/service.js +19 -8
- package/cjs/services/history-service/index.js +4 -6
- package/cjs/services/inapp-notification-service/index.js +12 -4
- package/cjs/services/keyring-service/context/account-context.js +17 -2
- package/cjs/services/keyring-service/context/handlers/Derive.js +10 -7
- package/cjs/services/keyring-service/context/handlers/Migration.js +268 -0
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/cjs/services/keyring-service/context/handlers/Secret.js +1 -1
- package/cjs/services/keyring-service/utils.js +18 -0
- package/cjs/services/migration-service/scripts/databases/ClearMetadataDatabase.js +3 -23
- package/cjs/services/migration-service/scripts/databases/ClearMetadataForChains.js +40 -0
- package/cjs/services/migration-service/scripts/databases/ClearMetadataForMythos.js +15 -0
- package/cjs/services/migration-service/scripts/index.js +6 -2
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +172 -0
- package/cjs/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/cjs/services/request-service/index.js +20 -2
- package/cjs/services/setting-service/constants.js +10 -1
- package/cjs/services/storage-service/DatabaseService.js +6 -0
- package/cjs/services/storage-service/db-stores/InappNotification.js +6 -0
- package/cjs/services/storage-service/db-stores/Metadata.js +3 -0
- package/cjs/services/storage-service/db-stores/Migration.js +6 -1
- package/cjs/services/swap-service/handler/asset-hub/handler.js +0 -59
- package/cjs/services/swap-service/handler/chainflip-handler.js +33 -281
- package/cjs/services/swap-service/handler/hydradx-handler.js +23 -190
- package/cjs/services/swap-service/handler/simpleswap-handler.js +1 -222
- package/cjs/services/swap-service/handler/uniswap-handler.js +331 -0
- package/cjs/services/swap-service/index.js +31 -22
- package/cjs/services/swap-service/utils.js +21 -38
- package/cjs/services/transaction-service/helpers/index.js +6 -1
- package/cjs/services/transaction-service/index.js +278 -21
- package/cjs/services/transaction-service/utils.js +5 -1
- package/cjs/types/account/info/keyring.js +12 -1
- package/cjs/types/fee/cardano.js +1 -0
- package/cjs/types/swap/index.js +7 -2
- package/cjs/utils/account/analyze.js +2 -1
- package/cjs/utils/account/common.js +29 -20
- package/cjs/utils/account/derive/info/solo.js +9 -4
- package/cjs/utils/account/derive/validate.js +36 -2
- package/cjs/utils/account/transform.js +38 -13
- package/cjs/utils/fee/transfer.js +40 -7
- package/cjs/utils/index.js +2 -2
- package/cjs/utils/staticData/index.js +7 -2
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/signing.js +6 -2
- package/core/logic-validation/recipientAddress.js +11 -3
- package/core/logic-validation/transfer.js +9 -3
- package/core/substrate/xcm-parser.d.ts +1 -1
- package/core/types.d.ts +1 -0
- package/core/types.js +1 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +13 -3
- package/defaults.d.ts +1 -1
- package/defaults.js +1 -1
- package/koni/api/dotsama/crowdloan.js +3 -3
- package/koni/api/nft/index.js +10 -16
- package/koni/api/nft/story_odyssey_nft/index.d.ts +1 -1
- package/koni/api/staking/index.js +4 -5
- package/koni/background/handlers/Extension.d.ts +9 -0
- package/koni/background/handlers/Extension.js +144 -8
- package/koni/background/handlers/State.d.ts +5 -1
- package/koni/background/handlers/State.js +16 -1
- package/package.json +102 -25
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/cardano/consts.d.ts +1 -0
- package/services/balance-service/helpers/subscribe/cardano/consts.js +4 -0
- package/services/balance-service/helpers/subscribe/cardano/index.d.ts +2 -0
- package/services/balance-service/helpers/subscribe/cardano/index.js +57 -0
- package/services/balance-service/helpers/subscribe/cardano/types.d.ts +34 -0
- package/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.d.ts +15 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.js +62 -0
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/index.js +23 -9
- package/services/balance-service/helpers/subscribe/ton/utils.d.ts +1 -1
- package/services/balance-service/helpers/subscribe/ton/utils.js +1 -1
- package/services/balance-service/index.js +4 -2
- package/services/balance-service/transfer/cardano-transfer.d.ts +24 -0
- package/services/balance-service/transfer/cardano-transfer.js +114 -0
- package/services/balance-service/transfer/token.d.ts +1 -1
- package/services/balance-service/transfer/token.js +2 -2
- package/services/chain-service/constants.js +8 -3
- package/services/chain-service/handler/CardanoApi.d.ts +38 -0
- package/services/chain-service/handler/CardanoApi.js +167 -0
- package/services/chain-service/handler/CardanoChainHandler.d.ts +17 -0
- package/services/chain-service/handler/CardanoChainHandler.js +75 -0
- package/services/chain-service/handler/SubstrateChainHandler.js +3 -2
- package/services/chain-service/handler/TonApi.js +3 -6
- package/services/chain-service/handler/types.d.ts +1 -0
- package/services/chain-service/index.d.ts +4 -1
- package/services/chain-service/index.js +38 -7
- package/services/chain-service/types.d.ts +9 -1
- package/services/chain-service/utils/index.d.ts +4 -0
- package/services/chain-service/utils/index.js +32 -11
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +2 -1
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/services/earning-service/handlers/native-staking/mythos.d.ts +35 -0
- package/services/earning-service/handlers/native-staking/mythos.js +329 -0
- package/services/earning-service/service.js +12 -14
- package/services/earning-service/utils/index.js +2 -0
- package/services/fee-service/service.js +19 -8
- package/services/history-service/index.js +6 -8
- package/services/inapp-notification-service/index.d.ts +3 -4
- package/services/inapp-notification-service/index.js +14 -6
- package/services/keyring-service/context/account-context.d.ts +6 -2
- package/services/keyring-service/context/account-context.js +17 -2
- package/services/keyring-service/context/handlers/Derive.d.ts +1 -1
- package/services/keyring-service/context/handlers/Derive.js +10 -8
- package/services/keyring-service/context/handlers/Migration.d.ts +17 -0
- package/services/keyring-service/context/handlers/Migration.js +258 -0
- package/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/services/keyring-service/context/handlers/Secret.js +2 -2
- package/services/keyring-service/utils.d.ts +2 -0
- package/services/keyring-service/utils.js +11 -0
- package/services/migration-service/scripts/databases/ClearMetadataDatabase.d.ts +3 -3
- package/services/migration-service/scripts/databases/ClearMetadataDatabase.js +3 -23
- package/services/migration-service/scripts/databases/ClearMetadataForChains.d.ts +5 -0
- package/services/migration-service/scripts/databases/ClearMetadataForChains.js +32 -0
- package/services/migration-service/scripts/databases/ClearMetadataForMythos.d.ts +4 -0
- package/services/migration-service/scripts/databases/ClearMetadataForMythos.js +7 -0
- package/services/migration-service/scripts/index.d.ts +1 -0
- package/services/migration-service/scripts/index.js +4 -1
- package/services/request-service/handler/CardanoRequestHandler.d.ts +16 -0
- package/services/request-service/handler/CardanoRequestHandler.js +163 -0
- package/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/services/request-service/index.d.ts +6 -3
- package/services/request-service/index.js +19 -5
- package/services/setting-service/constants.d.ts +3 -0
- package/services/setting-service/constants.js +6 -0
- package/services/storage-service/DatabaseService.d.ts +2 -0
- package/services/storage-service/DatabaseService.js +6 -0
- package/services/storage-service/db-stores/InappNotification.d.ts +1 -0
- package/services/storage-service/db-stores/InappNotification.js +6 -0
- package/services/storage-service/db-stores/Metadata.d.ts +1 -0
- package/services/storage-service/db-stores/Metadata.js +3 -0
- package/services/storage-service/db-stores/Migration.d.ts +1 -0
- package/services/storage-service/db-stores/Migration.js +6 -1
- package/services/swap-service/handler/asset-hub/handler.d.ts +1 -4
- package/services/swap-service/handler/asset-hub/handler.js +2 -61
- package/services/swap-service/handler/base-handler.d.ts +1 -4
- package/services/swap-service/handler/chainflip-handler.d.ts +2 -9
- package/services/swap-service/handler/chainflip-handler.js +31 -280
- package/services/swap-service/handler/hydradx-handler.d.ts +1 -6
- package/services/swap-service/handler/hydradx-handler.js +13 -180
- package/services/swap-service/handler/simpleswap-handler.d.ts +1 -4
- package/services/swap-service/handler/simpleswap-handler.js +5 -226
- package/services/swap-service/handler/uniswap-handler.d.ts +41 -0
- package/services/swap-service/handler/uniswap-handler.js +323 -0
- package/services/swap-service/index.js +30 -22
- package/services/swap-service/utils.d.ts +1 -5
- package/services/swap-service/utils.js +7 -21
- package/services/transaction-service/helpers/index.d.ts +2 -0
- package/services/transaction-service/helpers/index.js +4 -0
- package/services/transaction-service/index.d.ts +8 -2
- package/services/transaction-service/index.js +263 -10
- package/services/transaction-service/types.d.ts +7 -0
- package/services/transaction-service/utils.js +7 -2
- package/types/account/info/keyring.d.ts +4 -1
- package/types/account/info/keyring.js +9 -0
- package/types/account/info/proxy.d.ts +2 -0
- package/types/balance/index.d.ts +4 -1
- package/types/fee/base.d.ts +1 -1
- package/types/fee/cardano.d.ts +18 -0
- package/types/fee/cardano.js +1 -0
- package/types/fee/subscription.d.ts +4 -3
- package/types/swap/index.d.ts +11 -3
- package/types/swap/index.js +7 -2
- package/utils/account/analyze.js +2 -1
- package/utils/account/common.d.ts +11 -6
- package/utils/account/common.js +28 -19
- package/utils/account/derive/info/solo.js +10 -5
- package/utils/account/derive/validate.d.ts +1 -0
- package/utils/account/derive/validate.js +34 -1
- package/utils/account/transform.d.ts +2 -1
- package/utils/account/transform.js +37 -13
- package/utils/fee/transfer.d.ts +2 -1
- package/utils/fee/transfer.js +44 -11
- package/utils/index.js +4 -4
- package/utils/staticData/index.d.ts +4 -1
- package/utils/staticData/index.js +5 -1
- package/utils/staticData/oldChainPrefix.json +1 -0
|
@@ -7,25 +7,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.HydradxHandler = void 0;
|
|
8
8
|
var _sdk = require("@galacticcouncil/sdk");
|
|
9
9
|
var _chainList = require("@subwallet/chain-list");
|
|
10
|
-
var _types = require("@subwallet/chain-list/types");
|
|
11
10
|
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
12
11
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
13
12
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
14
13
|
var _constants = require("@subwallet/extension-base/constants");
|
|
15
|
-
var _swap = require("@subwallet/extension-base/core/logic-validation/swap");
|
|
16
14
|
var _xcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm");
|
|
17
15
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
18
16
|
var _baseHandler = require("@subwallet/extension-base/services/swap-service/handler/base-handler");
|
|
19
17
|
var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
|
|
20
|
-
var
|
|
18
|
+
var _types = require("@subwallet/extension-base/types");
|
|
21
19
|
var _serviceBase = require("@subwallet/extension-base/types/service-base");
|
|
22
|
-
var
|
|
20
|
+
var _swap = require("@subwallet/extension-base/types/swap");
|
|
23
21
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
24
22
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
25
23
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
26
24
|
// SPDX-License-Identifier: Apache-2.0
|
|
27
25
|
|
|
28
|
-
const HYDRADX_LOW_LIQUIDITY_THRESHOLD = 0.15;
|
|
29
26
|
const HYDRADX_SUBWALLET_REFERRAL_CODE = 'WALLET';
|
|
30
27
|
const HYDRADX_SUBWALLET_REFERRAL_ACCOUNT = '7PCsCpkgsHdNaZhv79wCCQ5z97uxVbSeSCtDMUa1eZHKXy4a';
|
|
31
28
|
const HYDRADX_TESTNET_SUBWALLET_REFERRAL_CODE = 'ASSETHUB';
|
|
@@ -40,9 +37,9 @@ class HydradxHandler {
|
|
|
40
37
|
chainService,
|
|
41
38
|
feeService,
|
|
42
39
|
providerName: isTestnet ? 'Hydration Testnet' : 'Hydration',
|
|
43
|
-
providerSlug: isTestnet ?
|
|
40
|
+
providerSlug: isTestnet ? _swap.SwapProviderId.HYDRADX_TESTNET : _swap.SwapProviderId.HYDRADX_MAINNET
|
|
44
41
|
});
|
|
45
|
-
this.providerSlug = isTestnet ?
|
|
42
|
+
this.providerSlug = isTestnet ? _swap.SwapProviderId.HYDRADX_TESTNET : _swap.SwapProviderId.HYDRADX_MAINNET;
|
|
46
43
|
this.isTestnet = isTestnet;
|
|
47
44
|
}
|
|
48
45
|
async init() {
|
|
@@ -120,7 +117,7 @@ class HydradxHandler {
|
|
|
120
117
|
const xcmFeeInfo = _xcmFeeInfo.toPrimitive();
|
|
121
118
|
const fee = {
|
|
122
119
|
feeComponent: [{
|
|
123
|
-
feeType:
|
|
120
|
+
feeType: _swap.SwapFeeType.NETWORK_FEE,
|
|
124
121
|
amount: Math.round(xcmFeeInfo.partialFee * _constants.XCM_MIN_AMOUNT_RATIO).toString(),
|
|
125
122
|
tokenSlug: (0, _utils._getChainNativeTokenSlug)(alternativeChainInfo)
|
|
126
123
|
}],
|
|
@@ -175,7 +172,7 @@ class HydradxHandler {
|
|
|
175
172
|
const txFee = _txFee.toPrimitive();
|
|
176
173
|
const fee = {
|
|
177
174
|
feeComponent: [{
|
|
178
|
-
feeType:
|
|
175
|
+
feeType: _swap.SwapFeeType.NETWORK_FEE,
|
|
179
176
|
amount: Math.round(txFee.partialFee).toString(),
|
|
180
177
|
tokenSlug: selectedFeeAsset.slug
|
|
181
178
|
}],
|
|
@@ -192,7 +189,7 @@ class HydradxHandler {
|
|
|
192
189
|
if (params.selectedQuote) {
|
|
193
190
|
const submitStep = {
|
|
194
191
|
name: 'Swap',
|
|
195
|
-
type:
|
|
192
|
+
type: _swap.SwapStepType.SWAP
|
|
196
193
|
};
|
|
197
194
|
return Promise.resolve([submitStep, params.selectedQuote.feeInfo]);
|
|
198
195
|
}
|
|
@@ -203,120 +200,6 @@ class HydradxHandler {
|
|
|
203
200
|
// this.getFeeOptionStep.bind(this),
|
|
204
201
|
this.getSubmitStep.bind(this)]);
|
|
205
202
|
}
|
|
206
|
-
getSwapPathErrors(swapList) {
|
|
207
|
-
return swapList.reduce((prev, current) => {
|
|
208
|
-
return [...prev, ...current.errors];
|
|
209
|
-
}, []);
|
|
210
|
-
}
|
|
211
|
-
parseSwapPath(swapList) {
|
|
212
|
-
const swapAssets = this.chainService.getAssetByChainAndType(this.chain(), [_types._AssetType.NATIVE, _types._AssetType.LOCAL]);
|
|
213
|
-
const swapAssetIdMap = Object.values(swapAssets).reduce((accumulator, asset) => {
|
|
214
|
-
return {
|
|
215
|
-
...accumulator,
|
|
216
|
-
[(0, _utils._getTokenOnChainAssetId)(asset)]: asset
|
|
217
|
-
};
|
|
218
|
-
}, {});
|
|
219
|
-
const path = [];
|
|
220
|
-
swapList.forEach(swap => {
|
|
221
|
-
var _swapAssetIdMap$swap$, _swapAssetIdMap$swap$2;
|
|
222
|
-
const swapAssetIn = (_swapAssetIdMap$swap$ = swapAssetIdMap[swap.assetIn]) === null || _swapAssetIdMap$swap$ === void 0 ? void 0 : _swapAssetIdMap$swap$.slug;
|
|
223
|
-
const swapAssetOut = (_swapAssetIdMap$swap$2 = swapAssetIdMap[swap.assetOut]) === null || _swapAssetIdMap$swap$2 === void 0 ? void 0 : _swapAssetIdMap$swap$2.slug;
|
|
224
|
-
if (swapAssetIn && !path.includes(swapAssetIn)) {
|
|
225
|
-
path.push(swapAssetIn);
|
|
226
|
-
}
|
|
227
|
-
if (swapAssetOut && !path.includes(swapAssetOut)) {
|
|
228
|
-
path.push(swapAssetOut);
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
return {
|
|
232
|
-
path
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
async getSwapQuote(request) {
|
|
236
|
-
const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
|
|
237
|
-
const toAsset = this.chainService.getAssetBySlug(request.pair.to);
|
|
238
|
-
const fromChain = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
239
|
-
const fromChainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(fromChain);
|
|
240
|
-
if (!this.isReady || !this.tradeRouter) {
|
|
241
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.UNKNOWN);
|
|
242
|
-
}
|
|
243
|
-
const earlyValidation = await this.validateSwapRequest(request);
|
|
244
|
-
if (earlyValidation.error) {
|
|
245
|
-
const metadata = earlyValidation.metadata;
|
|
246
|
-
return (0, _swap._getEarlyHydradxValidationError)(earlyValidation.error, metadata);
|
|
247
|
-
}
|
|
248
|
-
try {
|
|
249
|
-
const fromAssetId = (0, _utils._getTokenOnChainAssetId)(fromAsset);
|
|
250
|
-
const toAssetId = (0, _utils._getTokenOnChainAssetId)(toAsset);
|
|
251
|
-
const parsedFromAmount = new _bignumber.default(request.fromAmount).shiftedBy(-1 * (0, _utils._getAssetDecimals)(fromAsset)).toString();
|
|
252
|
-
const quoteResponse = await this.tradeRouter.getBestSell(fromAssetId, toAssetId, parsedFromAmount);
|
|
253
|
-
const toAmount = quoteResponse.amountOut;
|
|
254
|
-
const minReceive = toAmount.times(1 - request.slippage).integerValue();
|
|
255
|
-
const txHex = quoteResponse.toTx(minReceive).hex;
|
|
256
|
-
const substrateApi = this.chainService.getSubstrateApi(this.chain());
|
|
257
|
-
const extrinsic = substrateApi.api.tx(txHex);
|
|
258
|
-
const paymentInfo = await extrinsic.paymentInfo(request.address);
|
|
259
|
-
const networkFee = {
|
|
260
|
-
tokenSlug: fromChainNativeTokenSlug,
|
|
261
|
-
amount: paymentInfo.partialFee.toString(),
|
|
262
|
-
feeType: _swap2.SwapFeeType.NETWORK_FEE
|
|
263
|
-
};
|
|
264
|
-
const tradeFee = {
|
|
265
|
-
tokenSlug: toAsset.slug,
|
|
266
|
-
// fee is subtracted from receiving amount
|
|
267
|
-
amount: quoteResponse.tradeFee.toString(),
|
|
268
|
-
feeType: _swap2.SwapFeeType.PLATFORM_FEE
|
|
269
|
-
};
|
|
270
|
-
const swapRoute = this.parseSwapPath(quoteResponse.swaps);
|
|
271
|
-
const swapPathErrors = this.getSwapPathErrors(quoteResponse.swaps);
|
|
272
|
-
if (swapPathErrors.length > 0) {
|
|
273
|
-
const defaultError = swapPathErrors[0]; // might parse more errors
|
|
274
|
-
|
|
275
|
-
switch (defaultError) {
|
|
276
|
-
case _sdk.PoolError.InsufficientTradingAmount:
|
|
277
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.NOT_MEET_MIN_SWAP);
|
|
278
|
-
case _sdk.PoolError.TradeNotAllowed:
|
|
279
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
280
|
-
case _sdk.PoolError.MaxInRatioExceeded:
|
|
281
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
|
|
282
|
-
case _sdk.PoolError.UnknownError:
|
|
283
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
284
|
-
case _sdk.PoolError.MaxOutRatioExceeded:
|
|
285
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// const feeTokenOptions = this.chainService.getFeeTokensByChain(this.chain());
|
|
290
|
-
const feeTokenOptions = [fromChainNativeTokenSlug];
|
|
291
|
-
|
|
292
|
-
// if (request.feeToken && !feeTokenOptions.includes(request.feeToken)) {
|
|
293
|
-
// return new SwapError(SwapErrorType.UNKNOWN);
|
|
294
|
-
// }
|
|
295
|
-
|
|
296
|
-
// const selectedFeeToken = request.feeToken || fromChainNativeTokenSlug;
|
|
297
|
-
const selectedFeeToken = fromChainNativeTokenSlug;
|
|
298
|
-
return {
|
|
299
|
-
pair: request.pair,
|
|
300
|
-
fromAmount: request.fromAmount,
|
|
301
|
-
toAmount: toAmount.toString(),
|
|
302
|
-
rate: (0, _utils2.calculateSwapRate)(request.fromAmount, toAmount.toString(), fromAsset, toAsset),
|
|
303
|
-
provider: this.providerInfo,
|
|
304
|
-
aliveUntil: +Date.now() + (_utils2.SWAP_QUOTE_TIMEOUT_MAP[this.slug] || _utils2.SWAP_QUOTE_TIMEOUT_MAP.default),
|
|
305
|
-
feeInfo: {
|
|
306
|
-
feeComponent: [networkFee, tradeFee],
|
|
307
|
-
defaultFeeToken: fromChainNativeTokenSlug,
|
|
308
|
-
feeOptions: feeTokenOptions,
|
|
309
|
-
// TODO: enable fee options
|
|
310
|
-
selectedFeeToken
|
|
311
|
-
},
|
|
312
|
-
isLowLiquidity: Math.abs(quoteResponse.priceImpactPct) >= HYDRADX_LOW_LIQUIDITY_THRESHOLD,
|
|
313
|
-
route: swapRoute,
|
|
314
|
-
metadata: txHex
|
|
315
|
-
};
|
|
316
|
-
} catch (e) {
|
|
317
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
203
|
async handleXcmStep(params) {
|
|
321
204
|
const pair = params.quote.pair;
|
|
322
205
|
const alternativeAssetSlug = (0, _utils2.getSwapAlternativeAsset)(pair);
|
|
@@ -370,9 +253,9 @@ class HydradxHandler {
|
|
|
370
253
|
var _swapFeeInfo$selected;
|
|
371
254
|
const substrateApi = this.chainService.getSubstrateApi(this.chain());
|
|
372
255
|
const chainApi = await substrateApi.isReady;
|
|
373
|
-
const swapStepIndex = params.process.steps.findIndex(step => step.type ===
|
|
256
|
+
const swapStepIndex = params.process.steps.findIndex(step => step.type === _swap.SwapStepType.SWAP);
|
|
374
257
|
if (swapStepIndex <= -1) {
|
|
375
|
-
return Promise.reject(new _TransactionError.TransactionError(
|
|
258
|
+
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR));
|
|
376
259
|
}
|
|
377
260
|
const swapFeeInfo = params.process.totalFee[swapStepIndex];
|
|
378
261
|
const selectedFeeTokenSlug = (_swapFeeInfo$selected = swapFeeInfo.selectedFeeToken) !== null && _swapFeeInfo$selected !== void 0 ? _swapFeeInfo$selected : swapFeeInfo.defaultFeeToken;
|
|
@@ -391,8 +274,18 @@ class HydradxHandler {
|
|
|
391
274
|
};
|
|
392
275
|
}
|
|
393
276
|
async handleSubmitStep(params) {
|
|
394
|
-
const txHex = params.quote.metadata;
|
|
395
277
|
const fromAsset = this.chainService.getAssetBySlug(params.quote.pair.from);
|
|
278
|
+
const toAsset = this.chainService.getAssetBySlug(params.quote.pair.to);
|
|
279
|
+
const fromAssetId = (0, _utils._getTokenOnChainAssetId)(fromAsset);
|
|
280
|
+
const toAssetId = (0, _utils._getTokenOnChainAssetId)(toAsset);
|
|
281
|
+
if (!this.isReady || !this.tradeRouter) {
|
|
282
|
+
return new _SwapError.SwapError(_swap.SwapErrorType.UNKNOWN);
|
|
283
|
+
}
|
|
284
|
+
const parsedFromAmount = new _bignumber.default(params.quote.fromAmount).shiftedBy(-1 * (0, _utils._getAssetDecimals)(fromAsset)).toString();
|
|
285
|
+
const quoteResponse = await this.tradeRouter.getBestSell(fromAssetId, toAssetId, parsedFromAmount);
|
|
286
|
+
const toAmount = quoteResponse.amountOut;
|
|
287
|
+
const minReceive = toAmount.times(1 - params.slippage).integerValue();
|
|
288
|
+
const txHex = quoteResponse.toTx(minReceive).hex;
|
|
396
289
|
const substrateApi = this.chainService.getSubstrateApi(this.chain());
|
|
397
290
|
const chainApi = await substrateApi.isReady;
|
|
398
291
|
const txData = {
|
|
@@ -442,12 +335,12 @@ class HydradxHandler {
|
|
|
442
335
|
const type = process.steps[currentStep].type;
|
|
443
336
|
switch (type) {
|
|
444
337
|
case _serviceBase.CommonStepType.DEFAULT:
|
|
445
|
-
return Promise.reject(new _TransactionError.TransactionError(
|
|
338
|
+
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
|
|
446
339
|
case _serviceBase.CommonStepType.XCM:
|
|
447
340
|
return this.handleXcmStep(params);
|
|
448
341
|
case _serviceBase.CommonStepType.SET_FEE_TOKEN:
|
|
449
342
|
return this.handleSetFeeStep(params);
|
|
450
|
-
case
|
|
343
|
+
case _swap.SwapStepType.SWAP:
|
|
451
344
|
return this.handleSubmitStep(params);
|
|
452
345
|
default:
|
|
453
346
|
return this.handleSubmitStep(params);
|
|
@@ -457,7 +350,7 @@ class HydradxHandler {
|
|
|
457
350
|
const amount = params.selectedQuote.fromAmount;
|
|
458
351
|
const bnAmount = new _bignumber.default(amount);
|
|
459
352
|
if (bnAmount.lte(0)) {
|
|
460
|
-
return [new _TransactionError.TransactionError(
|
|
353
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, 'Amount must be greater than 0')];
|
|
461
354
|
}
|
|
462
355
|
let isXcmOk = false;
|
|
463
356
|
for (const [index, step] of params.process.steps.entries()) {
|
|
@@ -482,66 +375,6 @@ class HydradxHandler {
|
|
|
482
375
|
}
|
|
483
376
|
return [];
|
|
484
377
|
}
|
|
485
|
-
async validateSwapRequest(request) {
|
|
486
|
-
const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
|
|
487
|
-
const toAsset = this.chainService.getAssetBySlug(request.pair.to);
|
|
488
|
-
const fromAssetId = (0, _utils._getTokenOnChainAssetId)(fromAsset);
|
|
489
|
-
const toAssetId = (0, _utils._getTokenOnChainAssetId)(toAsset);
|
|
490
|
-
try {
|
|
491
|
-
var _this$tradeRouter, _this$tradeRouter2;
|
|
492
|
-
// todo: might need to optimize for performance, but prioritize safety for now
|
|
493
|
-
const allAssets = await ((_this$tradeRouter = this.tradeRouter) === null || _this$tradeRouter === void 0 ? void 0 : _this$tradeRouter.getAllAssets());
|
|
494
|
-
if (!allAssets) {
|
|
495
|
-
return {
|
|
496
|
-
error: _swap2.SwapErrorType.UNKNOWN
|
|
497
|
-
};
|
|
498
|
-
}
|
|
499
|
-
const supportedFromAsset = allAssets.find(asset => asset.id === fromAssetId && asset.symbol === fromAsset.symbol);
|
|
500
|
-
const supportedToAsset = allAssets.find(asset => asset.id === toAssetId && asset.symbol === toAsset.symbol);
|
|
501
|
-
if (!supportedFromAsset || !supportedToAsset) {
|
|
502
|
-
return {
|
|
503
|
-
error: _swap2.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
504
|
-
};
|
|
505
|
-
}
|
|
506
|
-
const assetPairs = await ((_this$tradeRouter2 = this.tradeRouter) === null || _this$tradeRouter2 === void 0 ? void 0 : _this$tradeRouter2.getAssetPairs(fromAssetId));
|
|
507
|
-
if (!assetPairs) {
|
|
508
|
-
return {
|
|
509
|
-
error: _swap2.SwapErrorType.UNKNOWN
|
|
510
|
-
};
|
|
511
|
-
}
|
|
512
|
-
const pairedToAsset = assetPairs.find(supportedToAsset => supportedToAsset.id === toAssetId && supportedToAsset.symbol === toAsset.symbol);
|
|
513
|
-
if (!pairedToAsset) {
|
|
514
|
-
return {
|
|
515
|
-
error: _swap2.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
516
|
-
};
|
|
517
|
-
}
|
|
518
|
-
if (!(fromAsset.originChain === this.chain() && toAsset.originChain === this.chain())) {
|
|
519
|
-
return {
|
|
520
|
-
error: _swap2.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
521
|
-
};
|
|
522
|
-
}
|
|
523
|
-
if (!fromAssetId || !toAssetId) {
|
|
524
|
-
return {
|
|
525
|
-
error: _swap2.SwapErrorType.UNKNOWN
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
const bnAmount = new _bignumber.default(request.fromAmount);
|
|
529
|
-
if (bnAmount.lte(0)) {
|
|
530
|
-
return {
|
|
531
|
-
error: _swap2.SwapErrorType.AMOUNT_CANNOT_BE_ZERO
|
|
532
|
-
};
|
|
533
|
-
}
|
|
534
|
-
return {
|
|
535
|
-
metadata: {
|
|
536
|
-
chain: this.chainService.getChainInfoByKey(this.chain())
|
|
537
|
-
}
|
|
538
|
-
};
|
|
539
|
-
} catch (e) {
|
|
540
|
-
return {
|
|
541
|
-
error: _swap2.SwapErrorType.UNKNOWN
|
|
542
|
-
};
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
378
|
get referralCode() {
|
|
546
379
|
if (this.isTestnet) {
|
|
547
380
|
return HYDRADX_TESTNET_SUBWALLET_REFERRAL_CODE;
|
|
@@ -7,7 +7,6 @@ exports.simpleSwapApiKey = exports.SimpleSwapHandler = void 0;
|
|
|
7
7
|
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
8
8
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
9
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
|
-
var _swap = require("@subwallet/extension-base/core/logic-validation/swap");
|
|
11
10
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
12
11
|
var _types = require("@subwallet/extension-base/types");
|
|
13
12
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
@@ -29,72 +28,6 @@ const toBNString = (input, decimal) => {
|
|
|
29
28
|
const raw = new _bignumber.BigNumber(input);
|
|
30
29
|
return raw.shiftedBy(decimal).integerValue(_bignumber.BigNumber.ROUND_CEIL).toFixed();
|
|
31
30
|
};
|
|
32
|
-
const fetchSwapList = async params => {
|
|
33
|
-
const swapListParams = new URLSearchParams({
|
|
34
|
-
api_key: `${simpleSwapApiKey}`,
|
|
35
|
-
fixed: 'false',
|
|
36
|
-
symbol: params.fromSymbol
|
|
37
|
-
});
|
|
38
|
-
const response = await fetch(`${apiUrl}/get_pairs?${swapListParams.toString()}`, {
|
|
39
|
-
headers: {
|
|
40
|
-
accept: 'application/json'
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
return await response.json();
|
|
44
|
-
};
|
|
45
|
-
const fetchRanges = async params => {
|
|
46
|
-
const rangesParams = new URLSearchParams({
|
|
47
|
-
api_key: `${simpleSwapApiKey}`,
|
|
48
|
-
fixed: 'false',
|
|
49
|
-
currency_from: params.fromSymbol,
|
|
50
|
-
currency_to: params.toSymbol
|
|
51
|
-
});
|
|
52
|
-
const response = await fetch(`${apiUrl}/get_ranges?${rangesParams.toString()}`, {
|
|
53
|
-
headers: {
|
|
54
|
-
accept: 'application/json'
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
return await response.json();
|
|
58
|
-
};
|
|
59
|
-
async function getEstimate(request, fromAsset, toAsset) {
|
|
60
|
-
const fromSymbol = _utils3.SIMPLE_SWAP_SUPPORTED_TESTNET_ASSET_MAPPING[fromAsset.slug];
|
|
61
|
-
const toSymbol = _utils3.SIMPLE_SWAP_SUPPORTED_TESTNET_ASSET_MAPPING[toAsset.slug];
|
|
62
|
-
const assetDecimals = (0, _utils._getAssetDecimals)(fromAsset);
|
|
63
|
-
if (!fromSymbol || !toSymbol) {
|
|
64
|
-
throw new _SwapError.SwapError(_types.SwapErrorType.ASSET_NOT_SUPPORTED);
|
|
65
|
-
}
|
|
66
|
-
const formatedAmount = (0, _utils2.formatNumber)(request.fromAmount, assetDecimals, s => s);
|
|
67
|
-
const params = new URLSearchParams({
|
|
68
|
-
api_key: `${simpleSwapApiKey}`,
|
|
69
|
-
fixed: 'false',
|
|
70
|
-
currency_from: fromSymbol,
|
|
71
|
-
currency_to: toSymbol,
|
|
72
|
-
amount: formatedAmount
|
|
73
|
-
});
|
|
74
|
-
try {
|
|
75
|
-
const response = await fetch(`${apiUrl}/get_estimated?${params.toString()}`, {
|
|
76
|
-
headers: {
|
|
77
|
-
accept: 'application/json'
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
if (!response.ok) {
|
|
81
|
-
throw new _SwapError.SwapError(_types.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
82
|
-
}
|
|
83
|
-
const resToAmount = await response.json();
|
|
84
|
-
const toAmount = toBNString(resToAmount, (0, _utils._getAssetDecimals)(toAsset));
|
|
85
|
-
const bnToAmount = new _bignumber.default(toAmount);
|
|
86
|
-
const walletFeeRate = 4 / 1000;
|
|
87
|
-
const toAmountBeforeFee = bnToAmount.dividedBy(new _bignumber.default(1 - walletFeeRate));
|
|
88
|
-
const walletFeeAmount = toAmountBeforeFee.multipliedBy(4).dividedBy(1000).toString();
|
|
89
|
-
return {
|
|
90
|
-
toAmount,
|
|
91
|
-
walletFeeAmount
|
|
92
|
-
};
|
|
93
|
-
} catch (err) {
|
|
94
|
-
console.error('Error:', err);
|
|
95
|
-
throw new _SwapError.SwapError(_types.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
31
|
const createSwapRequest = async params => {
|
|
99
32
|
const fromDecimals = (0, _utils._getAssetDecimals)(params.fromAsset);
|
|
100
33
|
const toDecimals = (0, _utils._getAssetDecimals)(params.toAsset);
|
|
@@ -178,70 +111,6 @@ class SimpleSwapHandler {
|
|
|
178
111
|
get slug() {
|
|
179
112
|
return this.swapBaseHandler.slug;
|
|
180
113
|
}
|
|
181
|
-
async getSwapQuote(request) {
|
|
182
|
-
try {
|
|
183
|
-
var _metadata$maxSwap;
|
|
184
|
-
const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
|
|
185
|
-
const toAsset = this.chainService.getAssetBySlug(request.pair.to);
|
|
186
|
-
if (!fromAsset || !toAsset) {
|
|
187
|
-
return new _SwapError.SwapError(_types.SwapErrorType.UNKNOWN);
|
|
188
|
-
}
|
|
189
|
-
const earlyValidation = await this.validateSwapRequest(request);
|
|
190
|
-
const metadata = earlyValidation.metadata;
|
|
191
|
-
if (earlyValidation.error) {
|
|
192
|
-
return (0, _swap._getSimpleSwapEarlyValidationError)(earlyValidation.error, metadata);
|
|
193
|
-
}
|
|
194
|
-
const {
|
|
195
|
-
toAmount,
|
|
196
|
-
walletFeeAmount
|
|
197
|
-
} = await getEstimate(request, fromAsset, toAsset);
|
|
198
|
-
const fromAmount = request.fromAmount;
|
|
199
|
-
const rate = (0, _utils3.calculateSwapRate)(request.fromAmount, toAmount, fromAsset, toAsset);
|
|
200
|
-
const fromChain = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
201
|
-
const fromChainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(fromChain);
|
|
202
|
-
const defaultFeeToken = (0, _utils._isNativeToken)(fromAsset) ? fromAsset.slug : fromChainNativeTokenSlug;
|
|
203
|
-
const chainType = (0, _utils._isChainSubstrateCompatible)(fromChain) ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM;
|
|
204
|
-
let api;
|
|
205
|
-
if (chainType === _KoniTypes.ChainType.SUBSTRATE) {
|
|
206
|
-
api = this.chainService.getSubstrateApi(fromChain.slug);
|
|
207
|
-
} else {
|
|
208
|
-
api = this.chainService.getEvmApi(fromChain.slug);
|
|
209
|
-
}
|
|
210
|
-
const networkFeeAmount = await (0, _token.getTransferMockTxFee)(request.address, fromChain, fromAsset, api);
|
|
211
|
-
const networkFee = {
|
|
212
|
-
tokenSlug: fromChainNativeTokenSlug,
|
|
213
|
-
amount: networkFeeAmount.toString(),
|
|
214
|
-
feeType: _types.SwapFeeType.NETWORK_FEE
|
|
215
|
-
};
|
|
216
|
-
const walletFee = {
|
|
217
|
-
tokenSlug: toAsset.slug,
|
|
218
|
-
amount: walletFeeAmount,
|
|
219
|
-
feeType: _types.SwapFeeType.WALLET_FEE
|
|
220
|
-
};
|
|
221
|
-
return {
|
|
222
|
-
pair: request.pair,
|
|
223
|
-
fromAmount,
|
|
224
|
-
toAmount,
|
|
225
|
-
rate,
|
|
226
|
-
provider: this.providerInfo,
|
|
227
|
-
aliveUntil: +Date.now() + (_utils3.SWAP_QUOTE_TIMEOUT_MAP[this.slug] || _utils3.SWAP_QUOTE_TIMEOUT_MAP.default),
|
|
228
|
-
minSwap: toBNString(metadata.minSwap.value, (0, _utils._getAssetDecimals)(fromAsset)),
|
|
229
|
-
maxSwap: toBNString((_metadata$maxSwap = metadata.maxSwap) === null || _metadata$maxSwap === void 0 ? void 0 : _metadata$maxSwap.value, (0, _utils._getAssetDecimals)(fromAsset)),
|
|
230
|
-
estimatedArrivalTime: 3600,
|
|
231
|
-
isLowLiquidity: false,
|
|
232
|
-
feeInfo: {
|
|
233
|
-
feeComponent: [networkFee, walletFee],
|
|
234
|
-
defaultFeeToken,
|
|
235
|
-
feeOptions: [defaultFeeToken]
|
|
236
|
-
},
|
|
237
|
-
route: {
|
|
238
|
-
path: [fromAsset.slug, toAsset.slug]
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
|
-
} catch (e) {
|
|
242
|
-
return new _SwapError.SwapError(_types.SwapErrorType.UNKNOWN);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
114
|
generateOptimalProcess(params) {
|
|
246
115
|
return this.swapBaseHandler.generateOptimalProcess(params, [this.getSubmitStep.bind(this)]);
|
|
247
116
|
}
|
|
@@ -255,96 +124,6 @@ class SimpleSwapHandler {
|
|
|
255
124
|
}
|
|
256
125
|
return Promise.resolve(undefined);
|
|
257
126
|
}
|
|
258
|
-
async validateSwapRequest(request) {
|
|
259
|
-
try {
|
|
260
|
-
const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
|
|
261
|
-
const toAsset = this.chainService.getAssetBySlug(request.pair.to);
|
|
262
|
-
if (!fromAsset || !toAsset) {
|
|
263
|
-
return {
|
|
264
|
-
error: _types.SwapErrorType.ERROR_FETCHING_QUOTE
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
const fromSymbol = _utils3.SIMPLE_SWAP_SUPPORTED_TESTNET_ASSET_MAPPING[fromAsset.slug];
|
|
268
|
-
const toSymbol = _utils3.SIMPLE_SWAP_SUPPORTED_TESTNET_ASSET_MAPPING[toAsset.slug];
|
|
269
|
-
if (!fromSymbol || !toSymbol) {
|
|
270
|
-
return {
|
|
271
|
-
error: _types.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
try {
|
|
275
|
-
const swapList = await fetchSwapList({
|
|
276
|
-
fromSymbol
|
|
277
|
-
});
|
|
278
|
-
if (!swapList.includes(toSymbol)) {
|
|
279
|
-
return {
|
|
280
|
-
error: _types.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
|
-
} catch (err) {
|
|
284
|
-
console.error('Error:', err);
|
|
285
|
-
}
|
|
286
|
-
const ranges = await fetchRanges({
|
|
287
|
-
fromSymbol,
|
|
288
|
-
toSymbol
|
|
289
|
-
});
|
|
290
|
-
const {
|
|
291
|
-
max,
|
|
292
|
-
min
|
|
293
|
-
} = ranges;
|
|
294
|
-
const bnMin = toBNString(min, (0, _utils._getAssetDecimals)(fromAsset));
|
|
295
|
-
const bnAmount = BigInt(request.fromAmount);
|
|
296
|
-
if (bnAmount < BigInt(bnMin)) {
|
|
297
|
-
return {
|
|
298
|
-
error: _types.SwapErrorType.NOT_MEET_MIN_SWAP,
|
|
299
|
-
metadata: {
|
|
300
|
-
minSwap: {
|
|
301
|
-
value: min,
|
|
302
|
-
symbol: fromAsset.symbol
|
|
303
|
-
},
|
|
304
|
-
maxSwap: max ? {
|
|
305
|
-
value: max,
|
|
306
|
-
symbol: fromAsset.symbol
|
|
307
|
-
} : undefined,
|
|
308
|
-
chain: this.chainService.getChainInfoByKey(fromAsset.originChain)
|
|
309
|
-
}
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
if (max && bnAmount > BigInt(toBNString(max, (0, _utils._getAssetDecimals)(fromAsset)))) {
|
|
313
|
-
return {
|
|
314
|
-
error: _types.SwapErrorType.SWAP_EXCEED_ALLOWANCE,
|
|
315
|
-
metadata: {
|
|
316
|
-
minSwap: {
|
|
317
|
-
value: min,
|
|
318
|
-
symbol: fromAsset.symbol
|
|
319
|
-
},
|
|
320
|
-
maxSwap: {
|
|
321
|
-
value: max,
|
|
322
|
-
symbol: fromAsset.symbol
|
|
323
|
-
},
|
|
324
|
-
chain: this.chainService.getChainInfoByKey(fromAsset.originChain)
|
|
325
|
-
}
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
|
-
return {
|
|
329
|
-
metadata: {
|
|
330
|
-
minSwap: {
|
|
331
|
-
value: min,
|
|
332
|
-
symbol: fromAsset.symbol
|
|
333
|
-
},
|
|
334
|
-
maxSwap: max ? {
|
|
335
|
-
value: max,
|
|
336
|
-
symbol: fromAsset.symbol
|
|
337
|
-
} : undefined,
|
|
338
|
-
chain: this.chainService.getChainInfoByKey(fromAsset.originChain)
|
|
339
|
-
}
|
|
340
|
-
};
|
|
341
|
-
} catch (e) {
|
|
342
|
-
console.error(e);
|
|
343
|
-
return {
|
|
344
|
-
error: _types.SwapErrorType.UNKNOWN
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
127
|
async handleSwapProcess(params) {
|
|
349
128
|
const {
|
|
350
129
|
currentStep,
|
|
@@ -414,7 +193,7 @@ class SimpleSwapHandler {
|
|
|
414
193
|
if (chainType === _KoniTypes.ChainType.SUBSTRATE) {
|
|
415
194
|
const chainApi = this.chainService.getSubstrateApi(chainInfo.slug);
|
|
416
195
|
const substrateApi = await chainApi.isReady;
|
|
417
|
-
const [submittableExtrinsic] = await (0, _token.
|
|
196
|
+
const [submittableExtrinsic] = await (0, _token.createSubstrateExtrinsic)({
|
|
418
197
|
from: address,
|
|
419
198
|
networkKey: chainInfo.slug,
|
|
420
199
|
substrateApi,
|