@subwallet/extension-base 1.1.33-beta.0 → 1.1.33-beta.1
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/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 +120 -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 +29 -1
- package/cjs/services/storage-service/databases/index.js +3 -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/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 +11 -1
- package/services/chain-service/index.js +116 -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.d.ts +8 -2
- package/services/storage-service/DatabaseService.js +28 -1
- package/services/storage-service/databases/index.d.ts +5 -1
- package/services/storage-service/databases/index.js +3 -0
- 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";
|
|
@@ -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 = 30000;
|
|
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,9 @@ class ChainService {
|
|
|
410
410
|
await this.eventService.waitDatabaseReady;
|
|
411
411
|
|
|
412
412
|
// TODO: reconsider the flow of initiation
|
|
413
|
-
|
|
414
|
-
this.
|
|
415
|
-
this.dataMap.assetRefMap =
|
|
413
|
+
this.multiChainAssetMapSubject.next(_chainList.MultiChainAssetMap);
|
|
414
|
+
const storedAssetRefMap = await this.dbService.getAssetRefMap();
|
|
415
|
+
this.dataMap.assetRefMap = storedAssetRefMap && Object.values(storedAssetRefMap).length > 0 ? storedAssetRefMap : _chainList.AssetRefMap;
|
|
416
416
|
await this.initChains();
|
|
417
417
|
this.chainInfoMapSubject.next(this.getChainInfoMap());
|
|
418
418
|
this.updateChainStateMapSubscription();
|
|
@@ -420,16 +420,81 @@ class ChainService {
|
|
|
420
420
|
this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
|
|
421
421
|
await this.initApis();
|
|
422
422
|
await this.initAssetSettings();
|
|
423
|
+
this.checkLatestData();
|
|
423
424
|
}
|
|
425
|
+
checkLatestData() {
|
|
426
|
+
clearInterval(this.refreshLatestChainDataTimeOut);
|
|
427
|
+
this.handleLatestData();
|
|
428
|
+
this.handleLatestData();
|
|
429
|
+
this.refreshLatestChainDataTimeOut = setInterval(this.handleLatestData.bind(this), _constants.LATEST_CHAIN_DATA_FETCHING_INTERVAL);
|
|
430
|
+
}
|
|
431
|
+
stopCheckLatestChainData() {
|
|
432
|
+
clearInterval(this.refreshLatestChainDataTimeOut);
|
|
433
|
+
}
|
|
434
|
+
handleLatestProviderData(latestChainInfo) {
|
|
435
|
+
try {
|
|
436
|
+
if (latestChainInfo && latestChainInfo.length > 0) {
|
|
437
|
+
const {
|
|
438
|
+
needUpdateChainApiList,
|
|
439
|
+
storedChainInfoList
|
|
440
|
+
} = (0, _utils.updateLatestChainInfo)(this.dataMap, latestChainInfo);
|
|
441
|
+
this.dbService.bulkUpdateChainStore(storedChainInfoList).catch(console.error);
|
|
442
|
+
this.updateChainSubscription();
|
|
443
|
+
needUpdateChainApiList.forEach(chainInfo => {
|
|
444
|
+
console.log('Updating chain API for', chainInfo.slug);
|
|
445
|
+
this.initApiForChain(chainInfo).catch(console.error);
|
|
446
|
+
});
|
|
447
|
+
this.logger.log('Finished updating latest RPC providers');
|
|
448
|
+
}
|
|
449
|
+
} catch (e) {
|
|
450
|
+
console.error('Error fetching latest chain data');
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
handleLatestBlockedAssetRef(latestBlockedAssetRefList) {
|
|
454
|
+
if (latestBlockedAssetRefList.length > 0) {
|
|
455
|
+
latestBlockedAssetRefList.forEach(blockedAssetRef => {
|
|
456
|
+
delete this.dataMap.assetRefMap[blockedAssetRef];
|
|
457
|
+
});
|
|
458
|
+
} else {
|
|
459
|
+
this.dataMap.assetRefMap = _chainList.AssetRefMap;
|
|
460
|
+
}
|
|
461
|
+
this.dbService.setAssetRef(this.dataMap.assetRefMap).catch(console.error);
|
|
462
|
+
this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
|
|
463
|
+
this.logger.log('Finished updating latest asset ref');
|
|
464
|
+
}
|
|
465
|
+
handleLatestPriceId(latestPriceIds) {
|
|
466
|
+
Object.entries(latestPriceIds).forEach(_ref3 => {
|
|
467
|
+
let [slug, priceId] = _ref3;
|
|
468
|
+
if (this.dataMap.assetRegistry[slug]) {
|
|
469
|
+
this.dataMap.assetRegistry[slug].priceId = priceId;
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
this.assetRegistrySubject.next(this.dataMap.assetRegistry);
|
|
473
|
+
this.eventService.emit('asset.updateState', '');
|
|
474
|
+
this.logger.log('Finished updating latest price IDs');
|
|
475
|
+
}
|
|
476
|
+
handleLatestData() {
|
|
477
|
+
this.fetchLatestChainData().then(latestChainInfo => {
|
|
478
|
+
this.handleLatestProviderData(latestChainInfo);
|
|
479
|
+
}).catch(console.error);
|
|
480
|
+
this.fetchLatestBlockedAssetRef().then(latestAssetRef => {
|
|
481
|
+
this.handleLatestBlockedAssetRef(latestAssetRef);
|
|
482
|
+
}).catch(console.error);
|
|
483
|
+
|
|
484
|
+
// this.fetchLatestPriceIdsData().then((latestPriceIds) => {
|
|
485
|
+
// this.handleLatestPriceId(latestPriceIds);
|
|
486
|
+
// }).catch(console.error);
|
|
487
|
+
}
|
|
488
|
+
|
|
424
489
|
async initApis() {
|
|
425
490
|
const chainInfoMap = this.getChainInfoMap();
|
|
426
491
|
const chainStateMap = this.getChainStateMap();
|
|
427
|
-
await Promise.all(Object.entries(chainInfoMap).filter(
|
|
492
|
+
await Promise.all(Object.entries(chainInfoMap).filter(_ref4 => {
|
|
428
493
|
var _chainStateMap$slug;
|
|
429
|
-
let [slug] =
|
|
494
|
+
let [slug] = _ref4;
|
|
430
495
|
return (_chainStateMap$slug = chainStateMap[slug]) === null || _chainStateMap$slug === void 0 ? void 0 : _chainStateMap$slug.active;
|
|
431
|
-
}).map(
|
|
432
|
-
let [, chainInfo] =
|
|
496
|
+
}).map(_ref5 => {
|
|
497
|
+
let [, chainInfo] = _ref5;
|
|
433
498
|
try {
|
|
434
499
|
return this.initApiForChain(chainInfo);
|
|
435
500
|
} catch (e) {
|
|
@@ -578,8 +643,8 @@ class ChainService {
|
|
|
578
643
|
}
|
|
579
644
|
return duplicatedSlug;
|
|
580
645
|
}
|
|
581
|
-
async
|
|
582
|
-
return
|
|
646
|
+
async fetchLatestChainData() {
|
|
647
|
+
return await (0, _utils2.fetchStaticData)('chains');
|
|
583
648
|
// try {
|
|
584
649
|
// const timeout = new Promise((resolve) => {
|
|
585
650
|
// const id = setTimeout(() => {
|
|
@@ -616,9 +681,16 @@ class ChainService {
|
|
|
616
681
|
// }
|
|
617
682
|
}
|
|
618
683
|
|
|
684
|
+
// @ts-ignore
|
|
685
|
+
async fetchLatestPriceIdsData() {
|
|
686
|
+
return await (0, _utils2.fetchStaticData)('chain-assets/price-map');
|
|
687
|
+
}
|
|
688
|
+
async fetchLatestBlockedAssetRef() {
|
|
689
|
+
return await (0, _utils2.fetchStaticData)('chain-assets/disabled-xcm-channels');
|
|
690
|
+
}
|
|
619
691
|
async initChains() {
|
|
620
692
|
const storedChainSettings = await this.dbService.getAllChainStore();
|
|
621
|
-
const
|
|
693
|
+
const defaultChainInfoMap = _chainList.ChainInfoMap;
|
|
622
694
|
const storedChainSettingMap = {};
|
|
623
695
|
storedChainSettings.forEach(chainStoredSetting => {
|
|
624
696
|
storedChainSettingMap[chainStoredSetting.slug] = chainStoredSetting;
|
|
@@ -627,10 +699,13 @@ class ChainService {
|
|
|
627
699
|
const deprecatedChains = [];
|
|
628
700
|
const deprecatedChainMap = {};
|
|
629
701
|
if (storedChainSettings.length === 0) {
|
|
630
|
-
this.dataMap.chainInfoMap =
|
|
631
|
-
Object.values(
|
|
702
|
+
this.dataMap.chainInfoMap = defaultChainInfoMap;
|
|
703
|
+
Object.values(defaultChainInfoMap).forEach(chainInfo => {
|
|
704
|
+
const {
|
|
705
|
+
providerKey
|
|
706
|
+
} = (0, _utils.randomizeProvider)(chainInfo.providers);
|
|
632
707
|
this.dataMap.chainStateMap[chainInfo.slug] = {
|
|
633
|
-
currentProvider:
|
|
708
|
+
currentProvider: providerKey,
|
|
634
709
|
slug: chainInfo.slug,
|
|
635
710
|
connectionStatus: _types3._ChainConnectionStatus.DISCONNECTED,
|
|
636
711
|
active: _constants._DEFAULT_ACTIVE_CHAINS.includes(chainInfo.slug)
|
|
@@ -640,15 +715,15 @@ class ChainService {
|
|
|
640
715
|
newStorageData.push({
|
|
641
716
|
...chainInfo,
|
|
642
717
|
active: _constants._DEFAULT_ACTIVE_CHAINS.includes(chainInfo.slug),
|
|
643
|
-
currentProvider:
|
|
718
|
+
currentProvider: providerKey
|
|
644
719
|
});
|
|
645
720
|
});
|
|
646
721
|
} else {
|
|
647
|
-
const mergedChainInfoMap =
|
|
722
|
+
const mergedChainInfoMap = defaultChainInfoMap;
|
|
648
723
|
for (const [storedSlug, storedChainInfo] of Object.entries(storedChainSettingMap)) {
|
|
649
|
-
const chainInfo =
|
|
724
|
+
const chainInfo = defaultChainInfoMap[storedSlug];
|
|
650
725
|
|
|
651
|
-
// Network
|
|
726
|
+
// Network existed on change list
|
|
652
727
|
// check predefined chains first, keep setting for providers and currentProvider
|
|
653
728
|
if (chainInfo) {
|
|
654
729
|
// Keep customer provider only
|
|
@@ -663,23 +738,27 @@ class ChainService {
|
|
|
663
738
|
}
|
|
664
739
|
}
|
|
665
740
|
mergedChainInfoMap[storedSlug].providers = providers;
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
}
|
|
741
|
+
const {
|
|
742
|
+
providerKey
|
|
743
|
+
} = (0, _utils.randomizeProvider)(providers);
|
|
744
|
+
let selectedProvider = providerKey;
|
|
745
|
+
const storedProviderKey = storedChainInfo.currentProvider;
|
|
746
|
+
const storedProviderValue = storedChainInfo.providers[storedProviderKey] || '';
|
|
747
|
+
if (storedProviderValue !== null && storedProviderValue !== void 0 && storedProviderValue.startsWith('light') || storedProviderKey !== null && storedProviderKey !== void 0 && storedProviderKey.startsWith(_types3._CUSTOM_PREFIX)) {
|
|
748
|
+
const savedProviderKey = Object.keys(providers).find(key => providers[key] === storedProviderValue);
|
|
749
|
+
if (savedProviderKey) {
|
|
750
|
+
selectedProvider = savedProviderKey;
|
|
677
751
|
}
|
|
678
752
|
}
|
|
753
|
+
|
|
754
|
+
// Merge current provider
|
|
755
|
+
// let currentProvider = storedChainInfo.currentProvider;
|
|
756
|
+
// const providerValue = storedChainInfo.providers[selectedProvider] || '';
|
|
757
|
+
|
|
679
758
|
const hasProvider = Object.values(providers).length > 0;
|
|
680
759
|
const canActive = hasProvider && chainInfo.chainStatus === _types._ChainStatus.ACTIVE;
|
|
681
760
|
this.dataMap.chainStateMap[storedSlug] = {
|
|
682
|
-
currentProvider:
|
|
761
|
+
currentProvider: selectedProvider,
|
|
683
762
|
slug: storedSlug,
|
|
684
763
|
connectionStatus: _types3._ChainConnectionStatus.DISCONNECTED,
|
|
685
764
|
active: canActive && storedChainInfo.active
|
|
@@ -687,13 +766,13 @@ class ChainService {
|
|
|
687
766
|
newStorageData.push({
|
|
688
767
|
...mergedChainInfoMap[storedSlug],
|
|
689
768
|
active: canActive && storedChainInfo.active,
|
|
690
|
-
currentProvider:
|
|
769
|
+
currentProvider: selectedProvider
|
|
691
770
|
});
|
|
692
771
|
} else if ((0, _utils._isCustomChain)(storedSlug)) {
|
|
693
772
|
var _storedChainInfo$subs, _storedChainInfo$evmI;
|
|
694
773
|
// only custom chains are left
|
|
695
774
|
// check custom chain duplicated with predefined chain => merge into predefined chain
|
|
696
|
-
const duplicatedDefaultSlug = this.checkExistedPredefinedChain(
|
|
775
|
+
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
776
|
if (duplicatedDefaultSlug.length > 0) {
|
|
698
777
|
// merge custom chain with existed chain
|
|
699
778
|
mergedChainInfoMap[duplicatedDefaultSlug].providers = {
|
|
@@ -718,6 +797,7 @@ class ChainService {
|
|
|
718
797
|
slug: storedSlug,
|
|
719
798
|
name: storedChainInfo.name,
|
|
720
799
|
providers: storedChainInfo.providers,
|
|
800
|
+
// TODO: review
|
|
721
801
|
evmInfo: storedChainInfo.evmInfo,
|
|
722
802
|
substrateInfo: storedChainInfo.substrateInfo,
|
|
723
803
|
isTestnet: storedChainInfo.isTestnet,
|
|
@@ -727,6 +807,7 @@ class ChainService {
|
|
|
727
807
|
};
|
|
728
808
|
this.dataMap.chainStateMap[storedSlug] = {
|
|
729
809
|
currentProvider: storedChainInfo.currentProvider,
|
|
810
|
+
// TODO: review
|
|
730
811
|
slug: storedSlug,
|
|
731
812
|
connectionStatus: _types3._ChainConnectionStatus.DISCONNECTED,
|
|
732
813
|
active: storedChainInfo.active
|
|
@@ -734,7 +815,7 @@ class ChainService {
|
|
|
734
815
|
newStorageData.push({
|
|
735
816
|
...mergedChainInfoMap[storedSlug],
|
|
736
817
|
active: storedChainInfo.active,
|
|
737
|
-
currentProvider: storedChainInfo.currentProvider
|
|
818
|
+
currentProvider: storedChainInfo.currentProvider // TODO: review
|
|
738
819
|
});
|
|
739
820
|
}
|
|
740
821
|
} else {
|
|
@@ -743,8 +824,8 @@ class ChainService {
|
|
|
743
824
|
}
|
|
744
825
|
|
|
745
826
|
// Fill in the missing chainState and storageData (new chains never before seen)
|
|
746
|
-
Object.entries(mergedChainInfoMap).forEach(
|
|
747
|
-
let [slug, chainInfo] =
|
|
827
|
+
Object.entries(mergedChainInfoMap).forEach(_ref6 => {
|
|
828
|
+
let [slug, chainInfo] = _ref6;
|
|
748
829
|
if (!(slug in this.dataMap.chainStateMap)) {
|
|
749
830
|
this.dataMap.chainStateMap[slug] = {
|
|
750
831
|
currentProvider: Object.keys(chainInfo.providers)[0],
|
|
@@ -767,7 +848,7 @@ class ChainService {
|
|
|
767
848
|
}
|
|
768
849
|
async initAssetRegistry(deprecatedCustomChainMap) {
|
|
769
850
|
const storedAssetRegistry = await this.dbService.getAllAssetStore();
|
|
770
|
-
const latestAssetRegistry =
|
|
851
|
+
const latestAssetRegistry = _chainList.ChainAssetMap;
|
|
771
852
|
const availableChains = Object.values(this.dataMap.chainInfoMap).filter(info => info.chainStatus === _types._ChainStatus.ACTIVE).map(chainInfo => chainInfo.slug);
|
|
772
853
|
|
|
773
854
|
// Fill out zk assets from latestAssetRegistry if not supported
|
|
@@ -1217,9 +1298,11 @@ class ChainService {
|
|
|
1217
1298
|
}
|
|
1218
1299
|
async stopAllChainApis() {
|
|
1219
1300
|
await Promise.all([this.substrateChainHandler.sleep(), this.evmChainHandler.sleep()]);
|
|
1301
|
+
this.stopCheckLatestChainData();
|
|
1220
1302
|
}
|
|
1221
1303
|
async resumeAllChainApis() {
|
|
1222
1304
|
await Promise.all([this.substrateChainHandler.wakeUp(), this.evmChainHandler.wakeUp()]);
|
|
1305
|
+
this.checkLatestData();
|
|
1223
1306
|
}
|
|
1224
1307
|
checkAndUpdateStatusMapForChain(chainSlug) {
|
|
1225
1308
|
const substrateApiMap = this.getSubstrateApiMap();
|
|
@@ -1355,10 +1438,10 @@ class ChainService {
|
|
|
1355
1438
|
return this.assetSettingSubject;
|
|
1356
1439
|
}
|
|
1357
1440
|
async getChainLogoMap() {
|
|
1358
|
-
return
|
|
1441
|
+
return Promise.resolve(_chainList.ChainLogoMap);
|
|
1359
1442
|
}
|
|
1360
1443
|
async getAssetLogoMap() {
|
|
1361
|
-
return
|
|
1444
|
+
return Promise.resolve(_chainList.AssetLogoMap);
|
|
1362
1445
|
}
|
|
1363
1446
|
resetWallet(resetAll) {
|
|
1364
1447
|
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();
|