From f80e22a8835a069bb5825b3fd127f36b9f3cbc87 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Mon, 24 Feb 2020 21:00:39 +0100 Subject: [PATCH] Updates for lazy payouts (#2292) * Updates for lazy payouts * Add chain overrides * Align currentEra & indexes * Empty nominator updates * currentElected -> nextElected * Bump deps * Bump api --- package.json | 10 +- packages/app-contracts/package.json | 2 +- .../src/Motions/useAvailableSlashes.ts | 9 +- packages/app-explorer/src/SummarySession.tsx | 2 +- .../app-staking/src/Actions/Account/index.tsx | 6 +- .../src/Actions/Account/useInactives.ts | 33 +++-- packages/app-staking/src/Overview/Address.tsx | 16 +-- .../app-staking/src/Overview/CurrentList.tsx | 16 ++- packages/app-staking/src/Overview/types.ts | 4 +- packages/app-staking/src/Targets/index.tsx | 4 +- packages/app-staking/src/useBlockCounts.tsx | 7 +- packages/react-api/package.json | 2 +- .../react-api/src/overrides/chain/westend.ts | 3 +- .../src/overrides/spec/centrifuge-chain.ts | 6 +- .../react-api/src/overrides/spec/edgeware.ts | 3 +- .../react-api/src/overrides/spec/kulupu.ts | 3 +- yarn.lock | 126 +++++++++--------- 17 files changed, 135 insertions(+), 117 deletions(-) diff --git a/package.json b/package.json index 2ec7fd85b0..01b6b20218 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,11 @@ "packages/*" ], "resolutions": { - "@polkadot/api": "^1.4.0-beta.35", - "@polkadot/api-contract": "^1.4.0-beta.35", + "@polkadot/api": "^1.4.0-beta.41", + "@polkadot/api-contract": "^1.4.0-beta.41", "@polkadot/keyring": "^2.5.1", - "@polkadot/typegen": "^1.4.0-beta.35", - "@polkadot/types": "^1.4.0-beta.35", + "@polkadot/typegen": "^1.4.0-beta.41", + "@polkadot/types": "^1.4.0-beta.41", "@polkadot/util": "^2.5.1", "@polkadot/util-crypto": "^2.5.1", "babel-core": "^7.0.0-bridge.0", @@ -41,7 +41,7 @@ "@babel/runtime": "^7.8.4", "@polkadot/dev": "^0.41.3", "@polkadot/ts": "^0.2.3", - "@polkadot/typegen": "^1.4.0-beta.35", + "@polkadot/typegen": "^1.4.0-beta.41", "@types/bn.js": "^4.11.6", "@types/chart.js": "^2.9.11", "@types/file-saver": "^2.0.0", diff --git a/packages/app-contracts/package.json b/packages/app-contracts/package.json index c0eab86d58..a940953a41 100644 --- a/packages/app-contracts/package.json +++ b/packages/app-contracts/package.json @@ -12,6 +12,6 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.8.4", - "@polkadot/api-contract": "^1.4.0-beta.35" + "@polkadot/api-contract": "^1.4.0-beta.41" } } diff --git a/packages/app-council/src/Motions/useAvailableSlashes.ts b/packages/app-council/src/Motions/useAvailableSlashes.ts index f8464a229f..aba145fd50 100644 --- a/packages/app-council/src/Motions/useAvailableSlashes.ts +++ b/packages/app-council/src/Motions/useAvailableSlashes.ts @@ -2,6 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. +import { DeriveSessionIndexes } from '@polkadot/api-derive/types'; import { EraIndex, UnappliedSlash } from '@polkadot/types/interfaces'; import BN from 'bn.js'; @@ -13,7 +14,7 @@ type Unsub = () => void; export default function useAvailableSlashes (): [BN, UnappliedSlash[]][] { const { api } = useApi(); - const currentEra = useCall(api.query.staking?.currentEra, []); + const indexes = useCall(api.derive.session?.indexes, []); const earliestSlash = useCall>(api.query.staking?.earliestUnappliedSlash, []); const mounted = useIsMountedRef(); const [slashes, setSlashes] = useState<[BN, UnappliedSlash[]][]>([]); @@ -21,12 +22,12 @@ export default function useAvailableSlashes (): [BN, UnappliedSlash[]][] { useEffect((): Unsub => { let unsub: Unsub | undefined; - if (mounted.current && currentEra && earliestSlash?.isSome) { + if (mounted.current && indexes && earliestSlash?.isSome) { const from = earliestSlash.unwrap(); const range: BN[] = []; let start = new BN(from); - while (start.lt(currentEra)) { + while (start.lt(indexes.activeEra)) { range.push(start); start = start.addn(1); } @@ -47,7 +48,7 @@ export default function useAvailableSlashes (): [BN, UnappliedSlash[]][] { return (): void => { unsub && unsub(); }; - }, [currentEra, earliestSlash]); + }, [earliestSlash, indexes]); return slashes; } diff --git a/packages/app-explorer/src/SummarySession.tsx b/packages/app-explorer/src/SummarySession.tsx index 79d6c57f3f..3e9a6109dc 100644 --- a/packages/app-explorer/src/SummarySession.tsx +++ b/packages/app-explorer/src/SummarySession.tsx @@ -63,7 +63,7 @@ export default function SummarySession ({ withEra = true, withSession = true }: ) : ( - #{formatNumber(sessionInfo.currentEra)} + #{formatNumber(sessionInfo.activeEra)} ) )} diff --git a/packages/app-staking/src/Actions/Account/index.tsx b/packages/app-staking/src/Actions/Account/index.tsx index 659ac8072f..bb013b5e66 100644 --- a/packages/app-staking/src/Actions/Account/index.tsx +++ b/packages/app-staking/src/Actions/Account/index.tsx @@ -39,6 +39,7 @@ interface Props { interface StakeState { controllerId: string | null; destination: number; + exposure?: Exposure; hexSessionIdNext: string | null; hexSessionIdQueue: string | null; isLoading: boolean; @@ -47,7 +48,6 @@ interface StakeState { isStashValidating: boolean; nominees?: string[]; sessionIds: string[]; - stakers?: Exposure; stakingLedger?: StakingLedger; validatorPrefs?: ValidatorPrefs; } @@ -58,7 +58,7 @@ function toIdString (id?: AccountId | null): string | null { : null; } -function getStakeState (allAccounts: string[], allStashes: string[] | undefined, { controllerId: _controllerId, nextSessionIds, nominators, rewardDestination, sessionIds, stakers, stakingLedger, validatorPrefs }: DerivedStakingAccount, stashId: string, validateInfo: ValidatorInfo): StakeState { +function getStakeState (allAccounts: string[], allStashes: string[] | undefined, { controllerId: _controllerId, exposure, nextSessionIds, nominators, rewardDestination, sessionIds, stakingLedger, validatorPrefs }: DerivedStakingAccount, stashId: string, validateInfo: ValidatorInfo): StakeState { const isStashNominating = !!(nominators?.length); const isStashValidating = !validateInfo[1].isEmpty || !!allStashes?.includes(stashId); const nextConcat = u8aConcat(...nextSessionIds.map((id): Uint8Array => id.toU8a())); @@ -68,6 +68,7 @@ function getStakeState (allAccounts: string[], allStashes: string[] | undefined, return { controllerId, destination: rewardDestination?.toNumber() || 0, + exposure, hexSessionIdNext: u8aToHex(nextConcat, 48), hexSessionIdQueue: u8aToHex(currConcat.length ? currConcat : nextConcat, 48), isLoading: false, @@ -81,7 +82,6 @@ function getStakeState (allAccounts: string[], allStashes: string[] | undefined, ? nextSessionIds : sessionIds ).map(toIdString) as string[], - stakers, stakingLedger, validatorPrefs }; diff --git a/packages/app-staking/src/Actions/Account/useInactives.ts b/packages/app-staking/src/Actions/Account/useInactives.ts index 9740c09e3a..c5fa3348f8 100644 --- a/packages/app-staking/src/Actions/Account/useInactives.ts +++ b/packages/app-staking/src/Actions/Account/useInactives.ts @@ -2,32 +2,39 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. +import { DeriveSessionIndexes } from '@polkadot/api-derive/types'; import { Exposure } from '@polkadot/types/interfaces'; import { useEffect, useState } from 'react'; -import { useApi, useIsMountedRef } from '@polkadot/react-hooks'; +import { useApi, useCall, useIsMountedRef } from '@polkadot/react-hooks'; export default function useInactives (stashId: string, nominees?: string[]): string[] { const { api } = useApi(); const mountedRef = useIsMountedRef(); const [inactives, setInactives] = useState([]); + const indexes = useCall(api.derive.session.indexes, []); useEffect((): () => void => { let unsub: (() => void) | undefined; - if (mountedRef.current && nominees?.length) { - api.query.staking.stakers - .multi(nominees, (exposures: Exposure[]): void => { - const inactives: string[] = []; + if (mountedRef.current && nominees?.length && indexes) { + api + .queryMulti( + api.query.staking.erasStakers + ? nominees.map((id) => [api.query.staking.erasStakers, [indexes.activeEra, id]]) + : nominees.map((id) => [api.query.staking.stakers, id]), + (exposures: Exposure[]): void => { + const inactives: string[] = []; - exposures.forEach((exposure, index): void => { - if (!exposure.others.some((indv): boolean => indv.who.eq(stashId))) { - inactives.push(nominees[index].toString()); - } - }); + exposures.forEach((exposure, index): void => { + if (!exposure.others.some((indv): boolean => indv.who.eq(stashId))) { + inactives.push(nominees[index].toString()); + } + }); - setInactives(inactives); - }) + setInactives(inactives); + } + ) .then((_unsub): void => { unsub = _unsub; }); @@ -36,7 +43,7 @@ export default function useInactives (stashId: string, nominees?: string[]): str return (): void => { unsub && unsub(); }; - }, [nominees, stashId]); + }, [indexes, nominees, stashId]); return inactives; } diff --git a/packages/app-staking/src/Overview/Address.tsx b/packages/app-staking/src/Overview/Address.tsx index 5a038e50a8..20f66c8868 100644 --- a/packages/app-staking/src/Overview/Address.tsx +++ b/packages/app-staking/src/Overview/Address.tsx @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { AccountId, Balance, Points } from '@polkadot/types/interfaces'; +import { AccountId, Balance, RewardPoint } from '@polkadot/types/interfaces'; import { DeriveAccountInfo, DerivedStakingQuery, DerivedHeartbeatAuthor } from '@polkadot/api-derive/types'; import { ValidatorFilter } from '../types'; @@ -30,7 +30,7 @@ interface Props { isFavorite: boolean; lastBlock?: string; myAccounts: string[]; - points?: Points; + points?: RewardPoint; setNominators?: (nominators: string[]) => void; toggleFavorite: (accountId: string) => void; withNominations?: boolean; @@ -48,12 +48,12 @@ interface StakingState { stakeOwn?: BN; } -function expandInfo ({ controllerId, nextSessionIds, stakers, validatorPrefs }: DerivedStakingQuery, myAccounts: string[], withNominations = true): StakingState { - const nominators = withNominations && stakers - ? stakers.others.map(({ who, value }): [AccountId, Balance] => [who, value.unwrap()]) +function expandInfo ({ controllerId, exposure, nextSessionIds, validatorPrefs }: DerivedStakingQuery, myAccounts: string[], withNominations = true): StakingState { + const nominators = withNominations && exposure + ? exposure.others.map(({ who, value }): [AccountId, Balance] => [who, value.unwrap()]) : []; - const stakeTotal = (stakers && !stakers.total.isEmpty && stakers.total.unwrap()) || undefined; - const stakeOwn = (stakers && !stakers.own.isEmpty && stakers.own.unwrap()) || undefined; + const stakeTotal = (exposure && !exposure.total.isEmpty && exposure.total.unwrap()) || undefined; + const stakeOwn = (exposure && !exposure.own.isEmpty && exposure.own.unwrap()) || undefined; const stakeOther = (stakeTotal && stakeOwn) ? stakeTotal.sub(stakeOwn) : undefined; const commission = validatorPrefs?.commission?.unwrap(); @@ -229,7 +229,7 @@ export default function Address ({ address, className, filter, filterName, hasQu )} - {points && points.gtn(0) && ( + {points?.gtn(0) && ( <>{formatNumber(points)} )} diff --git a/packages/app-staking/src/Overview/CurrentList.tsx b/packages/app-staking/src/Overview/CurrentList.tsx index 2e149cba4f..22771eb85b 100644 --- a/packages/app-staking/src/Overview/CurrentList.tsx +++ b/packages/app-staking/src/Overview/CurrentList.tsx @@ -85,7 +85,7 @@ export default function CurrentList ({ authorsMap, hasQueries, isIntentions, isV useEffect((): void => { if (isVisible && stakingOverview) { - const allElected = accountsToString(stakingOverview.currentElected); + const allElected = accountsToString(stakingOverview.nextElected); const _validators = accountsToString(stakingOverview.validators); const validators = filterAccounts(_validators, allElected, favorites, []); const elected = filterAccounts(allElected, allElected, favorites, _validators); @@ -97,17 +97,21 @@ export default function CurrentList ({ authorsMap, hasQueries, isIntentions, isV waiting: filterAccounts(next, [], favorites, allElected) }); } - }, [favorites, isVisible, next, stakingOverview?.currentElected, stakingOverview?.validators]); + }, [favorites, isVisible, next, stakingOverview?.nextElected, stakingOverview?.validators]); useEffect((): void => { - if (stakingOverview) { + if (stakingOverview?.eraPoints) { + const allPoints = stakingOverview.eraPoints + ? [...stakingOverview.eraPoints.individual.entries()] + : []; + dispatchDetails(validators.map(([address]): AddressDetails => { - const electedIdx = allElected.indexOf(address); + const points = allPoints.find(([accountId]): boolean => accountId.eq(address)); return { address, - points: electedIdx !== -1 - ? stakingOverview.eraPoints?.individual[electedIdx] + points: points + ? points[1] : undefined }; })); diff --git a/packages/app-staking/src/Overview/types.ts b/packages/app-staking/src/Overview/types.ts index 5dd15942fc..dee273128c 100644 --- a/packages/app-staking/src/Overview/types.ts +++ b/packages/app-staking/src/Overview/types.ts @@ -2,9 +2,9 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { Points } from '@polkadot/types/interfaces'; +import { RewardPoint } from '@polkadot/types/interfaces'; export interface AddressDetails { address: string; - points?: Points; + points?: RewardPoint; } diff --git a/packages/app-staking/src/Targets/index.tsx b/packages/app-staking/src/Targets/index.tsx index 1f0194f8a7..b874225cc8 100644 --- a/packages/app-staking/src/Targets/index.tsx +++ b/packages/app-staking/src/Targets/index.tsx @@ -96,8 +96,8 @@ function extractInfo (allAccounts: string[], amount: BN = new BN(0), electedInfo let totalStaked = new BN(0); const perValidatorReward = lastReward.divn(electedInfo.info.length); const validators = sortValidators( - electedInfo.info.map(({ accountId, stakers, validatorPrefs }): ValidatorInfo => { - const exposure = stakers || { + electedInfo.info.map(({ accountId, exposure: _exposure, validatorPrefs }): ValidatorInfo => { + const exposure = _exposure || { total: createType(registry, 'Compact'), own: createType(registry, 'Compact'), others: createType(registry, 'Vec') diff --git a/packages/app-staking/src/useBlockCounts.tsx b/packages/app-staking/src/useBlockCounts.tsx index b589dd7925..bfe256859a 100644 --- a/packages/app-staking/src/useBlockCounts.tsx +++ b/packages/app-staking/src/useBlockCounts.tsx @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { SessionIndex } from '@polkadot/types/interfaces'; +import { DeriveSessionIndexes } from '@polkadot/api-derive/types'; import { SessionRewards } from './types'; import { useEffect, useState } from 'react'; @@ -12,10 +12,11 @@ import { u32 } from '@polkadot/types'; export default function useBlockCounts (accountId: string, sessionRewards: SessionRewards[]): u32[] { const { api } = useApi(); const mounted = useIsMountedRef(); + const indexes = useCall(api.derive.session?.indexes, []); + const current = useCall(api.query.imOnline?.authoredBlocks, [indexes?.currentIndex, accountId]); const [counts, setCounts] = useState([]); const [historic, setHistoric] = useState([]); - const sessionIndex = useCall(api.query.session.currentIndex, []); - const current = useCall(api.query.imOnline?.authoredBlocks, [sessionIndex, accountId]); + useEffect((): void => { if (api.query.imOnline?.authoredBlocks && sessionRewards?.length) { diff --git a/packages/react-api/package.json b/packages/react-api/package.json index 994263eab0..577e13a926 100644 --- a/packages/react-api/package.json +++ b/packages/react-api/package.json @@ -31,7 +31,7 @@ "homepage": "https://github.com/polkadot-js/ui/tree/master/packages/ui-reactive#readme", "dependencies": { "@babel/runtime": "^7.8.4", - "@polkadot/api": "^1.4.0-beta.35", + "@polkadot/api": "^1.4.0-beta.41", "@polkadot/extension-dapp": "^0.22.0-beta.5", "edgeware-node-types": "^1.1.0", "rxjs-compat": "^6.5.3" diff --git a/packages/react-api/src/overrides/chain/westend.ts b/packages/react-api/src/overrides/chain/westend.ts index 82df2fd3db..4c2a5c3f6c 100644 --- a/packages/react-api/src/overrides/chain/westend.ts +++ b/packages/react-api/src/overrides/chain/westend.ts @@ -5,5 +5,6 @@ export default { Address: 'GenericAddress', BalanceLock: 'BalanceLockTo212', - Keys: 'SessionKeys5' + Keys: 'SessionKeys5', + StakingLedger: 'StakingLedgerTo223' }; diff --git a/packages/react-api/src/overrides/spec/centrifuge-chain.ts b/packages/react-api/src/overrides/spec/centrifuge-chain.ts index b4b851ce3d..3c5a96d472 100644 --- a/packages/react-api/src/overrides/spec/centrifuge-chain.ts +++ b/packages/react-api/src/overrides/spec/centrifuge-chain.ts @@ -3,6 +3,7 @@ // of the Apache-2.0 license. See the LICENSE file for details. export default { + // chain-specific AnchorData: { id: 'H256', docRoot: 'H256', @@ -21,6 +22,7 @@ export default { leafHash: 'H256', sortedHashes: 'H256' }, - // Workarounds - BalanceLock: 'BalanceLockTo212' // workaround for balances not showing up, see https://github.com/polkadot-js/apps/issues/2236 + // Non-current Substrate types + BalanceLock: 'BalanceLockTo212', + StakingLedger: 'StakingLedgerTo223' }; diff --git a/packages/react-api/src/overrides/spec/edgeware.ts b/packages/react-api/src/overrides/spec/edgeware.ts index 0b3a62acd4..1c80f41d06 100644 --- a/packages/react-api/src/overrides/spec/edgeware.ts +++ b/packages/react-api/src/overrides/spec/edgeware.ts @@ -8,5 +8,6 @@ import { EdgewareTypes } from './edgeware-node-types'; export default { ...EdgewareTypes, Address: 'GenericAddress', - Keys: 'SessionKeys4' + Keys: 'SessionKeys4', + StakingLedger: 'StakingLedgerTo223' }; diff --git a/packages/react-api/src/overrides/spec/kulupu.ts b/packages/react-api/src/overrides/spec/kulupu.ts index 375474646a..c532e8ebdd 100644 --- a/packages/react-api/src/overrides/spec/kulupu.ts +++ b/packages/react-api/src/overrides/spec/kulupu.ts @@ -15,5 +15,6 @@ export default { DispatchInfo: { weight: 'Weight', class: 'DispatchClass' - } + }, + StakingLedger: 'StakingLedgerTo223' }; diff --git a/yarn.lock b/yarn.lock index 7bc58732be..7e384c5aaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2158,47 +2158,47 @@ dependencies: "@types/node" ">= 8" -"@polkadot/api-contract@^1.4.0-beta.35": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-1.4.0-beta.36.tgz#260182b8641bde22745c1df1d397d7c591438a6d" - integrity sha512-M96AMfPfrHOYi4yJyiZ1MglbMTRJo5Spcwsf4BOO2lMdouh9o3aAMIuK95pr8IYvnd7yFnQwy/GwkkMTUkFswQ== +"@polkadot/api-contract@^1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-1.4.0-beta.41.tgz#7646250e832a3e4c0ccdd8907ca2b54d89285a9d" + integrity sha512-i8s+D5Rn59rpo1n49RtWBqTR5n3u9sNqbiPRBiaAZQPwo+h3QEpnk80dC2q/tKM6+TVUbGjAkJWUvY43avqfYQ== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/api" "1.4.0-beta.36" - "@polkadot/rpc-core" "1.4.0-beta.36" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/api" "1.4.0-beta.41" + "@polkadot/rpc-core" "1.4.0-beta.41" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" bn.js "^5.1.1" rxjs "^6.5.4" -"@polkadot/api-derive@1.4.0-beta.36": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.4.0-beta.36.tgz#c72174c3c47d976275a9a3b88547eb06f9963341" - integrity sha512-WyUZ193HNb1K+llP/RCTRijoB7tN1Y7r7BZyZtwkbROXm9Wh9MOlAuHOLxPPgXnG+FfMaBoZyjMv0tgT5NEOGg== +"@polkadot/api-derive@1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.4.0-beta.41.tgz#4d4e2afcf145beeafc07cdfff82caa0b3a1ba63a" + integrity sha512-L1DCL+h9fYKuG54AcbllN8DXV8UcSwG5UOtS2NhLKIoEUMdhdijFncdXflfy5lMmnIMFhBvYAkBvEqt3aGcB3w== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/api" "1.4.0-beta.36" - "@polkadot/rpc-core" "1.4.0-beta.36" - "@polkadot/rpc-provider" "1.4.0-beta.36" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/api" "1.4.0-beta.41" + "@polkadot/rpc-core" "1.4.0-beta.41" + "@polkadot/rpc-provider" "1.4.0-beta.41" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" "@polkadot/util-crypto" "^2.5.1" bn.js "^5.1.1" memoizee "^0.4.14" rxjs "^6.5.4" -"@polkadot/api@1.4.0-beta.36", "@polkadot/api@^1.4.0-beta.35": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.4.0-beta.36.tgz#46910a7da68b4da1866e359ab48f03f3bcbafc43" - integrity sha512-cikektxsPEvHZb96bomZ6o92W2YLIg8Q9TI9k9UFUsUi7HuoBZSvf3p8WRjq+4u4Ad8NCGijIsl3l+w+r3iNDQ== +"@polkadot/api@1.4.0-beta.41", "@polkadot/api@^1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.4.0-beta.41.tgz#3427d5c0e434e4d6eed99be5a99833447c55a1e1" + integrity sha512-s3PMuTe6/y8TzpiPglA40QAXYVlij8YDbi8bUSM0WTpqez5tIsSOXaSyvfpWtIgcMNILB7aMiAGaPyvXXX/hyw== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/api-derive" "1.4.0-beta.36" + "@polkadot/api-derive" "1.4.0-beta.41" "@polkadot/keyring" "^2.5.1" - "@polkadot/metadata" "1.4.0-beta.36" - "@polkadot/rpc-core" "1.4.0-beta.36" - "@polkadot/rpc-provider" "1.4.0-beta.36" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/metadata" "1.4.0-beta.41" + "@polkadot/rpc-core" "1.4.0-beta.41" + "@polkadot/rpc-provider" "1.4.0-beta.41" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" "@polkadot/util-crypto" "^2.5.1" bn.js "^5.1.1" @@ -2285,13 +2285,13 @@ dependencies: "@babel/runtime" "^7.8.4" -"@polkadot/jsonrpc@1.4.0-beta.36": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-1.4.0-beta.36.tgz#da5de8025f9e37045b74a2c96a3609bed928eb55" - integrity sha512-76LSHCbF/tJjQAsdeR1AeuQCioVNLgvl1F9QZVQ8bLu33pytaxvhIj8HxhwSlISEj4nuHFA2Rekc70mXuSo6ag== +"@polkadot/jsonrpc@1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-1.4.0-beta.41.tgz#8567d1483e832bd2413c5608b73f06fb7df484c8" + integrity sha512-h1gY39QWqIK7nb9xk/cOTGNw7qbWDCt7XlVNywjf+YEMAvnYmBYnEa6GplDe+7Ul8gUBC+ky94X5k26hnIuJmw== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" "@polkadot/keyring@^2.5.1": @@ -2303,13 +2303,13 @@ "@polkadot/util" "2.5.1" "@polkadot/util-crypto" "2.5.1" -"@polkadot/metadata@1.4.0-beta.36": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.4.0-beta.36.tgz#d8aa97a3f9136157acd080404075ae883c10593e" - integrity sha512-O2B6HiL8TRMgxTRYGq/fuzvPgt5IinvyCQ4kGdmi72vh54rSaTE9uLPkrJn6cHn898rOb2nQdn0afMa1MPc9dw== +"@polkadot/metadata@1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.4.0-beta.41.tgz#4025440603358d4172a618bf9fd7e894368faf9f" + integrity sha512-t1fhNYHrjROtBSJE8KBGK1Lp2JPsbDRGhfB6OFpIOhPA7QJGiMBwTFujJiCfg8BTKRkM3gCHmBn9VGW9Yn1x0Q== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" "@polkadot/util-crypto" "^2.5.1" bn.js "^5.1.1" @@ -2336,29 +2336,29 @@ qrcode-generator "^1.4.4" react-qr-reader "^2.2.1" -"@polkadot/rpc-core@1.4.0-beta.36": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.4.0-beta.36.tgz#90e5ece6e64289cab54b14d34b4cec56a7c2f336" - integrity sha512-nKe+oIJ6CLoJrIjNNS/z0vQ7FGkh18IjdN64GN9/LE7OZE4bulEhUytyyk2PBDuQFAiTfhtmu27jfcS/oQLrcg== +"@polkadot/rpc-core@1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.4.0-beta.41.tgz#4734a418349741f2b3b1e9558872761b39520ed2" + integrity sha512-est1HhH8Y45mBoPT3jGSdjNsLv8AtgU3Fyxkv2YGEJA7rMxaJECmp6CJ3yOPDvK4DZ3p8RIRfhFV9mf+CHOMkw== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/jsonrpc" "1.4.0-beta.36" - "@polkadot/metadata" "1.4.0-beta.36" - "@polkadot/rpc-provider" "1.4.0-beta.36" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/jsonrpc" "1.4.0-beta.41" + "@polkadot/metadata" "1.4.0-beta.41" + "@polkadot/rpc-provider" "1.4.0-beta.41" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" memoizee "^0.4.14" rxjs "^6.5.4" -"@polkadot/rpc-provider@1.4.0-beta.36": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.4.0-beta.36.tgz#2f14496614604cc37e8e6f695cb69888ff90ad08" - integrity sha512-5/F/WQdwHrNafJwXDM1XQ/VsjDy6+/wbq8gtkuoG0akgC6pBmY03Fj2r5Y37HSGPnqSNBuR6XULZLblNBAgBbw== +"@polkadot/rpc-provider@1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.4.0-beta.41.tgz#94e91f0bb08c82230fe6017065e060a7399d8e89" + integrity sha512-umLpx91C/BIyg0ytqGXnqqnjiB+ENKMRdZm+fyQJquq2x57n9A6WLTPNvTHXdJ0JaRZpQPzdo+Oln0dSrQ7eVg== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/jsonrpc" "1.4.0-beta.36" - "@polkadot/metadata" "1.4.0-beta.36" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/jsonrpc" "1.4.0-beta.41" + "@polkadot/metadata" "1.4.0-beta.41" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" "@polkadot/util-crypto" "^2.5.1" bn.js "^5.1.1" @@ -2373,30 +2373,30 @@ dependencies: "@types/chrome" "^0.0.95" -"@polkadot/typegen@^1.4.0-beta.35": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/typegen/-/typegen-1.4.0-beta.36.tgz#61bb8a04809b5d56601219e912ebf4ac0c55a155" - integrity sha512-xdNUq2hGIYOnizJqR6bAGP9VoTGYc3pXGN/RIMkkKaDX0d7c/uBnoXCITiITUtt2gQeiNLaUdUziZszxageEQw== +"@polkadot/typegen@^1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/typegen/-/typegen-1.4.0-beta.41.tgz#cef22db17b1b53e3462de6219fe3d141df9acbec" + integrity sha512-7N/xH2Q5xE1/UT/dRbQCP9Ejo5ueaVpGoYOZlBawSgHLxi8nEhHUj79qhzEg8ekvrmQUgIqjncNQcNBZn3SbNg== dependencies: "@babel/core" "^7.8.3" "@babel/register" "^7.8.3" "@babel/runtime" "^7.8.4" - "@polkadot/api" "1.4.0-beta.36" - "@polkadot/jsonrpc" "1.4.0-beta.36" - "@polkadot/metadata" "1.4.0-beta.36" - "@polkadot/rpc-provider" "1.4.0-beta.36" - "@polkadot/types" "1.4.0-beta.36" + "@polkadot/api" "1.4.0-beta.41" + "@polkadot/jsonrpc" "1.4.0-beta.41" + "@polkadot/metadata" "1.4.0-beta.41" + "@polkadot/rpc-provider" "1.4.0-beta.41" + "@polkadot/types" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" websocket "^1.0.31" yargs "^15.1.0" -"@polkadot/types@1.4.0-beta.36", "@polkadot/types@^1.4.0-beta.35": - version "1.4.0-beta.36" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.4.0-beta.36.tgz#65ce0e7feefcfd544a7fc78e2dc96a6715b42dc0" - integrity sha512-QtwPF8atzd4dutISO9f3aAg5DHvruzse7cF09xB9CSi2oCLhMo8sQF9jnR5ETRkGWrTNVm62eXToxC0z0jhiLw== +"@polkadot/types@1.4.0-beta.41", "@polkadot/types@^1.4.0-beta.41": + version "1.4.0-beta.41" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.4.0-beta.41.tgz#b987a657ec8c8667bc7d4400701d7a3b73b63888" + integrity sha512-0Tc64R3Y9SSd+9EuC4IAJhtDHbRUZeV3iH23dFDX+1UZFo68P92aQefH5G93knc+Z4Q3eWEEIDrEOzfDQhCAkQ== dependencies: "@babel/runtime" "^7.8.4" - "@polkadot/metadata" "1.4.0-beta.36" + "@polkadot/metadata" "1.4.0-beta.41" "@polkadot/util" "^2.5.1" "@polkadot/util-crypto" "^2.5.1" "@types/bn.js" "^4.11.6"