@subwallet/extension-base 1.1.31-beta.0 → 1.1.33-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 +71 -111
- package/background/KoniTypes.js +14 -19
- package/background/errors/TransactionError.js +0 -9
- package/cjs/background/KoniTypes.js +17 -20
- package/cjs/background/errors/TransactionError.js +0 -9
- package/cjs/constants/index.js +4 -19
- package/cjs/koni/api/nft/config.js +23 -33
- package/cjs/koni/api/nft/index.js +0 -14
- package/cjs/koni/api/nft/nft.js +22 -1
- package/cjs/koni/api/staking/bonding/amplitude.js +108 -76
- package/cjs/koni/api/staking/bonding/astar.js +10 -11
- package/cjs/koni/api/staking/bonding/index.js +3 -4
- package/cjs/koni/api/staking/bonding/paraChain.js +29 -28
- package/cjs/koni/api/staking/bonding/relayChain.js +45 -48
- package/cjs/koni/api/staking/bonding/utils.js +86 -104
- package/cjs/koni/api/staking/index.js +5 -6
- package/cjs/koni/api/staking/paraChain.js +36 -11
- package/cjs/koni/api/staking/relayChain.js +2 -3
- package/cjs/koni/api/xcm/xTokens.js +1 -1
- package/cjs/koni/background/cron.js +1 -11
- package/cjs/koni/background/handlers/Extension.js +69 -362
- package/cjs/koni/background/handlers/State.js +3 -51
- package/cjs/koni/background/handlers/Tabs.js +19 -2
- package/cjs/koni/background/handlers/index.js +2 -4
- package/cjs/koni/background/subscription.js +37 -95
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/campaign-service/index.js +25 -9
- package/cjs/services/chain-service/constants.js +21 -4
- package/cjs/services/chain-service/index.js +2 -3
- package/cjs/services/chain-service/utils.js +1 -7
- package/cjs/services/event-service/index.js +0 -4
- package/cjs/services/history-service/index.js +12 -8
- package/cjs/services/keyring-service/index.js +2 -14
- package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/cjs/services/migration-service/scripts/index.js +1 -7
- package/cjs/services/notification-service/NotificationService.js +1 -1
- package/cjs/services/storage-service/DatabaseService.js +3 -51
- package/cjs/services/storage-service/databases/index.js +0 -4
- package/cjs/services/storage-service/db-stores/Campaign.js +9 -3
- package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/cjs/services/subscan-service/index.js +0 -16
- package/cjs/services/transaction-service/event-parser/index.js +0 -58
- package/cjs/services/transaction-service/helpers/index.js +1 -3
- package/cjs/services/transaction-service/index.js +131 -242
- package/cjs/services/transaction-service/utils.js +0 -1
- package/cjs/types/index.js +0 -44
- package/cjs/utils/fetchEvmChainInfo.js +20 -0
- package/cjs/utils/fetchStaticData.js +1 -2
- package/cjs/utils/index.js +17 -81
- package/cjs/utils/number.js +1 -3
- package/constants/index.d.ts +1 -6
- package/constants/index.js +1 -6
- package/koni/api/nft/config.js +23 -33
- package/koni/api/nft/index.js +1 -15
- package/koni/api/nft/nft.js +23 -2
- package/koni/api/staking/bonding/amplitude.d.ts +1 -1
- package/koni/api/staking/bonding/amplitude.js +105 -73
- package/koni/api/staking/bonding/astar.js +8 -9
- package/koni/api/staking/bonding/index.d.ts +2 -1
- package/koni/api/staking/bonding/index.js +3 -5
- package/koni/api/staking/bonding/paraChain.js +16 -15
- package/koni/api/staking/bonding/relayChain.d.ts +2 -2
- package/koni/api/staking/bonding/relayChain.js +30 -33
- package/koni/api/staking/bonding/utils.d.ts +42 -15
- package/koni/api/staking/bonding/utils.js +69 -85
- package/koni/api/staking/index.js +1 -2
- package/koni/api/staking/paraChain.js +37 -12
- package/koni/api/staking/relayChain.js +3 -4
- package/koni/api/xcm/xTokens.js +1 -1
- package/koni/background/cron.d.ts +0 -1
- package/koni/background/cron.js +2 -12
- package/koni/background/handlers/Extension.d.ts +1 -17
- package/koni/background/handlers/Extension.js +30 -321
- package/koni/background/handlers/State.d.ts +2 -18
- package/koni/background/handlers/State.js +3 -50
- package/koni/background/handlers/Tabs.js +20 -3
- package/koni/background/handlers/index.js +2 -4
- package/koni/background/subscription.d.ts +1 -6
- package/koni/background/subscription.js +38 -97
- package/package.json +13 -321
- package/packageInfo.js +1 -1
- package/services/campaign-service/index.js +25 -9
- package/services/chain-service/constants.d.ts +12 -0
- package/services/chain-service/constants.js +19 -3
- package/services/chain-service/index.js +2 -3
- package/services/chain-service/utils.d.ts +0 -1
- package/services/chain-service/utils.js +1 -5
- package/services/event-service/index.d.ts +0 -1
- package/services/event-service/index.js +0 -4
- package/services/event-service/types.d.ts +1 -8
- package/services/history-service/index.js +12 -8
- package/services/keyring-service/index.d.ts +1 -2
- package/services/keyring-service/index.js +2 -14
- package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/services/migration-service/scripts/index.js +1 -7
- package/services/notification-service/NotificationService.js +1 -1
- package/services/storage-service/DatabaseService.d.ts +2 -18
- package/services/storage-service/DatabaseService.js +3 -51
- package/services/storage-service/databases/index.d.ts +1 -3
- package/services/storage-service/databases/index.js +0 -4
- package/services/storage-service/db-stores/Campaign.js +9 -3
- package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/services/subscan-service/index.d.ts +2 -3
- package/services/subscan-service/index.js +0 -15
- package/services/subscan-service/types.d.ts +0 -20
- package/services/transaction-service/event-parser/index.d.ts +1 -3
- package/services/transaction-service/event-parser/index.js +1 -57
- package/services/transaction-service/helpers/index.js +1 -3
- package/services/transaction-service/index.d.ts +16 -4
- package/services/transaction-service/index.js +118 -230
- package/services/transaction-service/types.d.ts +1 -2
- package/services/transaction-service/utils.js +0 -1
- package/types/index.d.ts +0 -5
- package/types/index.js +1 -5
- package/utils/fetchEvmChainInfo.d.ts +17 -0
- package/utils/fetchEvmChainInfo.js +14 -0
- package/utils/fetchStaticData.js +1 -2
- package/utils/index.d.ts +2 -5
- package/utils/index.js +2 -52
- package/utils/number.d.ts +1 -1
- package/utils/number.js +1 -1
- package/cjs/koni/api/dotsama/balance.js +0 -464
- package/cjs/koni/api/nft/ordinal_nft/constants.js +0 -21
- package/cjs/koni/api/nft/ordinal_nft/index.js +0 -121
- package/cjs/koni/api/nft/ordinal_nft/utils.js +0 -41
- package/cjs/koni/api/yield/helper/utils.js +0 -46
- package/cjs/services/earning-service/constants/chains.js +0 -29
- package/cjs/services/earning-service/constants/index.js +0 -27
- package/cjs/services/earning-service/constants/step.js +0 -18
- package/cjs/services/earning-service/handlers/base.js +0 -259
- package/cjs/services/earning-service/handlers/index.js +0 -60
- package/cjs/services/earning-service/handlers/lending/base.js +0 -20
- package/cjs/services/earning-service/handlers/lending/index.js +0 -13
- package/cjs/services/earning-service/handlers/lending/interlay.js +0 -191
- package/cjs/services/earning-service/handlers/liquid-staking/acala.js +0 -239
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +0 -43
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +0 -297
- package/cjs/services/earning-service/handlers/liquid-staking/index.js +0 -34
- package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +0 -226
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -395
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +0 -384
- package/cjs/services/earning-service/handlers/native-staking/astar.js +0 -461
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +0 -146
- package/cjs/services/earning-service/handlers/native-staking/base.js +0 -159
- package/cjs/services/earning-service/handlers/native-staking/index.js +0 -34
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +0 -385
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +0 -558
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +0 -560
- package/cjs/services/earning-service/handlers/special.js +0 -503
- package/cjs/services/earning-service/service.js +0 -387
- package/cjs/services/earning-service/utils/index.js +0 -128
- package/cjs/services/migration-service/scripts/DeleteEarningData.js +0 -21
- package/cjs/services/migration-service/scripts/EnableEarningChains.js +0 -21
- package/cjs/services/migration-service/scripts/MigrateEthProvider.js +0 -17
- package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +0 -17
- package/cjs/services/migration-service/scripts/MigrateProvider.js +0 -29
- package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -21
- package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -21
- package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -149
- package/cjs/services/mint-campaign-service/campaigns/index.js +0 -13
- package/cjs/services/mint-campaign-service/constants.js +0 -11
- package/cjs/services/mint-campaign-service/index.js +0 -18
- package/cjs/services/storage-service/db-stores/YieldPoolStore.js +0 -36
- package/cjs/services/storage-service/db-stores/YieldPositionStore.js +0 -65
- package/cjs/services/storage-service/index.js +0 -241
- package/cjs/types/campaigns/index.js +0 -16
- package/cjs/types/campaigns/unlock-dot.js +0 -1
- package/cjs/types/ordinal.js +0 -1
- package/cjs/types/transaction.js +0 -1
- package/cjs/types/yield/actions/index.js +0 -27
- package/cjs/types/yield/actions/join/index.js +0 -38
- package/cjs/types/yield/actions/join/step.js +0 -47
- package/cjs/types/yield/actions/join/submit.js +0 -1
- package/cjs/types/yield/actions/join/validate.js +0 -16
- package/cjs/types/yield/actions/others.js +0 -1
- package/cjs/types/yield/index.js +0 -27
- package/cjs/types/yield/info/account/index.js +0 -49
- package/cjs/types/yield/info/account/info.js +0 -1
- package/cjs/types/yield/info/account/reward.js +0 -1
- package/cjs/types/yield/info/account/target.js +0 -32
- package/cjs/types/yield/info/account/unstake.js +0 -27
- package/cjs/types/yield/info/base.js +0 -41
- package/cjs/types/yield/info/chain/index.js +0 -27
- package/cjs/types/yield/info/chain/info.js +0 -1
- package/cjs/types/yield/info/chain/target.js +0 -1
- package/cjs/types/yield/info/index.js +0 -49
- package/cjs/types/yield/info/pallet.js +0 -15
- package/cjs/types.js +0 -1
- package/cjs/utils/address.js +0 -34
- package/cjs/utils/keyring.js +0 -57
- package/cjs/utils/object.js +0 -12
- package/koni/api/nft/ordinal_nft/constants.d.ts +0 -9
- package/koni/api/nft/ordinal_nft/constants.js +0 -12
- package/koni/api/nft/ordinal_nft/index.d.ts +0 -8
- package/koni/api/nft/ordinal_nft/index.js +0 -114
- package/koni/api/nft/ordinal_nft/utils.d.ts +0 -2
- package/koni/api/nft/ordinal_nft/utils.js +0 -33
- package/koni/api/yield/helper/utils.d.ts +0 -10
- package/koni/api/yield/helper/utils.js +0 -32
- package/services/earning-service/constants/abis/compound_finance_v2_abi.json +0 -1235
- package/services/earning-service/constants/abis/st_liquid_token_abi.json +0 -1355
- package/services/earning-service/constants/chains.d.ts +0 -14
- package/services/earning-service/constants/chains.js +0 -21
- package/services/earning-service/constants/index.d.ts +0 -2
- package/services/earning-service/constants/index.js +0 -5
- package/services/earning-service/constants/step.d.ts +0 -3
- package/services/earning-service/constants/step.js +0 -10
- package/services/earning-service/handlers/base.d.ts +0 -112
- package/services/earning-service/handlers/base.js +0 -253
- package/services/earning-service/handlers/index.d.ts +0 -5
- package/services/earning-service/handlers/index.js +0 -8
- package/services/earning-service/handlers/lending/base.d.ts +0 -6
- package/services/earning-service/handlers/lending/base.js +0 -12
- package/services/earning-service/handlers/lending/index.d.ts +0 -1
- package/services/earning-service/handlers/lending/index.js +0 -4
- package/services/earning-service/handlers/lending/interlay.d.ts +0 -24
- package/services/earning-service/handlers/lending/interlay.js +0 -183
- package/services/earning-service/handlers/liquid-staking/acala.d.ts +0 -27
- package/services/earning-service/handlers/liquid-staking/acala.js +0 -231
- package/services/earning-service/handlers/liquid-staking/base.d.ts +0 -9
- package/services/earning-service/handlers/liquid-staking/base.js +0 -35
- package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +0 -46
- package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -286
- package/services/earning-service/handlers/liquid-staking/index.d.ts +0 -4
- package/services/earning-service/handlers/liquid-staking/index.js +0 -7
- package/services/earning-service/handlers/liquid-staking/parallel.d.ts +0 -26
- package/services/earning-service/handlers/liquid-staking/parallel.js +0 -218
- package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +0 -34
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -385
- package/services/earning-service/handlers/native-staking/amplitude.d.ts +0 -22
- package/services/earning-service/handlers/native-staking/amplitude.js +0 -375
- package/services/earning-service/handlers/native-staking/astar.d.ts +0 -19
- package/services/earning-service/handlers/native-staking/astar.js +0 -451
- package/services/earning-service/handlers/native-staking/base-para.d.ts +0 -11
- package/services/earning-service/handlers/native-staking/base-para.js +0 -138
- package/services/earning-service/handlers/native-staking/base.d.ts +0 -21
- package/services/earning-service/handlers/native-staking/base.js +0 -150
- package/services/earning-service/handlers/native-staking/index.d.ts +0 -4
- package/services/earning-service/handlers/native-staking/index.js +0 -7
- package/services/earning-service/handlers/native-staking/para-chain.d.ts +0 -15
- package/services/earning-service/handlers/native-staking/para-chain.js +0 -377
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +0 -21
- package/services/earning-service/handlers/native-staking/relay-chain.js +0 -549
- package/services/earning-service/handlers/nomination-pool/index.d.ts +0 -36
- package/services/earning-service/handlers/nomination-pool/index.js +0 -550
- package/services/earning-service/handlers/special.d.ts +0 -65
- package/services/earning-service/handlers/special.js +0 -495
- package/services/earning-service/service.d.ts +0 -45
- package/services/earning-service/service.js +0 -379
- package/services/earning-service/utils/index.d.ts +0 -18
- package/services/earning-service/utils/index.js +0 -112
- package/services/migration-service/scripts/DeleteEarningData.d.ts +0 -4
- package/services/migration-service/scripts/DeleteEarningData.js +0 -13
- package/services/migration-service/scripts/EnableEarningChains.d.ts +0 -4
- package/services/migration-service/scripts/EnableEarningChains.js +0 -13
- package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +0 -4
- package/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -13
- package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +0 -4
- package/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -13
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +0 -13
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -139
- package/services/mint-campaign-service/campaigns/index.d.ts +0 -1
- package/services/mint-campaign-service/campaigns/index.js +0 -4
- package/services/mint-campaign-service/constants.d.ts +0 -1
- package/services/mint-campaign-service/constants.js +0 -4
- package/services/mint-campaign-service/index.d.ts +0 -7
- package/services/mint-campaign-service/index.js +0 -11
- package/services/storage-service/db-stores/YieldPoolStore.d.ts +0 -10
- package/services/storage-service/db-stores/YieldPoolStore.js +0 -28
- package/services/storage-service/db-stores/YieldPositionStore.d.ts +0 -9
- package/services/storage-service/db-stores/YieldPositionStore.js +0 -57
- package/types/campaigns/index.d.ts +0 -1
- package/types/campaigns/index.js +0 -4
- package/types/campaigns/unlock-dot.d.ts +0 -71
- package/types/campaigns/unlock-dot.js +0 -1
- package/types/ordinal.d.ts +0 -69
- package/types/ordinal.js +0 -1
- package/types/transaction.d.ts +0 -3
- package/types/transaction.js +0 -1
- package/types/yield/actions/index.d.ts +0 -2
- package/types/yield/actions/index.js +0 -5
- package/types/yield/actions/join/index.d.ts +0 -3
- package/types/yield/actions/join/index.js +0 -6
- package/types/yield/actions/join/step.d.ts +0 -95
- package/types/yield/actions/join/step.js +0 -46
- package/types/yield/actions/join/submit.d.ts +0 -57
- package/types/yield/actions/join/submit.js +0 -1
- package/types/yield/actions/join/validate.d.ts +0 -18
- package/types/yield/actions/join/validate.js +0 -10
- package/types/yield/actions/others.d.ts +0 -85
- package/types/yield/actions/others.js +0 -1
- package/types/yield/index.d.ts +0 -2
- package/types/yield/index.js +0 -5
- package/types/yield/info/account/index.d.ts +0 -4
- package/types/yield/info/account/index.js +0 -7
- package/types/yield/info/account/info.d.ts +0 -92
- package/types/yield/info/account/info.js +0 -1
- package/types/yield/info/account/reward.d.ts +0 -45
- package/types/yield/info/account/reward.js +0 -1
- package/types/yield/info/account/target.d.ts +0 -43
- package/types/yield/info/account/target.js +0 -27
- package/types/yield/info/account/unstake.d.ts +0 -31
- package/types/yield/info/account/unstake.js +0 -22
- package/types/yield/info/base.d.ts +0 -45
- package/types/yield/info/base.js +0 -36
- package/types/yield/info/chain/index.d.ts +0 -2
- package/types/yield/info/chain/index.js +0 -5
- package/types/yield/info/chain/info.d.ts +0 -251
- package/types/yield/info/chain/info.js +0 -1
- package/types/yield/info/chain/target.d.ts +0 -37
- package/types/yield/info/chain/target.js +0 -1
- package/types/yield/info/index.d.ts +0 -4
- package/types/yield/info/index.js +0 -7
- package/types/yield/info/pallet.d.ts +0 -143
- package/types/yield/info/pallet.js +0 -9
- package/utils/object.d.ts +0 -1
- package/utils/object.js +0 -6
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
-
import { getBondedValidators,
|
|
6
|
-
import { _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
7
|
-
import { parseIdentity } from '@subwallet/extension-base/services/earning-service/utils';
|
|
8
|
-
import { EarningStatus, UnstakingStatus } from '@subwallet/extension-base/types';
|
|
4
|
+
import { StakingStatus, StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
+
import { getBondedValidators, getStakingStatusByNominations, isUnstakeAll, parseIdentity } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
|
|
6
|
+
import { _STAKING_CHAIN_GROUP, _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
9
7
|
import { parseRawNumber, reformatAddress } from '@subwallet/extension-base/utils';
|
|
10
8
|
import { BN, BN_ZERO } from '@polkadot/util';
|
|
11
9
|
import { isEthereumAddress } from '@polkadot/util-crypto';
|
|
@@ -18,7 +16,7 @@ export function subscribeAmplitudeStakingMetadata(chain, substrateApi, callback)
|
|
|
18
16
|
const unstakingDelay = substrateApi.api.consts.parachainStaking.stakeDuration.toString();
|
|
19
17
|
const _blockPerRound = substrateApi.api.consts.parachainStaking.defaultBlocksPerRound.toString();
|
|
20
18
|
const blockPerRound = parseFloat(_blockPerRound);
|
|
21
|
-
const blockDuration = (_STAKING_ERA_LENGTH_MAP[chain] || _STAKING_ERA_LENGTH_MAP.default) / blockPerRound;
|
|
19
|
+
const blockDuration = (_STAKING_ERA_LENGTH_MAP[chain] || _STAKING_ERA_LENGTH_MAP.default) / blockPerRound;
|
|
22
20
|
const unstakingPeriod = blockDuration * parseInt(unstakingDelay);
|
|
23
21
|
callback(chain, {
|
|
24
22
|
chain,
|
|
@@ -60,48 +58,54 @@ export async function subscribeAmplitudeNominatorMetadata(chainInfo, address, su
|
|
|
60
58
|
const nominationList = [];
|
|
61
59
|
const unstakingList = [];
|
|
62
60
|
const minDelegatorStake = substrateApi.api.consts.parachainStaking.minDelegatorStake.toString();
|
|
61
|
+
const hasUnstakingInfo = unstakingInfo && Object.values(unstakingInfo).length > 0;
|
|
63
62
|
let activeStake = '0';
|
|
64
63
|
if (delegatorState) {
|
|
65
64
|
// delegatorState can be null while unstaking all
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
65
|
+
const identityPromises = delegatorState.map(delegate => parseIdentity(substrateApi, delegate.owner));
|
|
66
|
+
const identities = await Promise.all(identityPromises);
|
|
67
|
+
for (let i = 0; i < delegatorState.length; i++) {
|
|
68
|
+
const delegate = delegatorState[i];
|
|
69
|
+
const [identity] = identities[i];
|
|
70
|
+
activeStake = delegate.amount.toString();
|
|
71
|
+
const bnActiveStake = new BN(activeStake);
|
|
72
|
+
let delegationStatus = StakingStatus.NOT_EARNING;
|
|
73
|
+
if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegatorStake))) {
|
|
74
|
+
delegationStatus = StakingStatus.EARNING_REWARD;
|
|
75
|
+
}
|
|
76
|
+
nominationList.push({
|
|
77
|
+
status: delegationStatus,
|
|
78
|
+
chain: chainInfo.slug,
|
|
79
|
+
validatorAddress: delegate.owner,
|
|
80
|
+
activeStake: delegate.amount.toString(),
|
|
81
|
+
validatorMinStake: '0',
|
|
82
|
+
hasUnstaking: hasUnstakingInfo,
|
|
83
|
+
validatorIdentity: identity
|
|
84
|
+
});
|
|
85
|
+
if (hasUnstakingInfo) {
|
|
86
|
+
const _currentBlockInfo = await substrateApi.api.rpc.chain.getHeader();
|
|
87
|
+
const currentBlockInfo = _currentBlockInfo.toPrimitive();
|
|
88
|
+
const currentBlockNumber = currentBlockInfo.number;
|
|
89
|
+
const _blockPerRound = substrateApi.api.consts.parachainStaking.defaultBlocksPerRound.toString();
|
|
90
|
+
const blockPerRound = parseFloat(_blockPerRound);
|
|
91
|
+
const nearestUnstakingBlock = Object.keys(unstakingInfo)[0];
|
|
92
|
+
const nearestUnstakingAmount = Object.values(unstakingInfo)[0];
|
|
93
|
+
const blockDuration = (_STAKING_ERA_LENGTH_MAP[chainInfo.slug] || _STAKING_ERA_LENGTH_MAP.default) / blockPerRound; // in hours
|
|
92
94
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
95
|
+
const isClaimable = parseInt(nearestUnstakingBlock) - currentBlockNumber < 0;
|
|
96
|
+
const remainingBlock = parseInt(nearestUnstakingBlock) - currentBlockNumber;
|
|
97
|
+
const waitingTime = remainingBlock * blockDuration;
|
|
98
|
+
unstakingList.push({
|
|
99
|
+
chain: chainInfo.slug,
|
|
100
|
+
status: isClaimable ? UnstakingStatus.CLAIMABLE : UnstakingStatus.UNLOCKING,
|
|
101
|
+
claimable: nearestUnstakingAmount.toString(),
|
|
102
|
+
waitingTime,
|
|
103
|
+
validatorAddress: (delegate === null || delegate === void 0 ? void 0 : delegate.owner) || undefined
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
103
107
|
}
|
|
104
|
-
const stakingStatus =
|
|
108
|
+
const stakingStatus = getStakingStatusByNominations(new BN(activeStake), nominationList);
|
|
105
109
|
return {
|
|
106
110
|
chain: chainInfo.slug,
|
|
107
111
|
type: StakingType.NOMINATED,
|
|
@@ -133,7 +137,7 @@ export async function getAmplitudeNominatorMetadata(chainInfo, address, substrat
|
|
|
133
137
|
chain: chainInfo.slug,
|
|
134
138
|
type: StakingType.NOMINATED,
|
|
135
139
|
address,
|
|
136
|
-
status:
|
|
140
|
+
status: StakingStatus.NOT_STAKING,
|
|
137
141
|
activeStake: '0',
|
|
138
142
|
nominations: [],
|
|
139
143
|
unstakings: []
|
|
@@ -145,9 +149,9 @@ export async function getAmplitudeNominatorMetadata(chainInfo, address, substrat
|
|
|
145
149
|
const [identity] = await parseIdentity(substrateApi, delegatorState.owner);
|
|
146
150
|
activeStake = delegatorState.amount.toString();
|
|
147
151
|
const bnActiveStake = new BN(activeStake);
|
|
148
|
-
let delegationStatus =
|
|
152
|
+
let delegationStatus = StakingStatus.NOT_EARNING;
|
|
149
153
|
if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegatorStake))) {
|
|
150
|
-
delegationStatus =
|
|
154
|
+
delegationStatus = StakingStatus.EARNING_REWARD;
|
|
151
155
|
}
|
|
152
156
|
nominationList.push({
|
|
153
157
|
status: delegationStatus,
|
|
@@ -183,7 +187,7 @@ export async function getAmplitudeNominatorMetadata(chainInfo, address, substrat
|
|
|
183
187
|
if (nominationList.length === 0 && unstakingList.length === 0) {
|
|
184
188
|
return;
|
|
185
189
|
}
|
|
186
|
-
const stakingStatus =
|
|
190
|
+
const stakingStatus = getStakingStatusByNominations(new BN(activeStake), nominationList);
|
|
187
191
|
return {
|
|
188
192
|
chain,
|
|
189
193
|
type: StakingType.NOMINATED,
|
|
@@ -196,33 +200,61 @@ export async function getAmplitudeNominatorMetadata(chainInfo, address, substrat
|
|
|
196
200
|
}
|
|
197
201
|
export async function getAmplitudeCollatorsInfo(chain, substrateApi) {
|
|
198
202
|
const chainApi = await substrateApi.isReady;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
203
|
+
|
|
204
|
+
// Noted: Krest do not have reward
|
|
205
|
+
if (_STAKING_CHAIN_GROUP.krest_network.includes(chain)) {
|
|
206
|
+
const _allCollators = await chainApi.api.query.parachainStaking.candidatePool.entries();
|
|
207
|
+
const maxDelegatorsPerCollator = chainApi.api.consts.parachainStaking.maxDelegatorsPerCollator.toString();
|
|
208
|
+
const allCollators = [];
|
|
209
|
+
for (const _collator of _allCollators) {
|
|
210
|
+
const collatorInfo = _collator[1].toPrimitive();
|
|
211
|
+
const bnTotalStake = new BN(collatorInfo.total);
|
|
212
|
+
const bnOwnStake = new BN(collatorInfo.stake);
|
|
213
|
+
const bnOtherStake = bnTotalStake.sub(bnOwnStake);
|
|
214
|
+
allCollators.push({
|
|
215
|
+
address: collatorInfo.id,
|
|
216
|
+
totalStake: bnTotalStake.toString(),
|
|
217
|
+
ownStake: bnOwnStake.toString(),
|
|
218
|
+
otherStake: bnOtherStake.toString(),
|
|
219
|
+
nominatorCount: collatorInfo.delegators.length,
|
|
220
|
+
commission: 0,
|
|
221
|
+
blocked: false,
|
|
222
|
+
isVerified: false,
|
|
223
|
+
minBond: '0',
|
|
224
|
+
chain,
|
|
225
|
+
isCrowded: collatorInfo.delegators.length >= parseInt(maxDelegatorsPerCollator)
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
return allCollators;
|
|
229
|
+
} else {
|
|
230
|
+
const [_allCollators, _inflationConfig] = await Promise.all([chainApi.api.query.parachainStaking.candidatePool.entries(), chainApi.api.query.parachainStaking.inflationConfig()]);
|
|
231
|
+
const maxDelegatorsPerCollator = chainApi.api.consts.parachainStaking.maxDelegatorsPerCollator.toString();
|
|
232
|
+
const inflationConfig = _inflationConfig.toHuman();
|
|
233
|
+
const rawDelegatorReturn = inflationConfig.delegator.rewardRate.annual;
|
|
234
|
+
const delegatorReturn = parseFloat(rawDelegatorReturn.split('%')[0]);
|
|
235
|
+
const allCollators = [];
|
|
236
|
+
for (const _collator of _allCollators) {
|
|
237
|
+
const collatorInfo = _collator[1].toPrimitive();
|
|
238
|
+
const bnTotalStake = new BN(collatorInfo.total);
|
|
239
|
+
const bnOwnStake = new BN(collatorInfo.stake);
|
|
240
|
+
const bnOtherStake = bnTotalStake.sub(bnOwnStake);
|
|
241
|
+
allCollators.push({
|
|
242
|
+
address: collatorInfo.id,
|
|
243
|
+
totalStake: bnTotalStake.toString(),
|
|
244
|
+
ownStake: bnOwnStake.toString(),
|
|
245
|
+
otherStake: bnOtherStake.toString(),
|
|
246
|
+
nominatorCount: collatorInfo.delegators.length,
|
|
247
|
+
commission: 0,
|
|
248
|
+
expectedReturn: delegatorReturn,
|
|
249
|
+
blocked: false,
|
|
250
|
+
isVerified: false,
|
|
251
|
+
minBond: '0',
|
|
252
|
+
chain,
|
|
253
|
+
isCrowded: collatorInfo.delegators.length >= parseInt(maxDelegatorsPerCollator)
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
return allCollators;
|
|
224
257
|
}
|
|
225
|
-
return allCollators;
|
|
226
258
|
}
|
|
227
259
|
export async function getAmplitudeBondingExtrinsic(substrateApi, amount, selectedValidatorInfo, nominatorMetadata) {
|
|
228
260
|
const chainApi = await substrateApi.isReady;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
-
import {
|
|
4
|
+
import { StakingStatus, StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
+
import { getStakingStatusByNominations } 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';
|
|
8
7
|
import { isUrl, parseRawNumber } from '@subwallet/extension-base/utils';
|
|
9
8
|
import fetch from 'cross-fetch';
|
|
10
9
|
import { BN, BN_ZERO } from '@polkadot/util';
|
|
@@ -100,7 +99,7 @@ export async function subscribeAstarNominatorMetadata(chainInfo, address, substr
|
|
|
100
99
|
const currentStake = stakeList.slice(-1)[0].staked.toString() || '0';
|
|
101
100
|
const bnCurrentStake = new BN(currentStake);
|
|
102
101
|
if (bnCurrentStake.gt(BN_ZERO)) {
|
|
103
|
-
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ?
|
|
102
|
+
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ? StakingStatus.EARNING_REWARD : StakingStatus.NOT_EARNING;
|
|
104
103
|
bnTotalActiveStake = bnTotalActiveStake.add(bnCurrentStake);
|
|
105
104
|
const dappInfo = dAppInfoMap[dappAddress];
|
|
106
105
|
nominationList.push({
|
|
@@ -135,13 +134,13 @@ export async function subscribeAstarNominatorMetadata(chainInfo, address, substr
|
|
|
135
134
|
chain: chainInfo.slug,
|
|
136
135
|
type: StakingType.NOMINATED,
|
|
137
136
|
address,
|
|
138
|
-
status:
|
|
137
|
+
status: StakingStatus.NOT_STAKING,
|
|
139
138
|
activeStake: '0',
|
|
140
139
|
nominations: [],
|
|
141
140
|
unstakings: []
|
|
142
141
|
};
|
|
143
142
|
}
|
|
144
|
-
const stakingStatus =
|
|
143
|
+
const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
|
|
145
144
|
return {
|
|
146
145
|
chain: chainInfo.slug,
|
|
147
146
|
type: StakingType.NOMINATED,
|
|
@@ -186,7 +185,7 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
186
185
|
const currentStake = stakeList.slice(-1)[0].staked.toString() || '0';
|
|
187
186
|
const bnCurrentStake = new BN(currentStake);
|
|
188
187
|
if (bnCurrentStake.gt(BN_ZERO)) {
|
|
189
|
-
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ?
|
|
188
|
+
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ? StakingStatus.EARNING_REWARD : StakingStatus.NOT_EARNING;
|
|
190
189
|
bnTotalActiveStake = bnTotalActiveStake.add(bnCurrentStake);
|
|
191
190
|
const dappInfo = dAppInfoMap[dappAddress];
|
|
192
191
|
nominationList.push({
|
|
@@ -221,13 +220,13 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
221
220
|
chain: chainInfo.slug,
|
|
222
221
|
type: StakingType.NOMINATED,
|
|
223
222
|
address,
|
|
224
|
-
status:
|
|
223
|
+
status: StakingStatus.NOT_STAKING,
|
|
225
224
|
activeStake: '0',
|
|
226
225
|
nominations: [],
|
|
227
226
|
unstakings: []
|
|
228
227
|
};
|
|
229
228
|
}
|
|
230
|
-
const stakingStatus =
|
|
229
|
+
const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
|
|
231
230
|
return {
|
|
232
231
|
chain,
|
|
233
232
|
type: StakingType.NOMINATED,
|
|
@@ -4,13 +4,14 @@ import { ChainStakingMetadata, NominatorMetadata, StakingType, UnstakingInfo, Va
|
|
|
4
4
|
import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
5
5
|
export declare function validateUnbondingCondition(nominatorMetadata: NominatorMetadata, amount: string, chain: string, chainStakingMetadata: ChainStakingMetadata, selectedValidator?: string): TransactionError[];
|
|
6
6
|
export declare function validateBondingCondition(chainInfo: _ChainInfo, amount: string, selectedValidators: ValidatorInfo[], address: string, chainStakingMetadata: ChainStakingMetadata, nominatorMetadata?: NominatorMetadata): TransactionError[];
|
|
7
|
+
/** Deprecated */
|
|
7
8
|
export declare function getChainStakingMetadata(chainInfo: _ChainInfo, substrateApi: _SubstrateApi): Promise<ChainStakingMetadata>;
|
|
8
9
|
/**
|
|
9
10
|
* Deprecated
|
|
10
11
|
* */
|
|
11
12
|
export declare function getNominatorMetadata(chainInfo: _ChainInfo, address: string, substrateApi: _SubstrateApi): Promise<NominatorMetadata | undefined>;
|
|
12
13
|
export declare function getValidatorsInfo(networkKey: string, substrateApi: _SubstrateApi, decimals: number, chainStakingMetadata: ChainStakingMetadata): Promise<ValidatorInfo[]>;
|
|
13
|
-
export declare function getNominationPoolsInfo(chain: string, substrateApi: _SubstrateApi): Promise<import("
|
|
14
|
+
export declare function getNominationPoolsInfo(chain: string, substrateApi: _SubstrateApi): Promise<import("@subwallet/extension-base/background/KoniTypes").NominationPoolInfo[]>;
|
|
14
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>>;
|
|
15
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>>;
|
|
16
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,14 +6,10 @@ 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/
|
|
10
|
-
|
|
9
|
+
import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
11
10
|
// all addresses must be converted to its chain format
|
|
12
11
|
|
|
13
12
|
export function validateUnbondingCondition(nominatorMetadata, amount, chain, chainStakingMetadata, selectedValidator) {
|
|
14
|
-
if (nominatorMetadata.type === StakingType.LIQUID_STAKING) {
|
|
15
|
-
return [];
|
|
16
|
-
}
|
|
17
13
|
if (_STAKING_CHAIN_GROUP.relay.includes(chain)) {
|
|
18
14
|
return validateRelayUnbondingCondition(amount, chainStakingMetadata, nominatorMetadata);
|
|
19
15
|
}
|
|
@@ -25,6 +21,8 @@ export function validateBondingCondition(chainInfo, amount, selectedValidators,
|
|
|
25
21
|
}
|
|
26
22
|
return validateParaChainBondingCondition(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
|
|
27
23
|
}
|
|
24
|
+
|
|
25
|
+
/** Deprecated */
|
|
28
26
|
export async function getChainStakingMetadata(chainInfo, substrateApi) {
|
|
29
27
|
if (_STAKING_CHAIN_GROUP.astar.includes(chainInfo.slug)) {
|
|
30
28
|
return getAstarStakingMetadata(chainInfo.slug, substrateApi);
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
5
|
-
import { BasicTxErrorType, StakingTxErrorType, StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
|
-
import { getBondedValidators,
|
|
5
|
+
import { BasicTxErrorType, StakingStatus, StakingTxErrorType, StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
|
+
import { getBondedValidators, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, getParaCurrentInflation, getStakingStatusByNominations, isUnstakeAll, parseIdentity } 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';
|
|
11
9
|
import { isSameAddress, parseRawNumber, reformatAddress } from '@subwallet/extension-base/utils';
|
|
12
10
|
import { BN, BN_ZERO } from '@polkadot/util';
|
|
13
11
|
import { isEthereumAddress } from '@polkadot/util-crypto';
|
|
@@ -48,7 +46,7 @@ export function validateParaChainBondingCondition(chainInfo, amount, selectedCol
|
|
|
48
46
|
const minStakeErrorMessage = getMinStakeErrorMessage(chainInfo, bnMinStake);
|
|
49
47
|
const maxValidatorErrorMessage = getMaxValidatorErrorMessage(chainInfo, chainStakingMetadata.maxValidatorPerNominator);
|
|
50
48
|
const existUnstakeErrorMessage = getExistUnstakeErrorMessage(chainInfo.slug, nominatorMetadata === null || nominatorMetadata === void 0 ? void 0 : nominatorMetadata.type, true);
|
|
51
|
-
if (!nominatorMetadata || nominatorMetadata.status ===
|
|
49
|
+
if (!nominatorMetadata || nominatorMetadata.status === StakingStatus.NOT_STAKING) {
|
|
52
50
|
if (!bnTotalStake.gte(bnMinStake)) {
|
|
53
51
|
errors.push(new TransactionError(StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
|
|
54
52
|
}
|
|
@@ -89,17 +87,18 @@ export function validateParaChainBondingCondition(chainInfo, amount, selectedCol
|
|
|
89
87
|
}
|
|
90
88
|
export function subscribeParaChainStakingMetadata(chain, substrateApi, callback) {
|
|
91
89
|
return substrateApi.api.query.parachainStaking.round(_round => {
|
|
92
|
-
var _substrateApi$api$con, _substrateApi$api$con2, _substrateApi$api$con3;
|
|
90
|
+
var _substrateApi$api$con, _substrateApi$api$con2, _substrateApi$api$con3, _substrateApi$api$con4, _substrateApi$api$con5, _substrateApi$api$con6;
|
|
93
91
|
const roundObj = _round.toHuman();
|
|
94
92
|
const round = parseRawNumber(roundObj.current);
|
|
95
93
|
const maxDelegations = (_substrateApi$api$con = substrateApi.api.consts) === null || _substrateApi$api$con === void 0 ? void 0 : (_substrateApi$api$con2 = _substrateApi$api$con.parachainStaking) === null || _substrateApi$api$con2 === void 0 ? void 0 : (_substrateApi$api$con3 = _substrateApi$api$con2.maxDelegationsPerDelegator) === null || _substrateApi$api$con3 === void 0 ? void 0 : _substrateApi$api$con3.toString();
|
|
96
94
|
const unstakingDelay = substrateApi.api.consts.parachainStaking.delegationBondLessDelay.toString();
|
|
97
95
|
const unstakingPeriod = parseInt(unstakingDelay) * (_STAKING_ERA_LENGTH_MAP[chain] || _STAKING_ERA_LENGTH_MAP.default);
|
|
96
|
+
const minDelegatorStake = (_substrateApi$api$con4 = substrateApi.api.consts) === null || _substrateApi$api$con4 === void 0 ? void 0 : (_substrateApi$api$con5 = _substrateApi$api$con4.parachainStaking) === null || _substrateApi$api$con5 === void 0 ? void 0 : (_substrateApi$api$con6 = _substrateApi$api$con5.minDelegatorStk) === null || _substrateApi$api$con6 === void 0 ? void 0 : _substrateApi$api$con6.toString();
|
|
98
97
|
callback(chain, {
|
|
99
98
|
chain,
|
|
100
99
|
type: StakingType.NOMINATED,
|
|
101
100
|
era: round,
|
|
102
|
-
minStake: '0',
|
|
101
|
+
minStake: minDelegatorStake || '0',
|
|
103
102
|
maxValidatorPerNominator: parseInt(maxDelegations),
|
|
104
103
|
maxWithdrawalRequestPerValidator: 1,
|
|
105
104
|
// by default
|
|
@@ -109,11 +108,13 @@ export function subscribeParaChainStakingMetadata(chain, substrateApi, callback)
|
|
|
109
108
|
});
|
|
110
109
|
}
|
|
111
110
|
export async function getParaChainStakingMetadata(chain, substrateApi) {
|
|
111
|
+
var _chainApi$api$consts$, _chainApi$api$consts$2;
|
|
112
112
|
const chainApi = await substrateApi.isReady;
|
|
113
113
|
const _round = (await chainApi.api.query.parachainStaking.round()).toHuman();
|
|
114
114
|
const round = parseRawNumber(_round.current);
|
|
115
115
|
const maxDelegations = chainApi.api.consts.parachainStaking.maxDelegationsPerDelegator.toString();
|
|
116
116
|
const unstakingDelay = chainApi.api.consts.parachainStaking.delegationBondLessDelay.toString();
|
|
117
|
+
const minDelegatorStake = (_chainApi$api$consts$ = chainApi.api.consts.parachainStaking) === null || _chainApi$api$consts$ === void 0 ? void 0 : (_chainApi$api$consts$2 = _chainApi$api$consts$.minDelegatorStk) === null || _chainApi$api$consts$2 === void 0 ? void 0 : _chainApi$api$consts$2.toString();
|
|
117
118
|
let _unvestedAllocation;
|
|
118
119
|
if (chainApi.api.query.vesting && chainApi.api.query.vesting.totalUnvestedAllocation) {
|
|
119
120
|
_unvestedAllocation = await chainApi.api.query.vesting.totalUnvestedAllocation();
|
|
@@ -138,7 +139,7 @@ export async function getParaChainStakingMetadata(chain, substrateApi) {
|
|
|
138
139
|
type: StakingType.NOMINATED,
|
|
139
140
|
era: round,
|
|
140
141
|
inflation,
|
|
141
|
-
minStake: '0',
|
|
142
|
+
minStake: minDelegatorStake || '0',
|
|
142
143
|
maxValidatorPerNominator: parseInt(maxDelegations),
|
|
143
144
|
maxWithdrawalRequestPerValidator: 1,
|
|
144
145
|
// by default
|
|
@@ -159,7 +160,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
|
|
|
159
160
|
const minDelegation = collatorInfo === null || collatorInfo === void 0 ? void 0 : collatorInfo.lowestTopDelegationAmount.toString();
|
|
160
161
|
const delegationScheduledRequests = _delegationScheduledRequests.toPrimitive();
|
|
161
162
|
let hasUnstaking = false;
|
|
162
|
-
let delegationStatus =
|
|
163
|
+
let delegationStatus = StakingStatus.NOT_EARNING;
|
|
163
164
|
|
|
164
165
|
// parse unstaking info
|
|
165
166
|
if (delegationScheduledRequests) {
|
|
@@ -187,7 +188,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
|
|
|
187
188
|
const bnUnstakeBalance = unstakingMap[delegation.owner] ? new BN(unstakingMap[delegation.owner].claimable) : BN_ZERO;
|
|
188
189
|
const bnActiveStake = bnStake.sub(bnUnstakeBalance);
|
|
189
190
|
if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegation))) {
|
|
190
|
-
delegationStatus =
|
|
191
|
+
delegationStatus = StakingStatus.EARNING_REWARD;
|
|
191
192
|
}
|
|
192
193
|
bnTotalActiveStake = bnTotalActiveStake.add(bnActiveStake);
|
|
193
194
|
nominationList.push({
|
|
@@ -208,7 +209,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
|
|
|
208
209
|
// nomination.validatorMinStake = collatorInfo.lowestTopDelegationAmount.toString();
|
|
209
210
|
// }));
|
|
210
211
|
|
|
211
|
-
const stakingStatus =
|
|
212
|
+
const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
|
|
212
213
|
return {
|
|
213
214
|
chain: chainInfo.slug,
|
|
214
215
|
type: StakingType.NOMINATED,
|
|
@@ -238,7 +239,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
238
239
|
chain: chainInfo.slug,
|
|
239
240
|
type: StakingType.NOMINATED,
|
|
240
241
|
address,
|
|
241
|
-
status:
|
|
242
|
+
status: StakingStatus.NOT_STAKING,
|
|
242
243
|
activeStake: '0',
|
|
243
244
|
nominations: [],
|
|
244
245
|
unstakings: []
|
|
@@ -253,7 +254,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
253
254
|
const delegationScheduledRequests = _delegationScheduledRequests.toPrimitive();
|
|
254
255
|
const currentRound = roundInfo.current;
|
|
255
256
|
let hasUnstaking = false;
|
|
256
|
-
let delegationStatus =
|
|
257
|
+
let delegationStatus = StakingStatus.NOT_EARNING;
|
|
257
258
|
|
|
258
259
|
// parse unstaking info
|
|
259
260
|
if (delegationScheduledRequests) {
|
|
@@ -281,7 +282,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
281
282
|
const bnUnstakeBalance = unstakingMap[delegation.owner] ? new BN(unstakingMap[delegation.owner].claimable) : BN_ZERO;
|
|
282
283
|
const bnActiveStake = bnStake.sub(bnUnstakeBalance);
|
|
283
284
|
if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegation))) {
|
|
284
|
-
delegationStatus =
|
|
285
|
+
delegationStatus = StakingStatus.EARNING_REWARD;
|
|
285
286
|
}
|
|
286
287
|
bnTotalActiveStake = bnTotalActiveStake.add(bnActiveStake);
|
|
287
288
|
nominationList.push({
|
|
@@ -298,7 +299,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
298
299
|
const collatorInfo = _collatorInfo.toPrimitive();
|
|
299
300
|
nomination.validatorMinStake = collatorInfo.lowestTopDelegationAmount.toString();
|
|
300
301
|
}));
|
|
301
|
-
const stakingStatus =
|
|
302
|
+
const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
|
|
302
303
|
return {
|
|
303
304
|
chain,
|
|
304
305
|
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, NominatorMetadata, UnstakingInfo, ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
|
+
import { ChainStakingMetadata, NominationPoolInfo, NominatorMetadata, UnstakingInfo, ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes';
|
|
4
|
+
import { PalletNominationPoolsPoolMember } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
|
|
4
5
|
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[];
|