Update ValidatorPrefs with commission (#1959)

* Update ValidatorPrefs with commission

* Bump API
This commit is contained in:
Jaco Greeff 2019-11-28 17:44:50 +01:00 committed by GitHub
parent 3ed017fd97
commit f6976e1e49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 151 additions and 100 deletions

View File

@ -10,10 +10,10 @@
"packages/*"
],
"resolutions": {
"@polkadot/api": "^0.97.0-beta.39",
"@polkadot/api-contract": "^0.97.0-beta.39",
"@polkadot/api": "^0.97.0-beta.40",
"@polkadot/api-contract": "^0.97.0-beta.40",
"@polkadot/keyring": "^1.7.1",
"@polkadot/types": "^0.97.0-beta.39",
"@polkadot/types": "^0.97.0-beta.40",
"@polkadot/util": "^1.7.1",
"@polkadot/util-crypto": "^1.7.1",
"babel-core": "^7.0.0-bridge.0",

View File

@ -11,7 +11,7 @@
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime": "^7.7.4",
"@polkadot/api-contract": "^0.97.0-beta.39",
"@polkadot/api-contract": "^0.97.0-beta.40",
"@polkadot/react-components": "^0.37.0-beta.134"
}
}

View File

@ -2,14 +2,15 @@
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import { ValidatorPrefs, ValidatorPrefs0to145 } from '@polkadot/types/interfaces';
import { ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196 } from '@polkadot/types/interfaces';
import { ApiProps } from '@polkadot/react-api/types';
import { I18nProps } from '@polkadot/react-components/types';
import BN from 'bn.js';
import React from 'react';
import { withApi, withMulti } from '@polkadot/react-api';
import { registry, withApi, withMulti } from '@polkadot/react-api';
import { Button, InputAddress, InputBalance, InputNumber, Modal, TxButton, TxComponent } from '@polkadot/react-components';
import { createType } from '@polkadot/types';
import InputValidationUnstakeThreshold from './InputValidationUnstakeThreshold';
import translate from '../../translate';
@ -19,17 +20,24 @@ interface Props extends ApiProps, I18nProps {
isOpen: boolean;
onClose: () => void;
stashId: string;
validatorPrefs?: ValidatorPrefs | ValidatorPrefs0to145;
validatorPrefs?: ValidatorPrefs | ValidatorPrefsTo145 | ValidatorPrefsTo196;
}
interface State {
unstakeThreshold?: BN;
hasCommission: boolean;
commission: BN;
unstakeThreshold: BN;
unstakeThresholdError: string | null;
validatorPayment?: BN;
validatorPayment: BN;
}
const COMM_MUL = new BN(10000000);
const MAX_COMM = new BN(100);
class Validate extends TxComponent<Props, State> {
public state: State = {
hasCommission: !!(createType(registry, 'ValidatorPrefs').commission),
commission: new BN(0),
unstakeThreshold: new BN(3),
unstakeThresholdError: null,
validatorPayment: new BN(0)
@ -87,7 +95,7 @@ class Validate extends TxComponent<Props, State> {
private renderButtons (): React.ReactNode {
const { controllerId, isSubstrateV2, onClose, t } = this.props;
const { unstakeThreshold, unstakeThresholdError, validatorPayment } = this.state;
const { commission, hasCommission, unstakeThreshold, unstakeThresholdError, validatorPayment } = this.state;
return (
<Modal.Actions>
@ -108,7 +116,9 @@ class Validate extends TxComponent<Props, State> {
onClick={onClose}
params={[
isSubstrateV2
? { validatorPayment }
? hasCommission
? { commission }
: { validatorPayment }
: { unstakeThreshold, validatorPayment }
]}
tx='staking.validate'
@ -121,8 +131,8 @@ class Validate extends TxComponent<Props, State> {
private renderContent (): React.ReactNode {
const { controllerId, isSubstrateV2, stashId, t, validatorPrefs } = this.props;
const { unstakeThreshold, unstakeThresholdError } = this.state;
const defaultThreshold = validatorPrefs && (validatorPrefs as ValidatorPrefs0to145).unstakeThreshold && (validatorPrefs as ValidatorPrefs0to145).unstakeThreshold.toBn();
const { hasCommission, unstakeThreshold, unstakeThresholdError } = this.state;
const defaultThreshold = validatorPrefs && (validatorPrefs as ValidatorPrefsTo145).unstakeThreshold && (validatorPrefs as ValidatorPrefsTo145).unstakeThreshold.toBn();
return (
<>
@ -161,30 +171,42 @@ class Validate extends TxComponent<Props, State> {
/>
</>
)}
<InputBalance
className='medium'
defaultValue={validatorPrefs?.validatorPayment?.toBn()}
help={t('Amount taken up-front from the reward by the validator before splitting the remainder between themselves and the nominators')}
isZeroable
label={t('reward commission')}
onChange={this.onChangePayment}
onEnter={this.sendTx}
/>
{
hasCommission
? <InputNumber
className='medium'
help={t('The percentage reward (0-100) that should be applied for the validator')}
isZeroable
label={t('reward commission percentage')}
maxValue={MAX_COMM}
onChange={this.onChangeCommission}
onEnter={this.sendTx}
/>
: <InputBalance
className='medium'
defaultValue={(validatorPrefs as ValidatorPrefsTo196)?.validatorPayment?.toBn()}
help={t('Amount taken up-front from the reward by the validator before splitting the remainder between themselves and the nominators')}
isZeroable
label={t('validator payment')}
onChange={this.onChangePayment}
onEnter={this.sendTx}
/>
}
</Modal.Content>
</>
);
}
private onChangeCommission = (commission?: BN): void => {
commission && this.setState({ commission: commission.mul(COMM_MUL) });
}
private onChangePayment = (validatorPayment?: BN): void => {
if (validatorPayment) {
this.setState({ validatorPayment });
}
validatorPayment && this.setState({ validatorPayment });
}
private onChangeThreshold = (unstakeThreshold?: BN): void => {
if (unstakeThreshold) {
this.setState({ unstakeThreshold });
}
unstakeThreshold && this.setState({ unstakeThreshold });
}
private onUnstakeThresholdError = (unstakeThresholdError: string | null): void => {

View File

@ -17,7 +17,7 @@ interface Props extends I18nProps {
toggleFavorite: (accountId: string) => void;
}
function Validator ({ info: { accountId, bondOther, bondOwn, bondTotal, commission, isFavorite, isNominating, key, numNominators, rankOverall, rewardPayout }, toggleFavorite }: Props): React.ReactElement<Props> {
function Validator ({ info: { accountId, bondOther, bondOwn, bondTotal, commissionPer, isCommission, isFavorite, isNominating, key, numNominators, rankOverall, rewardPayout, validatorPayment }, toggleFavorite }: Props): React.ReactElement<Props> {
const _onFavorite = (): void => toggleFavorite(key);
const _onQueryStats = (): void => {
window.location.hash = `/staking/query/${key}`;
@ -34,7 +34,13 @@ function Validator ({ info: { accountId, bondOther, bondOwn, bondTotal, commissi
</td>
<td className='number'>{formatNumber(rankOverall)}</td>
<td className='address'><AddressMini value={accountId} /></td>
<td className='number'><FormatBalance value={commission} /></td>
<td className='number'>
{
isCommission
? `${commissionPer.toFixed(2)}%`
: <FormatBalance value={validatorPayment} />
}
</td>
<td className='number'>{formatNumber(numNominators)}</td>
<td className='number'><FormatBalance value={bondTotal} /></td>
<td className='number'><FormatBalance value={bondOwn} /></td>

View File

@ -4,6 +4,7 @@
import { DerivedStakingElected } from '@polkadot/api-derive/types';
import { I18nProps } from '@polkadot/react-components/types';
import { ValidatorPrefs, ValidatorPrefsTo196 } from '@polkadot/types/interfaces';
import { ComponentProps } from '../types';
import { ValidatorInfo } from './types';
@ -18,6 +19,8 @@ import translate from '../translate';
import Summary from './Summary';
import Validator from './Validator';
const PERBILL = new BN(1000000000);
interface Props extends I18nProps, ComponentProps {
}
@ -34,9 +37,9 @@ function sortValidators (list: ValidatorInfo[]): ValidatorInfo[] {
return info;
})
.sort((a, b): number => b.commission.cmp(a.commission))
.sort((a, b): number => b.validatorPayment.cmp(a.validatorPayment))
.map((info, index): ValidatorInfo => {
info.rankCommission = index + 1;
info.rankPayment = index + 1;
return info;
})
@ -48,13 +51,13 @@ function sortValidators (list: ValidatorInfo[]): ValidatorInfo[] {
})
.sort((a, b): number =>
a.rankReward === b.rankReward
? a.rankCommission === b.rankCommission
? a.rankPayment === b.rankPayment
? a.rankBonded === b.rankBonded
? 0
: a.rankBonded < b.rankBonded
? 1
: -1
: a.rankCommission < b.rankCommission
: a.rankPayment < b.rankPayment
? 1
: -1
: a.rankReward < b.rankReward
@ -96,19 +99,24 @@ function Targets ({ className, sessionRewards, t }: Props): React.ReactElement<P
const numValidators = electedInfo.info.length;
const validators = sortValidators(
electedInfo.info.map(({ accountId, stakers, validatorPrefs }): ValidatorInfo => {
console.error((validatorPrefs as ValidatorPrefs).commission.toString());
const exposure = stakers || {
total: api.createType('Compact<Balance>'),
own: api.createType('Compact<Balance>'),
others: api.createType('Vec<IndividualExposure>')
};
const prefs = validatorPrefs || {
validatorPayment: api.createType('Compact<Balance>')
const prefs = (validatorPrefs as (ValidatorPrefs | ValidatorPrefsTo196)) || {
commission: api.createType('Compact<Perbill>')
};
const bondOwn = exposure.own.unwrap();
const bondTotal = exposure.total.unwrap();
const commission = prefs.validatorPayment.unwrap();
const perValidatorReward = lastReward.divn(numValidators);
const validatorPayment = (prefs as ValidatorPrefsTo196).validatorPayment
? (prefs as ValidatorPrefsTo196).validatorPayment.unwrap() as BN
: (prefs as ValidatorPrefs).commission.unwrap().mul(perValidatorReward).div(PERBILL);
const key = accountId.toString();
const rewardSplit = lastReward.divn(numValidators).sub(commission);
const rewardSplit = perValidatorReward.sub(validatorPayment);
const calcAmount = amount || new BN(0);
const rewardPayout = rewardSplit.gtn(0)
? calcAmount.mul(rewardSplit).div(calcAmount.add(bondTotal))
@ -125,17 +133,19 @@ function Targets ({ className, sessionRewards, t }: Props): React.ReactElement<P
bondOwn,
bondShare: 0,
bondTotal,
isCommission: !!(prefs as ValidatorPrefs).commission,
isFavorite: favorites.includes(key),
isNominating,
key,
commission,
commissionPer: (((prefs as ValidatorPrefs).commission?.unwrap() || new BN(0)).muln(10000).div(PERBILL).toNumber() / 100),
numNominators: exposure.others.length,
rankBonded: 0,
rankCommission: 0,
rankOverall: 0,
rankPayment: 0,
rankReward: 0,
rewardPayout,
rewardSplit
rewardSplit,
validatorPayment
};
})
);

View File

@ -12,15 +12,17 @@ export interface ValidatorInfo {
bondOwn: Balance;
bondShare: number;
bondTotal: Balance;
commission: Balance;
commissionPer: number;
isCommission: boolean;
isFavorite: boolean;
isNominating: boolean;
key: string;
numNominators: number;
rankBonded: number;
rankCommission: number;
rankOverall: number;
rankPayment: number;
rankReward: number;
rewardPayout: BN;
rewardSplit: BN;
validatorPayment: BN;
}

View File

@ -31,7 +31,7 @@
"homepage": "https://github.com/polkadot-js/ui/tree/master/packages/ui-reactive#readme",
"dependencies": {
"@babel/runtime": "^7.7.4",
"@polkadot/api": "^0.97.0-beta.39",
"@polkadot/api": "^0.97.0-beta.40",
"@polkadot/extension-dapp": "^0.14.0-beta.6",
"edgeware-node-types": "^1.0.10",
"rxjs-compat": "^6.5.3"

View File

@ -3,7 +3,7 @@
// of the Apache-2.0 license. See the LICENSE file for details.
import { DerivedBalances, DerivedStaking } from '@polkadot/api-derive/types';
import { ValidatorPrefs0to145 } from '@polkadot/types/interfaces';
import { ValidatorPrefsTo145 } from '@polkadot/types/interfaces';
import { BareProps, I18nProps } from './types';
import BN from 'bn.js';
@ -42,6 +42,8 @@ export interface ValidatorPrefsType {
validatorPayment?: boolean;
}
const PERBILL = new BN(1000000000);
interface Props extends BareProps, I18nProps {
address: string;
balancesAll?: DerivedBalances;
@ -204,22 +206,31 @@ function renderValidatorPrefs ({ stakingInfo, t, withValidatorPrefs = false }: P
return (
<>
<div />
{validatorPrefsDisplay.unstakeThreshold && (stakingInfo.validatorPrefs as ValidatorPrefs0to145).unstakeThreshold && (
{validatorPrefsDisplay.unstakeThreshold && (stakingInfo.validatorPrefs as any as ValidatorPrefsTo145).unstakeThreshold && (
<>
<Label label={t('unstake threshold')} />
<div className='result'>
{(stakingInfo.validatorPrefs as ValidatorPrefs0to145).unstakeThreshold.toString()}
{(stakingInfo.validatorPrefs as any as ValidatorPrefsTo145).unstakeThreshold.toString()}
</div>
</>
)}
{validatorPrefsDisplay.validatorPayment && stakingInfo.validatorPrefs.validatorPayment && (
<>
<Label label={t('commission')} />
<FormatBalance
className='result'
value={stakingInfo.validatorPrefs.validatorPayment}
/>
</>
{validatorPrefsDisplay.validatorPayment && (stakingInfo.validatorPrefs.commission || (stakingInfo.validatorPrefs as any as ValidatorPrefsTo145).validatorPayment) && (
(stakingInfo.validatorPrefs as any as ValidatorPrefsTo145).validatorPayment
? (
<>
<Label label={t('commission')} />
<FormatBalance
className='result'
value={(stakingInfo.validatorPrefs as any as ValidatorPrefsTo145).validatorPayment}
/>
</>
)
: (
<>
<Label label={t('commission')} />
<span>{(stakingInfo.validatorPrefs.commission.unwrap().muln(10000).div(PERBILL).toNumber() / 100).toFixed(2)}%</span>
</>
)
)}
</>
);

View File

@ -2029,35 +2029,35 @@
dependencies:
"@types/node" ">= 8"
"@polkadot/api-contract@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-0.97.0-beta.39.tgz#3ac80bb39f3592e65fc5cd305b92db8d4ce71b28"
integrity sha512-O3p29g5M8Z3eGgdyPlPoAu57SVRocW1VeUUSfgLySS6q9+N1fttaVEzEwbAdktsQFUdxt06sFyYgiCWdZ0ZVew==
"@polkadot/api-contract@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-0.97.0-beta.40.tgz#d267ed52612bfeaa3b5e74353c2acb0e8be02ec1"
integrity sha512-ELF7cj3llvKGCJ1aGREl5k6LTvuWlussen4VpAzUhg4LTOv2g341YsqeEddFCkk5jmcvXG/4LTo7fDIrHOzNhQ==
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/types" "^0.97.0-beta.39"
"@polkadot/types" "^0.97.0-beta.40"
"@polkadot/api-derive@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.97.0-beta.39.tgz#c835a4f4037cbb6946ff9aeb20c70996c85d1cbf"
integrity sha512-bh9uuFk/Nanr5Km0BTfzMtw+FUZrGXvipQHLP5IvHKvPogYEQdIfiOU61q1NjKER2lgpPXRLikXIEFudEXzRmQ==
"@polkadot/api-derive@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.97.0-beta.40.tgz#b70fb3c952884456b7ed9902d31839cfcb69878f"
integrity sha512-mS9nvtfZ8zL+MdHw/L17hGmUGILlJ9oDP6dI7YrZ0ystQ1NLlU6UhPzQZsfnD+CE2nHi0PrgW2/hJ9WPz5sjJQ==
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/api" "^0.97.0-beta.39"
"@polkadot/types" "^0.97.0-beta.39"
"@polkadot/api" "^0.97.0-beta.40"
"@polkadot/types" "^0.97.0-beta.40"
"@polkadot/api@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.97.0-beta.39.tgz#1ba48af404920142445f6d01826f0e93943d07e6"
integrity sha512-3rZZFjs0PiwJK2RUgC/WLaTq3F6v8ArfTObSiKjL0yq250JIPVdXzh7PDeR7tUH3e/Nuq6Q5Ov+GR6HNkb0ZRw==
"@polkadot/api@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.97.0-beta.40.tgz#ce8981d09d864ac324b9fee43a3b990f0f6f99ca"
integrity sha512-BMbaLbbWC/SVrZ7Pd9Al6CN95BB4X7B0jq4tchtbmQylPxgpTZb4Wesu0UIql+b7gCPi2IvQ+BFa0scmObROoA==
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/api-derive" "^0.97.0-beta.39"
"@polkadot/api-derive" "^0.97.0-beta.40"
"@polkadot/keyring" "^1.7.1"
"@polkadot/metadata" "^0.97.0-beta.39"
"@polkadot/rpc-core" "^0.97.0-beta.39"
"@polkadot/rpc-provider" "^0.97.0-beta.39"
"@polkadot/types" "^0.97.0-beta.39"
"@polkadot/metadata" "^0.97.0-beta.40"
"@polkadot/rpc-core" "^0.97.0-beta.40"
"@polkadot/rpc-provider" "^0.97.0-beta.40"
"@polkadot/types" "^0.97.0-beta.40"
"@polkadot/util-crypto" "^1.7.1"
"@polkadot/dev-react@^0.32.0-beta.15":
@ -2161,10 +2161,10 @@
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/jsonrpc@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.97.0-beta.39.tgz#c57452378bac86f9f53d42444bb98b16cb3b0675"
integrity sha512-yB0AIfcYtUYs9MyCs3HCw5jnLSy/GtPuWSXS0eeUT6A5QJFYRstgReYHmcGWfT3OzPsa0ONM+o1gEtgF6Torsw==
"@polkadot/jsonrpc@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.97.0-beta.40.tgz#cec17af41fd7e402c0ee21f42ee5ac5b7974c372"
integrity sha512-0INE+VrlqNogFX2cerZtTh80dw+2UK6ULcl66jl8bbdux3JcO00T2/KEKO3jaxxebTBk9qnH7OobIfQJ7sbLMA==
dependencies:
"@babel/runtime" "^7.7.4"
@ -2177,13 +2177,13 @@
"@polkadot/util" "^1.7.1"
"@polkadot/util-crypto" "^1.7.1"
"@polkadot/metadata@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-0.97.0-beta.39.tgz#f2853bff00d6925325932bfe0e9ea09c52a92487"
integrity sha512-qShxMdcO3+2WhYglI41k5pGB9U7VMeCXTkdUJ4Wk9UY7HU2Epgc7xrPHq3MLEFFFzFJ0T2Um7q1iYb7dj1y3GQ==
"@polkadot/metadata@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-0.97.0-beta.40.tgz#d0353cf137de4d76c8bfac2a99f3b74004fdc8e6"
integrity sha512-bkbA8xg7wDwlVtfW7kk9OrxJ3CETXDETLQ4tC0SepLkf8X5wqpV+lWHiLtQS8XCL5VNiatKO6SDMfjNXzsgF6A==
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/types" "^0.97.0-beta.39"
"@polkadot/types" "^0.97.0-beta.40"
"@polkadot/util" "^1.7.1"
"@polkadot/util-crypto" "^1.7.1"
@ -2212,25 +2212,25 @@
qrcode-generator "^1.4.4"
react-qr-reader "^2.2.1"
"@polkadot/rpc-core@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.97.0-beta.39.tgz#1ee02f3f65ceaba1228830b7ff8c034dc6019a45"
integrity sha512-LgPN6uVs61uPWoK4/RkJfcJWLZVVmiF0iefkIxMjb7pHe3E3j4PqIl9xjrk6fY5PyiRdJXp8IDprP8ogmz33kQ==
"@polkadot/rpc-core@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.97.0-beta.40.tgz#a7fc22ce18ae970b80b8561b137a6b115929a36f"
integrity sha512-wXvzWDoa1BJtnjRO4pSvdTDdMg6N+4YyevvDETQi+xvvD6K5/dXyGsV5xkZ0QhcgVVJEV7G4sl85WxJOtac+NA==
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/jsonrpc" "^0.97.0-beta.39"
"@polkadot/rpc-provider" "^0.97.0-beta.39"
"@polkadot/types" "^0.97.0-beta.39"
"@polkadot/jsonrpc" "^0.97.0-beta.40"
"@polkadot/rpc-provider" "^0.97.0-beta.40"
"@polkadot/types" "^0.97.0-beta.40"
"@polkadot/util" "^1.7.1"
rxjs "^6.5.3"
"@polkadot/rpc-provider@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.97.0-beta.39.tgz#b75f7cc486e5460be9f7942ba5a3b80f99bce9ef"
integrity sha512-PacASxjPndVJixFG4V1Z7hXvKtROO4o5MHm7CYozfwsH7IA7uenno5TsjzGXoWVv+F9vKMCez51gkZlXZLbddQ==
"@polkadot/rpc-provider@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.97.0-beta.40.tgz#89da9c111b1489b5e7957f290c1040c49ace5fc9"
integrity sha512-LvWt9zubwopYSt9tq3VrO01+Ojp0WOHJzJ62JaqGfg0n5VyyL5kZpCLPV7e4eWg4KFVSOVHfH+IR8SeRzovEgw==
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/metadata" "^0.97.0-beta.39"
"@polkadot/metadata" "^0.97.0-beta.40"
"@polkadot/util" "^1.7.1"
"@polkadot/util-crypto" "^1.7.1"
eventemitter3 "^4.0.0"
@ -2244,10 +2244,10 @@
dependencies:
"@types/chrome" "^0.0.91"
"@polkadot/types@^0.97.0-beta.39":
version "0.97.0-beta.39"
resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.97.0-beta.39.tgz#7fe786afb9e987ffb06048ea011838cabdbb918e"
integrity sha512-/gkArYctnsJCUn5RQ0YgiWgI4b7OrJaYlYCfVRC8k2N7Fl1UMc6Wyn7zxPLHxHQj4Cm8FlyfHkf9aeNzwgA+Jg==
"@polkadot/types@^0.97.0-beta.40":
version "0.97.0-beta.40"
resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.97.0-beta.40.tgz#d7f25e3652a4ef75059fa58fa1d53a9034ecbab1"
integrity sha512-Jj4ewqGnwq9T8Mb/r0b5PcqAAtpeBnfmpv7MiSdlsZDRs9iyiqzHn6PMh8AnjCdo+fA0pN8YA//LmQXkFPVpig==
dependencies:
"@babel/runtime" "^7.7.4"
"@polkadot/util" "^1.7.1"