@subwallet/extension-base 1.3.29-1 → 1.3.31-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/background/KoniTypes.d.ts +16 -4
- package/background/errors/SwapError.js +1 -1
- package/cjs/background/errors/SwapError.js +1 -1
- package/cjs/constants/blocked-actions.js +2 -2
- package/cjs/constants/paraspell-chain-map.js +13 -0
- package/cjs/constants/remind-notification-time.js +3 -3
- package/cjs/core/logic-validation/swap.js +63 -4
- package/cjs/core/logic-validation/transfer.js +13 -1
- package/cjs/core/substrate/xcm-parser.js +5 -1
- package/cjs/core/utils.js +36 -15
- package/cjs/koni/background/handlers/Extension.js +141 -172
- package/cjs/koni/background/handlers/State.js +8 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/process.js +27 -0
- package/cjs/services/balance-service/index.js +9 -0
- package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +229 -0
- package/cjs/services/balance-service/transfer/xcm/availBridge.js +6 -6
- package/cjs/services/balance-service/transfer/xcm/index.js +96 -7
- package/cjs/services/balance-service/transfer/xcm/utils.js +213 -0
- package/cjs/services/chain-service/constants.js +2 -4
- package/cjs/services/chain-service/index.js +71 -17
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/base.js +6 -3
- package/cjs/services/earning-service/handlers/native-staking/base.js +4 -1
- package/cjs/services/earning-service/handlers/native-staking/dtao.js +68 -50
- package/cjs/services/earning-service/handlers/native-staking/tao.js +12 -2
- package/cjs/services/earning-service/handlers/special.js +18 -9
- package/cjs/services/earning-service/service.js +2 -1
- package/cjs/services/fee-service/utils/index.js +16 -4
- package/cjs/services/inapp-notification-service/index.js +19 -13
- package/cjs/services/keyring-service/context/handlers/Ledger.js +1 -1
- package/cjs/services/keyring-service/context/state.js +3 -0
- package/cjs/services/migration-service/scripts/DisableZeroBalanceTokens.js +60 -0
- package/cjs/services/migration-service/scripts/EnableChain.js +1 -1
- package/cjs/services/migration-service/scripts/index.js +3 -2
- package/cjs/services/swap-service/handler/asset-hub/handler.js +61 -314
- package/cjs/services/swap-service/handler/base-handler.js +406 -231
- package/cjs/services/swap-service/handler/chainflip-handler.js +18 -40
- package/cjs/services/swap-service/handler/hydradx-handler.js +77 -269
- package/cjs/services/swap-service/handler/simpleswap-handler.js +27 -48
- package/cjs/services/swap-service/handler/uniswap-handler.js +33 -54
- package/cjs/services/swap-service/index.js +154 -143
- package/cjs/services/swap-service/utils.js +107 -17
- package/cjs/services/transaction-service/index.js +1 -1
- package/cjs/services/transaction-service/utils.js +38 -14
- package/cjs/types/swap/index.js +13 -1
- package/cjs/utils/fee/transfer.js +52 -28
- package/cjs/utils/staticData/index.js +7 -2
- package/cjs/utils/swap.js +5 -1
- package/constants/blocked-actions.d.ts +1 -1
- package/constants/blocked-actions.js +1 -1
- package/constants/paraspell-chain-map.d.ts +1 -0
- package/constants/paraspell-chain-map.js +7 -0
- package/constants/remind-notification-time.d.ts +1 -1
- package/constants/remind-notification-time.js +1 -1
- package/core/logic-validation/swap.d.ts +15 -0
- package/core/logic-validation/swap.js +60 -4
- package/core/logic-validation/transfer.d.ts +1 -0
- package/core/logic-validation/transfer.js +12 -1
- package/core/substrate/xcm-parser.d.ts +1 -0
- package/core/substrate/xcm-parser.js +4 -1
- package/core/utils.d.ts +2 -2
- package/core/utils.js +36 -15
- package/koni/background/handlers/Extension.d.ts +1 -1
- package/koni/background/handlers/Extension.js +66 -98
- package/koni/background/handlers/State.d.ts +1 -0
- package/koni/background/handlers/State.js +7 -1
- package/package.json +23 -13
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/process.d.ts +2 -1
- package/services/balance-service/helpers/process.js +26 -0
- package/services/balance-service/index.js +11 -2
- package/services/balance-service/transfer/xcm/acrossBridge/index.d.ts +15 -0
- package/services/balance-service/transfer/xcm/acrossBridge/index.js +216 -0
- package/services/balance-service/transfer/xcm/availBridge.js +6 -6
- package/services/balance-service/transfer/xcm/index.d.ts +5 -1
- package/services/balance-service/transfer/xcm/index.js +85 -1
- package/services/balance-service/transfer/xcm/utils.d.ts +11 -0
- package/services/balance-service/transfer/xcm/utils.js +208 -0
- package/services/base/types.d.ts +0 -4
- package/services/chain-service/constants.d.ts +0 -1
- package/services/chain-service/constants.js +1 -2
- package/services/chain-service/index.d.ts +9 -2
- package/services/chain-service/index.js +72 -18
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/base.d.ts +4 -3
- package/services/earning-service/handlers/base.js +6 -4
- package/services/earning-service/handlers/native-staking/base.js +4 -1
- package/services/earning-service/handlers/native-staking/dtao.d.ts +9 -6
- package/services/earning-service/handlers/native-staking/dtao.js +69 -48
- package/services/earning-service/handlers/native-staking/tao.js +12 -2
- package/services/earning-service/handlers/special.js +19 -10
- package/services/earning-service/service.d.ts +2 -1
- package/services/earning-service/service.js +2 -1
- package/services/fee-service/utils/index.d.ts +1 -0
- package/services/fee-service/utils/index.js +14 -4
- package/services/inapp-notification-service/index.js +13 -7
- package/services/keyring-service/context/handlers/Ledger.js +1 -1
- package/services/keyring-service/context/state.d.ts +1 -0
- package/services/keyring-service/context/state.js +3 -0
- package/services/migration-service/scripts/DisableZeroBalanceTokens.d.ts +4 -0
- package/services/migration-service/scripts/DisableZeroBalanceTokens.js +51 -0
- package/services/migration-service/scripts/EnableChain.js +1 -1
- package/services/migration-service/scripts/index.js +3 -2
- package/services/swap-service/handler/asset-hub/handler.d.ts +2 -9
- package/services/swap-service/handler/asset-hub/handler.js +64 -317
- package/services/swap-service/handler/base-handler.d.ts +6 -9
- package/services/swap-service/handler/base-handler.js +405 -230
- package/services/swap-service/handler/chainflip-handler.d.ts +2 -4
- package/services/swap-service/handler/chainflip-handler.js +15 -37
- package/services/swap-service/handler/hydradx-handler.d.ts +3 -10
- package/services/swap-service/handler/hydradx-handler.js +78 -270
- package/services/swap-service/handler/simpleswap-handler.d.ts +2 -4
- package/services/swap-service/handler/simpleswap-handler.js +24 -45
- package/services/swap-service/handler/uniswap-handler.d.ts +4 -6
- package/services/swap-service/handler/uniswap-handler.js +25 -46
- package/services/swap-service/index.d.ts +8 -14
- package/services/swap-service/index.js +141 -129
- package/services/swap-service/utils.d.ts +11 -3
- package/services/swap-service/utils.js +96 -15
- package/services/transaction-service/index.js +2 -2
- package/services/transaction-service/types.d.ts +3 -2
- package/services/transaction-service/utils.d.ts +1 -0
- package/services/transaction-service/utils.js +38 -15
- package/types/balance/transfer.d.ts +1 -0
- package/types/service-base.d.ts +2 -3
- package/types/swap/index.d.ts +25 -9
- package/types/swap/index.js +10 -0
- package/types/transaction/process.d.ts +19 -0
- package/types/transaction/request.d.ts +7 -0
- package/types/yield/actions/join/submit.d.ts +4 -1
- package/types/yield/actions/others.d.ts +2 -0
- package/utils/fee/transfer.d.ts +1 -0
- package/utils/fee/transfer.js +54 -30
- package/utils/staticData/index.d.ts +4 -1
- package/utils/staticData/index.js +5 -1
- package/utils/staticData/paraSpellChainMap.json +1 -0
- package/utils/swap.d.ts +3 -0
- package/utils/swap.js +3 -0
- package/cjs/services/swap-service/interface.js +0 -14
- package/services/swap-service/interface.d.ts +0 -9
- package/services/swap-service/interface.js +0 -8
|
@@ -438,7 +438,7 @@ class KoniState {
|
|
|
438
438
|
const chainState = this.chainService.getChainStateByKey(networkKey);
|
|
439
439
|
if (authUrls[shortenUrl]) {
|
|
440
440
|
if (chainInfo && !(0, _utils._isChainEnabled)(chainState)) {
|
|
441
|
-
await this.
|
|
441
|
+
await this.enableChainWithPriorityAssets(networkKey);
|
|
442
442
|
}
|
|
443
443
|
authUrls[shortenUrl].currentEvmNetworkKey = networkKey;
|
|
444
444
|
this.setAuthorize(authUrls);
|
|
@@ -712,6 +712,13 @@ class KoniState {
|
|
|
712
712
|
}
|
|
713
713
|
return this.chainService.enableChain(chainSlug);
|
|
714
714
|
}
|
|
715
|
+
async enableChainWithPriorityAssets(chainSlug) {
|
|
716
|
+
let enableTokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
717
|
+
if (enableTokens) {
|
|
718
|
+
await this.chainService.updatePriorityAssetsByChain(chainSlug, true);
|
|
719
|
+
}
|
|
720
|
+
return this.chainService.enableChain(chainSlug);
|
|
721
|
+
}
|
|
715
722
|
resetDefaultChains() {
|
|
716
723
|
const defaultChains = this.getDefaultNetworkKeys();
|
|
717
724
|
return this.chainService.resetChainInfoMap(defaultChains);
|
package/cjs/packageInfo.js
CHANGED
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.getAcrossbridgeTransferProcessFromEvm = getAcrossbridgeTransferProcessFromEvm;
|
|
6
7
|
exports.getDefaultTransferProcess = getDefaultTransferProcess;
|
|
7
8
|
exports.getSnowbridgeTransferProcessFromEvm = getSnowbridgeTransferProcessFromEvm;
|
|
8
9
|
var _chainList = require("@subwallet/chain-list");
|
|
9
10
|
var _serviceBase = require("@subwallet/extension-base/types/service-base");
|
|
11
|
+
var _utils = require("../../chain-service/utils");
|
|
12
|
+
var _acrossBridge = require("../transfer/xcm/acrossBridge");
|
|
10
13
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
11
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
12
15
|
|
|
@@ -41,6 +44,30 @@ async function getSnowbridgeTransferProcessFromEvm(address, evmApi, tokenInfo, a
|
|
|
41
44
|
// if (!allowance || BigInt(allowance) < BigInt(amount)) {
|
|
42
45
|
// }
|
|
43
46
|
|
|
47
|
+
result.steps.push({
|
|
48
|
+
id: result.steps.length,
|
|
49
|
+
type: _serviceBase.CommonStepType.TRANSFER,
|
|
50
|
+
name: 'Transfer'
|
|
51
|
+
});
|
|
52
|
+
result.totalFee.push(_serviceBase.MOCK_STEP_FEE);
|
|
53
|
+
return Promise.resolve(result);
|
|
54
|
+
}
|
|
55
|
+
async function getAcrossbridgeTransferProcessFromEvm(originChainInfo) {
|
|
56
|
+
const chainId = (0, _utils._getEvmChainId)(originChainInfo);
|
|
57
|
+
const SpokePoolAddress = _acrossBridge.SpokePoolMapping[chainId].SpokePool.address;
|
|
58
|
+
const result = {
|
|
59
|
+
totalFee: [_serviceBase.MOCK_STEP_FEE],
|
|
60
|
+
steps: [_serviceBase.DEFAULT_FIRST_STEP]
|
|
61
|
+
};
|
|
62
|
+
result.steps.push({
|
|
63
|
+
id: result.steps.length,
|
|
64
|
+
type: _serviceBase.CommonStepType.TOKEN_APPROVAL,
|
|
65
|
+
name: 'Approve spending',
|
|
66
|
+
metadata: {
|
|
67
|
+
SpokePoolAddress
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
result.totalFee.push(_serviceBase.MOCK_STEP_FEE);
|
|
44
71
|
result.steps.push({
|
|
45
72
|
id: result.steps.length,
|
|
46
73
|
type: _serviceBase.CommonStepType.TRANSFER,
|
|
@@ -22,6 +22,7 @@ var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
|
22
22
|
var _i18next = require("i18next");
|
|
23
23
|
var _rxjs = require("rxjs");
|
|
24
24
|
var _util = require("@polkadot/util");
|
|
25
|
+
var _acrossBridge = require("./transfer/xcm/acrossBridge");
|
|
25
26
|
var _BalanceMapImpl = require("./BalanceMapImpl");
|
|
26
27
|
var _helpers = require("./helpers");
|
|
27
28
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
@@ -580,6 +581,14 @@ class BalanceService {
|
|
|
580
581
|
const tokenInfo = this.state.chainService.getAssetBySlug(params.tokenSlug);
|
|
581
582
|
return (0, _process.getSnowbridgeTransferProcessFromEvm)(params.address, evmApi, tokenInfo, params.amount);
|
|
582
583
|
}
|
|
584
|
+
|
|
585
|
+
// Across Bridge
|
|
586
|
+
if ((0, _acrossBridge._isAcrossChainBridge)(originChainInfo.slug, destChainInfo.slug)) {
|
|
587
|
+
const tokenInfo = this.state.chainService.getAssetBySlug(params.tokenSlug);
|
|
588
|
+
if (!(0, _utils._isNativeToken)(tokenInfo)) {
|
|
589
|
+
return (0, _process.getAcrossbridgeTransferProcessFromEvm)(originChainInfo);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
583
592
|
return (0, _process.getDefaultTransferProcess)();
|
|
584
593
|
}
|
|
585
594
|
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.SpokePoolMapping = void 0;
|
|
8
|
+
exports._isAcrossChainBridge = _isAcrossChainBridge;
|
|
9
|
+
exports._isAcrossTestnetBridge = _isAcrossTestnetBridge;
|
|
10
|
+
exports.getAcrossQuote = void 0;
|
|
11
|
+
var _chainList = require("@subwallet/chain-list");
|
|
12
|
+
var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
|
|
13
|
+
var _subwalletApiSdk = _interopRequireDefault(require("@subwallet/subwallet-api-sdk"));
|
|
14
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
15
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
|
|
17
|
+
// Across Bridge
|
|
18
|
+
const acrossPairsMap = new Map([[_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, new Set(['optimism', 'base_mainnet', 'arbitrum_one'])], ['optimism', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, 'base_mainnet', 'arbitrum_one'])], ['base_mainnet', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'arbitrum_one'])], ['arbitrum_one', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'base_mainnet'])], [_chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA, new Set(['base_sepolia', 'arbitrum_sepolia'])],
|
|
19
|
+
// TESTNET START HERE
|
|
20
|
+
['base_sepolia', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA])], ['arbitrum_sepolia', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA])]]);
|
|
21
|
+
function _isAcrossChainBridge(srcChain, destChain) {
|
|
22
|
+
var _acrossPairsMap$get$h, _acrossPairsMap$get;
|
|
23
|
+
return (_acrossPairsMap$get$h = (_acrossPairsMap$get = acrossPairsMap.get(srcChain)) === null || _acrossPairsMap$get === void 0 ? void 0 : _acrossPairsMap$get.has(destChain)) !== null && _acrossPairsMap$get$h !== void 0 ? _acrossPairsMap$get$h : false;
|
|
24
|
+
}
|
|
25
|
+
function _isAcrossTestnetBridge(srcChain) {
|
|
26
|
+
return srcChain === 'base_sepolia' || srcChain === 'arbitrum_sepolia' || srcChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA;
|
|
27
|
+
}
|
|
28
|
+
const SpokePoolMapping = {
|
|
29
|
+
1: {
|
|
30
|
+
SpokePool: {
|
|
31
|
+
address: '0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5',
|
|
32
|
+
blockNumber: 17117454
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
10: {
|
|
36
|
+
SpokePool: {
|
|
37
|
+
address: '0x6f26Bf09B1C792e3228e5467807a900A503c0281',
|
|
38
|
+
blockNumber: 93903076
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
11155111: {
|
|
42
|
+
SpokePool: {
|
|
43
|
+
address: '0x5ef6C01E11889d86803e0B23e3cB3F9E9d97B662',
|
|
44
|
+
blockNumber: 5288470
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
11155420: {
|
|
48
|
+
SpokePool: {
|
|
49
|
+
address: '0x4e8E101924eDE233C13e2D8622DC8aED2872d505',
|
|
50
|
+
blockNumber: 7762656
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
1135: {
|
|
54
|
+
SpokePool: {
|
|
55
|
+
address: '0x9552a0a6624A23B848060AE5901659CDDa1f83f8',
|
|
56
|
+
blockNumber: 2602337
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
130: {
|
|
60
|
+
SpokePool: {
|
|
61
|
+
address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64',
|
|
62
|
+
blockNumber: 7915488
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
137: {
|
|
66
|
+
SpokePool: {
|
|
67
|
+
address: '0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096',
|
|
68
|
+
blockNumber: 41908657
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
168587773: {
|
|
72
|
+
SpokePool: {
|
|
73
|
+
address: '0x5545092553Cf5Bf786e87a87192E902D50D8f022',
|
|
74
|
+
blockNumber: 7634204
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
1868: {
|
|
78
|
+
SpokePool: {
|
|
79
|
+
address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96',
|
|
80
|
+
blockNumber: 1709997
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
288: {
|
|
84
|
+
SpokePool: {
|
|
85
|
+
address: '0xBbc6009fEfFc27ce705322832Cb2068F8C1e0A58',
|
|
86
|
+
blockNumber: 619993
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
324: {
|
|
90
|
+
SpokePool: {
|
|
91
|
+
address: '0xE0B015E54d54fc84a6cB9B666099c46adE9335FF',
|
|
92
|
+
blockNumber: 10352565
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
34443: {
|
|
96
|
+
SpokePool: {
|
|
97
|
+
address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96',
|
|
98
|
+
blockNumber: 8043187
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
37111: {
|
|
102
|
+
SpokePool: {
|
|
103
|
+
address: '0x6A0a7f39530923911832Dd60667CE5da5449967B',
|
|
104
|
+
blockNumber: 156275
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
41455: {
|
|
108
|
+
SpokePool: {
|
|
109
|
+
address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97',
|
|
110
|
+
blockNumber: 4240318
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
4202: {
|
|
114
|
+
SpokePool: {
|
|
115
|
+
address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4',
|
|
116
|
+
blockNumber: 7267988
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
42161: {
|
|
120
|
+
SpokePool: {
|
|
121
|
+
address: '0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A',
|
|
122
|
+
blockNumber: 83868041
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
421614: {
|
|
126
|
+
SpokePool: {
|
|
127
|
+
address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75',
|
|
128
|
+
blockNumber: 12411026
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
480: {
|
|
132
|
+
SpokePool: {
|
|
133
|
+
address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64',
|
|
134
|
+
blockNumber: 4524742
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
534352: {
|
|
138
|
+
SpokePool: {
|
|
139
|
+
address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96',
|
|
140
|
+
blockNumber: 7489705
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
57073: {
|
|
144
|
+
SpokePool: {
|
|
145
|
+
address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4',
|
|
146
|
+
blockNumber: 1139240
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
59144: {
|
|
150
|
+
SpokePool: {
|
|
151
|
+
address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75',
|
|
152
|
+
blockNumber: 2721169
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
690: {
|
|
156
|
+
SpokePool: {
|
|
157
|
+
address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97',
|
|
158
|
+
blockNumber: 5512122
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
7777777: {
|
|
162
|
+
SpokePool: {
|
|
163
|
+
address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97',
|
|
164
|
+
blockNumber: 18382867
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
80002: {
|
|
168
|
+
SpokePool: {
|
|
169
|
+
address: '0xd08baaE74D6d2eAb1F3320B2E1a53eeb391ce8e5',
|
|
170
|
+
blockNumber: 7529960
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
81457: {
|
|
174
|
+
SpokePool: {
|
|
175
|
+
address: '0x2D509190Ed0172ba588407D4c2df918F955Cc6E1',
|
|
176
|
+
blockNumber: 5574280
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
8453: {
|
|
180
|
+
SpokePool: {
|
|
181
|
+
address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64',
|
|
182
|
+
blockNumber: 2164878
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
84532: {
|
|
186
|
+
SpokePool: {
|
|
187
|
+
address: '0x82B564983aE7274c86695917BBf8C99ECb6F0F8F',
|
|
188
|
+
blockNumber: 6082004
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
919: {
|
|
192
|
+
SpokePool: {
|
|
193
|
+
address: '0xbd886FC0725Cc459b55BbFEb3E4278610331f83b',
|
|
194
|
+
blockNumber: 13999465
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
exports.SpokePoolMapping = SpokePoolMapping;
|
|
199
|
+
// Calculate fee for across bridge transfer
|
|
200
|
+
const getAcrossQuote = async _ref => {
|
|
201
|
+
let {
|
|
202
|
+
destinationChain,
|
|
203
|
+
destinationTokenInfo,
|
|
204
|
+
originChain,
|
|
205
|
+
originTokenInfo,
|
|
206
|
+
recipient,
|
|
207
|
+
sender,
|
|
208
|
+
sendingValue
|
|
209
|
+
} = _ref;
|
|
210
|
+
const isAcrossBridgeXcm = (0, _xcmParser._isAcrossBridgeXcm)(originChain, destinationChain);
|
|
211
|
+
console.log('sendingValue', sendingValue);
|
|
212
|
+
if (!isAcrossBridgeXcm) {
|
|
213
|
+
throw new Error('This is not a valid AcrossBridge transfer');
|
|
214
|
+
}
|
|
215
|
+
if (!sender) {
|
|
216
|
+
throw new Error('Sender is required');
|
|
217
|
+
}
|
|
218
|
+
try {
|
|
219
|
+
var _subwalletApiSdk$xcmA;
|
|
220
|
+
const data = await ((_subwalletApiSdk$xcmA = _subwalletApiSdk.default.xcmApi) === null || _subwalletApiSdk$xcmA === void 0 ? void 0 : _subwalletApiSdk$xcmA.fetchXcmData(sender, originTokenInfo.slug, destinationTokenInfo.slug, recipient, sendingValue));
|
|
221
|
+
if (!data || !data.metadata) {
|
|
222
|
+
throw new Error('Failed to get AcrossBridge quote');
|
|
223
|
+
}
|
|
224
|
+
return data.metadata;
|
|
225
|
+
} catch (error) {
|
|
226
|
+
return Promise.reject(error);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
exports.getAcrossQuote = getAcrossQuote;
|
|
@@ -67,12 +67,12 @@ async function getClaimTxOnAvail(notification, substrateApi) {
|
|
|
67
67
|
const chainApi = await substrateApi.isReady;
|
|
68
68
|
const chainSlug = chainApi.chainSlug;
|
|
69
69
|
const metadata = notification.metadata;
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
const proof = await getClaimProofOnAvail(chainSlug,
|
|
73
|
-
return chainApi.api.tx.vector.execute(
|
|
70
|
+
const latestEthHeadSlot = await getLatestEthHeadSlot(chainSlug);
|
|
71
|
+
const latestBlockHash = await getLatestBlockHash(chainSlug, latestEthHeadSlot);
|
|
72
|
+
const proof = await getClaimProofOnAvail(chainSlug, latestBlockHash, metadata.messageId);
|
|
73
|
+
return chainApi.api.tx.vector.execute(latestEthHeadSlot, getAddressMessage(notification), proof.accountProof, proof.storageProof);
|
|
74
74
|
}
|
|
75
|
-
async function
|
|
75
|
+
async function getLatestEthHeadSlot(chainSlug) {
|
|
76
76
|
try {
|
|
77
77
|
const api = getAvailBridgeApi(chainSlug);
|
|
78
78
|
const rawResponse = await fetch(`${api}/eth/head`);
|
|
@@ -83,7 +83,7 @@ async function getLastestEthHeadSlot(chainSlug) {
|
|
|
83
83
|
throw e;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
async function
|
|
86
|
+
async function getLatestBlockHash(chainSlug, slot) {
|
|
87
87
|
try {
|
|
88
88
|
const api = getAvailBridgeApi(chainSlug);
|
|
89
89
|
const rawResponse = await fetch(`${api}/beacon/slot/${slot}`);
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
|
-
exports.createXcmExtrinsic = exports.createSnowBridgeExtrinsic = exports.createPolygonBridgeExtrinsic = exports.createAvailBridgeTxFromEth = exports.createAvailBridgeExtrinsicFromAvail = void 0;
|
|
7
|
+
exports.dryRunXcmExtrinsicV2 = exports.createXcmExtrinsicV2 = exports.createXcmExtrinsic = exports.createSnowBridgeExtrinsic = exports.createPolygonBridgeExtrinsic = exports.createAvailBridgeTxFromEth = exports.createAvailBridgeExtrinsicFromAvail = exports.createAcrossBridgeExtrinsic = void 0;
|
|
8
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
7
9
|
var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
|
|
8
10
|
var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
|
|
9
11
|
var _polkadotXcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polkadotXcm");
|
|
10
12
|
var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
|
|
11
13
|
var _snowBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/snowBridge");
|
|
14
|
+
var _utils = require("@subwallet/extension-base/services/balance-service/transfer/xcm/utils");
|
|
12
15
|
var _xcmPallet = require("@subwallet/extension-base/services/balance-service/transfer/xcm/xcmPallet");
|
|
13
16
|
var _xTokens = require("@subwallet/extension-base/services/balance-service/transfer/xcm/xTokens");
|
|
14
|
-
var
|
|
15
|
-
var
|
|
17
|
+
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
18
|
+
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
19
|
+
var _utils3 = require("@subwallet/extension-base/utils");
|
|
20
|
+
var _subwalletApiSdk = _interopRequireDefault(require("@subwallet/subwallet-api-sdk"));
|
|
16
21
|
var _posBridge = require("./posBridge");
|
|
17
22
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
18
23
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -57,11 +62,11 @@ const createXcmExtrinsic = async _ref2 => {
|
|
|
57
62
|
}
|
|
58
63
|
const chainApi = await substrateApi.isReady;
|
|
59
64
|
const api = chainApi.api;
|
|
60
|
-
const polkadotXcmSpecialCases =
|
|
61
|
-
if (
|
|
65
|
+
const polkadotXcmSpecialCases = _constants2._XCM_CHAIN_GROUP.polkadotXcmSpecialCases.includes(originChain.slug) && (0, _utils2._isNativeToken)(originTokenInfo);
|
|
66
|
+
if (_constants2._XCM_CHAIN_GROUP.polkadotXcm.includes(originTokenInfo.originChain) || polkadotXcmSpecialCases) {
|
|
62
67
|
return (0, _polkadotXcm.getExtrinsicByPolkadotXcmPallet)(originTokenInfo, originChain, destinationChain, recipient, sendingValue, api);
|
|
63
68
|
}
|
|
64
|
-
if (
|
|
69
|
+
if (_constants2._XCM_CHAIN_GROUP.xcmPallet.includes(originTokenInfo.originChain)) {
|
|
65
70
|
return (0, _xcmPallet.getExtrinsicByXcmPalletPallet)(originTokenInfo, originChain, destinationChain, recipient, sendingValue, api);
|
|
66
71
|
}
|
|
67
72
|
return (0, _xTokens.getExtrinsicByXtokensPallet)(originTokenInfo, originChain, destinationChain, recipient, sendingValue, api);
|
|
@@ -127,4 +132,88 @@ const createPolygonBridgeExtrinsic = async _ref5 => {
|
|
|
127
132
|
const createExtrinsic = isPolygonBridgeXcm ? sourceChain === 'polygonzkEvm_cardona' || sourceChain === 'polygonZkEvm' ? _polygonBridge._createPolygonBridgeL2toL1Extrinsic : _polygonBridge._createPolygonBridgeL1toL2Extrinsic : sourceChain === 'polygon_amoy' || sourceChain === 'polygon' ? _posBridge._createPosBridgeL2toL1Extrinsic : _posBridge._createPosBridgeL1toL2Extrinsic;
|
|
128
133
|
return createExtrinsic(originTokenInfo, originChain, sender, recipient, sendingValue, evmApi, feeInfo, feeCustom, feeOption);
|
|
129
134
|
};
|
|
130
|
-
exports.createPolygonBridgeExtrinsic = createPolygonBridgeExtrinsic;
|
|
135
|
+
exports.createPolygonBridgeExtrinsic = createPolygonBridgeExtrinsic;
|
|
136
|
+
const createXcmExtrinsicV2 = async request => {
|
|
137
|
+
try {
|
|
138
|
+
return await (0, _utils.buildXcm)(request);
|
|
139
|
+
} catch (e) {
|
|
140
|
+
console.log('createXcmExtrinsicV2 error: ', e);
|
|
141
|
+
const errorMessage = e instanceof Error ? e.message : 'Unknown error occurred';
|
|
142
|
+
if ((0, _utils.isChainNotSupportPolkadotApi)(errorMessage)) {
|
|
143
|
+
return createXcmExtrinsic(request);
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
exports.createXcmExtrinsicV2 = createXcmExtrinsicV2;
|
|
149
|
+
const dryRunXcmExtrinsicV2 = async request => {
|
|
150
|
+
try {
|
|
151
|
+
return await (0, _utils.dryRunXcmV2)(request);
|
|
152
|
+
} catch (e) {
|
|
153
|
+
const errorMessage = e instanceof Error ? e.message : 'Unknown error occurred';
|
|
154
|
+
if ((0, _utils.isChainNotSupportDryRun)(errorMessage) || (0, _utils.isChainNotSupportPolkadotApi)(errorMessage)) {
|
|
155
|
+
const xcmTransfer = await createXcmExtrinsicV2(request);
|
|
156
|
+
if (!xcmTransfer) {
|
|
157
|
+
return {
|
|
158
|
+
success: false
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const _xcmFeeInfo = await xcmTransfer.paymentInfo(request.sender);
|
|
162
|
+
const xcmFeeInfo = _xcmFeeInfo.toPrimitive();
|
|
163
|
+
|
|
164
|
+
// skip dry run in this case
|
|
165
|
+
return {
|
|
166
|
+
success: true,
|
|
167
|
+
fee: Math.round(xcmFeeInfo.partialFee * _constants.XCM_MIN_AMOUNT_RATIO).toString()
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
success: false
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
exports.dryRunXcmExtrinsicV2 = dryRunXcmExtrinsicV2;
|
|
176
|
+
const createAcrossBridgeExtrinsic = async _ref6 => {
|
|
177
|
+
let {
|
|
178
|
+
destinationChain,
|
|
179
|
+
destinationTokenInfo,
|
|
180
|
+
evmApi,
|
|
181
|
+
feeCustom,
|
|
182
|
+
feeInfo,
|
|
183
|
+
feeOption,
|
|
184
|
+
originChain,
|
|
185
|
+
originTokenInfo,
|
|
186
|
+
recipient,
|
|
187
|
+
sender,
|
|
188
|
+
sendingValue
|
|
189
|
+
} = _ref6;
|
|
190
|
+
const isAcrossBridgeXcm = (0, _xcmParser._isAcrossBridgeXcm)(originChain, destinationChain);
|
|
191
|
+
if (!isAcrossBridgeXcm) {
|
|
192
|
+
throw new Error('This is not a valid AcrossBridge transfer');
|
|
193
|
+
}
|
|
194
|
+
if (!evmApi) {
|
|
195
|
+
throw new Error('Evm API is not available');
|
|
196
|
+
}
|
|
197
|
+
if (!sender) {
|
|
198
|
+
throw new Error('Sender is required');
|
|
199
|
+
}
|
|
200
|
+
try {
|
|
201
|
+
var _subwalletApiSdk$xcmA;
|
|
202
|
+
const data = await ((_subwalletApiSdk$xcmA = _subwalletApiSdk.default.xcmApi) === null || _subwalletApiSdk$xcmA === void 0 ? void 0 : _subwalletApiSdk$xcmA.fetchXcmData(sender, originTokenInfo.slug, destinationTokenInfo.slug, recipient, sendingValue));
|
|
203
|
+
const _feeCustom = feeCustom;
|
|
204
|
+
const feeCombine = (0, _utils3.combineEthFee)(feeInfo, feeOption, _feeCustom);
|
|
205
|
+
const transactionConfig = {
|
|
206
|
+
from: data === null || data === void 0 ? void 0 : data.sender,
|
|
207
|
+
to: data === null || data === void 0 ? void 0 : data.to,
|
|
208
|
+
value: data === null || data === void 0 ? void 0 : data.value,
|
|
209
|
+
data: data === null || data === void 0 ? void 0 : data.transferEncodedCall,
|
|
210
|
+
...feeCombine
|
|
211
|
+
};
|
|
212
|
+
const gasLimit = await evmApi.api.eth.estimateGas(transactionConfig).catch(() => 200000);
|
|
213
|
+
transactionConfig.gas = gasLimit.toString();
|
|
214
|
+
return transactionConfig;
|
|
215
|
+
} catch (error) {
|
|
216
|
+
return Promise.reject(error);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
exports.createAcrossBridgeExtrinsic = createAcrossBridgeExtrinsic;
|