@pezkuwi/api-derive 16.5.5 → 16.5.6
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/LICENSE +201 -0
- package/README.md +2 -2
- package/accounts/accountId.js +29 -0
- package/{build/accounts → accounts}/flags.d.ts +2 -2
- package/accounts/flags.js +55 -0
- package/accounts/idAndIndex.js +34 -0
- package/accounts/idToIndex.js +17 -0
- package/{build/accounts → accounts}/identity.d.ts +3 -3
- package/accounts/identity.js +153 -0
- package/{src/accounts/index.ts → accounts/index.js} +0 -3
- package/accounts/indexToId.js +18 -0
- package/accounts/indexes.js +34 -0
- package/accounts/info.js +33 -0
- package/{src/alliance/index.ts → alliance/index.js} +0 -5
- package/augment.js +1 -0
- package/bagsList/get.js +42 -0
- package/bagsList/getExpanded.js +19 -0
- package/bagsList/index.js +3 -0
- package/bagsList/listNodes.d.ts +9 -0
- package/bagsList/listNodes.js +26 -0
- package/{build/bagsList → bagsList}/types.d.ts +3 -3
- package/bagsList/types.js +1 -0
- package/bagsList/util.js +8 -0
- package/balances/account.js +149 -0
- package/balances/all.js +167 -0
- package/{src/balances/index.ts → balances/index.js} +0 -6
- package/{build/balances → balances}/types.d.ts +7 -7
- package/balances/types.js +1 -0
- package/balances/votingBalances.js +18 -0
- package/bounties/bounties.js +50 -0
- package/bounties/helpers/filterBountyProposals.js +5 -0
- package/bounties/index.js +1 -0
- package/bundle.js +107 -0
- package/{src/chain/bestNumber.ts → chain/bestNumber.js} +1 -10
- package/{src/chain/bestNumberFinalized.ts → chain/bestNumberFinalized.js} +1 -10
- package/chain/bestNumberLag.js +19 -0
- package/chain/getBlock.js +25 -0
- package/chain/getBlockByNumber.js +16 -0
- package/chain/getHeader.js +19 -0
- package/{src/chain/index.ts → chain/index.js} +0 -3
- package/chain/subscribeFinalizedBlocks.js +15 -0
- package/chain/subscribeFinalizedHeads.js +37 -0
- package/chain/subscribeNewBlocks.js +15 -0
- package/chain/subscribeNewHeads.js +21 -0
- package/chain/util.js +57 -0
- package/cjs/accounts/accountId.d.ts +17 -0
- package/cjs/accounts/accountId.js +32 -0
- package/cjs/accounts/flags.d.ts +29 -0
- package/cjs/accounts/flags.js +59 -0
- package/cjs/accounts/idAndIndex.d.ts +15 -0
- package/cjs/accounts/idAndIndex.js +37 -0
- package/cjs/accounts/idToIndex.d.ts +16 -0
- package/cjs/accounts/idToIndex.js +20 -0
- package/cjs/accounts/identity.d.ts +48 -0
- package/cjs/accounts/identity.js +159 -0
- package/cjs/accounts/index.d.ts +8 -0
- package/cjs/accounts/index.js +11 -0
- package/cjs/accounts/indexToId.d.ts +15 -0
- package/cjs/accounts/indexToId.js +21 -0
- package/cjs/accounts/indexes.d.ts +16 -0
- package/cjs/accounts/indexes.js +37 -0
- package/cjs/accounts/info.d.ts +18 -0
- package/cjs/accounts/info.js +36 -0
- package/cjs/accounts/types.d.ts +39 -0
- package/cjs/accounts/types.js +2 -0
- package/cjs/alliance/index.d.ts +70 -0
- package/cjs/alliance/index.js +74 -0
- package/cjs/augment.d.ts +1 -0
- package/cjs/augment.js +3 -0
- package/cjs/bagsList/get.d.ts +12 -0
- package/cjs/bagsList/get.js +47 -0
- package/cjs/bagsList/getExpanded.d.ts +16 -0
- package/cjs/bagsList/getExpanded.js +23 -0
- package/cjs/bagsList/index.d.ts +3 -0
- package/cjs/bagsList/index.js +6 -0
- package/cjs/bagsList/listNodes.d.ts +9 -0
- package/cjs/bagsList/listNodes.js +29 -0
- package/cjs/bagsList/types.d.ts +13 -0
- package/cjs/bagsList/types.js +2 -0
- package/cjs/bagsList/util.d.ts +2 -0
- package/cjs/bagsList/util.js +11 -0
- package/cjs/balances/account.d.ts +17 -0
- package/cjs/balances/account.js +152 -0
- package/cjs/balances/all.d.ts +20 -0
- package/cjs/balances/all.js +170 -0
- package/cjs/balances/index.d.ts +20 -0
- package/cjs/balances/index.js +25 -0
- package/cjs/balances/types.d.ts +69 -0
- package/cjs/balances/types.js +2 -0
- package/cjs/balances/votingBalances.d.ts +15 -0
- package/cjs/balances/votingBalances.js +21 -0
- package/cjs/bounties/bounties.d.ts +12 -0
- package/cjs/bounties/bounties.js +53 -0
- package/cjs/bounties/helpers/filterBountyProposals.d.ts +2 -0
- package/cjs/bounties/helpers/filterBountyProposals.js +8 -0
- package/cjs/bounties/index.d.ts +1 -0
- package/cjs/bounties/index.js +4 -0
- package/cjs/bundle.d.ts +9 -0
- package/cjs/bundle.js +112 -0
- package/cjs/chain/bestNumber.d.ts +11 -0
- package/cjs/chain/bestNumber.js +15 -0
- package/cjs/chain/bestNumberFinalized.d.ts +12 -0
- package/cjs/chain/bestNumberFinalized.js +16 -0
- package/cjs/chain/bestNumberLag.d.ts +15 -0
- package/cjs/chain/bestNumberLag.js +22 -0
- package/cjs/chain/getBlock.d.ts +15 -0
- package/cjs/chain/getBlock.js +28 -0
- package/{src/chain/getBlockByNumber.ts → cjs/chain/getBlockByNumber.d.ts} +1 -15
- package/cjs/chain/getBlockByNumber.js +19 -0
- package/cjs/chain/getHeader.d.ts +16 -0
- package/cjs/chain/getHeader.js +22 -0
- package/cjs/chain/index.d.ts +10 -0
- package/cjs/chain/index.js +13 -0
- package/cjs/chain/subscribeFinalizedBlocks.d.ts +14 -0
- package/cjs/chain/subscribeFinalizedBlocks.js +18 -0
- package/cjs/chain/subscribeFinalizedHeads.d.ts +22 -0
- package/cjs/chain/subscribeFinalizedHeads.js +41 -0
- package/cjs/chain/subscribeNewBlocks.d.ts +14 -0
- package/cjs/chain/subscribeNewBlocks.js +18 -0
- package/cjs/chain/subscribeNewHeads.d.ts +15 -0
- package/cjs/chain/subscribeNewHeads.js +24 -0
- package/cjs/chain/util.d.ts +9 -0
- package/cjs/chain/util.js +61 -0
- package/cjs/collective/helpers.js +23 -0
- package/cjs/collective/index.js +6 -0
- package/cjs/collective/members.js +5 -0
- package/cjs/collective/prime.js +11 -0
- package/cjs/collective/proposals.js +44 -0
- package/cjs/collective/types.js +2 -0
- package/{build → cjs}/contracts/fees.d.ts +1 -1
- package/cjs/contracts/fees.js +48 -0
- package/cjs/contracts/index.js +4 -0
- package/cjs/council/index.js +77 -0
- package/cjs/council/types.js +2 -0
- package/cjs/council/votes.js +59 -0
- package/cjs/council/votesOf.js +21 -0
- package/{build → cjs}/crowdloan/childKey.d.ts +2 -2
- package/cjs/crowdloan/childKey.js +26 -0
- package/{build → cjs}/crowdloan/contributions.d.ts +2 -2
- package/cjs/crowdloan/contributions.js +83 -0
- package/cjs/crowdloan/index.js +6 -0
- package/{build → cjs}/crowdloan/ownContributions.d.ts +2 -2
- package/cjs/crowdloan/ownContributions.js +48 -0
- package/cjs/crowdloan/types.js +2 -0
- package/{build → cjs}/crowdloan/util.d.ts +2 -2
- package/cjs/crowdloan/util.js +20 -0
- package/cjs/democracy/dispatchQueue.js +90 -0
- package/cjs/democracy/index.js +14 -0
- package/cjs/democracy/locks.js +65 -0
- package/cjs/democracy/nextExternal.js +31 -0
- package/{build → cjs}/democracy/preimages.d.ts +5 -5
- package/cjs/democracy/preimages.js +117 -0
- package/cjs/democracy/proposals.js +46 -0
- package/cjs/democracy/referendumIds.js +24 -0
- package/cjs/democracy/referendums.js +22 -0
- package/cjs/democracy/referendumsActive.js +19 -0
- package/{build → cjs}/democracy/referendumsFinished.d.ts +2 -2
- package/cjs/democracy/referendumsFinished.js +20 -0
- package/{build → cjs}/democracy/referendumsInfo.d.ts +2 -2
- package/cjs/democracy/referendumsInfo.js +114 -0
- package/cjs/democracy/sqrtElectorate.js +18 -0
- package/{build → cjs}/democracy/types.d.ts +3 -3
- package/cjs/democracy/types.js +2 -0
- package/{build → cjs}/democracy/util.d.ts +5 -5
- package/cjs/democracy/util.js +137 -0
- package/{build → cjs}/derive.d.ts +2 -2
- package/cjs/derive.js +25 -0
- package/cjs/elections/index.js +4 -0
- package/cjs/elections/info.js +93 -0
- package/cjs/elections/types.js +2 -0
- package/cjs/imOnline/index.js +4 -0
- package/cjs/imOnline/receivedHeartbeats.js +42 -0
- package/cjs/index.js +5 -0
- package/cjs/membership/index.js +74 -0
- package/cjs/package.json +3 -0
- package/cjs/packageDetect.d.ts +1 -0
- package/cjs/packageDetect.js +5 -0
- package/cjs/packageInfo.js +4 -0
- package/cjs/session/index.js +6 -0
- package/cjs/session/indexes.js +68 -0
- package/cjs/session/info.js +28 -0
- package/cjs/session/progress.js +93 -0
- package/cjs/session/types.js +2 -0
- package/cjs/society/candidates.js +42 -0
- package/cjs/society/index.js +7 -0
- package/cjs/society/info.js +36 -0
- package/cjs/society/member.js +18 -0
- package/cjs/society/members.js +70 -0
- package/{build → cjs}/society/types.d.ts +5 -5
- package/cjs/society/types.js +2 -0
- package/{build → cjs}/staking/account.d.ts +1 -1
- package/cjs/staking/account.js +80 -0
- package/cjs/staking/cache.js +39 -0
- package/{build → cjs}/staking/currentPoints.d.ts +2 -2
- package/cjs/staking/currentPoints.js +17 -0
- package/cjs/staking/electedInfo.js +37 -0
- package/cjs/staking/erasExposure.js +76 -0
- package/cjs/staking/erasHistoric.js +31 -0
- package/cjs/staking/erasPoints.js +51 -0
- package/cjs/staking/erasPrefs.js +47 -0
- package/cjs/staking/erasRewards.js +38 -0
- package/cjs/staking/erasSlashes.js +53 -0
- package/cjs/staking/index.js +25 -0
- package/{build → cjs}/staking/keys.d.ts +1 -1
- package/cjs/staking/keys.js +61 -0
- package/cjs/staking/overview.js +31 -0
- package/{build → cjs}/staking/ownExposure.d.ts +1 -1
- package/cjs/staking/ownExposure.js +64 -0
- package/{build → cjs}/staking/ownSlashes.d.ts +1 -1
- package/cjs/staking/ownSlashes.js +51 -0
- package/{build → cjs}/staking/query.d.ts +1 -1
- package/cjs/staking/query.js +176 -0
- package/{build → cjs}/staking/stakerExposure.d.ts +1 -1
- package/cjs/staking/stakerExposure.js +56 -0
- package/cjs/staking/stakerPoints.js +35 -0
- package/cjs/staking/stakerPrefs.js +33 -0
- package/{build → cjs}/staking/stakerRewards.d.ts +1 -1
- package/cjs/staking/stakerRewards.js +222 -0
- package/cjs/staking/stakerSlashes.js +34 -0
- package/cjs/staking/stashes.js +38 -0
- package/{build → cjs}/staking/types.d.ts +15 -15
- package/cjs/staking/types.js +2 -0
- package/cjs/staking/util.js +53 -0
- package/cjs/staking/validators.js +71 -0
- package/cjs/staking/waitingInfo.js +32 -0
- package/cjs/technicalCommittee/index.js +74 -0
- package/cjs/teyrchains/index.js +5 -0
- package/{build/parachains → cjs/teyrchains}/info.d.ts +7 -7
- package/cjs/teyrchains/info.js +75 -0
- package/cjs/teyrchains/overview.d.ts +15 -0
- package/cjs/teyrchains/overview.js +39 -0
- package/{build/parachains → cjs/teyrchains}/types.d.ts +6 -6
- package/cjs/teyrchains/types.js +2 -0
- package/cjs/teyrchains/util.js +8 -0
- package/cjs/treasury/index.js +4 -0
- package/cjs/treasury/proposals.js +71 -0
- package/cjs/tx/constants.js +8 -0
- package/cjs/tx/events.js +24 -0
- package/cjs/tx/extrinsicInfo.js +87 -0
- package/cjs/tx/index.js +6 -0
- package/cjs/tx/signingInfo.js +81 -0
- package/cjs/type/HeaderExtended.js +23 -0
- package/cjs/type/SignedBlockExtended.js +60 -0
- package/cjs/type/index.js +7 -0
- package/cjs/type/types.js +2 -0
- package/cjs/type/util.js +36 -0
- package/{build → cjs}/types.d.ts +4 -4
- package/cjs/types.js +15 -0
- package/cjs/util/approvalFlagsToBools.js +19 -0
- package/cjs/util/blockNumber.js +9 -0
- package/cjs/util/cache.js +45 -0
- package/cjs/util/cacheImpl.js +26 -0
- package/cjs/util/first.js +12 -0
- package/cjs/util/index.js +13 -0
- package/cjs/util/lazy.js +7 -0
- package/cjs/util/types.js +2 -0
- package/collective/helpers.d.ts +6 -0
- package/collective/helpers.js +18 -0
- package/collective/index.d.ts +3 -0
- package/collective/index.js +3 -0
- package/collective/members.d.ts +2 -0
- package/collective/members.js +2 -0
- package/collective/prime.d.ts +2 -0
- package/collective/prime.js +8 -0
- package/collective/proposals.d.ts +6 -0
- package/collective/proposals.js +38 -0
- package/{src/collective/types.ts → collective/types.d.ts} +0 -11
- package/collective/types.js +1 -0
- package/contracts/fees.d.ts +14 -0
- package/contracts/fees.js +45 -0
- package/contracts/index.d.ts +1 -0
- package/contracts/index.js +1 -0
- package/council/index.d.ts +72 -0
- package/{src/council/index.ts → council/index.js} +0 -6
- package/{src/council/types.ts → council/types.d.ts} +2 -7
- package/council/types.js +1 -0
- package/council/votes.d.ts +11 -0
- package/council/votes.js +56 -0
- package/council/votesOf.d.ts +16 -0
- package/council/votesOf.js +18 -0
- package/crowdloan/childKey.d.ts +15 -0
- package/crowdloan/childKey.js +23 -0
- package/crowdloan/contributions.d.ts +14 -0
- package/crowdloan/contributions.js +80 -0
- package/crowdloan/index.d.ts +3 -0
- package/crowdloan/index.js +3 -0
- package/crowdloan/ownContributions.d.ts +15 -0
- package/crowdloan/ownContributions.js +45 -0
- package/{src/crowdloan/types.ts → crowdloan/types.d.ts} +2 -7
- package/crowdloan/types.js +1 -0
- package/crowdloan/util.d.ts +10 -0
- package/crowdloan/util.js +17 -0
- package/democracy/dispatchQueue.d.ts +12 -0
- package/democracy/dispatchQueue.js +87 -0
- package/{src/democracy/index.ts → democracy/index.d.ts} +0 -3
- package/democracy/index.js +11 -0
- package/democracy/locks.d.ts +14 -0
- package/democracy/locks.js +62 -0
- package/democracy/nextExternal.d.ts +12 -0
- package/democracy/nextExternal.js +28 -0
- package/democracy/preimages.d.ts +24 -0
- package/democracy/preimages.js +113 -0
- package/democracy/proposals.d.ts +12 -0
- package/democracy/proposals.js +43 -0
- package/democracy/referendumIds.d.ts +12 -0
- package/democracy/referendumIds.js +21 -0
- package/democracy/referendums.d.ts +11 -0
- package/democracy/referendums.js +19 -0
- package/democracy/referendumsActive.d.ts +12 -0
- package/democracy/referendumsActive.js +16 -0
- package/democracy/referendumsFinished.d.ts +15 -0
- package/democracy/referendumsFinished.js +17 -0
- package/democracy/referendumsInfo.d.ts +23 -0
- package/democracy/referendumsInfo.js +108 -0
- package/democracy/sqrtElectorate.d.ts +13 -0
- package/democracy/sqrtElectorate.js +15 -0
- package/democracy/types.d.ts +70 -0
- package/democracy/types.js +1 -0
- package/democracy/util.d.ts +18 -0
- package/democracy/util.js +129 -0
- package/derive.d.ts +52 -0
- package/{src/derive.ts → derive.js} +2 -22
- package/elections/index.d.ts +1 -0
- package/elections/index.js +1 -0
- package/elections/info.d.ts +14 -0
- package/elections/info.js +90 -0
- package/elections/types.d.ts +18 -0
- package/elections/types.js +1 -0
- package/imOnline/index.d.ts +1 -0
- package/imOnline/index.js +1 -0
- package/imOnline/receivedHeartbeats.d.ts +13 -0
- package/imOnline/receivedHeartbeats.js +39 -0
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/membership/index.d.ts +70 -0
- package/{src/membership/index.ts → membership/index.js} +0 -5
- package/package.json +2066 -19
- package/packageDetect.d.ts +1 -0
- package/packageDetect.js +3 -0
- package/packageInfo.d.ts +6 -0
- package/packageInfo.js +1 -0
- package/session/index.d.ts +3 -0
- package/session/index.js +3 -0
- package/session/indexes.d.ts +15 -0
- package/session/indexes.js +65 -0
- package/session/info.d.ts +13 -0
- package/{src/session/info.ts → session/info.js} +7 -21
- package/session/progress.d.ts +47 -0
- package/session/progress.js +89 -0
- package/session/types.d.ts +19 -0
- package/session/types.js +1 -0
- package/society/candidates.d.ts +12 -0
- package/society/candidates.js +39 -0
- package/{src/society/index.ts → society/index.d.ts} +0 -3
- package/society/index.js +4 -0
- package/society/info.d.ts +12 -0
- package/society/info.js +33 -0
- package/society/member.d.ts +14 -0
- package/society/member.js +15 -0
- package/society/members.d.ts +14 -0
- package/society/members.js +66 -0
- package/society/types.d.ts +27 -0
- package/society/types.js +1 -0
- package/staking/account.d.ts +31 -0
- package/staking/account.js +76 -0
- package/staking/cache.d.ts +12 -0
- package/staking/cache.js +32 -0
- package/staking/currentPoints.d.ts +13 -0
- package/staking/currentPoints.js +14 -0
- package/staking/electedInfo.d.ts +23 -0
- package/staking/electedInfo.js +34 -0
- package/staking/erasExposure.d.ts +30 -0
- package/staking/erasExposure.js +72 -0
- package/staking/erasHistoric.d.ts +8 -0
- package/staking/erasHistoric.js +28 -0
- package/staking/erasPoints.d.ts +18 -0
- package/staking/erasPoints.js +47 -0
- package/staking/erasPrefs.d.ts +27 -0
- package/staking/erasPrefs.js +43 -0
- package/staking/erasRewards.d.ts +14 -0
- package/staking/erasRewards.js +34 -0
- package/staking/erasSlashes.d.ts +26 -0
- package/staking/erasSlashes.js +49 -0
- package/{src/staking/index.ts → staking/index.d.ts} +0 -3
- package/staking/index.js +22 -0
- package/staking/keys.d.ts +35 -0
- package/staking/keys.js +57 -0
- package/staking/overview.d.ts +19 -0
- package/staking/overview.js +28 -0
- package/staking/ownExposure.d.ts +37 -0
- package/staking/ownExposure.js +60 -0
- package/staking/ownSlashes.d.ts +35 -0
- package/staking/ownSlashes.js +47 -0
- package/staking/query.d.ts +31 -0
- package/staking/query.js +172 -0
- package/staking/stakerExposure.d.ts +33 -0
- package/staking/stakerExposure.js +51 -0
- package/staking/stakerPoints.d.ts +22 -0
- package/staking/stakerPoints.js +31 -0
- package/staking/stakerPrefs.d.ts +24 -0
- package/staking/stakerPrefs.js +29 -0
- package/staking/stakerRewards.d.ts +49 -0
- package/staking/stakerRewards.js +215 -0
- package/staking/stakerSlashes.d.ts +22 -0
- package/staking/stakerSlashes.js +30 -0
- package/staking/stashes.d.ts +16 -0
- package/staking/stashes.js +35 -0
- package/staking/types.d.ts +139 -0
- package/staking/types.js +1 -0
- package/staking/util.d.ts +14 -0
- package/staking/util.js +46 -0
- package/staking/validators.d.ts +33 -0
- package/{src/staking/validators.ts → staking/validators.js} +25 -40
- package/staking/waitingInfo.d.ts +16 -0
- package/{src/staking/waitingInfo.ts → staking/waitingInfo.js} +8 -24
- package/technicalCommittee/index.d.ts +70 -0
- package/{src/technicalCommittee/index.ts → technicalCommittee/index.js} +0 -5
- package/teyrchains/index.d.ts +2 -0
- package/teyrchains/index.js +2 -0
- package/teyrchains/info.d.ts +19 -0
- package/teyrchains/info.js +72 -0
- package/teyrchains/overview.d.ts +15 -0
- package/teyrchains/overview.js +36 -0
- package/teyrchains/types.d.ts +38 -0
- package/teyrchains/types.js +1 -0
- package/teyrchains/util.d.ts +3 -0
- package/teyrchains/util.js +5 -0
- package/treasury/index.d.ts +1 -0
- package/treasury/index.js +1 -0
- package/treasury/proposals.d.ts +12 -0
- package/treasury/proposals.js +68 -0
- package/tx/constants.d.ts +5 -0
- package/{src/tx/constants.ts → tx/constants.js} +0 -8
- package/tx/events.d.ts +22 -0
- package/tx/events.js +21 -0
- package/tx/extrinsicInfo.d.ts +61 -0
- package/tx/extrinsicInfo.js +83 -0
- package/tx/index.d.ts +3 -0
- package/tx/index.js +3 -0
- package/tx/signingInfo.d.ts +25 -0
- package/tx/signingInfo.js +78 -0
- package/type/HeaderExtended.d.ts +4 -0
- package/type/HeaderExtended.js +20 -0
- package/type/SignedBlockExtended.d.ts +4 -0
- package/type/SignedBlockExtended.js +57 -0
- package/{src/type/index.ts → type/index.d.ts} +0 -3
- package/type/index.js +2 -0
- package/type/types.d.ts +15 -0
- package/type/types.js +1 -0
- package/type/util.d.ts +2 -0
- package/type/util.js +33 -0
- package/{src/types.ts → types.d.ts} +39 -57
- package/types.js +12 -0
- package/util/approvalFlagsToBools.d.ts +4 -0
- package/util/approvalFlagsToBools.js +16 -0
- package/util/blockNumber.d.ts +7 -0
- package/util/blockNumber.js +6 -0
- package/util/cache.d.ts +4 -0
- package/util/cache.js +42 -0
- package/util/cacheImpl.d.ts +3 -0
- package/util/cacheImpl.js +23 -0
- package/util/first.d.ts +4 -0
- package/util/first.js +8 -0
- package/{src/util/index.ts → util/index.d.ts} +0 -6
- package/util/index.js +7 -0
- package/util/lazy.d.ts +4 -0
- package/util/lazy.js +4 -0
- package/util/types.d.ts +6 -0
- package/util/types.js +1 -0
- package/build/bagsList/listNodes.d.ts +0 -9
- package/build/parachains/overview.d.ts +0 -15
- package/src/accounts/accountId.ts +0 -44
- package/src/accounts/flags.ts +0 -90
- package/src/accounts/idAndIndex.ts +0 -51
- package/src/accounts/idToIndex.ts +0 -31
- package/src/accounts/identity.ts +0 -235
- package/src/accounts/indexToId.ts +0 -33
- package/src/accounts/indexes.ts +0 -56
- package/src/accounts/info.ts +0 -58
- package/src/accounts/types.ts +0 -48
- package/src/augment.ts +0 -4
- package/src/bagsList/get.ts +0 -79
- package/src/bagsList/getExpanded.ts +0 -41
- package/src/bagsList/index.ts +0 -6
- package/src/bagsList/listNodes.ts +0 -50
- package/src/bagsList/types.ts +0 -18
- package/src/bagsList/util.ts +0 -14
- package/src/balances/account.ts +0 -210
- package/src/balances/all.ts +0 -246
- package/src/balances/types.ts +0 -79
- package/src/balances/votingBalances.ts +0 -33
- package/src/bounties/bounties.spec.ts +0 -162
- package/src/bounties/bounties.ts +0 -76
- package/src/bounties/helpers/filterBountyProposals.ts +0 -13
- package/src/bounties/index.ts +0 -4
- package/src/bundle.ts +0 -140
- package/src/chain/bestNumberLag.ts +0 -33
- package/src/chain/getBlock.ts +0 -43
- package/src/chain/getHeader.ts +0 -37
- package/src/chain/subscribeFinalizedBlocks.ts +0 -30
- package/src/chain/subscribeFinalizedHeads.ts +0 -62
- package/src/chain/subscribeNewBlocks.ts +0 -30
- package/src/chain/subscribeNewHeads.ts +0 -38
- package/src/chain/util.ts +0 -112
- package/src/checkTypes.manual.ts +0 -8
- package/src/collective/helpers.ts +0 -36
- package/src/collective/index.ts +0 -6
- package/src/collective/members.ts +0 -8
- package/src/collective/prime.ts +0 -25
- package/src/collective/proposals.ts +0 -73
- package/src/contracts/fees.ts +0 -61
- package/src/contracts/index.ts +0 -4
- package/src/council/votes.ts +0 -97
- package/src/council/votesOf.ts +0 -35
- package/src/crowdloan/childKey.ts +0 -57
- package/src/crowdloan/contributions.ts +0 -142
- package/src/crowdloan/index.ts +0 -6
- package/src/crowdloan/ownContributions.ts +0 -81
- package/src/crowdloan/util.ts +0 -33
- package/src/democracy/dispatchQueue.ts +0 -158
- package/src/democracy/locks.ts +0 -114
- package/src/democracy/nextExternal.ts +0 -49
- package/src/democracy/preimages.ts +0 -171
- package/src/democracy/proposals.ts +0 -81
- package/src/democracy/referendumIds.ts +0 -37
- package/src/democracy/referendums.ts +0 -39
- package/src/democracy/referendumsActive.ts +0 -30
- package/src/democracy/referendumsFinished.ts +0 -37
- package/src/democracy/referendumsInfo.ts +0 -181
- package/src/democracy/sqrtElectorate.ts +0 -29
- package/src/democracy/types.ts +0 -84
- package/src/democracy/util.ts +0 -166
- package/src/elections/index.ts +0 -4
- package/src/elections/info.ts +0 -126
- package/src/elections/types.ts +0 -22
- package/src/imOnline/index.ts +0 -4
- package/src/imOnline/receivedHeartbeats.ts +0 -65
- package/src/index.spec.ts +0 -103
- package/src/index.ts +0 -6
- package/src/mod.ts +0 -4
- package/src/packageDetect.ts +0 -11
- package/src/packageInfo.ts +0 -6
- package/src/parachains/index.ts +0 -5
- package/src/parachains/info.ts +0 -111
- package/src/parachains/overview.ts +0 -63
- package/src/parachains/types.ts +0 -46
- package/src/parachains/util.ts +0 -11
- package/src/session/index.ts +0 -6
- package/src/session/indexes.ts +0 -90
- package/src/session/progress.ts +0 -130
- package/src/session/types.ts +0 -25
- package/src/society/candidates.ts +0 -71
- package/src/society/info.ts +0 -50
- package/src/society/member.ts +0 -28
- package/src/society/members.ts +0 -107
- package/src/society/types.ts +0 -33
- package/src/staking/account.ts +0 -112
- package/src/staking/cache.ts +0 -48
- package/src/staking/currentPoints.ts +0 -28
- package/src/staking/electedInfo.ts +0 -54
- package/src/staking/erasExposure.ts +0 -105
- package/src/staking/erasHistoric.ts +0 -47
- package/src/staking/erasPoints.ts +0 -67
- package/src/staking/erasPrefs.ts +0 -63
- package/src/staking/erasRewards.ts +0 -52
- package/src/staking/erasSlashes.ts +0 -69
- package/src/staking/keys.ts +0 -86
- package/src/staking/overview.ts +0 -42
- package/src/staking/ownExposure.ts +0 -83
- package/src/staking/ownSlashes.ts +0 -68
- package/src/staking/query.ts +0 -230
- package/src/staking/stakerExposure.ts +0 -78
- package/src/staking/stakerPoints.ts +0 -46
- package/src/staking/stakerPrefs.ts +0 -45
- package/src/staking/stakerRewards.ts +0 -298
- package/src/staking/stakerSlashes.ts +0 -45
- package/src/staking/stashes.ts +0 -55
- package/src/staking/types.ts +0 -174
- package/src/staking/util.ts +0 -94
- package/src/test/bountyFactory.ts +0 -39
- package/src/test/bytesFactory.ts +0 -15
- package/src/test/helpers.ts +0 -23
- package/src/test/proposalFactory.ts +0 -25
- package/src/treasury/index.ts +0 -4
- package/src/treasury/proposals.ts +0 -109
- package/src/tx/events.ts +0 -43
- package/src/tx/extrinsicInfo.ts +0 -123
- package/src/tx/index.ts +0 -6
- package/src/tx/signingInfo.ts +0 -129
- package/src/type/HeaderExtended.ts +0 -33
- package/src/type/SignedBlockExtended.ts +0 -75
- package/src/type/types.ts +0 -21
- package/src/type/util.ts +0 -45
- package/src/util/approvalFlagToBools.spec.ts +0 -37
- package/src/util/approvalFlagsToBools.ts +0 -26
- package/src/util/blockNumber.ts +0 -15
- package/src/util/cache.ts +0 -65
- package/src/util/cacheImpl.ts +0 -30
- package/src/util/first.ts +0 -20
- package/src/util/lazy.ts +0 -16
- package/src/util/types.ts +0 -9
- package/tsconfig.build.json +0 -21
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.spec.json +0 -27
- /package/{build/accounts → accounts}/accountId.d.ts +0 -0
- /package/{build/accounts → accounts}/idAndIndex.d.ts +0 -0
- /package/{build/accounts → accounts}/idToIndex.d.ts +0 -0
- /package/{build/accounts → accounts}/index.d.ts +0 -0
- /package/{build/accounts → accounts}/indexToId.d.ts +0 -0
- /package/{build/accounts → accounts}/indexes.d.ts +0 -0
- /package/{build/accounts → accounts}/info.d.ts +0 -0
- /package/{build/accounts → accounts}/types.d.ts +0 -0
- /package/{build/packageDetect.d.ts → accounts/types.js} +0 -0
- /package/{build/alliance → alliance}/index.d.ts +0 -0
- /package/{build/augment.d.ts → augment.d.ts} +0 -0
- /package/{build/bagsList → bagsList}/get.d.ts +0 -0
- /package/{build/bagsList → bagsList}/getExpanded.d.ts +0 -0
- /package/{build/bagsList → bagsList}/index.d.ts +0 -0
- /package/{build/bagsList → bagsList}/util.d.ts +0 -0
- /package/{build/balances → balances}/account.d.ts +0 -0
- /package/{build/balances → balances}/all.d.ts +0 -0
- /package/{build/balances → balances}/index.d.ts +0 -0
- /package/{build/balances → balances}/votingBalances.d.ts +0 -0
- /package/{build/bounties → bounties}/bounties.d.ts +0 -0
- /package/{build/bounties → bounties}/helpers/filterBountyProposals.d.ts +0 -0
- /package/{build/bounties → bounties}/index.d.ts +0 -0
- /package/{build/bundle.d.ts → bundle.d.ts} +0 -0
- /package/{build/chain → chain}/bestNumber.d.ts +0 -0
- /package/{build/chain → chain}/bestNumberFinalized.d.ts +0 -0
- /package/{build/chain → chain}/bestNumberLag.d.ts +0 -0
- /package/{build/chain → chain}/getBlock.d.ts +0 -0
- /package/{build/chain → chain}/getBlockByNumber.d.ts +0 -0
- /package/{build/chain → chain}/getHeader.d.ts +0 -0
- /package/{build/chain → chain}/index.d.ts +0 -0
- /package/{build/chain → chain}/subscribeFinalizedBlocks.d.ts +0 -0
- /package/{build/chain → chain}/subscribeFinalizedHeads.d.ts +0 -0
- /package/{build/chain → chain}/subscribeNewBlocks.d.ts +0 -0
- /package/{build/chain → chain}/subscribeNewHeads.d.ts +0 -0
- /package/{build/chain → chain}/util.d.ts +0 -0
- /package/{build → cjs}/collective/helpers.d.ts +0 -0
- /package/{build → cjs}/collective/index.d.ts +0 -0
- /package/{build → cjs}/collective/members.d.ts +0 -0
- /package/{build → cjs}/collective/prime.d.ts +0 -0
- /package/{build → cjs}/collective/proposals.d.ts +0 -0
- /package/{build → cjs}/collective/types.d.ts +0 -0
- /package/{build → cjs}/contracts/index.d.ts +0 -0
- /package/{build → cjs}/council/index.d.ts +0 -0
- /package/{build → cjs}/council/types.d.ts +0 -0
- /package/{build → cjs}/council/votes.d.ts +0 -0
- /package/{build → cjs}/council/votesOf.d.ts +0 -0
- /package/{build → cjs}/crowdloan/index.d.ts +0 -0
- /package/{build → cjs}/crowdloan/types.d.ts +0 -0
- /package/{build → cjs}/democracy/dispatchQueue.d.ts +0 -0
- /package/{build → cjs}/democracy/index.d.ts +0 -0
- /package/{build → cjs}/democracy/locks.d.ts +0 -0
- /package/{build → cjs}/democracy/nextExternal.d.ts +0 -0
- /package/{build → cjs}/democracy/proposals.d.ts +0 -0
- /package/{build → cjs}/democracy/referendumIds.d.ts +0 -0
- /package/{build → cjs}/democracy/referendums.d.ts +0 -0
- /package/{build → cjs}/democracy/referendumsActive.d.ts +0 -0
- /package/{build → cjs}/democracy/sqrtElectorate.d.ts +0 -0
- /package/{build → cjs}/elections/index.d.ts +0 -0
- /package/{build → cjs}/elections/info.d.ts +0 -0
- /package/{build → cjs}/elections/types.d.ts +0 -0
- /package/{build → cjs}/imOnline/index.d.ts +0 -0
- /package/{build → cjs}/imOnline/receivedHeartbeats.d.ts +0 -0
- /package/{build → cjs}/index.d.ts +0 -0
- /package/{build → cjs}/membership/index.d.ts +0 -0
- /package/{build → cjs}/packageInfo.d.ts +0 -0
- /package/{build → cjs}/session/index.d.ts +0 -0
- /package/{build → cjs}/session/indexes.d.ts +0 -0
- /package/{build → cjs}/session/info.d.ts +0 -0
- /package/{build → cjs}/session/progress.d.ts +0 -0
- /package/{build → cjs}/session/types.d.ts +0 -0
- /package/{build → cjs}/society/candidates.d.ts +0 -0
- /package/{build → cjs}/society/index.d.ts +0 -0
- /package/{build → cjs}/society/info.d.ts +0 -0
- /package/{build → cjs}/society/member.d.ts +0 -0
- /package/{build → cjs}/society/members.d.ts +0 -0
- /package/{build → cjs}/staking/cache.d.ts +0 -0
- /package/{build → cjs}/staking/electedInfo.d.ts +0 -0
- /package/{build → cjs}/staking/erasExposure.d.ts +0 -0
- /package/{build → cjs}/staking/erasHistoric.d.ts +0 -0
- /package/{build → cjs}/staking/erasPoints.d.ts +0 -0
- /package/{build → cjs}/staking/erasPrefs.d.ts +0 -0
- /package/{build → cjs}/staking/erasRewards.d.ts +0 -0
- /package/{build → cjs}/staking/erasSlashes.d.ts +0 -0
- /package/{build → cjs}/staking/index.d.ts +0 -0
- /package/{build → cjs}/staking/overview.d.ts +0 -0
- /package/{build → cjs}/staking/stakerPoints.d.ts +0 -0
- /package/{build → cjs}/staking/stakerPrefs.d.ts +0 -0
- /package/{build → cjs}/staking/stakerSlashes.d.ts +0 -0
- /package/{build → cjs}/staking/stashes.d.ts +0 -0
- /package/{build → cjs}/staking/util.d.ts +0 -0
- /package/{build → cjs}/staking/validators.d.ts +0 -0
- /package/{build → cjs}/staking/waitingInfo.d.ts +0 -0
- /package/{build → cjs}/technicalCommittee/index.d.ts +0 -0
- /package/{build/parachains → cjs/teyrchains}/index.d.ts +0 -0
- /package/{build/parachains → cjs/teyrchains}/util.d.ts +0 -0
- /package/{build → cjs}/treasury/index.d.ts +0 -0
- /package/{build → cjs}/treasury/proposals.d.ts +0 -0
- /package/{build → cjs}/tx/constants.d.ts +0 -0
- /package/{build → cjs}/tx/events.d.ts +0 -0
- /package/{build → cjs}/tx/extrinsicInfo.d.ts +0 -0
- /package/{build → cjs}/tx/index.d.ts +0 -0
- /package/{build → cjs}/tx/signingInfo.d.ts +0 -0
- /package/{build → cjs}/type/HeaderExtended.d.ts +0 -0
- /package/{build → cjs}/type/SignedBlockExtended.d.ts +0 -0
- /package/{build → cjs}/type/index.d.ts +0 -0
- /package/{build → cjs}/type/types.d.ts +0 -0
- /package/{build → cjs}/type/util.d.ts +0 -0
- /package/{build → cjs}/util/approvalFlagsToBools.d.ts +0 -0
- /package/{build → cjs}/util/blockNumber.d.ts +0 -0
- /package/{build → cjs}/util/cache.d.ts +0 -0
- /package/{build → cjs}/util/cacheImpl.d.ts +0 -0
- /package/{build → cjs}/util/first.d.ts +0 -0
- /package/{build → cjs}/util/index.d.ts +0 -0
- /package/{build → cjs}/util/lazy.d.ts +0 -0
- /package/{build → cjs}/util/types.d.ts +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { EraIndex } from '@pezkuwi/types/interfaces';
|
|
3
|
+
import type { DeriveApi, DeriveStakerPrefs } from '../types.js';
|
|
4
|
+
export declare function _stakerPrefs(instanceId: string, api: DeriveApi): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerPrefs[]>;
|
|
5
|
+
/**
|
|
6
|
+
* @name stakerPrefs
|
|
7
|
+
* @param { Uint8Array | string } accountId The stakers AccountId.
|
|
8
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
9
|
+
* @description Retrieves the validator preferences for a given staker across historical eras.
|
|
10
|
+
* @example
|
|
11
|
+
* ```javascript
|
|
12
|
+
* const prefs = await api.derive.staking.stakerPrefs(
|
|
13
|
+
* ALICE, //Alice accountId
|
|
14
|
+
* false
|
|
15
|
+
* );
|
|
16
|
+
* console.log(
|
|
17
|
+
* 'Validator Preferences:',
|
|
18
|
+
* prefs.map(
|
|
19
|
+
* ({ era, validatorPrefs }) => `Era ${era}: Commission ${validatorPrefs.commission.toString()}`
|
|
20
|
+
* )
|
|
21
|
+
* );
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare const stakerPrefs: (instanceId: string, api: DeriveApi) => (accountId: string | Uint8Array, withActive?: boolean) => Observable<DeriveStakerPrefs[]>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { map } from 'rxjs';
|
|
2
|
+
import { memo } from '../util/index.js';
|
|
3
|
+
import { erasHistoricApplyAccount } from './util.js';
|
|
4
|
+
export function _stakerPrefs(instanceId, api) {
|
|
5
|
+
return memo(instanceId, (accountId, eras, _withActive) => api.query.staking.erasValidatorPrefs.multi(eras.map((e) => [e, accountId])).pipe(map((all) => all.map((validatorPrefs, index) => ({
|
|
6
|
+
era: eras[index],
|
|
7
|
+
validatorPrefs
|
|
8
|
+
})))));
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @name stakerPrefs
|
|
12
|
+
* @param { Uint8Array | string } accountId The stakers AccountId.
|
|
13
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
14
|
+
* @description Retrieves the validator preferences for a given staker across historical eras.
|
|
15
|
+
* @example
|
|
16
|
+
* ```javascript
|
|
17
|
+
* const prefs = await api.derive.staking.stakerPrefs(
|
|
18
|
+
* ALICE, //Alice accountId
|
|
19
|
+
* false
|
|
20
|
+
* );
|
|
21
|
+
* console.log(
|
|
22
|
+
* 'Validator Preferences:',
|
|
23
|
+
* prefs.map(
|
|
24
|
+
* ({ era, validatorPrefs }) => `Era ${era}: Commission ${validatorPrefs.commission.toString()}`
|
|
25
|
+
* )
|
|
26
|
+
* );
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export const stakerPrefs = /*#__PURE__*/ erasHistoricApplyAccount('_stakerPrefs');
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { EraIndex } from '@pezkuwi/types/interfaces';
|
|
3
|
+
import type { DeriveApi, DeriveEraPoints, DeriveEraPrefs, DeriveEraRewards, DeriveStakerReward } from '../types.js';
|
|
4
|
+
type ErasResult = [DeriveEraPoints[], DeriveEraPrefs[], DeriveEraRewards[]];
|
|
5
|
+
export declare function _stakerRewardsEras(instanceId: string, api: DeriveApi): (eras: EraIndex[], withActive?: boolean) => Observable<ErasResult>;
|
|
6
|
+
export declare function _stakerRewards(instanceId: string, api: DeriveApi): (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive?: boolean) => Observable<DeriveStakerReward[][]>;
|
|
7
|
+
/**
|
|
8
|
+
* @name stakerRewards
|
|
9
|
+
* @description Staking rewards history for a given staker.
|
|
10
|
+
* @param { Uint8Array | string } accountId The stakers AccountId.
|
|
11
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
12
|
+
* @example
|
|
13
|
+
* ```javascript
|
|
14
|
+
* const rewards = await api.derive.staking.stakerRewards(
|
|
15
|
+
* ALICE, //Alice accountId
|
|
16
|
+
* false
|
|
17
|
+
* );
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const stakerRewards: (instanceId: string, api: DeriveApi) => (accountId: string | Uint8Array, withActive?: boolean | undefined) => Observable<DeriveStakerReward[]>;
|
|
21
|
+
/**
|
|
22
|
+
* @name stakerRewardsMultiEras
|
|
23
|
+
* @description Staking rewards for multiple stakers over specific eras.
|
|
24
|
+
* @param { Uint8Array | string } accountIds List of stakers identified by their AccountId.
|
|
25
|
+
* @param { EraIndex[] } eras Eras for which to retrieve the data.
|
|
26
|
+
* @example
|
|
27
|
+
* ```javascript
|
|
28
|
+
* const rewards = await api.derive.staking.stakerRewardsMultiEras(
|
|
29
|
+
* [ALICE, BOB, CHARLIER], //accountIds
|
|
30
|
+
* [100,101] //eras
|
|
31
|
+
* );
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function stakerRewardsMultiEras(instanceId: string, api: DeriveApi): (accountIds: (Uint8Array | string)[], eras: EraIndex[]) => Observable<DeriveStakerReward[][]>;
|
|
35
|
+
/**
|
|
36
|
+
* @name stakerRewardsMulti
|
|
37
|
+
* @description Staking rewards for multiple stakers.
|
|
38
|
+
* @param { Uint8Array | string } accountIds List of stakers identified by their AccountId.
|
|
39
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
40
|
+
* @example
|
|
41
|
+
* ```javascript
|
|
42
|
+
* const rewards = await api.derive.staking.stakerRewardsMulti(
|
|
43
|
+
* [ALICE, BOB, CHARLIER], //accountIds
|
|
44
|
+
* true
|
|
45
|
+
* );
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function stakerRewardsMulti(instanceId: string, api: DeriveApi): (accountIds: (Uint8Array | string)[], withActive?: boolean) => Observable<DeriveStakerReward[][]>;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { combineLatest, map, of, switchMap } from 'rxjs';
|
|
2
|
+
import { BN_BILLION, BN_ZERO, objectSpread } from '@pezkuwi/util';
|
|
3
|
+
import { firstMemo, memo } from '../util/index.js';
|
|
4
|
+
function extractCompatRewards(claimedRewardsEras, ledger) {
|
|
5
|
+
const l = ledger
|
|
6
|
+
? (ledger.legacyClaimedRewards ||
|
|
7
|
+
ledger.claimedRewards)?.toArray()
|
|
8
|
+
: [];
|
|
9
|
+
return (claimedRewardsEras.toArray() || []).concat(l);
|
|
10
|
+
}
|
|
11
|
+
function parseRewards(api, stashId, [erasPoints, erasPrefs, erasRewards], exposures, claimedRewardsEras) {
|
|
12
|
+
return exposures.map(({ era, isEmpty, isValidator, nominating, validators: eraValidators }) => {
|
|
13
|
+
const { eraPoints, validators: allValPoints } = erasPoints.find((p) => p.era.eq(era)) || { eraPoints: BN_ZERO, validators: {} };
|
|
14
|
+
const { eraReward } = erasRewards.find((r) => r.era.eq(era)) || { eraReward: api.registry.createType('Balance') };
|
|
15
|
+
const { validators: allValPrefs } = erasPrefs.find((p) => p.era.eq(era)) || { validators: {} };
|
|
16
|
+
const validators = {};
|
|
17
|
+
const stakerId = stashId.toString();
|
|
18
|
+
Object.entries(eraValidators).forEach(([validatorId, exposure]) => {
|
|
19
|
+
const valPoints = allValPoints[validatorId] || BN_ZERO;
|
|
20
|
+
const valComm = allValPrefs[validatorId]?.commission.unwrap() || BN_ZERO;
|
|
21
|
+
const expTotal = exposure.total
|
|
22
|
+
? exposure.total?.unwrap()
|
|
23
|
+
: exposure.pageTotal
|
|
24
|
+
? exposure.pageTotal?.unwrap()
|
|
25
|
+
: BN_ZERO;
|
|
26
|
+
let avail = BN_ZERO;
|
|
27
|
+
let value;
|
|
28
|
+
if (!(expTotal.isZero() || valPoints.isZero() || eraPoints.isZero())) {
|
|
29
|
+
avail = eraReward.mul(valPoints).div(eraPoints);
|
|
30
|
+
const valCut = valComm.mul(avail).div(BN_BILLION);
|
|
31
|
+
let staked;
|
|
32
|
+
if (validatorId === stakerId) {
|
|
33
|
+
if (exposure.own) {
|
|
34
|
+
staked = exposure.own.unwrap();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const expAccount = exposure.others.find(({ who }) => who.eq(validatorId));
|
|
38
|
+
staked = expAccount
|
|
39
|
+
? expAccount.value.unwrap()
|
|
40
|
+
: BN_ZERO;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const stakerExp = exposure.others.find(({ who }) => who.eq(stakerId));
|
|
45
|
+
staked = stakerExp
|
|
46
|
+
? stakerExp.value.unwrap()
|
|
47
|
+
: BN_ZERO;
|
|
48
|
+
}
|
|
49
|
+
value = avail.sub(valCut).imul(staked).div(expTotal).iadd(validatorId === stakerId ? valCut : BN_ZERO);
|
|
50
|
+
}
|
|
51
|
+
validators[validatorId] = {
|
|
52
|
+
total: api.registry.createType('Balance', avail),
|
|
53
|
+
value: api.registry.createType('Balance', value)
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
era,
|
|
58
|
+
eraReward,
|
|
59
|
+
// This might not always be accurate as you need validator account information in order to see if the rewards have been claimed.
|
|
60
|
+
// This is possibly adjusted in `filterRewards` when need be.
|
|
61
|
+
isClaimed: claimedRewardsEras.some((c) => c.eq(era)),
|
|
62
|
+
isEmpty,
|
|
63
|
+
isValidator,
|
|
64
|
+
nominating,
|
|
65
|
+
validators
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function allUniqValidators(rewards) {
|
|
70
|
+
return rewards.reduce(([all, perStash], rewards) => {
|
|
71
|
+
const uniq = [];
|
|
72
|
+
perStash.push(uniq);
|
|
73
|
+
rewards.forEach(({ validators }) => Object.keys(validators).forEach((validatorId) => {
|
|
74
|
+
if (!uniq.includes(validatorId)) {
|
|
75
|
+
uniq.push(validatorId);
|
|
76
|
+
if (!all.includes(validatorId)) {
|
|
77
|
+
all.push(validatorId);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}));
|
|
81
|
+
return [all, perStash];
|
|
82
|
+
}, [[], []]);
|
|
83
|
+
}
|
|
84
|
+
function removeClaimed(validators, queryValidators, reward, claimedRewardsEras) {
|
|
85
|
+
const rm = [];
|
|
86
|
+
Object.keys(reward.validators).forEach((validatorId) => {
|
|
87
|
+
const index = validators.indexOf(validatorId);
|
|
88
|
+
if (index !== -1) {
|
|
89
|
+
const valLedger = queryValidators[index].stakingLedger;
|
|
90
|
+
if (extractCompatRewards(claimedRewardsEras, valLedger).some((e) => reward.era?.eq(e))) {
|
|
91
|
+
rm.push(validatorId);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
rm.forEach((validatorId) => {
|
|
96
|
+
delete reward.validators[validatorId];
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function filterRewards(eras, valInfo, { claimedRewardsEras, rewards, stakingLedger }) {
|
|
100
|
+
const filter = eras.filter((e) => !extractCompatRewards(claimedRewardsEras, stakingLedger).some((s) => s?.eq(e)));
|
|
101
|
+
const validators = valInfo.map(([v]) => v);
|
|
102
|
+
const queryValidators = valInfo.map(([, q]) => q);
|
|
103
|
+
return rewards
|
|
104
|
+
.filter(({ isEmpty }) => !isEmpty)
|
|
105
|
+
.filter((reward) => {
|
|
106
|
+
if (!filter.some((e) => reward.era.eq(e))) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
removeClaimed(validators, queryValidators, reward, claimedRewardsEras);
|
|
110
|
+
return true;
|
|
111
|
+
})
|
|
112
|
+
.filter(({ validators }) => Object.keys(validators).length !== 0)
|
|
113
|
+
.map((reward) => {
|
|
114
|
+
let isClaimed = reward.isClaimed;
|
|
115
|
+
const valKeys = Object.keys(reward.validators);
|
|
116
|
+
if (!reward.isClaimed && valKeys.length) {
|
|
117
|
+
for (const key of valKeys) {
|
|
118
|
+
const info = queryValidators.find((i) => i.accountId.toString() === key);
|
|
119
|
+
if (info) {
|
|
120
|
+
isClaimed = info.claimedRewardsEras?.toArray().some((era) => era.eq(reward.era));
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return objectSpread({}, reward, {
|
|
126
|
+
isClaimed,
|
|
127
|
+
nominators: reward.nominating.filter((n) => reward.validators[n.validatorId])
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
export function _stakerRewardsEras(instanceId, api) {
|
|
132
|
+
return memo(instanceId, (eras, withActive = false) => combineLatest([
|
|
133
|
+
api.derive.staking._erasPoints(eras, withActive),
|
|
134
|
+
api.derive.staking._erasPrefs(eras, withActive),
|
|
135
|
+
api.derive.staking._erasRewards(eras, withActive)
|
|
136
|
+
]));
|
|
137
|
+
}
|
|
138
|
+
export function _stakerRewards(instanceId, api) {
|
|
139
|
+
return memo(instanceId, (accountIds, eras, withActive = false) => {
|
|
140
|
+
// Ensures that when number or string types are passed in they are sanitized
|
|
141
|
+
// Ref: https://github.com/pezkuwichain/pezkuwi-api/issues/5910
|
|
142
|
+
const sanitizedEras = eras.map((e) => typeof e === 'number' || typeof e === 'string' ? api.registry.createType('u32', e) : e);
|
|
143
|
+
return combineLatest([
|
|
144
|
+
api.derive.staking.queryMulti(accountIds, { withClaimedRewardsEras: true, withLedger: true }),
|
|
145
|
+
api.derive.staking._stakerExposures(accountIds, sanitizedEras, withActive),
|
|
146
|
+
api.derive.staking._stakerRewardsEras(sanitizedEras, withActive)
|
|
147
|
+
]).pipe(switchMap(([queries, exposures, erasResult]) => {
|
|
148
|
+
const allRewards = queries.map(({ claimedRewardsEras, stakingLedger, stashId }, index) => (!stashId || (!stakingLedger && !claimedRewardsEras))
|
|
149
|
+
? []
|
|
150
|
+
: parseRewards(api, stashId, erasResult, exposures[index], claimedRewardsEras));
|
|
151
|
+
if (withActive) {
|
|
152
|
+
return of(allRewards);
|
|
153
|
+
}
|
|
154
|
+
const [allValidators, stashValidators] = allUniqValidators(allRewards);
|
|
155
|
+
return api.derive.staking.queryMulti(allValidators, { withClaimedRewardsEras: true, withLedger: true }).pipe(map((queriedVals) => queries.map(({ claimedRewardsEras, stakingLedger }, index) => filterRewards(eras, stashValidators[index]
|
|
156
|
+
.map((validatorId) => [
|
|
157
|
+
validatorId,
|
|
158
|
+
queriedVals.find((q) => q.accountId.eq(validatorId))
|
|
159
|
+
])
|
|
160
|
+
.filter((v) => !!v[1]), {
|
|
161
|
+
claimedRewardsEras,
|
|
162
|
+
rewards: allRewards[index],
|
|
163
|
+
stakingLedger
|
|
164
|
+
}))));
|
|
165
|
+
}));
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* @name stakerRewards
|
|
170
|
+
* @description Staking rewards history for a given staker.
|
|
171
|
+
* @param { Uint8Array | string } accountId The stakers AccountId.
|
|
172
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
173
|
+
* @example
|
|
174
|
+
* ```javascript
|
|
175
|
+
* const rewards = await api.derive.staking.stakerRewards(
|
|
176
|
+
* ALICE, //Alice accountId
|
|
177
|
+
* false
|
|
178
|
+
* );
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
export const stakerRewards = /*#__PURE__*/ firstMemo((api, accountId, withActive) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking._stakerRewards([accountId], eras, withActive))));
|
|
182
|
+
/**
|
|
183
|
+
* @name stakerRewardsMultiEras
|
|
184
|
+
* @description Staking rewards for multiple stakers over specific eras.
|
|
185
|
+
* @param { Uint8Array | string } accountIds List of stakers identified by their AccountId.
|
|
186
|
+
* @param { EraIndex[] } eras Eras for which to retrieve the data.
|
|
187
|
+
* @example
|
|
188
|
+
* ```javascript
|
|
189
|
+
* const rewards = await api.derive.staking.stakerRewardsMultiEras(
|
|
190
|
+
* [ALICE, BOB, CHARLIER], //accountIds
|
|
191
|
+
* [100,101] //eras
|
|
192
|
+
* );
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export function stakerRewardsMultiEras(instanceId, api) {
|
|
196
|
+
return memo(instanceId, (accountIds, eras) => accountIds.length && eras.length
|
|
197
|
+
? api.derive.staking._stakerRewards(accountIds, eras, false)
|
|
198
|
+
: of([]));
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* @name stakerRewardsMulti
|
|
202
|
+
* @description Staking rewards for multiple stakers.
|
|
203
|
+
* @param { Uint8Array | string } accountIds List of stakers identified by their AccountId.
|
|
204
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
205
|
+
* @example
|
|
206
|
+
* ```javascript
|
|
207
|
+
* const rewards = await api.derive.staking.stakerRewardsMulti(
|
|
208
|
+
* [ALICE, BOB, CHARLIER], //accountIds
|
|
209
|
+
* true
|
|
210
|
+
* );
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
export function stakerRewardsMulti(instanceId, api) {
|
|
214
|
+
return memo(instanceId, (accountIds, withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking.stakerRewardsMultiEras(accountIds, eras))));
|
|
215
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { EraIndex } from '@pezkuwi/types/interfaces';
|
|
3
|
+
import type { DeriveApi, DeriveStakerSlashes } from '../types.js';
|
|
4
|
+
export declare function _stakerSlashes(instanceId: string, api: DeriveApi): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerSlashes[]>;
|
|
5
|
+
/**
|
|
6
|
+
* @name stakerSlashes
|
|
7
|
+
* @param { Uint8Array | string } accountId The stakers AccountId.
|
|
8
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
9
|
+
* @description Retrieve the historical slashes (penalties) for a given staker.
|
|
10
|
+
* @example
|
|
11
|
+
* ```javascript
|
|
12
|
+
* const stakerSlashes = await api.derive.staking.stakerSlashes(
|
|
13
|
+
* ALICE, //Alice accountId
|
|
14
|
+
* true
|
|
15
|
+
* );
|
|
16
|
+
* console.log(
|
|
17
|
+
* 'Staker Slashes:',
|
|
18
|
+
* stakerSlashes.map(({ era, total }) => `Era ${era}: Slashed ${total.toString()}`)
|
|
19
|
+
* );
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare const stakerSlashes: (instanceId: string, api: DeriveApi) => (accountId: string | Uint8Array, withActive?: boolean) => Observable<DeriveStakerSlashes[]>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { map } from 'rxjs';
|
|
2
|
+
import { memo } from '../util/index.js';
|
|
3
|
+
import { erasHistoricApplyAccount } from './util.js';
|
|
4
|
+
export function _stakerSlashes(instanceId, api) {
|
|
5
|
+
return memo(instanceId, (accountId, eras, withActive) => {
|
|
6
|
+
const stakerId = api.registry.createType('AccountId', accountId).toString();
|
|
7
|
+
return api.derive.staking._erasSlashes(eras, withActive).pipe(map((slashes) => slashes.map(({ era, nominators, validators }) => ({
|
|
8
|
+
era,
|
|
9
|
+
total: nominators[stakerId] || validators[stakerId] || api.registry.createType('Balance')
|
|
10
|
+
}))));
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @name stakerSlashes
|
|
15
|
+
* @param { Uint8Array | string } accountId The stakers AccountId.
|
|
16
|
+
* @param { boolean } withActive Whether to include the active era.
|
|
17
|
+
* @description Retrieve the historical slashes (penalties) for a given staker.
|
|
18
|
+
* @example
|
|
19
|
+
* ```javascript
|
|
20
|
+
* const stakerSlashes = await api.derive.staking.stakerSlashes(
|
|
21
|
+
* ALICE, //Alice accountId
|
|
22
|
+
* true
|
|
23
|
+
* );
|
|
24
|
+
* console.log(
|
|
25
|
+
* 'Staker Slashes:',
|
|
26
|
+
* stakerSlashes.map(({ era, total }) => `Era ${era}: Slashed ${total.toString()}`)
|
|
27
|
+
* );
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export const stakerSlashes = /*#__PURE__*/ erasHistoricApplyAccount('_stakerSlashes');
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { AccountId } from '@pezkuwi/types/interfaces';
|
|
3
|
+
import type { DeriveApi } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* @name stashes
|
|
6
|
+
* @description Retrieve the list of all validator stashes.
|
|
7
|
+
* @example
|
|
8
|
+
* ```javascript
|
|
9
|
+
* const stashes = await api.derive.staking.stashes();
|
|
10
|
+
* console.log(
|
|
11
|
+
* "Validator Stashes:",
|
|
12
|
+
* stashes.map((s) => s.toString())
|
|
13
|
+
* );
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function stashes(instanceId: string, api: DeriveApi): () => Observable<AccountId[]>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { map, startWith, switchMap } from 'rxjs';
|
|
2
|
+
import { drr, memo } from '../util/index.js';
|
|
3
|
+
function onBondedEvent(api) {
|
|
4
|
+
let current = Date.now();
|
|
5
|
+
return api.query.system.events().pipe(map((events) => {
|
|
6
|
+
current = events.filter(({ event, phase }) => {
|
|
7
|
+
try {
|
|
8
|
+
return phase.isApplyExtrinsic &&
|
|
9
|
+
event.section === 'staking' &&
|
|
10
|
+
event.method === 'Bonded';
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
})
|
|
16
|
+
? Date.now()
|
|
17
|
+
: current;
|
|
18
|
+
return current;
|
|
19
|
+
}), startWith(current), drr({ skipTimeout: true }));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @name stashes
|
|
23
|
+
* @description Retrieve the list of all validator stashes.
|
|
24
|
+
* @example
|
|
25
|
+
* ```javascript
|
|
26
|
+
* const stashes = await api.derive.staking.stashes();
|
|
27
|
+
* console.log(
|
|
28
|
+
* "Validator Stashes:",
|
|
29
|
+
* stashes.map((s) => s.toString())
|
|
30
|
+
* );
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function stashes(instanceId, api) {
|
|
34
|
+
return memo(instanceId, () => onBondedEvent(api).pipe(switchMap(() => api.query.staking.validators.keys()), map((keys) => keys.map(({ args: [v] }) => v).filter((a) => a))));
|
|
35
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { Option, u32, Vec } from '@pezkuwi/types';
|
|
2
|
+
import type { AccountId, Balance, EraIndex, RewardPoint } from '@pezkuwi/types/interfaces';
|
|
3
|
+
import type { PezpalletStakingRewardDestination, PezpalletStakingStakingLedger, PezpalletStakingValidatorPrefs, PezspStakingExposure, PezspStakingExposurePage, PezspStakingPagedExposureMetadata } from '@pezkuwi/types/lookup';
|
|
4
|
+
import type { BN } from '@pezkuwi/util';
|
|
5
|
+
import type { DeriveSessionIndexes } from '../session/types.js';
|
|
6
|
+
export type DeriveEraValPoints = Record<string, RewardPoint>;
|
|
7
|
+
export type DeriveEraValPrefs = Record<string, PezpalletStakingValidatorPrefs>;
|
|
8
|
+
export type DeriveEraValSlash = Record<string, Balance>;
|
|
9
|
+
export interface DeriveEraPoints {
|
|
10
|
+
era: EraIndex;
|
|
11
|
+
eraPoints: RewardPoint;
|
|
12
|
+
validators: DeriveEraValPoints;
|
|
13
|
+
}
|
|
14
|
+
export interface DeriveEraPrefs {
|
|
15
|
+
era: EraIndex;
|
|
16
|
+
validators: DeriveEraValPrefs;
|
|
17
|
+
}
|
|
18
|
+
export interface DeriveEraRewards {
|
|
19
|
+
era: EraIndex;
|
|
20
|
+
eraReward: Balance;
|
|
21
|
+
}
|
|
22
|
+
export interface DeriveEraSlashes {
|
|
23
|
+
era: EraIndex;
|
|
24
|
+
nominators: DeriveEraValSlash;
|
|
25
|
+
validators: DeriveEraValSlash;
|
|
26
|
+
}
|
|
27
|
+
export interface DeriveStakerPoints {
|
|
28
|
+
era: EraIndex;
|
|
29
|
+
eraPoints: RewardPoint;
|
|
30
|
+
points: RewardPoint;
|
|
31
|
+
}
|
|
32
|
+
export interface DeriveOwnExposure {
|
|
33
|
+
clipped: PezspStakingExposure;
|
|
34
|
+
exposurePaged: Option<PezspStakingExposurePage>;
|
|
35
|
+
era: EraIndex;
|
|
36
|
+
exposure: PezspStakingExposure;
|
|
37
|
+
exposureMeta: Option<PezspStakingPagedExposureMetadata>;
|
|
38
|
+
}
|
|
39
|
+
export interface DeriveEraExposureNominating {
|
|
40
|
+
validatorId: string;
|
|
41
|
+
validatorIndex: number;
|
|
42
|
+
}
|
|
43
|
+
export type DeriveEraNominatorExposure = Record<string, DeriveEraExposureNominating[]>;
|
|
44
|
+
export type DeriveEraValidatorExposure = Record<string, PezspStakingExposure>;
|
|
45
|
+
export type DeriveEraValidatorExposurePaged = Record<string, PezspStakingExposurePage | PezspStakingExposure>;
|
|
46
|
+
export interface DeriveEraExposure {
|
|
47
|
+
era: EraIndex;
|
|
48
|
+
nominators: DeriveEraNominatorExposure;
|
|
49
|
+
validators: DeriveEraValidatorExposure;
|
|
50
|
+
}
|
|
51
|
+
export interface DeriveEraExposurePaged {
|
|
52
|
+
era: EraIndex;
|
|
53
|
+
nominators: DeriveEraNominatorExposure;
|
|
54
|
+
validators: DeriveEraValidatorExposurePaged;
|
|
55
|
+
}
|
|
56
|
+
export interface DeriveStakerExposure {
|
|
57
|
+
era: EraIndex;
|
|
58
|
+
isEmpty: boolean;
|
|
59
|
+
isValidator: boolean;
|
|
60
|
+
nominating: DeriveEraExposureNominating[];
|
|
61
|
+
validators: DeriveEraValidatorExposurePaged;
|
|
62
|
+
}
|
|
63
|
+
export interface DeriveStakerPrefs {
|
|
64
|
+
era: EraIndex;
|
|
65
|
+
validatorPrefs: PezpalletStakingValidatorPrefs;
|
|
66
|
+
}
|
|
67
|
+
export interface DeriveStakerRewardValidator {
|
|
68
|
+
total: Balance;
|
|
69
|
+
value: Balance;
|
|
70
|
+
}
|
|
71
|
+
export interface DeriveStakerReward {
|
|
72
|
+
era: EraIndex;
|
|
73
|
+
eraReward: Balance;
|
|
74
|
+
isClaimed: boolean;
|
|
75
|
+
isEmpty: boolean;
|
|
76
|
+
isValidator: boolean;
|
|
77
|
+
nominating: DeriveEraExposureNominating[];
|
|
78
|
+
validators: Record<string, DeriveStakerRewardValidator>;
|
|
79
|
+
}
|
|
80
|
+
export interface DeriveStakerSlashes {
|
|
81
|
+
era: EraIndex;
|
|
82
|
+
total: Balance;
|
|
83
|
+
}
|
|
84
|
+
export type DeriveOwnSlashes = DeriveStakerSlashes;
|
|
85
|
+
export interface DeriveStakingKeys {
|
|
86
|
+
nextSessionIds: AccountId[];
|
|
87
|
+
sessionIds: AccountId[];
|
|
88
|
+
}
|
|
89
|
+
export interface DeriveStakingValidators {
|
|
90
|
+
nextElected: AccountId[];
|
|
91
|
+
validators: AccountId[];
|
|
92
|
+
}
|
|
93
|
+
export interface DeriveStakingStash {
|
|
94
|
+
controllerId: AccountId | null;
|
|
95
|
+
exposureEraStakers: PezspStakingExposure;
|
|
96
|
+
exposurePaged: Option<PezspStakingExposurePage>;
|
|
97
|
+
exposureMeta: Option<PezspStakingPagedExposureMetadata>;
|
|
98
|
+
nominators: AccountId[];
|
|
99
|
+
rewardDestination: PezpalletStakingRewardDestination | null;
|
|
100
|
+
stashId: AccountId;
|
|
101
|
+
validatorPrefs: PezpalletStakingValidatorPrefs;
|
|
102
|
+
claimedRewardsEras: Vec<u32>;
|
|
103
|
+
}
|
|
104
|
+
export interface DeriveStakingQuery extends DeriveStakingStash {
|
|
105
|
+
accountId: AccountId;
|
|
106
|
+
stakingLedger: PezpalletStakingStakingLedger;
|
|
107
|
+
}
|
|
108
|
+
export interface DeriveStakingElected {
|
|
109
|
+
info: DeriveStakingQuery[];
|
|
110
|
+
nextElected: AccountId[];
|
|
111
|
+
validators: AccountId[];
|
|
112
|
+
}
|
|
113
|
+
export interface DeriveStakingWaiting {
|
|
114
|
+
info: DeriveStakingQuery[];
|
|
115
|
+
waiting: AccountId[];
|
|
116
|
+
}
|
|
117
|
+
export interface DeriveUnlocking {
|
|
118
|
+
remainingEras: BN;
|
|
119
|
+
value: Balance;
|
|
120
|
+
}
|
|
121
|
+
export interface DeriveStakingAccount extends DeriveStakingQuery, DeriveStakingKeys {
|
|
122
|
+
redeemable?: Balance;
|
|
123
|
+
unlocking?: DeriveUnlocking[];
|
|
124
|
+
}
|
|
125
|
+
export interface DeriveStakingOverview extends DeriveSessionIndexes {
|
|
126
|
+
nextElected: AccountId[];
|
|
127
|
+
validators: AccountId[];
|
|
128
|
+
}
|
|
129
|
+
export interface StakingQueryFlags {
|
|
130
|
+
withController?: boolean;
|
|
131
|
+
withDestination?: boolean;
|
|
132
|
+
withExposure?: boolean;
|
|
133
|
+
withExposureErasStakersLegacy?: boolean;
|
|
134
|
+
withLedger?: boolean;
|
|
135
|
+
withNominations?: boolean;
|
|
136
|
+
withPrefs?: boolean;
|
|
137
|
+
withExposureMeta?: boolean;
|
|
138
|
+
withClaimedRewardsEras?: boolean;
|
|
139
|
+
}
|
package/staking/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { ObsInnerType } from '@pezkuwi/api-base/types';
|
|
3
|
+
import type { EraIndex } from '@pezkuwi/types/interfaces';
|
|
4
|
+
import type { ExactDerive } from '../derive.js';
|
|
5
|
+
import type { DeriveApi } from '../types.js';
|
|
6
|
+
type ApplyReturn<T extends keyof ExactDerive['staking']> = ReturnType<ExactDerive['staking'][T]>;
|
|
7
|
+
export declare function filterEras<T extends {
|
|
8
|
+
era: EraIndex;
|
|
9
|
+
}>(eras: EraIndex[], list: T[]): EraIndex[];
|
|
10
|
+
export declare function erasHistoricApply<F extends '_erasExposure' | '_erasPoints' | '_erasPrefs' | '_erasRewards' | '_erasSlashes'>(fn: F): (instanceId: string, api: DeriveApi) => (withActive?: boolean) => ApplyReturn<F>;
|
|
11
|
+
export declare function erasHistoricApplyAccount<F extends '_ownExposures' | '_ownSlashes' | '_stakerPoints' | '_stakerPrefs' | '_stakerSlashes'>(fn: F): (instanceId: string, api: DeriveApi) => (accountId: string | Uint8Array, withActive?: boolean) => ApplyReturn<F>;
|
|
12
|
+
export declare function singleEra<F extends '_eraExposure' | '_eraPrefs' | '_eraSlashes'>(fn: F): (instanceId: string, api: DeriveApi) => (era: EraIndex) => ApplyReturn<F>;
|
|
13
|
+
export declare function combineEras<F extends '_eraExposure' | '_eraPrefs' | '_eraSlashes'>(fn: F): (instanceId: string, api: DeriveApi) => (eras: EraIndex[], withActive: boolean) => Observable<ObsInnerType<ApplyReturn<F>>[]>;
|
|
14
|
+
export {};
|
package/staking/util.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BehaviorSubject, combineLatest, map, of, switchMap, tap, toArray } from 'rxjs';
|
|
2
|
+
import { arrayChunk, arrayFlatten, nextTick } from '@pezkuwi/util';
|
|
3
|
+
import { memo } from '../util/index.js';
|
|
4
|
+
const ERA_CHUNK_SIZE = 14;
|
|
5
|
+
function chunkEras(eras, fn) {
|
|
6
|
+
const chunked = arrayChunk(eras, ERA_CHUNK_SIZE);
|
|
7
|
+
let index = 0;
|
|
8
|
+
const subject = new BehaviorSubject(chunked[index]);
|
|
9
|
+
return subject.pipe(switchMap(fn), tap(() => {
|
|
10
|
+
nextTick(() => {
|
|
11
|
+
index++;
|
|
12
|
+
index === chunked.length
|
|
13
|
+
? subject.complete()
|
|
14
|
+
: subject.next(chunked[index]);
|
|
15
|
+
});
|
|
16
|
+
}), toArray(), map(arrayFlatten));
|
|
17
|
+
}
|
|
18
|
+
export function filterEras(eras, list) {
|
|
19
|
+
return eras.filter((e) => !list.some(({ era }) => e.eq(era)));
|
|
20
|
+
}
|
|
21
|
+
export function erasHistoricApply(fn) {
|
|
22
|
+
return (instanceId, api) =>
|
|
23
|
+
// Cannot quite get the typing right, but it is right in the code
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
25
|
+
memo(instanceId, (withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((e) => api.derive.staking[fn](e, withActive))));
|
|
26
|
+
}
|
|
27
|
+
export function erasHistoricApplyAccount(fn) {
|
|
28
|
+
return (instanceId, api) =>
|
|
29
|
+
// Cannot quite get the typing right, but it is right in the code
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
31
|
+
memo(instanceId, (accountId, withActive = false, page) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((e) => api.derive.staking[fn](accountId, e, withActive, page || 0))));
|
|
32
|
+
}
|
|
33
|
+
export function singleEra(fn) {
|
|
34
|
+
return (instanceId, api) =>
|
|
35
|
+
// Cannot quite get the typing right, but it is right in the code
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
37
|
+
memo(instanceId, (era) => api.derive.staking[fn](era, true));
|
|
38
|
+
}
|
|
39
|
+
export function combineEras(fn) {
|
|
40
|
+
return (instanceId, api) =>
|
|
41
|
+
// Cannot quite get the typing right, but it is right in the code
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
43
|
+
memo(instanceId, (eras, withActive) => !eras.length
|
|
44
|
+
? of([])
|
|
45
|
+
: chunkEras(eras, (eras) => combineLatest(eras.map((e) => api.derive.staking[fn](e, withActive)))));
|
|
46
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { AccountId } from '@pezkuwi/types/interfaces';
|
|
3
|
+
import type { DeriveApi, DeriveStakingValidators } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* @name nextElected
|
|
6
|
+
* @description Retrieves the list of accounts that are set to be the next elected validators in the staking system. It provides a preview of who will be validators in the next staking era.
|
|
7
|
+
* @example
|
|
8
|
+
* ```javascript
|
|
9
|
+
* const nextElected = await api.derive.staking.nextElected();
|
|
10
|
+
* console.log(
|
|
11
|
+
* "Next Elected Validators:",
|
|
12
|
+
* nextElected.map((acc) => acc.toString())
|
|
13
|
+
* );
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function nextElected(instanceId: string, api: DeriveApi): () => Observable<AccountId[]>;
|
|
17
|
+
/**
|
|
18
|
+
* @name validators
|
|
19
|
+
* @description Retrieve latest list of validators.
|
|
20
|
+
* @example
|
|
21
|
+
* ```javascript
|
|
22
|
+
* const { validators, nextElected } = await api.derive.staking.validators();
|
|
23
|
+
* console.log(
|
|
24
|
+
* "Current Validators:",
|
|
25
|
+
* validators.map((v) => v.toString())
|
|
26
|
+
* );
|
|
27
|
+
* console.log(
|
|
28
|
+
* "Next Elected Validators:",
|
|
29
|
+
* nextElected.map((v) => v.toString())
|
|
30
|
+
* );
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function validators(instanceId: string, api: DeriveApi): () => Observable<DeriveStakingValidators>;
|