@subwallet/extension-base 1.3.21-0 → 1.3.23-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/background/KoniTypes.d.ts +75 -2
- package/background/KoniTypes.js +2 -0
- package/cjs/background/KoniTypes.js +2 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/signing.js +6 -2
- package/cjs/core/logic-validation/recipientAddress.js +9 -1
- package/cjs/core/logic-validation/transfer.js +35 -29
- package/cjs/core/types.js +1 -0
- package/cjs/core/utils.js +12 -1
- package/cjs/defaults.js +1 -1
- package/cjs/koni/api/dotsama/crowdloan.js +1 -1
- package/cjs/koni/api/nft/index.js +9 -16
- package/cjs/koni/api/staking/index.js +3 -4
- package/cjs/koni/background/handlers/Extension.js +234 -96
- package/cjs/koni/background/handlers/State.js +15 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/cardano/consts.js +11 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/index.js +63 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/utils.js +74 -0
- package/cjs/services/balance-service/helpers/subscribe/index.js +21 -7
- package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +2 -2
- package/cjs/services/balance-service/index.js +4 -2
- package/cjs/services/balance-service/transfer/cardano-transfer.js +122 -0
- package/cjs/services/balance-service/transfer/token.js +4 -4
- package/cjs/services/chain-service/constants.js +8 -3
- package/cjs/services/chain-service/handler/CardanoApi.js +176 -0
- package/cjs/services/chain-service/handler/CardanoChainHandler.js +83 -0
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -2
- package/cjs/services/chain-service/handler/TonApi.js +2 -5
- package/cjs/services/chain-service/index.js +38 -7
- package/cjs/services/chain-service/utils/index.js +40 -11
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +2 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/mythos.js +337 -0
- package/cjs/services/earning-service/service.js +10 -12
- package/cjs/services/earning-service/utils/index.js +2 -0
- package/cjs/services/fee-service/service.js +19 -8
- package/cjs/services/history-service/index.js +4 -6
- package/cjs/services/inapp-notification-service/index.js +12 -4
- package/cjs/services/keyring-service/context/account-context.js +17 -2
- package/cjs/services/keyring-service/context/handlers/Derive.js +10 -7
- package/cjs/services/keyring-service/context/handlers/Migration.js +268 -0
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/cjs/services/keyring-service/context/handlers/Secret.js +1 -1
- package/cjs/services/keyring-service/utils.js +18 -0
- package/cjs/services/migration-service/scripts/databases/ClearMetadataDatabase.js +3 -23
- package/cjs/services/migration-service/scripts/databases/ClearMetadataForChains.js +40 -0
- package/cjs/services/migration-service/scripts/databases/ClearMetadataForMythos.js +15 -0
- package/cjs/services/migration-service/scripts/index.js +6 -2
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +172 -0
- package/cjs/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/cjs/services/request-service/index.js +20 -2
- package/cjs/services/setting-service/constants.js +10 -1
- package/cjs/services/storage-service/DatabaseService.js +6 -0
- package/cjs/services/storage-service/db-stores/InappNotification.js +6 -0
- package/cjs/services/storage-service/db-stores/Metadata.js +3 -0
- package/cjs/services/storage-service/db-stores/Migration.js +6 -1
- package/cjs/services/swap-service/handler/asset-hub/handler.js +0 -59
- package/cjs/services/swap-service/handler/chainflip-handler.js +33 -281
- package/cjs/services/swap-service/handler/hydradx-handler.js +23 -190
- package/cjs/services/swap-service/handler/simpleswap-handler.js +1 -222
- package/cjs/services/swap-service/handler/uniswap-handler.js +331 -0
- package/cjs/services/swap-service/index.js +31 -22
- package/cjs/services/swap-service/utils.js +21 -38
- package/cjs/services/transaction-service/helpers/index.js +6 -1
- package/cjs/services/transaction-service/index.js +278 -21
- package/cjs/services/transaction-service/utils.js +5 -1
- package/cjs/types/account/info/keyring.js +12 -1
- package/cjs/types/fee/cardano.js +1 -0
- package/cjs/types/swap/index.js +7 -2
- package/cjs/utils/account/analyze.js +2 -1
- package/cjs/utils/account/common.js +29 -20
- package/cjs/utils/account/derive/info/solo.js +9 -4
- package/cjs/utils/account/derive/validate.js +36 -2
- package/cjs/utils/account/transform.js +38 -13
- package/cjs/utils/fee/transfer.js +40 -7
- package/cjs/utils/index.js +2 -2
- package/cjs/utils/staticData/index.js +7 -2
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/signing.js +6 -2
- package/core/logic-validation/recipientAddress.js +11 -3
- package/core/logic-validation/transfer.js +9 -3
- package/core/substrate/xcm-parser.d.ts +1 -1
- package/core/types.d.ts +1 -0
- package/core/types.js +1 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +13 -3
- package/defaults.d.ts +1 -1
- package/defaults.js +1 -1
- package/koni/api/dotsama/crowdloan.js +3 -3
- package/koni/api/nft/index.js +10 -16
- package/koni/api/nft/story_odyssey_nft/index.d.ts +1 -1
- package/koni/api/staking/index.js +4 -5
- package/koni/background/handlers/Extension.d.ts +9 -0
- package/koni/background/handlers/Extension.js +144 -8
- package/koni/background/handlers/State.d.ts +5 -1
- package/koni/background/handlers/State.js +16 -1
- package/package.json +102 -25
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/cardano/consts.d.ts +1 -0
- package/services/balance-service/helpers/subscribe/cardano/consts.js +4 -0
- package/services/balance-service/helpers/subscribe/cardano/index.d.ts +2 -0
- package/services/balance-service/helpers/subscribe/cardano/index.js +57 -0
- package/services/balance-service/helpers/subscribe/cardano/types.d.ts +34 -0
- package/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.d.ts +15 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.js +62 -0
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/index.js +23 -9
- package/services/balance-service/helpers/subscribe/ton/utils.d.ts +1 -1
- package/services/balance-service/helpers/subscribe/ton/utils.js +1 -1
- package/services/balance-service/index.js +4 -2
- package/services/balance-service/transfer/cardano-transfer.d.ts +24 -0
- package/services/balance-service/transfer/cardano-transfer.js +114 -0
- package/services/balance-service/transfer/token.d.ts +1 -1
- package/services/balance-service/transfer/token.js +2 -2
- package/services/chain-service/constants.js +8 -3
- package/services/chain-service/handler/CardanoApi.d.ts +38 -0
- package/services/chain-service/handler/CardanoApi.js +167 -0
- package/services/chain-service/handler/CardanoChainHandler.d.ts +17 -0
- package/services/chain-service/handler/CardanoChainHandler.js +75 -0
- package/services/chain-service/handler/SubstrateChainHandler.js +3 -2
- package/services/chain-service/handler/TonApi.js +3 -6
- package/services/chain-service/handler/types.d.ts +1 -0
- package/services/chain-service/index.d.ts +4 -1
- package/services/chain-service/index.js +38 -7
- package/services/chain-service/types.d.ts +9 -1
- package/services/chain-service/utils/index.d.ts +4 -0
- package/services/chain-service/utils/index.js +32 -11
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +2 -1
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/services/earning-service/handlers/native-staking/mythos.d.ts +35 -0
- package/services/earning-service/handlers/native-staking/mythos.js +329 -0
- package/services/earning-service/service.js +12 -14
- package/services/earning-service/utils/index.js +2 -0
- package/services/fee-service/service.js +19 -8
- package/services/history-service/index.js +6 -8
- package/services/inapp-notification-service/index.d.ts +3 -4
- package/services/inapp-notification-service/index.js +14 -6
- package/services/keyring-service/context/account-context.d.ts +6 -2
- package/services/keyring-service/context/account-context.js +17 -2
- package/services/keyring-service/context/handlers/Derive.d.ts +1 -1
- package/services/keyring-service/context/handlers/Derive.js +10 -8
- package/services/keyring-service/context/handlers/Migration.d.ts +17 -0
- package/services/keyring-service/context/handlers/Migration.js +258 -0
- package/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/services/keyring-service/context/handlers/Secret.js +2 -2
- package/services/keyring-service/utils.d.ts +2 -0
- package/services/keyring-service/utils.js +11 -0
- package/services/migration-service/scripts/databases/ClearMetadataDatabase.d.ts +3 -3
- package/services/migration-service/scripts/databases/ClearMetadataDatabase.js +3 -23
- package/services/migration-service/scripts/databases/ClearMetadataForChains.d.ts +5 -0
- package/services/migration-service/scripts/databases/ClearMetadataForChains.js +32 -0
- package/services/migration-service/scripts/databases/ClearMetadataForMythos.d.ts +4 -0
- package/services/migration-service/scripts/databases/ClearMetadataForMythos.js +7 -0
- package/services/migration-service/scripts/index.d.ts +1 -0
- package/services/migration-service/scripts/index.js +4 -1
- package/services/request-service/handler/CardanoRequestHandler.d.ts +16 -0
- package/services/request-service/handler/CardanoRequestHandler.js +163 -0
- package/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/services/request-service/index.d.ts +6 -3
- package/services/request-service/index.js +19 -5
- package/services/setting-service/constants.d.ts +3 -0
- package/services/setting-service/constants.js +6 -0
- package/services/storage-service/DatabaseService.d.ts +2 -0
- package/services/storage-service/DatabaseService.js +6 -0
- package/services/storage-service/db-stores/InappNotification.d.ts +1 -0
- package/services/storage-service/db-stores/InappNotification.js +6 -0
- package/services/storage-service/db-stores/Metadata.d.ts +1 -0
- package/services/storage-service/db-stores/Metadata.js +3 -0
- package/services/storage-service/db-stores/Migration.d.ts +1 -0
- package/services/storage-service/db-stores/Migration.js +6 -1
- package/services/swap-service/handler/asset-hub/handler.d.ts +1 -4
- package/services/swap-service/handler/asset-hub/handler.js +2 -61
- package/services/swap-service/handler/base-handler.d.ts +1 -4
- package/services/swap-service/handler/chainflip-handler.d.ts +2 -9
- package/services/swap-service/handler/chainflip-handler.js +31 -280
- package/services/swap-service/handler/hydradx-handler.d.ts +1 -6
- package/services/swap-service/handler/hydradx-handler.js +13 -180
- package/services/swap-service/handler/simpleswap-handler.d.ts +1 -4
- package/services/swap-service/handler/simpleswap-handler.js +5 -226
- package/services/swap-service/handler/uniswap-handler.d.ts +41 -0
- package/services/swap-service/handler/uniswap-handler.js +323 -0
- package/services/swap-service/index.js +30 -22
- package/services/swap-service/utils.d.ts +1 -5
- package/services/swap-service/utils.js +7 -21
- package/services/transaction-service/helpers/index.d.ts +2 -0
- package/services/transaction-service/helpers/index.js +4 -0
- package/services/transaction-service/index.d.ts +8 -2
- package/services/transaction-service/index.js +263 -10
- package/services/transaction-service/types.d.ts +7 -0
- package/services/transaction-service/utils.js +7 -2
- package/types/account/info/keyring.d.ts +4 -1
- package/types/account/info/keyring.js +9 -0
- package/types/account/info/proxy.d.ts +2 -0
- package/types/balance/index.d.ts +4 -1
- package/types/fee/base.d.ts +1 -1
- package/types/fee/cardano.d.ts +18 -0
- package/types/fee/cardano.js +1 -0
- package/types/fee/subscription.d.ts +4 -3
- package/types/swap/index.d.ts +11 -3
- package/types/swap/index.js +7 -2
- package/utils/account/analyze.js +2 -1
- package/utils/account/common.d.ts +11 -6
- package/utils/account/common.js +28 -19
- package/utils/account/derive/info/solo.js +10 -5
- package/utils/account/derive/validate.d.ts +1 -0
- package/utils/account/derive/validate.js +34 -1
- package/utils/account/transform.d.ts +2 -1
- package/utils/account/transform.js +37 -13
- package/utils/fee/transfer.d.ts +2 -1
- package/utils/fee/transfer.js +44 -11
- package/utils/index.js +4 -4
- package/utils/staticData/index.d.ts +4 -1
- package/utils/staticData/index.js +5 -1
- package/utils/staticData/oldChainPrefix.json +1 -0
|
@@ -0,0 +1,337 @@
|
|
|
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 _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
9
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
|
+
var _utils = require("@subwallet/extension-base/koni/api/staking/bonding/utils");
|
|
11
|
+
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
12
|
+
var _basePara = _interopRequireDefault(require("@subwallet/extension-base/services/earning-service/handlers/native-staking/base-para"));
|
|
13
|
+
var _types = require("@subwallet/extension-base/types");
|
|
14
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
15
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
16
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
+
|
|
18
|
+
class MythosNativeStakingPoolHandler extends _basePara.default {
|
|
19
|
+
availableMethod = {
|
|
20
|
+
join: true,
|
|
21
|
+
defaultUnstake: true,
|
|
22
|
+
fastUnstake: false,
|
|
23
|
+
cancelUnstake: false,
|
|
24
|
+
withdraw: true,
|
|
25
|
+
claimReward: true
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/* Subscribe pool info */
|
|
29
|
+
|
|
30
|
+
async subscribePoolInfo(callback) {
|
|
31
|
+
let cancel = false;
|
|
32
|
+
const substrateApi = this.substrateApi;
|
|
33
|
+
const nativeToken = this.nativeToken;
|
|
34
|
+
const defaultCallback = async () => {
|
|
35
|
+
const data = {
|
|
36
|
+
...this.baseInfo,
|
|
37
|
+
type: this.type,
|
|
38
|
+
metadata: {
|
|
39
|
+
...this.metadataInfo,
|
|
40
|
+
description: this.getDescription()
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const poolInfo = await this.getPoolInfo();
|
|
44
|
+
!poolInfo && callback(data);
|
|
45
|
+
};
|
|
46
|
+
if (!this.isActive) {
|
|
47
|
+
await defaultCallback();
|
|
48
|
+
return () => {
|
|
49
|
+
cancel = true;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
await defaultCallback();
|
|
53
|
+
await substrateApi.isReady;
|
|
54
|
+
const unsub = await substrateApi.api.query.collatorStaking.currentSession(async _session => {
|
|
55
|
+
if (cancel) {
|
|
56
|
+
unsub();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const currentSession = _session.toString();
|
|
60
|
+
const maxStakers = substrateApi.api.consts.collatorStaking.maxStakers.toString();
|
|
61
|
+
const unstakeDelay = substrateApi.api.consts.collatorStaking.stakeUnlockDelay.toString();
|
|
62
|
+
const maxStakedCandidates = substrateApi.api.consts.collatorStaking.maxStakedCandidates.toString();
|
|
63
|
+
const sessionTime = _constants._STAKING_ERA_LENGTH_MAP[this.chain] || _constants._STAKING_ERA_LENGTH_MAP.default; // in hours
|
|
64
|
+
const blockTime = _constants._EXPECTED_BLOCK_TIME[this.chain];
|
|
65
|
+
const unstakingPeriod = parseInt(unstakeDelay) * blockTime / 60 / 60;
|
|
66
|
+
const _minStake = await substrateApi.api.query.collatorStaking.minStake();
|
|
67
|
+
const minStake = _minStake.toString();
|
|
68
|
+
const minStakeToHuman = (0, _utils2.formatNumber)(minStake, nativeToken.decimals || 0, _utils2.balanceFormatter);
|
|
69
|
+
const data = {
|
|
70
|
+
...this.baseInfo,
|
|
71
|
+
type: this.type,
|
|
72
|
+
metadata: {
|
|
73
|
+
...this.metadataInfo,
|
|
74
|
+
description: this.getDescription(minStakeToHuman)
|
|
75
|
+
},
|
|
76
|
+
statistic: {
|
|
77
|
+
assetEarning: [{
|
|
78
|
+
slug: this.nativeToken.slug
|
|
79
|
+
}],
|
|
80
|
+
maxCandidatePerFarmer: parseInt(maxStakedCandidates),
|
|
81
|
+
maxWithdrawalRequestPerFarmer: 3,
|
|
82
|
+
earningThreshold: {
|
|
83
|
+
join: minStake,
|
|
84
|
+
defaultUnstake: '0',
|
|
85
|
+
fastUnstake: '0'
|
|
86
|
+
},
|
|
87
|
+
era: parseInt(currentSession),
|
|
88
|
+
eraTime: sessionTime,
|
|
89
|
+
unstakingPeriod: unstakingPeriod,
|
|
90
|
+
totalApy: undefined
|
|
91
|
+
// tvl: totalStake.toString(),
|
|
92
|
+
// inflation
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
maxPoolMembers: parseInt(maxStakers)
|
|
96
|
+
};
|
|
97
|
+
callback(data);
|
|
98
|
+
});
|
|
99
|
+
return () => {
|
|
100
|
+
cancel = true;
|
|
101
|
+
unsub();
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Subscribe pool info */
|
|
106
|
+
|
|
107
|
+
/* Subscribe pool position */
|
|
108
|
+
|
|
109
|
+
async subscribePoolPosition(useAddresses, resultCallback) {
|
|
110
|
+
let cancel = false;
|
|
111
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
112
|
+
const defaultInfo = this.baseInfo;
|
|
113
|
+
const unsub = await substrateApi.api.query.collatorStaking.userStake.multi(useAddresses, async userStakes => {
|
|
114
|
+
if (cancel) {
|
|
115
|
+
unsub();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (userStakes) {
|
|
119
|
+
await Promise.all(userStakes.map(async (_userStake, i) => {
|
|
120
|
+
const userStake = _userStake.toPrimitive();
|
|
121
|
+
const owner = (0, _utils2.reformatAddress)(useAddresses[i], 42);
|
|
122
|
+
if (userStake) {
|
|
123
|
+
const nominatorMetadata = await this.parseCollatorMetadata(this.chainInfo, useAddresses[i], substrateApi, userStake);
|
|
124
|
+
resultCallback({
|
|
125
|
+
...defaultInfo,
|
|
126
|
+
...nominatorMetadata,
|
|
127
|
+
address: owner,
|
|
128
|
+
type: this.type
|
|
129
|
+
});
|
|
130
|
+
} else {
|
|
131
|
+
resultCallback({
|
|
132
|
+
...defaultInfo,
|
|
133
|
+
type: this.type,
|
|
134
|
+
address: owner,
|
|
135
|
+
balanceToken: this.nativeToken.slug,
|
|
136
|
+
totalStake: '0',
|
|
137
|
+
activeStake: '0',
|
|
138
|
+
unstakeBalance: '0',
|
|
139
|
+
status: _types.EarningStatus.NOT_STAKING,
|
|
140
|
+
isBondedBefore: false,
|
|
141
|
+
nominations: [],
|
|
142
|
+
unstakings: []
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
return () => {
|
|
149
|
+
cancel = true;
|
|
150
|
+
unsub();
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
async parseCollatorMetadata(chainInfo, stakerAddress, substrateApi, userStake) {
|
|
154
|
+
const nominationList = [];
|
|
155
|
+
const unstakingList = [];
|
|
156
|
+
let unstakingBalance = BigInt(0);
|
|
157
|
+
const {
|
|
158
|
+
candidates,
|
|
159
|
+
stake
|
|
160
|
+
} = userStake;
|
|
161
|
+
const [_minStake, _unstaking, _currentBlock, _currentTimestamp] = await Promise.all([substrateApi.api.query.collatorStaking.minStake(), substrateApi.api.query.collatorStaking.releaseQueues(stakerAddress), substrateApi.api.query.system.number(), substrateApi.api.query.timestamp.now()]);
|
|
162
|
+
const minStake = _minStake.toPrimitive();
|
|
163
|
+
const stakingStatus = candidates && !!candidates.length ? _types.EarningStatus.EARNING_REWARD : _types.EarningStatus.NOT_EARNING;
|
|
164
|
+
const isBondedBefore = candidates && !!candidates.length;
|
|
165
|
+
const unstakings = _unstaking.toPrimitive();
|
|
166
|
+
const currentBlock = _currentBlock.toPrimitive();
|
|
167
|
+
const currentTimestamp = _currentTimestamp.toPrimitive();
|
|
168
|
+
const blockDuration = _constants._EXPECTED_BLOCK_TIME[chainInfo.slug];
|
|
169
|
+
if (candidates.length) {
|
|
170
|
+
await Promise.all(candidates.map(async collatorAddress => {
|
|
171
|
+
const _stakeInfo = await substrateApi.api.query.collatorStaking.candidateStake(collatorAddress, stakerAddress);
|
|
172
|
+
const stakeInfo = _stakeInfo.toPrimitive();
|
|
173
|
+
const activeStake = stakeInfo.stake.toString();
|
|
174
|
+
const earningStatus = BigInt(activeStake) > BigInt(0) && BigInt(activeStake) >= BigInt(minStake) ? _types.EarningStatus.EARNING_REWARD : _types.EarningStatus.NOT_EARNING;
|
|
175
|
+
nominationList.push({
|
|
176
|
+
status: earningStatus,
|
|
177
|
+
chain: chainInfo.slug,
|
|
178
|
+
validatorAddress: collatorAddress,
|
|
179
|
+
activeStake,
|
|
180
|
+
validatorMinStake: minStake,
|
|
181
|
+
hasUnstaking: !!unstakings.length
|
|
182
|
+
});
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
if (unstakings.length) {
|
|
186
|
+
unstakings.forEach(unstaking => {
|
|
187
|
+
const releaseBlock = unstaking.block;
|
|
188
|
+
const unstakeAmount = unstaking.amount;
|
|
189
|
+
const isClaimable = currentBlock >= releaseBlock;
|
|
190
|
+
const targetTimestampMs = (releaseBlock - currentBlock) * blockDuration * 1000 + currentTimestamp;
|
|
191
|
+
unstakingBalance = unstakingBalance + BigInt(unstakeAmount);
|
|
192
|
+
unstakingList.push({
|
|
193
|
+
chain: chainInfo.slug,
|
|
194
|
+
status: isClaimable ? _types.UnstakingStatus.CLAIMABLE : _types.UnstakingStatus.UNLOCKING,
|
|
195
|
+
claimable: unstakeAmount,
|
|
196
|
+
targetTimestampMs
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
status: stakingStatus,
|
|
202
|
+
balanceToken: this.nativeToken.slug,
|
|
203
|
+
totalStake: (BigInt(stake) + unstakingBalance).toString(),
|
|
204
|
+
activeStake: stake,
|
|
205
|
+
unstakeBalance: unstakingBalance.toString() || '0',
|
|
206
|
+
isBondedBefore: isBondedBefore,
|
|
207
|
+
nominations: nominationList,
|
|
208
|
+
unstakings: unstakingList
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* Subscribe pool position */
|
|
213
|
+
|
|
214
|
+
/* Get pool targets */
|
|
215
|
+
|
|
216
|
+
async getPoolTargets() {
|
|
217
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
218
|
+
const [_allCollators, _minStake, _commission] = await Promise.all([substrateApi.api.query.collatorStaking.candidates.entries(), substrateApi.api.query.collatorStaking.minStake(), substrateApi.api.query.collatorStaking.collatorRewardPercentage()]);
|
|
219
|
+
const maxStakersPerCollator = substrateApi.api.consts.collatorStaking.maxStakers.toPrimitive();
|
|
220
|
+
return _allCollators.map(_collator => {
|
|
221
|
+
const _collatorAddress = _collator[0].toHuman();
|
|
222
|
+
const collatorAddress = _collatorAddress[0];
|
|
223
|
+
const collatorInfo = _collator[1].toPrimitive();
|
|
224
|
+
const bnTotalStake = BigInt(collatorInfo.stake);
|
|
225
|
+
const numOfStakers = parseInt(collatorInfo.stakers);
|
|
226
|
+
const isCrowded = numOfStakers >= maxStakersPerCollator;
|
|
227
|
+
return {
|
|
228
|
+
address: collatorAddress,
|
|
229
|
+
chain: this.chain,
|
|
230
|
+
totalStake: bnTotalStake.toString(),
|
|
231
|
+
ownStake: '0',
|
|
232
|
+
otherStake: bnTotalStake.toString(),
|
|
233
|
+
minBond: _minStake.toPrimitive(),
|
|
234
|
+
nominatorCount: numOfStakers,
|
|
235
|
+
commission: (0, _utils.getCommission)(_commission.toString()),
|
|
236
|
+
blocked: false,
|
|
237
|
+
isVerified: false,
|
|
238
|
+
isCrowded
|
|
239
|
+
};
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* Get pool targets */
|
|
244
|
+
|
|
245
|
+
/* Join pool action */
|
|
246
|
+
|
|
247
|
+
async createJoinExtrinsic(data, positionInfo) {
|
|
248
|
+
var _substrateApi$api$cal, _substrateApi$api$cal2;
|
|
249
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
250
|
+
const {
|
|
251
|
+
address,
|
|
252
|
+
amount,
|
|
253
|
+
selectedValidators
|
|
254
|
+
} = data;
|
|
255
|
+
const selectedValidatorInfo = selectedValidators[0];
|
|
256
|
+
const _hasReward = await ((_substrateApi$api$cal = substrateApi.api.call) === null || _substrateApi$api$cal === void 0 ? void 0 : (_substrateApi$api$cal2 = _substrateApi$api$cal.collatorStakingApi) === null || _substrateApi$api$cal2 === void 0 ? void 0 : _substrateApi$api$cal2.shouldClaim(address));
|
|
257
|
+
const hasReward = _hasReward === null || _hasReward === void 0 ? void 0 : _hasReward.toPrimitive();
|
|
258
|
+
const extrinsicList = [];
|
|
259
|
+
if (positionInfo !== null && positionInfo !== void 0 && positionInfo.isBondedBefore && hasReward) {
|
|
260
|
+
extrinsicList.push(substrateApi.api.tx.collatorStaking.claimRewards());
|
|
261
|
+
}
|
|
262
|
+
extrinsicList.push(...[substrateApi.api.tx.collatorStaking.lock(amount), substrateApi.api.tx.collatorStaking.stake([{
|
|
263
|
+
candidate: selectedValidatorInfo.address,
|
|
264
|
+
stake: amount
|
|
265
|
+
}])]);
|
|
266
|
+
return [substrateApi.api.tx.utility.batchAll(extrinsicList), {
|
|
267
|
+
slug: this.nativeToken.slug,
|
|
268
|
+
amount: '0'
|
|
269
|
+
}];
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/* Join pool action */
|
|
273
|
+
|
|
274
|
+
/* Leave pool action */
|
|
275
|
+
|
|
276
|
+
async handleYieldUnstake(amount, address, selectedTarget) {
|
|
277
|
+
var _substrateApi$api$cal3, _substrateApi$api$cal4;
|
|
278
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
279
|
+
const _hasReward = await ((_substrateApi$api$cal3 = substrateApi.api.call) === null || _substrateApi$api$cal3 === void 0 ? void 0 : (_substrateApi$api$cal4 = _substrateApi$api$cal3.collatorStakingApi) === null || _substrateApi$api$cal4 === void 0 ? void 0 : _substrateApi$api$cal4.shouldClaim(address));
|
|
280
|
+
const hasReward = _hasReward === null || _hasReward === void 0 ? void 0 : _hasReward.toPrimitive();
|
|
281
|
+
const extrinsicList = [];
|
|
282
|
+
if (hasReward) {
|
|
283
|
+
extrinsicList.push(substrateApi.api.tx.collatorStaking.claimRewards());
|
|
284
|
+
}
|
|
285
|
+
extrinsicList.push(...[substrateApi.api.tx.collatorStaking.unstakeFrom(selectedTarget), substrateApi.api.tx.collatorStaking.unlock(null) // ignore amount to unlock all
|
|
286
|
+
]);
|
|
287
|
+
|
|
288
|
+
return [_KoniTypes.ExtrinsicType.STAKING_UNBOND, substrateApi.api.tx.utility.batchAll(extrinsicList)];
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/* Leave pool action */
|
|
292
|
+
|
|
293
|
+
/* Get pool reward */
|
|
294
|
+
async getPoolReward(useAddresses, callback) {
|
|
295
|
+
let cancel = false;
|
|
296
|
+
const substrateApi = this.substrateApi;
|
|
297
|
+
await substrateApi.isReady;
|
|
298
|
+
if (substrateApi.api.call.collatorStakingApi) {
|
|
299
|
+
await Promise.all(useAddresses.map(async address => {
|
|
300
|
+
if (!cancel) {
|
|
301
|
+
const _unclaimedReward = await substrateApi.api.call.collatorStakingApi.totalRewards(address);
|
|
302
|
+
const earningRewardItem = {
|
|
303
|
+
...this.baseInfo,
|
|
304
|
+
address: address,
|
|
305
|
+
type: this.type,
|
|
306
|
+
unclaimedReward: (_unclaimedReward === null || _unclaimedReward === void 0 ? void 0 : _unclaimedReward.toString()) || '0',
|
|
307
|
+
state: _KoniTypes.APIItemState.READY
|
|
308
|
+
};
|
|
309
|
+
if (_unclaimedReward.toString() !== '0') {
|
|
310
|
+
await this.createClaimNotification(earningRewardItem, this.nativeToken);
|
|
311
|
+
}
|
|
312
|
+
callback(earningRewardItem);
|
|
313
|
+
}
|
|
314
|
+
}));
|
|
315
|
+
}
|
|
316
|
+
return () => {
|
|
317
|
+
cancel = false;
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
/* Get pool reward */
|
|
321
|
+
|
|
322
|
+
/* Other action */
|
|
323
|
+
|
|
324
|
+
async handleYieldCancelUnstake() {
|
|
325
|
+
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
|
|
326
|
+
}
|
|
327
|
+
async handleYieldWithdraw(address, unstakingInfo) {
|
|
328
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
329
|
+
return substrateApi.api.tx.collatorStaking.release();
|
|
330
|
+
}
|
|
331
|
+
async handleYieldClaimReward(address, bondReward) {
|
|
332
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
333
|
+
return substrateApi.api.tx.collatorStaking.claimRewards();
|
|
334
|
+
}
|
|
335
|
+
/* Other action */
|
|
336
|
+
}
|
|
337
|
+
exports.default = MythosNativeStakingPoolHandler;
|
|
@@ -12,6 +12,7 @@ var _types = require("@subwallet/extension-base/services/base/types");
|
|
|
12
12
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
13
|
var _constants2 = require("@subwallet/extension-base/services/earning-service/constants");
|
|
14
14
|
var _base = _interopRequireDefault(require("@subwallet/extension-base/services/earning-service/handlers/liquid-staking/base"));
|
|
15
|
+
var _mythos = _interopRequireDefault(require("@subwallet/extension-base/services/earning-service/handlers/native-staking/mythos"));
|
|
15
16
|
var _types2 = require("@subwallet/extension-base/types");
|
|
16
17
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
17
18
|
var _fetchStaticCache = require("@subwallet/extension-base/utils/fetchStaticCache");
|
|
@@ -75,6 +76,9 @@ class EarningService {
|
|
|
75
76
|
if (_constants2._STAKING_CHAIN_GROUP.bittensor.includes(chain)) {
|
|
76
77
|
handlers.push(new _handlers.TaoNativeStakingPoolHandler(this.state, chain));
|
|
77
78
|
}
|
|
79
|
+
if (_constants2._STAKING_CHAIN_GROUP.mythos.includes(chain)) {
|
|
80
|
+
handlers.push(new _mythos.default(this.state, chain));
|
|
81
|
+
}
|
|
78
82
|
if (_constants2._STAKING_CHAIN_GROUP.nominationPool.includes(chain)) {
|
|
79
83
|
handlers.push(new _handlers.NominationPoolHandler(this.state, chain));
|
|
80
84
|
}
|
|
@@ -383,10 +387,8 @@ class EarningService {
|
|
|
383
387
|
async subscribePoolPositions(addresses, callback) {
|
|
384
388
|
let cancel = false;
|
|
385
389
|
await this.eventService.waitChainReady;
|
|
386
|
-
const
|
|
387
|
-
|
|
388
|
-
substrate: substrateAddresses
|
|
389
|
-
} = (0, _utils2.categoryAddresses)(addresses);
|
|
390
|
+
const evmAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.EVM]);
|
|
391
|
+
const substrateAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.SUBSTRATE]);
|
|
390
392
|
const activeChains = this.state.activeChainSlugs;
|
|
391
393
|
const unsubList = [];
|
|
392
394
|
for (const handler of Object.values(this.handlers)) {
|
|
@@ -532,10 +534,8 @@ class EarningService {
|
|
|
532
534
|
async getPoolReward(addresses, callback) {
|
|
533
535
|
let cancel = false;
|
|
534
536
|
await this.eventService.waitChainReady;
|
|
535
|
-
const
|
|
536
|
-
|
|
537
|
-
substrate: substrateAddresses
|
|
538
|
-
} = (0, _utils2.categoryAddresses)(addresses);
|
|
537
|
+
const evmAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.EVM]);
|
|
538
|
+
const substrateAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.SUBSTRATE]);
|
|
539
539
|
const activeChains = this.state.activeChainSlugs;
|
|
540
540
|
const unsubList = [];
|
|
541
541
|
for (const handler of Object.values(this.handlers)) {
|
|
@@ -590,10 +590,8 @@ class EarningService {
|
|
|
590
590
|
async fetchPoolRewardHistory(addresses, callback) {
|
|
591
591
|
let cancel = false;
|
|
592
592
|
await this.eventService.waitChainReady;
|
|
593
|
-
const
|
|
594
|
-
|
|
595
|
-
substrate: substrateAddresses
|
|
596
|
-
} = (0, _utils2.categoryAddresses)(addresses);
|
|
593
|
+
const evmAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.EVM]);
|
|
594
|
+
const substrateAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.SUBSTRATE]);
|
|
597
595
|
const activeChains = this.state.activeChainSlugs;
|
|
598
596
|
const unsubList = [];
|
|
599
597
|
for (const handler of Object.values(this.handlers)) {
|
|
@@ -118,6 +118,8 @@ function isActionFromValidator(stakingType, chain) {
|
|
|
118
118
|
return true;
|
|
119
119
|
} else if (_constants._STAKING_CHAIN_GROUP.bittensor.includes(chain)) {
|
|
120
120
|
return true;
|
|
121
|
+
} else if (_constants._STAKING_CHAIN_GROUP.mythos.includes(chain)) {
|
|
122
|
+
return true;
|
|
121
123
|
}
|
|
122
124
|
return false;
|
|
123
125
|
}
|
|
@@ -15,7 +15,8 @@ class FeeService {
|
|
|
15
15
|
chainFeeSubscriptionMap = {
|
|
16
16
|
evm: {},
|
|
17
17
|
substrate: {},
|
|
18
|
-
ton: {}
|
|
18
|
+
ton: {},
|
|
19
|
+
cardano: {}
|
|
19
20
|
};
|
|
20
21
|
constructor(state) {
|
|
21
22
|
this.state = state;
|
|
@@ -109,21 +110,31 @@ class FeeService {
|
|
|
109
110
|
const api = this.state.getEvmApi(chain);
|
|
110
111
|
|
|
111
112
|
// TODO: Handle case type === evm and not have api
|
|
112
|
-
if (type === 'evm'
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
if (type === 'evm') {
|
|
114
|
+
if (api) {
|
|
115
|
+
(0, _utils2.calculateGasFeeParams)(api, chain).then(info => {
|
|
116
|
+
observer.next(info);
|
|
117
|
+
}).catch(e => {
|
|
118
|
+
console.warn(`Cannot get fee param for ${chain}`, e);
|
|
119
|
+
observer.next({
|
|
120
|
+
type: 'evm',
|
|
121
|
+
gasPrice: '0',
|
|
122
|
+
baseGasFee: undefined,
|
|
123
|
+
options: undefined
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
} else {
|
|
127
|
+
console.warn(`Cannot get fee param for ${chain}`, 'Cannot get api');
|
|
117
128
|
observer.next({
|
|
118
129
|
type: 'evm',
|
|
119
130
|
gasPrice: '0',
|
|
120
131
|
baseGasFee: undefined,
|
|
121
132
|
options: undefined
|
|
122
133
|
});
|
|
123
|
-
}
|
|
134
|
+
}
|
|
124
135
|
} else {
|
|
125
136
|
observer.next({
|
|
126
|
-
type
|
|
137
|
+
type,
|
|
127
138
|
busyNetwork: false,
|
|
128
139
|
options: {
|
|
129
140
|
slow: {
|
|
@@ -151,19 +151,17 @@ class HistoryService {
|
|
|
151
151
|
}
|
|
152
152
|
subscribeHistories(chain, proxyId, cb) {
|
|
153
153
|
const addresses = this.keyringService.context.getDecodedAddresses(proxyId, false);
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
substrate
|
|
157
|
-
} = (0, _utils2.categoryAddresses)(addresses);
|
|
154
|
+
const evmAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.EVM]);
|
|
155
|
+
const substrateAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.SUBSTRATE]);
|
|
158
156
|
const subscription = this.historySubject.subscribe(items => {
|
|
159
157
|
cb(items.filter(filterHistoryItemByAddressAndChain(chain, addresses)));
|
|
160
158
|
});
|
|
161
159
|
const chainInfo = this.chainService.getChainInfoByKey(chain);
|
|
162
160
|
if ((0, _utils._isChainSubstrateCompatible)(chainInfo)) {
|
|
163
161
|
if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
|
|
164
|
-
this.fetchSubscanTransactionHistory(chain,
|
|
162
|
+
this.fetchSubscanTransactionHistory(chain, evmAddresses);
|
|
165
163
|
} else {
|
|
166
|
-
this.fetchSubscanTransactionHistory(chain,
|
|
164
|
+
this.fetchSubscanTransactionHistory(chain, substrateAddresses);
|
|
167
165
|
}
|
|
168
166
|
}
|
|
169
167
|
return {
|
|
@@ -177,12 +177,17 @@ class InappNotificationService {
|
|
|
177
177
|
}
|
|
178
178
|
getCategorizedAddresses() {
|
|
179
179
|
const addresses = this.keyringService.context.getAllAddresses();
|
|
180
|
-
|
|
180
|
+
const evmAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.EVM]);
|
|
181
|
+
const substrateAddresses = (0, _utils2.getAddressesByChainType)(addresses, [_KoniTypes.ChainType.SUBSTRATE]);
|
|
182
|
+
return {
|
|
183
|
+
evmAddresses: evmAddresses,
|
|
184
|
+
substrateAddresses: substrateAddresses
|
|
185
|
+
};
|
|
181
186
|
}
|
|
182
187
|
createAvailBridgeClaimNotification() {
|
|
183
188
|
const {
|
|
184
|
-
|
|
185
|
-
|
|
189
|
+
evmAddresses,
|
|
190
|
+
substrateAddresses
|
|
186
191
|
} = this.getCategorizedAddresses();
|
|
187
192
|
const chainAssets = this.chainService.getAssetRegistry();
|
|
188
193
|
let ASSET_TYPE;
|
|
@@ -269,7 +274,7 @@ class InappNotificationService {
|
|
|
269
274
|
// Polygon Claimable Handle
|
|
270
275
|
async createPolygonClaimableTransactions() {
|
|
271
276
|
const {
|
|
272
|
-
|
|
277
|
+
evmAddresses
|
|
273
278
|
} = this.getCategorizedAddresses();
|
|
274
279
|
const etherChains = [_chainList.COMMON_ASSETS.ETH, _chainList.COMMON_ASSETS.ETH_SEPOLIA];
|
|
275
280
|
const polygonAssets = Object.values(this.chainService.getAssetRegistry()).filter(asset => etherChains.includes(asset.slug));
|
|
@@ -440,5 +445,8 @@ class InappNotificationService {
|
|
|
440
445
|
removeAccountNotifications(proxyId) {
|
|
441
446
|
this.dbService.removeAccountNotifications(proxyId).catch(console.error);
|
|
442
447
|
}
|
|
448
|
+
migrateNotificationProxyId(proxyIds, newProxyId, newName) {
|
|
449
|
+
this.dbService.updateNotificationProxyId(proxyIds, newProxyId, newName);
|
|
450
|
+
}
|
|
443
451
|
}
|
|
444
452
|
exports.InappNotificationService = InappNotificationService;
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.AccountContext = void 0;
|
|
7
|
+
var _Migration = require("@subwallet/extension-base/services/keyring-service/context/handlers/Migration");
|
|
7
8
|
var _handlers = require("./handlers");
|
|
8
9
|
var _state = require("./state");
|
|
9
10
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -21,6 +22,7 @@ class AccountContext {
|
|
|
21
22
|
this.ledgerHandler = new _handlers.AccountLedgerHandler(this.parentService, this.state);
|
|
22
23
|
this.modifyHandler = new _handlers.AccountModifyHandler(this.parentService, this.state);
|
|
23
24
|
this.secretHandler = new _handlers.AccountSecretHandler(this.parentService, this.state);
|
|
25
|
+
this.migrationHandler = new _Migration.AccountMigrationHandler(this.parentService, this.state);
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
// TODO: Merge to value
|
|
@@ -230,8 +232,8 @@ class AccountContext {
|
|
|
230
232
|
}
|
|
231
233
|
|
|
232
234
|
/* Derive account proxy */
|
|
233
|
-
derivationAccountProxyCreate(request) {
|
|
234
|
-
return this.deriveHandler.derivationAccountProxyCreate(request);
|
|
235
|
+
derivationAccountProxyCreate(request, isMigration) {
|
|
236
|
+
return this.deriveHandler.derivationAccountProxyCreate(request, isMigration);
|
|
235
237
|
}
|
|
236
238
|
|
|
237
239
|
/* Derive */
|
|
@@ -247,6 +249,19 @@ class AccountContext {
|
|
|
247
249
|
|
|
248
250
|
/* Inject */
|
|
249
251
|
|
|
252
|
+
/* Migration */
|
|
253
|
+
async migrateUnifiedAndFetchEligibleSoloAccounts(request, setMigratingModeFn) {
|
|
254
|
+
return await this.migrationHandler.migrateUnifiedAndFetchEligibleSoloAccounts(request, setMigratingModeFn);
|
|
255
|
+
}
|
|
256
|
+
migrateSoloAccount(request) {
|
|
257
|
+
return this.migrationHandler.migrateSoloToUnifiedAccount(request);
|
|
258
|
+
}
|
|
259
|
+
pingSession(request) {
|
|
260
|
+
return this.migrationHandler.pingSession(request);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* Migration */
|
|
264
|
+
|
|
250
265
|
/* Others */
|
|
251
266
|
|
|
252
267
|
removeNoneHardwareGenesisHash() {
|
|
@@ -15,7 +15,7 @@ var _Base = require("./Base");
|
|
|
15
15
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
|
|
18
|
-
const validDeriveKeypairTypes = [..._types2.SubstrateKeypairTypes, ..._types2.EthereumKeypairTypes, 'ton'];
|
|
18
|
+
const validDeriveKeypairTypes = [..._types2.SubstrateKeypairTypes, ..._types2.EthereumKeypairTypes, 'ton', 'cardano'];
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @class AccountDeriveHandler
|
|
@@ -220,6 +220,7 @@ class AccountDeriveHandler extends _Base.AccountBaseHandler {
|
|
|
220
220
|
* Derive account proxy
|
|
221
221
|
* */
|
|
222
222
|
derivationAccountProxyCreate(request) {
|
|
223
|
+
let isMigration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
223
224
|
const {
|
|
224
225
|
name,
|
|
225
226
|
proxyId: deriveId,
|
|
@@ -230,7 +231,7 @@ class AccountDeriveHandler extends _Base.AccountBaseHandler {
|
|
|
230
231
|
const rootId = this.state.value.accounts[parentProxyId].parentId || parentProxyId;
|
|
231
232
|
const rootProxyId = this.state.belongUnifiedAccount(rootId) || rootId;
|
|
232
233
|
const nameExists = this.state.checkNameExists(name);
|
|
233
|
-
if (nameExists) {
|
|
234
|
+
if (nameExists && !isMigration) {
|
|
234
235
|
throw new _types.SWCommonAccountError(_types.CommonAccountErrorType.ACCOUNT_NAME_EXISTED);
|
|
235
236
|
}
|
|
236
237
|
const validateRs = this.validateDerivePath({
|
|
@@ -354,11 +355,13 @@ class AccountDeriveHandler extends _Base.AccountBaseHandler {
|
|
|
354
355
|
}
|
|
355
356
|
const addresses = pairs.map(pair => pair.address);
|
|
356
357
|
const exists = this.state.checkAddressExists(addresses);
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
358
|
+
if (!isMigration) {
|
|
359
|
+
(0, _util.assert)(!exists, (0, _i18next.t)('Account already exists under the name "{{name}}"', {
|
|
360
|
+
replace: {
|
|
361
|
+
name: (exists === null || exists === void 0 ? void 0 : exists.name) || (exists === null || exists === void 0 ? void 0 : exists.address) || ''
|
|
362
|
+
}
|
|
363
|
+
}));
|
|
364
|
+
}
|
|
362
365
|
childAccountProxy && this.state.upsertAccountProxyByKey(childAccountProxy);
|
|
363
366
|
this.state.upsertModifyPairs(modifyPairs);
|
|
364
367
|
for (const childPair of pairs) {
|