@subwallet/extension-base 1.3.22-0 → 1.3.24-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 (210) hide show
  1. package/background/KoniTypes.d.ts +77 -4
  2. package/background/KoniTypes.js +2 -0
  3. package/cjs/background/KoniTypes.js +2 -0
  4. package/cjs/constants/environment.js +4 -2
  5. package/cjs/constants/index.js +21 -4
  6. package/cjs/constants/signing.js +6 -2
  7. package/cjs/core/logic-validation/recipientAddress.js +9 -1
  8. package/cjs/core/logic-validation/transfer.js +57 -36
  9. package/cjs/core/types.js +1 -0
  10. package/cjs/core/utils.js +12 -1
  11. package/cjs/defaults.js +1 -1
  12. package/cjs/koni/api/dotsama/crowdloan.js +1 -1
  13. package/cjs/koni/api/nft/index.js +9 -16
  14. package/cjs/koni/api/staking/index.js +3 -4
  15. package/cjs/koni/background/handlers/Extension.js +343 -185
  16. package/cjs/koni/background/handlers/State.js +17 -2
  17. package/cjs/koni/background/handlers/Tabs.js +1 -1
  18. package/cjs/packageInfo.js +1 -1
  19. package/cjs/services/balance-service/helpers/subscribe/cardano/consts.js +11 -0
  20. package/cjs/services/balance-service/helpers/subscribe/cardano/index.js +63 -0
  21. package/cjs/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
  22. package/cjs/services/balance-service/helpers/subscribe/cardano/utils.js +74 -0
  23. package/cjs/services/balance-service/helpers/subscribe/index.js +21 -7
  24. package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +2 -2
  25. package/cjs/services/balance-service/index.js +4 -2
  26. package/cjs/services/balance-service/transfer/cardano-transfer.js +122 -0
  27. package/cjs/services/balance-service/transfer/smart-contract.js +24 -3
  28. package/cjs/services/balance-service/transfer/token.js +4 -4
  29. package/cjs/services/chain-service/handler/CardanoApi.js +176 -0
  30. package/cjs/services/chain-service/handler/CardanoChainHandler.js +83 -0
  31. package/cjs/services/chain-service/handler/TonApi.js +2 -5
  32. package/cjs/services/chain-service/index.js +40 -7
  33. package/cjs/services/chain-service/utils/index.js +40 -11
  34. package/cjs/services/chain-service/utils/patch.js +1 -1
  35. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
  36. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
  37. package/cjs/services/earning-service/service.js +6 -12
  38. package/cjs/services/fee-service/service.js +19 -8
  39. package/cjs/services/fee-service/utils/tokenPayFee.js +151 -0
  40. package/cjs/services/history-service/index.js +4 -6
  41. package/cjs/services/inapp-notification-service/index.js +12 -4
  42. package/cjs/services/keyring-service/context/account-context.js +17 -2
  43. package/cjs/services/keyring-service/context/handlers/Derive.js +10 -7
  44. package/cjs/services/keyring-service/context/handlers/Migration.js +268 -0
  45. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +2 -2
  46. package/cjs/services/keyring-service/context/handlers/Secret.js +1 -1
  47. package/cjs/services/keyring-service/utils.js +18 -0
  48. package/cjs/services/request-service/handler/CardanoRequestHandler.js +172 -0
  49. package/cjs/services/request-service/handler/EvmRequestHandler.js +1 -1
  50. package/cjs/services/request-service/handler/MetadataRequestHandler.js +5 -13
  51. package/cjs/services/request-service/index.js +22 -4
  52. package/cjs/services/setting-service/constants.js +10 -1
  53. package/cjs/services/storage-service/DatabaseService.js +3 -0
  54. package/cjs/services/storage-service/db-stores/InappNotification.js +6 -0
  55. package/cjs/services/swap-service/handler/asset-hub/handler.js +0 -59
  56. package/cjs/services/swap-service/handler/chainflip-handler.js +33 -281
  57. package/cjs/services/swap-service/handler/hydradx-handler.js +23 -190
  58. package/cjs/services/swap-service/handler/simpleswap-handler.js +1 -222
  59. package/cjs/services/swap-service/handler/uniswap-handler.js +331 -0
  60. package/cjs/services/swap-service/index.js +31 -22
  61. package/cjs/services/swap-service/utils.js +21 -38
  62. package/cjs/services/transaction-service/helpers/index.js +6 -1
  63. package/cjs/services/transaction-service/index.js +286 -26
  64. package/cjs/services/transaction-service/utils.js +5 -1
  65. package/cjs/types/account/info/keyring.js +12 -1
  66. package/cjs/types/fee/cardano.js +1 -0
  67. package/cjs/types/swap/index.js +7 -2
  68. package/cjs/utils/account/analyze.js +2 -1
  69. package/cjs/utils/account/common.js +29 -20
  70. package/cjs/utils/account/derive/info/solo.js +9 -4
  71. package/cjs/utils/account/derive/validate.js +36 -2
  72. package/cjs/utils/account/transform.js +38 -13
  73. package/cjs/utils/fee/transfer.js +87 -21
  74. package/cjs/utils/index.js +2 -2
  75. package/cjs/utils/staticData/index.js +7 -2
  76. package/constants/environment.d.ts +1 -0
  77. package/constants/environment.js +2 -1
  78. package/constants/index.d.ts +6 -1
  79. package/constants/index.js +14 -1
  80. package/constants/signing.js +6 -2
  81. package/core/logic-validation/recipientAddress.js +11 -3
  82. package/core/logic-validation/transfer.d.ts +1 -1
  83. package/core/logic-validation/transfer.js +33 -12
  84. package/core/substrate/xcm-parser.d.ts +1 -1
  85. package/core/types.d.ts +1 -0
  86. package/core/types.js +1 -0
  87. package/core/utils.d.ts +1 -0
  88. package/core/utils.js +13 -3
  89. package/defaults.d.ts +1 -1
  90. package/defaults.js +1 -1
  91. package/koni/api/dotsama/crowdloan.js +3 -3
  92. package/koni/api/nft/index.js +10 -16
  93. package/koni/api/nft/story_odyssey_nft/index.d.ts +1 -1
  94. package/koni/api/staking/index.js +4 -5
  95. package/koni/background/handlers/Extension.d.ts +9 -0
  96. package/koni/background/handlers/Extension.js +225 -69
  97. package/koni/background/handlers/State.d.ts +6 -2
  98. package/koni/background/handlers/State.js +18 -3
  99. package/koni/background/handlers/Tabs.js +1 -1
  100. package/package.json +76 -9
  101. package/packageInfo.js +1 -1
  102. package/services/balance-service/helpers/subscribe/cardano/consts.d.ts +1 -0
  103. package/services/balance-service/helpers/subscribe/cardano/consts.js +4 -0
  104. package/services/balance-service/helpers/subscribe/cardano/index.d.ts +2 -0
  105. package/services/balance-service/helpers/subscribe/cardano/index.js +57 -0
  106. package/services/balance-service/helpers/subscribe/cardano/types.d.ts +34 -0
  107. package/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
  108. package/services/balance-service/helpers/subscribe/cardano/utils.d.ts +15 -0
  109. package/services/balance-service/helpers/subscribe/cardano/utils.js +62 -0
  110. package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
  111. package/services/balance-service/helpers/subscribe/index.js +23 -9
  112. package/services/balance-service/helpers/subscribe/ton/utils.d.ts +1 -1
  113. package/services/balance-service/helpers/subscribe/ton/utils.js +1 -1
  114. package/services/balance-service/index.js +4 -2
  115. package/services/balance-service/transfer/cardano-transfer.d.ts +24 -0
  116. package/services/balance-service/transfer/cardano-transfer.js +114 -0
  117. package/services/balance-service/transfer/smart-contract.d.ts +4 -2
  118. package/services/balance-service/transfer/smart-contract.js +24 -3
  119. package/services/balance-service/transfer/token.d.ts +1 -1
  120. package/services/balance-service/transfer/token.js +2 -2
  121. package/services/chain-service/handler/CardanoApi.d.ts +38 -0
  122. package/services/chain-service/handler/CardanoApi.js +167 -0
  123. package/services/chain-service/handler/CardanoChainHandler.d.ts +17 -0
  124. package/services/chain-service/handler/CardanoChainHandler.js +75 -0
  125. package/services/chain-service/handler/TonApi.js +3 -6
  126. package/services/chain-service/handler/types.d.ts +1 -0
  127. package/services/chain-service/index.d.ts +4 -1
  128. package/services/chain-service/index.js +41 -8
  129. package/services/chain-service/types.d.ts +9 -1
  130. package/services/chain-service/utils/index.d.ts +4 -0
  131. package/services/chain-service/utils/index.js +32 -11
  132. package/services/chain-service/utils/patch.js +1 -1
  133. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
  134. package/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
  135. package/services/earning-service/service.js +8 -14
  136. package/services/fee-service/interfaces.d.ts +25 -0
  137. package/services/fee-service/service.js +19 -8
  138. package/services/fee-service/utils/tokenPayFee.d.ts +8 -0
  139. package/services/fee-service/utils/tokenPayFee.js +141 -0
  140. package/services/history-service/index.js +6 -8
  141. package/services/inapp-notification-service/index.d.ts +3 -4
  142. package/services/inapp-notification-service/index.js +14 -6
  143. package/services/keyring-service/context/account-context.d.ts +6 -2
  144. package/services/keyring-service/context/account-context.js +17 -2
  145. package/services/keyring-service/context/handlers/Derive.d.ts +1 -1
  146. package/services/keyring-service/context/handlers/Derive.js +10 -8
  147. package/services/keyring-service/context/handlers/Migration.d.ts +17 -0
  148. package/services/keyring-service/context/handlers/Migration.js +258 -0
  149. package/services/keyring-service/context/handlers/Mnemonic.js +2 -2
  150. package/services/keyring-service/context/handlers/Secret.js +2 -2
  151. package/services/keyring-service/utils.d.ts +2 -0
  152. package/services/keyring-service/utils.js +11 -0
  153. package/services/request-service/handler/CardanoRequestHandler.d.ts +16 -0
  154. package/services/request-service/handler/CardanoRequestHandler.js +163 -0
  155. package/services/request-service/handler/EvmRequestHandler.js +1 -1
  156. package/services/request-service/handler/MetadataRequestHandler.d.ts +1 -1
  157. package/services/request-service/handler/MetadataRequestHandler.js +5 -13
  158. package/services/request-service/index.d.ts +7 -4
  159. package/services/request-service/index.js +21 -7
  160. package/services/setting-service/constants.d.ts +3 -0
  161. package/services/setting-service/constants.js +6 -0
  162. package/services/storage-service/DatabaseService.d.ts +1 -0
  163. package/services/storage-service/DatabaseService.js +3 -0
  164. package/services/storage-service/db-stores/InappNotification.d.ts +1 -0
  165. package/services/storage-service/db-stores/InappNotification.js +6 -0
  166. package/services/swap-service/handler/asset-hub/handler.d.ts +1 -4
  167. package/services/swap-service/handler/asset-hub/handler.js +2 -61
  168. package/services/swap-service/handler/base-handler.d.ts +1 -4
  169. package/services/swap-service/handler/chainflip-handler.d.ts +2 -9
  170. package/services/swap-service/handler/chainflip-handler.js +31 -280
  171. package/services/swap-service/handler/hydradx-handler.d.ts +1 -6
  172. package/services/swap-service/handler/hydradx-handler.js +13 -180
  173. package/services/swap-service/handler/simpleswap-handler.d.ts +1 -4
  174. package/services/swap-service/handler/simpleswap-handler.js +5 -226
  175. package/services/swap-service/handler/uniswap-handler.d.ts +41 -0
  176. package/services/swap-service/handler/uniswap-handler.js +323 -0
  177. package/services/swap-service/index.js +30 -22
  178. package/services/swap-service/utils.d.ts +1 -5
  179. package/services/swap-service/utils.js +7 -21
  180. package/services/transaction-service/helpers/index.d.ts +2 -0
  181. package/services/transaction-service/helpers/index.js +4 -0
  182. package/services/transaction-service/index.d.ts +8 -2
  183. package/services/transaction-service/index.js +273 -17
  184. package/services/transaction-service/types.d.ts +7 -0
  185. package/services/transaction-service/utils.js +7 -2
  186. package/types/account/info/keyring.d.ts +4 -1
  187. package/types/account/info/keyring.js +9 -0
  188. package/types/account/info/proxy.d.ts +2 -0
  189. package/types/balance/index.d.ts +4 -1
  190. package/types/fee/base.d.ts +1 -1
  191. package/types/fee/cardano.d.ts +18 -0
  192. package/types/fee/cardano.js +1 -0
  193. package/types/fee/option.d.ts +1 -1
  194. package/types/fee/subscription.d.ts +4 -3
  195. package/types/swap/index.d.ts +11 -3
  196. package/types/swap/index.js +7 -2
  197. package/utils/account/analyze.js +2 -1
  198. package/utils/account/common.d.ts +11 -6
  199. package/utils/account/common.js +28 -19
  200. package/utils/account/derive/info/solo.js +10 -5
  201. package/utils/account/derive/validate.d.ts +1 -0
  202. package/utils/account/derive/validate.js +34 -1
  203. package/utils/account/transform.d.ts +2 -1
  204. package/utils/account/transform.js +37 -13
  205. package/utils/fee/transfer.d.ts +3 -2
  206. package/utils/fee/transfer.js +90 -24
  207. package/utils/index.js +4 -4
  208. package/utils/staticData/index.d.ts +4 -1
  209. package/utils/staticData/index.js +5 -1
  210. 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 _types2 = require("@subwallet/extension-base/types");
