@subwallet/extension-base 1.3.22-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.
Files changed (193) hide show
  1. package/background/KoniTypes.d.ts +75 -2
  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/signing.js +6 -2
  6. package/cjs/core/logic-validation/recipientAddress.js +9 -1
  7. package/cjs/core/logic-validation/transfer.js +35 -29
  8. package/cjs/core/types.js +1 -0
  9. package/cjs/core/utils.js +12 -1
  10. package/cjs/defaults.js +1 -1
  11. package/cjs/koni/api/dotsama/crowdloan.js +1 -1
  12. package/cjs/koni/api/nft/index.js +9 -16
  13. package/cjs/koni/api/staking/index.js +3 -4
  14. package/cjs/koni/background/handlers/Extension.js +234 -96
  15. package/cjs/koni/background/handlers/State.js +15 -0
  16. package/cjs/packageInfo.js +1 -1
  17. package/cjs/services/balance-service/helpers/subscribe/cardano/consts.js +11 -0
  18. package/cjs/services/balance-service/helpers/subscribe/cardano/index.js +63 -0
  19. package/cjs/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
  20. package/cjs/services/balance-service/helpers/subscribe/cardano/utils.js +74 -0
  21. package/cjs/services/balance-service/helpers/subscribe/index.js +21 -7
  22. package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +2 -2
  23. package/cjs/services/balance-service/index.js +4 -2
  24. package/cjs/services/balance-service/transfer/cardano-transfer.js +122 -0
  25. package/cjs/services/balance-service/transfer/token.js +4 -4
  26. package/cjs/services/chain-service/handler/CardanoApi.js +176 -0
  27. package/cjs/services/chain-service/handler/CardanoChainHandler.js +83 -0
  28. package/cjs/services/chain-service/handler/TonApi.js +2 -5
  29. package/cjs/services/chain-service/index.js +29 -7
  30. package/cjs/services/chain-service/utils/index.js +40 -11
  31. package/cjs/services/chain-service/utils/patch.js +1 -1
  32. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
  33. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
  34. package/cjs/services/earning-service/service.js +6 -12
  35. package/cjs/services/fee-service/service.js +19 -8
  36. package/cjs/services/history-service/index.js +4 -6
  37. package/cjs/services/inapp-notification-service/index.js +12 -4
  38. package/cjs/services/keyring-service/context/account-context.js +17 -2
  39. package/cjs/services/keyring-service/context/handlers/Derive.js +10 -7
  40. package/cjs/services/keyring-service/context/handlers/Migration.js +268 -0
  41. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +2 -2
  42. package/cjs/services/keyring-service/context/handlers/Secret.js +1 -1
  43. package/cjs/services/keyring-service/utils.js +18 -0
  44. package/cjs/services/request-service/handler/CardanoRequestHandler.js +172 -0
  45. package/cjs/services/request-service/handler/EvmRequestHandler.js +1 -1
  46. package/cjs/services/request-service/index.js +20 -2
  47. package/cjs/services/setting-service/constants.js +10 -1
  48. package/cjs/services/storage-service/DatabaseService.js +3 -0
  49. package/cjs/services/storage-service/db-stores/InappNotification.js +6 -0
  50. package/cjs/services/swap-service/handler/asset-hub/handler.js +0 -59
  51. package/cjs/services/swap-service/handler/chainflip-handler.js +33 -281
  52. package/cjs/services/swap-service/handler/hydradx-handler.js +23 -190
  53. package/cjs/services/swap-service/handler/simpleswap-handler.js +1 -222
  54. package/cjs/services/swap-service/handler/uniswap-handler.js +331 -0
  55. package/cjs/services/swap-service/index.js +31 -22
  56. package/cjs/services/swap-service/utils.js +21 -38
  57. package/cjs/services/transaction-service/helpers/index.js +6 -1
  58. package/cjs/services/transaction-service/index.js +278 -21
  59. package/cjs/services/transaction-service/utils.js +5 -1
  60. package/cjs/types/account/info/keyring.js +12 -1
  61. package/cjs/types/fee/cardano.js +1 -0
  62. package/cjs/types/swap/index.js +7 -2
  63. package/cjs/utils/account/analyze.js +2 -1
  64. package/cjs/utils/account/common.js +29 -20
  65. package/cjs/utils/account/derive/info/solo.js +9 -4
  66. package/cjs/utils/account/derive/validate.js +36 -2
  67. package/cjs/utils/account/transform.js +38 -13
  68. package/cjs/utils/fee/transfer.js +40 -7
  69. package/cjs/utils/index.js +2 -2
  70. package/cjs/utils/staticData/index.js +7 -2
  71. package/constants/environment.d.ts +1 -0
  72. package/constants/environment.js +2 -1
  73. package/constants/signing.js +6 -2
  74. package/core/logic-validation/recipientAddress.js +11 -3
  75. package/core/logic-validation/transfer.js +9 -3
  76. package/core/substrate/xcm-parser.d.ts +1 -1
  77. package/core/types.d.ts +1 -0
  78. package/core/types.js +1 -0
  79. package/core/utils.d.ts +1 -0
  80. package/core/utils.js +13 -3
  81. package/defaults.d.ts +1 -1
  82. package/defaults.js +1 -1
  83. package/koni/api/dotsama/crowdloan.js +3 -3
  84. package/koni/api/nft/index.js +10 -16
  85. package/koni/api/nft/story_odyssey_nft/index.d.ts +1 -1
  86. package/koni/api/staking/index.js +4 -5
  87. package/koni/background/handlers/Extension.d.ts +9 -0
  88. package/koni/background/handlers/Extension.js +144 -8
  89. package/koni/background/handlers/State.d.ts +5 -1
  90. package/koni/background/handlers/State.js +16 -1
  91. package/package.json +71 -9
  92. package/packageInfo.js +1 -1
  93. package/services/balance-service/helpers/subscribe/cardano/consts.d.ts +1 -0
  94. package/services/balance-service/helpers/subscribe/cardano/consts.js +4 -0
  95. package/services/balance-service/helpers/subscribe/cardano/index.d.ts +2 -0
  96. package/services/balance-service/helpers/subscribe/cardano/index.js +57 -0
  97. package/services/balance-service/helpers/subscribe/cardano/types.d.ts +34 -0
  98. package/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
  99. package/services/balance-service/helpers/subscribe/cardano/utils.d.ts +15 -0
  100. package/services/balance-service/helpers/subscribe/cardano/utils.js +62 -0
  101. package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
  102. package/services/balance-service/helpers/subscribe/index.js +23 -9
  103. package/services/balance-service/helpers/subscribe/ton/utils.d.ts +1 -1
  104. package/services/balance-service/helpers/subscribe/ton/utils.js +1 -1
  105. package/services/balance-service/index.js +4 -2
  106. package/services/balance-service/transfer/cardano-transfer.d.ts +24 -0
  107. package/services/balance-service/transfer/cardano-transfer.js +114 -0
  108. package/services/balance-service/transfer/token.d.ts +1 -1
  109. package/services/balance-service/transfer/token.js +2 -2
  110. package/services/chain-service/handler/CardanoApi.d.ts +38 -0
  111. package/services/chain-service/handler/CardanoApi.js +167 -0
  112. package/services/chain-service/handler/CardanoChainHandler.d.ts +17 -0
  113. package/services/chain-service/handler/CardanoChainHandler.js +75 -0
  114. package/services/chain-service/handler/TonApi.js +3 -6
  115. package/services/chain-service/handler/types.d.ts +1 -0
  116. package/services/chain-service/index.d.ts +3 -1
  117. package/services/chain-service/index.js +29 -7
  118. package/services/chain-service/types.d.ts +9 -1
  119. package/services/chain-service/utils/index.d.ts +4 -0
  120. package/services/chain-service/utils/index.js +32 -11
  121. package/services/chain-service/utils/patch.js +1 -1
  122. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
  123. package/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
  124. package/services/earning-service/service.js +8 -14
  125. package/services/fee-service/service.js +19 -8
  126. package/services/history-service/index.js +6 -8
  127. package/services/inapp-notification-service/index.d.ts +3 -4
  128. package/services/inapp-notification-service/index.js +14 -6
  129. package/services/keyring-service/context/account-context.d.ts +6 -2
  130. package/services/keyring-service/context/account-context.js +17 -2
  131. package/services/keyring-service/context/handlers/Derive.d.ts +1 -1
  132. package/services/keyring-service/context/handlers/Derive.js +10 -8
  133. package/services/keyring-service/context/handlers/Migration.d.ts +17 -0
  134. package/services/keyring-service/context/handlers/Migration.js +258 -0
  135. package/services/keyring-service/context/handlers/Mnemonic.js +2 -2
  136. package/services/keyring-service/context/handlers/Secret.js +2 -2
  137. package/services/keyring-service/utils.d.ts +2 -0
  138. package/services/keyring-service/utils.js +11 -0
  139. package/services/request-service/handler/CardanoRequestHandler.d.ts +16 -0
  140. package/services/request-service/handler/CardanoRequestHandler.js +163 -0
  141. package/services/request-service/handler/EvmRequestHandler.js +1 -1
  142. package/services/request-service/index.d.ts +6 -3
  143. package/services/request-service/index.js +19 -5
  144. package/services/setting-service/constants.d.ts +3 -0
  145. package/services/setting-service/constants.js +6 -0
  146. package/services/storage-service/DatabaseService.d.ts +1 -0
  147. package/services/storage-service/DatabaseService.js +3 -0
  148. package/services/storage-service/db-stores/InappNotification.d.ts +1 -0
  149. package/services/storage-service/db-stores/InappNotification.js +6 -0
  150. package/services/swap-service/handler/asset-hub/handler.d.ts +1 -4
  151. package/services/swap-service/handler/asset-hub/handler.js +2 -61
  152. package/services/swap-service/handler/base-handler.d.ts +1 -4
  153. package/services/swap-service/handler/chainflip-handler.d.ts +2 -9
  154. package/services/swap-service/handler/chainflip-handler.js +31 -280
  155. package/services/swap-service/handler/hydradx-handler.d.ts +1 -6
  156. package/services/swap-service/handler/hydradx-handler.js +13 -180
  157. package/services/swap-service/handler/simpleswap-handler.d.ts +1 -4
  158. package/services/swap-service/handler/simpleswap-handler.js +5 -226
  159. package/services/swap-service/handler/uniswap-handler.d.ts +41 -0
  160. package/services/swap-service/handler/uniswap-handler.js +323 -0
  161. package/services/swap-service/index.js +30 -22
  162. package/services/swap-service/utils.d.ts +1 -5
  163. package/services/swap-service/utils.js +7 -21
  164. package/services/transaction-service/helpers/index.d.ts +2 -0
  165. package/services/transaction-service/helpers/index.js +4 -0
  166. package/services/transaction-service/index.d.ts +8 -2
  167. package/services/transaction-service/index.js +263 -10
  168. package/services/transaction-service/types.d.ts +7 -0
  169. package/services/transaction-service/utils.js +7 -2
  170. package/types/account/info/keyring.d.ts +4 -1
  171. package/types/account/info/keyring.js +9 -0
  172. package/types/account/info/proxy.d.ts +2 -0
  173. package/types/balance/index.d.ts +4 -1
  174. package/types/fee/base.d.ts +1 -1
  175. package/types/fee/cardano.d.ts +18 -0
  176. package/types/fee/cardano.js +1 -0
  177. package/types/fee/subscription.d.ts +4 -3
  178. package/types/swap/index.d.ts +11 -3
  179. package/types/swap/index.js +7 -2
  180. package/utils/account/analyze.js +2 -1
  181. package/utils/account/common.d.ts +11 -6
  182. package/utils/account/common.js +28 -19
  183. package/utils/account/derive/info/solo.js +10 -5
  184. package/utils/account/derive/validate.d.ts +1 -0
  185. package/utils/account/derive/validate.js +34 -1
  186. package/utils/account/transform.d.ts +2 -1
  187. package/utils/account/transform.js +37 -13
  188. package/utils/fee/transfer.d.ts +2 -1
  189. package/utils/fee/transfer.js +44 -11
  190. package/utils/index.js +4 -4
  191. package/utils/staticData/index.d.ts +4 -1
  192. package/utils/staticData/index.js +5 -1
  193. package/utils/staticData/oldChainPrefix.json +1 -0
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.AssetHubSwapHandler = void 0;
8
- var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
9
8
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
10
9
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
11
10
  var _constants = require("@subwallet/extension-base/constants");
