@subwallet/extension-base 1.3.40-0 → 1.3.41-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 (44) hide show
  1. package/cjs/constants/environment.js +4 -2
  2. package/cjs/koni/background/handlers/Extension.js +37 -38
  3. package/cjs/packageInfo.js +1 -1
  4. package/cjs/services/balance-service/helpers/subscribe/evm.js +6 -1
  5. package/cjs/services/balance-service/transfer/xcm/index.js +15 -9
  6. package/cjs/services/balance-service/transfer/xcm/utils.js +12 -14
  7. package/cjs/services/chain-service/constants.js +4 -3
  8. package/cjs/services/chain-service/handler/CardanoApi.js +25 -35
  9. package/cjs/services/earning-service/handlers/native-staking/tao.js +4 -38
  10. package/cjs/services/swap-service/handler/chainflip-handler.js +29 -18
  11. package/cjs/services/swap-service/handler/kyber-handler.js +5 -9
  12. package/cjs/services/swap-service/handler/simpleswap-handler.js +4 -7
  13. package/cjs/services/swap-service/handler/uniswap-handler.js +5 -12
  14. package/cjs/services/swap-service/utils.js +46 -37
  15. package/cjs/types/environment.js +19 -0
  16. package/cjs/utils/environment.js +30 -2
  17. package/constants/environment.d.ts +1 -0
  18. package/constants/environment.js +2 -1
  19. package/koni/background/handlers/Extension.js +37 -38
  20. package/package.json +11 -6
  21. package/packageInfo.js +1 -1
  22. package/services/balance-service/helpers/subscribe/evm.js +6 -1
  23. package/services/balance-service/transfer/xcm/index.js +15 -9
  24. package/services/balance-service/transfer/xcm/utils.d.ts +2 -0
  25. package/services/balance-service/transfer/xcm/utils.js +12 -14
  26. package/services/chain-service/constants.d.ts +1 -0
  27. package/services/chain-service/constants.js +4 -3
  28. package/services/chain-service/handler/CardanoApi.d.ts +1 -5
  29. package/services/chain-service/handler/CardanoApi.js +26 -34
  30. package/services/earning-service/handlers/native-staking/tao.d.ts +0 -11
  31. package/services/earning-service/handlers/native-staking/tao.js +4 -24
  32. package/services/swap-service/handler/chainflip-handler.d.ts +0 -2
  33. package/services/swap-service/handler/chainflip-handler.js +25 -13
  34. package/services/swap-service/handler/kyber-handler.d.ts +0 -1
  35. package/services/swap-service/handler/kyber-handler.js +5 -8
  36. package/services/swap-service/handler/simpleswap-handler.d.ts +0 -1
  37. package/services/swap-service/handler/simpleswap-handler.js +4 -6
  38. package/services/swap-service/handler/uniswap-handler.js +6 -13
  39. package/services/swap-service/utils.d.ts +0 -13
  40. package/services/swap-service/utils.js +46 -34
  41. package/types/environment.d.ts +9 -0
  42. package/types/environment.js +13 -0
  43. package/utils/environment.d.ts +2 -0
  44. package/utils/environment.js +27 -1
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isProductionMode = exports.BACKEND_PRICE_HISTORY_URL = exports.BACKEND_API_URL = void 0;
6
+ exports.isProductionMode = exports.SW_EXTERNAL_SERVICES_API = exports.BACKEND_PRICE_HISTORY_URL = exports.BACKEND_API_URL = void 0;
7
7
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
 
@@ -14,4 +14,6 @@ exports.isProductionMode = isProductionMode;
14
14
  const BACKEND_API_URL = process.env.SUBWALLET_API || (isProductionMode ? 'https://sw-services.subwallet.app/api' : 'https://be-dev.subwallet.app/api');
15
15
  exports.BACKEND_API_URL = BACKEND_API_URL;
16
16
  const BACKEND_PRICE_HISTORY_URL = process.env.SUBWALLET_PRICE_HISTORY_API || (isProductionMode ? 'https://price-history.subwallet.app/api' : 'https://price-history-dev.subwallet.app/api');