18
+ var _types = require("@subwallet/extension-base/types");
21
19
  var _serviceBase = require("@subwallet/extension-base/types/service-base");
22
- var _swap2 = require("@subwallet/extension-base/types/swap");
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 ? _swap2.SwapProviderId.HYDRADX_TESTNET : _swap2.SwapProviderId.HYDRADX_MAINNET
40
+ providerSlug: isTestnet ? _swap.SwapProviderId.HYDRADX_TESTNET : _swap.SwapProviderId.HYDRADX_MAINNET
44
41
  });
45
- this.providerSlug = isTestnet ? _swap2.SwapProviderId.HYDRADX_TESTNET : _swap2.SwapProviderId.HYDRADX_MAINNET;
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: _swap2.SwapFeeType.NETWORK_FEE,
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: _swap2.SwapFeeType.NETWORK_FEE,
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: _swap2.SwapStepType.SWAP
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 === _swap2.SwapStepType.SWAP);
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(_types2.BasicTxErrorType.INTERNAL_ERROR));
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(_types2.BasicTxErrorType.UNSUPPORTED));
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 _swap2.SwapStepType.SWAP:
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(_types2.BasicTxErrorType.INVALID_PARAMS, 'Amount must be greater than 0')];
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.createTransferExtrinsic)({
196
+ const [submittableExtrinsic] = await (0, _token.createSubstrateExtrinsic)({
418
197
  from: address,
419
198
  networkKey: chainInfo.slug,
420
199
  substrateApi,