@subwallet/extension-base 1.2.3-0 → 1.2.4-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 +4 -153
- package/background/KoniTypes.js +0 -21
- package/cjs/background/KoniTypes.js +1 -22
- package/cjs/core/logic-validation/earning.js +47 -0
- package/cjs/core/logic-validation/swap.js +99 -0
- package/cjs/core/logic-validation/transfer.js +212 -0
- package/cjs/core/substrate/nominationpools-pallet.js +22 -0
- package/cjs/core/substrate/system-pallet.js +77 -0
- package/cjs/core/substrate/xcm-parser.js +190 -0
- package/cjs/koni/api/dotsama/transfer.js +58 -122
- package/cjs/koni/api/staking/bonding/utils.js +1 -1
- package/cjs/koni/api/xcm/index.js +30 -2
- package/cjs/koni/api/xcm/polkadotXcm.js +12 -20
- package/cjs/koni/api/xcm/utils.js +8 -126
- package/cjs/koni/api/xcm/xTokens.js +10 -8
- package/cjs/koni/api/xcm/xcmPallet.js +6 -6
- package/cjs/koni/background/handlers/Extension.js +223 -356
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/group.js +4 -27
- package/cjs/services/balance-service/helpers/subscribe/index.js +2 -30
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +46 -82
- package/cjs/services/balance-service/index.js +11 -9
- package/cjs/services/chain-service/constants.js +2 -2
- package/cjs/services/chain-service/index.js +0 -1
- package/cjs/services/chain-service/utils/index.js +13 -2
- package/cjs/services/earning-service/handlers/base.js +1 -1
- package/cjs/services/earning-service/handlers/special.js +11 -12
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +2 -1
- package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +2 -1
- package/cjs/services/migration-service/scripts/index.js +2 -2
- package/cjs/services/swap-service/handler/base-handler.js +30 -44
- package/cjs/services/swap-service/handler/chainflip-handler.js +23 -21
- package/cjs/services/swap-service/handler/hydradx-handler.js +41 -39
- package/cjs/services/swap-service/index.js +6 -0
- package/cjs/services/swap-service/utils.js +8 -49
- package/cjs/services/transaction-service/index.js +66 -155
- package/core/logic-validation/earning.d.ts +10 -0
- package/core/logic-validation/earning.js +37 -0
- package/core/logic-validation/swap.d.ts +8 -0
- package/core/logic-validation/swap.js +89 -0
- package/core/logic-validation/transfer.d.ts +16 -0
- package/core/logic-validation/transfer.js +199 -0
- package/core/substrate/nominationpools-pallet.d.ts +10 -0
- package/core/substrate/nominationpools-pallet.js +13 -0
- package/core/substrate/system-pallet.d.ts +27 -0
- package/core/substrate/system-pallet.js +70 -0
- package/core/substrate/xcm-parser.d.ts +49 -0
- package/core/substrate/xcm-parser.js +181 -0
- package/koni/api/dotsama/transfer.d.ts +3 -4
- package/koni/api/dotsama/transfer.js +54 -118
- package/koni/api/staking/bonding/relayChain.d.ts +2 -1
- package/koni/api/staking/bonding/utils.js +1 -1
- package/koni/api/xcm/index.d.ts +2 -0
- package/koni/api/xcm/index.js +27 -1
- package/koni/api/xcm/polkadotXcm.js +14 -22
- package/koni/api/xcm/utils.d.ts +3 -48
- package/koni/api/xcm/utils.js +5 -114
- package/koni/api/xcm/xTokens.js +12 -10
- package/koni/api/xcm/xcmPallet.js +7 -7
- package/koni/background/handlers/Extension.d.ts +6 -8
- package/koni/background/handlers/Extension.js +117 -247
- package/package.json +39 -9
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/group.js +4 -27
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -1
- package/services/balance-service/helpers/subscribe/index.js +2 -30
- package/services/balance-service/helpers/subscribe/substrate/index.d.ts +2 -1
- package/services/balance-service/helpers/subscribe/substrate/index.js +31 -66
- package/services/balance-service/index.d.ts +7 -6
- package/services/balance-service/index.js +12 -10
- package/services/chain-service/constants.js +2 -2
- package/services/chain-service/index.js +0 -1
- package/services/chain-service/utils/index.d.ts +4 -2
- package/services/chain-service/utils/index.js +9 -2
- package/services/earning-service/handlers/base.js +1 -1
- package/services/earning-service/handlers/nomination-pool/index.d.ts +2 -1
- package/services/earning-service/handlers/special.js +11 -12
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +2 -1
- package/services/migration-service/scripts/databases/MigrateAssetSetting.js +2 -1
- package/services/migration-service/scripts/index.js +2 -2
- package/services/swap-service/handler/base-handler.d.ts +3 -2
- package/services/swap-service/handler/base-handler.js +28 -42
- package/services/swap-service/handler/chainflip-handler.d.ts +2 -1
- package/services/swap-service/handler/chainflip-handler.js +4 -2
- package/services/swap-service/handler/hydradx-handler.d.ts +2 -1
- package/services/swap-service/handler/hydradx-handler.js +8 -6
- package/services/swap-service/index.js +7 -1
- package/services/swap-service/utils.d.ts +2 -4
- package/services/swap-service/utils.js +7 -47
- package/services/transaction-service/index.d.ts +1 -1
- package/services/transaction-service/index.js +30 -119
- package/services/transaction-service/types.d.ts +1 -0
- package/types/balance/index.d.ts +6 -10
- package/types/yield/info/pallet.d.ts +0 -6
|
@@ -11,11 +11,12 @@ var _types = require("@subwallet/chain-list/types");
|
|
|
11
11
|
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
12
12
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
13
13
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
14
|
+
var _swap = require("@subwallet/extension-base/core/logic-validation/swap");
|
|
14
15
|
var _xcm = require("@subwallet/extension-base/koni/api/xcm");
|
|
15
16
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
16
17
|
var _baseHandler = require("@subwallet/extension-base/services/swap-service/handler/base-handler");
|
|
17
18
|
var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
|
|
18
|
-
var
|
|
19
|
+
var _swap2 = require("@subwallet/extension-base/types/swap");
|
|
19
20
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
20
21
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
21
22
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -33,9 +34,10 @@ class HydradxHandler {
|
|
|
33
34
|
this.swapBaseHandler = new _baseHandler.SwapBaseHandler({
|
|
34
35
|
balanceService,
|
|
35
36
|
chainService,
|
|
36
|
-
providerName: isTestnet ? '
|
|
37
|
-
providerSlug: isTestnet ?
|
|
37
|
+
providerName: isTestnet ? 'Hydration Testnet' : 'Hydration',
|
|
38
|
+
providerSlug: isTestnet ? _swap2.SwapProviderId.HYDRADX_TESTNET : _swap2.SwapProviderId.HYDRADX_MAINNET
|
|
38
39
|
});
|
|
40
|
+
this.providerSlug = isTestnet ? _swap2.SwapProviderId.HYDRADX_TESTNET : _swap2.SwapProviderId.HYDRADX_MAINNET;
|
|
39
41
|
this.isTestnet = isTestnet;
|
|
40
42
|
}
|
|
41
43
|
async init() {
|
|
@@ -75,7 +77,7 @@ class HydradxHandler {
|
|
|
75
77
|
async getXcmStep(params) {
|
|
76
78
|
const bnAmount = new _bignumber.default(params.request.fromAmount);
|
|
77
79
|
const fromAsset = this.chainService.getAssetBySlug(params.request.pair.from);
|
|
78
|
-
const fromAssetBalance = await this.balanceService.
|
|
80
|
+
const fromAssetBalance = await this.balanceService.getTransferableBalance(params.request.address, fromAsset.originChain, fromAsset.slug);
|
|
79
81
|
const bnFromAssetBalance = new _bignumber.default(fromAssetBalance.value);
|
|
80
82
|
if (bnFromAssetBalance.gte(bnAmount)) {
|
|
81
83
|
return undefined; // enough balance, no need to xcm
|
|
@@ -86,7 +88,7 @@ class HydradxHandler {
|
|
|
86
88
|
return undefined;
|
|
87
89
|
}
|
|
88
90
|
const alternativeAsset = this.chainService.getAssetBySlug(alternativeAssetSlug);
|
|
89
|
-
const alternativeAssetBalance = await this.balanceService.
|
|
91
|
+
const alternativeAssetBalance = await this.balanceService.getTransferableBalance(params.request.address, alternativeAsset.originChain, alternativeAsset.slug);
|
|
90
92
|
const bnAlternativeAssetBalance = new _bignumber.default(alternativeAssetBalance.value);
|
|
91
93
|
if (bnAlternativeAssetBalance.lte(0)) {
|
|
92
94
|
return undefined;
|
|
@@ -100,7 +102,7 @@ class HydradxHandler {
|
|
|
100
102
|
destinationTokenInfo: fromAsset
|
|
101
103
|
},
|
|
102
104
|
name: `Transfer ${alternativeAsset.symbol} from ${alternativeChainInfo.name}`,
|
|
103
|
-
type:
|
|
105
|
+
type: _swap2.SwapStepType.XCM
|
|
104
106
|
};
|
|
105
107
|
const xcmOriginSubstrateApi = await this.chainService.getSubstrateApi(alternativeAsset.originChain).isReady;
|
|
106
108
|
const xcmTransfer = await (0, _xcm.createXcmExtrinsic)({
|
|
@@ -115,7 +117,7 @@ class HydradxHandler {
|
|
|
115
117
|
const xcmFeeInfo = _xcmFeeInfo.toPrimitive();
|
|
116
118
|
const fee = {
|
|
117
119
|
feeComponent: [{
|
|
118
|
-
feeType:
|
|
120
|
+
feeType: _swap2.SwapFeeType.NETWORK_FEE,
|
|
119
121
|
amount: Math.round(xcmFeeInfo.partialFee * 1.2).toString(),
|
|
120
122
|
tokenSlug: (0, _utils._getChainNativeTokenSlug)(alternativeChainInfo)
|
|
121
123
|
}],
|
|
@@ -137,7 +139,7 @@ class HydradxHandler {
|
|
|
137
139
|
}
|
|
138
140
|
const feeStep = {
|
|
139
141
|
name: 'Set fee token',
|
|
140
|
-
type:
|
|
142
|
+
type: _swap2.SwapStepType.SET_FEE_TOKEN
|
|
141
143
|
};
|
|
142
144
|
try {
|
|
143
145
|
const substrateApi = this.chainService.getSubstrateApi(this.chain());
|
|
@@ -154,7 +156,7 @@ class HydradxHandler {
|
|
|
154
156
|
const txFee = _txFee.toPrimitive();
|
|
155
157
|
const fee = {
|
|
156
158
|
feeComponent: [{
|
|
157
|
-
feeType:
|
|
159
|
+
feeType: _swap2.SwapFeeType.NETWORK_FEE,
|
|
158
160
|
amount: Math.round(txFee.partialFee).toString(),
|
|
159
161
|
tokenSlug: selectedFeeAsset.slug
|
|
160
162
|
}],
|
|
@@ -171,7 +173,7 @@ class HydradxHandler {
|
|
|
171
173
|
if (params.selectedQuote) {
|
|
172
174
|
const submitStep = {
|
|
173
175
|
name: 'Swap',
|
|
174
|
-
type:
|
|
176
|
+
type: _swap2.SwapStepType.SWAP
|
|
175
177
|
};
|
|
176
178
|
return Promise.resolve([submitStep, params.selectedQuote.feeInfo]);
|
|
177
179
|
}
|
|
@@ -217,12 +219,12 @@ class HydradxHandler {
|
|
|
217
219
|
const fromChain = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
218
220
|
const fromChainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(fromChain);
|
|
219
221
|
if (!this.isReady || !this.tradeRouter) {
|
|
220
|
-
return new _SwapError.SwapError(
|
|
222
|
+
return new _SwapError.SwapError(_swap2.SwapErrorType.UNKNOWN);
|
|
221
223
|
}
|
|
222
224
|
const earlyValidation = await this.validateSwapRequest(request);
|
|
223
225
|
if (earlyValidation.error) {
|
|
224
226
|
const metadata = earlyValidation.metadata;
|
|
225
|
-
return (0,
|
|
227
|
+
return (0, _swap._getEarlyHydradxValidationError)(earlyValidation.error, metadata);
|
|
226
228
|
}
|
|
227
229
|
try {
|
|
228
230
|
const fromAssetId = (0, _utils._getTokenOnChainAssetId)(fromAsset);
|
|
@@ -238,13 +240,13 @@ class HydradxHandler {
|
|
|
238
240
|
const networkFee = {
|
|
239
241
|
tokenSlug: fromChainNativeTokenSlug,
|
|
240
242
|
amount: paymentInfo.partialFee.toString(),
|
|
241
|
-
feeType:
|
|
243
|
+
feeType: _swap2.SwapFeeType.NETWORK_FEE
|
|
242
244
|
};
|
|
243
245
|
const tradeFee = {
|
|
244
246
|
tokenSlug: toAsset.slug,
|
|
245
247
|
// fee is subtracted from receiving amount
|
|
246
248
|
amount: quoteResponse.tradeFee.toString(),
|
|
247
|
-
feeType:
|
|
249
|
+
feeType: _swap2.SwapFeeType.PLATFORM_FEE
|
|
248
250
|
};
|
|
249
251
|
const swapRoute = this.parseSwapPath(quoteResponse.swaps);
|
|
250
252
|
const swapPathErrors = this.getSwapPathErrors(quoteResponse.swaps);
|
|
@@ -253,15 +255,15 @@ class HydradxHandler {
|
|
|
253
255
|
|
|
254
256
|
switch (defaultError) {
|
|
255
257
|
case _sdk.PoolError.InsufficientTradingAmount:
|
|
256
|
-
return new _SwapError.SwapError(
|
|
258
|
+
return new _SwapError.SwapError(_swap2.SwapErrorType.SWAP_NOT_ENOUGH_BALANCE);
|
|
257
259
|
case _sdk.PoolError.TradeNotAllowed:
|
|
258
|
-
return new _SwapError.SwapError(
|
|
260
|
+
return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
259
261
|
case _sdk.PoolError.MaxInRatioExceeded:
|
|
260
|
-
return new _SwapError.SwapError(
|
|
262
|
+
return new _SwapError.SwapError(_swap2.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
|
|
261
263
|
case _sdk.PoolError.UnknownError:
|
|
262
|
-
return new _SwapError.SwapError(
|
|
264
|
+
return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
263
265
|
case _sdk.PoolError.MaxOutRatioExceeded:
|
|
264
|
-
return new _SwapError.SwapError(
|
|
266
|
+
return new _SwapError.SwapError(_swap2.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
|
|
265
267
|
}
|
|
266
268
|
}
|
|
267
269
|
|
|
@@ -293,7 +295,7 @@ class HydradxHandler {
|
|
|
293
295
|
metadata: txHex
|
|
294
296
|
};
|
|
295
297
|
} catch (e) {
|
|
296
|
-
return new _SwapError.SwapError(
|
|
298
|
+
return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
297
299
|
}
|
|
298
300
|
}
|
|
299
301
|
async handleXcmStep(params) {
|
|
@@ -303,7 +305,7 @@ class HydradxHandler {
|
|
|
303
305
|
const destinationAsset = this.chainService.getAssetBySlug(pair.from);
|
|
304
306
|
const substrateApi = this.chainService.getSubstrateApi(originAsset.originChain);
|
|
305
307
|
const chainApi = await substrateApi.isReady;
|
|
306
|
-
const destinationAssetBalance = await this.balanceService.
|
|
308
|
+
const destinationAssetBalance = await this.balanceService.getTransferableBalance(params.address, destinationAsset.originChain, destinationAsset.slug);
|
|
307
309
|
const xcmFee = params.process.totalFee[params.currentStep];
|
|
308
310
|
const bnAmount = new _bignumber.default(params.quote.fromAmount);
|
|
309
311
|
const bnDestinationAssetBalance = new _bignumber.default(destinationAssetBalance.value);
|
|
@@ -343,7 +345,7 @@ class HydradxHandler {
|
|
|
343
345
|
var _swapFeeInfo$selected;
|
|
344
346
|
const substrateApi = this.chainService.getSubstrateApi(this.chain());
|
|
345
347
|
const chainApi = await substrateApi.isReady;
|
|
346
|
-
const swapStepIndex = params.process.steps.findIndex(step => step.type ===
|
|
348
|
+
const swapStepIndex = params.process.steps.findIndex(step => step.type === _swap2.SwapStepType.SWAP);
|
|
347
349
|
if (swapStepIndex <= -1) {
|
|
348
350
|
return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR));
|
|
349
351
|
}
|
|
@@ -383,7 +385,7 @@ class HydradxHandler {
|
|
|
383
385
|
const referral = _referral === null || _referral === void 0 ? void 0 : _referral.toString();
|
|
384
386
|
const needSetReferral = !referral || referral === '';
|
|
385
387
|
const steps = params.process.steps.map(step => step.type);
|
|
386
|
-
const needSetFeeToken = steps.includes(
|
|
388
|
+
const needSetFeeToken = steps.includes(_swap2.SwapStepType.SET_FEE_TOKEN);
|
|
387
389
|
if (!needSetReferral && !needSetFeeToken) {
|
|
388
390
|
extrinsic = swapTx;
|
|
389
391
|
} else {
|
|
@@ -414,13 +416,13 @@ class HydradxHandler {
|
|
|
414
416
|
} = params;
|
|
415
417
|
const type = process.steps[currentStep].type;
|
|
416
418
|
switch (type) {
|
|
417
|
-
case
|
|
419
|
+
case _swap2.SwapStepType.DEFAULT:
|
|
418
420
|
return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED));
|
|
419
|
-
case
|
|
421
|
+
case _swap2.SwapStepType.XCM:
|
|
420
422
|
return this.handleXcmStep(params);
|
|
421
|
-
case
|
|
423
|
+
case _swap2.SwapStepType.SET_FEE_TOKEN:
|
|
422
424
|
return this.handleSetFeeStep(params);
|
|
423
|
-
case
|
|
425
|
+
case _swap2.SwapStepType.SWAP:
|
|
424
426
|
return this.handleSubmitStep(params);
|
|
425
427
|
default:
|
|
426
428
|
return this.handleSubmitStep(params);
|
|
@@ -436,11 +438,11 @@ class HydradxHandler {
|
|
|
436
438
|
for (const [index, step] of params.process.steps.entries()) {
|
|
437
439
|
const getErrors = async () => {
|
|
438
440
|
switch (step.type) {
|
|
439
|
-
case
|
|
441
|
+
case _swap2.SwapStepType.DEFAULT:
|
|
440
442
|
return Promise.resolve([]);
|
|
441
|
-
case
|
|
443
|
+
case _swap2.SwapStepType.XCM:
|
|
442
444
|
return this.swapBaseHandler.validateXcmStep(params, index);
|
|
443
|
-
case
|
|
445
|
+
case _swap2.SwapStepType.SET_FEE_TOKEN:
|
|
444
446
|
return this.swapBaseHandler.validateSetFeeTokenStep(params, index);
|
|
445
447
|
default:
|
|
446
448
|
return this.swapBaseHandler.validateSwapStep(params, isXcmOk, index);
|
|
@@ -449,7 +451,7 @@ class HydradxHandler {
|
|
|
449
451
|
const errors = await getErrors();
|
|
450
452
|
if (errors.length) {
|
|
451
453
|
return errors;
|
|
452
|
-
} else if (step.type ===
|
|
454
|
+
} else if (step.type === _swap2.SwapStepType.XCM) {
|
|
453
455
|
isXcmOk = true;
|
|
454
456
|
}
|
|
455
457
|
}
|
|
@@ -466,42 +468,42 @@ class HydradxHandler {
|
|
|
466
468
|
const allAssets = await ((_this$tradeRouter = this.tradeRouter) === null || _this$tradeRouter === void 0 ? void 0 : _this$tradeRouter.getAllAssets());
|
|
467
469
|
if (!allAssets) {
|
|
468
470
|
return {
|
|
469
|
-
error:
|
|
471
|
+
error: _swap2.SwapErrorType.UNKNOWN
|
|
470
472
|
};
|
|
471
473
|
}
|
|
472
474
|
const supportedFromAsset = allAssets.find(asset => asset.id === fromAssetId && asset.symbol === fromAsset.symbol);
|
|
473
475
|
const supportedToAsset = allAssets.find(asset => asset.id === toAssetId && asset.symbol === toAsset.symbol);
|
|
474
476
|
if (!supportedFromAsset || !supportedToAsset) {
|
|
475
477
|
return {
|
|
476
|
-
error:
|
|
478
|
+
error: _swap2.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
477
479
|
};
|
|
478
480
|
}
|
|
479
481
|
const assetPairs = await ((_this$tradeRouter2 = this.tradeRouter) === null || _this$tradeRouter2 === void 0 ? void 0 : _this$tradeRouter2.getAssetPairs(fromAssetId));
|
|
480
482
|
if (!assetPairs) {
|
|
481
483
|
return {
|
|
482
|
-
error:
|
|
484
|
+
error: _swap2.SwapErrorType.UNKNOWN
|
|
483
485
|
};
|
|
484
486
|
}
|
|
485
487
|
const pairedToAsset = assetPairs.find(supportedToAsset => supportedToAsset.id === toAssetId && supportedToAsset.symbol === toAsset.symbol);
|
|
486
488
|
if (!pairedToAsset) {
|
|
487
489
|
return {
|
|
488
|
-
error:
|
|
490
|
+
error: _swap2.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
489
491
|
};
|
|
490
492
|
}
|
|
491
493
|
if (!(fromAsset.originChain === this.chain() && toAsset.originChain === this.chain())) {
|
|
492
494
|
return {
|
|
493
|
-
error:
|
|
495
|
+
error: _swap2.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
494
496
|
};
|
|
495
497
|
}
|
|
496
498
|
if (!fromAssetId || !toAssetId) {
|
|
497
499
|
return {
|
|
498
|
-
error:
|
|
500
|
+
error: _swap2.SwapErrorType.UNKNOWN
|
|
499
501
|
};
|
|
500
502
|
}
|
|
501
503
|
const bnAmount = new _bignumber.default(request.fromAmount);
|
|
502
504
|
if (bnAmount.lte(0)) {
|
|
503
505
|
return {
|
|
504
|
-
error:
|
|
506
|
+
error: _swap2.SwapErrorType.AMOUNT_CANNOT_BE_ZERO
|
|
505
507
|
};
|
|
506
508
|
}
|
|
507
509
|
return {
|
|
@@ -511,7 +513,7 @@ class HydradxHandler {
|
|
|
511
513
|
};
|
|
512
514
|
} catch (e) {
|
|
513
515
|
return {
|
|
514
|
-
error:
|
|
516
|
+
error: _swap2.SwapErrorType.UNKNOWN
|
|
515
517
|
};
|
|
516
518
|
}
|
|
517
519
|
}
|
|
@@ -30,12 +30,18 @@ class SwapService {
|
|
|
30
30
|
}
|
|
31
31
|
async askProvidersForQuote(request) {
|
|
32
32
|
const availableQuotes = [];
|
|
33
|
+
const swappingSrcChain = this.chainService.getAssetBySlug(request.pair.from).originChain;
|
|
33
34
|
await Promise.all(Object.values(this.handlers).map(async handler => {
|
|
35
|
+
// temporary solution to reduce number of requests to providers, will work as long as there's only 1 provider for 1 chain
|
|
36
|
+
if (!_utils._PROVIDER_TO_SUPPORTED_PAIR_MAP[handler.providerSlug].includes(swappingSrcChain)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
34
39
|
if (handler.init && handler.isReady === false) {
|
|
35
40
|
await handler.init();
|
|
36
41
|
}
|
|
37
42
|
const quote = await handler.getSwapQuote(request);
|
|
38
43
|
if (!(quote instanceof _SwapError.SwapError)) {
|
|
44
|
+
// todo: can do better
|
|
39
45
|
availableQuotes.push({
|
|
40
46
|
quote
|
|
41
47
|
});
|
|
@@ -4,18 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.SWAP_QUOTE_TIMEOUT_MAP = exports.MOCK_SWAP_FEE = exports.DEFAULT_SWAP_FIRST_STEP = exports.CHAIN_FLIP_TESTNET_EXPLORER = exports.CHAIN_FLIP_SUPPORTED_TESTNET_MAPPING = exports.CHAIN_FLIP_SUPPORTED_TESTNET_ASSET_MAPPING = exports.CHAIN_FLIP_SUPPORTED_MAINNET_MAPPING = exports.CHAIN_FLIP_SUPPORTED_MAINNET_ASSET_MAPPING = exports.CHAIN_FLIP_MAINNET_EXPLORER = void 0;
|
|
7
|
+
exports._PROVIDER_TO_SUPPORTED_PAIR_MAP = exports.SWAP_QUOTE_TIMEOUT_MAP = exports.MOCK_SWAP_FEE = exports.DEFAULT_SWAP_FIRST_STEP = exports.CHAIN_FLIP_TESTNET_EXPLORER = exports.CHAIN_FLIP_SUPPORTED_TESTNET_MAPPING = exports.CHAIN_FLIP_SUPPORTED_TESTNET_ASSET_MAPPING = exports.CHAIN_FLIP_SUPPORTED_MAINNET_MAPPING = exports.CHAIN_FLIP_SUPPORTED_MAINNET_ASSET_MAPPING = exports.CHAIN_FLIP_MAINNET_EXPLORER = void 0;
|
|
8
8
|
exports.calculateSwapRate = calculateSwapRate;
|
|
9
|
-
exports.getChainflipEarlyValidationError = getChainflipEarlyValidationError;
|
|
10
|
-
exports.getEarlyHydradxValidationError = getEarlyHydradxValidationError;
|
|
11
9
|
exports.getSwapAltToken = getSwapAltToken;
|
|
12
10
|
exports.getSwapAlternativeAsset = getSwapAlternativeAsset;
|
|
13
11
|
var _swap = require("@chainflip/sdk/swap");
|
|
14
12
|
var _chainList = require("@subwallet/chain-list");
|
|
15
|
-
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
16
13
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
17
14
|
var _swap2 = require("@subwallet/extension-base/types/swap");
|
|
18
|
-
var _utils2 = require("@subwallet/extension-base/utils");
|
|
19
15
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
20
16
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
21
17
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -65,6 +61,13 @@ const MOCK_SWAP_FEE = {
|
|
|
65
61
|
feeOptions: []
|
|
66
62
|
};
|
|
67
63
|
exports.MOCK_SWAP_FEE = MOCK_SWAP_FEE;
|
|
64
|
+
const _PROVIDER_TO_SUPPORTED_PAIR_MAP = {
|
|
65
|
+
[_swap2.SwapProviderId.HYDRADX_MAINNET]: [_chainList.COMMON_CHAIN_SLUGS.HYDRADX],
|
|
66
|
+
[_swap2.SwapProviderId.HYDRADX_TESTNET]: [_chainList.COMMON_CHAIN_SLUGS.HYDRADX_TESTNET],
|
|
67
|
+
[_swap2.SwapProviderId.CHAIN_FLIP_MAINNET]: [_chainList.COMMON_CHAIN_SLUGS.POLKADOT, _chainList.COMMON_CHAIN_SLUGS.ETHEREUM],
|
|
68
|
+
[_swap2.SwapProviderId.CHAIN_FLIP_TESTNET]: [_chainList.COMMON_CHAIN_SLUGS.CHAINFLIP_POLKADOT, _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA]
|
|
69
|
+
};
|
|
70
|
+
exports._PROVIDER_TO_SUPPORTED_PAIR_MAP = _PROVIDER_TO_SUPPORTED_PAIR_MAP;
|
|
68
71
|
function getSwapAlternativeAsset(swapPair) {
|
|
69
72
|
var _swapPair$metadata;
|
|
70
73
|
return swapPair === null || swapPair === void 0 ? void 0 : (_swapPair$metadata = swapPair.metadata) === null || _swapPair$metadata === void 0 ? void 0 : _swapPair$metadata.alternativeAsset;
|
|
@@ -79,48 +82,4 @@ function calculateSwapRate(fromAmount, toAmount, fromAsset, toAsset) {
|
|
|
79
82
|
const decimalDiff = (0, _utils._getAssetDecimals)(toAsset) - (0, _utils._getAssetDecimals)(fromAsset);
|
|
80
83
|
const bnRate = bnFromAmount.div(bnToAmount);
|
|
81
84
|
return 1 / bnRate.times(10 ** decimalDiff).toNumber();
|
|
82
|
-
}
|
|
83
|
-
function getChainflipEarlyValidationError(error, metadata) {
|
|
84
|
-
// todo: support more providers
|
|
85
|
-
switch (error) {
|
|
86
|
-
case _swap2.SwapErrorType.NOT_MEET_MIN_SWAP:
|
|
87
|
-
{
|
|
88
|
-
const parsedMinSwapValue = (0, _utils2.formatNumber)(metadata.minSwap.value, metadata.minSwap.decimals);
|
|
89
|
-
const message = `Amount too low. Increase your amount above ${parsedMinSwapValue} ${metadata.minSwap.symbol} and try again`;
|
|
90
|
-
return new _SwapError.SwapError(error, message);
|
|
91
|
-
}
|
|
92
|
-
case _swap2.SwapErrorType.SWAP_EXCEED_ALLOWANCE:
|
|
93
|
-
{
|
|
94
|
-
if (metadata.maxSwap) {
|
|
95
|
-
const parsedMaxSwapValue = (0, _utils2.formatNumber)(metadata.maxSwap.value, metadata.maxSwap.decimals);
|
|
96
|
-
return new _SwapError.SwapError(error, `Amount too high. Lower your amount below ${parsedMaxSwapValue} ${metadata.maxSwap.symbol} and try again`);
|
|
97
|
-
} else {
|
|
98
|
-
return new _SwapError.SwapError(error, 'Amount too high. Lower your amount and try again');
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
case _swap2.SwapErrorType.ASSET_NOT_SUPPORTED:
|
|
102
|
-
return new _SwapError.SwapError(error, 'This swap pair is not supported');
|
|
103
|
-
case _swap2.SwapErrorType.UNKNOWN:
|
|
104
|
-
return new _SwapError.SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
|
|
105
|
-
case _swap2.SwapErrorType.ERROR_FETCHING_QUOTE:
|
|
106
|
-
return new _SwapError.SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
|
|
107
|
-
default:
|
|
108
|
-
return new _SwapError.SwapError(error);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
function getEarlyHydradxValidationError(error, metadata) {
|
|
112
|
-
switch (error) {
|
|
113
|
-
case _swap2.SwapErrorType.AMOUNT_CANNOT_BE_ZERO:
|
|
114
|
-
{
|
|
115
|
-
return new _SwapError.SwapError(error, 'Amount too low. Increase your amount above 0 and try again');
|
|
116
|
-
}
|
|
117
|
-
case _swap2.SwapErrorType.ASSET_NOT_SUPPORTED:
|
|
118
|
-
return new _SwapError.SwapError(error, 'This swap pair is not supported');
|
|
119
|
-
case _swap2.SwapErrorType.UNKNOWN:
|
|
120
|
-
return new _SwapError.SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
|
|
121
|
-
case _swap2.SwapErrorType.ERROR_FETCHING_QUOTE:
|
|
122
|
-
return new _SwapError.SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
|
|
123
|
-
default:
|
|
124
|
-
return new _SwapError.SwapError(error);
|
|
125
|
-
}
|
|
126
85
|
}
|