17
- exports.BACKEND_PRICE_HISTORY_URL = BACKEND_PRICE_HISTORY_URL;
17
+ exports.BACKEND_PRICE_HISTORY_URL = BACKEND_PRICE_HISTORY_URL;
18
+ const SW_EXTERNAL_SERVICES_API = process.env.SW_EXTERNAL_SERVICES_API || (isProductionMode ? 'https://external-services.subwallet.app' : 'https://external-services-dev.subwallet.app');
19
+ exports.SW_EXTERNAL_SERVICES_API = SW_EXTERNAL_SERVICES_API;
@@ -1500,7 +1500,7 @@ class KoniExtension {
1500
1500
  const isPosBridgeTransfer = (0, _posBridge._isPosChainBridge)(originNetworkKey, destinationNetworkKey);
1501
1501
  const isAcrossBridgeTransfer = (0, _acrossBridge._isAcrossChainBridge)(originNetworkKey, destinationNetworkKey);
1502
1502
  const extrinsicType = _KoniTypes.ExtrinsicType.TRANSFER_XCM;
1503
- const isSubstrateXcm = !(isAvailBridgeFromEvm || isAvailBridgeFromAvail || isSnowBridgeEvmTransfer || isPolygonBridgeTransfer || isPosBridgeTransfer);
1503
+ const isSubstrateXcm = !(isAvailBridgeFromEvm || isAvailBridgeFromAvail || isSnowBridgeEvmTransfer || isPolygonBridgeTransfer || isPosBridgeTransfer || isAcrossBridgeTransfer);
1504
1504
  const isTransferNative = this.#koniState.getNativeTokenInfo(originNetworkKey).slug === tokenSlug;
1505
1505
  const isTransferLocalTokenAndPayThatTokenAsFee = !isTransferNative && tokenSlug === tokenPayFeeSlug;
1506
1506
  let xcmFeeDryRun;
@@ -1582,48 +1582,47 @@ class KoniExtension {
1582
1582
  }
1583
1583
  let isSendingTokenSufficient = false;
1584
1584
  let receiverSystemAccountInfo;
1585
- if (!(0, _utils6._isChainSubstrateCompatible)(chainInfoMap[destinationNetworkKey])) {
1586
- return undefined;
1587
- }
1588
- const setting = {
1589
- visible: true
1590
- };
1591
- await this.#koniState.chainService.updateAssetSetting(destinationTokenInfo.slug, setting, true);
1592
- const {
1593
- value: _senderTransferable
1594
- } = await this.getAddressTransferableBalance({
1595
- address: from,
1596
- networkKey: originNetworkKey,
1597
- token: originTokenInfo.slug
1598
- });
1599
- const senderTransferable = BigInt(_senderTransferable);
1600
- const sendingAmount = BigInt(value);
1601
- const {
1602
- value: _receiverDestinationTokenKeepAliveBalance
1603
- } = await this.getAddressTotalBalance({
1604
- address: to,
1605
- networkKey: destinationNetworkKey,
1606
- token: destinationTokenInfo.slug,
1607
- extrinsicType
1608
- });
1609
- const receiverDestinationTokenKeepAliveBalance = BigInt(_receiverDestinationTokenKeepAliveBalance);
1610
- if (!(0, _utils6._isNativeToken)(destinationTokenInfo)) {
1611
- const _receiverNativeTotal = await this.getAddressTotalBalance({
1585
+ if ((0, _utils6._isChainSubstrateCompatible)(chainInfoMap[destinationNetworkKey])) {
1586
+ const setting = {
1587
+ visible: true
1588
+ };
1589
+ await this.#koniState.chainService.updateAssetSetting(destinationTokenInfo.slug, setting, true);
1590
+ const {
1591
+ value: _senderTransferable
1592
+ } = await this.getAddressTransferableBalance({
1593
+ address: from,
1594
+ networkKey: originNetworkKey,
1595
+ token: originTokenInfo.slug
1596
+ });
1597
+ const senderTransferable = BigInt(_senderTransferable);
1598
+ const sendingAmount = BigInt(value);
1599
+ const {
1600
+ value: _receiverDestinationTokenKeepAliveBalance
1601
+ } = await this.getAddressTotalBalance({
1612
1602
  address: to,
1613
1603
  networkKey: destinationNetworkKey,
1614
- token: destinationNativeTokenSlug,
1604
+ token: destinationTokenInfo.slug,
1615
1605
  extrinsicType
1616
1606
  });
1617
- receiverSystemAccountInfo = _receiverNativeTotal.metadata;
1607
+ const receiverDestinationTokenKeepAliveBalance = BigInt(_receiverDestinationTokenKeepAliveBalance);
1608
+ if (!(0, _utils6._isNativeToken)(destinationTokenInfo)) {
1609
+ const _receiverNativeTotal = await this.getAddressTotalBalance({
1610
+ address: to,
1611
+ networkKey: destinationNetworkKey,
1612
+ token: destinationNativeTokenSlug,
1613
+ extrinsicType
1614
+ });
1615
+ receiverSystemAccountInfo = _receiverNativeTotal.metadata;
1616
+ }
1617
+ const substrateApi = this.#koniState.getSubstrateApi(destinationNetworkKey);
1618
+ const sufficientChain = this.#koniState.chainService.value.sufficientChains;
1619
+ isSendingTokenSufficient = await (0, _utils._isSufficientToken)(destinationTokenInfo, substrateApi, sufficientChain);
1620
+ const [warning, error] = (0, _transfer.additionalValidateTransferForRecipient)(destinationTokenInfo, destinationNativeTokenInfo, extrinsicType, receiverDestinationTokenKeepAliveBalance, sendingAmount, senderTransferable,
1621
+ // different from sendingTokenInfo being passed in
1622
+ receiverSystemAccountInfo, isSendingTokenSufficient);
1623
+ warning.length && inputTransaction.warnings.push(...warning);
1624
+ error.length && inputTransaction.errors.push(...error);
1618
1625
  }
1619
- const substrateApi = this.#koniState.getSubstrateApi(destinationNetworkKey);
1620
- const sufficientChain = this.#koniState.chainService.value.sufficientChains;
1621
- isSendingTokenSufficient = await (0, _utils._isSufficientToken)(destinationTokenInfo, substrateApi, sufficientChain);
1622
- const [warning, error] = (0, _transfer.additionalValidateTransferForRecipient)(destinationTokenInfo, destinationNativeTokenInfo, extrinsicType, receiverDestinationTokenKeepAliveBalance, sendingAmount, senderTransferable,
1623
- // different from sendingTokenInfo being passed in
1624
- receiverSystemAccountInfo, isSendingTokenSufficient);
1625
- warning.length && inputTransaction.warnings.push(...warning);
1626
- error.length && inputTransaction.errors.push(...error);
1627
1626
  if (isSubstrateXcm) {
1628
1627
  const isDryRunSuccess = await (0, _xcm.dryRunXcmExtrinsicV2)(params);
1629
1628
  if (!isDryRunSuccess) {
@@ -13,6 +13,6 @@ const packageInfo = {
13
13
  name: '@subwallet/extension-base',
14
14
  path: typeof __dirname === 'string' ? __dirname : 'auto',
15
15
  type: 'cjs',
16
- version: '1.3.40-0'
16
+ version: '1.3.41-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -9,6 +9,7 @@ var _types = require("@subwallet/chain-list/types");
9
9
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
10
10
  var _constants = require("@subwallet/extension-base/constants");
11
11
  var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
12
+ var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
12
13
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
13
14
  var _utils2 = require("@subwallet/extension-base/utils");
14
15
  var _util = require("@polkadot/util");
@@ -24,7 +25,11 @@ function subscribeERC20Interval(_ref) {
24
25
  evmApi
25
26
  } = _ref;
26
27
  const chain = chainInfo.slug;
27
- const tokenList = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.ERC20]);
28
+ let tokenList = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.ERC20]);
29
+ if (_constants2._BALANCE_CHAIN_GROUP.moonbeam.includes(chain)) {
30
+ const moonbeamLocal = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.LOCAL]);
31
+ tokenList = Object.assign({}, tokenList, moonbeamLocal);
32
+ }
28
33
  const erc20ContractMap = {};
29
34
  Object.entries(tokenList).forEach(_ref2 => {
30
35
  let [slug, tokenInfo] = _ref2;
@@ -146,19 +146,25 @@ exports.createXcmExtrinsicV2 = createXcmExtrinsicV2;
146
146
  const dryRunXcmExtrinsicV2 = async request => {
147
147
  try {
148
148
  const dryRunResult = await (0, _utils.dryRunXcm)(request);
149
- const originDryRunResult = dryRunResult.origin;
150
- if (originDryRunResult.success) {
151
- const destinationDryRunResult = dryRunResult.destination;
152
- if (destinationDryRunResult.success) {
153
- return true;
149
+ const originDryRunRs = dryRunResult.origin;
150
+ if (originDryRunRs.success) {
151
+ const {
152
+ assetHub,
153
+ bridgeHub,
154
+ destination
155
+ } = dryRunResult;
156
+ if ((assetHub === null || assetHub === void 0 ? void 0 : assetHub.success) === false || (bridgeHub === null || bridgeHub === void 0 ? void 0 : bridgeHub.success) === false || (destination === null || destination === void 0 ? void 0 : destination.success) === false) {
157
+ if ((destination === null || destination === void 0 ? void 0 : destination.success) === false) {
158
+ // pass dry-run in these cases
159
+ return (0, _utils.isChainNotSupportDryRun)(destination.failureReason) || (0, _utils.isChainNotSupportPolkadotApi)(destination.failureReason);
160
+ }
161
+ return false;
154
162
  }
155
-
156
- // pass dry-run in these cases
157
- return (0, _utils.isChainNotSupportDryRun)(destinationDryRunResult.failureReason) || (0, _utils.isChainNotSupportPolkadotApi)(destinationDryRunResult.failureReason);
163
+ return true;
158
164
  }
159
165
 
160
166
  // pass dry-run in these cases
161
- return (0, _utils.isChainNotSupportDryRun)(originDryRunResult.failureReason) || (0, _utils.isChainNotSupportPolkadotApi)(originDryRunResult.failureReason);
167
+ return (0, _utils.isChainNotSupportDryRun)(originDryRunRs.failureReason) || (0, _utils.isChainNotSupportPolkadotApi)(originDryRunRs.failureReason);
162
168
  } catch (e) {
163
169
  return false;
164
170
  }
@@ -11,17 +11,18 @@ exports.isChainNotSupportDryRun = isChainNotSupportDryRun;
11
11
  exports.isChainNotSupportPolkadotApi = isChainNotSupportPolkadotApi;
12
12
  exports.isUseTeleportProtocol = isUseTeleportProtocol;
13
13
  var _paraspellChainMap = require("@subwallet/extension-base/constants/paraspell-chain-map");
14
+ var _environment = require("@subwallet/extension-base/types/environment");
15
+ var _utils = require("@subwallet/extension-base/utils");
14
16
  var _util = require("@polkadot/util");
15
17
  // Copyright 2019-2022 @subwallet/extension-base
16
18
  // SPDX-License-Identifier: Apache-2.0
17
19
 
18
- const paraSpellEndpoint = 'https://api.lightspell.xyz/v3';
20
+ const version = '/v3';
19
21
  const paraSpellApi = {
20
- buildXcm: `${paraSpellEndpoint}/x-transfer`,
21
- dryRunXcm: `${paraSpellEndpoint}/dry-run`,
22
- feeXcm: `${paraSpellEndpoint}/xcm-fee`
22
+ buildXcm: `${version}/x-transfer`,
23
+ dryRunXcm: `${version}/dry-run`,
24
+ feeXcm: `${version}/xcm-fee`
23
25
  };
24
- const paraSpellKey = process.env.PARASPELL_API_KEY || '';
25
26
  function txHexToSubmittableExtrinsic(api, hex) {
26
27
  try {
27
28
  (0, _util.assert)((0, _util.isHex)(hex), 'Expected a hex-encoded call');
@@ -98,13 +99,12 @@ async function buildXcm(request) {
98
99
  to: paraSpellChainMap[destinationChain.slug],
99
100
  currency: createParaSpellCurrency(psAssetType, psAssetValue, sendingValue)
100
101
  };
101
- const response = await fetch(paraSpellApi.buildXcm, {
102
+ const response = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.PARASPELL, paraSpellApi.buildXcm, {
102
103
  method: 'POST',
103
104
  body: JSON.stringify(bodyData),
104
105
  headers: {
105
106
  'Content-Type': 'application/json',
106
- Accept: 'application/json',
107
- 'X-API-KEY': paraSpellKey
107
+ Accept: 'application/json'
108
108
  }
109
109
  });
110
110
  if (!response.ok) {
@@ -138,13 +138,12 @@ async function dryRunXcm(request) {
138
138
  to: paraSpellChainMap[destinationChain.slug],
139
139
  currency: createParaSpellCurrency(psAssetType, psAssetValue, sendingValue)
140
140
  };
141
- const response = await fetch(paraSpellApi.dryRunXcm, {
141
+ const response = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.PARASPELL, paraSpellApi.dryRunXcm, {
142
142
  method: 'POST',
143
143
  body: JSON.stringify(bodyData),
144
144
  headers: {
145
145
  'Content-Type': 'application/json',
146
- Accept: 'application/json',
147
- 'X-API-KEY': paraSpellKey
146
+ Accept: 'application/json'
148
147
  }
149
148
  });
150
149
  if (!response.ok) {
@@ -182,13 +181,12 @@ async function estimateXcmFee(request) {
182
181
  to: paraSpellChainMap[toChainInfo.slug],
183
182
  currency: createParaSpellCurrency(psAssetType, psAssetValue, value)
184
183
  };
185
- const response = await fetch(paraSpellApi.feeXcm, {
184
+ const response = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.PARASPELL, paraSpellApi.feeXcm, {
186
185
  method: 'POST',
187
186
  body: JSON.stringify(bodyData),
188
187
  headers: {
189
188
  'Content-Type': 'application/json',
190
- Accept: 'application/json',
191
- 'X-API-KEY': paraSpellKey
189
+ Accept: 'application/json'
192
190
  }
193
191
  });
194
192
  if (!response.ok) {
@@ -41,12 +41,13 @@ const _BALANCE_CHAIN_GROUP = {
41
41
  genshiro: ['genshiro_testnet', 'genshiro'],
42
42
  equilibrium_parachain: ['equilibrium_parachain'],
43
43
  bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'hydradx_rococo', 'pendulum', 'amplitude', 'continuum_network', 'truth_network', 'jamton'],
44
- statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala', 'shibuya', 'dbcchain', 'westend_assethub'],
44
+ statemine: ['statemine', 'astar', 'shiden', 'statemint', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala', 'shibuya', 'dbcchain', 'westend_assethub', 'chainflip_assethub'],
45
45
  kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
46
46
  // perhaps there are some runtime updates
47
47
  centrifuge: ['centrifuge'],
48
48
  supportBridged: ['rococo_assethub', 'statemint', 'statemine', 'polimec'],
49
- bittensor: ['bittensor', 'bittensor_testnet']
49
+ bittensor: ['bittensor', 'bittensor_testnet'],
50
+ moonbeam: ['moonbeam', 'moonriver', 'moonbase']
50
51
  };
51
52
  exports._BALANCE_CHAIN_GROUP = _BALANCE_CHAIN_GROUP;
52
53
  const _BALANCE_TOKEN_GROUP = {
@@ -272,7 +273,7 @@ const _TRANSFER_CHAIN_GROUP = {
272
273
  genshiro: ['genshiro_testnet', 'genshiro', 'equilibrium_parachain'],
273
274
  // crab: ['crab', 'pangolin'],
274
275
  bitcountry: ['pioneer', 'bitcountry'],
275
- statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub'],
276
+ statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub', 'chainflip_assethub'],
276
277
  riochain: ['riochain'],
277
278
  sora_substrate: ['sora_substrate'],
278
279
  avail: ['kate', 'goldberg_testnet'],
@@ -3,20 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CardanoApi = exports.API_KEY = void 0;
6
+ exports.CardanoApi = void 0;
7
7
  var _utils = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano/utils");
8
8
  var _types = require("@subwallet/extension-base/services/chain-service/types");
9
+ var _environment = require("@subwallet/extension-base/types/environment");
9
10
  var _utils2 = require("@subwallet/extension-base/utils");
10
11
  var _rxjs = require("rxjs");
11
12
  var _util = require("@polkadot/util");
12
13
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
13
14
  // SPDX-License-Identifier: Apache-2.0
14
15
 
15
- const API_KEY = {
16
- mainnet: process.env.BLOCKFROST_API_KEY_MAIN || '',
17
- testnet: process.env.BLOCKFROST_API_KEY_PREP || ''
18
- };
19
- exports.API_KEY = API_KEY;
16
+ // export const API_KEY = {
17
+ // mainnet: process.env.BLOCKFROST_API_KEY_MAIN || '',
18
+ // testnet: process.env.BLOCKFROST_API_KEY_PREP || ''
19
+ // };
20
+
20
21
  class CardanoApi {
21
22
  // private api: BlockFrostAPI;
22
23
 
@@ -33,7 +34,6 @@ class CardanoApi {
33
34
  this.chainSlug = chainSlug;
34
35
  this.apiUrl = apiUrl;
35
36
  this.isTestnet = isTestnet !== null && isTestnet !== void 0 ? isTestnet : true;
36
- this.projectId = isTestnet ? API_KEY.testnet : API_KEY.mainnet;
37
37
  this.providerName = providerName || 'unknown';
38
38
  // this.api = this.createProvider(isTestnet);
39
39
  this.isReadyHandler = (0, _utils2.createPromiseHandler)();
@@ -45,6 +45,9 @@ class CardanoApi {
45
45
  get connectionStatus() {
46
46
  return this.connectionStatusSubject.getValue();
47
47
  }
48
+ fetchCardano(path, options) {
49
+ return (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.CARDANO, path, options, this.isTestnet);
50
+ }
48
51
  updateConnectionStatus(status) {
49
52
  const isConnected = status === _types._ChainConnectionStatus.CONNECTED;
50
53
  if (isConnected !== this.isApiConnectedSubject.value) {
@@ -115,12 +118,9 @@ class CardanoApi {
115
118
  }
116
119
  async getBalanceMap(address) {
117
120
  try {
118
- const url = this.isTestnet ? `https://cardano-preprod.blockfrost.io/api/v0/addresses/${address}` : `https://cardano-mainnet.blockfrost.io/api/v0/addresses/${address}`;
119
- const response = await fetch(url, {
120
- method: 'GET',
121
- headers: {
122
- Project_id: this.projectId
123
- }
121
+ const path = `/addresses/${address}`;
122
+ const response = await this.fetchCardano(path, {
123
+ method: 'GET'
124
124
  });
125
125
  const addressBalance = await response.json();
126
126
  return addressBalance.amount;
@@ -131,13 +131,10 @@ class CardanoApi {
131
131
  }
132
132
  async getUtxos(address, page, limit) {
133
133
  try {
134
- let url = this.isTestnet ? `https://cardano-preprod.blockfrost.io/api/v0/addresses/${address}/utxos` : `https://cardano-mainnet.blockfrost.io/api/v0/addresses/${address}/utxos`;
135
- url += `?page=${page}&count=${limit}`;
136
- const response = await fetch(url, {
137
- method: 'GET',
138
- headers: {
139
- Project_id: this.projectId
140
- }
134
+ let path = `/addresses/${address}/utxos`;
135
+ path += `?page=${page}&count=${limit}`;
136
+ const response = await this.fetchCardano(path, {
137
+ method: 'GET'
141
138
  });
142
139
  const utxos = await response.json();
143
140
  return utxos;
@@ -148,12 +145,9 @@ class CardanoApi {
148
145
  }
149
146
  async getSpecificUtxo(txHash) {
150
147
  try {
151
- const url = this.isTestnet ? `https://cardano-preprod.blockfrost.io/api/v0/txs/${txHash}/utxos` : `https://cardano-mainnet.blockfrost.io/api/v0/txs/${txHash}/utxos`;
152
- const response = await fetch(url, {
153
- method: 'GET',
154
- headers: {
155
- Project_id: this.projectId
156
- }
148
+ const path = `/txs/${txHash}/utxos`;
149
+ const response = await this.fetchCardano(path, {
150
+ method: 'GET'
157
151
  });
158
152
  const utxo = await response.json();
159
153
  return utxo;
@@ -164,11 +158,10 @@ class CardanoApi {
164
158
  }
165
159
  async sendCardanoTxReturnHash(tx) {
166
160
  try {
167
- const url = this.isTestnet ? 'https://cardano-preprod.blockfrost.io/api/v0/tx/submit' : 'https://cardano-mainnet.blockfrost.io/api/v0/tx/submit';
168
- const response = await fetch(url, {
161
+ const path = '/tx/submit';
162
+ const response = await this.fetchCardano(path, {
169
163
  method: 'POST',
170
164
  headers: {
171
- Project_id: this.projectId,
172
165
  'Content-Type': 'application/cbor'
173
166
  },
174
167
  body: (0, _utils.cborToBytes)(tx)
@@ -188,12 +181,9 @@ class CardanoApi {
188
181
  async getStatusByTxHash(txHash, ttl) {
189
182
  const cronTime = 30000;
190
183
  return (0, _utils.retryCardanoTxStatus)(async () => {
191
- const url = this.isTestnet ? `https://cardano-preprod.blockfrost.io/api/v0/txs/${txHash}` : `https://cardano-mainnet.blockfrost.io/api/v0/txs/${txHash}`;
192
- const response = await fetch(url, {
193
- method: 'GET',
194
- headers: {
195
- Project_id: this.projectId
196
- }
184
+ const path = `/txs/${txHash}`;
185
+ const response = await this.fetchCardano(path, {
186
+ method: 'GET'
197
187
  });
198
188
  const txInfo = await response.json();
199
189
  if (txInfo.block && txInfo.hash && txInfo.index >= 0) {
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = exports.bittensorApiKey = exports.BittensorCache = exports.BITTENSOR_API_KEY_9 = exports.BITTENSOR_API_KEY_8 = exports.BITTENSOR_API_KEY_7 = exports.BITTENSOR_API_KEY_6 = exports.BITTENSOR_API_KEY_5 = exports.BITTENSOR_API_KEY_4 = exports.BITTENSOR_API_KEY_3 = exports.BITTENSOR_API_KEY_2 = exports.BITTENSOR_API_KEY_10 = exports.BITTENSOR_API_KEY_1 = void 0;
7
+ exports.default = exports.BittensorCache = void 0;
8
8
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
9
9
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
10
10
  var _constants = require("@subwallet/extension-base/constants");
@@ -12,6 +12,7 @@ var _utils = require("@subwallet/extension-base/koni/api/staking/bonding/utils")
12
12
  var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
13
13
  var _basePara = _interopRequireDefault(require("@subwallet/extension-base/services/earning-service/handlers/native-staking/base-para"));
14
14
  var _types = require("@subwallet/extension-base/types");
15
+ var _environment = require("@subwallet/extension-base/types/environment");
15
16
  var _utils3 = require("@subwallet/extension-base/utils");
16
17
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
17
18
  var _i18next = require("i18next");
@@ -21,40 +22,7 @@ var _dtao = require("./dtao");
21
22
  // Copyright 2019-2022 @subwallet/extension-base
22
23
  // SPDX-License-Identifier: Apache-2.0
23
24
 
24
- const BITTENSOR_API_KEY_1 = process.env.BITTENSOR_API_KEY_1 || '';
25
- exports.BITTENSOR_API_KEY_1 = BITTENSOR_API_KEY_1;
26
- const BITTENSOR_API_KEY_2 = process.env.BITTENSOR_API_KEY_2 || '';
27
- exports.BITTENSOR_API_KEY_2 = BITTENSOR_API_KEY_2;
28
- const BITTENSOR_API_KEY_3 = process.env.BITTENSOR_API_KEY_3 || '';
29
- exports.BITTENSOR_API_KEY_3 = BITTENSOR_API_KEY_3;
30
- const BITTENSOR_API_KEY_4 = process.env.BITTENSOR_API_KEY_4 || '';
31
- exports.BITTENSOR_API_KEY_4 = BITTENSOR_API_KEY_4;
32
- const BITTENSOR_API_KEY_5 = process.env.BITTENSOR_API_KEY_5 || '';
33
- exports.BITTENSOR_API_KEY_5 = BITTENSOR_API_KEY_5;
34
- const BITTENSOR_API_KEY_6 = process.env.BITTENSOR_API_KEY_6 || '';
35
- exports.BITTENSOR_API_KEY_6 = BITTENSOR_API_KEY_6;
36
- const BITTENSOR_API_KEY_7 = process.env.BITTENSOR_API_KEY_7 || '';
37
- exports.BITTENSOR_API_KEY_7 = BITTENSOR_API_KEY_7;
38
- const BITTENSOR_API_KEY_8 = process.env.BITTENSOR_API_KEY_8 || '';
39
- exports.BITTENSOR_API_KEY_8 = BITTENSOR_API_KEY_8;
40
- const BITTENSOR_API_KEY_9 = process.env.BITTENSOR_API_KEY_9 || '';
41
- exports.BITTENSOR_API_KEY_9 = BITTENSOR_API_KEY_9;
42
- const BITTENSOR_API_KEY_10 = process.env.BITTENSOR_API_KEY_10 || '';
43
- exports.BITTENSOR_API_KEY_10 = BITTENSOR_API_KEY_10;
44
- function random() {
45
- for (var _len = arguments.length, keys = new Array(_len), _key = 0; _key < _len; _key++) {
46
- keys[_key] = arguments[_key];
47
- }
48
- const validKeys = keys.filter(key => key);
49
- const randomIndex = Math.floor(Math.random() * validKeys.length);
50
- return validKeys[randomIndex];
51
- }
52
- const bittensorApiKey = () => {
53
- return random(BITTENSOR_API_KEY_1, BITTENSOR_API_KEY_2, BITTENSOR_API_KEY_3, BITTENSOR_API_KEY_4, BITTENSOR_API_KEY_5, BITTENSOR_API_KEY_6, BITTENSOR_API_KEY_7, BITTENSOR_API_KEY_8, BITTENSOR_API_KEY_9, BITTENSOR_API_KEY_10);
54
- };
55
-
56
25
  /* Fetch data */
57
- exports.bittensorApiKey = bittensorApiKey;
58
26
  class BittensorCache {
59
27
  static instance = null;
60
28
  cache = null;
@@ -80,13 +48,11 @@ class BittensorCache {
80
48
  return this.promise;
81
49
  }
82
50
  async fetchData() {
83
- const apiKey = bittensorApiKey();
84
51
  try {
85
- const resp = await fetch('https://api.taostats.io/api/validator/latest/v1?limit=50', {
52
+ const resp = await (0, _utils3.fetchFromProxyService)(_environment.ProxyServiceRoute.BITTENSOR, '/validator/latest/v1?limit=50', {
86
53
  method: 'GET',
87
54
  headers: {
88
- 'Content-Type': 'application/json',
89
- Authorization: `${apiKey}`
55
+ 'Content-Type': 'application/json'
90
56
  }
91
57
  });
92
58
  if (!resp.ok) {
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.ChainflipSwapHandler = exports.CHAINFLIP_BROKER_API = void 0;
7
+ exports.ChainflipSwapHandler = void 0;
8
8
  var _chainList = require("@subwallet/chain-list");
9
9
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
10
10
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
@@ -12,9 +12,9 @@ var _smartContract = require("@subwallet/extension-base/services/balance-service
12
12
  var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
13
13
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
14
14
  var _baseHandler = require("@subwallet/extension-base/services/swap-service/handler/base-handler");
15
- var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
16
15
  var _types = require("@subwallet/extension-base/types");
17
- var _utils3 = require("@subwallet/extension-base/utils");
16
+ var _environment = require("@subwallet/extension-base/types/environment");
17
+ var _utils2 = require("@subwallet/extension-base/utils");
18
18
  var _getId = require("@subwallet/extension-base/utils/getId");
19
19
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
20
20
  // Copyright 2019-2022 @subwallet/extension-base
@@ -22,9 +22,10 @@ var _bignumber = _interopRequireDefault(require("bignumber.js"));
22
22
 
23
23
  const INTERMEDIARY_MAINNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_ETHEREUM;
24
24
  const INTERMEDIARY_TESTNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_SEPOLIA;
25
- const CHAINFLIP_BROKER_API = process.env.CHAINFLIP_BROKER_API || '';
26
- exports.CHAINFLIP_BROKER_API = CHAINFLIP_BROKER_API;
27
25
  class ChainflipSwapHandler {
26
+ // private baseUrl: string;
27
+ // private assetsUrl: string;
28
+
28
29
  constructor(chainService, balanceService, feeService) {
29
30
  let isTestnet = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
30
31
  this.swapBaseHandler = new _baseHandler.SwapBaseHandler({
@@ -36,8 +37,10 @@ class ChainflipSwapHandler {
36
37
  });
37
38
  this.isTestnet = isTestnet;
38
39
  this.providerSlug = isTestnet ? _types.SwapProviderId.CHAIN_FLIP_TESTNET : _types.SwapProviderId.CHAIN_FLIP_MAINNET;
39
- this.baseUrl = (0, _utils2.getChainflipSwap)(isTestnet);
40
+ // this.baseUrl = getChainflipSwap(isTestnet);
41
+ // this.assetsUrl = getAssetsUrl(isTestnet);
40
42
  }
43
+
41
44
  get chainService() {
42
45
  return this.swapBaseHandler.chainService;
43
46
  }
@@ -73,7 +76,7 @@ class ChainflipSwapHandler {
73
76
  const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
74
77
  const toChainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
75
78
  const chainType = (0, _utils._isChainSubstrateCompatible)(chainInfo) ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM;
76
- const receiver = (0, _utils3._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
79
+ const receiver = (0, _utils2._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
77
80
  const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
78
81
  const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
79
82
  const minReceive = new _bignumber.default(quote.rate).times(1 - slippage).toString();
@@ -85,23 +88,31 @@ class ChainflipSwapHandler {
85
88
  if (processMetadata.destChain !== quoteMetadata.destChain || processMetadata.srcChain !== quoteMetadata.srcChain) {
86
89
  throw new Error('Metadata for Chainflip not found');
87
90
  }
91
+ const assetsResponse = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.CHAINFLIP, '/assets', {
92
+ method: 'GET'
93
+ }, this.isTestnet);
94
+ const _allAssets = await assetsResponse.json();
95
+ const allAssets = _allAssets.assets;
96
+ const sourceAsset = allAssets.find(asset => asset.network === processMetadata.srcChain && asset.ticker === fromAssetId);
97
+ const destinationAsset = allAssets.find(asset => asset.network === processMetadata.destChain && asset.ticker === toAssetId);
98
+ if (!sourceAsset || !destinationAsset) {
99
+ throw new Error('Error get Chainflip data');
100
+ }
88
101
  const depositParams = {
89
- sourceChain: processMetadata.srcChain,
90
102
  destinationAddress: receiver,
91
- destinationAsset: toAssetId,
92
- destinationChain: processMetadata.destChain,
103
+ destinationAsset: destinationAsset.id,
104
+ sourceAsset: sourceAsset.id,
93
105
  minimumPrice: minReceive,
94
106
  // minimum accepted price for swaps through the channel
95
107
  refundAddress: address,
96
108
  // address to which assets are refunded
97
- retryDurationInBlocks: '100',
98
- // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
99
- sourceAsset: fromAssetId
109
+ retryDurationInBlocks: '100' // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
100
110
  };
101
- const url = `${this.baseUrl}&${new URLSearchParams(depositParams).toString()}`;
102
- const response = await fetch(url, {
111
+
112
+ const path = `/swap?${new URLSearchParams(depositParams).toString()}`;
113
+ const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.CHAINFLIP, path, {
103
114
  method: 'GET'
104
- });
115
+ }, this.isTestnet);
105
116
  const data = await response.json();
106
117
  if (!data.id || !data.address || data.address === '' || !data.issuedBlock || !data.network || !data.channelId) {
107
118
  throw new Error('Error get Chainflip data');
@@ -208,8 +219,8 @@ class ChainflipSwapHandler {
208
219
  expectedReceive: params.selectedQuote.toAmount,
209
220
  originTokenInfo,
210
221
  destinationTokenInfo,
211
- sender: (0, _utils3._reformatAddressWithChain)(params.request.address, originChain),
212
- receiver: (0, _utils3._reformatAddressWithChain)(params.request.recipient || params.request.address, destinationChain),
222
+ sender: (0, _utils2._reformatAddressWithChain)(params.request.address, originChain),
223
+ receiver: (0, _utils2._reformatAddressWithChain)(params.request.recipient || params.request.address, destinationChain),
213
224
  srcChain: metadata.srcChain,
214
225
  destChain: metadata.destChain,
215
226
  version: 2
@@ -4,12 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.KyberHandler = exports.KYBER_CLIENT_ID = void 0;
7
+ exports.KyberHandler = void 0;
8
8
  var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
9
9
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
10
10
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
11
11
  var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
12
12
  var _types = require("@subwallet/extension-base/types");
13
+ var _environment = require("@subwallet/extension-base/types/environment");
13
14
  var _utils = require("@subwallet/extension-base/utils");
14
15
  var _getId = require("@subwallet/extension-base/utils/getId");
15
16
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
@@ -19,9 +20,6 @@ var _baseHandler = require("./base-handler");
19
20
  // Copyright 2019-2022 @subwallet/extension-base
20
21
  // SPDX-License-Identifier: Apache-2.0
21
22
 
22
- const KYBER_CLIENT_ID = process.env.KYBER_CLIENT_ID || '';
23
- exports.KYBER_CLIENT_ID = KYBER_CLIENT_ID;
24
- const kyberUrl = 'https://aggregator-api.kyberswap.com';
25
23
  async function buildTxForKyberSwap(params, chain) {
26
24
  const {
27
25
  recipient,
@@ -46,14 +44,13 @@ async function buildTxForKyberSwap(params, chain) {
46
44
  amountIn,
47
45
  gasInclude: 'true'
48
46
  });
49
- const url = `${kyberUrl}/${chain}/api/v1/routes?${queryParams.toString()}`;
47
+ const path = `/${chain}/api/v1/routes?${queryParams.toString()}`;
50
48
  try {
51
49
  var _routeData$data;
52
- const res = await fetch(url, {
50
+ const res = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.KYBER, path, {
53
51
  method: 'GET',
54
52
  headers: {
55
53
  'Content-Type': 'application/json',
56
- 'x-client-id': KYBER_CLIENT_ID,
57
54
  accept: 'application/json'
58
55
  }
59
56
  });
@@ -86,11 +83,10 @@ async function buildTxForKyberSwap(params, chain) {
86
83
  };
87
84
  console.log('routeSummary2', routeSummary);
88
85
  try {
89
- const res = await fetch(`${kyberUrl}/${chain}/api/v1/route/build`, {
86
+ const res = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.KYBER, `/${chain}/api/v1/route/build`, {
90
87
  method: 'POST',
91
88
  headers: {
92
89
  'Content-Type': 'application/json',
93
- 'x-client-id': KYBER_CLIENT_ID,
94
90
  accept: 'application/json'
95
91
  },
96
92
  body: JSON.stringify(body)