@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.
- package/cjs/constants/environment.js +4 -2
- package/cjs/koni/background/handlers/Extension.js +37 -38
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/evm.js +6 -1
- package/cjs/services/balance-service/transfer/xcm/index.js +15 -9
- package/cjs/services/balance-service/transfer/xcm/utils.js +12 -14
- package/cjs/services/chain-service/constants.js +4 -3
- package/cjs/services/chain-service/handler/CardanoApi.js +25 -35
- package/cjs/services/earning-service/handlers/native-staking/tao.js +4 -38
- package/cjs/services/swap-service/handler/chainflip-handler.js +29 -18
- package/cjs/services/swap-service/handler/kyber-handler.js +5 -9
- package/cjs/services/swap-service/handler/simpleswap-handler.js +4 -7
- package/cjs/services/swap-service/handler/uniswap-handler.js +5 -12
- package/cjs/services/swap-service/utils.js +46 -37
- package/cjs/types/environment.js +19 -0
- package/cjs/utils/environment.js +30 -2
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/koni/background/handlers/Extension.js +37 -38
- package/package.json +11 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/evm.js +6 -1
- package/services/balance-service/transfer/xcm/index.js +15 -9
- package/services/balance-service/transfer/xcm/utils.d.ts +2 -0
- package/services/balance-service/transfer/xcm/utils.js +12 -14
- package/services/chain-service/constants.d.ts +1 -0
- package/services/chain-service/constants.js +4 -3
- package/services/chain-service/handler/CardanoApi.d.ts +1 -5
- package/services/chain-service/handler/CardanoApi.js +26 -34
- package/services/earning-service/handlers/native-staking/tao.d.ts +0 -11
- package/services/earning-service/handlers/native-staking/tao.js +4 -24
- package/services/swap-service/handler/chainflip-handler.d.ts +0 -2
- package/services/swap-service/handler/chainflip-handler.js +25 -13
- package/services/swap-service/handler/kyber-handler.d.ts +0 -1
- package/services/swap-service/handler/kyber-handler.js +5 -8
- package/services/swap-service/handler/simpleswap-handler.d.ts +0 -1
- package/services/swap-service/handler/simpleswap-handler.js +4 -6
- package/services/swap-service/handler/uniswap-handler.js +6 -13
- package/services/swap-service/utils.d.ts +0 -13
- package/services/swap-service/utils.js +46 -34
- package/types/environment.d.ts +9 -0
- package/types/environment.js +13 -0
- package/utils/environment.d.ts +2 -0
- 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 (
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
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:
|
|
1604
|
+
token: destinationTokenInfo.slug,
|
|
1615
1605
|
extrinsicType
|
|
1616
1606
|
});
|
|
1617
|
-
|
|
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) {
|
package/cjs/packageInfo.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
150
|
-
if (
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
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)(
|
|
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
|
|
20
|
+
const version = '/v3';
|
|
19
21
|
const paraSpellApi = {
|
|
20
|
-
buildXcm: `${
|
|
21
|
-
dryRunXcm: `${
|
|
22
|
-
feeXcm: `${
|
|
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
|
|
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
|
|
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
|
|
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', '
|
|
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 =
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
19
|
-
|
|
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
|
|
119
|
-
const response = await
|
|
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
|
|
135
|
-
|
|
136
|
-
const response = await
|
|
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
|
|
152
|
-
const response = await
|
|
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
|
|
168
|
-
const response = await
|
|
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
|
|
192
|
-
const response = await
|
|
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.
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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,
|
|
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:
|
|
92
|
-
|
|
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
|
-
|
|
102
|
-
const
|
|
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,
|
|
212
|
-
receiver: (0,
|
|
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 =
|
|
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
|
|
47
|
+
const path = `/${chain}/api/v1/routes?${queryParams.toString()}`;
|
|
50
48
|
try {
|
|
51
49
|
var _routeData$data;
|
|
52
|
-
const res = await
|
|
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
|
|
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)
|