@subwallet/extension-base 1.1.33-beta.0 → 1.1.33-beta.2
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 +9 -0
- package/background/KoniTypes.js +3 -0
- package/cjs/background/KoniTypes.js +3 -0
- package/cjs/constants/staking.js +1 -1
- package/cjs/koni/api/yield/helper/utils.js +6 -3
- package/cjs/services/chain-service/constants.js +4 -2
- package/cjs/services/chain-service/handler/SubstrateApi.js +10 -5
- package/cjs/services/chain-service/index.js +144 -37
- package/cjs/services/chain-service/utils.js +68 -0
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +2 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +140 -0
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
- package/cjs/services/earning-service/handlers/liquid-staking/index.js +7 -0
- package/cjs/services/earning-service/handlers/special.js +7 -3
- package/cjs/services/earning-service/service.js +1 -0
- package/cjs/services/storage-service/DatabaseService.js +34 -0
- package/cjs/services/storage-service/db-stores/AssetRef.js +24 -0
- package/cjs/services/transaction-service/index.js +3 -0
- package/cjs/types/yield/actions/join/step.js +1 -0
- package/constants/staking.js +1 -1
- package/koni/api/yield/helper/utils.d.ts +1 -1
- package/koni/api/yield/helper/utils.js +5 -3
- package/package.json +12 -2
- package/services/chain-service/constants.d.ts +1 -0
- package/services/chain-service/constants.js +1 -0
- package/services/chain-service/handler/SubstrateApi.js +10 -5
- package/services/chain-service/index.d.ts +12 -1
- package/services/chain-service/index.js +140 -34
- package/services/chain-service/utils.d.ts +10 -1
- package/services/chain-service/utils.js +66 -1
- package/services/earning-service/handlers/liquid-staking/base.d.ts +1 -1
- package/services/earning-service/handlers/liquid-staking/base.js +2 -1
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.d.ts +37 -0
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +132 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +3 -3
- package/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
- package/services/earning-service/handlers/liquid-staking/index.d.ts +1 -0
- package/services/earning-service/handlers/liquid-staking/index.js +1 -0
- package/services/earning-service/handlers/special.js +7 -3
- package/services/earning-service/service.js +2 -1
- package/services/storage-service/DatabaseService.js +34 -0
- package/services/storage-service/databases/index.d.ts +4 -1
- package/services/storage-service/db-stores/AssetRef.d.ts +7 -0
- package/services/storage-service/db-stores/AssetRef.js +16 -0
- package/services/transaction-service/index.js +3 -0
- package/types/yield/actions/join/step.d.ts +1 -0
- package/types/yield/actions/join/step.js +1 -0
|
@@ -371,16 +371,19 @@ export declare enum ExtrinsicType {
|
|
|
371
371
|
MINT_SDOT = "earn.mint_sdot",
|
|
372
372
|
MINT_QDOT = "earn.mint_qdot",
|
|
373
373
|
MINT_STDOT = "earn.mint_stdot",
|
|
374
|
+
MINT_VMANTA = "earn.mint_vmanta",
|
|
374
375
|
REDEEM_QDOT = "earn.redeem_qdot",
|
|
375
376
|
REDEEM_VDOT = "earn.redeem_vdot",
|
|
376
377
|
REDEEM_LDOT = "earn.redeem_ldot",
|
|
377
378
|
REDEEM_SDOT = "earn.redeem_sdot",
|
|
378
379
|
REDEEM_STDOT = "earn.redeem_stdot",
|
|
380
|
+
REDEEM_VMANTA = "earn.redeem_vmanta",
|
|
379
381
|
UNSTAKE_QDOT = "earn.unstake_qdot",
|
|
380
382
|
UNSTAKE_VDOT = "earn.unstake_vdot",
|
|
381
383
|
UNSTAKE_LDOT = "earn.unstake_ldot",
|
|
382
384
|
UNSTAKE_SDOT = "earn.unstake_sdot",
|
|
383
385
|
UNSTAKE_STDOT = "earn.unstake_stdot",
|
|
386
|
+
UNSTAKE_VMANTA = "earn.unstake_vmanta",
|
|
384
387
|
TOKEN_APPROVE = "evm.token_approve",
|
|
385
388
|
EVM_EXECUTE = "evm.execute",
|
|
386
389
|
UNKNOWN = "unknown"
|
|
@@ -407,16 +410,19 @@ export interface ExtrinsicDataTypeMap {
|
|
|
407
410
|
[ExtrinsicType.MINT_QDOT]: SubmitYieldStepData;
|
|
408
411
|
[ExtrinsicType.MINT_STDOT]: SubmitYieldStepData;
|
|
409
412
|
[ExtrinsicType.MINT_STDOT]: SubmitYieldStepData;
|
|
413
|
+
[ExtrinsicType.MINT_VMANTA]: SubmitYieldStepData;
|
|
410
414
|
[ExtrinsicType.UNSTAKE_VDOT]: RequestYieldLeave;
|
|
411
415
|
[ExtrinsicType.UNSTAKE_QDOT]: RequestYieldLeave;
|
|
412
416
|
[ExtrinsicType.UNSTAKE_LDOT]: RequestYieldLeave;
|
|
413
417
|
[ExtrinsicType.UNSTAKE_SDOT]: RequestYieldLeave;
|
|
414
418
|
[ExtrinsicType.UNSTAKE_STDOT]: RequestYieldLeave;
|
|
419
|
+
[ExtrinsicType.UNSTAKE_VMANTA]: RequestYieldLeave;
|
|
415
420
|
[ExtrinsicType.REDEEM_VDOT]: RequestYieldLeave;
|
|
416
421
|
[ExtrinsicType.REDEEM_QDOT]: RequestYieldLeave;
|
|
417
422
|
[ExtrinsicType.REDEEM_LDOT]: RequestYieldLeave;
|
|
418
423
|
[ExtrinsicType.REDEEM_SDOT]: RequestYieldLeave;
|
|
419
424
|
[ExtrinsicType.REDEEM_STDOT]: RequestYieldLeave;
|
|
425
|
+
[ExtrinsicType.REDEEM_VMANTA]: RequestYieldLeave;
|
|
420
426
|
[ExtrinsicType.TOKEN_APPROVE]: TokenApproveData;
|
|
421
427
|
[ExtrinsicType.EVM_EXECUTE]: TransactionConfig;
|
|
422
428
|
[ExtrinsicType.CROWDLOAN]: any;
|
|
@@ -470,16 +476,19 @@ export declare type TransactionAdditionalInfo = {
|
|
|
470
476
|
[ExtrinsicType.TRANSFER_XCM]: XCMTransactionAdditionalInfo;
|
|
471
477
|
[ExtrinsicType.SEND_NFT]: NFTTransactionAdditionalInfo;
|
|
472
478
|
[ExtrinsicType.MINT_VDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
479
|
+
[ExtrinsicType.MINT_VMANTA]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
473
480
|
[ExtrinsicType.MINT_QDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
474
481
|
[ExtrinsicType.MINT_SDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
475
482
|
[ExtrinsicType.MINT_LDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
476
483
|
[ExtrinsicType.MINT_STDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
477
484
|
[ExtrinsicType.REDEEM_VDOT]: LeavePoolAdditionalData;
|
|
485
|
+
[ExtrinsicType.REDEEM_VMANTA]: LeavePoolAdditionalData;
|
|
478
486
|
[ExtrinsicType.REDEEM_QDOT]: LeavePoolAdditionalData;
|
|
479
487
|
[ExtrinsicType.REDEEM_SDOT]: LeavePoolAdditionalData;
|
|
480
488
|
[ExtrinsicType.REDEEM_LDOT]: LeavePoolAdditionalData;
|
|
481
489
|
[ExtrinsicType.REDEEM_STDOT]: LeavePoolAdditionalData;
|
|
482
490
|
[ExtrinsicType.UNSTAKE_VDOT]: LeavePoolAdditionalData;
|
|
491
|
+
[ExtrinsicType.UNSTAKE_VMANTA]: LeavePoolAdditionalData;
|
|
483
492
|
[ExtrinsicType.UNSTAKE_QDOT]: LeavePoolAdditionalData;
|
|
484
493
|
[ExtrinsicType.UNSTAKE_SDOT]: LeavePoolAdditionalData;
|
|
485
494
|
[ExtrinsicType.UNSTAKE_LDOT]: LeavePoolAdditionalData;
|
package/background/KoniTypes.js
CHANGED
|
@@ -81,16 +81,19 @@ export let ExtrinsicType;
|
|
|
81
81
|
ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
|
|
82
82
|
ExtrinsicType["MINT_QDOT"] = "earn.mint_qdot";
|
|
83
83
|
ExtrinsicType["MINT_STDOT"] = "earn.mint_stdot";
|
|
84
|
+
ExtrinsicType["MINT_VMANTA"] = "earn.mint_vmanta";
|
|
84
85
|
ExtrinsicType["REDEEM_QDOT"] = "earn.redeem_qdot";
|
|
85
86
|
ExtrinsicType["REDEEM_VDOT"] = "earn.redeem_vdot";
|
|
86
87
|
ExtrinsicType["REDEEM_LDOT"] = "earn.redeem_ldot";
|
|
87
88
|
ExtrinsicType["REDEEM_SDOT"] = "earn.redeem_sdot";
|
|
88
89
|
ExtrinsicType["REDEEM_STDOT"] = "earn.redeem_stdot";
|
|
90
|
+
ExtrinsicType["REDEEM_VMANTA"] = "earn.redeem_vmanta";
|
|
89
91
|
ExtrinsicType["UNSTAKE_QDOT"] = "earn.unstake_qdot";
|
|
90
92
|
ExtrinsicType["UNSTAKE_VDOT"] = "earn.unstake_vdot";
|
|
91
93
|
ExtrinsicType["UNSTAKE_LDOT"] = "earn.unstake_ldot";
|
|
92
94
|
ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
|
|
93
95
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
96
|
+
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
94
97
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
95
98
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
96
99
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
@@ -95,16 +95,19 @@ exports.ExtrinsicType = ExtrinsicType;
|
|
|
95
95
|
ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
|
|
96
96
|
ExtrinsicType["MINT_QDOT"] = "earn.mint_qdot";
|
|
97
97
|
ExtrinsicType["MINT_STDOT"] = "earn.mint_stdot";
|
|
98
|
+
ExtrinsicType["MINT_VMANTA"] = "earn.mint_vmanta";
|
|
98
99
|
ExtrinsicType["REDEEM_QDOT"] = "earn.redeem_qdot";
|
|
99
100
|
ExtrinsicType["REDEEM_VDOT"] = "earn.redeem_vdot";
|
|
100
101
|
ExtrinsicType["REDEEM_LDOT"] = "earn.redeem_ldot";
|
|
101
102
|
ExtrinsicType["REDEEM_SDOT"] = "earn.redeem_sdot";
|
|
102
103
|
ExtrinsicType["REDEEM_STDOT"] = "earn.redeem_stdot";
|
|
104
|
+
ExtrinsicType["REDEEM_VMANTA"] = "earn.redeem_vmanta";
|
|
103
105
|
ExtrinsicType["UNSTAKE_QDOT"] = "earn.unstake_qdot";
|
|
104
106
|
ExtrinsicType["UNSTAKE_VDOT"] = "earn.unstake_vdot";
|
|
105
107
|
ExtrinsicType["UNSTAKE_LDOT"] = "earn.unstake_ldot";
|
|
106
108
|
ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
|
|
107
109
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
110
|
+
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
108
111
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
109
112
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
110
113
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
package/cjs/constants/staking.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
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
|
});
|
|
@@ -10,6 +11,8 @@ exports.syntheticSelectedValidators = void 0;
|
|
|
10
11
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
12
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
12
13
|
var _types = require("@subwallet/extension-base/types");
|
|
14
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
15
|
+
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
13
16
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
14
17
|
// SPDX-License-Identifier: Apache-2.0
|
|
15
18
|
|
|
@@ -40,7 +43,7 @@ function convertDerivativeToOriginToken(amount, poolInfo, derivativeTokenInfo, o
|
|
|
40
43
|
const derivativeDecimals = (0, _utils._getAssetDecimals)(derivativeTokenInfo);
|
|
41
44
|
const originDecimals = (0, _utils._getAssetDecimals)(originTokenInfo);
|
|
42
45
|
const exchangeRate = ((_poolInfo$statistic = poolInfo.statistic) === null || _poolInfo$statistic === void 0 ? void 0 : (_poolInfo$statistic$a = _poolInfo$statistic.assetEarning) === null || _poolInfo$statistic$a === void 0 ? void 0 : _poolInfo$statistic$a[0].exchangeRate) || 1;
|
|
43
|
-
const formattedAmount =
|
|
44
|
-
const minAmount = formattedAmount
|
|
45
|
-
return
|
|
46
|
+
const formattedAmount = new _bignumber.default(amount).dividedBy(_utils2.BN_TEN.pow(derivativeDecimals)); // TODO: decimals
|
|
47
|
+
const minAmount = formattedAmount.multipliedBy(exchangeRate);
|
|
48
|
+
return minAmount.multipliedBy(_utils2.BN_TEN.pow(originDecimals)).toFixed(0);
|
|
46
49
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports._ZK_ASSET_PREFIX = exports._XCM_TYPE = exports._XCM_CHAIN_GROUP = exports._TRANSFER_NOT_SUPPORTED_CHAINS = exports._TRANSFER_CHAIN_GROUP = exports._SUBSTRATE_DEFAULT_INFLATION_PARAMS = exports._STAKING_ERA_LENGTH_MAP = exports._PURE_EVM_CHAINS = exports._PREDEFINED_SINGLE_MODES = exports._PARACHAIN_INFLATION_DISTRIBUTION = exports._NFT_CHAIN_GROUP = exports._MULTI_CHAIN_ASSET_SRC = exports._MANTA_ZK_CHAIN_GROUP = exports._KNOWN_CHAIN_INFLATION_PARAMS = exports._EXPECTED_BLOCK_TIME = exports._DEFAULT_MANTA_ZK_CHAIN = exports._DEFAULT_ACTIVE_CHAINS = exports._CHAIN_LOGO_MAP_SRC = exports._CHAIN_INFO_SRC = exports._CHAIN_ASSET_SRC = exports._BALANCE_TOKEN_GROUP = exports._BALANCE_PARSING_CHAIN_GROUP = exports._BALANCE_CHAIN_GROUP = exports._ASSET_REF_SRC = exports._ASSET_LOGO_MAP_SRC = exports._API_OPTIONS_CHAIN_GROUP = exports.EVM_REFORMAT_DECIMALS = exports.EVM_PASS_CONNECT_STATUS = exports.API_MAX_RETRY = exports.API_CONNECT_TIMEOUT = exports.API_AUTO_CONNECT_MS = void 0;
|
|
6
|
+
exports._ZK_ASSET_PREFIX = exports._XCM_TYPE = exports._XCM_CHAIN_GROUP = exports._TRANSFER_NOT_SUPPORTED_CHAINS = exports._TRANSFER_CHAIN_GROUP = exports._SUBSTRATE_DEFAULT_INFLATION_PARAMS = exports._STAKING_ERA_LENGTH_MAP = exports._PURE_EVM_CHAINS = exports._PREDEFINED_SINGLE_MODES = exports._PARACHAIN_INFLATION_DISTRIBUTION = exports._NFT_CHAIN_GROUP = exports._MULTI_CHAIN_ASSET_SRC = exports._MANTA_ZK_CHAIN_GROUP = exports._KNOWN_CHAIN_INFLATION_PARAMS = exports._EXPECTED_BLOCK_TIME = exports._DEFAULT_MANTA_ZK_CHAIN = exports._DEFAULT_ACTIVE_CHAINS = exports._CHAIN_LOGO_MAP_SRC = exports._CHAIN_INFO_SRC = exports._CHAIN_ASSET_SRC = exports._BALANCE_TOKEN_GROUP = exports._BALANCE_PARSING_CHAIN_GROUP = exports._BALANCE_CHAIN_GROUP = exports._ASSET_REF_SRC = exports._ASSET_LOGO_MAP_SRC = exports._API_OPTIONS_CHAIN_GROUP = exports.LATEST_CHAIN_DATA_FETCHING_INTERVAL = exports.EVM_REFORMAT_DECIMALS = exports.EVM_PASS_CONNECT_STATUS = exports.API_MAX_RETRY = exports.API_CONNECT_TIMEOUT = exports.API_AUTO_CONNECT_MS = void 0;
|
|
7
7
|
var _chainList = require("@subwallet/chain-list");
|
|
8
8
|
var _types = require("@subwallet/chain-list/types");
|
|
9
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
@@ -262,9 +262,11 @@ exports.EVM_PASS_CONNECT_STATUS = EVM_PASS_CONNECT_STATUS;
|
|
|
262
262
|
const EVM_REFORMAT_DECIMALS = {
|
|
263
263
|
acala: ['acala_evm', 'karura_evm']
|
|
264
264
|
};
|
|
265
|
+
exports.EVM_REFORMAT_DECIMALS = EVM_REFORMAT_DECIMALS;
|
|
266
|
+
const LATEST_CHAIN_DATA_FETCHING_INTERVAL = 120000;
|
|
265
267
|
|
|
266
268
|
// TODO: review
|
|
267
|
-
exports.
|
|
269
|
+
exports.LATEST_CHAIN_DATA_FETCHING_INTERVAL = LATEST_CHAIN_DATA_FETCHING_INTERVAL;
|
|
268
270
|
const TARGET_BRANCH = process.env.NODE_ENV !== 'production' ? 'koni-dev' : 'master';
|
|
269
271
|
const _CHAIN_INFO_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/ChainInfo.json`;
|
|
270
272
|
exports._CHAIN_INFO_SRC = _CHAIN_INFO_SRC;
|
|
@@ -64,7 +64,8 @@ class SubstrateApi {
|
|
|
64
64
|
const apiOption = {
|
|
65
65
|
provider,
|
|
66
66
|
typesBundle: _api3.typesBundle,
|
|
67
|
-
registry: this.registry
|
|
67
|
+
registry: this.registry,
|
|
68
|
+
noInitWarn: true
|
|
68
69
|
};
|
|
69
70
|
if (this.metadata) {
|
|
70
71
|
const metadata = this.metadata;
|
|
@@ -78,27 +79,31 @@ class SubstrateApi {
|
|
|
78
79
|
api = externalApiPromise;
|
|
79
80
|
} else if (_constants._API_OPTIONS_CHAIN_GROUP.acala.includes(this.chainSlug)) {
|
|
80
81
|
api = new _api2.ApiPromise((0, _api.options)({
|
|
81
|
-
provider
|
|
82
|
+
provider,
|
|
83
|
+
noInitWarn: true
|
|
82
84
|
}));
|
|
83
85
|
} else if (_constants._API_OPTIONS_CHAIN_GROUP.turing.includes(this.chainSlug)) {
|
|
84
86
|
api = new _api2.ApiPromise({
|
|
85
87
|
provider,
|
|
86
88
|
rpc: _types.rpc,
|
|
87
|
-
types: _types.types
|
|
89
|
+
types: _types.types,
|
|
90
|
+
noInitWarn: true
|
|
88
91
|
});
|
|
89
92
|
} else if (_constants._API_OPTIONS_CHAIN_GROUP.avail.includes(this.chainSlug)) {
|
|
90
93
|
api = new _api2.ApiPromise({
|
|
91
94
|
provider,
|
|
92
95
|
rpc: _availJsSdk.spec.rpc,
|
|
93
96
|
types: _availJsSdk.spec.types,
|
|
94
|
-
signedExtensions: _availJsSdk.spec.signedExtensions
|
|
97
|
+
signedExtensions: _availJsSdk.spec.signedExtensions,
|
|
98
|
+
noInitWarn: true
|
|
95
99
|
});
|
|
96
100
|
} else if (_constants._API_OPTIONS_CHAIN_GROUP.goldberg.includes(this.chainSlug)) {
|
|
97
101
|
api = new _api2.ApiPromise({
|
|
98
102
|
provider,
|
|
99
103
|
rpc: _goldberg.default.rpc,
|
|
100
104
|
types: _goldberg.default.types,
|
|
101
|
-
signedExtensions: _goldberg.default.signedExtensions
|
|
105
|
+
signedExtensions: _goldberg.default.signedExtensions,
|
|
106
|
+
noInitWarn: true
|
|
102
107
|
});
|
|
103
108
|
} else {
|
|
104
109
|
api = new _api2.ApiPromise(apiOption);
|
|
@@ -410,9 +410,11 @@ class ChainService {
|
|
|
410
410
|
await this.eventService.waitDatabaseReady;
|
|
411
411
|
|
|
412
412
|
// TODO: reconsider the flow of initiation
|
|
413
|
-
|
|
414
|
-
this.
|
|
415
|
-
|
|
413
|
+
this.multiChainAssetMapSubject.next(_chainList.MultiChainAssetMap);
|
|
414
|
+
// const storedAssetRefMap = await this.dbService.getAssetRefMap();
|
|
415
|
+
//
|
|
416
|
+
// this.dataMap.assetRefMap = storedAssetRefMap && Object.values(storedAssetRefMap).length > 0 ? storedAssetRefMap : AssetRefMap;
|
|
417
|
+
|
|
416
418
|
await this.initChains();
|
|
417
419
|
this.chainInfoMapSubject.next(this.getChainInfoMap());
|
|
418
420
|
this.updateChainStateMapSubscription();
|
|
@@ -420,16 +422,103 @@ class ChainService {
|
|
|
420
422
|
this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
|
|
421
423
|
await this.initApis();
|
|
422
424
|
await this.initAssetSettings();
|
|
425
|
+
await this.initAssetRefMap();
|
|
426
|
+
this.checkLatestData();
|
|
427
|
+
}
|
|
428
|
+
async initAssetRefMap() {
|
|
429
|
+
try {
|
|
430
|
+
const fetchPromise = this.fetchLatestBlockedAssetRef();
|
|
431
|
+
const timeout = new Promise(resolve => {
|
|
432
|
+
const id = setTimeout(() => {
|
|
433
|
+
clearTimeout(id);
|
|
434
|
+
resolve(null);
|
|
435
|
+
}, 1000);
|
|
436
|
+
});
|
|
437
|
+
const disabledAssetRefs = (await Promise.race([timeout, fetchPromise])) || null;
|
|
438
|
+
if (disabledAssetRefs) {
|
|
439
|
+
this.handleLatestBlockedAssetRef(disabledAssetRefs);
|
|
440
|
+
} else {
|
|
441
|
+
this.dataMap.assetRefMap = _chainList.AssetRefMap;
|
|
442
|
+
}
|
|
443
|
+
} catch (e) {
|
|
444
|
+
this.dataMap.assetRefMap = _chainList.AssetRefMap;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
checkLatestData() {
|
|
448
|
+
clearInterval(this.refreshLatestChainDataTimeOut);
|
|
449
|
+
this.handleLatestData();
|
|
450
|
+
this.handleLatestData();
|
|
451
|
+
this.handleLatestData();
|
|
452
|
+
this.refreshLatestChainDataTimeOut = setInterval(this.handleLatestData.bind(this), _constants.LATEST_CHAIN_DATA_FETCHING_INTERVAL);
|
|
453
|
+
}
|
|
454
|
+
stopCheckLatestChainData() {
|
|
455
|
+
clearInterval(this.refreshLatestChainDataTimeOut);
|
|
423
456
|
}
|
|
457
|
+
handleLatestProviderData(latestChainInfo) {
|
|
458
|
+
try {
|
|
459
|
+
if (latestChainInfo && latestChainInfo.length > 0) {
|
|
460
|
+
const {
|
|
461
|
+
needUpdateChainApiList,
|
|
462
|
+
storedChainInfoList
|
|
463
|
+
} = (0, _utils.updateLatestChainInfo)(this.dataMap, latestChainInfo);
|
|
464
|
+
this.dbService.bulkUpdateChainStore(storedChainInfoList).catch(console.error);
|
|
465
|
+
this.updateChainSubscription();
|
|
466
|
+
needUpdateChainApiList.forEach(chainInfo => {
|
|
467
|
+
console.log('Updating chain API for', chainInfo.slug);
|
|
468
|
+
this.initApiForChain(chainInfo).catch(console.error);
|
|
469
|
+
});
|
|
470
|
+
this.logger.log('Finished updating latest RPC providers');
|
|
471
|
+
}
|
|
472
|
+
} catch (e) {
|
|
473
|
+
console.error('Error fetching latest chain data');
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
handleLatestBlockedAssetRef(latestBlockedAssetRefList) {
|
|
477
|
+
const updatedAssetRefMap = {
|
|
478
|
+
..._chainList.AssetRefMap
|
|
479
|
+
};
|
|
480
|
+
latestBlockedAssetRefList.forEach(blockedAssetRef => {
|
|
481
|
+
delete updatedAssetRefMap[blockedAssetRef];
|
|
482
|
+
});
|
|
483
|
+
this.dataMap.assetRefMap = updatedAssetRefMap;
|
|
484
|
+
|
|
485
|
+
// this.dbService.setAssetRef(this.dataMap.assetRefMap).catch(console.error);
|
|
486
|
+
this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
|
|
487
|
+
this.logger.log('Finished updating latest asset ref');
|
|
488
|
+
}
|
|
489
|
+
handleLatestPriceId(latestPriceIds) {
|
|
490
|
+
Object.entries(latestPriceIds).forEach(_ref3 => {
|
|
491
|
+
let [slug, priceId] = _ref3;
|
|
492
|
+
if (this.dataMap.assetRegistry[slug]) {
|
|
493
|
+
this.dataMap.assetRegistry[slug].priceId = priceId;
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
this.assetRegistrySubject.next(this.dataMap.assetRegistry);
|
|
497
|
+
this.eventService.emit('asset.updateState', '');
|
|
498
|
+
this.logger.log('Finished updating latest price IDs');
|
|
499
|
+
}
|
|
500
|
+
handleLatestData() {
|
|
501
|
+
this.fetchLatestChainData().then(latestChainInfo => {
|
|
502
|
+
this.handleLatestProviderData(latestChainInfo);
|
|
503
|
+
}).catch(console.error);
|
|
504
|
+
this.fetchLatestBlockedAssetRef().then(latestAssetRef => {
|
|
505
|
+
this.handleLatestBlockedAssetRef(latestAssetRef);
|
|
506
|
+
}).catch(console.error);
|
|
507
|
+
|
|
508
|
+
// this.fetchLatestPriceIdsData().then((latestPriceIds) => {
|
|
509
|
+
// this.handleLatestPriceId(latestPriceIds);
|
|
510
|
+
// }).catch(console.error);
|
|
511
|
+
}
|
|
512
|
+
|
|
424
513
|
async initApis() {
|
|
425
514
|
const chainInfoMap = this.getChainInfoMap();
|
|
426
515
|
const chainStateMap = this.getChainStateMap();
|
|
427
|
-
await Promise.all(Object.entries(chainInfoMap).filter(
|
|
516
|
+
await Promise.all(Object.entries(chainInfoMap).filter(_ref4 => {
|
|
428
517
|
var _chainStateMap$slug;
|
|
429
|
-
let [slug] =
|
|
518
|
+
let [slug] = _ref4;
|
|
430
519
|
return (_chainStateMap$slug = chainStateMap[slug]) === null || _chainStateMap$slug === void 0 ? void 0 : _chainStateMap$slug.active;
|
|
431
|
-
}).map(
|
|
432
|
-
let [, chainInfo] =
|
|
520
|
+
}).map(_ref5 => {
|
|
521
|
+
let [, chainInfo] = _ref5;
|
|
433
522
|
try {
|
|
434
523
|
return this.initApiForChain(chainInfo);
|
|
435
524
|
} catch (e) {
|
|
@@ -578,8 +667,8 @@ class ChainService {
|
|
|
578
667
|
}
|
|
579
668
|
return duplicatedSlug;
|
|
580
669
|
}
|
|
581
|
-
async
|
|
582
|
-
return
|
|
670
|
+
async fetchLatestChainData() {
|
|
671
|
+
return await (0, _utils2.fetchStaticData)('chains');
|
|
583
672
|
// try {
|
|
584
673
|
// const timeout = new Promise((resolve) => {
|
|
585
674
|
// const id = setTimeout(() => {
|
|
@@ -616,9 +705,16 @@ class ChainService {
|
|
|
616
705
|
// }
|
|
617
706
|
}
|
|
618
707
|
|
|
708
|
+
// @ts-ignore
|
|
709
|
+
async fetchLatestPriceIdsData() {
|
|
710
|
+
return await (0, _utils2.fetchStaticData)('chain-assets/price-map');
|
|
711
|
+
}
|
|
712
|
+
async fetchLatestBlockedAssetRef() {
|
|
713
|
+
return await (0, _utils2.fetchStaticData)('chain-assets/disabled-xcm-channels');
|
|
714
|
+
}
|
|
619
715
|
async initChains() {
|
|
620
716
|
const storedChainSettings = await this.dbService.getAllChainStore();
|
|
621
|
-
const
|
|
717
|
+
const defaultChainInfoMap = _chainList.ChainInfoMap;
|
|
622
718
|
const storedChainSettingMap = {};
|
|
623
719
|
storedChainSettings.forEach(chainStoredSetting => {
|
|
624
720
|
storedChainSettingMap[chainStoredSetting.slug] = chainStoredSetting;
|
|
@@ -627,10 +723,13 @@ class ChainService {
|
|
|
627
723
|
const deprecatedChains = [];
|
|
628
724
|
const deprecatedChainMap = {};
|
|
629
725
|
if (storedChainSettings.length === 0) {
|
|
630
|
-
this.dataMap.chainInfoMap =
|
|
631
|
-
Object.values(
|
|
726
|
+
this.dataMap.chainInfoMap = defaultChainInfoMap;
|
|
727
|
+
Object.values(defaultChainInfoMap).forEach(chainInfo => {
|
|
728
|
+
const {
|
|
729
|
+
providerKey
|
|
730
|
+
} = (0, _utils.randomizeProvider)(chainInfo.providers);
|
|
632
731
|
this.dataMap.chainStateMap[chainInfo.slug] = {
|
|
633
|
-
currentProvider:
|
|
732
|
+
currentProvider: providerKey,
|
|
634
733
|
slug: chainInfo.slug,
|
|
635
734
|
connectionStatus: _types3._ChainConnectionStatus.DISCONNECTED,
|
|
636
735
|
active: _constants._DEFAULT_ACTIVE_CHAINS.includes(chainInfo.slug)
|
|
@@ -640,15 +739,15 @@ class ChainService {
|
|
|
640
739
|
newStorageData.push({
|
|
641
740
|
...chainInfo,
|
|
642
741
|
active: _constants._DEFAULT_ACTIVE_CHAINS.includes(chainInfo.slug),
|
|
643
|
-
currentProvider:
|
|
742
|
+
currentProvider: providerKey
|
|
644
743
|
});
|
|
645
744
|
});
|
|
646
745
|
} else {
|
|
647
|
-
const mergedChainInfoMap =
|
|
746
|
+
const mergedChainInfoMap = defaultChainInfoMap;
|
|
648
747
|
for (const [storedSlug, storedChainInfo] of Object.entries(storedChainSettingMap)) {
|
|
649
|
-
const chainInfo =
|
|
748
|
+
const chainInfo = defaultChainInfoMap[storedSlug];
|
|
650
749
|
|
|
651
|
-
// Network
|
|
750
|
+
// Network existed on change list
|
|
652
751
|
// check predefined chains first, keep setting for providers and currentProvider
|
|
653
752
|
if (chainInfo) {
|
|
654
753
|
// Keep customer provider only
|
|
@@ -663,23 +762,27 @@ class ChainService {
|
|
|
663
762
|
}
|
|
664
763
|
}
|
|
665
764
|
mergedChainInfoMap[storedSlug].providers = providers;
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
}
|
|
765
|
+
const {
|
|
766
|
+
providerKey
|
|
767
|
+
} = (0, _utils.randomizeProvider)(providers);
|
|
768
|
+
let selectedProvider = providerKey;
|
|
769
|
+
const storedProviderKey = storedChainInfo.currentProvider;
|
|
770
|
+
const storedProviderValue = storedChainInfo.providers[storedProviderKey] || '';
|
|
771
|
+
if (storedProviderValue !== null && storedProviderValue !== void 0 && storedProviderValue.startsWith('light') || storedProviderKey !== null && storedProviderKey !== void 0 && storedProviderKey.startsWith(_types3._CUSTOM_PREFIX)) {
|
|
772
|
+
const savedProviderKey = Object.keys(providers).find(key => providers[key] === storedProviderValue);
|
|
773
|
+
if (savedProviderKey) {
|
|
774
|
+
selectedProvider = savedProviderKey;
|
|
677
775
|
}
|
|
678
776
|
}
|
|
777
|
+
|
|
778
|
+
// Merge current provider
|
|
779
|
+
// let currentProvider = storedChainInfo.currentProvider;
|
|
780
|
+
// const providerValue = storedChainInfo.providers[selectedProvider] || '';
|
|
781
|
+
|
|
679
782
|
const hasProvider = Object.values(providers).length > 0;
|
|
680
783
|
const canActive = hasProvider && chainInfo.chainStatus === _types._ChainStatus.ACTIVE;
|
|
681
784
|
this.dataMap.chainStateMap[storedSlug] = {
|
|
682
|
-
currentProvider:
|
|
785
|
+
currentProvider: selectedProvider,
|
|
683
786
|
slug: storedSlug,
|
|
684
787
|
connectionStatus: _types3._ChainConnectionStatus.DISCONNECTED,
|
|
685
788
|
active: canActive && storedChainInfo.active
|
|
@@ -687,13 +790,13 @@ class ChainService {
|
|
|
687
790
|
newStorageData.push({
|
|
688
791
|
...mergedChainInfoMap[storedSlug],
|
|
689
792
|
active: canActive && storedChainInfo.active,
|
|
690
|
-
currentProvider:
|
|
793
|
+
currentProvider: selectedProvider
|
|
691
794
|
});
|
|
692
795
|
} else if ((0, _utils._isCustomChain)(storedSlug)) {
|
|
693
796
|
var _storedChainInfo$subs, _storedChainInfo$evmI;
|
|
694
797
|
// only custom chains are left
|
|
695
798
|
// check custom chain duplicated with predefined chain => merge into predefined chain
|
|
696
|
-
const duplicatedDefaultSlug = this.checkExistedPredefinedChain(
|
|
799
|
+
const duplicatedDefaultSlug = this.checkExistedPredefinedChain(defaultChainInfoMap, (_storedChainInfo$subs = storedChainInfo.substrateInfo) === null || _storedChainInfo$subs === void 0 ? void 0 : _storedChainInfo$subs.genesisHash, (_storedChainInfo$evmI = storedChainInfo.evmInfo) === null || _storedChainInfo$evmI === void 0 ? void 0 : _storedChainInfo$evmI.evmChainId);
|
|
697
800
|
if (duplicatedDefaultSlug.length > 0) {
|
|
698
801
|
// merge custom chain with existed chain
|
|
699
802
|
mergedChainInfoMap[duplicatedDefaultSlug].providers = {
|
|
@@ -718,6 +821,7 @@ class ChainService {
|
|
|
718
821
|
slug: storedSlug,
|
|
719
822
|
name: storedChainInfo.name,
|
|
720
823
|
providers: storedChainInfo.providers,
|
|
824
|
+
// TODO: review
|
|
721
825
|
evmInfo: storedChainInfo.evmInfo,
|
|
722
826
|
substrateInfo: storedChainInfo.substrateInfo,
|
|
723
827
|
isTestnet: storedChainInfo.isTestnet,
|
|
@@ -727,6 +831,7 @@ class ChainService {
|
|
|
727
831
|
};
|
|
728
832
|
this.dataMap.chainStateMap[storedSlug] = {
|
|
729
833
|
currentProvider: storedChainInfo.currentProvider,
|
|
834
|
+
// TODO: review
|
|
730
835
|
slug: storedSlug,
|
|
731
836
|
connectionStatus: _types3._ChainConnectionStatus.DISCONNECTED,
|
|
732
837
|
active: storedChainInfo.active
|
|
@@ -734,7 +839,7 @@ class ChainService {
|
|
|
734
839
|
newStorageData.push({
|
|
735
840
|
...mergedChainInfoMap[storedSlug],
|
|
736
841
|
active: storedChainInfo.active,
|
|
737
|
-
currentProvider: storedChainInfo.currentProvider
|
|
842
|
+
currentProvider: storedChainInfo.currentProvider // TODO: review
|
|
738
843
|
});
|
|
739
844
|
}
|
|
740
845
|
} else {
|
|
@@ -743,8 +848,8 @@ class ChainService {
|
|
|
743
848
|
}
|
|
744
849
|
|
|
745
850
|
// Fill in the missing chainState and storageData (new chains never before seen)
|
|
746
|
-
Object.entries(mergedChainInfoMap).forEach(
|
|
747
|
-
let [slug, chainInfo] =
|
|
851
|
+
Object.entries(mergedChainInfoMap).forEach(_ref6 => {
|
|
852
|
+
let [slug, chainInfo] = _ref6;
|
|
748
853
|
if (!(slug in this.dataMap.chainStateMap)) {
|
|
749
854
|
this.dataMap.chainStateMap[slug] = {
|
|
750
855
|
currentProvider: Object.keys(chainInfo.providers)[0],
|
|
@@ -767,7 +872,7 @@ class ChainService {
|
|
|
767
872
|
}
|
|
768
873
|
async initAssetRegistry(deprecatedCustomChainMap) {
|
|
769
874
|
const storedAssetRegistry = await this.dbService.getAllAssetStore();
|
|
770
|
-
const latestAssetRegistry =
|
|
875
|
+
const latestAssetRegistry = _chainList.ChainAssetMap;
|
|
771
876
|
const availableChains = Object.values(this.dataMap.chainInfoMap).filter(info => info.chainStatus === _types._ChainStatus.ACTIVE).map(chainInfo => chainInfo.slug);
|
|
772
877
|
|
|
773
878
|
// Fill out zk assets from latestAssetRegistry if not supported
|
|
@@ -1217,9 +1322,11 @@ class ChainService {
|
|
|
1217
1322
|
}
|
|
1218
1323
|
async stopAllChainApis() {
|
|
1219
1324
|
await Promise.all([this.substrateChainHandler.sleep(), this.evmChainHandler.sleep()]);
|
|
1325
|
+
this.stopCheckLatestChainData();
|
|
1220
1326
|
}
|
|
1221
1327
|
async resumeAllChainApis() {
|
|
1222
1328
|
await Promise.all([this.substrateChainHandler.wakeUp(), this.evmChainHandler.wakeUp()]);
|
|
1329
|
+
this.checkLatestData();
|
|
1223
1330
|
}
|
|
1224
1331
|
checkAndUpdateStatusMapForChain(chainSlug) {
|
|
1225
1332
|
const substrateApiMap = this.getSubstrateApiMap();
|
|
@@ -1355,10 +1462,10 @@ class ChainService {
|
|
|
1355
1462
|
return this.assetSettingSubject;
|
|
1356
1463
|
}
|
|
1357
1464
|
async getChainLogoMap() {
|
|
1358
|
-
return
|
|
1465
|
+
return Promise.resolve(_chainList.ChainLogoMap);
|
|
1359
1466
|
}
|
|
1360
1467
|
async getAssetLogoMap() {
|
|
1361
|
-
return
|
|
1468
|
+
return Promise.resolve(_chainList.AssetLogoMap);
|
|
1362
1469
|
}
|
|
1363
1470
|
resetWallet(resetAll) {
|
|
1364
1471
|
if (resetAll) {
|
|
@@ -68,6 +68,8 @@ exports._isXcmPathSupported = _isXcmPathSupported;
|
|
|
68
68
|
exports._parseAssetRefKey = _parseAssetRefKey;
|
|
69
69
|
exports._parseMetadataForSmartContractAsset = _parseMetadataForSmartContractAsset;
|
|
70
70
|
exports.findChainInfoByHalfGenesisHash = exports.findChainInfoByChainId = void 0;
|
|
71
|
+
exports.randomizeProvider = randomizeProvider;
|
|
72
|
+
exports.updateLatestChainInfo = updateLatestChainInfo;
|
|
71
73
|
var _types = require("@subwallet/chain-list/types");
|
|
72
74
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
73
75
|
var _types2 = require("@subwallet/extension-base/services/chain-service/types");
|
|
@@ -435,4 +437,70 @@ const findChainInfoByChainId = (chainMap, chainId) => {
|
|
|
435
437
|
exports.findChainInfoByChainId = findChainInfoByChainId;
|
|
436
438
|
function _isMantaZkAsset(chainAsset) {
|
|
437
439
|
return _constants._MANTA_ZK_CHAIN_GROUP.includes(chainAsset.originChain) && chainAsset.symbol.startsWith(_constants._ZK_ASSET_PREFIX);
|
|
440
|
+
}
|
|
441
|
+
function randomizeProvider(providers, excludedKeys) {
|
|
442
|
+
if (Object.keys(providers).length === 0) {
|
|
443
|
+
return {
|
|
444
|
+
providerKey: '',
|
|
445
|
+
providerValue: ''
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
let isValid = false;
|
|
449
|
+
let selectedProviderKey = '';
|
|
450
|
+
let selectedProviderValue = '';
|
|
451
|
+
while (!isValid) {
|
|
452
|
+
var _selectedProviderValu, _selectedProviderKey;
|
|
453
|
+
const randomProvider = Math.floor(Math.random() * Object.keys(providers).length);
|
|
454
|
+
selectedProviderKey = Object.keys(providers)[randomProvider];
|
|
455
|
+
selectedProviderValue = providers[selectedProviderKey];
|
|
456
|
+
if (!((_selectedProviderValu = selectedProviderValue) !== null && _selectedProviderValu !== void 0 && _selectedProviderValu.startsWith('light')) && !((_selectedProviderKey = selectedProviderKey) !== null && _selectedProviderKey !== void 0 && _selectedProviderKey.startsWith(_types2._CUSTOM_PREFIX)) && !(excludedKeys !== null && excludedKeys !== void 0 && excludedKeys.includes(selectedProviderKey))) {
|
|
457
|
+
// if it's light client, then re-randomize
|
|
458
|
+
isValid = true;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
return {
|
|
462
|
+
providerKey: selectedProviderKey,
|
|
463
|
+
providerValue: selectedProviderValue
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
function updateLatestChainInfo(currentDataMap, latestChainInfoList) {
|
|
467
|
+
const currentChainInfoMap = currentDataMap.chainInfoMap;
|
|
468
|
+
const currentChainStateMap = currentDataMap.chainStateMap;
|
|
469
|
+
const storedChainInfoList = [];
|
|
470
|
+
const needUpdateChainApiList = [];
|
|
471
|
+
latestChainInfoList.forEach(latestChainInfo => {
|
|
472
|
+
const currentChainInfo = currentChainInfoMap[latestChainInfo.slug];
|
|
473
|
+
const currentChainState = currentChainStateMap[latestChainInfo.slug];
|
|
474
|
+
const currentChainProviderValue = currentChainInfo === null || currentChainInfo === void 0 ? void 0 : currentChainInfo.providers[currentChainState === null || currentChainState === void 0 ? void 0 : currentChainState.currentProvider];
|
|
475
|
+
if (currentChainInfo && currentChainState) {
|
|
476
|
+
const preservedProvider = {};
|
|
477
|
+
Object.entries(currentChainInfo.providers).forEach(_ref => {
|
|
478
|
+
let [providerKey, providerValue] = _ref;
|
|
479
|
+
if (providerValue !== null && providerValue !== void 0 && providerValue.startsWith('light') || providerKey !== null && providerKey !== void 0 && providerKey.startsWith(_types2._CUSTOM_PREFIX)) {
|
|
480
|
+
preservedProvider[providerKey] = providerValue;
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
currentChainInfo.providers = {
|
|
484
|
+
...latestChainInfo.providers,
|
|
485
|
+
...preservedProvider
|
|
486
|
+
};
|
|
487
|
+
const currentProviderNotFound = !Object.keys(currentChainInfo.providers).includes(currentChainState.currentProvider);
|
|
488
|
+
const currentProviderUpdated = Object.keys(currentChainInfo.providers).includes(currentChainState.currentProvider) && !Object.values(currentChainInfo.providers).includes(currentChainProviderValue);
|
|
489
|
+
if (currentChainInfo.chainStatus === _types._ChainStatus.ACTIVE && (currentProviderNotFound || currentProviderUpdated)) {
|
|
490
|
+
const {
|
|
491
|
+
providerKey
|
|
492
|
+
} = randomizeProvider(currentChainInfo.providers);
|
|
493
|
+
currentChainState.currentProvider = providerKey;
|
|
494
|
+
needUpdateChainApiList.push(currentChainInfo);
|
|
495
|
+
}
|
|
496
|
+
storedChainInfoList.push({
|
|
497
|
+
...currentChainInfo,
|
|
498
|
+
...currentChainState
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
return {
|
|
503
|
+
storedChainInfoList,
|
|
504
|
+
needUpdateChainApiList
|
|
505
|
+
};
|
|
438
506
|
}
|
|
@@ -10,6 +10,7 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
10
10
|
var _utils = require("@subwallet/extension-base/koni/api/yield/helper/utils");
|
|
11
11
|
var _types = require("@subwallet/extension-base/types");
|
|
12
12
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
13
|
+
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
13
14
|
var _i18next = require("i18next");
|
|
14
15
|
var _util = require("@polkadot/util");
|
|
15
16
|
var _special = _interopRequireDefault(require("../special"));
|
|
@@ -38,7 +39,7 @@ class BaseLiquidStakingPoolHandler extends _special.default {
|
|
|
38
39
|
return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS));
|
|
39
40
|
}
|
|
40
41
|
const formattedMinAmount = (0, _utils.convertDerivativeToOriginToken)(amount, poolInfo, derivativeTokenInfo, originTokenInfo);
|
|
41
|
-
return
|
|
42
|
+
return new _bignumber.default(formattedMinAmount).multipliedBy(this.minAmountPercent).toFixed(0);
|
|
42
43
|
}
|
|
43
44
|
async validateYieldLeave(amount, address, fastLeave, selectedTarget) {
|
|
44
45
|
const poolInfo = await this.getPoolInfo();
|