@subwallet/extension-base 1.1.33-0 → 1.1.33-beta.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 +111 -69
- package/background/KoniTypes.js +19 -13
- package/background/errors/TransactionError.js +9 -0
- package/cjs/background/KoniTypes.js +20 -16
- package/cjs/background/errors/TransactionError.js +9 -0
- package/cjs/constants/index.js +19 -4
- package/cjs/koni/api/dotsama/balance.js +464 -0
- package/cjs/koni/api/nft/config.js +33 -23
- package/cjs/koni/api/nft/index.js +14 -0
- package/cjs/koni/api/nft/nft.js +1 -22
- package/cjs/koni/api/nft/ordinal_nft/constants.js +21 -0
- package/cjs/koni/api/nft/ordinal_nft/index.js +121 -0
- package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
- package/cjs/koni/api/staking/bonding/amplitude.js +31 -28
- package/cjs/koni/api/staking/bonding/astar.js +11 -10
- package/cjs/koni/api/staking/bonding/index.js +4 -1
- package/cjs/koni/api/staking/bonding/paraChain.js +25 -23
- package/cjs/koni/api/staking/bonding/relayChain.js +48 -45
- package/cjs/koni/api/staking/bonding/utils.js +104 -86
- package/cjs/koni/api/staking/index.js +6 -5
- package/cjs/koni/api/staking/paraChain.js +6 -5
- package/cjs/koni/api/staking/relayChain.js +3 -2
- package/cjs/koni/api/yield/helper/utils.js +46 -0
- package/cjs/koni/background/cron.js +3 -21
- package/cjs/koni/background/handlers/Extension.js +368 -69
- package/cjs/koni/background/handlers/State.js +18 -12
- package/cjs/koni/background/handlers/index.js +4 -2
- package/cjs/koni/background/subscription.js +7 -104
- package/cjs/services/campaign-service/index.js +9 -6
- package/cjs/services/chain-service/constants.js +1 -16
- package/cjs/services/chain-service/index.js +3 -2
- package/cjs/services/chain-service/utils.js +7 -1
- package/cjs/services/earning-service/constants/chains.js +30 -0
- package/cjs/services/earning-service/constants/index.js +27 -0
- package/cjs/services/earning-service/constants/step.js +18 -0
- package/cjs/services/earning-service/handlers/base.js +262 -0
- package/cjs/services/earning-service/handlers/index.js +60 -0
- package/cjs/services/earning-service/handlers/lending/base.js +81 -0
- package/cjs/services/earning-service/handlers/lending/index.js +13 -0
- package/cjs/services/earning-service/handlers/lending/interlay.js +192 -0
- package/cjs/services/earning-service/handlers/liquid-staking/acala.js +240 -0
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +97 -0
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +298 -0
- package/cjs/services/earning-service/handlers/liquid-staking/index.js +34 -0
- package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +227 -0
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +404 -0
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +434 -0
- package/cjs/services/earning-service/handlers/native-staking/astar.js +466 -0
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +146 -0
- package/cjs/services/earning-service/handlers/native-staking/base.js +161 -0
- package/cjs/services/earning-service/handlers/native-staking/index.js +34 -0
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +390 -0
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +567 -0
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +566 -0
- package/cjs/services/earning-service/handlers/special.js +493 -0
- package/cjs/services/earning-service/service.js +740 -0
- package/cjs/services/earning-service/utils/index.js +128 -0
- package/cjs/services/event-service/index.js +5 -0
- package/cjs/services/keyring-service/index.js +14 -2
- package/cjs/services/migration-service/scripts/DeleteEarningData.js +21 -0
- package/cjs/services/migration-service/scripts/EnableEarningChains.js +21 -0
- package/cjs/services/migration-service/scripts/MigrateEthProvider.js +17 -0
- package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +17 -0
- package/cjs/services/migration-service/scripts/MigrateProvider.js +29 -0
- package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +21 -0
- package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +21 -0
- package/cjs/services/migration-service/scripts/index.js +6 -1
- package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
- package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
- package/cjs/services/mint-campaign-service/constants.js +11 -0
- package/cjs/services/mint-campaign-service/index.js +18 -0
- package/cjs/services/notification-service/NotificationService.js +1 -1
- package/cjs/services/storage-service/DatabaseService.js +63 -0
- package/cjs/services/storage-service/databases/index.js +4 -0
- package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
- package/cjs/services/storage-service/db-stores/YieldPositionStore.js +71 -0
- package/cjs/services/storage-service/index.js +241 -0
- package/cjs/services/subscan-service/index.js +16 -0
- package/cjs/services/transaction-service/event-parser/index.js +58 -0
- package/cjs/services/transaction-service/helpers/index.js +3 -1
- package/cjs/services/transaction-service/index.js +249 -75
- package/cjs/services/transaction-service/utils.js +1 -0
- package/cjs/types/campaigns/index.js +16 -0
- package/cjs/types/campaigns/unlock-dot.js +1 -0
- package/cjs/types/index.js +44 -0
- package/cjs/types/ordinal.js +1 -0
- package/cjs/types/transaction.js +1 -0
- package/cjs/types/yield/actions/index.js +27 -0
- package/cjs/types/yield/actions/join/index.js +38 -0
- package/cjs/types/yield/actions/join/step.js +47 -0
- package/cjs/types/yield/actions/join/submit.js +1 -0
- package/cjs/types/yield/actions/join/validate.js +16 -0
- package/cjs/types/yield/actions/others.js +1 -0
- package/cjs/types/yield/index.js +27 -0
- package/cjs/types/yield/info/account/index.js +49 -0
- package/cjs/types/yield/info/account/info.js +1 -0
- package/cjs/types/yield/info/account/reward.js +1 -0
- package/cjs/types/yield/info/account/target.js +32 -0
- package/cjs/types/yield/info/account/unstake.js +27 -0
- package/cjs/types/yield/info/base.js +41 -0
- package/cjs/types/yield/info/chain/index.js +27 -0
- package/cjs/types/yield/info/chain/info.js +1 -0
- package/cjs/types/yield/info/chain/target.js +1 -0
- package/cjs/types/yield/info/index.js +49 -0
- package/cjs/types/yield/info/pallet.js +15 -0
- package/cjs/types.js +1 -0
- package/cjs/utils/address.js +34 -0
- package/cjs/utils/fetchStaticData.js +2 -1
- package/cjs/utils/index.js +89 -1
- package/cjs/utils/keyring.js +57 -0
- package/cjs/utils/number.js +6 -2
- package/cjs/utils/object.js +12 -0
- package/constants/index.d.ts +6 -1
- package/constants/index.js +6 -1
- package/koni/api/nft/config.js +33 -23
- package/koni/api/nft/index.js +15 -1
- package/koni/api/nft/nft.js +2 -23
- package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
- package/koni/api/nft/ordinal_nft/constants.js +12 -0
- package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
- package/koni/api/nft/ordinal_nft/index.js +114 -0
- package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
- package/koni/api/nft/ordinal_nft/utils.js +33 -0
- package/koni/api/staking/bonding/amplitude.js +25 -22
- package/koni/api/staking/bonding/astar.js +9 -8
- package/koni/api/staking/bonding/index.d.ts +1 -1
- package/koni/api/staking/bonding/index.js +5 -1
- package/koni/api/staking/bonding/paraChain.js +12 -10
- package/koni/api/staking/bonding/relayChain.d.ts +2 -2
- package/koni/api/staking/bonding/relayChain.js +33 -30
- package/koni/api/staking/bonding/utils.d.ts +15 -38
- package/koni/api/staking/bonding/utils.js +85 -69
- package/koni/api/staking/index.js +2 -1
- package/koni/api/staking/paraChain.js +7 -6
- package/koni/api/staking/relayChain.js +4 -3
- package/koni/api/yield/helper/utils.d.ts +10 -0
- package/koni/api/yield/helper/utils.js +32 -0
- package/koni/background/cron.d.ts +0 -4
- package/koni/background/cron.js +4 -22
- package/koni/background/handlers/Extension.d.ts +17 -1
- package/koni/background/handlers/Extension.js +327 -30
- package/koni/background/handlers/State.d.ts +6 -1
- package/koni/background/handlers/State.js +17 -12
- package/koni/background/handlers/index.js +4 -2
- package/koni/background/subscription.d.ts +1 -6
- package/koni/background/subscription.js +8 -104
- package/package.json +317 -4
- package/services/campaign-service/index.js +9 -6
- package/services/chain-service/constants.d.ts +0 -12
- package/services/chain-service/constants.js +0 -14
- package/services/chain-service/index.js +3 -2
- package/services/chain-service/utils.d.ts +1 -0
- package/services/chain-service/utils.js +5 -1
- package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
- package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
- package/services/earning-service/constants/chains.d.ts +15 -0
- package/services/earning-service/constants/chains.js +22 -0
- package/services/earning-service/constants/index.d.ts +2 -0
- package/services/earning-service/constants/index.js +5 -0
- package/services/earning-service/constants/step.d.ts +3 -0
- package/services/earning-service/constants/step.js +10 -0
- package/services/earning-service/handlers/base.d.ts +113 -0
- package/services/earning-service/handlers/base.js +256 -0
- package/services/earning-service/handlers/index.d.ts +5 -0
- package/services/earning-service/handlers/index.js +8 -0
- package/services/earning-service/handlers/lending/base.d.ts +8 -0
- package/services/earning-service/handlers/lending/base.js +73 -0
- package/services/earning-service/handlers/lending/index.d.ts +1 -0
- package/services/earning-service/handlers/lending/index.js +4 -0
- package/services/earning-service/handlers/lending/interlay.d.ts +24 -0
- package/services/earning-service/handlers/lending/interlay.js +184 -0
- package/services/earning-service/handlers/liquid-staking/acala.d.ts +27 -0
- package/services/earning-service/handlers/liquid-staking/acala.js +232 -0
- package/services/earning-service/handlers/liquid-staking/base.d.ts +11 -0
- package/services/earning-service/handlers/liquid-staking/base.js +89 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +46 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.js +287 -0
- package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
- package/services/earning-service/handlers/liquid-staking/index.js +7 -0
- package/services/earning-service/handlers/liquid-staking/parallel.d.ts +26 -0
- package/services/earning-service/handlers/liquid-staking/parallel.js +219 -0
- package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +34 -0
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +394 -0
- package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
- package/services/earning-service/handlers/native-staking/amplitude.js +425 -0
- package/services/earning-service/handlers/native-staking/astar.d.ts +19 -0
- package/services/earning-service/handlers/native-staking/astar.js +456 -0
- package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
- package/services/earning-service/handlers/native-staking/base-para.js +138 -0
- package/services/earning-service/handlers/native-staking/base.d.ts +21 -0
- package/services/earning-service/handlers/native-staking/base.js +152 -0
- package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
- package/services/earning-service/handlers/native-staking/index.js +7 -0
- package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
- package/services/earning-service/handlers/native-staking/para-chain.js +382 -0
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
- package/services/earning-service/handlers/native-staking/relay-chain.js +558 -0
- package/services/earning-service/handlers/nomination-pool/index.d.ts +36 -0
- package/services/earning-service/handlers/nomination-pool/index.js +556 -0
- package/services/earning-service/handlers/special.d.ts +64 -0
- package/services/earning-service/handlers/special.js +485 -0
- package/services/earning-service/service.d.ts +94 -0
- package/services/earning-service/service.js +729 -0
- package/services/earning-service/utils/index.d.ts +18 -0
- package/services/earning-service/utils/index.js +112 -0
- package/services/event-service/index.d.ts +2 -0
- package/services/event-service/index.js +5 -0
- package/services/event-service/types.d.ts +9 -0
- package/services/keyring-service/index.d.ts +2 -1
- package/services/keyring-service/index.js +14 -2
- package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
- package/services/migration-service/scripts/DeleteEarningData.js +13 -0
- package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
- package/services/migration-service/scripts/EnableEarningChains.js +13 -0
- package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +4 -0
- package/services/migration-service/scripts/databases/MigrateEarningHistory.js +13 -0
- package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +4 -0
- package/services/migration-service/scripts/databases/MigrateEarningVersion.js +13 -0
- package/services/migration-service/scripts/index.js +6 -1
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
- package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
- package/services/mint-campaign-service/campaigns/index.js +4 -0
- package/services/mint-campaign-service/constants.d.ts +1 -0
- package/services/mint-campaign-service/constants.js +4 -0
- package/services/mint-campaign-service/index.d.ts +7 -0
- package/services/mint-campaign-service/index.js +11 -0
- package/services/notification-service/NotificationService.js +1 -1
- package/services/storage-service/DatabaseService.d.ts +22 -1
- package/services/storage-service/DatabaseService.js +63 -0
- package/services/storage-service/databases/index.d.ts +3 -1
- package/services/storage-service/databases/index.js +4 -0
- package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
- package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
- package/services/storage-service/db-stores/YieldPositionStore.d.ts +11 -0
- package/services/storage-service/db-stores/YieldPositionStore.js +63 -0
- package/services/subscan-service/index.d.ts +3 -2
- package/services/subscan-service/index.js +15 -0
- package/services/subscan-service/types.d.ts +20 -0
- package/services/transaction-service/event-parser/index.d.ts +3 -1
- package/services/transaction-service/event-parser/index.js +57 -1
- package/services/transaction-service/helpers/index.js +3 -1
- package/services/transaction-service/index.d.ts +6 -13
- package/services/transaction-service/index.js +247 -73
- package/services/transaction-service/types.d.ts +2 -0
- package/services/transaction-service/utils.js +1 -0
- package/types/campaigns/index.d.ts +1 -0
- package/types/campaigns/index.js +4 -0
- package/types/campaigns/unlock-dot.d.ts +71 -0
- package/types/campaigns/unlock-dot.js +1 -0
- package/types/index.d.ts +5 -0
- package/types/index.js +5 -1
- package/types/ordinal.d.ts +69 -0
- package/types/ordinal.js +1 -0
- package/types/transaction.d.ts +3 -0
- package/types/transaction.js +1 -0
- package/types/yield/actions/index.d.ts +2 -0
- package/types/yield/actions/index.js +5 -0
- package/types/yield/actions/join/index.d.ts +3 -0
- package/types/yield/actions/join/index.js +6 -0
- package/types/yield/actions/join/step.d.ts +95 -0
- package/types/yield/actions/join/step.js +46 -0
- package/types/yield/actions/join/submit.d.ts +58 -0
- package/types/yield/actions/join/submit.js +1 -0
- package/types/yield/actions/join/validate.d.ts +18 -0
- package/types/yield/actions/join/validate.js +10 -0
- package/types/yield/actions/others.d.ts +85 -0
- package/types/yield/actions/others.js +1 -0
- package/types/yield/index.d.ts +2 -0
- package/types/yield/index.js +5 -0
- package/types/yield/info/account/index.d.ts +4 -0
- package/types/yield/info/account/index.js +7 -0
- package/types/yield/info/account/info.d.ts +92 -0
- package/types/yield/info/account/info.js +1 -0
- package/types/yield/info/account/reward.d.ts +47 -0
- package/types/yield/info/account/reward.js +1 -0
- package/types/yield/info/account/target.d.ts +43 -0
- package/types/yield/info/account/target.js +27 -0
- package/types/yield/info/account/unstake.d.ts +31 -0
- package/types/yield/info/account/unstake.js +22 -0
- package/types/yield/info/base.d.ts +45 -0
- package/types/yield/info/base.js +36 -0
- package/types/yield/info/chain/index.d.ts +2 -0
- package/types/yield/info/chain/index.js +5 -0
- package/types/yield/info/chain/info.d.ts +252 -0
- package/types/yield/info/chain/info.js +1 -0
- package/types/yield/info/chain/target.d.ts +37 -0
- package/types/yield/info/chain/target.js +1 -0
- package/types/yield/info/index.d.ts +4 -0
- package/types/yield/info/index.js +7 -0
- package/types/yield/info/pallet.d.ts +143 -0
- package/types/yield/info/pallet.js +9 -0
- package/utils/fetchStaticData.js +2 -1
- package/utils/index.d.ts +5 -0
- package/utils/index.js +52 -0
- package/utils/number.d.ts +2 -1
- package/utils/number.js +2 -1
- package/utils/object.d.ts +1 -0
- package/utils/object.js +6 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
+
import { getEarningStatusByNominations } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
|
|
6
6
|
import { _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
7
|
+
import { EarningStatus, UnstakingStatus } from '@subwallet/extension-base/types';
|
|
7
8
|
import { isUrl, parseRawNumber } from '@subwallet/extension-base/utils';
|
|
8
9
|
import fetch from 'cross-fetch';
|
|
9
10
|
import { BN, BN_ZERO } from '@polkadot/util';
|
|
@@ -99,7 +100,7 @@ export async function subscribeAstarNominatorMetadata(chainInfo, address, substr
|
|
|
99
100
|
const currentStake = stakeList.slice(-1)[0].staked.toString() || '0';
|
|
100
101
|
const bnCurrentStake = new BN(currentStake);
|
|
101
102
|
if (bnCurrentStake.gt(BN_ZERO)) {
|
|
102
|
-
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ?
|
|
103
|
+
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ? EarningStatus.EARNING_REWARD : EarningStatus.NOT_EARNING;
|
|
103
104
|
bnTotalActiveStake = bnTotalActiveStake.add(bnCurrentStake);
|
|
104
105
|
const dappInfo = dAppInfoMap[dappAddress];
|
|
105
106
|
nominationList.push({
|
|
@@ -134,13 +135,13 @@ export async function subscribeAstarNominatorMetadata(chainInfo, address, substr
|
|
|
134
135
|
chain: chainInfo.slug,
|
|
135
136
|
type: StakingType.NOMINATED,
|
|
136
137
|
address,
|
|
137
|
-
status:
|
|
138
|
+
status: EarningStatus.NOT_STAKING,
|
|
138
139
|
activeStake: '0',
|
|
139
140
|
nominations: [],
|
|
140
141
|
unstakings: []
|
|
141
142
|
};
|
|
142
143
|
}
|
|
143
|
-
const stakingStatus =
|
|
144
|
+
const stakingStatus = getEarningStatusByNominations(bnTotalActiveStake, nominationList);
|
|
144
145
|
return {
|
|
145
146
|
chain: chainInfo.slug,
|
|
146
147
|
type: StakingType.NOMINATED,
|
|
@@ -185,7 +186,7 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
185
186
|
const currentStake = stakeList.slice(-1)[0].staked.toString() || '0';
|
|
186
187
|
const bnCurrentStake = new BN(currentStake);
|
|
187
188
|
if (bnCurrentStake.gt(BN_ZERO)) {
|
|
188
|
-
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ?
|
|
189
|
+
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ? EarningStatus.EARNING_REWARD : EarningStatus.NOT_EARNING;
|
|
189
190
|
bnTotalActiveStake = bnTotalActiveStake.add(bnCurrentStake);
|
|
190
191
|
const dappInfo = dAppInfoMap[dappAddress];
|
|
191
192
|
nominationList.push({
|
|
@@ -220,13 +221,13 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
220
221
|
chain: chainInfo.slug,
|
|
221
222
|
type: StakingType.NOMINATED,
|
|
222
223
|
address,
|
|
223
|
-
status:
|
|
224
|
+
status: EarningStatus.NOT_STAKING,
|
|
224
225
|
activeStake: '0',
|
|
225
226
|
nominations: [],
|
|
226
227
|
unstakings: []
|
|
227
228
|
};
|
|
228
229
|
}
|
|
229
|
-
const stakingStatus =
|
|
230
|
+
const stakingStatus = getEarningStatusByNominations(bnTotalActiveStake, nominationList);
|
|
230
231
|
return {
|
|
231
232
|
chain,
|
|
232
233
|
type: StakingType.NOMINATED,
|
|
@@ -11,7 +11,7 @@ export declare function getChainStakingMetadata(chainInfo: _ChainInfo, substrate
|
|
|
11
11
|
* */
|
|
12
12
|
export declare function getNominatorMetadata(chainInfo: _ChainInfo, address: string, substrateApi: _SubstrateApi): Promise<NominatorMetadata | undefined>;
|
|
13
13
|
export declare function getValidatorsInfo(networkKey: string, substrateApi: _SubstrateApi, decimals: number, chainStakingMetadata: ChainStakingMetadata): Promise<ValidatorInfo[]>;
|
|
14
|
-
export declare function getNominationPoolsInfo(chain: string, substrateApi: _SubstrateApi): Promise<import("
|
|
14
|
+
export declare function getNominationPoolsInfo(chain: string, substrateApi: _SubstrateApi): Promise<import("../../../../types").NominationPoolInfo[]>;
|
|
15
15
|
export declare function getBondingExtrinsic(chainInfo: _ChainInfo, amount: string, selectedValidators: ValidatorInfo[], substrateApi: _SubstrateApi, address: string, nominatorMetadata?: NominatorMetadata): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
16
16
|
export declare function getUnbondingExtrinsic(nominatorMetadata: NominatorMetadata, amount: string, chain: string, substrateApi: _SubstrateApi, selectedValidator?: string): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
17
17
|
export declare function getWithdrawalExtrinsic(substrateApi: _SubstrateApi, chain: string, nominatorMetadata: NominatorMetadata, validatorAddress?: string): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
@@ -6,10 +6,14 @@ import { getAmplitudeBondingExtrinsic, getAmplitudeClaimRewardExtrinsic, getAmpl
|
|
|
6
6
|
import { getAstarBondingExtrinsic, getAstarClaimRewardExtrinsic, getAstarDappsInfo, getAstarNominatorMetadata, getAstarStakingMetadata, getAstarUnbondingExtrinsic, getAstarWithdrawalExtrinsic, subscribeAstarStakingMetadata } from '@subwallet/extension-base/koni/api/staking/bonding/astar';
|
|
7
7
|
import { getParaBondingExtrinsic, getParaCancelWithdrawalExtrinsic, getParachainCollatorsInfo, getParaChainNominatorMetadata, getParaChainStakingMetadata, getParaUnbondingExtrinsic, getParaWithdrawalExtrinsic, subscribeParaChainStakingMetadata, validateParaChainBondingCondition, validateParaChainUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding/paraChain';
|
|
8
8
|
import { getPoolingClaimRewardExtrinsic, getPoolingWithdrawalExtrinsic, getRelayBondingExtrinsic, getRelayCancelWithdrawalExtrinsic, getRelayChainNominatorMetadata, getRelayChainStakingMetadata, getRelayPoolsInfo, getRelayUnbondingExtrinsic, getRelayValidatorsInfo, getRelayWithdrawalExtrinsic, subscribeRelayChainStakingMetadata, validateRelayBondingCondition, validateRelayUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding/relayChain';
|
|
9
|
-
import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/
|
|
9
|
+
import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/earning-service/constants';
|
|
10
|
+
|
|
10
11
|
// all addresses must be converted to its chain format
|
|
11
12
|
|
|
12
13
|
export function validateUnbondingCondition(nominatorMetadata, amount, chain, chainStakingMetadata, selectedValidator) {
|
|
14
|
+
if (nominatorMetadata.type === StakingType.LIQUID_STAKING) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
13
17
|
if (_STAKING_CHAIN_GROUP.relay.includes(chain)) {
|
|
14
18
|
return validateRelayUnbondingCondition(amount, chainStakingMetadata, nominatorMetadata);
|
|
15
19
|
}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
5
|
-
import { BasicTxErrorType,
|
|
6
|
-
import { getBondedValidators, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, getParaCurrentInflation,
|
|
5
|
+
import { BasicTxErrorType, StakingTxErrorType, StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
|
+
import { getBondedValidators, getEarningStatusByNominations, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, getParaCurrentInflation, isUnstakeAll } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
|
|
7
7
|
import { _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
8
8
|
import { _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
|
|
9
|
+
import { parseIdentity } from '@subwallet/extension-base/services/earning-service/utils';
|
|
10
|
+
import { EarningStatus, UnstakingStatus } from '@subwallet/extension-base/types';
|
|
9
11
|
import { isSameAddress, parseRawNumber, reformatAddress } from '@subwallet/extension-base/utils';
|
|
10
12
|
import { BN, BN_ZERO } from '@polkadot/util';
|
|
11
13
|
import { isEthereumAddress } from '@polkadot/util-crypto';
|
|
@@ -46,7 +48,7 @@ export function validateParaChainBondingCondition(chainInfo, amount, selectedCol
|
|
|
46
48
|
const minStakeErrorMessage = getMinStakeErrorMessage(chainInfo, bnMinStake);
|
|
47
49
|
const maxValidatorErrorMessage = getMaxValidatorErrorMessage(chainInfo, chainStakingMetadata.maxValidatorPerNominator);
|
|
48
50
|
const existUnstakeErrorMessage = getExistUnstakeErrorMessage(chainInfo.slug, nominatorMetadata === null || nominatorMetadata === void 0 ? void 0 : nominatorMetadata.type, true);
|
|
49
|
-
if (!nominatorMetadata || nominatorMetadata.status ===
|
|
51
|
+
if (!nominatorMetadata || nominatorMetadata.status === EarningStatus.NOT_STAKING) {
|
|
50
52
|
if (!bnTotalStake.gte(bnMinStake)) {
|
|
51
53
|
errors.push(new TransactionError(StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
|
|
52
54
|
}
|
|
@@ -160,7 +162,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
|
|
|
160
162
|
const minDelegation = collatorInfo === null || collatorInfo === void 0 ? void 0 : collatorInfo.lowestTopDelegationAmount.toString();
|
|
161
163
|
const delegationScheduledRequests = _delegationScheduledRequests.toPrimitive();
|
|
162
164
|
let hasUnstaking = false;
|
|
163
|
-
let delegationStatus =
|
|
165
|
+
let delegationStatus = EarningStatus.NOT_EARNING;
|
|
164
166
|
|
|
165
167
|
// parse unstaking info
|
|
166
168
|
if (delegationScheduledRequests) {
|
|
@@ -188,7 +190,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
|
|
|
188
190
|
const bnUnstakeBalance = unstakingMap[delegation.owner] ? new BN(unstakingMap[delegation.owner].claimable) : BN_ZERO;
|
|
189
191
|
const bnActiveStake = bnStake.sub(bnUnstakeBalance);
|
|
190
192
|
if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegation))) {
|
|
191
|
-
delegationStatus =
|
|
193
|
+
delegationStatus = EarningStatus.EARNING_REWARD;
|
|
192
194
|
}
|
|
193
195
|
bnTotalActiveStake = bnTotalActiveStake.add(bnActiveStake);
|
|
194
196
|
nominationList.push({
|
|
@@ -209,7 +211,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
|
|
|
209
211
|
// nomination.validatorMinStake = collatorInfo.lowestTopDelegationAmount.toString();
|
|
210
212
|
// }));
|
|
211
213
|
|
|
212
|
-
const stakingStatus =
|
|
214
|
+
const stakingStatus = getEarningStatusByNominations(bnTotalActiveStake, nominationList);
|
|
213
215
|
return {
|
|
214
216
|
chain: chainInfo.slug,
|
|
215
217
|
type: StakingType.NOMINATED,
|
|
@@ -239,7 +241,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
239
241
|
chain: chainInfo.slug,
|
|
240
242
|
type: StakingType.NOMINATED,
|
|
241
243
|
address,
|
|
242
|
-
status:
|
|
244
|
+
status: EarningStatus.NOT_STAKING,
|
|
243
245
|
activeStake: '0',
|
|
244
246
|
nominations: [],
|
|
245
247
|
unstakings: []
|
|
@@ -254,7 +256,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
254
256
|
const delegationScheduledRequests = _delegationScheduledRequests.toPrimitive();
|
|
255
257
|
const currentRound = roundInfo.current;
|
|
256
258
|
let hasUnstaking = false;
|
|
257
|
-
let delegationStatus =
|
|
259
|
+
let delegationStatus = EarningStatus.NOT_EARNING;
|
|
258
260
|
|
|
259
261
|
// parse unstaking info
|
|
260
262
|
if (delegationScheduledRequests) {
|
|
@@ -282,7 +284,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
282
284
|
const bnUnstakeBalance = unstakingMap[delegation.owner] ? new BN(unstakingMap[delegation.owner].claimable) : BN_ZERO;
|
|
283
285
|
const bnActiveStake = bnStake.sub(bnUnstakeBalance);
|
|
284
286
|
if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegation))) {
|
|
285
|
-
delegationStatus =
|
|
287
|
+
delegationStatus = EarningStatus.EARNING_REWARD;
|
|
286
288
|
}
|
|
287
289
|
bnTotalActiveStake = bnTotalActiveStake.add(bnActiveStake);
|
|
288
290
|
nominationList.push({
|
|
@@ -299,7 +301,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
299
301
|
const collatorInfo = _collatorInfo.toPrimitive();
|
|
300
302
|
nomination.validatorMinStake = collatorInfo.lowestTopDelegationAmount.toString();
|
|
301
303
|
}));
|
|
302
|
-
const stakingStatus =
|
|
304
|
+
const stakingStatus = getEarningStatusByNominations(bnTotalActiveStake, nominationList);
|
|
303
305
|
return {
|
|
304
306
|
chain,
|
|
305
307
|
type: StakingType.NOMINATED,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
2
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
3
|
-
import { ChainStakingMetadata,
|
|
4
|
-
import { PalletNominationPoolsPoolMember } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
|
|
3
|
+
import { ChainStakingMetadata, NominatorMetadata, UnstakingInfo, ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
4
|
import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
5
|
+
import { NominationPoolInfo, PalletNominationPoolsPoolMember } from '@subwallet/extension-base/types';
|
|
6
6
|
import { Codec } from '@polkadot/types/types';
|
|
7
7
|
export interface PalletStakingNominations {
|
|
8
8
|
targets: string[];
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
5
|
-
import {
|
|
5
|
+
import { StakingTxErrorType, StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
6
|
import { MAX_NOMINATIONS } from '@subwallet/extension-base/constants';
|
|
7
|
-
import { calculateAlephZeroValidatorReturn, calculateChainStakedReturn, calculateInflation, calculateTernoaValidatorReturn, calculateValidatorStakedReturn, getCommission, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage,
|
|
8
|
-
import { _EXPECTED_BLOCK_TIME,
|
|
7
|
+
import { calculateAlephZeroValidatorReturn, calculateChainStakedReturn, calculateInflation, calculateTernoaValidatorReturn, calculateValidatorStakedReturn, getCommission, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, parsePoolStashAddress } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
|
|
8
|
+
import { _EXPECTED_BLOCK_TIME, _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
9
9
|
import { _getChainSubstrateAddressPrefix } from '@subwallet/extension-base/services/chain-service/utils';
|
|
10
|
+
import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/earning-service/constants';
|
|
11
|
+
import { parseIdentity } from '@subwallet/extension-base/services/earning-service/utils';
|
|
12
|
+
import { EarningStatus, UnstakingStatus } from '@subwallet/extension-base/types';
|
|
10
13
|
import { reformatAddress } from '@subwallet/extension-base/utils';
|
|
11
14
|
import BigN from 'bignumber.js';
|
|
12
15
|
import { t } from 'i18next';
|
|
@@ -58,7 +61,7 @@ export function validateRelayBondingCondition(chainInfo, amount, selectedValidat
|
|
|
58
61
|
const bnMinStake = new BN(chainStakingMetadata.minStake);
|
|
59
62
|
const minStakeErrorMessage = getMinStakeErrorMessage(chainInfo, bnMinStake);
|
|
60
63
|
const maxValidatorErrorMessage = getMaxValidatorErrorMessage(chainInfo, chainStakingMetadata.maxValidatorPerNominator);
|
|
61
|
-
if (!nominatorMetadata || nominatorMetadata.status ===
|
|
64
|
+
if (!nominatorMetadata || nominatorMetadata.status === EarningStatus.NOT_STAKING) {
|
|
62
65
|
if (!bnTotalStake.gte(bnMinStake)) {
|
|
63
66
|
errors.push(new TransactionError(StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
|
|
64
67
|
}
|
|
@@ -117,12 +120,12 @@ export function subscribeRelayChainStakingMetadata(chainInfo, substrateApi, call
|
|
|
117
120
|
});
|
|
118
121
|
}
|
|
119
122
|
export async function getRelayChainStakingMetadata(chainInfo, substrateApi) {
|
|
120
|
-
var _chainApi$api$query$a, _chainApi$api$query, _chainApi$api$query$s, _chainApi$api$query2, _chainApi$api$query2$, _chainApi$api$query3, _chainApi$api$query3$;
|
|
123
|
+
var _chainApi$api$consts$, _chainApi$api$consts$2, _chainApi$api$query$a, _chainApi$api$query, _chainApi$api$query$s, _chainApi$api$query2, _chainApi$api$query2$, _chainApi$api$query3, _chainApi$api$query3$;
|
|
121
124
|
const chain = chainInfo.slug;
|
|
122
125
|
const chainApi = await substrateApi.isReady;
|
|
123
126
|
const _era = await chainApi.api.query.staking.currentEra();
|
|
124
127
|
const currentEra = _era.toString();
|
|
125
|
-
const maxNominations = chainApi.api.consts.staking
|
|
128
|
+
const maxNominations = ((_chainApi$api$consts$ = chainApi.api.consts.staking) === null || _chainApi$api$consts$ === void 0 ? void 0 : (_chainApi$api$consts$2 = _chainApi$api$consts$.maxNominations) === null || _chainApi$api$consts$2 === void 0 ? void 0 : _chainApi$api$consts$2.toString()) || '16'; // TODO
|
|
126
129
|
const maxUnlockingChunks = chainApi.api.consts.staking.maxUnlockingChunks.toString();
|
|
127
130
|
const unlockingEras = chainApi.api.consts.staking.bondingDuration.toString();
|
|
128
131
|
const [_totalEraStake, _totalIssuance, _auctionCounter, _minimumActiveStake, _minNominatorBond, _minPoolJoin, _eraStakers] = 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 = chainApi.api.query) === null || _chainApi$api$query === void 0 ? void 0 : (_chainApi$api$query$s = _chainApi$api$query.staking) === null || _chainApi$api$query$s === void 0 ? void 0 : _chainApi$api$query$s.minimumActiveStake) && ((_chainApi$api$query2 = chainApi.api.query) === null || _chainApi$api$query2 === void 0 ? void 0 : (_chainApi$api$query2$ = _chainApi$api$query2.staking) === null || _chainApi$api$query2$ === void 0 ? void 0 : _chainApi$api$query2$.minimumActiveStake()), chainApi.api.query.staking.minNominatorBond(), (_chainApi$api$query3 = chainApi.api.query) === null || _chainApi$api$query3 === void 0 ? void 0 : (_chainApi$api$query3$ = _chainApi$api$query3.nominationPools) === null || _chainApi$api$query3$ === void 0 ? void 0 : _chainApi$api$query3$.minJoinBond(), chainApi.api.query.staking.erasStakers.entries(parseInt(currentEra))]);
|
|
@@ -193,7 +196,7 @@ export async function subscribeRelayChainNominatorMetadata(chainInfo, address, s
|
|
|
193
196
|
if (nominations) {
|
|
194
197
|
const validatorList = nominations.targets;
|
|
195
198
|
await Promise.all(validatorList.map(async validatorAddress => {
|
|
196
|
-
let nominationStatus =
|
|
199
|
+
let nominationStatus = EarningStatus.NOT_EARNING;
|
|
197
200
|
const [[identity], _eraStaker] = await Promise.all([parseIdentity(chainApi, validatorAddress), chainApi.api.query.staking.erasStakers(currentEra, validatorAddress)]);
|
|
198
201
|
const eraStaker = _eraStaker.toPrimitive();
|
|
199
202
|
const sortedNominators = eraStaker.others.sort((a, b) => {
|
|
@@ -204,10 +207,10 @@ export async function subscribeRelayChainNominatorMetadata(chainInfo, address, s
|
|
|
204
207
|
});
|
|
205
208
|
if (!topNominators.includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
|
|
206
209
|
// if nominator has target but not in nominator list
|
|
207
|
-
nominationStatus =
|
|
210
|
+
nominationStatus = EarningStatus.WAITING;
|
|
208
211
|
} else if (topNominators.slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator).includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
|
|
209
212
|
// if address in top nominators
|
|
210
|
-
nominationStatus =
|
|
213
|
+
nominationStatus = EarningStatus.EARNING_REWARD;
|
|
211
214
|
}
|
|
212
215
|
nominationList.push({
|
|
213
216
|
chain,
|
|
@@ -219,20 +222,20 @@ export async function subscribeRelayChainNominatorMetadata(chainInfo, address, s
|
|
|
219
222
|
}));
|
|
220
223
|
}
|
|
221
224
|
|
|
222
|
-
let stakingStatus =
|
|
225
|
+
let stakingStatus = EarningStatus.NOT_EARNING;
|
|
223
226
|
const bnActiveStake = new BN(activeStake);
|
|
224
227
|
let waitingNominationCount = 0;
|
|
225
228
|
if (bnActiveStake.gte(minStake)) {
|
|
226
229
|
for (const nomination of nominationList) {
|
|
227
|
-
if (nomination.status ===
|
|
230
|
+
if (nomination.status === EarningStatus.EARNING_REWARD) {
|
|
228
231
|
// only need 1 earning nomination to count
|
|
229
|
-
stakingStatus =
|
|
230
|
-
} else if (nomination.status ===
|
|
232
|
+
stakingStatus = EarningStatus.EARNING_REWARD;
|
|
233
|
+
} else if (nomination.status === EarningStatus.WAITING) {
|
|
231
234
|
waitingNominationCount += 1;
|
|
232
235
|
}
|
|
233
236
|
}
|
|
234
237
|
if (waitingNominationCount === nominationList.length) {
|
|
235
|
-
stakingStatus =
|
|
238
|
+
stakingStatus = EarningStatus.WAITING;
|
|
236
239
|
}
|
|
237
240
|
}
|
|
238
241
|
ledger.unlocking.forEach(unlockingChunk => {
|
|
@@ -293,7 +296,7 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
|
|
|
293
296
|
return {
|
|
294
297
|
chain,
|
|
295
298
|
type: StakingType.NOMINATED,
|
|
296
|
-
status:
|
|
299
|
+
status: EarningStatus.NOT_STAKING,
|
|
297
300
|
address: address,
|
|
298
301
|
activeStake: '0',
|
|
299
302
|
nominations: [],
|
|
@@ -306,7 +309,7 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
|
|
|
306
309
|
if (nominations) {
|
|
307
310
|
const validatorList = nominations.targets;
|
|
308
311
|
await Promise.all(validatorList.map(async validatorAddress => {
|
|
309
|
-
let nominationStatus =
|
|
312
|
+
let nominationStatus = EarningStatus.NOT_EARNING;
|
|
310
313
|
const [[identity], _eraStaker] = await Promise.all([parseIdentity(chainApi, validatorAddress), chainApi.api.query.staking.erasStakers(currentEra, validatorAddress)]);
|
|
311
314
|
const eraStaker = _eraStaker.toPrimitive();
|
|
312
315
|
const sortedNominators = eraStaker.others.sort((a, b) => {
|
|
@@ -317,10 +320,10 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
|
|
|
317
320
|
});
|
|
318
321
|
if (!topNominators.includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
|
|
319
322
|
// if nominator has target but not in nominator list
|
|
320
|
-
nominationStatus =
|
|
323
|
+
nominationStatus = EarningStatus.WAITING;
|
|
321
324
|
} else if (topNominators.slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator).includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
|
|
322
325
|
// if address in top nominators
|
|
323
|
-
nominationStatus =
|
|
326
|
+
nominationStatus = EarningStatus.EARNING_REWARD;
|
|
324
327
|
}
|
|
325
328
|
nominationList.push({
|
|
326
329
|
chain,
|
|
@@ -332,20 +335,20 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
|
|
|
332
335
|
}));
|
|
333
336
|
}
|
|
334
337
|
|
|
335
|
-
let stakingStatus =
|
|
338
|
+
let stakingStatus = EarningStatus.NOT_EARNING;
|
|
336
339
|
const bnActiveStake = new BN(activeStake);
|
|
337
340
|
let waitingNominationCount = 0;
|
|
338
341
|
if (bnActiveStake.gte(minStake)) {
|
|
339
342
|
for (const nomination of nominationList) {
|
|
340
|
-
if (nomination.status ===
|
|
343
|
+
if (nomination.status === EarningStatus.EARNING_REWARD) {
|
|
341
344
|
// only need 1 earning nomination to count
|
|
342
|
-
stakingStatus =
|
|
343
|
-
} else if (nomination.status ===
|
|
345
|
+
stakingStatus = EarningStatus.EARNING_REWARD;
|
|
346
|
+
} else if (nomination.status === EarningStatus.WAITING) {
|
|
344
347
|
waitingNominationCount += 1;
|
|
345
348
|
}
|
|
346
349
|
}
|
|
347
350
|
if (waitingNominationCount === nominationList.length) {
|
|
348
|
-
stakingStatus =
|
|
351
|
+
stakingStatus = EarningStatus.WAITING;
|
|
349
352
|
}
|
|
350
353
|
}
|
|
351
354
|
ledger.unlocking.forEach(unlockingChunk => {
|
|
@@ -381,7 +384,7 @@ export async function subscribeRelayChainPoolMemberMetadata(chainInfo, address,
|
|
|
381
384
|
const poolMetadata = _poolMetadata.toPrimitive();
|
|
382
385
|
const currentEra = _currentEra.toString();
|
|
383
386
|
const nominations = _nominations.toJSON();
|
|
384
|
-
let stakingStatus =
|
|
387
|
+
let stakingStatus = EarningStatus.NOT_EARNING;
|
|
385
388
|
const getPoolName = () => {
|
|
386
389
|
if (poolMetadata.isUtf8) {
|
|
387
390
|
return poolMetadata.toUtf8();
|
|
@@ -404,7 +407,7 @@ export async function subscribeRelayChainPoolMemberMetadata(chainInfo, address,
|
|
|
404
407
|
}).slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator);
|
|
405
408
|
if (topNominators.includes(reformatAddress(poolStashAccount, _getChainSubstrateAddressPrefix(chainInfo)))) {
|
|
406
409
|
// if address in top nominators
|
|
407
|
-
stakingStatus =
|
|
410
|
+
stakingStatus = EarningStatus.EARNING_REWARD;
|
|
408
411
|
}
|
|
409
412
|
}));
|
|
410
413
|
}
|
|
@@ -439,7 +442,7 @@ export async function subscribeRelayChainPoolMemberMetadata(chainInfo, address,
|
|
|
439
442
|
});
|
|
440
443
|
const bnActiveStake = new BN(poolMemberInfo.points.toString());
|
|
441
444
|
if (!bnActiveStake.gt(BN_ZERO)) {
|
|
442
|
-
stakingStatus =
|
|
445
|
+
stakingStatus = EarningStatus.NOT_EARNING;
|
|
443
446
|
}
|
|
444
447
|
return {
|
|
445
448
|
chain: chainInfo.slug,
|
|
@@ -470,14 +473,14 @@ export async function getRelayChainPoolMemberMetadata(chainInfo, address, substr
|
|
|
470
473
|
chain: chainInfo.slug,
|
|
471
474
|
type: StakingType.POOLED,
|
|
472
475
|
address,
|
|
473
|
-
status:
|
|
476
|
+
status: EarningStatus.NOT_STAKING,
|
|
474
477
|
activeStake: '0',
|
|
475
478
|
nominations: [],
|
|
476
479
|
// can only join 1 pool at a time
|
|
477
480
|
unstakings: []
|
|
478
481
|
};
|
|
479
482
|
}
|
|
480
|
-
let stakingStatus =
|
|
483
|
+
let stakingStatus = EarningStatus.NOT_EARNING;
|
|
481
484
|
const _poolMetadata = await chainApi.api.query.nominationPools.metadata(poolMemberInfo.poolId);
|
|
482
485
|
const poolMetadata = _poolMetadata.toPrimitive();
|
|
483
486
|
const getPoolName = () => {
|
|
@@ -505,7 +508,7 @@ export async function getRelayChainPoolMemberMetadata(chainInfo, address, substr
|
|
|
505
508
|
}).slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator);
|
|
506
509
|
if (topNominators.includes(reformatAddress(poolStashAccount, _getChainSubstrateAddressPrefix(chainInfo)))) {
|
|
507
510
|
// if address in top nominators
|
|
508
|
-
stakingStatus =
|
|
511
|
+
stakingStatus = EarningStatus.EARNING_REWARD;
|
|
509
512
|
}
|
|
510
513
|
}));
|
|
511
514
|
}
|
|
@@ -532,7 +535,7 @@ export async function getRelayChainPoolMemberMetadata(chainInfo, address, substr
|
|
|
532
535
|
});
|
|
533
536
|
const bnActiveStake = new BN(poolMemberInfo.points.toString());
|
|
534
537
|
if (!bnActiveStake.gt(BN_ZERO)) {
|
|
535
|
-
stakingStatus =
|
|
538
|
+
stakingStatus = EarningStatus.NOT_EARNING;
|
|
536
539
|
}
|
|
537
540
|
return {
|
|
538
541
|
chain: chainInfo.slug,
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
/// <reference types="bn.js" />
|
|
2
2
|
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
3
|
-
import { NominationInfo, NominatorMetadata,
|
|
3
|
+
import { NominationInfo, NominatorMetadata, StakingType, UnstakingInfo } from '@subwallet/extension-base/background/KoniTypes';
|
|
4
4
|
import { _SubstrateInflationParams } from '@subwallet/extension-base/services/chain-service/constants';
|
|
5
|
-
import {
|
|
5
|
+
import { EarningStatus, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
|
|
6
6
|
import { ApiPromise } from '@polkadot/api';
|
|
7
7
|
import { BN } from '@polkadot/util';
|
|
8
|
-
export interface PalletNominationPoolsPoolMember {
|
|
9
|
-
poolId: number;
|
|
10
|
-
points: number;
|
|
11
|
-
lasRecordedRewardCounter: number;
|
|
12
|
-
unbondingEras: Record<string, number>;
|
|
13
|
-
}
|
|
14
8
|
export interface PalletDappsStakingDappInfo {
|
|
15
9
|
address: string;
|
|
16
10
|
name: string;
|
|
@@ -71,15 +65,6 @@ export interface PalletParachainStakingDelegator {
|
|
|
71
65
|
lessTotal: number;
|
|
72
66
|
status: number;
|
|
73
67
|
}
|
|
74
|
-
export interface PalletStakingExposureItem {
|
|
75
|
-
who: string;
|
|
76
|
-
value: number;
|
|
77
|
-
}
|
|
78
|
-
export interface PalletStakingExposure {
|
|
79
|
-
total: number;
|
|
80
|
-
own: number;
|
|
81
|
-
others: PalletStakingExposureItem[];
|
|
82
|
-
}
|
|
83
68
|
export interface PalletIdentityRegistration {
|
|
84
69
|
judgements: any[];
|
|
85
70
|
deposit: number;
|
|
@@ -101,32 +86,12 @@ export interface PalletIdentityRegistration {
|
|
|
101
86
|
export declare type PalletIdentitySuper = [string, {
|
|
102
87
|
Raw: string;
|
|
103
88
|
}];
|
|
104
|
-
export interface ValidatorExtraInfo {
|
|
105
|
-
commission: string;
|
|
106
|
-
blocked: false;
|
|
107
|
-
identity?: string;
|
|
108
|
-
isVerified: boolean;
|
|
109
|
-
}
|
|
110
89
|
export interface Unlocking {
|
|
111
90
|
remainingEras: BN;
|
|
112
91
|
value: BN;
|
|
113
92
|
}
|
|
114
|
-
export interface TernoaStakingRewardsStakingRewardsData {
|
|
115
|
-
sessionEraPayout: string;
|
|
116
|
-
sessionExtraRewardPayout: string;
|
|
117
|
-
}
|
|
118
93
|
export declare function parsePoolStashAddress(api: ApiPromise, index: number, poolId: number, poolsPalletId: string): string;
|
|
119
94
|
export declare function transformPoolName(input: string): string;
|
|
120
|
-
/**
|
|
121
|
-
* @returns
|
|
122
|
-
* <p>
|
|
123
|
-
* [0] - identity
|
|
124
|
-
* </p>
|
|
125
|
-
* <p>
|
|
126
|
-
* [1] - isReasonable (isVerified)
|
|
127
|
-
* </p>
|
|
128
|
-
* */
|
|
129
|
-
export declare function parseIdentity(substrateApi: _SubstrateApi, address: string, children?: string): Promise<[string | undefined, boolean]>;
|
|
130
95
|
export declare function getInflationParams(networkKey: string): _SubstrateInflationParams;
|
|
131
96
|
export declare function calcInflationUniformEraPayout(totalIssuance: BN, yearlyInflationInTokens: number): number;
|
|
132
97
|
export declare function calcInflationRewardCurve(minInflation: number, stakedFraction: number, idealStake: number, idealInterest: number, falloff: number): number;
|
|
@@ -164,6 +129,18 @@ export declare function getBondedValidators(nominations: NominationInfo[]): {
|
|
|
164
129
|
bondedValidators: string[];
|
|
165
130
|
};
|
|
166
131
|
export declare function isUnstakeAll(selectedValidator: string, nominations: NominationInfo[], unstakeAmount: string): boolean;
|
|
132
|
+
export declare enum YieldAction {
|
|
133
|
+
STAKE = "STAKE",
|
|
134
|
+
UNSTAKE = "UNSTAKE",
|
|
135
|
+
WITHDRAW = "WITHDRAW",
|
|
136
|
+
CLAIM_REWARD = "CLAIM_REWARD",
|
|
137
|
+
CANCEL_UNSTAKE = "CANCEL_UNSTAKE",
|
|
138
|
+
START_EARNING = "EARN",
|
|
139
|
+
WITHDRAW_EARNING = "WITHDRAW_EARNING",
|
|
140
|
+
CUSTOM_ACTION = "CUSTOM_ACTION"
|
|
141
|
+
}
|
|
142
|
+
export declare function getYieldAvailableActionsByType(yieldPoolInfo: YieldPoolInfo): YieldAction[];
|
|
143
|
+
export declare function getYieldAvailableActionsByPosition(yieldPosition: YieldPositionInfo, yieldPoolInfo: YieldPoolInfo, unclaimedReward?: string): YieldAction[];
|
|
167
144
|
export declare enum StakingAction {
|
|
168
145
|
STAKE = "STAKE",
|
|
169
146
|
UNSTAKE = "UNSTAKE",
|
|
@@ -175,7 +152,7 @@ export declare function getStakingAvailableActionsByChain(chain: string, type: S
|
|
|
175
152
|
export declare function getStakingAvailableActionsByNominator(nominatorMetadata: NominatorMetadata, unclaimedReward?: string): StakingAction[];
|
|
176
153
|
export declare function isActionFromValidator(stakingType: StakingType, chain: string): boolean;
|
|
177
154
|
export declare function getWithdrawalInfo(nominatorMetadata: NominatorMetadata): UnstakingInfo | undefined;
|
|
178
|
-
export declare function
|
|
155
|
+
export declare function getEarningStatusByNominations(bnTotalActiveStake: BN, nominationList: NominationInfo[]): EarningStatus;
|
|
179
156
|
export declare function getValidatorLabel(chain: string): "dApp" | "Validator" | "Collator";
|
|
180
157
|
export declare const getMinStakeErrorMessage: (chainInfo: _ChainInfo, bnMinStake: BN) => string;
|
|
181
158
|
export declare const getMaxValidatorErrorMessage: (chainInfo: _ChainInfo, max: number) => string;
|