@subwallet/extension-base 1.2.13-0 → 1.2.15-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/errors/SwapError.js +5 -1
- package/cjs/background/errors/SwapError.js +5 -1
- package/cjs/core/logic-validation/swap.js +56 -3
- package/cjs/core/substrate/nominationpools-pallet.js +2 -1
- package/cjs/koni/api/nft/config.js +37 -23
- package/cjs/koni/api/nft/index.js +9 -1
- package/cjs/koni/api/nft/unique_network_nft/index.js +12 -20
- package/cjs/koni/background/handlers/Extension.js +12 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/transfer/xcm/utils.js +2 -2
- package/cjs/services/chain-service/constants.js +2 -1
- package/cjs/services/chain-service/handler/SubstrateApi.js +6 -0
- package/cjs/services/chain-service/health-check/constants/index.js +4 -4
- package/cjs/services/chain-service/health-check/utils/asset-info.js +23 -6
- package/cjs/services/chain-service/health-check/utils/chain-info.js +25 -2
- package/cjs/services/chain-service/health-check/utils/new-utils/asset-asset-validate.js +160 -0
- package/cjs/services/chain-service/health-check/utils/new-utils/asset-validate.js +45 -0
- package/cjs/services/chain-service/health-check/utils/new-utils/chain-asset-validate.js +73 -0
- package/cjs/services/chain-service/health-check/utils/new-utils/chain-validate.js +34 -0
- package/cjs/services/chain-service/index.js +47 -5
- package/cjs/services/earning-service/handlers/liquid-staking/acala.js +49 -19
- package/cjs/services/migration-service/scripts/databases/ReloadMetadata.js +35 -0
- package/cjs/services/migration-service/scripts/index.js +4 -2
- package/cjs/services/price-service/coingecko.js +57 -32
- package/cjs/services/price-service/index.js +30 -11
- package/cjs/services/storage-service/db-stores/BaseStore.js +4 -0
- package/cjs/services/swap-service/handler/asset-hub/handler.js +343 -0
- package/cjs/services/swap-service/handler/asset-hub/index.js +12 -0
- package/cjs/services/swap-service/handler/asset-hub/router.js +93 -0
- package/cjs/services/swap-service/handler/asset-hub/utils.js +158 -0
- package/cjs/services/swap-service/index.js +10 -1
- package/cjs/services/swap-service/utils.js +10 -1
- package/cjs/types/swap/index.js +5 -1
- package/core/logic-validation/swap.d.ts +3 -1
- package/core/logic-validation/swap.js +55 -4
- package/core/substrate/nominationpools-pallet.js +2 -1
- package/koni/api/nft/config.d.ts +1 -0
- package/koni/api/nft/config.js +31 -19
- package/koni/api/nft/index.js +9 -1
- package/koni/api/nft/unique_network_nft/index.js +12 -20
- package/koni/background/handlers/Extension.js +12 -0
- package/package.json +56 -11
- package/packageInfo.js +1 -1
- package/services/balance-service/transfer/xcm/utils.js +2 -2
- package/services/chain-service/constants.d.ts +1 -0
- package/services/chain-service/constants.js +2 -1
- package/services/chain-service/handler/SubstrateApi.js +6 -0
- package/services/chain-service/health-check/constants/index.js +4 -4
- package/services/chain-service/health-check/utils/asset-info.d.ts +1 -0
- package/services/chain-service/health-check/utils/asset-info.js +20 -4
- package/services/chain-service/health-check/utils/chain-info.d.ts +4 -2
- package/services/chain-service/health-check/utils/chain-info.js +20 -0
- package/services/chain-service/health-check/utils/new-utils/asset-asset-validate.d.ts +10 -0
- package/services/chain-service/health-check/utils/new-utils/asset-asset-validate.js +146 -0
- package/services/chain-service/health-check/utils/new-utils/asset-validate.d.ts +3 -0
- package/services/chain-service/health-check/utils/new-utils/asset-validate.js +38 -0
- package/services/chain-service/health-check/utils/new-utils/chain-asset-validate.d.ts +5 -0
- package/services/chain-service/health-check/utils/new-utils/chain-asset-validate.js +64 -0
- package/services/chain-service/health-check/utils/new-utils/chain-validate.d.ts +4 -0
- package/services/chain-service/health-check/utils/new-utils/chain-validate.js +26 -0
- package/services/chain-service/index.js +47 -5
- package/services/chain-service/types.d.ts +5 -0
- package/services/earning-service/handlers/liquid-staking/acala.js +46 -17
- package/services/migration-service/scripts/databases/ReloadMetadata.d.ts +5 -0
- package/services/migration-service/scripts/databases/ReloadMetadata.js +27 -0
- package/services/migration-service/scripts/index.js +4 -2
- package/services/price-service/coingecko.js +54 -32
- package/services/price-service/index.js +29 -11
- package/services/storage-service/db-stores/BaseStore.d.ts +3 -0
- package/services/storage-service/db-stores/BaseStore.js +4 -0
- package/services/swap-service/handler/asset-hub/handler.d.ts +31 -0
- package/services/swap-service/handler/asset-hub/handler.js +335 -0
- package/services/swap-service/handler/asset-hub/index.d.ts +1 -0
- package/services/swap-service/handler/asset-hub/index.js +4 -0
- package/services/swap-service/handler/asset-hub/router.d.ts +16 -0
- package/services/swap-service/handler/asset-hub/router.js +85 -0
- package/services/swap-service/handler/asset-hub/utils.d.ts +18 -0
- package/services/swap-service/handler/asset-hub/utils.js +133 -0
- package/services/swap-service/index.js +10 -1
- package/services/swap-service/utils.d.ts +1 -0
- package/services/swap-service/utils.js +9 -1
- package/types/swap/index.d.ts +15 -2
- package/types/swap/index.js +5 -1
- /package/cjs/services/migration-service/scripts/{ClearMetadataDatabase.js → databases/ClearMetadataDatabase.js} +0 -0
- /package/services/migration-service/scripts/{ClearMetadataDatabase.d.ts → databases/ClearMetadataDatabase.d.ts} +0 -0
- /package/services/migration-service/scripts/{ClearMetadataDatabase.js → databases/ClearMetadataDatabase.js} +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.checkMultichainAssetValid = checkMultichainAssetValid;
|
|
7
|
+
exports.checkSwapAssetRef = checkSwapAssetRef;
|
|
8
|
+
exports.checkValidSupportStaking = checkValidSupportStaking;
|
|
9
|
+
exports.validateAssetGroupPrice = validateAssetGroupPrice;
|
|
10
|
+
exports.validateAssetsGroupPrice = validateAssetsGroupPrice;
|
|
11
|
+
exports.validateNativeLocalTransferMetadata = validateNativeLocalTransferMetadata;
|
|
12
|
+
exports.validateNotDuplicateSmartcontract = validateNotDuplicateSmartcontract;
|
|
13
|
+
exports.validateSwapAlterAsset = validateSwapAlterAsset;
|
|
14
|
+
exports.validateXcmMetadata = validateXcmMetadata;
|
|
15
|
+
var _chainList = require("@subwallet/chain-list");
|
|
16
|
+
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
17
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
18
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
19
|
+
|
|
20
|
+
// Check priceId valid in group asset
|
|
21
|
+
|
|
22
|
+
function validateAssetGroupPrice(multiChainAsset, chainAsset) {
|
|
23
|
+
if (chainAsset.multiChainAsset !== multiChainAsset.slug) {
|
|
24
|
+
throw new Error(`Asset ${chainAsset.slug} are not in ${multiChainAsset.slug} group asset`);
|
|
25
|
+
}
|
|
26
|
+
return multiChainAsset.priceId === chainAsset.priceId;
|
|
27
|
+
}
|
|
28
|
+
function validateAssetsGroupPrice(chainAsset1, chainAsset2) {
|
|
29
|
+
if (chainAsset1.multiChainAsset !== chainAsset2.multiChainAsset) {
|
|
30
|
+
throw new Error(`Asset ${chainAsset1.slug} and asset ${chainAsset2.slug} are not in a group asset`);
|
|
31
|
+
}
|
|
32
|
+
return chainAsset1.priceId === chainAsset2.priceId;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Check priceId valid in group asset
|
|
36
|
+
|
|
37
|
+
// Check multichainAsset valid
|
|
38
|
+
|
|
39
|
+
function checkMultichainAssetValid(chainAsset) {
|
|
40
|
+
if (!chainAsset.multiChainAsset) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return Object.keys(_chainList.MultiChainAssetMap).includes(chainAsset.multiChainAsset);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Check multichainAsset valid
|
|
47
|
+
|
|
48
|
+
// Check slug asset ref
|
|
49
|
+
|
|
50
|
+
function checkSwapAssetRef(slug, assetRef) {
|
|
51
|
+
return slug === `${assetRef.srcAsset}___${assetRef.destAsset}`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Check slug asset ref
|
|
55
|
+
|
|
56
|
+
// Check duplicate smartcontract
|
|
57
|
+
|
|
58
|
+
function validateNotDuplicateSmartcontract(chainAsset) {
|
|
59
|
+
if (!['ERC20', 'ERC721', 'PSP22', 'PSP34', 'GRC20', 'GRC721'].includes(chainAsset.assetType)) {
|
|
60
|
+
throw new Error(`${chainAsset.slug} is not smart contract asset`);
|
|
61
|
+
}
|
|
62
|
+
const slug = chainAsset.slug;
|
|
63
|
+
const isDuplicate = Object.entries(_chainList.ChainAssetMap).some(_ref => {
|
|
64
|
+
var _chainAsset$metadata, _tokenInfo$metadata;
|
|
65
|
+
let [key, tokenInfo] = _ref;
|
|
66
|
+
return slug !== key && (chainAsset === null || chainAsset === void 0 ? void 0 : (_chainAsset$metadata = chainAsset.metadata) === null || _chainAsset$metadata === void 0 ? void 0 : _chainAsset$metadata.contractAddress) === (tokenInfo === null || tokenInfo === void 0 ? void 0 : (_tokenInfo$metadata = tokenInfo.metadata) === null || _tokenInfo$metadata === void 0 ? void 0 : _tokenInfo$metadata.contractAddress);
|
|
67
|
+
});
|
|
68
|
+
return !isDuplicate;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Check duplicate smartcontract
|
|
72
|
+
|
|
73
|
+
// ---------------------
|
|
74
|
+
|
|
75
|
+
// TRANSFER
|
|
76
|
+
|
|
77
|
+
function validateNativeLocalTransferMetadata(chainAsset) {
|
|
78
|
+
if (!chainAsset.metadata) {
|
|
79
|
+
// recheck this
|
|
80
|
+
throw new Error(`Asset ${chainAsset.slug} is lack of metadata`);
|
|
81
|
+
}
|
|
82
|
+
const moonbeamGroup = ['moonbeam, moonbase, moonriver'];
|
|
83
|
+
const onChainInfoLocalGroup = [_constants._TRANSFER_CHAIN_GROUP.centrifuge, ..._constants._TRANSFER_CHAIN_GROUP.bitcountry, ..._constants._TRANSFER_CHAIN_GROUP.acala, ..._constants._TRANSFER_CHAIN_GROUP.kintsugi, 'pendulum', 'amplitude'];
|
|
84
|
+
const onChainInfoNativeGroup = [_constants._TRANSFER_CHAIN_GROUP.centrifuge, ..._constants._TRANSFER_CHAIN_GROUP.acala, ..._constants._TRANSFER_CHAIN_GROUP.kintsugi];
|
|
85
|
+
const assetIdLocalGroup = [..._constants._TRANSFER_CHAIN_GROUP.statemine, ..._constants._TRANSFER_CHAIN_GROUP.genshiro, ...moonbeamGroup, 'hydradx'];
|
|
86
|
+
const assetIdNativeGroup = [..._constants._TRANSFER_CHAIN_GROUP.sora_substrate, 'hydradx'];
|
|
87
|
+
const chain = chainAsset.originChain;
|
|
88
|
+
const isLocal = chainAsset.assetType === 'LOCAL';
|
|
89
|
+
const isNative = chainAsset.assetType === 'NATIVE';
|
|
90
|
+
if (isLocal && onChainInfoLocalGroup.includes(chain)) {
|
|
91
|
+
return !!chainAsset.metadata.onChainInfo;
|
|
92
|
+
}
|
|
93
|
+
if (isNative && onChainInfoNativeGroup.includes(chain)) {
|
|
94
|
+
return !!chainAsset.metadata.onChainInfo;
|
|
95
|
+
}
|
|
96
|
+
if (isLocal && assetIdLocalGroup.includes(chain)) {
|
|
97
|
+
return !!chainAsset.metadata.assetId;
|
|
98
|
+
}
|
|
99
|
+
if (isNative && assetIdNativeGroup.includes(chain)) {
|
|
100
|
+
return !!chainAsset.metadata.assetId;
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`${chainAsset.slug} is not local or native asset`);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// TRANSFER
|
|
106
|
+
|
|
107
|
+
// SWAP
|
|
108
|
+
|
|
109
|
+
function validateSwapAlterAsset(assetRef) {
|
|
110
|
+
var _assetRef$metadata;
|
|
111
|
+
if (assetRef.path !== 'SWAP') {
|
|
112
|
+
throw new Error(`${assetRef.srcAsset}___${assetRef.destAsset} is not SWAP`);
|
|
113
|
+
}
|
|
114
|
+
const srcAsset = assetRef.srcAsset;
|
|
115
|
+
const alterAsset = (_assetRef$metadata = assetRef.metadata) === null || _assetRef$metadata === void 0 ? void 0 : _assetRef$metadata.alternativeAsset;
|
|
116
|
+
if (!alterAsset) {
|
|
117
|
+
throw new Error(`${assetRef.srcAsset}___${assetRef.destAsset} does not has alternativeAsset`);
|
|
118
|
+
}
|
|
119
|
+
if (!_chainList.ChainAssetMap[srcAsset] || !_chainList.ChainAssetMap[alterAsset]) {
|
|
120
|
+
throw new Error(`${srcAsset} or ${alterAsset} do not exist`);
|
|
121
|
+
}
|
|
122
|
+
return _chainList.ChainAssetMap[srcAsset].multiChainAsset === _chainList.ChainAssetMap[alterAsset].multiChainAsset;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// SWAP
|
|
126
|
+
|
|
127
|
+
// XCM
|
|
128
|
+
|
|
129
|
+
function validateXcmMetadata(assetRef) {
|
|
130
|
+
var _ChainAssetMap$srcAss, _ChainAssetMap$destAs;
|
|
131
|
+
if (assetRef.path !== 'XCM') {
|
|
132
|
+
throw new Error(`${assetRef.srcAsset}___${assetRef.destAsset} is not XCM`);
|
|
133
|
+
}
|
|
134
|
+
const srcAsset = assetRef.srcAsset;
|
|
135
|
+
const destAsset = assetRef.destAsset;
|
|
136
|
+
if (!_chainList.ChainAssetMap[srcAsset] || !_chainList.ChainAssetMap[destAsset]) {
|
|
137
|
+
throw new Error(`${srcAsset} or ${destAsset} do not exist`);
|
|
138
|
+
}
|
|
139
|
+
return ((_ChainAssetMap$srcAss = _chainList.ChainAssetMap[srcAsset].metadata) === null || _ChainAssetMap$srcAss === void 0 ? void 0 : _ChainAssetMap$srcAss.multilocation) && ((_ChainAssetMap$destAs = _chainList.ChainAssetMap[destAsset].metadata) === null || _ChainAssetMap$destAs === void 0 ? void 0 : _ChainAssetMap$destAs.multilocation) || false;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// XCM
|
|
143
|
+
|
|
144
|
+
// EARNING
|
|
145
|
+
|
|
146
|
+
// @ts-ignore
|
|
147
|
+
function checkValidSupportStaking(chainInfo) {
|
|
148
|
+
if (!chainInfo.substrateInfo) {
|
|
149
|
+
throw new Error(`chain ${chainInfo.slug} is not substrate chain`);
|
|
150
|
+
}
|
|
151
|
+
if (!chainInfo.substrateInfo.supportStaking) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// todo: check has related pallet staking
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// todo: check alternativeAsset
|
|
159
|
+
|
|
160
|
+
// EARNING
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateAssetSlug = validateAssetSlug;
|
|
7
|
+
exports.validateBrigeToken = validateBrigeToken;
|
|
8
|
+
var _types = require("@subwallet/chain-list/types");
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
function validateAssetSlug(chainAsset) {
|
|
13
|
+
const slug = chainAsset.slug;
|
|
14
|
+
const originChain = chainAsset.originChain;
|
|
15
|
+
const assetType = chainAsset.assetType;
|
|
16
|
+
const symbol = chainAsset.symbol;
|
|
17
|
+
if ([_types._AssetType.LOCAL, _types._AssetType.NATIVE, _types._AssetType.BRC20].includes(assetType)) {
|
|
18
|
+
return slug === `${originChain}-${assetType}-${symbol}`;
|
|
19
|
+
}
|
|
20
|
+
if ([_types._AssetType.RUNE].includes(assetType)) {
|
|
21
|
+
var _chainAsset$metadata;
|
|
22
|
+
const runeId = (_chainAsset$metadata = chainAsset.metadata) === null || _chainAsset$metadata === void 0 ? void 0 : _chainAsset$metadata.runeId;
|
|
23
|
+
if (!runeId) {
|
|
24
|
+
throw new Error(`${slug} is ${assetType} but lack of runeId metadata`);
|
|
25
|
+
}
|
|
26
|
+
return slug === `${originChain}-${assetType}-${symbol}-${runeId}`;
|
|
27
|
+
}
|
|
28
|
+
if ([_types._AssetType.ERC20, _types._AssetType.ERC721, _types._AssetType.PSP22, _types._AssetType.PSP34, _types._AssetType.GRC20, _types._AssetType.GRC721].includes(assetType)) {
|
|
29
|
+
var _chainAsset$metadata2;
|
|
30
|
+
const contractAddress = (_chainAsset$metadata2 = chainAsset.metadata) === null || _chainAsset$metadata2 === void 0 ? void 0 : _chainAsset$metadata2.contractAddress;
|
|
31
|
+
if (!contractAddress) {
|
|
32
|
+
throw new Error(`${slug} is ${assetType} but lack of contractAddress metadata`);
|
|
33
|
+
}
|
|
34
|
+
return slug === `${originChain}-${assetType}-${symbol}-${contractAddress}`;
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`${slug} has unknown token type ${assetType}`);
|
|
37
|
+
}
|
|
38
|
+
function validateBrigeToken(chainAsset) {
|
|
39
|
+
var _chainAsset$metadata3, _chainAsset$metadata4;
|
|
40
|
+
const isBridged = (_chainAsset$metadata3 = chainAsset.metadata) === null || _chainAsset$metadata3 === void 0 ? void 0 : _chainAsset$metadata3.isBridged;
|
|
41
|
+
if (!isBridged) {
|
|
42
|
+
throw new Error(`${chainAsset.slug} is not bridged token`);
|
|
43
|
+
}
|
|
44
|
+
return !!((_chainAsset$metadata4 = chainAsset.metadata) !== null && _chainAsset$metadata4 !== void 0 && _chainAsset$metadata4.onChainInfo);
|
|
45
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateAssetTypeSupportByChain = validateAssetTypeSupportByChain;
|
|
7
|
+
exports.validateChainDisableEvmTransfer = validateChainDisableEvmTransfer;
|
|
8
|
+
exports.validateNativeInfoByChain = validateNativeInfoByChain;
|
|
9
|
+
exports.validateTokenHasValueByChain = validateTokenHasValueByChain;
|
|
10
|
+
var _chainList = require("@subwallet/chain-list");
|
|
11
|
+
var _types = require("@subwallet/chain-list/types");
|
|
12
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
13
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
14
|
+
|
|
15
|
+
function validateTokenHasValueByChain(chainAsset) {
|
|
16
|
+
const chainInfo = _chainList.ChainInfoMap[chainAsset.originChain];
|
|
17
|
+
const isTestnet = chainInfo && chainInfo.isTestnet;
|
|
18
|
+
if (!chainInfo) {
|
|
19
|
+
throw new Error(`${chainAsset.originChain} is not existed`);
|
|
20
|
+
}
|
|
21
|
+
return isTestnet !== chainAsset.hasValue; // todo: also check multichainAsset hasValue if has.
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function validateNativeInfoByChain(chainAsset) {
|
|
25
|
+
var _chainInfo$evmInfo, _chainInfo$substrateI, _chainInfo$bitcoinInf, _chainInfo$evmInfo2, _chainInfo$substrateI2, _chainInfo$bitcoinInf2, _chainInfo$evmInfo3, _chainInfo$substrateI3, _chainInfo$bitcoinInf3;
|
|
26
|
+
const chainInfo = _chainList.ChainInfoMap[chainAsset.originChain];
|
|
27
|
+
if (!chainInfo) {
|
|
28
|
+
throw new Error(`${chainAsset.originChain} is not existed`);
|
|
29
|
+
}
|
|
30
|
+
const nativeSymbol = chainInfo !== null && chainInfo !== void 0 && chainInfo.evmInfo ? chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$evmInfo = chainInfo.evmInfo) === null || _chainInfo$evmInfo === void 0 ? void 0 : _chainInfo$evmInfo.symbol : chainInfo !== null && chainInfo !== void 0 && chainInfo.substrateInfo ? chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI = chainInfo.substrateInfo) === null || _chainInfo$substrateI === void 0 ? void 0 : _chainInfo$substrateI.symbol : chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$bitcoinInf = chainInfo.bitcoinInfo) === null || _chainInfo$bitcoinInf === void 0 ? void 0 : _chainInfo$bitcoinInf.symbol;
|
|
31
|
+
const nativeDecimal = chainInfo !== null && chainInfo !== void 0 && chainInfo.evmInfo ? chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$evmInfo2 = chainInfo.evmInfo) === null || _chainInfo$evmInfo2 === void 0 ? void 0 : _chainInfo$evmInfo2.decimals : chainInfo !== null && chainInfo !== void 0 && chainInfo.substrateInfo ? chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI2 = chainInfo.substrateInfo) === null || _chainInfo$substrateI2 === void 0 ? void 0 : _chainInfo$substrateI2.decimals : chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$bitcoinInf2 = chainInfo.bitcoinInfo) === null || _chainInfo$bitcoinInf2 === void 0 ? void 0 : _chainInfo$bitcoinInf2.decimals;
|
|
32
|
+
const nativeED = chainInfo !== null && chainInfo !== void 0 && chainInfo.evmInfo ? chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$evmInfo3 = chainInfo.evmInfo) === null || _chainInfo$evmInfo3 === void 0 ? void 0 : _chainInfo$evmInfo3.existentialDeposit : chainInfo !== null && chainInfo !== void 0 && chainInfo.substrateInfo ? chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI3 = chainInfo.substrateInfo) === null || _chainInfo$substrateI3 === void 0 ? void 0 : _chainInfo$substrateI3.existentialDeposit : chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$bitcoinInf3 = chainInfo.bitcoinInfo) === null || _chainInfo$bitcoinInf3 === void 0 ? void 0 : _chainInfo$bitcoinInf3.existentialDeposit;
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
34
|
+
const nativeTokenSlug = `${chainInfo.slug}-NATIVE-${nativeSymbol}`;
|
|
35
|
+
return nativeSymbol === chainAsset.symbol && nativeDecimal === chainAsset.decimals && nativeED === chainAsset.minAmount && nativeTokenSlug === chainAsset.slug;
|
|
36
|
+
}
|
|
37
|
+
function validateAssetTypeSupportByChain(chainAsset) {
|
|
38
|
+
const chainInfo = _chainList.ChainInfoMap[chainAsset.originChain];
|
|
39
|
+
if (!chainInfo) {
|
|
40
|
+
throw new Error(`${chainAsset.originChain} is not existed`);
|
|
41
|
+
}
|
|
42
|
+
const bitcoinSupportAssetTypes = [_types._AssetType.NATIVE, _types._AssetType.RUNE, _types._AssetType.BRC20];
|
|
43
|
+
const evmSupportAssetTypes = [_types._AssetType.NATIVE, _types._AssetType.ERC20, _types._AssetType.ERC721];
|
|
44
|
+
const substrateSupportAssetTypes = [_types._AssetType.NATIVE, _types._AssetType.LOCAL, _types._AssetType.PSP22, _types._AssetType.PSP34, _types._AssetType.GRC20, _types._AssetType.GRC721];
|
|
45
|
+
|
|
46
|
+
// recheck chain with two types.
|
|
47
|
+
if (chainInfo.substrateInfo) {
|
|
48
|
+
return substrateSupportAssetTypes.includes(chainAsset.assetType);
|
|
49
|
+
}
|
|
50
|
+
if (chainInfo.evmInfo) {
|
|
51
|
+
return evmSupportAssetTypes.includes(chainAsset.assetType);
|
|
52
|
+
}
|
|
53
|
+
if (chainInfo.bitcoinInfo) {
|
|
54
|
+
return bitcoinSupportAssetTypes.includes(chainAsset.assetType);
|
|
55
|
+
}
|
|
56
|
+
throw new Error(`${chainAsset.originChain} does not has a suitable chainInfo`);
|
|
57
|
+
}
|
|
58
|
+
function validateChainDisableEvmTransfer(chainAsset) {
|
|
59
|
+
var _chainInfo$evmInfo4;
|
|
60
|
+
const chainInfo = _chainList.ChainInfoMap[chainAsset.originChain];
|
|
61
|
+
if (!chainInfo) {
|
|
62
|
+
throw new Error(`${chainAsset.originChain} is not existed`);
|
|
63
|
+
}
|
|
64
|
+
if (!chainInfo.evmInfo) {
|
|
65
|
+
throw new Error(`${chainAsset.originChain} is not Evm chain`);
|
|
66
|
+
}
|
|
67
|
+
const isChainMatchCondition = ((_chainInfo$evmInfo4 = chainInfo.evmInfo) === null || _chainInfo$evmInfo4 === void 0 ? void 0 : _chainInfo$evmInfo4.evmChainId) === -1 && chainInfo.substrateInfo;
|
|
68
|
+
if (isChainMatchCondition) {
|
|
69
|
+
var _chainAsset$metadata;
|
|
70
|
+
return (_chainAsset$metadata = chainAsset.metadata) === null || _chainAsset$metadata === void 0 ? void 0 : _chainAsset$metadata.disableEvmTransfer;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.checkEvmSupportSmartContract = checkEvmSupportSmartContract;
|
|
7
|
+
exports.validateChainHasProvider = validateChainHasProvider;
|
|
8
|
+
exports.validateParaId = validateParaId;
|
|
9
|
+
var _types = require("@subwallet/chain-list/types");
|
|
10
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
|
|
13
|
+
function validateChainHasProvider(chainInfo) {
|
|
14
|
+
const chainStatus = chainInfo.chainStatus;
|
|
15
|
+
const providers = Object.keys(chainInfo.providers);
|
|
16
|
+
const validChainLive = chainStatus === _types._ChainStatus.ACTIVE && providers.length > 0;
|
|
17
|
+
const chainNotLive = chainStatus !== _types._ChainStatus.ACTIVE;
|
|
18
|
+
return validChainLive || chainNotLive;
|
|
19
|
+
}
|
|
20
|
+
function validateParaId(chainInfo) {
|
|
21
|
+
if (!chainInfo.substrateInfo) {
|
|
22
|
+
throw new Error('Not substrate chain');
|
|
23
|
+
}
|
|
24
|
+
const paraId = chainInfo.substrateInfo.paraId;
|
|
25
|
+
const chainType = chainInfo.substrateInfo.chainType;
|
|
26
|
+
const relaySlug = chainInfo.substrateInfo.relaySlug;
|
|
27
|
+
return paraId ? chainType === _types._SubstrateChainType.PARACHAIN && !!relaySlug : chainType === _types._SubstrateChainType.RELAYCHAIN && !relaySlug;
|
|
28
|
+
}
|
|
29
|
+
function checkEvmSupportSmartContract(chainInfo) {
|
|
30
|
+
if (!chainInfo.evmInfo) {
|
|
31
|
+
throw new Error('Not Evm chain');
|
|
32
|
+
}
|
|
33
|
+
return !!chainInfo.evmInfo.supportSmartContract;
|
|
34
|
+
}
|
|
@@ -28,13 +28,30 @@ const filterChainInfoMap = (data, ignoredChains) => {
|
|
|
28
28
|
return !info.bitcoinInfo && !ignoredChains.includes(slug);
|
|
29
29
|
}));
|
|
30
30
|
};
|
|
31
|
-
const ignoredList = ['bevm', 'bevmTest', 'bevm_testnet', 'layerEdge_testnet', 'merlinEvm', 'botanixEvmTest', 'syscoin_evm', 'rollux_evm'];
|
|
31
|
+
const ignoredList = ['bevm', 'bevmTest', 'bevm_testnet', 'layerEdge_testnet', 'merlinEvm', 'botanixEvmTest', 'syscoin_evm', 'syscoin_evm_testnet', 'rollux_evm', 'rollux_testnet', 'boolAlpha', 'boolBeta_testnet'];
|
|
32
32
|
const filterAssetInfoMap = (chainInfo, assets) => {
|
|
33
33
|
return Object.fromEntries(Object.entries(assets).filter(_ref2 => {
|
|
34
34
|
let [, info] = _ref2;
|
|
35
35
|
return chainInfo[info.originChain];
|
|
36
36
|
}));
|
|
37
37
|
};
|
|
38
|
+
|
|
39
|
+
// const rawAssetRefMap = (assetRefMap: Record<string, _AssetRef>) => {
|
|
40
|
+
// const result: Record<string, _AssetRef> = {};
|
|
41
|
+
//
|
|
42
|
+
// Object.entries(assetRefMap).forEach(([key, assetRef]) => {
|
|
43
|
+
// const originChainInfo = ChainInfoMap[assetRef.srcChain];
|
|
44
|
+
// const destChainInfo = ChainInfoMap[assetRef.destChain];
|
|
45
|
+
// const isSnowBridgeXcm = assetRef.path === _AssetRefPath.XCM && _isSnowBridgeXcm(originChainInfo, destChainInfo);
|
|
46
|
+
//
|
|
47
|
+
// if (!isSnowBridgeXcm) {
|
|
48
|
+
// result[key] = assetRef;
|
|
49
|
+
// }
|
|
50
|
+
// });
|
|
51
|
+
//
|
|
52
|
+
// return result;
|
|
53
|
+
// };
|
|
54
|
+
|
|
38
55
|
class ChainService {
|
|
39
56
|
dataMap = {
|
|
40
57
|
chainInfoMap: {},
|
|
@@ -467,10 +484,6 @@ class ChainService {
|
|
|
467
484
|
|
|
468
485
|
// TODO: reconsider the flow of initiation
|
|
469
486
|
this.multiChainAssetMapSubject.next(_chainList.MultiChainAssetMap);
|
|
470
|
-
// const storedAssetRefMap = await this.dbService.getAssetRefMap();
|
|
471
|
-
//
|
|
472
|
-
// this.dataMap.assetRefMap = storedAssetRefMap && Object.values(storedAssetRefMap).length > 0 ? storedAssetRefMap : AssetRefMap;
|
|
473
|
-
|
|
474
487
|
await this.initChains();
|
|
475
488
|
this.chainInfoMapSubject.next(this.getChainInfoMap());
|
|
476
489
|
this.assetRegistrySubject.next(this.getAssetRegistry());
|
|
@@ -670,6 +683,34 @@ class ChainService {
|
|
|
670
683
|
}
|
|
671
684
|
const onUpdateStatus = status => {
|
|
672
685
|
const slug = chainInfo.slug;
|
|
686
|
+
const isActive = this.getChainStateByKey(slug).active;
|
|
687
|
+
const isConnectProblem = status !== _types3._ChainConnectionStatus.CONNECTING && status !== _types3._ChainConnectionStatus.CONNECTED;
|
|
688
|
+
const isLightRpc = endpoint.startsWith('light');
|
|
689
|
+
if (isActive && isConnectProblem && !isLightRpc) {
|
|
690
|
+
const reportApiUrl = 'https://api-cache.subwallet.app/api/health-check/report-rpc';
|
|
691
|
+
const requestBody = {
|
|
692
|
+
chainSlug: slug,
|
|
693
|
+
chainStatus: status,
|
|
694
|
+
rpcReport: {
|
|
695
|
+
[providerName]: endpoint
|
|
696
|
+
},
|
|
697
|
+
configStatus: {
|
|
698
|
+
countUnstable: 10,
|
|
699
|
+
countDie: 20
|
|
700
|
+
}
|
|
701
|
+
};
|
|
702
|
+
fetch(reportApiUrl, {
|
|
703
|
+
// can get status from this response
|
|
704
|
+
method: 'POST',
|
|
705
|
+
headers: {
|
|
706
|
+
'X-API-KEY': '9b1c94a5e1f3a2d9f8b2a4d6e1f3a2d9',
|
|
707
|
+
'Content-Type': 'application/json'
|
|
708
|
+
},
|
|
709
|
+
body: JSON.stringify(requestBody)
|
|
710
|
+
})
|
|
711
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
712
|
+
.then(() => {}).catch(error => console.error('Error connecting to the report API:', error));
|
|
713
|
+
}
|
|
673
714
|
this.updateChainConnectionStatus(slug, status);
|
|
674
715
|
};
|
|
675
716
|
if (chainInfo.substrateInfo !== null && chainInfo.substrateInfo !== undefined) {
|
|
@@ -679,6 +720,7 @@ class ChainService {
|
|
|
679
720
|
//
|
|
680
721
|
// this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
|
|
681
722
|
// } else {
|
|
723
|
+
|
|
682
724
|
const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
|
|
683
725
|
providerName,
|
|
684
726
|
onUpdateStatus
|
|
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
9
|
+
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
9
10
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
10
|
-
var
|
|
11
|
+
var _constants2 = require("@subwallet/extension-base/services/earning-service/constants");
|
|
11
12
|
var _types = require("@subwallet/extension-base/types");
|
|
12
13
|
var _util = require("@polkadot/util");
|
|
13
14
|
var _base = _interopRequireDefault(require("./base"));
|
|
@@ -16,6 +17,9 @@ var _base = _interopRequireDefault(require("./base"));
|
|
|
16
17
|
|
|
17
18
|
const GRAPHQL_API = 'https://api.polkawallet.io/acala-liquid-staking-subql';
|
|
18
19
|
const EXCHANGE_RATE_REQUEST = 'query { dailySummaries(first:30, orderBy:TIMESTAMP_DESC) {nodes { exchangeRate timestamp }}}';
|
|
20
|
+
function convertDerivativeToken(amount, exchangeRate, decimals) {
|
|
21
|
+
return amount.mul(new _util.BN(exchangeRate)).div(_util.BN_TEN.pow(new _util.BN(decimals)));
|
|
22
|
+
}
|
|
19
23
|
class AcalaLiquidStakingPoolHandler extends _base.default {
|
|
20
24
|
altInputAsset = 'polkadot-NATIVE-DOT';
|
|
21
25
|
derivativeAssets = ['acala-LOCAL-LDOT'];
|
|
@@ -29,8 +33,7 @@ class AcalaLiquidStakingPoolHandler extends _base.default {
|
|
|
29
33
|
defaultUnstake: true,
|
|
30
34
|
fastUnstake: true,
|
|
31
35
|
cancelUnstake: false,
|
|
32
|
-
withdraw:
|
|
33
|
-
// TODO: Change after verify unstake info
|
|
36
|
+
withdraw: true,
|
|
34
37
|
claimReward: false
|
|
35
38
|
};
|
|
36
39
|
constructor(state, chain) {
|
|
@@ -118,30 +121,56 @@ class AcalaLiquidStakingPoolHandler extends _base.default {
|
|
|
118
121
|
return;
|
|
119
122
|
}
|
|
120
123
|
const balances = _balances;
|
|
121
|
-
const redeemRequests = await substrateApi.api.query.homa.redeemRequests.multi(useAddresses);
|
|
122
|
-
|
|
123
|
-
const exchangeRate = await this.getExchangeRate();
|
|
124
|
-
const decimals = _util.BN_TEN.pow(new _util.BN(this.rateDecimals));
|
|
124
|
+
const [redeemRequests, exchangeRate, _currentEra] = await Promise.all([substrateApi.api.query.homa.redeemRequests.multi(useAddresses), this.getExchangeRate(), substrateApi.api.query.homa.relayChainCurrentEra()]);
|
|
125
|
+
const currentEra = _currentEra.toPrimitive();
|
|
125
126
|
for (let i = 0; i < balances.length; i++) {
|
|
126
127
|
const balanceItem = balances[i];
|
|
127
128
|
const address = useAddresses[i];
|
|
128
129
|
const activeTotalBalance = balanceItem.free || _util.BN_ZERO;
|
|
129
|
-
let totalBalance = activeTotalBalance
|
|
130
|
+
let totalBalance = convertDerivativeToken(activeTotalBalance, exchangeRate, this.rateDecimals);
|
|
130
131
|
let unlockingBalance = _util.BN_ZERO;
|
|
131
132
|
const unstakings = [];
|
|
133
|
+
|
|
134
|
+
// Handle redeem request
|
|
132
135
|
const redeemRequest = redeemRequests[i].toPrimitive();
|
|
133
136
|
if (redeemRequest) {
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const amount = new _util.BN(redeemAmount).mul(new _util.BN(exchangeRate)).div(decimals);
|
|
139
|
-
totalBalance = totalBalance.add(amount);
|
|
140
|
-
unlockingBalance = unlockingBalance.add(amount);
|
|
137
|
+
const [derivativeRedeemAmount, _] = redeemRequest;
|
|
138
|
+
const redeemAmount = convertDerivativeToken(new _util.BN(derivativeRedeemAmount), exchangeRate, this.rateDecimals);
|
|
139
|
+
totalBalance = totalBalance.add(redeemAmount);
|
|
140
|
+
unlockingBalance = unlockingBalance.add(redeemAmount);
|
|
141
141
|
unstakings.push({
|
|
142
142
|
chain: this.chain,
|
|
143
|
-
status:
|
|
144
|
-
claimable:
|
|
143
|
+
status: _types.UnstakingStatus.UNLOCKING,
|
|
144
|
+
claimable: redeemAmount.toString(),
|
|
145
|
+
waitingTime: 28 * _constants._STAKING_ERA_LENGTH_MAP.polkadot // up to 29 day (in case non-fast-match
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Handle unbondings
|
|
150
|
+
const unbondings = await substrateApi.api.query.homa.unbondings.entries(address);
|
|
151
|
+
if (unbondings.length > 0) {
|
|
152
|
+
unbondings.forEach(_ref => {
|
|
153
|
+
let [unbondingInfo, unbondingValue] = _ref;
|
|
154
|
+
// @ts-ignore
|
|
155
|
+
const _targetEra = unbondingInfo.toHuman()[1];
|
|
156
|
+
const targetEra = parseInt(_targetEra.replaceAll(',', ''));
|
|
157
|
+
const amount = new _util.BN(unbondingValue.toPrimitive());
|
|
158
|
+
totalBalance = totalBalance.add(amount);
|
|
159
|
+
unlockingBalance = unlockingBalance.add(amount);
|
|
160
|
+
if (targetEra > currentEra) {
|
|
161
|
+
unstakings.push({
|
|
162
|
+
chain: this.chain,
|
|
163
|
+
status: _types.UnstakingStatus.UNLOCKING,
|
|
164
|
+
claimable: amount.toString(),
|
|
165
|
+
waitingTime: (targetEra - currentEra) * _constants._STAKING_ERA_LENGTH_MAP.polkadot // Todo: Handle exact timestamp?
|
|
166
|
+
});
|
|
167
|
+
} else {
|
|
168
|
+
unstakings.push({
|
|
169
|
+
chain: this.chain,
|
|
170
|
+
status: _types.UnstakingStatus.CLAIMABLE,
|
|
171
|
+
claimable: amount.toString()
|
|
172
|
+
});
|
|
173
|
+
}
|
|
145
174
|
});
|
|
146
175
|
}
|
|
147
176
|
const result = {
|
|
@@ -181,7 +210,7 @@ class AcalaLiquidStakingPoolHandler extends _base.default {
|
|
|
181
210
|
const poolOriginSubstrateApi = await this.substrateApi.isReady;
|
|
182
211
|
const defaultFeeTokenSlug = this.feeAssets[0];
|
|
183
212
|
if (new _util.BN(params.amount).gt(_util.BN_ZERO)) {
|
|
184
|
-
const _mintFeeInfo = await poolOriginSubstrateApi.api.tx.homa.mint(params.amount).paymentInfo(
|
|
213
|
+
const _mintFeeInfo = await poolOriginSubstrateApi.api.tx.homa.mint(params.amount).paymentInfo(_constants2.fakeAddress);
|
|
185
214
|
const mintFeeInfo = _mintFeeInfo.toPrimitive();
|
|
186
215
|
return {
|
|
187
216
|
amount: mintFeeInfo.partialFee.toString(),
|
|
@@ -232,7 +261,8 @@ class AcalaLiquidStakingPoolHandler extends _base.default {
|
|
|
232
261
|
}
|
|
233
262
|
async handleYieldUnstake(amount, address, selectedTarget) {
|
|
234
263
|
const chainApi = await this.substrateApi.isReady;
|
|
235
|
-
const extrinsic = chainApi.api.tx.homa.requestRedeem(amount,
|
|
264
|
+
const extrinsic = chainApi.api.tx.homa.requestRedeem(amount, true); // set true to allow fast match
|
|
265
|
+
|
|
236
266
|
return [_KoniTypes.ExtrinsicType.UNSTAKE_LDOT, extrinsic];
|
|
237
267
|
}
|
|
238
268
|
async handleYieldWithdraw(address, unstakingInfo) {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class ReloadMetadata extends _Base.default {
|
|
13
|
+
chains = ['goldberg_testnet'];
|
|
14
|
+
async run() {
|
|
15
|
+
const activeChains = this.state.chainService.getActiveChains();
|
|
16
|
+
for (const chain of this.chains) {
|
|
17
|
+
const item = await this.state.dbService.stores.metadata.getMetadata(chain);
|
|
18
|
+
if (item) {
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
await this.state.dbService.stores.metadata.remove(item.genesisHash);
|
|
21
|
+
const isActive = activeChains.includes(chain);
|
|
22
|
+
if (isActive) {
|
|
23
|
+
this.state.chainService.disableChain(chain);
|
|
24
|
+
setTimeout(() => {
|
|
25
|
+
this.state.chainService.enableChain(chain).catch(console.error);
|
|
26
|
+
}, 500);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Clear all old metadata data
|
|
31
|
+
|
|
32
|
+
return Promise.resolve();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.default = ReloadMetadata;
|
|
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.EVERYTIME = void 0;
|
|
8
8
|
var _AutoEnableSomeTokens = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/databases/AutoEnableSomeTokens"));
|
|
9
|
+
var _ReloadMetadata = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/databases/ReloadMetadata"));
|
|
9
10
|
var _DeleteEarningData = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/DeleteEarningData"));
|
|
10
11
|
var _MigrateRemoveGenesisHash = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateRemoveGenesisHash"));
|
|
11
12
|
var _MigrateTransactionHistoryBySymbol = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateTransactionHistoryBySymbol"));
|
|
13
|
+
var _ClearMetadataDatabase = _interopRequireDefault(require("./databases/ClearMetadataDatabase"));
|
|
12
14
|
var _MigrateAssetSetting = _interopRequireDefault(require("./databases/MigrateAssetSetting"));
|
|
13
15
|
var _MigrateEarningVersion = _interopRequireDefault(require("./databases/MigrateEarningVersion"));
|
|
14
16
|
var _MigrateEthProvider = _interopRequireDefault(require("./providers/MigrateEthProvider"));
|
|
@@ -16,7 +18,6 @@ var _MigratePioneerProvider = _interopRequireDefault(require("./providers/Migrat
|
|
|
16
18
|
var _MigrateProvidersV1M1P = _interopRequireDefault(require("./providers/MigrateProvidersV1M1P24"));
|
|
17
19
|
var _MigratePolygonUSDCProvider = _interopRequireDefault(require("./tokens/MigratePolygonUSDCProvider"));
|
|
18
20
|
var _AutoEnableChainsTokens = _interopRequireDefault(require("./AutoEnableChainsTokens"));
|
|
19
|
-
var _ClearMetadataDatabase = _interopRequireDefault(require("./ClearMetadataDatabase"));
|
|
20
21
|
var _DeleteChain = _interopRequireDefault(require("./DeleteChain"));
|
|
21
22
|
var _DeleteChainStaking = _interopRequireDefault(require("./DeleteChainStaking"));
|
|
22
23
|
var _EnableVaraChain = _interopRequireDefault(require("./EnableVaraChain"));
|
|
@@ -63,7 +64,8 @@ var _default = {
|
|
|
63
64
|
'1.1.69-03': _MigrateAssetSetting.default,
|
|
64
65
|
'1.1.69-02': _MigrateTransactionHistoryBySymbol.default,
|
|
65
66
|
'1.2.69-01': _MigrateRemoveGenesisHash.default,
|
|
66
|
-
'1.2.1-01': _ClearMetadataDatabase.default
|
|
67
|
+
'1.2.1-01': _ClearMetadataDatabase.default,
|
|
68
|
+
'1.2.13-01': _ReloadMetadata.default
|
|
67
69
|
// [`${EVERYTIME}-1.1.42-02`]: MigrateTransactionHistoryBySymbol
|
|
68
70
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
69
71
|
};
|