@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.
Files changed (94) hide show
  1. package/background/KoniTypes.d.ts +4 -153
  2. package/background/KoniTypes.js +0 -21
  3. package/cjs/background/KoniTypes.js +1 -22
  4. package/cjs/core/logic-validation/earning.js +47 -0
  5. package/cjs/core/logic-validation/swap.js +99 -0
  6. package/cjs/core/logic-validation/transfer.js +212 -0
  7. package/cjs/core/substrate/nominationpools-pallet.js +22 -0
  8. package/cjs/core/substrate/system-pallet.js +77 -0
  9. package/cjs/core/substrate/xcm-parser.js +190 -0
  10. package/cjs/koni/api/dotsama/transfer.js +58 -122
  11. package/cjs/koni/api/staking/bonding/utils.js +1 -1
  12. package/cjs/koni/api/xcm/index.js +30 -2
  13. package/cjs/koni/api/xcm/polkadotXcm.js +12 -20
  14. package/cjs/koni/api/xcm/utils.js +8 -126
  15. package/cjs/koni/api/xcm/xTokens.js +10 -8
  16. package/cjs/koni/api/xcm/xcmPallet.js +6 -6
  17. package/cjs/koni/background/handlers/Extension.js +223 -356
  18. package/cjs/packageInfo.js +1 -1
  19. package/cjs/services/balance-service/helpers/group.js +4 -27
  20. package/cjs/services/balance-service/helpers/subscribe/index.js +2 -30
  21. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +46 -82
  22. package/cjs/services/balance-service/index.js +11 -9
  23. package/cjs/services/chain-service/constants.js +2 -2
  24. package/cjs/services/chain-service/index.js +0 -1
  25. package/cjs/services/chain-service/utils/index.js +13 -2
  26. package/cjs/services/earning-service/handlers/base.js +1 -1
  27. package/cjs/services/earning-service/handlers/special.js +11 -12
  28. package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +2 -1
  29. package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +2 -1
  30. package/cjs/services/migration-service/scripts/index.js +2 -2
  31. package/cjs/services/swap-service/handler/base-handler.js +30 -44
  32. package/cjs/services/swap-service/handler/chainflip-handler.js +23 -21
  33. package/cjs/services/swap-service/handler/hydradx-handler.js +41 -39
  34. package/cjs/services/swap-service/index.js +6 -0
  35. package/cjs/services/swap-service/utils.js +8 -49
  36. package/cjs/services/transaction-service/index.js +66 -155
  37. package/core/logic-validation/earning.d.ts +10 -0
  38. package/core/logic-validation/earning.js +37 -0
  39. package/core/logic-validation/swap.d.ts +8 -0
  40. package/core/logic-validation/swap.js +89 -0
  41. package/core/logic-validation/transfer.d.ts +16 -0
  42. package/core/logic-validation/transfer.js +199 -0
  43. package/core/substrate/nominationpools-pallet.d.ts +10 -0
  44. package/core/substrate/nominationpools-pallet.js +13 -0
  45. package/core/substrate/system-pallet.d.ts +27 -0
  46. package/core/substrate/system-pallet.js +70 -0
  47. package/core/substrate/xcm-parser.d.ts +49 -0
  48. package/core/substrate/xcm-parser.js +181 -0
  49. package/koni/api/dotsama/transfer.d.ts +3 -4
  50. package/koni/api/dotsama/transfer.js +54 -118
  51. package/koni/api/staking/bonding/relayChain.d.ts +2 -1
  52. package/koni/api/staking/bonding/utils.js +1 -1
  53. package/koni/api/xcm/index.d.ts +2 -0
  54. package/koni/api/xcm/index.js +27 -1
  55. package/koni/api/xcm/polkadotXcm.js +14 -22
  56. package/koni/api/xcm/utils.d.ts +3 -48
  57. package/koni/api/xcm/utils.js +5 -114
  58. package/koni/api/xcm/xTokens.js +12 -10
  59. package/koni/api/xcm/xcmPallet.js +7 -7
  60. package/koni/background/handlers/Extension.d.ts +6 -8
  61. package/koni/background/handlers/Extension.js +117 -247
  62. package/package.json +39 -9
  63. package/packageInfo.js +1 -1
  64. package/services/balance-service/helpers/group.js +4 -27
  65. package/services/balance-service/helpers/subscribe/index.d.ts +2 -1
  66. package/services/balance-service/helpers/subscribe/index.js +2 -30
  67. package/services/balance-service/helpers/subscribe/substrate/index.d.ts +2 -1
  68. package/services/balance-service/helpers/subscribe/substrate/index.js +31 -66
  69. package/services/balance-service/index.d.ts +7 -6
  70. package/services/balance-service/index.js +12 -10
  71. package/services/chain-service/constants.js +2 -2
  72. package/services/chain-service/index.js +0 -1
  73. package/services/chain-service/utils/index.d.ts +4 -2
  74. package/services/chain-service/utils/index.js +9 -2
  75. package/services/earning-service/handlers/base.js +1 -1
  76. package/services/earning-service/handlers/nomination-pool/index.d.ts +2 -1
  77. package/services/earning-service/handlers/special.js +11 -12
  78. package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +2 -1
  79. package/services/migration-service/scripts/databases/MigrateAssetSetting.js +2 -1
  80. package/services/migration-service/scripts/index.js +2 -2
  81. package/services/swap-service/handler/base-handler.d.ts +3 -2
  82. package/services/swap-service/handler/base-handler.js +28 -42
  83. package/services/swap-service/handler/chainflip-handler.d.ts +2 -1
  84. package/services/swap-service/handler/chainflip-handler.js +4 -2
  85. package/services/swap-service/handler/hydradx-handler.d.ts +2 -1
  86. package/services/swap-service/handler/hydradx-handler.js +8 -6
  87. package/services/swap-service/index.js +7 -1
  88. package/services/swap-service/utils.d.ts +2 -4
  89. package/services/swap-service/utils.js +7 -47
  90. package/services/transaction-service/index.d.ts +1 -1
  91. package/services/transaction-service/index.js +30 -119
  92. package/services/transaction-service/types.d.ts +1 -0
  93. package/types/balance/index.d.ts +6 -10
  94. 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 _swap = require("@subwallet/extension-base/types/swap");
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 ? 'HydraDX Testnet' : 'HydraDX',
37
- providerSlug: isTestnet ? _swap.SwapProviderId.HYDRADX_TESTNET : _swap.SwapProviderId.HYDRADX_MAINNET
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.getTokenFreeBalance(params.request.address, fromAsset.originChain, fromAsset.slug);
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.getTokenFreeBalance(params.request.address, alternativeAsset.originChain, alternativeAsset.slug);
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: _swap.SwapStepType.XCM
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: _swap.SwapFeeType.NETWORK_FEE,
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: _swap.SwapStepType.SET_FEE_TOKEN
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: _swap.SwapFeeType.NETWORK_FEE,
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: _swap.SwapStepType.SWAP
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(_swap.SwapErrorType.UNKNOWN);
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, _utils2.getEarlyHydradxValidationError)(earlyValidation.error, metadata);
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: _swap.SwapFeeType.NETWORK_FEE
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: _swap.SwapFeeType.PLATFORM_FEE
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(_swap.SwapErrorType.SWAP_NOT_ENOUGH_BALANCE);
258
+ return new _SwapError.SwapError(_swap2.SwapErrorType.SWAP_NOT_ENOUGH_BALANCE);
257
259
  case _sdk.PoolError.TradeNotAllowed:
258
- return new _SwapError.SwapError(_swap.SwapErrorType.ERROR_FETCHING_QUOTE);
260
+ return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
259
261
  case _sdk.PoolError.MaxInRatioExceeded:
260
- return new _SwapError.SwapError(_swap.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
262
+ return new _SwapError.SwapError(_swap2.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
261
263
  case _sdk.PoolError.UnknownError:
262
- return new _SwapError.SwapError(_swap.SwapErrorType.ERROR_FETCHING_QUOTE);
264
+ return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
263
265
  case _sdk.PoolError.MaxOutRatioExceeded:
264
- return new _SwapError.SwapError(_swap.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
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(_swap.SwapErrorType.ERROR_FETCHING_QUOTE);
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.getTokenFreeBalance(params.address, destinationAsset.originChain, destinationAsset.slug);
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 === _swap.SwapStepType.SWAP);
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(_swap.SwapStepType.SET_FEE_TOKEN);
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 _swap.SwapStepType.DEFAULT:
419
+ case _swap2.SwapStepType.DEFAULT:
418
420
  return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED));
419
- case _swap.SwapStepType.XCM:
421
+ case _swap2.SwapStepType.XCM:
420
422
  return this.handleXcmStep(params);
421
- case _swap.SwapStepType.SET_FEE_TOKEN:
423
+ case _swap2.SwapStepType.SET_FEE_TOKEN:
422
424
  return this.handleSetFeeStep(params);
423
- case _swap.SwapStepType.SWAP:
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 _swap.SwapStepType.DEFAULT:
441
+ case _swap2.SwapStepType.DEFAULT:
440
442
  return Promise.resolve([]);
441
- case _swap.SwapStepType.XCM:
443
+ case _swap2.SwapStepType.XCM:
442
444
  return this.swapBaseHandler.validateXcmStep(params, index);
443
- case _swap.SwapStepType.SET_FEE_TOKEN:
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 === _swap.SwapStepType.XCM) {
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: _swap.SwapErrorType.UNKNOWN
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: _swap.SwapErrorType.ASSET_NOT_SUPPORTED
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: _swap.SwapErrorType.UNKNOWN
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: _swap.SwapErrorType.ASSET_NOT_SUPPORTED
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: _swap.SwapErrorType.ASSET_NOT_SUPPORTED
495
+ error: _swap2.SwapErrorType.ASSET_NOT_SUPPORTED
494
496
  };
495
497
  }
496
498
  if (!fromAssetId || !toAssetId) {
497
499
  return {
498
- error: _swap.SwapErrorType.UNKNOWN
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: _swap.SwapErrorType.AMOUNT_CANNOT_BE_ZERO
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: _swap.SwapErrorType.UNKNOWN
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
  }