@subwallet/extension-base 1.0.2-1b → 1.0.2-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 +34 -16
- package/background/KoniTypes.js +7 -6
- package/background/errors/TransactionError.js +1 -21
- package/cjs/background/KoniTypes.js +7 -6
- package/cjs/background/errors/TransactionError.js +0 -20
- package/cjs/constants/index.js +26 -8
- package/cjs/koni/api/dotsama/balance.js +224 -49
- package/cjs/koni/api/dotsama/transfer.js +29 -30
- package/cjs/koni/api/nft/acala_nft/index.js +1 -4
- package/cjs/koni/api/nft/bit.country/index.js +1 -4
- package/cjs/koni/api/nft/evm_nft/index.js +3 -7
- package/cjs/koni/api/nft/index.js +6 -3
- package/cjs/koni/api/nft/karura_nft/index.js +1 -4
- package/cjs/koni/api/nft/rmrk_nft/index.js +1 -8
- package/cjs/koni/api/nft/statemine_nft/index.js +1 -4
- package/cjs/koni/api/nft/unique_nft/index.js +1 -6
- package/cjs/koni/api/nft/wasm_nft/index.js +111 -169
- package/cjs/koni/api/nft/wasm_nft/utils.js +7 -11
- package/cjs/koni/api/staking/bonding/amplitude.js +9 -13
- package/cjs/koni/api/staking/bonding/astar.js +13 -15
- package/cjs/koni/api/staking/bonding/index.js +10 -22
- package/cjs/koni/api/staking/bonding/paraChain.js +2 -85
- package/cjs/koni/api/staking/bonding/relayChain.js +16 -119
- package/cjs/koni/api/staking/bonding/utils.js +8 -27
- package/cjs/koni/api/tokens/wasm/index.js +4 -5
- package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
- package/cjs/koni/api/xcm/utils.js +13 -18
- package/cjs/koni/api/xcm/xTokens.js +1 -1
- package/cjs/koni/api/xcm/xcmPallet.js +6 -9
- package/cjs/koni/background/cron.js +47 -150
- package/cjs/koni/background/handlers/Extension.js +64 -106
- package/cjs/koni/background/handlers/State.js +21 -19
- package/cjs/koni/background/handlers/Tabs.js +1 -8
- package/cjs/koni/background/subscription.js +29 -32
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +8 -13
- package/cjs/services/chain-service/handler/light-client/index.js +0 -2
- package/cjs/services/chain-service/index.js +7 -6
- package/cjs/services/event-service/index.js +1 -5
- package/cjs/services/event-service/types.js +1 -11
- package/cjs/services/history-service/index.js +10 -16
- package/cjs/services/history-service/subsquid-multi-chain-history.js +9 -12
- package/cjs/services/price-service/coingecko.js +1 -0
- package/cjs/services/price-service/index.js +3 -2
- package/cjs/services/request-service/handler/AuthRequestHandler.js +2 -6
- package/cjs/services/storage-service/DatabaseService.js +33 -52
- package/cjs/services/storage-service/db-stores/Nft.js +17 -4
- package/cjs/services/transaction-service/event-parser/index.js +48 -20
- package/cjs/services/transaction-service/index.js +14 -23
- package/cjs/utils/index.js +14 -7
- package/constants/index.d.ts +13 -7
- package/constants/index.js +13 -7
- package/koni/api/dotsama/balance.d.ts +1 -0
- package/koni/api/dotsama/balance.js +197 -22
- package/koni/api/dotsama/transfer.js +4 -5
- package/koni/api/nft/acala_nft/index.js +1 -3
- package/koni/api/nft/bit.country/index.js +1 -3
- package/koni/api/nft/evm_nft/index.js +3 -6
- package/koni/api/nft/index.d.ts +2 -1
- package/koni/api/nft/index.js +6 -3
- package/koni/api/nft/karura_nft/index.js +1 -3
- package/koni/api/nft/nft.d.ts +0 -1
- package/koni/api/nft/rmrk_nft/index.js +1 -8
- package/koni/api/nft/statemine_nft/index.js +1 -3
- package/koni/api/nft/unique_nft/index.js +1 -5
- package/koni/api/nft/wasm_nft/index.d.ts +2 -0
- package/koni/api/nft/wasm_nft/index.js +109 -167
- package/koni/api/nft/wasm_nft/utils.d.ts +5 -7
- package/koni/api/nft/wasm_nft/utils.js +5 -7
- package/koni/api/staking/bonding/amplitude.d.ts +1 -0
- package/koni/api/staking/bonding/amplitude.js +10 -15
- package/koni/api/staking/bonding/astar.js +6 -8
- package/koni/api/staking/bonding/index.d.ts +1 -4
- package/koni/api/staking/bonding/index.js +13 -23
- package/koni/api/staking/bonding/paraChain.d.ts +0 -3
- package/koni/api/staking/bonding/paraChain.js +5 -86
- package/koni/api/staking/bonding/relayChain.d.ts +1 -5
- package/koni/api/staking/bonding/relayChain.js +18 -118
- package/koni/api/staking/bonding/utils.d.ts +2 -3
- package/koni/api/staking/bonding/utils.js +9 -27
- package/koni/api/tokens/wasm/index.js +4 -5
- package/koni/api/xcm/polkadotXcm.js +2 -2
- package/koni/api/xcm/utils.d.ts +6 -5
- package/koni/api/xcm/utils.js +10 -15
- package/koni/api/xcm/xTokens.js +2 -2
- package/koni/api/xcm/xcmPallet.js +9 -10
- package/koni/background/cron.d.ts +1 -6
- package/koni/background/cron.js +48 -151
- package/koni/background/handlers/Extension.d.ts +2 -2
- package/koni/background/handlers/Extension.js +67 -108
- package/koni/background/handlers/State.d.ts +6 -5
- package/koni/background/handlers/State.js +21 -19
- package/koni/background/handlers/Tabs.js +1 -8
- package/koni/background/subscription.js +30 -31
- package/package.json +8 -13
- package/packageInfo.js +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +9 -14
- package/services/chain-service/handler/light-client/index.d.ts +1 -17
- package/services/chain-service/handler/light-client/index.js +1 -1
- package/services/chain-service/helper/psp22_abi.json +881 -1041
- package/services/chain-service/helper/psp34_abi.json +1808 -2964
- package/services/chain-service/index.js +7 -6
- package/services/event-service/index.js +1 -5
- package/services/event-service/types.d.ts +9 -5
- package/services/event-service/types.js +1 -4
- package/services/history-service/index.d.ts +1 -1
- package/services/history-service/index.js +10 -16
- package/services/history-service/subsquid-multi-chain-history.js +11 -15
- package/services/price-service/coingecko.js +1 -0
- package/services/price-service/index.js +3 -2
- package/services/request-service/handler/AuthRequestHandler.js +2 -6
- package/services/storage-service/DatabaseService.d.ts +0 -1
- package/services/storage-service/DatabaseService.js +33 -52
- package/services/storage-service/db-stores/Nft.d.ts +2 -1
- package/services/storage-service/db-stores/Nft.js +16 -4
- package/services/transaction-service/event-parser/index.js +49 -21
- package/services/transaction-service/index.js +14 -23
- package/utils/index.d.ts +1 -1
- package/utils/index.js +12 -6
- package/cjs/koni/api/tokens/wasm/utils.js +0 -63
- package/koni/api/tokens/wasm/utils.d.ts +0 -6
- package/koni/api/tokens/wasm/utils.js +0 -54
|
@@ -12,9 +12,8 @@ exports.getAstarStakingMetadata = getAstarStakingMetadata;
|
|
|
12
12
|
exports.getAstarUnbondingExtrinsic = getAstarUnbondingExtrinsic;
|
|
13
13
|
exports.getAstarWithdrawalExtrinsic = getAstarWithdrawalExtrinsic;
|
|
14
14
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
15
|
-
var _utils = require("@subwallet/extension-base/koni/api/staking/bonding/utils");
|
|
16
15
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
17
|
-
var
|
|
16
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
18
17
|
var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
19
18
|
var _util = require("@polkadot/util");
|
|
20
19
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
@@ -74,7 +73,6 @@ async function getAstarNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
74
73
|
const [_ledger, _era, _stakerInfo] = await Promise.all([chainApi.api.query.dappsStaking.ledger(address), chainApi.api.query.dappsStaking.currentEra(), chainApi.api.query.dappsStaking.generalStakerInfo.entries(address)]);
|
|
75
74
|
const ledger = _ledger.toPrimitive();
|
|
76
75
|
const currentEra = _era.toString();
|
|
77
|
-
const minDelegatorStake = chainApi.api.consts.dappsStaking.minimumStakingAmount.toString();
|
|
78
76
|
let bnTotalActiveStake = _util.BN_ZERO;
|
|
79
77
|
if (_stakerInfo.length > 0) {
|
|
80
78
|
const dAppInfoMap = {};
|
|
@@ -91,13 +89,13 @@ async function getAstarNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
91
89
|
const currentStake = stakeList.slice(-1)[0].staked.toString() || '0';
|
|
92
90
|
const bnCurrentStake = new _util.BN(currentStake);
|
|
93
91
|
if (bnCurrentStake.gt(_util.BN_ZERO)) {
|
|
94
|
-
const dappStakingStatus = bnCurrentStake.gt(_util.BN_ZERO) && bnCurrentStake.gte(new _util.BN(minDelegatorStake)) ? _KoniTypes.StakingStatus.EARNING_REWARD : _KoniTypes.StakingStatus.NOT_EARNING;
|
|
95
92
|
bnTotalActiveStake = bnTotalActiveStake.add(bnCurrentStake);
|
|
96
93
|
const dappInfo = dAppInfoMap[dappAddress];
|
|
97
94
|
nominationList.push({
|
|
98
|
-
status:
|
|
95
|
+
status: _KoniTypes.StakingStatus.NOT_EARNING,
|
|
96
|
+
// TODO
|
|
99
97
|
chain,
|
|
100
|
-
validatorAddress: dappAddress
|
|
98
|
+
validatorAddress: dappAddress,
|
|
101
99
|
activeStake: currentStake,
|
|
102
100
|
validatorMinStake: '0',
|
|
103
101
|
validatorIdentity: dappInfo === null || dappInfo === void 0 ? void 0 : dappInfo.name,
|
|
@@ -124,7 +122,6 @@ async function getAstarNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
124
122
|
if (nominationList.length === 0 && unstakingList.length === 0) {
|
|
125
123
|
return;
|
|
126
124
|
}
|
|
127
|
-
const stakingStatus = (0, _utils.getStakingStatusByNominations)(bnTotalActiveStake, nominationList);
|
|
128
125
|
return {
|
|
129
126
|
chain,
|
|
130
127
|
type: _KoniTypes.StakingType.NOMINATED,
|
|
@@ -132,14 +129,15 @@ async function getAstarNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
132
129
|
activeStake: bnTotalActiveStake.toString(),
|
|
133
130
|
nominations: nominationList,
|
|
134
131
|
unstakings: unstakingList,
|
|
135
|
-
status:
|
|
132
|
+
status: _KoniTypes.StakingStatus.NOT_EARNING // TODO
|
|
136
133
|
};
|
|
137
134
|
}
|
|
135
|
+
|
|
138
136
|
async function getAstarDappsInfo(networkKey, substrateApi) {
|
|
139
137
|
const chainApi = await substrateApi.isReady;
|
|
140
138
|
const rawMaxStakerPerContract = chainApi.api.consts.dappsStaking.maxNumberOfStakersPerContract.toHuman();
|
|
141
139
|
const allDappsInfo = [];
|
|
142
|
-
const maxStakerPerContract = (0,
|
|
140
|
+
const maxStakerPerContract = (0, _utils.parseRawNumber)(rawMaxStakerPerContract);
|
|
143
141
|
const allDappsReq = new Promise(function (resolve) {
|
|
144
142
|
(0, _crossFetch.default)(`https://api.astar.network/api/v1/${networkKey}/dapps-staking/dapps`, {
|
|
145
143
|
method: 'GET'
|
|
@@ -148,12 +146,12 @@ async function getAstarDappsInfo(networkKey, substrateApi) {
|
|
|
148
146
|
}).catch(console.error);
|
|
149
147
|
});
|
|
150
148
|
const [_era, _allDapps] = await Promise.all([chainApi.api.query.dappsStaking.currentEra(), allDappsReq]);
|
|
151
|
-
const era = (0,
|
|
149
|
+
const era = (0, _utils.parseRawNumber)(_era.toHuman());
|
|
152
150
|
const allDapps = _allDapps;
|
|
153
151
|
await Promise.all(allDapps.map(async dapp => {
|
|
154
152
|
const dappName = dapp.name;
|
|
155
153
|
const dappAddress = dapp.address;
|
|
156
|
-
const dappIcon = (0,
|
|
154
|
+
const dappIcon = (0, _utils.isUrl)(dapp.iconUrl) ? dapp.iconUrl : undefined;
|
|
157
155
|
const contractParam = (0, _utilCrypto.isEthereumAddress)(dappAddress) ? {
|
|
158
156
|
Evm: dappAddress
|
|
159
157
|
} : {
|
|
@@ -172,7 +170,7 @@ async function getAstarDappsInfo(networkKey, substrateApi) {
|
|
|
172
170
|
allDappsInfo.push({
|
|
173
171
|
commission: 0,
|
|
174
172
|
expectedReturn: 0,
|
|
175
|
-
address: dappAddress
|
|
173
|
+
address: dappAddress,
|
|
176
174
|
totalStake: totalStake,
|
|
177
175
|
ownStake: '0',
|
|
178
176
|
otherStake: totalStake.toString(),
|
|
@@ -215,7 +213,7 @@ async function getAstarWithdrawalExtrinsic(substrateApi) {
|
|
|
215
213
|
async function getAstarClaimRewardExtrinsic(substrateApi, address) {
|
|
216
214
|
const apiPromise = await substrateApi.isReady;
|
|
217
215
|
const [_stakedDapps, _currentEra] = await Promise.all([apiPromise.api.query.dappsStaking.generalStakerInfo.entries(address), apiPromise.api.query.dappsStaking.currentEra()]);
|
|
218
|
-
const currentEra = (0,
|
|
216
|
+
const currentEra = (0, _utils.parseRawNumber)(_currentEra.toHuman());
|
|
219
217
|
const transactions = [];
|
|
220
218
|
for (const item of _stakedDapps) {
|
|
221
219
|
const data = item[0].toHuman();
|
|
@@ -232,12 +230,12 @@ async function getAstarClaimRewardExtrinsic(substrateApi, address) {
|
|
|
232
230
|
staked
|
|
233
231
|
} = stakes[i];
|
|
234
232
|
const bnStaked = new _util.BN(staked.replaceAll(',', ''));
|
|
235
|
-
const parsedEra = (0,
|
|
233
|
+
const parsedEra = (0, _utils.parseRawNumber)(era);
|
|
236
234
|
if (bnStaked.eq(new _util.BN(0))) {
|
|
237
235
|
continue;
|
|
238
236
|
}
|
|
239
237
|
const nextEraData = (_stakes = stakes[i + 1]) !== null && _stakes !== void 0 ? _stakes : null;
|
|
240
|
-
const nextEra = nextEraData && (0,
|
|
238
|
+
const nextEra = nextEraData && (0, _utils.parseRawNumber)(nextEraData.era);
|
|
241
239
|
const isLastEra = i === stakes.length - 1;
|
|
242
240
|
const eraToClaim = isLastEra ? currentEra - parsedEra : nextEra - parsedEra;
|
|
243
241
|
numberOfUnclaimedEra += eraToClaim;
|
|
@@ -12,8 +12,6 @@ exports.getNominatorMetadata = getNominatorMetadata;
|
|
|
12
12
|
exports.getUnbondingExtrinsic = getUnbondingExtrinsic;
|
|
13
13
|
exports.getValidatorsInfo = getValidatorsInfo;
|
|
14
14
|
exports.getWithdrawalExtrinsic = getWithdrawalExtrinsic;
|
|
15
|
-
exports.validateBondingCondition = validateBondingCondition;
|
|
16
|
-
exports.validateUnbondingCondition = validateUnbondingCondition;
|
|
17
15
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
18
16
|
var _amplitude = require("@subwallet/extension-base/koni/api/staking/bonding/amplitude");
|
|
19
17
|
var _astar = require("@subwallet/extension-base/koni/api/staking/bonding/astar");
|
|
@@ -25,27 +23,15 @@ var _constants = require("@subwallet/extension-base/services/chain-service/const
|
|
|
25
23
|
|
|
26
24
|
// all addresses must be converted to its chain format
|
|
27
25
|
|
|
28
|
-
function
|
|
29
|
-
if (_constants._STAKING_CHAIN_GROUP.
|
|
30
|
-
return (0,
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (_constants._STAKING_CHAIN_GROUP.relay.includes(chainInfo.slug)) {
|
|
36
|
-
return (0, _relayChain.validateRelayBondingCondition)(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
|
|
37
|
-
}
|
|
38
|
-
return (0, _paraChain.validateParaChainBondingCondition)(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
|
|
39
|
-
}
|
|
40
|
-
async function getChainStakingMetadata(chainInfo, substrateApi) {
|
|
41
|
-
if (_constants._STAKING_CHAIN_GROUP.astar.includes(chainInfo.slug)) {
|
|
42
|
-
return (0, _astar.getAstarStakingMetadata)(chainInfo.slug, substrateApi);
|
|
43
|
-
} else if (_constants._STAKING_CHAIN_GROUP.para.includes(chainInfo.slug)) {
|
|
44
|
-
return (0, _paraChain.getParaChainStakingMetadata)(chainInfo.slug, substrateApi);
|
|
45
|
-
} else if (_constants._STAKING_CHAIN_GROUP.amplitude.includes(chainInfo.slug)) {
|
|
46
|
-
return (0, _amplitude.getAmplitudeStakingMetadata)(chainInfo.slug, substrateApi);
|
|
26
|
+
async function getChainStakingMetadata(chain, substrateApi) {
|
|
27
|
+
if (_constants._STAKING_CHAIN_GROUP.astar.includes(chain)) {
|
|
28
|
+
return (0, _astar.getAstarStakingMetadata)(chain, substrateApi);
|
|
29
|
+
} else if (_constants._STAKING_CHAIN_GROUP.para.includes(chain)) {
|
|
30
|
+
return (0, _paraChain.getParaChainStakingMetadata)(chain, substrateApi);
|
|
31
|
+
} else if (_constants._STAKING_CHAIN_GROUP.amplitude.includes(chain)) {
|
|
32
|
+
return (0, _amplitude.getAmplitudeStakingMetadata)(chain, substrateApi);
|
|
47
33
|
}
|
|
48
|
-
return (0, _relayChain.getRelayChainStakingMetadata)(
|
|
34
|
+
return (0, _relayChain.getRelayChainStakingMetadata)(chain, substrateApi);
|
|
49
35
|
}
|
|
50
36
|
async function getNominatorMetadata(chainInfo, address, substrateApi) {
|
|
51
37
|
if (_constants._STAKING_CHAIN_GROUP.astar.includes(chainInfo.slug)) {
|
|
@@ -115,6 +101,8 @@ async function getClaimRewardExtrinsic(substrateApi, chain, address, stakingType
|
|
|
115
101
|
async function getCancelWithdrawalExtrinsic(substrateApi, chain, selectedUnstaking) {
|
|
116
102
|
if (_constants._STAKING_CHAIN_GROUP.para.includes(chain)) {
|
|
117
103
|
return (0, _paraChain.getParaCancelWithdrawalExtrinsic)(substrateApi, selectedUnstaking);
|
|
104
|
+
} else if (_constants._STAKING_CHAIN_GROUP.amplitude.includes(chain)) {
|
|
105
|
+
return (0, _amplitude.getAmplitudeCancelWithdrawalExtrinsic)(substrateApi);
|
|
118
106
|
}
|
|
119
107
|
return (0, _relayChain.getRelayCancelWithdrawalExtrinsic)(substrateApi, selectedUnstaking);
|
|
120
108
|
}
|
|
@@ -12,9 +12,6 @@ exports.getParaWithdrawalExtrinsic = getParaWithdrawalExtrinsic;
|
|
|
12
12
|
exports.getParachainCollatorsInfo = getParachainCollatorsInfo;
|
|
13
13
|
exports.getTuringCancelCompoundingExtrinsic = getTuringCancelCompoundingExtrinsic;
|
|
14
14
|
exports.getTuringCompoundExtrinsic = getTuringCompoundExtrinsic;
|
|
15
|
-
exports.validateParaChainBondingCondition = validateParaChainBondingCondition;
|
|
16
|
-
exports.validateParaChainUnbondingCondition = validateParaChainUnbondingCondition;
|
|
17
|
-
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
18
15
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
19
16
|
var _utils = require("@subwallet/extension-base/koni/api/staking/bonding/utils");
|
|
20
17
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
@@ -25,78 +22,6 @@ var _utilCrypto = require("@polkadot/util-crypto");
|
|
|
25
22
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
26
23
|
// SPDX-License-Identifier: Apache-2.0
|
|
27
24
|
|
|
28
|
-
function validateParaChainUnbondingCondition(amount, nominatorMetadata, chainStakingMetadata, selectedCollator) {
|
|
29
|
-
const errors = [];
|
|
30
|
-
let targetNomination;
|
|
31
|
-
for (const nomination of nominatorMetadata.nominations) {
|
|
32
|
-
if ((0, _utils3.isSameAddress)(nomination.validatorAddress, selectedCollator)) {
|
|
33
|
-
targetNomination = nomination;
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (!targetNomination) {
|
|
38
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR));
|
|
39
|
-
return errors;
|
|
40
|
-
}
|
|
41
|
-
const bnActiveStake = new _util.BN(targetNomination.activeStake);
|
|
42
|
-
const bnRemainingStake = bnActiveStake.sub(new _util.BN(amount));
|
|
43
|
-
const bnChainMinStake = new _util.BN(chainStakingMetadata.minStake || '0');
|
|
44
|
-
const bnCollatorMinStake = new _util.BN(targetNomination.validatorMinStake || '0');
|
|
45
|
-
const bnMinStake = bnCollatorMinStake > bnChainMinStake ? bnCollatorMinStake : bnChainMinStake;
|
|
46
|
-
if (targetNomination.hasUnstaking) {
|
|
47
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXIST_UNSTAKING_REQUEST));
|
|
48
|
-
}
|
|
49
|
-
if (!(bnRemainingStake.isZero() || bnRemainingStake.gte(bnMinStake))) {
|
|
50
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.INVALID_ACTIVE_STAKE));
|
|
51
|
-
}
|
|
52
|
-
return errors;
|
|
53
|
-
}
|
|
54
|
-
function validateParaChainBondingCondition(chainInfo, amount, selectedCollators, address, chainStakingMetadata, nominatorMetadata) {
|
|
55
|
-
const errors = [];
|
|
56
|
-
const selectedCollator = selectedCollators[0];
|
|
57
|
-
let bnTotalStake = new _util.BN(amount);
|
|
58
|
-
const bnChainMinStake = new _util.BN(chainStakingMetadata.minStake || '0');
|
|
59
|
-
const bnCollatorMinStake = new _util.BN(selectedCollator.minBond || '0');
|
|
60
|
-
const bnMinStake = bnCollatorMinStake > bnChainMinStake ? bnCollatorMinStake : bnChainMinStake;
|
|
61
|
-
if (!nominatorMetadata) {
|
|
62
|
-
if (!bnTotalStake.gte(bnMinStake)) {
|
|
63
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
64
|
-
}
|
|
65
|
-
return errors;
|
|
66
|
-
}
|
|
67
|
-
const {
|
|
68
|
-
bondedValidators
|
|
69
|
-
} = (0, _utils.getBondedValidators)(nominatorMetadata.nominations);
|
|
70
|
-
const parsedSelectedCollatorAddress = (0, _utils3.reformatAddress)(selectedCollator.address, 0);
|
|
71
|
-
if (!bondedValidators.includes(parsedSelectedCollatorAddress)) {
|
|
72
|
-
// new delegation
|
|
73
|
-
if (!bnTotalStake.gte(bnMinStake)) {
|
|
74
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
75
|
-
}
|
|
76
|
-
const delegationCount = nominatorMetadata.nominations.length + 1;
|
|
77
|
-
if (delegationCount > chainStakingMetadata.maxValidatorPerNominator) {
|
|
78
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_NOMINATIONS));
|
|
79
|
-
}
|
|
80
|
-
} else {
|
|
81
|
-
let currentDelegationAmount = '0';
|
|
82
|
-
let hasUnstaking = false;
|
|
83
|
-
for (const delegation of nominatorMetadata.nominations) {
|
|
84
|
-
if ((0, _utils3.reformatAddress)(delegation.validatorAddress, 0) === parsedSelectedCollatorAddress) {
|
|
85
|
-
currentDelegationAmount = delegation.activeStake;
|
|
86
|
-
hasUnstaking = !!delegation.hasUnstaking && delegation.hasUnstaking;
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
bnTotalStake = bnTotalStake.add(new _util.BN(currentDelegationAmount));
|
|
91
|
-
if (!bnTotalStake.gte(bnMinStake)) {
|
|
92
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
93
|
-
}
|
|
94
|
-
if (hasUnstaking) {
|
|
95
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXIST_UNSTAKING_REQUEST));
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return errors;
|
|
99
|
-
}
|
|
100
25
|
async function getParaChainStakingMetadata(chain, substrateApi) {
|
|
101
26
|
const chainApi = await substrateApi.isReady;
|
|
102
27
|
const _round = (await chainApi.api.query.parachainStaking.round()).toHuman();
|
|
@@ -150,16 +75,13 @@ async function getParaChainNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
150
75
|
}
|
|
151
76
|
let bnTotalActiveStake = _util.BN_ZERO;
|
|
152
77
|
await Promise.all(delegatorState.delegations.map(async delegation => {
|
|
153
|
-
const [_delegationScheduledRequests, _identity, _roundInfo
|
|
154
|
-
const rawCollatorInfo = _collatorInfo.toHuman();
|
|
155
|
-
const minDelegation = (rawCollatorInfo === null || rawCollatorInfo === void 0 ? void 0 : rawCollatorInfo.lowestTopDelegationAmount).replaceAll(',', '');
|
|
78
|
+
const [_delegationScheduledRequests, _identity, _roundInfo] = await Promise.all([chainApi.api.query.parachainStaking.delegationScheduledRequests(delegation.owner), chainApi.api.query.identity.identityOf(delegation.owner), chainApi.api.query.parachainStaking.round()]);
|
|
156
79
|
const identityInfo = _identity.toHuman();
|
|
157
80
|
const roundInfo = _roundInfo.toPrimitive();
|
|
158
81
|
const delegationScheduledRequests = _delegationScheduledRequests.toPrimitive();
|
|
159
82
|
const currentRound = roundInfo.current;
|
|
160
83
|
const identity = (0, _utils.parseIdentity)(identityInfo);
|
|
161
84
|
let hasUnstaking = false;
|
|
162
|
-
let delegationStatus = _KoniTypes.StakingStatus.NOT_EARNING;
|
|
163
85
|
|
|
164
86
|
// parse unstaking info
|
|
165
87
|
if (delegationScheduledRequests) {
|
|
@@ -186,13 +108,10 @@ async function getParaChainNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
186
108
|
const bnStake = new _util.BN(delegation.amount);
|
|
187
109
|
const bnUnstakeBalance = unstakingMap[delegation.owner] ? new _util.BN(unstakingMap[delegation.owner].claimable) : _util.BN_ZERO;
|
|
188
110
|
const bnActiveStake = bnStake.sub(bnUnstakeBalance);
|
|
189
|
-
if (bnActiveStake.gt(_util.BN_ZERO) && bnActiveStake.gte(new _util.BN(minDelegation))) {
|
|
190
|
-
delegationStatus = _KoniTypes.StakingStatus.EARNING_REWARD;
|
|
191
|
-
}
|
|
192
111
|
bnTotalActiveStake = bnTotalActiveStake.add(bnActiveStake);
|
|
193
112
|
nominationList.push({
|
|
194
113
|
chain,
|
|
195
|
-
status:
|
|
114
|
+
status: _KoniTypes.StakingStatus.NOT_EARNING,
|
|
196
115
|
validatorAddress: delegation.owner,
|
|
197
116
|
validatorIdentity: identity,
|
|
198
117
|
activeStake: bnActiveStake.toString(),
|
|
@@ -204,11 +123,9 @@ async function getParaChainNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
204
123
|
const collatorInfo = _collatorInfo.toPrimitive();
|
|
205
124
|
nomination.validatorMinStake = collatorInfo.lowestTopDelegationAmount.toString();
|
|
206
125
|
}));
|
|
207
|
-
const stakingStatus = (0, _utils.getStakingStatusByNominations)(bnTotalActiveStake, nominationList);
|
|
208
126
|
return {
|
|
209
127
|
chain,
|
|
210
128
|
type: _KoniTypes.StakingType.NOMINATED,
|
|
211
|
-
status: stakingStatus,
|
|
212
129
|
address: address,
|
|
213
130
|
activeStake: bnTotalActiveStake.toString(),
|
|
214
131
|
nominations: nominationList,
|
|
@@ -16,10 +16,6 @@ exports.getRelayPoolsInfo = getRelayPoolsInfo;
|
|
|
16
16
|
exports.getRelayUnbondingExtrinsic = getRelayUnbondingExtrinsic;
|
|
17
17
|
exports.getRelayValidatorsInfo = getRelayValidatorsInfo;
|
|
18
18
|
exports.getRelayWithdrawalExtrinsic = getRelayWithdrawalExtrinsic;
|
|
19
|
-
exports.validatePoolBondingCondition = validatePoolBondingCondition;
|
|
20
|
-
exports.validateRelayBondingCondition = validateRelayBondingCondition;
|
|
21
|
-
exports.validateRelayUnbondingCondition = validateRelayUnbondingCondition;
|
|
22
|
-
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
23
19
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
24
20
|
var _utils = require("@subwallet/extension-base/koni/api/staking/bonding/utils");
|
|
25
21
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
@@ -30,91 +26,16 @@ var _utilCrypto = require("@polkadot/util-crypto");
|
|
|
30
26
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
31
27
|
// SPDX-License-Identifier: Apache-2.0
|
|
32
28
|
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
const bnActiveStake = new _util.BN(nominatorMetadata.activeStake);
|
|
36
|
-
const bnRemainingStake = bnActiveStake.sub(new _util.BN(amount));
|
|
37
|
-
const minStake = new _util.BN(chainStakingMetadata.minPoolBonding || '0');
|
|
38
|
-
if (!(bnRemainingStake.isZero() || bnRemainingStake.gte(minStake))) {
|
|
39
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.INVALID_ACTIVE_STAKE));
|
|
40
|
-
}
|
|
41
|
-
if (nominatorMetadata.unstakings.length > chainStakingMetadata.maxWithdrawalRequestPerValidator) {
|
|
42
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_UNSTAKING));
|
|
43
|
-
}
|
|
44
|
-
return errors;
|
|
45
|
-
}
|
|
46
|
-
function validatePoolBondingCondition(chainInfo, amount, selectedPool, address, chainStakingMetadata, nominatorMetadata) {
|
|
47
|
-
// cannot stake when unstake all
|
|
48
|
-
// amount >= min stake
|
|
49
|
-
const errors = [];
|
|
50
|
-
let bnTotalStake = new _util.BN(amount);
|
|
51
|
-
const bnMinStake = new _util.BN(chainStakingMetadata.minPoolBonding || '0');
|
|
52
|
-
if (nominatorMetadata) {
|
|
53
|
-
const bnCurrentActiveStake = new _util.BN(nominatorMetadata.activeStake);
|
|
54
|
-
bnTotalStake = bnTotalStake.add(bnCurrentActiveStake);
|
|
55
|
-
if (!bnCurrentActiveStake.gt(_util.BN_ZERO)) {
|
|
56
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXIST_UNSTAKING_REQUEST));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
if (!bnTotalStake.gte(bnMinStake)) {
|
|
60
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
61
|
-
}
|
|
62
|
-
return errors;
|
|
63
|
-
}
|
|
64
|
-
function validateRelayBondingCondition(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata) {
|
|
65
|
-
const errors = [];
|
|
66
|
-
let bnTotalStake = new _util.BN(amount);
|
|
67
|
-
const bnMinStake = new _util.BN(chainStakingMetadata.minStake);
|
|
68
|
-
if (!nominatorMetadata) {
|
|
69
|
-
if (!bnTotalStake.gte(bnMinStake)) {
|
|
70
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
71
|
-
}
|
|
72
|
-
if (selectedValidators.length > chainStakingMetadata.maxValidatorPerNominator) {
|
|
73
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_NOMINATIONS));
|
|
74
|
-
}
|
|
75
|
-
return errors;
|
|
76
|
-
}
|
|
77
|
-
const bnCurrentActiveStake = new _util.BN(nominatorMetadata.activeStake);
|
|
78
|
-
bnTotalStake = bnTotalStake.add(bnCurrentActiveStake);
|
|
79
|
-
if (!bnTotalStake.gte(bnMinStake)) {
|
|
80
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
81
|
-
}
|
|
82
|
-
if (selectedValidators.length > chainStakingMetadata.maxValidatorPerNominator) {
|
|
83
|
-
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_NOMINATIONS));
|
|
84
|
-
}
|
|
85
|
-
return errors;
|
|
86
|
-
}
|
|
87
|
-
async function getRelayChainStakingMetadata(chainInfo, substrateApi) {
|
|
88
|
-
var _chainApi$api$query$a, _chainApi$api$query, _chainApi$api$query$s, _chainApi$api$query2, _chainApi$api$query2$, _chainApi$api$query3, _chainApi$api$query3$;
|
|
89
|
-
const chain = chainInfo.slug;
|
|
90
|
-
const {
|
|
91
|
-
decimals
|
|
92
|
-
} = (0, _utils2._getChainNativeTokenBasicInfo)(chainInfo);
|
|
29
|
+
async function getRelayChainStakingMetadata(chain, substrateApi) {
|
|
30
|
+
var _chainApi$api$query$a, _chainApi$api$query, _chainApi$api$query$n;
|
|
93
31
|
const chainApi = await substrateApi.isReady;
|
|
94
32
|
const _era = await chainApi.api.query.staking.currentEra();
|
|
95
33
|
const currentEra = _era.toString();
|
|
96
34
|
const maxNominations = chainApi.api.consts.staking.maxNominations.toString();
|
|
97
35
|
const maxUnlockingChunks = chainApi.api.consts.staking.maxUnlockingChunks.toString();
|
|
98
36
|
const unlockingEras = chainApi.api.consts.staking.bondingDuration.toString();
|
|
99
|
-
const [_totalEraStake, _totalIssuance, _auctionCounter, _minimumActiveStake,
|
|
100
|
-
const
|
|
101
|
-
const nominatorList = [];
|
|
102
|
-
for (const item of eraStakers) {
|
|
103
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
104
|
-
const rawValidatorStat = item[1].toHuman();
|
|
105
|
-
const eraNominators = rawValidatorStat.others;
|
|
106
|
-
for (const nominator of eraNominators) {
|
|
107
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
108
|
-
if (!nominatorList.includes(nominator.who)) {
|
|
109
|
-
nominatorList.push(nominator.who);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
const minActiveStake = (_minimumActiveStake === null || _minimumActiveStake === void 0 ? void 0 : _minimumActiveStake.toString()) || '0';
|
|
114
|
-
const minNominatorBond = _minNominatorBond.toString();
|
|
115
|
-
const bnMinActiveStake = new _util.BN(minActiveStake);
|
|
116
|
-
const bnMinNominatorBond = new _util.BN(minNominatorBond);
|
|
117
|
-
const minStake = bnMinActiveStake.gt(bnMinNominatorBond) ? bnMinActiveStake : bnMinNominatorBond;
|
|
37
|
+
const [_totalEraStake, _totalIssuance, _auctionCounter, _minimumActiveStake, _minPoolJoin] = await Promise.all([chainApi.api.query.staking.erasTotalStake(parseInt(currentEra)), chainApi.api.query.balances.totalIssuance(), (_chainApi$api$query$a = chainApi.api.query.auctions) === null || _chainApi$api$query$a === void 0 ? void 0 : _chainApi$api$query$a.auctionCounter(), chainApi.api.query.staking.minimumActiveStake(), (_chainApi$api$query = chainApi.api.query) === null || _chainApi$api$query === void 0 ? void 0 : (_chainApi$api$query$n = _chainApi$api$query.nominationPools) === null || _chainApi$api$query$n === void 0 ? void 0 : _chainApi$api$query$n.minJoinBond()]);
|
|
38
|
+
const minStake = _minimumActiveStake.toString();
|
|
118
39
|
const minPoolJoin = (_minPoolJoin === null || _minPoolJoin === void 0 ? void 0 : _minPoolJoin.toString()) || undefined;
|
|
119
40
|
const rawTotalEraStake = _totalEraStake.toString();
|
|
120
41
|
const rawTotalIssuance = _totalIssuance.toString();
|
|
@@ -132,30 +53,21 @@ async function getRelayChainStakingMetadata(chainInfo, substrateApi) {
|
|
|
132
53
|
expectedReturn,
|
|
133
54
|
// in %, annually
|
|
134
55
|
inflation,
|
|
135
|
-
minStake
|
|
136
|
-
minPoolBonding: (10 ** decimals).toString(),
|
|
137
|
-
// default is 1
|
|
56
|
+
minStake,
|
|
138
57
|
maxValidatorPerNominator: parseInt(maxNominations),
|
|
139
58
|
maxWithdrawalRequestPerValidator: parseInt(maxUnlockingChunks),
|
|
140
59
|
allowCancelUnstaking: true,
|
|
141
60
|
unstakingPeriod: unlockingPeriod,
|
|
142
|
-
minJoinNominationPool: minPoolJoin
|
|
143
|
-
nominatorCount: nominatorList.length
|
|
61
|
+
minJoinNominationPool: minPoolJoin
|
|
144
62
|
};
|
|
145
63
|
}
|
|
146
64
|
async function getRelayChainNominatorMetadata(chainInfo, address, substrateApi) {
|
|
147
|
-
var _chainApi$api$query4, _chainApi$api$query4$, _chainApi$api$query5, _chainApi$api$query5$, _chainApi$api$query6, _chainApi$api$query6$, _chainApi$api$query7, _chainApi$api$query7$, _chainApi$api$query8, _chainApi$api$query8$, _chainApi$api$query9, _chainApi$api$query9$, _chainApi$api$query10, _chainApi$api$query11;
|
|
148
65
|
if ((0, _utilCrypto.isEthereumAddress)(address)) {
|
|
149
66
|
return;
|
|
150
67
|
}
|
|
151
68
|
const chain = chainInfo.slug;
|
|
152
69
|
const chainApi = await substrateApi.isReady;
|
|
153
|
-
const [_ledger, _nominations, _currentEra, _bonded
|
|
154
|
-
const minActiveStake = (_minimumActiveStake === null || _minimumActiveStake === void 0 ? void 0 : _minimumActiveStake.toString()) || '0';
|
|
155
|
-
const minNominatorBond = _minNominatorBond.toString();
|
|
156
|
-
const bnMinActiveStake = new _util.BN(minActiveStake);
|
|
157
|
-
const bnMinNominatorBond = new _util.BN(minNominatorBond);
|
|
158
|
-
const minStake = bnMinActiveStake.gt(bnMinNominatorBond) ? bnMinActiveStake : bnMinNominatorBond;
|
|
70
|
+
const [_ledger, _nominations, _currentEra, _bonded] = await Promise.all([chainApi.api.query.staking.ledger(address), chainApi.api.query.staking.nominators(address), chainApi.api.query.staking.currentEra(), chainApi.api.query.staking.bonded(address)]);
|
|
159
71
|
const _maxNominatorRewardedPerValidator = chainApi.api.consts.staking.maxNominatorRewardedPerValidator.toString();
|
|
160
72
|
const maxNominatorRewardedPerValidator = parseInt(_maxNominatorRewardedPerValidator);
|
|
161
73
|
const ledger = _ledger.toPrimitive();
|
|
@@ -165,6 +77,7 @@ async function getRelayChainNominatorMetadata(chainInfo, address, substrateApi)
|
|
|
165
77
|
if (!ledger) {
|
|
166
78
|
return;
|
|
167
79
|
}
|
|
80
|
+
let stakingStatus = _KoniTypes.StakingStatus.NOT_EARNING;
|
|
168
81
|
const activeStake = ledger.active.toString();
|
|
169
82
|
const nominationList = [];
|
|
170
83
|
const unstakingList = [];
|
|
@@ -179,10 +92,7 @@ async function getRelayChainNominatorMetadata(chainInfo, address, substrateApi)
|
|
|
179
92
|
const topNominators = eraStaker.others.map(nominator => {
|
|
180
93
|
return nominator.who;
|
|
181
94
|
});
|
|
182
|
-
if (
|
|
183
|
-
// if nominator has target but not in nominator list
|
|
184
|
-
nominationStatus = _KoniTypes.StakingStatus.WAITING;
|
|
185
|
-
} else if (topNominators.slice(0, maxNominatorRewardedPerValidator).includes((0, _utils3.reformatAddress)(address, (0, _utils2._getChainSubstrateAddressPrefix)(chainInfo)))) {
|
|
95
|
+
if (topNominators.slice(0, maxNominatorRewardedPerValidator).includes((0, _utils3.reformatAddress)(address, (0, _utils2._getChainSubstrateAddressPrefix)(chainInfo)))) {
|
|
186
96
|
// if address in top nominators
|
|
187
97
|
nominationStatus = _KoniTypes.StakingStatus.EARNING_REWARD;
|
|
188
98
|
}
|
|
@@ -196,20 +106,11 @@ async function getRelayChainNominatorMetadata(chainInfo, address, substrateApi)
|
|
|
196
106
|
}));
|
|
197
107
|
}
|
|
198
108
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if (nomination.status === _KoniTypes.StakingStatus.EARNING_REWARD) {
|
|
205
|
-
// only need 1 earning nomination to count
|
|
206
|
-
stakingStatus = _KoniTypes.StakingStatus.EARNING_REWARD;
|
|
207
|
-
} else if (nomination.status === _KoniTypes.StakingStatus.WAITING) {
|
|
208
|
-
waitingNominationCount += 1;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
if (waitingNominationCount === nominationList.length) {
|
|
212
|
-
stakingStatus = _KoniTypes.StakingStatus.WAITING;
|
|
109
|
+
for (const nomination of nominationList) {
|
|
110
|
+
if (nomination.status === _KoniTypes.StakingStatus.EARNING_REWARD) {
|
|
111
|
+
// only need 1 earning nomination to count
|
|
112
|
+
stakingStatus = _KoniTypes.StakingStatus.EARNING_REWARD;
|
|
113
|
+
break;
|
|
213
114
|
}
|
|
214
115
|
}
|
|
215
116
|
ledger.unlocking.forEach(unlockingChunk => {
|
|
@@ -288,10 +189,6 @@ async function getRelayChainPoolMemberMetadata(chainInfo, address, substrateApi)
|
|
|
288
189
|
waitingTime: waitingTime > 0 ? waitingTime : 0
|
|
289
190
|
});
|
|
290
191
|
});
|
|
291
|
-
const bnActiveStake = new _util.BN(poolMemberInfo.points.toString());
|
|
292
|
-
if (!bnActiveStake.gt(_util.BN_ZERO)) {
|
|
293
|
-
stakingStatus = _KoniTypes.StakingStatus.NOT_EARNING;
|
|
294
|
-
}
|
|
295
192
|
return {
|
|
296
193
|
chain: chainInfo.slug,
|
|
297
194
|
type: _KoniTypes.StakingType.POOLED,
|
|
@@ -352,9 +249,9 @@ async function getRelayValidatorsInfo(chain, substrateApi, decimals, chainStakin
|
|
|
352
249
|
}
|
|
353
250
|
const extraInfoMap = {};
|
|
354
251
|
await Promise.all(allValidators.map(async address => {
|
|
355
|
-
var _chainApi$api$
|
|
252
|
+
var _chainApi$api$query2, _chainApi$api$query2$, _identityInfo$judgeme;
|
|
356
253
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
357
|
-
const [_commissionInfo, _identityInfo] = await Promise.all([chainApi.api.query.staking.validators(address), (_chainApi$api$
|
|
254
|
+
const [_commissionInfo, _identityInfo] = await Promise.all([chainApi.api.query.staking.validators(address), (_chainApi$api$query2 = chainApi.api.query) === null || _chainApi$api$query2 === void 0 ? void 0 : (_chainApi$api$query2$ = _chainApi$api$query2.identity) === null || _chainApi$api$query2$ === void 0 ? void 0 : _chainApi$api$query2$.identityOf(address)]);
|
|
358
255
|
const commissionInfo = _commissionInfo.toHuman();
|
|
359
256
|
const identityInfo = _identityInfo ? _identityInfo.toHuman() : null;
|
|
360
257
|
let identity;
|
|
@@ -16,7 +16,6 @@ exports.getInflationParams = getInflationParams;
|
|
|
16
16
|
exports.getParaCurrentInflation = getParaCurrentInflation;
|
|
17
17
|
exports.getStakingAvailableActionsByChain = getStakingAvailableActionsByChain;
|
|
18
18
|
exports.getStakingAvailableActionsByNominator = getStakingAvailableActionsByNominator;
|
|
19
|
-
exports.getStakingStatusByNominations = getStakingStatusByNominations;
|
|
20
19
|
exports.getWithdrawalInfo = getWithdrawalInfo;
|
|
21
20
|
exports.isActionFromValidator = isActionFromValidator;
|
|
22
21
|
exports.isShowNominationByValidator = isShowNominationByValidator;
|
|
@@ -151,8 +150,11 @@ function getBondedValidators(nominations) {
|
|
|
151
150
|
const bondedValidators = [];
|
|
152
151
|
let nominationCount = 0;
|
|
153
152
|
for (const nomination of nominations) {
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
const bnActiveStake = new _util.BN(nomination.activeStake);
|
|
154
|
+
if (bnActiveStake.gt(_util.BN_ZERO)) {
|
|
155
|
+
nominationCount += 1;
|
|
156
|
+
bondedValidators.push((0, _utils.reformatAddress)(nomination.validatorAddress, 0));
|
|
157
|
+
}
|
|
156
158
|
}
|
|
157
159
|
return {
|
|
158
160
|
nominationCount,
|
|
@@ -195,15 +197,13 @@ function getStakingAvailableActionsByChain(chain, type) {
|
|
|
195
197
|
}
|
|
196
198
|
return [StakingAction.STAKE, StakingAction.UNSTAKE, StakingAction.WITHDRAW, StakingAction.CANCEL_UNSTAKE];
|
|
197
199
|
}
|
|
198
|
-
function getStakingAvailableActionsByNominator(nominatorMetadata
|
|
200
|
+
function getStakingAvailableActionsByNominator(nominatorMetadata) {
|
|
199
201
|
const result = [StakingAction.STAKE];
|
|
200
202
|
const bnActiveStake = new _util.BN(nominatorMetadata.activeStake);
|
|
201
203
|
if (nominatorMetadata.activeStake && bnActiveStake.gt(_util.BN_ZERO)) {
|
|
202
204
|
result.push(StakingAction.UNSTAKE);
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
const bnUnclaimedReward = new _util.BN(unclaimedReward || '0');
|
|
206
|
-
if ((nominatorMetadata.type === _KoniTypes.StakingType.POOLED || isAmplitudeNetwork) && bnUnclaimedReward.gt(_util.BN_ZERO) || isAstarNetwork) {
|
|
205
|
+
const isChainAllowClaimReward = _constants._STAKING_CHAIN_GROUP.amplitude.includes(nominatorMetadata.chain) || _constants._STAKING_CHAIN_GROUP.astar.includes(nominatorMetadata.chain);
|
|
206
|
+
if (nominatorMetadata.type === _KoniTypes.StakingType.POOLED || isChainAllowClaimReward) {
|
|
207
207
|
result.push(StakingAction.CLAIM_REWARD);
|
|
208
208
|
}
|
|
209
209
|
}
|
|
@@ -245,23 +245,4 @@ function getWithdrawalInfo(nominatorMetadata) {
|
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
return result;
|
|
248
|
-
}
|
|
249
|
-
function getStakingStatusByNominations(bnTotalActiveStake, nominationList) {
|
|
250
|
-
let stakingStatus = _KoniTypes.StakingStatus.EARNING_REWARD;
|
|
251
|
-
if (bnTotalActiveStake.isZero()) {
|
|
252
|
-
stakingStatus = _KoniTypes.StakingStatus.NOT_EARNING;
|
|
253
|
-
} else {
|
|
254
|
-
let invalidDelegationCount = 0;
|
|
255
|
-
for (const nomination of nominationList) {
|
|
256
|
-
if (nomination.status === _KoniTypes.StakingStatus.NOT_EARNING) {
|
|
257
|
-
invalidDelegationCount += 1;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
if (invalidDelegationCount > 0 && invalidDelegationCount < nominationList.length) {
|
|
261
|
-
stakingStatus = _KoniTypes.StakingStatus.PARTIALLY_EARNING;
|
|
262
|
-
} else if (invalidDelegationCount === nominationList.length) {
|
|
263
|
-
stakingStatus = _KoniTypes.StakingStatus.NOT_EARNING;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
return stakingStatus;
|
|
267
248
|
}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getPSP22ContractPromise = getPSP22ContractPromise;
|
|
7
7
|
exports.getPSP34ContractPromise = getPSP34ContractPromise;
|
|
8
8
|
exports.getPSP34TransferExtrinsic = getPSP34TransferExtrinsic;
|
|
9
|
-
var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
10
9
|
var _helper = require("@subwallet/extension-base/services/chain-service/helper");
|
|
11
10
|
var _apiContract = require("@polkadot/api-contract");
|
|
12
11
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -23,10 +22,10 @@ async function getPSP34TransferExtrinsic(networkKey, substrateApi, senderAddress
|
|
|
23
22
|
const onChainOption = params.onChainOption;
|
|
24
23
|
try {
|
|
25
24
|
const contractPromise = getPSP34ContractPromise(substrateApi.api, contractAddress);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
const transferQuery = await contractPromise.query['psp34::transfer'](senderAddress, {
|
|
26
|
+
gasLimit: -1
|
|
27
|
+
}, recipientAddress, onChainOption, {});
|
|
28
|
+
const gasLimit = transferQuery.gasRequired.toString();
|
|
30
29
|
return contractPromise.tx['psp34::transfer']({
|
|
31
30
|
gasLimit
|
|
32
31
|
}, recipientAddress, onChainOption, {});
|
|
@@ -42,7 +42,7 @@ function getAssetLocation(tokenInfo, sendingValue) {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function getExtrinsicByPolkadotXcmPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
|
|
45
|
-
const weightParam = (
|
|
45
|
+
const weightParam = _utils.NETWORK_USE_UNLIMITED_WEIGHT.includes(originChainInfo.slug) ? _utils.POLKADOT_UNLIMITED_WEIGHT : _utils.FOUR_INSTRUCTIONS_WEIGHT;
|
|
46
46
|
const beneficiary = (0, _utils.getBeneficiary)(originChainInfo, destinationChainInfo, recipientAddress);
|
|
47
47
|
const destination = getDestinationChainLocation(destinationChainInfo);
|
|
48
48
|
const assetLocation = getAssetLocation(tokenInfo, value);
|