@@ -23,7 +22,6 @@ var _router = require("./router");
23
22
  // Copyright 2019-2022 @subwallet/extension-base
24
23
  // SPDX-License-Identifier: Apache-2.0
25
24
 
26
- const PAH_LOW_LIQUIDITY_THRESHOLD = 0.15;
27
25
  class AssetHubSwapHandler {
28
26
  isReady = false;
29
27
  constructor(chainService, balanceService, feeService, chain) {
@@ -157,57 +155,6 @@ class AssetHubSwapHandler {
157
155
  generateOptimalProcess(params) {
158
156
  return this.swapBaseHandler.generateOptimalProcess(params, [this.getXcmStep.bind(this), this.getSubmitStep.bind(this)]);
159
157
  }
160
- async getSwapQuote(request) {
161
- const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
162
- const toAsset = this.chainService.getAssetBySlug(request.pair.to);
163
- const fromChain = this.chainService.getChainInfoByKey(fromAsset.originChain);
164
- const fromChainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(fromChain);
165
- if (!this.isReady || !this.router) {
166
- return new _SwapError.SwapError(_swap2.SwapErrorType.UNKNOWN);
167
- }
168
- const earlyValidation = await this.validateSwapRequest(request);
169
- if (earlyValidation.error) {
170
- const metadata = earlyValidation.metadata;
171
- return (0, _swap._getEarlyAssetHubValidationError)(earlyValidation.error, metadata);
172
- }
173
- try {
174
- const paths = this.router.buildPath(request.pair);
175
- const amountOut = earlyValidation.metadata.toAmount;
176
- const toAmount = new _bignumber.default(amountOut);
177
- const minReceive = toAmount.times(1 - request.slippage).integerValue(_bignumber.default.ROUND_DOWN);
178
- const extrinsic = await this.router.buildSwapExtrinsic(paths, request.address, request.fromAmount, minReceive.toString());
179
- const paymentInfo = await extrinsic.paymentInfo(request.address);
180
- const networkFee = {
181
- tokenSlug: fromChainNativeTokenSlug,
182
- amount: paymentInfo.partialFee.toString(),
183
- feeType: _swap2.SwapFeeType.NETWORK_FEE
184
- };
185
- const feeTokenOptions = [fromChainNativeTokenSlug];
186
- const selectedFeeToken = fromChainNativeTokenSlug;
187
- const priceImpactPct = earlyValidation.metadata.priceImpactPct || '0';
188
- return {
189
- pair: request.pair,
190
- fromAmount: request.fromAmount,
191
- toAmount: toAmount.toString(),
192
- rate: (0, _utils2.convertSwapRate)(earlyValidation.metadata.quoteRate, fromAsset, toAsset),
193
- provider: this.providerInfo,
194
- aliveUntil: +Date.now() + (_utils2.SWAP_QUOTE_TIMEOUT_MAP[this.slug] || _utils2.SWAP_QUOTE_TIMEOUT_MAP.default),
195
- feeInfo: {
196
- feeComponent: [networkFee],
197
- defaultFeeToken: fromChainNativeTokenSlug,
198
- feeOptions: feeTokenOptions,
199
- // TODO: enable fee options
200
- selectedFeeToken
201
- },
202
- isLowLiquidity: Math.abs(parseFloat(priceImpactPct)) >= PAH_LOW_LIQUIDITY_THRESHOLD,
203
- route: {
204
- path: paths.map(asset => asset.slug)
205
- }
206
- };
207
- } catch (e) {
208
- return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
209
- }
210
- }
211
158
  async handleXcmStep(params) {
212
159
  const pair = params.quote.pair;
213
160
  const alternativeAssetSlug = (0, _utils2.getSwapAlternativeAsset)(pair);
@@ -369,11 +316,5 @@ class AssetHubSwapHandler {
369
316
  }
370
317
  return [];
371
318
  }
372
- validateSwapRequest(request) {
373
- if (!this.isReady || !this.router) {
374
- throw new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
375
- }
376
- return this.router.earlyValidateSwapValidation(request);
377
- }
378
319
  }
379
320
  exports.AssetHubSwapHandler = AssetHubSwapHandler;
@@ -5,12 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.ChainflipSwapHandler = exports.CHAINFLIP_BROKER_API = void 0;
8
- var _swap = require("@chainflip/sdk/swap");
9
8
  var _chainList = require("@subwallet/chain-list");
10
- var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
11
9
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
12
10
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
13
- var _swap2 = require("@subwallet/extension-base/core/logic-validation/swap");
14
11
  var _smartContract = require("@subwallet/extension-base/services/balance-service/transfer/smart-contract");
15
12
  var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
16
13
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
@@ -18,29 +15,17 @@ var _baseHandler = require("@subwallet/extension-base/services/swap-service/hand
18
15
  var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
19
16
  var _types = require("@subwallet/extension-base/types");
20
17
  var _serviceBase = require("@subwallet/extension-base/types/service-base");
21
- var _swap3 = require("@subwallet/extension-base/types/swap");
18
+ var _swap = require("@subwallet/extension-base/types/swap");
19
+ var _utils3 = require("@subwallet/extension-base/utils");
22
20
  var _getId = require("@subwallet/extension-base/utils/getId");
23
21
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
24
22
  // Copyright 2019-2022 @subwallet/extension-base
25
23
  // SPDX-License-Identifier: Apache-2.0
26
- var ChainflipFeeType;
27
- (function (ChainflipFeeType) {
28
- ChainflipFeeType["INGRESS"] = "INGRESS";
29
- ChainflipFeeType["NETWORK"] = "NETWORK";
30
- ChainflipFeeType["EGRESS"] = "EGRESS";
31
- ChainflipFeeType["BOOST"] = "BOOST";
32
- ChainflipFeeType["BROKER"] = "BROKER";
33
- })(ChainflipFeeType || (ChainflipFeeType = {}));
24
+
34
25
  const INTERMEDIARY_MAINNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_ETHEREUM;
35
26
  const INTERMEDIARY_TESTNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_SEPOLIA;
36
27
  const CHAINFLIP_BROKER_API = process.env.CHAINFLIP_BROKER_API || '';
37
28
  exports.CHAINFLIP_BROKER_API = CHAINFLIP_BROKER_API;
38
- var CHAINFLIP_QUOTE_ERROR;
39
- (function (CHAINFLIP_QUOTE_ERROR) {
40
- CHAINFLIP_QUOTE_ERROR["InsufficientLiquidity"] = "InsufficientLiquidity";
41
- CHAINFLIP_QUOTE_ERROR["InsufficientEgress"] = "is lower than minimum egress amount";
42
- CHAINFLIP_QUOTE_ERROR["InsufficientIngress"] = "amount is lower than estimated ingress fee";
43
- })(CHAINFLIP_QUOTE_ERROR || (CHAINFLIP_QUOTE_ERROR = {}));
44
29
  class ChainflipSwapHandler {
45
30
  constructor(chainService, balanceService, feeService) {
46
31
  let isTestnet = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
@@ -49,13 +34,11 @@ class ChainflipSwapHandler {
49
34
  balanceService,
50
35
  feeService,
51
36
  providerName: isTestnet ? 'Chainflip Testnet' : 'Chainflip',
52
- providerSlug: isTestnet ? _swap3.SwapProviderId.CHAIN_FLIP_TESTNET : _swap3.SwapProviderId.CHAIN_FLIP_MAINNET
37
+ providerSlug: isTestnet ? _swap.SwapProviderId.CHAIN_FLIP_TESTNET : _swap.SwapProviderId.CHAIN_FLIP_MAINNET
53
38
  });
54
39
  this.isTestnet = isTestnet;
55
- this.providerSlug = isTestnet ? _swap3.SwapProviderId.CHAIN_FLIP_TESTNET : _swap3.SwapProviderId.CHAIN_FLIP_MAINNET;
56
-
57
- // @ts-ignore
58
- this.swapSdk = new _swap.SwapSDK((0, _utils2.getChainflipOptions)(isTestnet));
40
+ this.providerSlug = isTestnet ? _swap.SwapProviderId.CHAIN_FLIP_TESTNET : _swap.SwapProviderId.CHAIN_FLIP_MAINNET;
41
+ this.baseUrl = (0, _utils2.getChainflipSwap)(isTestnet);
59
42
  }
60
43
  get chainService() {
61
44
  return this.swapBaseHandler.chainService;
@@ -72,20 +55,6 @@ class ChainflipSwapHandler {
72
55
  get slug() {
73
56
  return this.swapBaseHandler.slug;
74
57
  }
75
- get assetMapping() {
76
- if (this.isTestnet) {
77
- return _utils2.CHAIN_FLIP_SUPPORTED_TESTNET_ASSET_MAPPING;
78
- } else {
79
- return _utils2.CHAIN_FLIP_SUPPORTED_MAINNET_ASSET_MAPPING;
80
- }
81
- }
82
- get chainMapping() {
83
- if (this.isTestnet) {
84
- return _utils2.CHAIN_FLIP_SUPPORTED_TESTNET_MAPPING;
85
- } else {
86
- return _utils2.CHAIN_FLIP_SUPPORTED_MAINNET_MAPPING;
87
- }
88
- }
89
58
  get intermediaryAssetSlug() {
90
59
  if (this.isTestnet) {
91
60
  return INTERMEDIARY_TESTNET_ASSET_SLUG;
@@ -93,224 +62,6 @@ class ChainflipSwapHandler {
93
62
  return INTERMEDIARY_MAINNET_ASSET_SLUG;
94
63
  }
95
64
  }
96
- async validateSwapRequest(request) {
97
- try {
98
- // todo: risk of matching wrong chain, asset can lead to loss of funds
99
-
100
- const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
101
- const toAsset = this.chainService.getAssetBySlug(request.pair.to);
102
- const srcChain = fromAsset.originChain;
103
- const destChain = toAsset.originChain;
104
- const isSwapCrossChain = srcChain !== destChain;
105
- const srcChainInfo = this.chainService.getChainInfoByKey(srcChain);
106
- const srcChainId = this.chainMapping[srcChain];
107
- const destChainId = this.chainMapping[destChain];
108
- const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
109
- const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
110
- if (!srcChainId || !destChainId || !fromAssetId || !toAssetId) {
111
- return {
112
- error: _swap3.SwapErrorType.ASSET_NOT_SUPPORTED
113
- };
114
- }
115
- const [supportedDestChains, srcAssets, destAssets] = await Promise.all([this.swapSdk.getChains(srcChainId), this.swapSdk.getAssets(srcChainId), this.swapSdk.getAssets(destChainId)]);
116
- const supportedDestChainId = supportedDestChains.find(c => c.chain === destChainId);
117
- const srcAssetData = srcAssets.find(a => {
118
- if ((0, _utils._isSmartContractToken)(fromAsset)) {
119
- var _a$contractAddress;
120
- return (a === null || a === void 0 ? void 0 : (_a$contractAddress = a.contractAddress) === null || _a$contractAddress === void 0 ? void 0 : _a$contractAddress.toLowerCase()) === (0, _utils._getContractAddressOfToken)(fromAsset).toLowerCase() && a.asset === fromAssetId;
121
- }
122
- return a.asset === fromAssetId;
123
- });
124
- const destAssetData = destAssets.find(a => {
125
- if ((0, _utils._isSmartContractToken)(toAsset)) {
126
- var _a$contractAddress2;
127
- return (a === null || a === void 0 ? void 0 : (_a$contractAddress2 = a.contractAddress) === null || _a$contractAddress2 === void 0 ? void 0 : _a$contractAddress2.toLowerCase()) === (0, _utils._getContractAddressOfToken)(toAsset).toLowerCase() && a.asset === toAssetId;
128
- }
129
- return a.asset === toAssetId;
130
- });
131
- if (!destAssetData || !srcAssetData || isSwapCrossChain && !supportedDestChainId) {
132
- return {
133
- error: _swap3.SwapErrorType.UNKNOWN
134
- };
135
- }
136
- const bnAmount = new _bignumber.default(request.fromAmount);
137
- const bnMinSwap = new _bignumber.default(srcAssetData.minimumSwapAmount);
138
- if (srcAssetData.maximumSwapAmount) {
139
- const bnMaxProtocolSwap = new _bignumber.default(srcAssetData.maximumSwapAmount);
140
- if (bnMinSwap.gte(bnMaxProtocolSwap)) {
141
- return {
142
- error: _swap3.SwapErrorType.UNKNOWN
143
- };
144
- }
145
- if (bnAmount.gte(bnMaxProtocolSwap)) {
146
- return {
147
- error: _swap3.SwapErrorType.SWAP_EXCEED_ALLOWANCE,
148
- metadata: {
149
- minSwap: {
150
- value: srcAssetData.minimumSwapAmount,
151
- decimals: (0, _utils._getAssetDecimals)(fromAsset),
152
- symbol: fromAsset.symbol
153
- },
154
- maxSwap: {
155
- value: bnMaxProtocolSwap.toString(),
156
- decimals: (0, _utils._getAssetDecimals)(fromAsset),
157
- symbol: fromAsset.symbol
158
- },
159
- chain: srcChainInfo
160
- }
161
- };
162
- }
163
- }
164
- if (bnAmount.lt(bnMinSwap)) {
165
- // might miss case when minSwap is 0
166
- return {
167
- error: _swap3.SwapErrorType.NOT_MEET_MIN_SWAP,
168
- metadata: {
169
- minSwap: {
170
- value: srcAssetData.minimumSwapAmount,
171
- decimals: (0, _utils._getAssetDecimals)(fromAsset),
172
- symbol: fromAsset.symbol
173
- },
174
- maxSwap: {
175
- value: srcAssetData.maximumSwapAmount,
176
- decimals: (0, _utils._getAssetDecimals)(fromAsset),
177
- symbol: fromAsset.symbol
178
- },
179
- chain: srcChainInfo
180
- }
181
- };
182
- }
183
- return {
184
- metadata: {
185
- minSwap: {
186
- value: srcAssetData.minimumSwapAmount,
187
- decimals: (0, _utils._getAssetDecimals)(fromAsset),
188
- symbol: fromAsset.symbol
189
- },
190
- maxSwap: {
191
- value: srcAssetData.maximumSwapAmount,
192
- decimals: (0, _utils._getAssetDecimals)(fromAsset),
193
- symbol: fromAsset.symbol
194
- },
195
- chain: srcChainInfo
196
- }
197
- };
198
- } catch (e) {
199
- return {
200
- error: _swap3.SwapErrorType.UNKNOWN
201
- };
202
- }
203
- }
204
- parseSwapPath(fromAsset, toAsset) {
205
- if (toAsset.slug !== this.intermediaryAssetSlug && fromAsset.slug !== this.intermediaryAssetSlug) {
206
- // Chainflip always use USDC as intermediary
207
- return [fromAsset.slug, this.intermediaryAssetSlug, toAsset.slug]; // todo: generalize this
208
- }
209
-
210
- return [fromAsset.slug, toAsset.slug];
211
- }
212
- async getSwapQuote(request) {
213
- const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
214
- const toAsset = this.chainService.getAssetBySlug(request.pair.to);
215
- const fromChain = this.chainService.getChainInfoByKey(fromAsset.originChain);
216
- const fromChainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(fromChain);
217
- if (!fromAsset || !toAsset) {
218
- return new _SwapError.SwapError(_swap3.SwapErrorType.UNKNOWN);
219
- }
220
- const earlyValidation = await this.validateSwapRequest(request);
221
- const metadata = earlyValidation.metadata;
222
- if (earlyValidation.error) {
223
- return (0, _swap2._getChainflipEarlyValidationError)(earlyValidation.error, metadata);
224
- }
225
- const srcChainId = this.chainMapping[fromAsset.originChain];
226
- const destChainId = this.chainMapping[toAsset.originChain];
227
- const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
228
- const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
229
- try {
230
- var _metadata$maxSwap;
231
- const quoteResponse = await this.swapSdk.getQuote({
232
- srcChain: srcChainId,
233
- destChain: destChainId,
234
- srcAsset: fromAssetId,
235
- destAsset: toAssetId,
236
- amount: request.fromAmount
237
- });
238
- const feeComponent = [];
239
- quoteResponse.quote.includedFees.forEach(fee => {
240
- switch (fee.type) {
241
- case ChainflipFeeType.INGRESS:
242
- {
243
- feeComponent.push({
244
- tokenSlug: fromAsset.slug,
245
- amount: fee.amount,
246
- feeType: _swap3.SwapFeeType.NETWORK_FEE
247
- });
248
- break;
249
- }
250
-
251
- // eslint-disable-next-line no-fallthrough
252
- case ChainflipFeeType.EGRESS:
253
- {
254
- feeComponent.push({
255
- tokenSlug: toAsset.slug,
256
- amount: fee.amount,
257
- feeType: _swap3.SwapFeeType.NETWORK_FEE
258
- });
259
- break;
260
- }
261
- case ChainflipFeeType.NETWORK:
262
-
263
- // eslint-disable-next-line no-fallthrough
264
- case ChainflipFeeType.BOOST:
265
-
266
- // eslint-disable-next-line no-fallthrough
267
- case ChainflipFeeType.BROKER:
268
- {
269
- feeComponent.push({
270
- tokenSlug: this.intermediaryAssetSlug,
271
- amount: fee.amount,
272
- feeType: _swap3.SwapFeeType.PLATFORM_FEE
273
- });
274
- break;
275
- }
276
- }
277
- });
278
- const defaultFeeToken = (0, _utils._isNativeToken)(fromAsset) ? fromAsset.slug : fromChainNativeTokenSlug;
279
- return {
280
- pair: request.pair,
281
- fromAmount: request.fromAmount,
282
- toAmount: quoteResponse.quote.egressAmount.toString(),
283
- rate: (0, _utils2.calculateSwapRate)(request.fromAmount, quoteResponse.quote.egressAmount.toString(), fromAsset, toAsset),
284
- provider: this.providerInfo,
285
- aliveUntil: +Date.now() + (_utils2.SWAP_QUOTE_TIMEOUT_MAP[this.slug] || _utils2.SWAP_QUOTE_TIMEOUT_MAP.default),
286
- minSwap: metadata.minSwap.value,
287
- maxSwap: (_metadata$maxSwap = metadata.maxSwap) === null || _metadata$maxSwap === void 0 ? void 0 : _metadata$maxSwap.value,
288
- estimatedArrivalTime: quoteResponse.quote.estimatedDurationSeconds,
289
- // in seconds
290
- isLowLiquidity: quoteResponse.quote.lowLiquidityWarning,
291
- feeInfo: {
292
- feeComponent: feeComponent,
293
- defaultFeeToken,
294
- feeOptions: [defaultFeeToken]
295
- },
296
- route: {
297
- path: this.parseSwapPath(fromAsset, toAsset)
298
- }
299
- };
300
- } catch (e) {
301
- var _error$response;
302
- const error = e;
303
- const errorObj = error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data;
304
- if (errorObj && errorObj.error && errorObj.error.includes(CHAINFLIP_QUOTE_ERROR.InsufficientLiquidity)) {
305
- // todo: Chainflip will improve this
306
- return new _SwapError.SwapError(_swap3.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
307
- }
308
- if (errorObj && errorObj.message && errorObj.message.includes(CHAINFLIP_QUOTE_ERROR.InsufficientLiquidity)) {
309
- return new _SwapError.SwapError(_swap3.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
310
- }
311
- return new _SwapError.SwapError(_swap3.SwapErrorType.ERROR_FETCHING_QUOTE);
312
- }
313
- }
314
65
  async validateSwapProcess(params) {
315
66
  const amount = params.selectedQuote.fromAmount;
316
67
  const bnAmount = new _bignumber.default(amount);
@@ -349,48 +100,49 @@ class ChainflipSwapHandler {
349
100
  const fromAsset = this.chainService.getAssetBySlug(pair.from);
350
101
  const toAsset = this.chainService.getAssetBySlug(pair.to);
351
102
  const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
103
+ const toChainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
352
104
  const chainType = (0, _utils._isChainSubstrateCompatible)(chainInfo) ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM;
353
- const receiver = recipient !== null && recipient !== void 0 ? recipient : address;
354
- const srcChainId = this.chainMapping[fromAsset.originChain];
355
- const destChainId = this.chainMapping[toAsset.originChain];
105
+ const receiver = (0, _utils3._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
356
106
  const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
357
107
  const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
358
108
  const minReceive = new _bignumber.default(quote.rate).times(1 - slippage).toString();
359
- const depositAddressResponse = await this.swapSdk.requestDepositAddress({
360
- srcChain: srcChainId,
361
- destChain: destChainId,
362
- srcAsset: fromAssetId,
363
- destAsset: toAssetId,
364
- destAddress: receiver,
365
- amount: quote.fromAmount,
366
- fillOrKillParams: {
367
- minPrice: minReceive,
368
- // minimum accepted price for swaps through the channel
369
- refundAddress: address,
370
- // address to which assets are refunded
371
- retryDurationBlocks: 100 // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
372
- }
109
+ const depositParams = {
110
+ destinationAddress: receiver,
111
+ destinationAsset: toAssetId,
112
+ minimumPrice: minReceive,
113
+ // minimum accepted price for swaps through the channel
114
+ refundAddress: address,
115
+ // address to which assets are refunded
116
+ retryDurationInBlocks: '100',
117
+ // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
118
+ sourceAsset: fromAssetId
119
+ };
120
+ const url = `${this.baseUrl}&${new URLSearchParams(depositParams).toString()}`;
121
+ const response = await fetch(url, {
122
+ method: 'GET'
373
123
  });
374
-
124
+ const data = await response.json();
125
+ const depositChannelId = `${data.issuedBlock}-${data.network}-${data.channelId}`;
126
+ const depositAddress = data.address;
375
127
  const txData = {
376
128
  address,
377
129
  provider: this.providerInfo,
378
130
  quote: params.quote,
379
131
  slippage: params.slippage,
380
132
  recipient,
381
- depositChannelId: depositAddressResponse.depositChannelId,
382
- depositAddress: depositAddressResponse.depositAddress,
133
+ depositChannelId: depositChannelId,
134
+ depositAddress: depositAddress,
383
135
  process: params.process
384
136
  };
385
137
  let extrinsic;
386
138
  if (chainType === _KoniTypes.ChainType.SUBSTRATE) {
387
139
  const chainApi = this.chainService.getSubstrateApi(chainInfo.slug);
388
140
  const substrateApi = await chainApi.isReady;
389
- const [submittableExtrinsic] = await (0, _token.createTransferExtrinsic)({
141
+ const [submittableExtrinsic] = await (0, _token.createSubstrateExtrinsic)({
390
142
  from: address,
391
143
  networkKey: chainInfo.slug,
392
144
  substrateApi,
393
- to: depositAddressResponse.depositAddress,
145
+ to: depositAddress,
394
146
  tokenInfo: fromAsset,
395
147
  transferAll: false,
396
148
  // always false, because we do not allow swapping all the balance
@@ -405,7 +157,7 @@ class ChainflipSwapHandler {
405
157
  chain: chainInfo.slug,
406
158
  evmApi: this.chainService.getEvmApi(chainInfo.slug),
407
159
  from: address,
408
- to: depositAddressResponse.depositAddress,
160
+ to: depositAddress,
409
161
  value: quote.fromAmount,
410
162
  feeInfo,
411
163
  transferAll: false
@@ -417,7 +169,7 @@ class ChainflipSwapHandler {
417
169
  chain: chainInfo.slug,
418
170
  evmApi: this.chainService.getEvmApi(chainInfo.slug),
419
171
  from: address,
420
- to: depositAddressResponse.depositAddress,
172
+ to: depositAddress,
421
173
  value: quote.fromAmount,
422
174
  feeInfo,
423
175
  transferAll: false
@@ -444,7 +196,7 @@ class ChainflipSwapHandler {
444
196
  switch (type) {
445
197
  case _serviceBase.CommonStepType.DEFAULT:
446
198
  return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
447
- case _swap3.SwapStepType.SWAP:
199
+ case _swap.SwapStepType.SWAP:
448
200
  return this.handleSubmitStep(params);
449
201
  default:
450
202
  return this.handleSubmitStep(params);
@@ -454,7 +206,7 @@ class ChainflipSwapHandler {
454
206
  if (params.selectedQuote) {
455
207
  const submitStep = {
456
208
  name: 'Swap',
457
- type: _swap3.SwapStepType.SWAP
209
+ type: _swap.SwapStepType.SWAP
458
210
  };
459
211
  return Promise.resolve([submitStep, params.selectedQuote.feeInfo]);
460
212
  }