Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c73cd7d6e | ||
|
|
36232c0289 | ||
|
|
50d4e0397f | ||
|
|
539a8c4cb5 | ||
|
|
b849976b3b | ||
|
|
2395401a2b | ||
|
|
0e1bbd5cac | ||
|
|
e9489d41cb | ||
|
|
63483b9db7 | ||
|
|
b26c7f9f0a | ||
|
|
a165c9375c | ||
|
|
28631f7180 | ||
|
|
6489251b47 | ||
|
|
66884febea | ||
|
|
8058dc350f | ||
|
|
63096cc238 | ||
|
|
05600c0cd0 | ||
|
|
eed5e23e65 | ||
|
|
cdf5b15673 | ||
|
|
1922676bd7 | ||
|
|
b6c427e985 | ||
|
|
0327aedf8e | ||
|
|
d7035cebb1 | ||
|
|
8b492021af | ||
|
|
6a01fc7c8c | ||
|
|
bbc30ec9dc | ||
|
|
f07c0628bc | ||
|
|
023c7588e5 | ||
|
|
7dfc8625cc | ||
|
|
8643b5da87 | ||
|
|
afa0e63ae8 | ||
|
|
534303ff45 | ||
|
|
f1ebcddec6 | ||
|
|
657a2006dd | ||
|
|
219e928c01 | ||
|
|
43183118d5 | ||
|
|
76e15d465d | ||
|
|
4c0387e1a3 | ||
|
|
bbbd82eb4a | ||
|
|
a34a7450aa | ||
|
|
bf472fdcf4 | ||
|
|
f428a58006 | ||
|
|
fcce2ab340 | ||
|
|
877eb11717 | ||
|
|
4b55f1be93 | ||
|
|
f2a677634e | ||
|
|
eea4c8775e | ||
|
|
792bf0ec36 | ||
|
|
e3d13107a9 | ||
|
|
e5c2c6a228 | ||
|
|
d2be79132c | ||
|
|
76da2638c1 | ||
|
|
daf3912920 | ||
|
|
6dfebbb9fe | ||
|
|
e55c5f77f7 | ||
|
|
c7315ffb74 | ||
|
|
84eb806f07 | ||
|
|
2493442a2e | ||
|
|
77df7907c7 | ||
|
|
f1b6268784 | ||
|
|
9aa9380251 | ||
|
|
b4306cb60a | ||
|
|
1e83daf797 | ||
|
|
d46d32d9bc | ||
|
|
032a0a595c | ||
|
|
34101ec12b | ||
|
|
4e02b982d3 | ||
|
|
5b96d52fa6 | ||
|
|
735f2b835e | ||
|
|
646e64c286 | ||
|
|
fc9060caa8 | ||
|
|
503c2b3c63 | ||
|
|
168abc130f | ||
|
|
5c5db2709b | ||
|
|
5a4ff5420f | ||
|
|
a1655508ba | ||
|
|
64827a6114 | ||
|
|
2eb09374bc | ||
|
|
ddf67d5564 | ||
|
|
ad6b8280a2 | ||
|
|
682c6b6fb2 | ||
|
|
6a281211b4 | ||
|
|
6ef94b3c3b | ||
|
|
e900d1d657 | ||
|
|
7f1a3fa636 | ||
|
|
21802664b8 | ||
|
|
1492df11a7 | ||
|
|
00fed90da2 |
@@ -1,5 +1,57 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 1.24.1 Jul 13, 2020
|
||||
|
||||
- Added `isAscii` & `isUtf8` getters to `Bytes` & `Raw` types
|
||||
- Added `toUtf8()` helper to `Bytes` & `Raw` types
|
||||
- `@polkadot/util` 2.18
|
||||
|
||||
## 1.23.1 Jul 6, 2020
|
||||
|
||||
- Small README typo fix (Thanks to https://github.com/woss)
|
||||
- Add latest Substrate master types
|
||||
- Adjust `<Codec>.toRawType()` to use registry name as available
|
||||
- Update `ProxyType` for Kusama, Polkadot & Westend with `IdentityJudgement`
|
||||
- Validate number format (signed/unsigned) for number types
|
||||
- Remove core codec dependencies on Base class (with proper TS encapsulation)
|
||||
- `@polkadot/util` 2.17
|
||||
|
||||
## 1.22.1 Jun 30, 2020
|
||||
|
||||
- **Important** Substrate changed the treasury tip structure, on older chains supply `OpenTip: 'OpenTipTo225'`
|
||||
- Allow for `[u8; 33]` in U8aFixed (Thanks to https://github.com/akru)
|
||||
- Improve derive accountId -> accountIndex lookups (optimize entries queries)
|
||||
- Vesting balance calculations via `derive.balances.all` has been updated for locks
|
||||
- Add derive for multi staking rewards with specified eras
|
||||
- `@polkadot/util` 2.16
|
||||
|
||||
## 1.21.1 Jun 23, 2020
|
||||
|
||||
- Fix subscriptions never unsubscribing after the id swap in 1.18.1 (Thanks to https://github.com/dillu24 for testing iterations)
|
||||
- Add support for `CheckMortality` signed extension (old `CheckEra` is now an alias)
|
||||
- Promise API will default to using `getStorage` on non-subscription calls, reducing RPC overhead
|
||||
- Optimize derive BN allocations, using in-place operators as applicable
|
||||
- Add new Substrate types for Babe `EquivocationProof`
|
||||
- Adjust `Releases` enum to use a shared instance
|
||||
|
||||
## 1.20.1 Jun 22, 2020
|
||||
|
||||
- **Important** RPC for `account_nextIndex` has been moved to `system_accountNextIndex` (Aligning with Substrate as a primary alias)
|
||||
- Cleanup map entries support with only Substrate 2.0-era RPCs (when introduced)
|
||||
- Add `system_dryRun` RPC
|
||||
- Optimize `derive.staking.queryMulti` retrievals with additional per-type batching
|
||||
- Add `derive.staking.waitingInfo` (same as `electedInfo` for waiting validators)
|
||||
- Adjust types & metadata for latest Substrate
|
||||
- `@polkadot/util` 2.15
|
||||
|
||||
## 1.19.1 Jun 16, 2020
|
||||
|
||||
- Improve typing on `.entries()` queries (Thanks to https://github.com/monitz87)
|
||||
- Align metadata and types with latest Substrate
|
||||
- Update Polkadot types for current evolution of parachains
|
||||
- Allow for type aliasing on events (aligning with calls & queries)
|
||||
- `@polkadot/util` 2.14
|
||||
|
||||
## 1.18.1 Jun 8, 2020
|
||||
|
||||
- Expand docs on node-template types (Thanks to https://github.com/g2udevelopment)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
# @polkadot/api
|
||||
|
||||
This library provides a clean wrapper around all the methods exposed by a Polkadot/Subtrate network client and defines all the types exposed by a node. For complete documentation around the classes, interfaces and their use, visit the [documentation portal](https://polkadot.js.org/api/).
|
||||
This library provides a clean wrapper around all the methods exposed by a Polkadot/Substrate network client and defines all the types exposed by a node. For complete documentation around the classes, interfaces and their use, visit the [documentation portal](https://polkadot.js.org/api/).
|
||||
|
||||
If you are an existing user, please be sure to track the [CHANGELOG](CHANGELOG.md) and [UPGRADING](UPGRADING.md) guides when changing versions.
|
||||
|
||||
|
||||
+1
-1
@@ -9,5 +9,5 @@
|
||||
"packages": [
|
||||
"packages/*"
|
||||
],
|
||||
"version": "1.18.1"
|
||||
"version": "1.24.1"
|
||||
}
|
||||
|
||||
+8
-8
@@ -24,15 +24,15 @@
|
||||
"test:watch": "polkadot-dev-run-test --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.10.2",
|
||||
"@babel/register": "^7.10.1",
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/dev": "^0.55.8",
|
||||
"@polkadot/ts": "^0.3.26",
|
||||
"@babel/core": "^7.10.4",
|
||||
"@babel/register": "^7.10.4",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/dev": "^0.55.21",
|
||||
"@polkadot/ts": "^0.3.27",
|
||||
"@polkadot/typegen": "workspace:packages/typegen",
|
||||
"@types/jest": "^25.2.3",
|
||||
"@vuepress/plugin-search": "^1.5.0",
|
||||
"@types/jest": "^26.0.4",
|
||||
"@vuepress/plugin-search": "^1.5.2",
|
||||
"copyfiles": "^2.3.0"
|
||||
},
|
||||
"version": "1.18.1"
|
||||
"version": "1.24.1"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/api-contract",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "Interfaces for interacting with contracts and contract ABIs",
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
@@ -26,12 +26,12 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/api": "1.18.1",
|
||||
"@polkadot/rpc-core": "1.18.1",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/api": "1.24.1",
|
||||
"@polkadot/rpc-core": "1.24.1",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"bn.js": "^5.1.2",
|
||||
"rxjs": "^6.5.5"
|
||||
"rxjs": "^6.6.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/api-derive",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "Common functions used across Polkadot, derived from RPC calls and storage queries.",
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
@@ -27,18 +27,18 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-derive#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/api": "1.18.1",
|
||||
"@polkadot/rpc-core": "1.18.1",
|
||||
"@polkadot/rpc-provider": "1.18.1",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@polkadot/util-crypto": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/api": "1.24.1",
|
||||
"@polkadot/rpc-core": "1.24.1",
|
||||
"@polkadot/rpc-provider": "1.24.1",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"@polkadot/util-crypto": "^2.18.1",
|
||||
"bn.js": "^5.1.2",
|
||||
"memoizee": "^0.4.14",
|
||||
"rxjs": "^6.5.5"
|
||||
"rxjs": "^6.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^2.13.1"
|
||||
"@polkadot/keyring": "^2.18.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@ import { memo } from '../util';
|
||||
|
||||
const enumsetSize = ENUMSET_SIZE.toNumber();
|
||||
|
||||
let indicesCache: AccountIndexes | null = null;
|
||||
|
||||
function queryEnumSet (api: ApiInterfaceRx): Observable<AccountIndexes> {
|
||||
return api.query.indices.nextEnumSet<AccountIndex>().pipe(
|
||||
// use the nextEnumSet (which is a counter of the number of sets) to construct
|
||||
@@ -72,11 +74,20 @@ function queryAccounts (api: ApiInterfaceRx): Observable<AccountIndexes> {
|
||||
*/
|
||||
export function indexes (api: ApiInterfaceRx): () => Observable<AccountIndexes> {
|
||||
return memo((): Observable<AccountIndexes> =>
|
||||
(api.query.indices
|
||||
? isFunction(api.query.indices.accounts)
|
||||
? queryAccounts(api)
|
||||
: queryEnumSet(api)
|
||||
: of({} as AccountIndexes)
|
||||
).pipe(startWith({}))
|
||||
indicesCache
|
||||
? of(indicesCache)
|
||||
: (
|
||||
api.query.indices
|
||||
? isFunction(api.query.indices.accounts)
|
||||
? queryAccounts(api).pipe(startWith({}))
|
||||
: queryEnumSet(api).pipe(startWith({}))
|
||||
: of({} as AccountIndexes)
|
||||
).pipe(
|
||||
map((indices): AccountIndexes => {
|
||||
indicesCache = indices;
|
||||
|
||||
return indices;
|
||||
})
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -20,15 +20,17 @@ type Result = [DeriveBalancesAccount, BlockNumber, ResultBalance];
|
||||
function calcBalances (api: ApiInterfaceRx, [{ accountId, accountNonce, freeBalance, frozenFee, frozenMisc, reservedBalance, votingBalance }, bestNumber, [vesting, locks]]: Result): DeriveBalancesAll {
|
||||
let lockedBalance = api.registry.createType('Balance');
|
||||
let lockedBreakdown: (BalanceLock | BalanceLockTo212)[] = [];
|
||||
let vestingLocked = api.registry.createType('Balance');
|
||||
let allLocked = false;
|
||||
|
||||
if (Array.isArray(locks)) {
|
||||
// only get the locks that are valid until passed the current block
|
||||
lockedBreakdown = (locks as BalanceLockTo212[]).filter(({ until }): boolean => !until || (bestNumber && until.gt(bestNumber)));
|
||||
|
||||
const notAll = lockedBreakdown.filter(({ amount }): boolean => !amount.isMax());
|
||||
const notAll = lockedBreakdown.filter(({ amount }) => !amount.isMax());
|
||||
|
||||
allLocked = lockedBreakdown.some(({ amount }): boolean => amount.isMax());
|
||||
allLocked = lockedBreakdown.some(({ amount }) => amount.isMax());
|
||||
vestingLocked = api.registry.createType('Balance', lockedBreakdown.filter(({ id }) => id.eq('0x76657374696e6720')).reduce((result: BN, { amount }) => result.iadd(amount), new BN(0)));
|
||||
|
||||
// get the maximum of the locks according to https://github.com/paritytech/substrate/blob/master/srml/balances/src/lib.rs#L699
|
||||
if (notAll.length) {
|
||||
@@ -41,19 +43,11 @@ function calcBalances (api: ApiInterfaceRx, [{ accountId, accountNonce, freeBala
|
||||
// - perBlock is the unlock amount
|
||||
const { locked: vestingTotal, perBlock, startingBlock } = vesting || api.registry.createType('VestingInfo');
|
||||
const isStarted = bestNumber.gt(startingBlock);
|
||||
const vestedBalance = api.registry.createType('Balance', isStarted ? perBlock.mul(bestNumber.sub(startingBlock)) : 0);
|
||||
const isVesting = isStarted && vestedBalance.lt(vestingTotal);
|
||||
|
||||
// The available balance & vested has an interplay here
|
||||
// "
|
||||
// vesting is a guarantee that the account's balance will never go below a certain amount. so it functions in the opposite way, a bit like a lock that is monotonically decreasing rather than a liquid amount that is monotonically increasing.
|
||||
// locks function as the same guarantee - that a balance will not be lower than a particular amount.
|
||||
// because of this you can see that if there is a "vesting lock" that guarantees the balance cannot go below 200, and a "staking lock" that guarantees the balance cannot drop below 300, then we just have two guarantees of which the first is irrelevant.
|
||||
// i.e. (balance >= 200 && balance >= 300) == (balance >= 300)
|
||||
// ""
|
||||
const floating = freeBalance.sub(lockedBalance);
|
||||
const extraReceived = isVesting ? freeBalance.sub(vestingTotal) : new BN(0);
|
||||
const availableBalance = api.registry.createType('Balance', allLocked ? 0 : bnMax(new BN(0), isVesting && floating.gt(vestedBalance) ? vestedBalance.add(extraReceived) : floating));
|
||||
const vestedNow = isStarted ? perBlock.mul(bestNumber.sub(startingBlock)) : new BN(0);
|
||||
const vestedBalance = vestedNow.gt(vestingTotal) ? vestingTotal : api.registry.createType('Balance', vestedNow);
|
||||
const isVesting = isStarted && !vestingLocked.isZero();
|
||||
const vestedClaimable = api.registry.createType('Balance', isVesting ? vestingLocked.sub(vestingTotal.sub(vestedBalance)) : 0);
|
||||
const availableBalance = api.registry.createType('Balance', allLocked ? 0 : bnMax(new BN(0), freeBalance.sub(lockedBalance)));
|
||||
|
||||
return {
|
||||
accountId,
|
||||
@@ -67,6 +61,8 @@ function calcBalances (api: ApiInterfaceRx, [{ accountId, accountNonce, freeBala
|
||||
lockedBreakdown,
|
||||
reservedBalance,
|
||||
vestedBalance,
|
||||
vestedClaimable,
|
||||
vestingLocked,
|
||||
vestingTotal,
|
||||
votingBalance
|
||||
};
|
||||
|
||||
@@ -82,15 +82,15 @@ function calcVotesPrev (votesFor: DeriveReferendumVote[]): DeriveReferendumVoteS
|
||||
if (vote.isAye) {
|
||||
state.allAye.push(derived);
|
||||
state.voteCountAye++;
|
||||
state.votedAye = state.votedAye.add(counted);
|
||||
state.votedAye.iadd(counted);
|
||||
} else {
|
||||
state.allNay.push(derived);
|
||||
state.voteCountNay++;
|
||||
state.votedNay = state.votedNay.add(counted);
|
||||
state.votedNay.iadd(counted);
|
||||
}
|
||||
|
||||
state.voteCount++;
|
||||
state.votedTotal = state.votedTotal.add(counted);
|
||||
state.votedTotal.iadd(counted);
|
||||
|
||||
return state;
|
||||
}, {
|
||||
|
||||
@@ -17,9 +17,9 @@ type ResultSlots = [u64, u64, u64, Option<SessionIndex>];
|
||||
type ResultSlotsFlat = [u64, u64, u64, SessionIndex];
|
||||
|
||||
function createDerive (api: ApiInterfaceRx, info: DeriveSessionInfo, [currentSlot, epochIndex, epochOrGenesisStartSlot, activeEraStartSessionIndex]: ResultSlotsFlat): DeriveSessionProgress {
|
||||
const epochStartSlot = epochIndex.mul(info.sessionLength).add(epochOrGenesisStartSlot);
|
||||
const epochStartSlot = epochIndex.mul(info.sessionLength).iadd(epochOrGenesisStartSlot);
|
||||
const sessionProgress = currentSlot.sub(epochStartSlot);
|
||||
const eraProgress = info.currentIndex.sub(activeEraStartSessionIndex).mul(info.sessionLength).add(sessionProgress);
|
||||
const eraProgress = info.currentIndex.sub(activeEraStartSessionIndex).imul(info.sessionLength).iadd(sessionProgress);
|
||||
|
||||
return {
|
||||
...info,
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Balance, StakingLedger, UnlockChunk } from '@polkadot/types/interfaces'
|
||||
import { DeriveSessionInfo, DeriveStakingAccount, DeriveStakingQuery, DeriveUnlocking } from '../types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import { Observable, combineLatest } from 'rxjs';
|
||||
import { Observable } from 'rxjs';
|
||||
import { map, switchMap } from 'rxjs/operators';
|
||||
|
||||
import { isUndefined } from '@polkadot/util';
|
||||
@@ -21,7 +21,7 @@ function groupByEra (list: UnlockChunk[]): Record<string, BN> {
|
||||
|
||||
map[key] = !map[key]
|
||||
? value.unwrap()
|
||||
: map[key].add(value.unwrap());
|
||||
: map[key].iadd(value.unwrap());
|
||||
|
||||
return map;
|
||||
}, {});
|
||||
@@ -32,8 +32,8 @@ function calculateUnlocking (api: ApiInterfaceRx, stakingLedger: StakingLedger |
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const unlockingChunks = stakingLedger.unlocking.filter(({ era }): boolean =>
|
||||
era.unwrap().sub(sessionInfo.activeEra).gtn(0)
|
||||
const unlockingChunks = stakingLedger.unlocking.filter(({ era }) =>
|
||||
era.unwrap().gt(sessionInfo.activeEra)
|
||||
);
|
||||
|
||||
if (!unlockingChunks.length) {
|
||||
@@ -43,11 +43,13 @@ function calculateUnlocking (api: ApiInterfaceRx, stakingLedger: StakingLedger |
|
||||
// group the unlock chunks that have the same era and sum their values
|
||||
const groupedResult = groupByEra(unlockingChunks);
|
||||
const results = Object.entries(groupedResult).map(([eraString, value]): DeriveUnlocking => ({
|
||||
remainingEras: new BN(eraString).sub(sessionInfo.activeEra),
|
||||
remainingEras: new BN(eraString).isub(sessionInfo.activeEra),
|
||||
value: api.registry.createType('Balance', value)
|
||||
}));
|
||||
|
||||
return results.length ? results : undefined;
|
||||
return results.length
|
||||
? results
|
||||
: undefined;
|
||||
}
|
||||
|
||||
function redeemableSum (api: ApiInterfaceRx, stakingLedger: StakingLedger | undefined, sessionInfo: DeriveSessionInfo): Balance {
|
||||
@@ -57,7 +59,7 @@ function redeemableSum (api: ApiInterfaceRx, stakingLedger: StakingLedger | unde
|
||||
|
||||
return api.registry.createType('Balance', stakingLedger.unlocking.reduce((total, { era, value }): BN => {
|
||||
return sessionInfo.activeEra.gte(era.unwrap())
|
||||
? total.add(value.unwrap())
|
||||
? total.iadd(value.unwrap())
|
||||
: total;
|
||||
}, new BN(0)));
|
||||
}
|
||||
@@ -70,23 +72,6 @@ function parseResult (api: ApiInterfaceRx, sessionInfo: DeriveSessionInfo, query
|
||||
};
|
||||
}
|
||||
|
||||
export function _account (api: ApiInterfaceRx): (sessionInfo: DeriveSessionInfo, accountId: Uint8Array | string) => Observable<DeriveStakingAccount> {
|
||||
return memo((sessionInfo: DeriveSessionInfo, accountId: Uint8Array | string): Observable<DeriveStakingAccount> =>
|
||||
api.derive.staking.query(accountId).pipe(
|
||||
map((query) => parseResult(api, sessionInfo, query))
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description From a stash, retrieve the controllerId and fill in all the relevant staking details
|
||||
*/
|
||||
export function account (api: ApiInterfaceRx): (accountId: Uint8Array | string) => Observable<DeriveStakingAccount> {
|
||||
return memo((accountId: Uint8Array | string): Observable<DeriveStakingAccount> =>
|
||||
api.derive.session.info().pipe(
|
||||
switchMap((sessionInfo) => api.derive.staking._account(sessionInfo, accountId))
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description From a list of stashes, fill in all the relevant staking details
|
||||
*/
|
||||
@@ -94,7 +79,21 @@ export function accounts (api: ApiInterfaceRx): (accountIds: (Uint8Array | strin
|
||||
return memo((accountIds: (Uint8Array | string)[]): Observable<DeriveStakingAccount[]> =>
|
||||
api.derive.session.info().pipe(
|
||||
switchMap((sessionInfo) =>
|
||||
combineLatest(accountIds.map((accountId) => api.derive.staking._account(sessionInfo, accountId)))
|
||||
api.derive.staking.queryMulti(accountIds).pipe(
|
||||
map((queries) => queries.map((query) => parseResult(api, sessionInfo, query)))
|
||||
)
|
||||
)
|
||||
));
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description From a stash, retrieve the controllerId and fill in all the relevant staking details
|
||||
*/
|
||||
export function account (api: ApiInterfaceRx): (accountId: Uint8Array | string) => Observable<DeriveStakingAccount> {
|
||||
return memo((accountId: Uint8Array | string): Observable<DeriveStakingAccount> =>
|
||||
api.derive.staking.accounts([accountId]).pipe(
|
||||
map(([first]) => first)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,10 +3,9 @@
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { ApiInterfaceRx } from '@polkadot/api/types';
|
||||
import { AccountId } from '@polkadot/types/interfaces';
|
||||
import { DeriveStakingQuery, DeriveStakingElected } from '../types';
|
||||
import { DeriveStakingElected } from '../types';
|
||||
|
||||
import { Observable, combineLatest, of } from 'rxjs';
|
||||
import { Observable } from 'rxjs';
|
||||
import { map, switchMap } from 'rxjs/operators';
|
||||
|
||||
import { memo } from '../util';
|
||||
@@ -14,18 +13,14 @@ import { memo } from '../util';
|
||||
export function electedInfo (api: ApiInterfaceRx): () => Observable<DeriveStakingElected> {
|
||||
return memo((): Observable<DeriveStakingElected> =>
|
||||
api.derive.staking.validators().pipe(
|
||||
switchMap(({ nextElected }): Observable<[AccountId[], DeriveStakingQuery[]]> =>
|
||||
combineLatest([
|
||||
of(nextElected),
|
||||
combineLatest(
|
||||
nextElected.map((accountId) => api.derive.staking.query(accountId))
|
||||
)
|
||||
])
|
||||
),
|
||||
map(([nextElected, info]): DeriveStakingElected => ({
|
||||
info,
|
||||
nextElected
|
||||
}))
|
||||
switchMap(({ nextElected }): Observable<DeriveStakingElected> =>
|
||||
api.derive.staking.queryMulti(nextElected).pipe(
|
||||
map((info): DeriveStakingElected => ({
|
||||
info,
|
||||
nextElected
|
||||
}))
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -12,8 +12,8 @@ import { Option, u32 } from '@polkadot/types';
|
||||
|
||||
import { memo } from '../util';
|
||||
|
||||
export function erasHistoric (api: ApiInterfaceRx): (withActive?: boolean) => Observable<EraIndex[]> {
|
||||
return memo((withActive?: boolean): Observable<EraIndex[]> =>
|
||||
export function erasHistoric (api: ApiInterfaceRx): (withActive: boolean) => Observable<EraIndex[]> {
|
||||
return memo((withActive: boolean): Observable<EraIndex[]> =>
|
||||
api.query.staking?.activeEra
|
||||
? api.queryMulti<[Option<ActiveEraInfo>, u32]>([
|
||||
api.query.staking.activeEra,
|
||||
|
||||
@@ -21,3 +21,4 @@ export * from './stakerRewards';
|
||||
export * from './stakerSlashes';
|
||||
export * from './stashes';
|
||||
export * from './validators';
|
||||
export * from './waitingInfo';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { ApiInterfaceRx } from '@polkadot/api/types';
|
||||
import { AccountId, Exposure, Keys, Nominations, RewardDestination, ValidatorPrefs } from '@polkadot/types/interfaces';
|
||||
import { AccountId, EraIndex, Exposure, Keys, Nominations, RewardDestination, StakingLedger, ValidatorPrefs } from '@polkadot/types/interfaces';
|
||||
import { ITuple } from '@polkadot/types/types';
|
||||
import { DeriveStakingQuery } from '../types';
|
||||
|
||||
@@ -16,7 +16,7 @@ import { memo } from '../util';
|
||||
|
||||
type MultiResult = [Option<AccountId>, Option<ITuple<[Nominations]> | Nominations>, RewardDestination, ITuple<[ValidatorPrefs]> | ValidatorPrefs, Option<Keys>, Exposure];
|
||||
|
||||
function unwrapSessionIds (stashId: AccountId, queuedKeys: [AccountId, Keys][], nextKeys: Option<Keys>): { nextSessionIds: AccountId[]; sessionIds: AccountId[] } {
|
||||
function parseSessionIds (stashId: AccountId, queuedKeys: [AccountId, Keys][], nextKeys: Option<Keys>): { nextSessionIds: AccountId[]; sessionIds: AccountId[] } {
|
||||
const sessionIds = (queuedKeys.find(([currentId]): boolean =>
|
||||
currentId.eq(stashId)
|
||||
) || [undefined, [] as AccountId[]])[1];
|
||||
@@ -28,6 +28,31 @@ function unwrapSessionIds (stashId: AccountId, queuedKeys: [AccountId, Keys][],
|
||||
};
|
||||
}
|
||||
|
||||
function parseController (stashId: AccountId, queuedKeys: Vec<ITuple<[AccountId, Keys]>>, [controllerIdOpt, nominatorsOpt, rewardDestination, validatorPrefs, nextKeys, exposure]: MultiResult, stakingLedgerOpt: Option<StakingLedger>): DeriveStakingQuery {
|
||||
const controllerId = controllerIdOpt.unwrapOr(null);
|
||||
const nominators = nominatorsOpt.unwrapOr(null);
|
||||
|
||||
return controllerId && stakingLedgerOpt.isSome
|
||||
? {
|
||||
accountId: stashId,
|
||||
controllerId,
|
||||
exposure,
|
||||
nominators: nominators
|
||||
? Array.isArray(nominators)
|
||||
? nominators[0].targets
|
||||
: nominators.targets
|
||||
: [],
|
||||
rewardDestination,
|
||||
stakingLedger: stakingLedgerOpt.unwrapOr(undefined),
|
||||
stashId,
|
||||
validatorPrefs: Array.isArray(validatorPrefs)
|
||||
? validatorPrefs[0]
|
||||
: validatorPrefs,
|
||||
...parseSessionIds(stashId, queuedKeys, nextKeys)
|
||||
}
|
||||
: { accountId: stashId, nextSessionIds: [], sessionIds: [] };
|
||||
}
|
||||
|
||||
function retrievePrev (api: ApiInterfaceRx, stashId: AccountId): Observable<MultiResult> {
|
||||
return api.queryMulti<MultiResult>([
|
||||
[api.query.staking.bonded, stashId],
|
||||
@@ -39,64 +64,43 @@ function retrievePrev (api: ApiInterfaceRx, stashId: AccountId): Observable<Mult
|
||||
]);
|
||||
}
|
||||
|
||||
function retrieveCurr (api: ApiInterfaceRx, stashId: AccountId): Observable<MultiResult> {
|
||||
return api.derive.session.indexes().pipe(
|
||||
switchMap(({ activeEra }) =>
|
||||
api.queryMulti<MultiResult>([
|
||||
[api.query.staking.bonded, stashId],
|
||||
[api.query.staking.nominators, stashId],
|
||||
[api.query.staking.payee, stashId],
|
||||
[api.query.staking.validators, stashId],
|
||||
api.consts.session?.dedupKeyPrefix
|
||||
? [api.query.session.nextKeys, [api.consts.session.dedupKeyPrefix, stashId]]
|
||||
: [api.query.session.nextKeys, stashId],
|
||||
[api.query.staking.erasStakers, [activeEra, stashId]]
|
||||
])
|
||||
function retrieveCurr (api: ApiInterfaceRx, stashIds: AccountId[], activeEra: EraIndex): Observable<MultiResult[]> {
|
||||
return combineLatest([
|
||||
api.query.staking.bonded.multi<Option<AccountId>>(stashIds),
|
||||
api.query.staking.nominators.multi<Option<Nominations>>(stashIds),
|
||||
api.query.staking.payee.multi<RewardDestination>(stashIds),
|
||||
api.query.staking.validators.multi<ValidatorPrefs>(stashIds),
|
||||
api.consts.session?.dedupKeyPrefix
|
||||
? api.query.session.nextKeys.multi<Option<Keys>>(stashIds.map((stashId) => [api.consts.session.dedupKeyPrefix, stashId]))
|
||||
: api.query.session.nextKeys.multi<Option<Keys>>(stashIds),
|
||||
api.query.staking.erasStakers.multi<Exposure>(stashIds.map((stashId) => [activeEra, stashId]))
|
||||
]).pipe(
|
||||
map(([controllerIdOpt, nominatorsOpt, rewardDestination, validatorPrefs, nextKeys, exposure]): MultiResult[] =>
|
||||
controllerIdOpt.map((controllerIdOpt, index): MultiResult =>
|
||||
[controllerIdOpt, nominatorsOpt[index], rewardDestination[index], validatorPrefs[index], nextKeys[index], exposure[index]]
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
function retrieveController (api: ApiInterfaceRx, stashId: AccountId, queuedKeys: Vec<ITuple<[AccountId, Keys]>>, [controllerIdOpt, nominatorsOpt, rewardDestination, validatorPrefs, nextKeys, exposure]: MultiResult): Observable<DeriveStakingQuery> {
|
||||
const controllerId = controllerIdOpt.unwrapOr(null);
|
||||
const nominators = nominatorsOpt.unwrapOr(null);
|
||||
function retrieveControllers (api: ApiInterfaceRx, optControllerIds: Option<AccountId>[]): Observable<Option<StakingLedger>[]> {
|
||||
const ids = optControllerIds.filter((opt) => opt.isSome).map((opt) => opt.unwrap());
|
||||
|
||||
return controllerId
|
||||
? api.query.staking.ledger(controllerId).pipe(
|
||||
map((stakingLedgerOpt): DeriveStakingQuery => ({
|
||||
accountId: stashId,
|
||||
controllerId,
|
||||
exposure,
|
||||
nominators: nominators
|
||||
? Array.isArray(nominators)
|
||||
? nominators[0].targets
|
||||
: nominators.targets
|
||||
: [],
|
||||
rewardDestination,
|
||||
stakingLedger: stakingLedgerOpt.unwrapOr(undefined),
|
||||
stashId,
|
||||
validatorPrefs: Array.isArray(validatorPrefs)
|
||||
? validatorPrefs[0]
|
||||
: validatorPrefs,
|
||||
...unwrapSessionIds(stashId, queuedKeys, nextKeys)
|
||||
}))
|
||||
)
|
||||
: of({ accountId: stashId, nextSessionIds: [], sessionIds: [] });
|
||||
}
|
||||
if (!ids.length) {
|
||||
return of(optControllerIds.map(() => api.registry.createType('Option<StakingLedger>')));
|
||||
}
|
||||
|
||||
export function queryWithQueued (api: ApiInterfaceRx): (accountId: Uint8Array | string, queuedKeys: Vec<ITuple<[AccountId, Keys]>>) => Observable<DeriveStakingQuery> {
|
||||
return memo((accountId: Uint8Array | string, queuedKeys: Vec<ITuple<[AccountId, Keys]>>): Observable<DeriveStakingQuery> => {
|
||||
const stashId = api.registry.createType('AccountId', accountId);
|
||||
return api.query.staking.ledger.multi<Option<StakingLedger>>(ids).pipe(
|
||||
map((optLedgers): Option<StakingLedger>[] => {
|
||||
let offset = -1;
|
||||
|
||||
return (
|
||||
isFunction(api.query.staking.erasStakers)
|
||||
? retrieveCurr(api, stashId)
|
||||
: retrievePrev(api, stashId)
|
||||
).pipe(
|
||||
switchMap((result): Observable<DeriveStakingQuery> =>
|
||||
retrieveController(api, stashId, queuedKeys, result)
|
||||
)
|
||||
);
|
||||
});
|
||||
return optControllerIds.map((opt): Option<StakingLedger> =>
|
||||
opt.isSome
|
||||
? optLedgers[++offset]
|
||||
: api.registry.createType('Option<StakingLedger>')
|
||||
);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,8 +108,8 @@ export function queryWithQueued (api: ApiInterfaceRx): (accountId: Uint8Array |
|
||||
*/
|
||||
export function query (api: ApiInterfaceRx): (accountId: Uint8Array | string) => Observable<DeriveStakingQuery> {
|
||||
return memo((accountId: Uint8Array | string): Observable<DeriveStakingQuery> =>
|
||||
api.query.session.queuedKeys<Vec<ITuple<[AccountId, Keys]>>>().pipe(
|
||||
switchMap((queuedKeys) => api.derive.staking.queryWithQueued(accountId, queuedKeys))
|
||||
api.derive.staking.queryMulti([accountId]).pipe(
|
||||
map(([first]) => first)
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -113,10 +117,27 @@ export function query (api: ApiInterfaceRx): (accountId: Uint8Array | string) =>
|
||||
export function queryMulti (api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[]) => Observable<DeriveStakingQuery[]> {
|
||||
return memo((accountIds: (Uint8Array | string)[]): Observable<DeriveStakingQuery[]> =>
|
||||
accountIds.length
|
||||
? api.query.session.queuedKeys<Vec<ITuple<[AccountId, Keys]>>>().pipe(
|
||||
switchMap((queuedKeys) => combineLatest(
|
||||
accountIds.map((acc) => api.derive.staking.queryWithQueued(acc, queuedKeys))
|
||||
))
|
||||
? combineLatest([
|
||||
api.query.session.queuedKeys<Vec<ITuple<[AccountId, Keys]>>>(),
|
||||
api.derive.session.indexes()
|
||||
]).pipe(
|
||||
switchMap(([queuedKeys, { activeEra }]): Observable<DeriveStakingQuery[]> => {
|
||||
const stashIds = accountIds.map((accountId) => api.registry.createType('AccountId', accountId));
|
||||
|
||||
return (
|
||||
isFunction(api.query.staking.erasStakers)
|
||||
? retrieveCurr(api, stashIds, activeEra)
|
||||
: combineLatest(stashIds.map((stashId) => retrievePrev(api, stashId)))
|
||||
).pipe(
|
||||
switchMap((results): Observable<DeriveStakingQuery[]> =>
|
||||
retrieveControllers(api, results.map(([optController]) => optController)).pipe(
|
||||
map((stakingLedgerOpts) =>
|
||||
stashIds.map((stashId, index) => parseController(stashId, queuedKeys, results[index], stakingLedgerOpts[index]))
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
})
|
||||
)
|
||||
: of([])
|
||||
);
|
||||
|
||||
@@ -52,7 +52,7 @@ function parseRewards (api: ApiInterfaceRx, stashId: AccountId, [, erasPoints, e
|
||||
: ZERO;
|
||||
}
|
||||
|
||||
value = avail.sub(valCut).mul(staked).div(expTotal).add(validatorId === stakerId ? valCut : ZERO);
|
||||
value = avail.sub(valCut).imul(staked).div(expTotal).iadd(validatorId === stakerId ? valCut : ZERO);
|
||||
}
|
||||
|
||||
validators[validatorId] = {
|
||||
@@ -199,14 +199,18 @@ export function stakerRewards (api: ApiInterfaceRx): (accountId: Uint8Array | st
|
||||
);
|
||||
}
|
||||
|
||||
export function stakerRewardsMulti (api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[], withActive?: boolean) => Observable<DeriveStakerReward[][]> {
|
||||
return memo((accountIds: (Uint8Array | string)[], withActive = false): Observable<DeriveStakerReward[][]> =>
|
||||
accountIds.length
|
||||
? api.derive.staking.erasHistoric(withActive).pipe(
|
||||
switchMap((eras) =>
|
||||
combineLatest(accountIds.map((acc) => api.derive.staking._stakerRewards(acc, eras, withActive)))
|
||||
)
|
||||
)
|
||||
export function stakerRewardsMultiEras (api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[], eras: EraIndex[]) => Observable<DeriveStakerReward[][]> {
|
||||
return memo((accountIds: (Uint8Array | string)[], eras: EraIndex[]): Observable<DeriveStakerReward[][]> =>
|
||||
accountIds.length && eras.length
|
||||
? combineLatest(accountIds.map((acc) => api.derive.staking._stakerRewards(acc, eras, false)))
|
||||
: of([])
|
||||
);
|
||||
}
|
||||
|
||||
export function stakerRewardsMulti (api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[], withActive?: boolean) => Observable<DeriveStakerReward[][]> {
|
||||
return memo((accountIds: (Uint8Array | string)[], withActive = false): Observable<DeriveStakerReward[][]> =>
|
||||
api.derive.staking.erasHistoric(withActive).pipe(
|
||||
switchMap((eras) => api.derive.staking.stakerRewardsMultiEras(accountIds, eras))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,11 @@ export interface DeriveStakingElected {
|
||||
info: DeriveStakingQuery[];
|
||||
}
|
||||
|
||||
export interface DeriveStakingWaiting {
|
||||
info: DeriveStakingQuery[];
|
||||
waiting: AccountId[];
|
||||
}
|
||||
|
||||
export interface DeriveStakingValidators {
|
||||
nextElected: AccountId[];
|
||||
validators: AccountId[];
|
||||
|
||||
@@ -18,9 +18,7 @@ export function nextElected (api: ApiInterfaceRx): () => Observable<AccountId[]>
|
||||
// only populate for next era in the last session, so track both here - entries are not
|
||||
// subscriptions, so we need a trigger - currentIndex acts as that trigger to refresh
|
||||
switchMap(({ currentEra }) => api.query.staking.erasStakers.keys(currentEra)),
|
||||
map((keys): AccountId[] =>
|
||||
keys.map((key): AccountId => key.args[1] as AccountId)
|
||||
)
|
||||
map((keys) => keys.map((key) => key.args[1] as AccountId))
|
||||
)
|
||||
: api.query.staking.currentElected<AccountId[]>()
|
||||
);
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
// Copyright 2017-2020 @polkadot/api-derive authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { ApiInterfaceRx } from '@polkadot/api/types';
|
||||
import { DeriveStakingWaiting } from '../types';
|
||||
|
||||
import { Observable, combineLatest } from 'rxjs';
|
||||
import { map, switchMap } from 'rxjs/operators';
|
||||
|
||||
import { memo } from '../util';
|
||||
|
||||
export function waitingInfo (api: ApiInterfaceRx): () => Observable<DeriveStakingWaiting> {
|
||||
return memo((): Observable<DeriveStakingWaiting> =>
|
||||
combineLatest([
|
||||
api.derive.staking.validators(),
|
||||
api.derive.staking.stashes()
|
||||
]).pipe(
|
||||
switchMap(([{ nextElected }, stashes]): Observable<DeriveStakingWaiting> => {
|
||||
const elected = nextElected.map((a) => a.toString());
|
||||
const waiting = stashes.filter((v) => !elected.includes(v.toString()));
|
||||
|
||||
return api.derive.staking.queryMulti(waiting).pipe(
|
||||
map((info): DeriveStakingWaiting => ({
|
||||
info,
|
||||
waiting
|
||||
}))
|
||||
);
|
||||
})
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -20,7 +20,7 @@ interface Result {
|
||||
|
||||
function latestNonce (api: ApiInterfaceRx, address: string): Observable<Index> {
|
||||
return api.derive.balances.account(address).pipe(
|
||||
map(({ accountNonce }): Index => accountNonce)
|
||||
map(({ accountNonce }) => accountNonce)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ function signingHeader (api: ApiInterfaceRx): Observable<Header> {
|
||||
switchMap((hash) => api.rpc.chain.getHeader(hash))
|
||||
)
|
||||
]).pipe(
|
||||
map(([current, finalized]): Header =>
|
||||
map(([current, finalized]) =>
|
||||
// determine the hash to use, current when lag > max, else finalized
|
||||
current.number.unwrap().sub(finalized.number.unwrap()).gt(MAX_FINALITY_LAG)
|
||||
? current
|
||||
@@ -57,7 +57,7 @@ export function signingInfo (api: ApiInterfaceRx): (address: string, nonce?: Any
|
||||
header,
|
||||
mortalLength: MORTAL_PERIOD
|
||||
.div(api.consts.babe?.expectedBlockTime || api.consts.timestamp?.minimumPeriod.muln(2) || FALLBACK_PERIOD)
|
||||
.add(MAX_FINALITY_LAG)
|
||||
.iadd(MAX_FINALITY_LAG)
|
||||
.toNumber(),
|
||||
nonce
|
||||
}))
|
||||
|
||||
@@ -31,6 +31,8 @@ export interface DeriveBalancesAll extends DeriveBalancesAccount {
|
||||
availableBalance: Balance;
|
||||
votingBalance: Balance;
|
||||
vestedBalance: Balance;
|
||||
vestedClaimable: Balance;
|
||||
vestingLocked: Balance;
|
||||
vestingTotal: Balance;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,15 +3,11 @@
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.v
|
||||
|
||||
import createMemo from 'memoizee';
|
||||
import { Observable, Observer } from 'rxjs';
|
||||
import { Observable, Observer, TeardownLogic } from 'rxjs';
|
||||
import { drr } from '@polkadot/rpc-core/rxjs';
|
||||
|
||||
type ObsFn <T> = (...params: any[]) => Observable<T>;
|
||||
|
||||
// Normalize via JSON.stringify, allow e.g. AccountId -> ss58
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
const normalizer = JSON.stringify;
|
||||
|
||||
// Wraps a derive, doing 2 things to optimize calls -
|
||||
// 1. creates a memo of the inner fn -> Observable, removing when unsubscribed
|
||||
// 2. wraps the observable in a drr() (which includes an unsub delay)
|
||||
@@ -19,15 +15,19 @@ const normalizer = JSON.stringify;
|
||||
export function memo <T> (inner: ObsFn<T>): ObsFn<T> {
|
||||
const cached = createMemo(
|
||||
(...params: any[]): Observable<T> =>
|
||||
new Observable((observer: Observer<T>): VoidCallback => {
|
||||
const sub = inner(...params).subscribe(observer);
|
||||
new Observable((observer: Observer<T>): TeardownLogic => {
|
||||
const subscription = inner(...params).subscribe(observer);
|
||||
|
||||
return (): void => {
|
||||
cached.delete(...params);
|
||||
sub.unsubscribe();
|
||||
subscription.unsubscribe();
|
||||
};
|
||||
}).pipe(drr()),
|
||||
{ normalizer }
|
||||
{
|
||||
// Normalize via JSON.stringify, allow e.g. AccountId -> ss58
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
normalizer: JSON.stringify
|
||||
}
|
||||
);
|
||||
|
||||
return cached;
|
||||
|
||||
+13
-13
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/api",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "Promise and RxJS wrappers around the Polkadot JS RPC",
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
@@ -26,21 +26,21 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/api-derive": "1.18.1",
|
||||
"@polkadot/keyring": "^2.13.1",
|
||||
"@polkadot/metadata": "1.18.1",
|
||||
"@polkadot/rpc-core": "1.18.1",
|
||||
"@polkadot/rpc-provider": "1.18.1",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/types-known": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@polkadot/util-crypto": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/api-derive": "1.24.1",
|
||||
"@polkadot/keyring": "^2.18.1",
|
||||
"@polkadot/metadata": "1.24.1",
|
||||
"@polkadot/rpc-core": "1.24.1",
|
||||
"@polkadot/rpc-provider": "1.24.1",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/types-known": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"@polkadot/util-crypto": "^2.18.1",
|
||||
"bn.js": "^5.1.2",
|
||||
"eventemitter3": "^4.0.4",
|
||||
"rxjs": "^6.5.5"
|
||||
"rxjs": "^6.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^2.13.1"
|
||||
"@polkadot/keyring": "^2.18.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
import { Codec } from '@polkadot/types/types';
|
||||
import { Vec } from '@polkadot/types/codec';
|
||||
import { u32, u64 } from '@polkadot/types/primitive';
|
||||
import { Balance, BalanceOf, BlockNumber, LockIdentifier, ModuleId, Moment, Percent, Permill, RuntimeDbWeight, Weight } from '@polkadot/types/interfaces/runtime';
|
||||
import { u16, u32, u64 } from '@polkadot/types/primitive';
|
||||
import { Balance, BalanceOf, BlockNumber, LockIdentifier, ModuleId, Moment, Perbill, Percent, Permill, RuntimeDbWeight, Weight } from '@polkadot/types/interfaces/runtime';
|
||||
import { SessionIndex } from '@polkadot/types/interfaces/session';
|
||||
import { EraIndex } from '@polkadot/types/interfaces/staking';
|
||||
import { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';
|
||||
@@ -176,6 +176,40 @@ declare module '@polkadot/metadata/Decorated/consts/types' {
|
||||
**/
|
||||
subAccountDeposit: AugmentedConst<BalanceOf>;
|
||||
};
|
||||
proxy: {
|
||||
[index: string]: AugmentedConst<object & Codec>;
|
||||
/**
|
||||
* The maximum amount of proxies allowed for a single account.
|
||||
**/
|
||||
maxProxies: AugmentedConst<u16>;
|
||||
/**
|
||||
* The base amount of currency needed to reserve for creating a proxy.
|
||||
**/
|
||||
proxyDepositBase: AugmentedConst<BalanceOf>;
|
||||
/**
|
||||
* The amount of currency needed per proxy added.
|
||||
**/
|
||||
proxyDepositFactor: AugmentedConst<BalanceOf>;
|
||||
};
|
||||
recovery: {
|
||||
[index: string]: AugmentedConst<object & Codec>;
|
||||
/**
|
||||
* The base amount of currency needed to reserve for creating a recovery configuration.
|
||||
**/
|
||||
configDepositBase: AugmentedConst<BalanceOf>;
|
||||
/**
|
||||
* The amount of currency needed per additional user when creating a recovery configuration.
|
||||
**/
|
||||
friendDepositFactor: AugmentedConst<BalanceOf>;
|
||||
/**
|
||||
* The maximum amount of friends allowed in a recovery configuration.
|
||||
**/
|
||||
maxFriends: AugmentedConst<u16>;
|
||||
/**
|
||||
* The base amount of currency needed to reserve for starting a recovery.
|
||||
**/
|
||||
recoveryDeposit: AugmentedConst<BalanceOf>;
|
||||
};
|
||||
society: {
|
||||
[index: string]: AugmentedConst<object & Codec>;
|
||||
/**
|
||||
@@ -215,10 +249,45 @@ declare module '@polkadot/metadata/Decorated/consts/types' {
|
||||
* Number of eras that staked funds must remain bonded for.
|
||||
**/
|
||||
bondingDuration: AugmentedConst<EraIndex>;
|
||||
/**
|
||||
* The number of blocks before the end of the era from which election submissions are allowed.
|
||||
*
|
||||
* Setting this to zero will disable the offchain compute and only on-chain seq-phragmen will
|
||||
* be used.
|
||||
*
|
||||
* This is bounded by being within the last session. Hence, setting it to a value more than the
|
||||
* length of a session will be pointless.
|
||||
**/
|
||||
electionLookahead: AugmentedConst<BlockNumber>;
|
||||
/**
|
||||
* Maximum number of balancing iterations to run in the offchain submission.
|
||||
*
|
||||
* If set to 0, balance_solution will not be executed at all.
|
||||
**/
|
||||
maxIterations: AugmentedConst<u32>;
|
||||
/**
|
||||
* The maximum number of nominators rewarded for each validator.
|
||||
*
|
||||
* For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim
|
||||
* their reward. This used to limit the i/o cost for the nominator payout.
|
||||
**/
|
||||
maxNominatorRewardedPerValidator: AugmentedConst<u32>;
|
||||
/**
|
||||
* The threshold of improvement that should be provided for a new solution to be accepted.
|
||||
**/
|
||||
minSolutionScoreBump: AugmentedConst<Perbill>;
|
||||
/**
|
||||
* Number of sessions per era.
|
||||
**/
|
||||
sessionsPerEra: AugmentedConst<SessionIndex>;
|
||||
/**
|
||||
* Number of eras that slashes are deferred by, after computation.
|
||||
*
|
||||
* This should be less than the bonding duration.
|
||||
* Set to 0 if slashes should be applied immediately, without opportunity for
|
||||
* intervention.
|
||||
**/
|
||||
slashDeferDuration: AugmentedConst<EraIndex>;
|
||||
};
|
||||
system: {
|
||||
[index: string]: AugmentedConst<object & Codec>;
|
||||
|
||||
@@ -6,22 +6,22 @@ import { Option, U8aFixed, Vec } from '@polkadot/types/codec';
|
||||
import { Bytes, Data, bool, u32, u64 } from '@polkadot/types/primitive';
|
||||
import { UncleEntryItem } from '@polkadot/types/interfaces/authorship';
|
||||
import { BabeAuthorityWeight, MaybeRandomness, NextConfigDescriptor, Randomness } from '@polkadot/types/interfaces/babe';
|
||||
import { AccountData, BalanceLock, ReleasesBalances } from '@polkadot/types/interfaces/balances';
|
||||
import { AccountData, BalanceLock } from '@polkadot/types/interfaces/balances';
|
||||
import { ProposalIndex, Votes } from '@polkadot/types/interfaces/collective';
|
||||
import { AuthorityId } from '@polkadot/types/interfaces/consensus';
|
||||
import { CodeHash, ContractInfo, PrefabWasmModule, Schedule } from '@polkadot/types/interfaces/contracts';
|
||||
import { PreimageStatus, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReleasesDemocracy, Voting } from '@polkadot/types/interfaces/democracy';
|
||||
import { PreimageStatus, PropIndex, Proposal, ReferendumIndex, ReferendumInfo, Voting } from '@polkadot/types/interfaces/democracy';
|
||||
import { VoteThreshold } from '@polkadot/types/interfaces/elections';
|
||||
import { SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa';
|
||||
import { RegistrarInfo, Registration } from '@polkadot/types/interfaces/identity';
|
||||
import { AuthIndex } from '@polkadot/types/interfaces/imOnline';
|
||||
import { DeferredOffenceOf, Kind, OffenceDetails, OpaqueTimeSlot, ReportIdOf } from '@polkadot/types/interfaces/offences';
|
||||
import { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery';
|
||||
import { AccountId, AccountIndex, Balance, BalanceOf, BlockNumber, ExtrinsicsWeight, Hash, KeyTypeId, Moment, Perbill, ValidatorId } from '@polkadot/types/interfaces/runtime';
|
||||
import { AccountId, AccountIndex, Balance, BalanceOf, BlockNumber, ExtrinsicsWeight, Hash, KeyTypeId, Moment, Perbill, ProxyType, Releases, ValidatorId } from '@polkadot/types/interfaces/runtime';
|
||||
import { Scheduled, TaskAddress } from '@polkadot/types/interfaces/scheduler';
|
||||
import { Keys, SessionIndex } from '@polkadot/types/interfaces/session';
|
||||
import { Bid, BidKind, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society';
|
||||
import { ActiveEraInfo, ElectionResult, ElectionStatus, EraIndex, EraRewardPoints, Exposure, Forcing, Nominations, PhragmenScore, ReleasesStaking, RewardDestination, SlashingSpans, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, ValidatorPrefs } from '@polkadot/types/interfaces/staking';
|
||||
import { ActiveEraInfo, ElectionResult, ElectionScore, ElectionStatus, EraIndex, EraRewardPoints, Exposure, Forcing, Nominations, RewardDestination, SlashingSpans, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, ValidatorPrefs } from '@polkadot/types/interfaces/staking';
|
||||
import { AccountInfo, DigestOf, EventIndex, EventRecord, LastRuntimeUpgradeInfo, Phase } from '@polkadot/types/interfaces/system';
|
||||
import { OpenTip, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
|
||||
import { Multiplier } from '@polkadot/types/interfaces/txpayment';
|
||||
@@ -121,9 +121,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
/**
|
||||
* The balance of an account.
|
||||
*
|
||||
* NOTE: THIS MAY NEVER BE IN EXISTENCE AND YET HAVE A `total().is_zero()`. If the total
|
||||
* is ever zero, then the entry *MUST* be removed.
|
||||
*
|
||||
* NOTE: This is only used in the case that this module is used to store balances.
|
||||
**/
|
||||
account: AugmentedQuery<ApiType, (arg: AccountId | string | Uint8Array) => Observable<AccountData>> & QueryableStorageEntry<ApiType>;
|
||||
@@ -137,7 +134,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
*
|
||||
* This is set to v2.0.0 for new networks.
|
||||
**/
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<ReleasesBalances>> & QueryableStorageEntry<ApiType>;
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<Releases>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* The total units issued in the system.
|
||||
**/
|
||||
@@ -242,13 +239,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
* The block number is the block at which it was deposited.
|
||||
**/
|
||||
preimages: AugmentedQuery<ApiType, (arg: Hash | string | Uint8Array) => Observable<Option<PreimageStatus>>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* Who is able to vote for whom. Value is the fund-holding account, key is the
|
||||
* vote-transaction-sending account.
|
||||
*
|
||||
* TWOX-NOTE: OK ― `AccountId` is a secure hash.
|
||||
**/
|
||||
proxy: AugmentedQuery<ApiType, (arg: AccountId | string | Uint8Array) => Observable<Option<ProxyState>>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* The number of (public) proposals that have been made so far.
|
||||
**/
|
||||
@@ -272,7 +262,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
*
|
||||
* New networks start with last version.
|
||||
**/
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<Option<ReleasesDemocracy>>> & QueryableStorageEntry<ApiType>;
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<Option<Releases>>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* All votes for a particular voter. We store the balance for the number of votes that we
|
||||
* have recorded. The second item is the total amount of delegations, that will be added.
|
||||
@@ -398,7 +388,15 @@ declare module '@polkadot/api/types/storage' {
|
||||
/**
|
||||
* The lookup from index to account.
|
||||
**/
|
||||
accounts: AugmentedQuery<ApiType, (arg: AccountIndex | AnyNumber | Uint8Array) => Observable<Option<ITuple<[AccountId, BalanceOf]>>>> & QueryableStorageEntry<ApiType>;
|
||||
accounts: AugmentedQuery<ApiType, (arg: AccountIndex | AnyNumber | Uint8Array) => Observable<Option<ITuple<[AccountId, BalanceOf, bool]>>>> & QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
multisig: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
calls: AugmentedQuery<ApiType, (arg: U8aFixed | string | Uint8Array) => Observable<Option<ITuple<[Bytes, AccountId, BalanceOf]>>>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* The set of open multisig operations.
|
||||
**/
|
||||
multisigs: AugmentedQueryDoubleMap<ApiType, (key1: AccountId | string | Uint8Array, key2: U8aFixed | string | Uint8Array) => Observable<Option<Multisig>>> & QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
offences: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
@@ -425,6 +423,14 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
reportsByKindIndex: AugmentedQuery<ApiType, (arg: Kind | string | Uint8Array) => Observable<Bytes>> & QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
proxy: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* The set of account proxies. Maps the account which has delegated to the accounts
|
||||
* which are being delegated to, together with the amount held on deposit.
|
||||
**/
|
||||
proxies: AugmentedQuery<ApiType, (arg: AccountId | string | Uint8Array) => Observable<ITuple<[Vec<ITuple<[AccountId, ProxyType]>>, BalanceOf]>>> & QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
randomnessCollectiveFlip: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
@@ -669,9 +675,9 @@ declare module '@polkadot/api/types/storage' {
|
||||
*
|
||||
* Information is kept for eras in `[current_era - history_depth; current_era]`.
|
||||
*
|
||||
* Must be more than the number of eras delayed by session otherwise.
|
||||
* I.e. active era must always be in history.
|
||||
* I.e. `active_era > current_era - history_depth` must be guaranteed.
|
||||
* Must be more than the number of eras delayed by session otherwise. I.e. active era must
|
||||
* always be in history. I.e. `active_era > current_era - history_depth` must be
|
||||
* guaranteed.
|
||||
**/
|
||||
historyDepth: AugmentedQuery<ApiType, () => Observable<u32>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
@@ -689,10 +695,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
* Map from all (unlocked) "controller" accounts to the info regarding the staking.
|
||||
**/
|
||||
ledger: AugmentedQuery<ApiType, (arg: AccountId | string | Uint8Array) => Observable<Option<StakingLedger>>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* The era where we migrated from Lazy Payouts to Simple Payouts
|
||||
**/
|
||||
migrateEra: AugmentedQuery<ApiType, () => Observable<Option<EraIndex>>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* Minimum number of staking participants before emergency conditions are imposed.
|
||||
**/
|
||||
@@ -718,7 +720,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
/**
|
||||
* The score of the current [`QueuedElected`].
|
||||
**/
|
||||
queuedScore: AugmentedQuery<ApiType, () => Observable<Option<PhragmenScore>>> & QueryableStorageEntry<ApiType>;
|
||||
queuedScore: AugmentedQuery<ApiType, () => Observable<Option<ElectionScore>>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* Slashing spans for stash accounts.
|
||||
**/
|
||||
@@ -750,7 +752,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
*
|
||||
* This is set to v3.0.0 for new networks.
|
||||
**/
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<ReleasesStaking>> & QueryableStorageEntry<ApiType>;
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<Releases>> & QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* All unapplied slashes that are queued for later.
|
||||
**/
|
||||
@@ -901,6 +903,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
transactionPayment: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
nextFeeMultiplier: AugmentedQuery<ApiType, () => Observable<Multiplier>> & QueryableStorageEntry<ApiType>;
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<Releases>> & QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
treasury: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
@@ -928,13 +931,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
tips: AugmentedQuery<ApiType, (arg: Hash | string | Uint8Array) => Observable<Option<OpenTip>>> & QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
utility: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
* The set of open multisig operations.
|
||||
**/
|
||||
multisigs: AugmentedQueryDoubleMap<ApiType, (key1: AccountId | string | Uint8Array, key2: U8aFixed | string | Uint8Array) => Observable<Option<Multisig>>> & QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
vesting: {
|
||||
[index: string]: QueryableStorageEntry<ApiType>;
|
||||
/**
|
||||
|
||||
@@ -19,16 +19,10 @@ import { RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';
|
||||
import { RpcMethods } from '@polkadot/types/interfaces/rpc';
|
||||
import { AccountId, BlockNumber, H256, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime';
|
||||
import { ReadProof, RuntimeVersion } from '@polkadot/types/interfaces/state';
|
||||
import { ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo } from '@polkadot/types/interfaces/system';
|
||||
import { ApplyExtrinsicResult, ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo } from '@polkadot/types/interfaces/system';
|
||||
|
||||
declare module '@polkadot/rpc-core/types.jsonrpc' {
|
||||
export interface RpcInterface {
|
||||
account: {
|
||||
/**
|
||||
* Retrieves the next accountIndex as available on the node
|
||||
**/
|
||||
nextIndex: AugmentedRpc<(accountId: AccountId | string | Uint8Array) => Observable<Index>>;
|
||||
};
|
||||
author: {
|
||||
/**
|
||||
* Returns true if the keystore has private keys for the given public key and key type.
|
||||
@@ -244,6 +238,10 @@ declare module '@polkadot/rpc-core/types.jsonrpc' {
|
||||
subscribeStorage: AugmentedRpc<<T = Codec[]>(keys?: Vec<StorageKey> | (StorageKey | string | Uint8Array | any)[]) => Observable<T>>;
|
||||
};
|
||||
system: {
|
||||
/**
|
||||
* Retrieves the next accountIndex as available on the node
|
||||
**/
|
||||
accountNextIndex: AugmentedRpc<(accountId: AccountId | string | Uint8Array) => Observable<Index>>;
|
||||
/**
|
||||
* Adds a reserved peer
|
||||
**/
|
||||
@@ -256,6 +254,10 @@ declare module '@polkadot/rpc-core/types.jsonrpc' {
|
||||
* Retrieves the chain type
|
||||
**/
|
||||
chainType: AugmentedRpc<() => Observable<ChainType>>;
|
||||
/**
|
||||
* Dry run an extrinsic at a given block
|
||||
**/
|
||||
dryRun: AugmentedRpc<(extrinsic: Bytes | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<ApplyExtrinsicResult>>;
|
||||
/**
|
||||
* Return health status of the node
|
||||
**/
|
||||
|
||||
+377
-347
@@ -9,14 +9,14 @@ import { CodeHash, Gas, Schedule } from '@polkadot/types/interfaces/contracts';
|
||||
import { AccountVote, Conviction, PropIndex, Proposal, ReferendumIndex } from '@polkadot/types/interfaces/democracy';
|
||||
import { DefunctVoter, Renouncing } from '@polkadot/types/interfaces/elections';
|
||||
import { Extrinsic, Signature } from '@polkadot/types/interfaces/extrinsics';
|
||||
import { EquivocationProof, KeyOwnerProof } from '@polkadot/types/interfaces/grandpa';
|
||||
import { GrandpaEquivocationProof, KeyOwnerProof } from '@polkadot/types/interfaces/grandpa';
|
||||
import { IdentityFields, IdentityInfo, IdentityJudgement, RegistrarIndex } from '@polkadot/types/interfaces/identity';
|
||||
import { Heartbeat } from '@polkadot/types/interfaces/imOnline';
|
||||
import { AccountId, AccountIndex, Address, Balance, BalanceOf, BlockNumber, Call, ChangesTrieConfiguration, Hash, Header, KeyValue, LookupSource, Moment, Perbill, Weight } from '@polkadot/types/interfaces/runtime';
|
||||
import { AccountId, AccountIndex, Address, Balance, BalanceOf, BlockNumber, Call, ChangesTrieConfiguration, Hash, Header, KeyValue, LookupSource, Moment, Perbill, Percent, ProxyType, Weight } from '@polkadot/types/interfaces/runtime';
|
||||
import { Period, Priority } from '@polkadot/types/interfaces/scheduler';
|
||||
import { Keys } from '@polkadot/types/interfaces/session';
|
||||
import { SocietyJudgement } from '@polkadot/types/interfaces/society';
|
||||
import { CompactAssignments, ElectionSize, EraIndex, PhragmenScore, RewardDestination, ValidatorIndex, ValidatorPrefs } from '@polkadot/types/interfaces/staking';
|
||||
import { CompactAssignments, ElectionScore, ElectionSize, EraIndex, RewardDestination, ValidatorIndex, ValidatorPrefs } from '@polkadot/types/interfaces/staking';
|
||||
import { Key } from '@polkadot/types/interfaces/system';
|
||||
import { Timepoint } from '@polkadot/types/interfaces/utility';
|
||||
import { VestingInfo } from '@polkadot/types/interfaces/vesting';
|
||||
@@ -290,23 +290,6 @@ declare module '@polkadot/api/types/submittable' {
|
||||
};
|
||||
democracy: {
|
||||
[index: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
/**
|
||||
* Specify a proxy that is already open to us. Called by the stash.
|
||||
*
|
||||
* NOTE: Used to be called `set_proxy`.
|
||||
*
|
||||
* The dispatch origin of this call must be _Signed_.
|
||||
*
|
||||
* - `proxy`: The account that will be activated as proxy.
|
||||
*
|
||||
* # <weight>
|
||||
* - Complexity: `O(1)`
|
||||
* - Db reads: `Proxy`
|
||||
* - Db writes: `Proxy`
|
||||
* - Base Weight: 7.972 µs
|
||||
* # </weight>
|
||||
**/
|
||||
activateProxy: AugmentedSubmittable<(proxy: AccountId | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Cancel a proposal queued for enactment.
|
||||
*
|
||||
@@ -348,40 +331,6 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* # </weight>
|
||||
**/
|
||||
clearPublicProposals: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Clear the proxy. Called by the proxy.
|
||||
*
|
||||
* NOTE: Used to be called `resign_proxy`.
|
||||
*
|
||||
* The dispatch origin of this call must be _Signed_.
|
||||
*
|
||||
* # <weight>
|
||||
* - Complexity: `O(1)`
|
||||
* - Db reads: `Proxy`, `sender account`
|
||||
* - Db writes: `Proxy`, `sender account`
|
||||
* - Base Weight: 15.41 µs
|
||||
* # </weight>
|
||||
**/
|
||||
closeProxy: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Deactivate the proxy, but leave open to this account. Called by the stash.
|
||||
*
|
||||
* The proxy must already be active.
|
||||
*
|
||||
* NOTE: Used to be called `remove_proxy`.
|
||||
*
|
||||
* The dispatch origin of this call must be _Signed_.
|
||||
*
|
||||
* - `proxy`: The account that will be deactivated as proxy.
|
||||
*
|
||||
* # <weight>
|
||||
* - Complexity: `O(1)`
|
||||
* - Db reads: `Proxy`
|
||||
* - Db writes: `Proxy`
|
||||
* - Base Weight: 8.03 µs
|
||||
* # </weight>
|
||||
**/
|
||||
deactivateProxy: AugmentedSubmittable<(proxy: AccountId | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Delegate the voting power (with some given conviction) of the sending account.
|
||||
*
|
||||
@@ -547,25 +496,6 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* Same as `note_preimage` but origin is `OperationalPreimageOrigin`.
|
||||
**/
|
||||
notePreimageOperational: AugmentedSubmittable<(encodedProposal: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Become a proxy.
|
||||
*
|
||||
* This must be called prior to a later `activate_proxy`.
|
||||
*
|
||||
* Origin must be a Signed.
|
||||
*
|
||||
* - `target`: The account whose votes will later be proxied.
|
||||
*
|
||||
* `close_proxy` must be called before the account can be destroyed.
|
||||
*
|
||||
* # <weight>
|
||||
* - Complexity: O(1)
|
||||
* - Db reads: `Proxy`, `proxy account`
|
||||
* - Db writes: `Proxy`, `proxy account`
|
||||
* - Base Weight: 14.86 µs
|
||||
* # </weight>
|
||||
**/
|
||||
openProxy: AugmentedSubmittable<(target: AccountId | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Propose a sensitive action to be taken.
|
||||
*
|
||||
@@ -586,95 +516,6 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* # </weight>
|
||||
**/
|
||||
propose: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array, value: Compact<BalanceOf> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Delegate the voting power (with some given conviction) of a proxied account.
|
||||
*
|
||||
* The balance delegated is locked for as long as it's delegated, and thereafter for the
|
||||
* time appropriate for the conviction's lock period.
|
||||
*
|
||||
* The dispatch origin of this call must be _Signed_, and the signing account must have
|
||||
* been set as the proxy account for `target`.
|
||||
*
|
||||
* - `target`: The account whole voting power shall be delegated and whose balance locked.
|
||||
* This account must either:
|
||||
* - be delegating already; or
|
||||
* - have no voting activity (if there is, then it will need to be removed/consolidated
|
||||
* through `reap_vote` or `unvote`).
|
||||
* - `to`: The account whose voting the `target` account's voting power will follow.
|
||||
* - `conviction`: The conviction that will be attached to the delegated votes. When the
|
||||
* account is undelegated, the funds will be locked for the corresponding period.
|
||||
* - `balance`: The amount of the account's balance to be used in delegating. This must
|
||||
* not be more than the account's current balance.
|
||||
*
|
||||
* Emits `Delegated`.
|
||||
*
|
||||
* # <weight>
|
||||
* same as `delegate with additional:
|
||||
* - Db reads: `Proxy`, `proxy account`
|
||||
* - Db writes: `proxy account`
|
||||
* - Base Weight: 68.61 + 8.039 * R µs
|
||||
* # </weight>
|
||||
**/
|
||||
proxyDelegate: AugmentedSubmittable<(to: AccountId | string | Uint8Array, conviction: Conviction | 'None'|'Locked1x'|'Locked2x'|'Locked3x'|'Locked4x'|'Locked5x'|'Locked6x' | number | Uint8Array, balance: BalanceOf | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Remove a proxied vote for a referendum.
|
||||
*
|
||||
* Exactly equivalent to `remove_vote` except that it operates on the account that the
|
||||
* sender is a proxy for.
|
||||
*
|
||||
* The dispatch origin of this call must be _Signed_ and the signing account must be a
|
||||
* proxy for some other account which has a registered vote for the referendum of `index`.
|
||||
*
|
||||
* - `index`: The index of referendum of the vote to be removed.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(R + log R)` where R is the number of referenda that `target` has voted on.
|
||||
* Weight is calculated for the maximum number of vote.
|
||||
* - Db reads: `ReferendumInfoOf`, `VotingOf`, `Proxy`
|
||||
* - Db writes: `ReferendumInfoOf`, `VotingOf`
|
||||
* - Base Weight: 26.35 + .36 * R µs
|
||||
* # </weight>
|
||||
**/
|
||||
proxyRemoveVote: AugmentedSubmittable<(index: ReferendumIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Undelegate the voting power of a proxied account.
|
||||
*
|
||||
* Tokens may be unlocked following once an amount of time consistent with the lock period
|
||||
* of the conviction with which the delegation was issued.
|
||||
*
|
||||
* The dispatch origin of this call must be _Signed_ and the signing account must be a
|
||||
* proxy for some other account which is currently delegating.
|
||||
*
|
||||
* Emits `Undelegated`.
|
||||
*
|
||||
* # <weight>
|
||||
* same as `undelegate with additional:
|
||||
* Db reads: `Proxy`
|
||||
* Base Weight: 39 + 7.958 * R µs
|
||||
* # </weight>
|
||||
**/
|
||||
proxyUndelegate: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Vote in a referendum on behalf of a stash. If `vote.is_aye()`, the vote is to enact
|
||||
* the proposal; otherwise it is a vote to keep the status quo.
|
||||
*
|
||||
* The dispatch origin of this call must be _Signed_.
|
||||
*
|
||||
* - `ref_index`: The index of the referendum to proxy vote for.
|
||||
* - `vote`: The vote configuration.
|
||||
*
|
||||
* # <weight>
|
||||
* - Complexity: `O(R)` where R is the number of referendums the proxy has voted on.
|
||||
* weight is charged as if maximum votes.
|
||||
* - Db reads: `ReferendumInfoOf`, `VotingOf`, `balances locks`, `Proxy`, `proxy account`
|
||||
* - Db writes: `ReferendumInfoOf`, `VotingOf`, `balances locks`
|
||||
* ------------
|
||||
* - Base Weight:
|
||||
* - Proxy Vote New: 54.35 + .344 * R µs
|
||||
* - Proxy Vote Existing: 54.35 + .35 * R µs
|
||||
* # </weight>
|
||||
**/
|
||||
proxyVote: AugmentedSubmittable<(refIndex: Compact<ReferendumIndex> | AnyNumber | Uint8Array, vote: AccountVote | { Standard: any } | { Split: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Remove an expired proposal preimage and collect the deposit.
|
||||
*
|
||||
@@ -861,7 +702,7 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* the outgoing member is slashed.
|
||||
*
|
||||
* If a runner-up is available, then the best runner-up will be removed and replaces the
|
||||
* outgoing member. Otherwise, a new phragmen round is started.
|
||||
* outgoing member. Otherwise, a new phragmen election is started.
|
||||
*
|
||||
* Note that this does not affect the designated block number of the next election.
|
||||
*
|
||||
@@ -1037,7 +878,7 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* submission of invalid equivocation reports, a mandatory pre-validation of
|
||||
* the extrinsic is implemented in a `SignedExtension`.
|
||||
**/
|
||||
reportEquivocation: AugmentedSubmittable<(equivocationProof: EquivocationProof | { setId?: any; equivocation?: any } | string | Uint8Array, keyOwnerProof: KeyOwnerProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
reportEquivocation: AugmentedSubmittable<(equivocationProof: GrandpaEquivocationProof | { setId?: any; equivocation?: any } | string | Uint8Array, keyOwnerProof: KeyOwnerProof | { session?: any; trieNodes?: any; validatorCount?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
};
|
||||
identity: {
|
||||
[index: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
@@ -1297,6 +1138,9 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* - One storage mutation (codec `O(1)`).
|
||||
* - One reserve operation.
|
||||
* - One event.
|
||||
* -------------------
|
||||
* - Base Weight: 28.69 µs
|
||||
* - DB Weight: 1 Read/Write (Accounts)
|
||||
* # </weight>
|
||||
**/
|
||||
claim: AugmentedSubmittable<(index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
@@ -1308,6 +1152,7 @@ declare module '@polkadot/api/types/submittable' {
|
||||
*
|
||||
* - `index`: the index to be (re-)assigned.
|
||||
* - `new`: the new owner of the index. This function is a no-op if it is equal to sender.
|
||||
* - `freeze`: if set to `true`, will freeze the index so it cannot be transferred.
|
||||
*
|
||||
* Emits `IndexAssigned` if successful.
|
||||
*
|
||||
@@ -1316,9 +1161,14 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* - One storage mutation (codec `O(1)`).
|
||||
* - Up to one reserve operation.
|
||||
* - One event.
|
||||
* -------------------
|
||||
* - Base Weight: 26.83 µs
|
||||
* - DB Weight:
|
||||
* - Reads: Indices Accounts, System Account (original owner)
|
||||
* - Writes: Indices Accounts, System Account (original owner)
|
||||
* # </weight>
|
||||
**/
|
||||
forceTransfer: AugmentedSubmittable<(updated: AccountId | string | Uint8Array, index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
forceTransfer: AugmentedSubmittable<(updated: AccountId | string | Uint8Array, index: AccountIndex | AnyNumber | Uint8Array, freeze: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Free up an index owned by the sender.
|
||||
*
|
||||
@@ -1335,9 +1185,33 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* - One storage mutation (codec `O(1)`).
|
||||
* - One reserve operation.
|
||||
* - One event.
|
||||
* -------------------
|
||||
* - Base Weight: 25.53 µs
|
||||
* - DB Weight: 1 Read/Write (Accounts)
|
||||
* # </weight>
|
||||
**/
|
||||
free: AugmentedSubmittable<(index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Freeze an index so it will always point to the sender account. This consumes the deposit.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_ and the signing account must have a
|
||||
* non-frozen account `index`.
|
||||
*
|
||||
* - `index`: the index to be frozen in place.
|
||||
*
|
||||
* Emits `IndexFrozen` if successful.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(1)`.
|
||||
* - One storage mutation (codec `O(1)`).
|
||||
* - Up to one slash operation.
|
||||
* - One event.
|
||||
* -------------------
|
||||
* - Base Weight: 30.86 µs
|
||||
* - DB Weight: 1 Read/Write (Accounts)
|
||||
* # </weight>
|
||||
**/
|
||||
freeze: AugmentedSubmittable<(index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Assign an index already owned by the sender to another account. The balance reservation
|
||||
* is effectively transferred to the new account.
|
||||
@@ -1354,10 +1228,283 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* - One storage mutation (codec `O(1)`).
|
||||
* - One transfer operation.
|
||||
* - One event.
|
||||
* -------------------
|
||||
* - Base Weight: 33.74 µs
|
||||
* - DB Weight:
|
||||
* - Reads: Indices Accounts, System Account (recipient)
|
||||
* - Writes: Indices Accounts, System Account (recipient)
|
||||
* # </weight>
|
||||
**/
|
||||
transfer: AugmentedSubmittable<(updated: AccountId | string | Uint8Array, index: AccountIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
};
|
||||
multisig: {
|
||||
[index: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
/**
|
||||
* Register approval for a dispatch to be made from a deterministic composite account if
|
||||
* approved by a total of `threshold - 1` of `other_signatories`.
|
||||
*
|
||||
* Payment: `DepositBase` will be reserved if this is the first approval, plus
|
||||
* `threshold` times `DepositFactor`. It is returned once this dispatch happens or
|
||||
* is cancelled.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* - `threshold`: The total number of approvals for this dispatch before it is executed.
|
||||
* - `other_signatories`: The accounts (other than the sender) who can approve this
|
||||
* dispatch. May not be empty.
|
||||
* - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is
|
||||
* not the first approval, then it must be `Some`, with the timepoint (block number and
|
||||
* transaction index) of the first approval transaction.
|
||||
* - `call_hash`: The hash of the call to be executed.
|
||||
*
|
||||
* NOTE: If this is the final approval, you will want to use `as_multi` instead.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(S)`.
|
||||
* - Up to one balance-reserve or unreserve operation.
|
||||
* - One passthrough operation, one insert, both `O(S)` where `S` is the number of
|
||||
* signatories. `S` is capped by `MaxSignatories`, with weight being proportional.
|
||||
* - One encode & hash, both of complexity `O(S)`.
|
||||
* - Up to one binary search and insert (`O(logS + S)`).
|
||||
* - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.
|
||||
* - One event.
|
||||
* - Storage: inserts one item, value size bounded by `MaxSignatories`, with a
|
||||
* deposit taken for its lifetime of
|
||||
* `DepositBase + threshold * DepositFactor`.
|
||||
* ----------------------------------
|
||||
* - Base Weight:
|
||||
* - Create: 44.71 + 0.088 * S
|
||||
* - Approve: 31.48 + 0.116 * S
|
||||
* - DB Weight:
|
||||
* - Read: Multisig Storage, [Caller Account]
|
||||
* - Write: Multisig Storage, [Caller Account]
|
||||
* # </weight>
|
||||
**/
|
||||
approveAsMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec<AccountId> | (AccountId | string | Uint8Array)[], maybeTimepoint: Option<Timepoint> | null | object | string | Uint8Array, callHash: U8aFixed | string | Uint8Array, maxWeight: Weight | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Register approval for a dispatch to be made from a deterministic composite account if
|
||||
* approved by a total of `threshold - 1` of `other_signatories`.
|
||||
*
|
||||
* If there are enough, then dispatch the call.
|
||||
*
|
||||
* Payment: `DepositBase` will be reserved if this is the first approval, plus
|
||||
* `threshold` times `DepositFactor`. It is returned once this dispatch happens or
|
||||
* is cancelled.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* - `threshold`: The total number of approvals for this dispatch before it is executed.
|
||||
* - `other_signatories`: The accounts (other than the sender) who can approve this
|
||||
* dispatch. May not be empty.
|
||||
* - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is
|
||||
* not the first approval, then it must be `Some`, with the timepoint (block number and
|
||||
* transaction index) of the first approval transaction.
|
||||
* - `call`: The call to be executed.
|
||||
*
|
||||
* NOTE: Unless this is the final approval, you will generally want to use
|
||||
* `approve_as_multi` instead, since it only requires a hash of the call.
|
||||
*
|
||||
* Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise
|
||||
* on success, result is `Ok` and the result from the interior call, if it was executed,
|
||||
* may be found in the deposited `MultisigExecuted` event.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(S + Z + Call)`.
|
||||
* - Up to one balance-reserve or unreserve operation.
|
||||
* - One passthrough operation, one insert, both `O(S)` where `S` is the number of
|
||||
* signatories. `S` is capped by `MaxSignatories`, with weight being proportional.
|
||||
* - One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len.
|
||||
* - One encode & hash, both of complexity `O(S)`.
|
||||
* - Up to one binary search and insert (`O(logS + S)`).
|
||||
* - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.
|
||||
* - One event.
|
||||
* - The weight of the `call`.
|
||||
* - Storage: inserts one item, value size bounded by `MaxSignatories`, with a
|
||||
* deposit taken for its lifetime of
|
||||
* `DepositBase + threshold * DepositFactor`.
|
||||
* -------------------------------
|
||||
* - Base Weight:
|
||||
* - Create: 41.89 + 0.118 * S + .002 * Z µs
|
||||
* - Create w/ Store: 53.57 + 0.119 * S + .003 * Z µs
|
||||
* - Approve: 31.39 + 0.136 * S + .002 * Z µs
|
||||
* - Complete: 39.94 + 0.26 * S + .002 * Z µs
|
||||
* - DB Weight:
|
||||
* - Reads: Multisig Storage, [Caller Account], Calls (if `store_call`)
|
||||
* - Writes: Multisig Storage, [Caller Account], Calls (if `store_call`)
|
||||
* - Plus Call Weight
|
||||
* # </weight>
|
||||
**/
|
||||
asMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec<AccountId> | (AccountId | string | Uint8Array)[], maybeTimepoint: Option<Timepoint> | null | object | string | Uint8Array, call: Bytes | string | Uint8Array, storeCall: bool | boolean | Uint8Array, maxWeight: Weight | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Immediately dispatch a multi-signature call using a single approval from the caller.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* - `other_signatories`: The accounts (other than the sender) who are part of the
|
||||
* multi-signature, but do not participate in the approval process.
|
||||
* - `call`: The call to be executed.
|
||||
*
|
||||
* Result is equivalent to the dispatched result.
|
||||
*
|
||||
* # <weight>
|
||||
* O(Z + C) where Z is the length of the call and C its execution weight.
|
||||
* -------------------------------
|
||||
* - Base Weight: 33.72 + 0.002 * Z µs
|
||||
* - DB Weight: None
|
||||
* - Plus Call Weight
|
||||
* # </weight>
|
||||
**/
|
||||
asMultiThreshold1: AugmentedSubmittable<(otherSignatories: Vec<AccountId> | (AccountId | string | Uint8Array)[], call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously
|
||||
* for this operation will be unreserved on success.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* - `threshold`: The total number of approvals for this dispatch before it is executed.
|
||||
* - `other_signatories`: The accounts (other than the sender) who can approve this
|
||||
* dispatch. May not be empty.
|
||||
* - `timepoint`: The timepoint (block number and transaction index) of the first approval
|
||||
* transaction for this dispatch.
|
||||
* - `call_hash`: The hash of the call to be executed.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(S)`.
|
||||
* - Up to one balance-reserve or unreserve operation.
|
||||
* - One passthrough operation, one insert, both `O(S)` where `S` is the number of
|
||||
* signatories. `S` is capped by `MaxSignatories`, with weight being proportional.
|
||||
* - One encode & hash, both of complexity `O(S)`.
|
||||
* - One event.
|
||||
* - I/O: 1 read `O(S)`, one remove.
|
||||
* - Storage: removes one item.
|
||||
* ----------------------------------
|
||||
* - Base Weight: 36.07 + 0.124 * S
|
||||
* - DB Weight:
|
||||
* - Read: Multisig Storage, [Caller Account], Refund Account, Calls
|
||||
* - Write: Multisig Storage, [Caller Account], Refund Account, Calls
|
||||
* # </weight>
|
||||
**/
|
||||
cancelAsMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec<AccountId> | (AccountId | string | Uint8Array)[], timepoint: Timepoint | { height?: any; index?: any } | string | Uint8Array, callHash: U8aFixed | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
};
|
||||
proxy: {
|
||||
[index: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
/**
|
||||
* Register a proxy account for the sender that is able to make calls on its behalf.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* Parameters:
|
||||
* - `proxy`: The account that the `caller` would like to make a proxy.
|
||||
* - `proxy_type`: The permissions allowed for this proxy account.
|
||||
*
|
||||
* # <weight>
|
||||
* P is the number of proxies the user has
|
||||
* - Base weight: 17.48 + .176 * P µs
|
||||
* - DB weight: 1 storage read and write.
|
||||
* # </weight>
|
||||
**/
|
||||
addProxy: AugmentedSubmittable<(proxy: AccountId | string | Uint8Array, proxyType: ProxyType | 'Any'|'NonTransfer'|'Governance'|'Staking' | number | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and
|
||||
* initialize it with a proxy of `proxy_type` for `origin` sender.
|
||||
*
|
||||
* Requires a `Signed` origin.
|
||||
*
|
||||
* - `proxy_type`: The type of the proxy that the sender will be registered as over the
|
||||
* new account. This will almost always be the most permissive `ProxyType` possible to
|
||||
* allow for maximum flexibility.
|
||||
* - `index`: A disambiguation index, in case this is called multiple times in the same
|
||||
* transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just
|
||||
* want to use `0`.
|
||||
*
|
||||
* Fails with `Duplicate` if this has already been called in this transaction, from the
|
||||
* same sender, with the same parameters.
|
||||
*
|
||||
* Fails if there are insufficient funds to pay for deposit.
|
||||
*
|
||||
* # <weight>
|
||||
* P is the number of proxies the user has
|
||||
* - Base weight: 36.48 + .039 * P µs
|
||||
* - DB weight: 1 storage read and write.
|
||||
* # </weight>
|
||||
**/
|
||||
anonymous: AugmentedSubmittable<(proxyType: ProxyType | 'Any'|'NonTransfer'|'Governance'|'Staking' | number | Uint8Array, index: u16 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Removes a previously spawned anonymous proxy.
|
||||
*
|
||||
* WARNING: **All access to this account will be lost.** Any funds held in it will be
|
||||
* inaccessible.
|
||||
*
|
||||
* Requires a `Signed` origin, and the sender account must have been created by a call to
|
||||
* `anonymous` with corresponding parameters.
|
||||
*
|
||||
* - `spawner`: The account that originally called `anonymous` to create this account.
|
||||
* - `index`: The disambiguation index originally passed to `anonymous`. Probably `0`.
|
||||
* - `proxy_type`: The proxy type originally passed to `anonymous`.
|
||||
* - `height`: The height of the chain when the call to `anonymous` was processed.
|
||||
* - `ext_index`: The extrinsic index in which the call to `anonymous` was processed.
|
||||
*
|
||||
* Fails with `NoPermission` in case the caller is not a previously created anonymous
|
||||
* account whose `anonymous` call has corresponding parameters.
|
||||
*
|
||||
* # <weight>
|
||||
* P is the number of proxies the user has
|
||||
* - Base weight: 15.65 + .137 * P µs
|
||||
* - DB weight: 1 storage read and write.
|
||||
* # </weight>
|
||||
**/
|
||||
killAnonymous: AugmentedSubmittable<(spawner: AccountId | string | Uint8Array, proxyType: ProxyType | 'Any'|'NonTransfer'|'Governance'|'Staking' | number | Uint8Array, index: u16 | AnyNumber | Uint8Array, height: Compact<BlockNumber> | AnyNumber | Uint8Array, extIndex: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Dispatch the given `call` from an account that the sender is authorised for through
|
||||
* `add_proxy`.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* Parameters:
|
||||
* - `real`: The account that the proxy will make a call on behalf of.
|
||||
* - `force_proxy_type`: Specify the exact proxy type to be used and checked for this call.
|
||||
* - `call`: The call to be made by the `real` account.
|
||||
*
|
||||
* # <weight>
|
||||
* P is the number of proxies the user has
|
||||
* - Base weight: 19.87 + .141 * P µs
|
||||
* - DB weight: 1 storage read.
|
||||
* - Plus the weight of the `call`
|
||||
* # </weight>
|
||||
**/
|
||||
proxy: AugmentedSubmittable<(real: AccountId | string | Uint8Array, forceProxyType: Option<ProxyType> | null | object | string | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Unregister all proxy accounts for the sender.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* WARNING: This may be called on accounts created by `anonymous`, however if done, then
|
||||
* the unreserved fees will be inaccessible. **All access to this account will be lost.**
|
||||
*
|
||||
* # <weight>
|
||||
* P is the number of proxies the user has
|
||||
* - Base weight: 13.73 + .129 * P µs
|
||||
* - DB weight: 1 storage read and write.
|
||||
* # </weight>
|
||||
**/
|
||||
removeProxies: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Unregister a proxy account for the sender.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* Parameters:
|
||||
* - `proxy`: The account that the `caller` would like to remove as a proxy.
|
||||
* - `proxy_type`: The permissions currently enabled for the removed proxy account.
|
||||
*
|
||||
* # <weight>
|
||||
* P is the number of proxies the user has
|
||||
* - Base weight: 14.37 + .164 * P µs
|
||||
* - DB weight: 1 storage read and write.
|
||||
* # </weight>
|
||||
**/
|
||||
removeProxy: AugmentedSubmittable<(proxy: AccountId | string | Uint8Array, proxyType: ProxyType | 'Any'|'NonTransfer'|'Governance'|'Staking' | number | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
};
|
||||
recovery: {
|
||||
[index: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
/**
|
||||
@@ -2109,6 +2256,17 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* # </weight>
|
||||
**/
|
||||
forceUnstake: AugmentedSubmittable<(stash: AccountId | string | Uint8Array, numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Increments the ideal number of validators.
|
||||
*
|
||||
* The dispatch origin must be Root.
|
||||
*
|
||||
* # <weight>
|
||||
* Base Weight: 1.717 µs
|
||||
* Read/Write: Validator Count
|
||||
* # </weight>
|
||||
**/
|
||||
increaseValidatorCount: AugmentedSubmittable<(additional: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Declare the desire to nominate `targets` for the origin controller.
|
||||
*
|
||||
@@ -2131,39 +2289,6 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* # </weight>
|
||||
**/
|
||||
nominate: AugmentedSubmittable<(targets: Vec<LookupSource> | (LookupSource | Address | AccountId | AccountIndex | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* **This extrinsic will be removed after `MigrationEra + HistoryDepth` has passed, giving
|
||||
* opportunity for users to claim all rewards before moving to Simple Payouts. After this
|
||||
* time, you should use `payout_stakers` instead.**
|
||||
*
|
||||
* Make one nominator's payout for one era.
|
||||
*
|
||||
* - `who` is the controller account of the nominator to pay out.
|
||||
* - `era` may not be lower than one following the most recently paid era. If it is higher,
|
||||
* then it indicates an instruction to skip the payout of all previous eras.
|
||||
* - `validators` is the list of all validators that `who` had exposure to during `era`,
|
||||
* alongside the index of `who` in the clipped exposure of the validator.
|
||||
* I.e. each element is a tuple of
|
||||
* `(validator, index of `who` in clipped exposure of validator)`.
|
||||
* If it is incomplete, then less than the full reward will be paid out.
|
||||
* It must not exceed `MAX_NOMINATIONS`.
|
||||
*
|
||||
* WARNING: once an era is payed for a validator such validator can't claim the payout of
|
||||
* previous era.
|
||||
*
|
||||
* WARNING: Incorrect arguments here can result in loss of payout. Be very careful.
|
||||
*
|
||||
* # <weight>
|
||||
* - Number of storage read of `O(validators)`; `validators` is the argument of the call,
|
||||
* and is bounded by `MAX_NOMINATIONS`.
|
||||
* - Each storage read is `O(N)` size and decode complexity; `N` is the maximum
|
||||
* nominations that can be given to a single validator.
|
||||
* - Computation complexity: `O(MAX_NOMINATIONS * logN)`; `MAX_NOMINATIONS` is the
|
||||
* maximum number of validators that may be nominated by a single nominator, it is
|
||||
* bounded only economically (all nominators are required to place a minimum stake).
|
||||
* # </weight>
|
||||
**/
|
||||
payoutNominator: AugmentedSubmittable<(era: EraIndex | AnyNumber | Uint8Array, validators: Vec<ITuple<[AccountId, u32]>> | ([AccountId | string | Uint8Array, u32 | AnyNumber | Uint8Array])[]) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Pay out all the stakers behind a single validator for a single era.
|
||||
*
|
||||
@@ -2183,35 +2308,13 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* N is the Number of payouts for the validator (including the validator)
|
||||
* Base Weight: 110 + 54.2 * N µs (Median Slopes)
|
||||
* DB Weight:
|
||||
* - Read: EraElectionStatus, CurrentEra, HistoryDepth, MigrateEra, ErasValidatorReward,
|
||||
* - Read: EraElectionStatus, CurrentEra, HistoryDepth, ErasValidatorReward,
|
||||
* ErasStakersClipped, ErasRewardPoints, ErasValidatorPrefs (8 items)
|
||||
* - Read Each: Bonded, Ledger, Payee, Locks, System Account (5 items)
|
||||
* - Write Each: System Account, Locks, Ledger (3 items)
|
||||
* # </weight>
|
||||
**/
|
||||
payoutStakers: AugmentedSubmittable<(validatorStash: AccountId | string | Uint8Array, era: EraIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* **This extrinsic will be removed after `MigrationEra + HistoryDepth` has passed, giving
|
||||
* opportunity for users to claim all rewards before moving to Simple Payouts. After this
|
||||
* time, you should use `payout_stakers` instead.**
|
||||
*
|
||||
* Make one validator's payout for one era.
|
||||
*
|
||||
* - `who` is the controller account of the validator to pay out.
|
||||
* - `era` may not be lower than one following the most recently paid era. If it is higher,
|
||||
* then it indicates an instruction to skip the payout of all previous eras.
|
||||
*
|
||||
* WARNING: once an era is payed for a validator such validator can't claim the payout of
|
||||
* previous era.
|
||||
*
|
||||
* WARNING: Incorrect arguments here can result in loss of payout. Be very careful.
|
||||
*
|
||||
* # <weight>
|
||||
* - Time complexity: O(1).
|
||||
* - Contains a limited number of reads and writes.
|
||||
* # </weight>
|
||||
**/
|
||||
payoutValidator: AugmentedSubmittable<(era: EraIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Remove all data structure concerning a staker/stash once its balance is zero.
|
||||
* This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone
|
||||
@@ -2249,6 +2352,17 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* # </weight>
|
||||
**/
|
||||
rebond: AugmentedSubmittable<(value: Compact<BalanceOf> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Scale up the ideal number of validators by a factor.
|
||||
*
|
||||
* The dispatch origin must be Root.
|
||||
*
|
||||
* # <weight>
|
||||
* Base Weight: 1.717 µs
|
||||
* Read/Write: Validator Count
|
||||
* # </weight>
|
||||
**/
|
||||
scaleValidatorCount: AugmentedSubmittable<(factor: Percent | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* (Re-)set the controller of a stash.
|
||||
*
|
||||
@@ -2335,7 +2449,7 @@ declare module '@polkadot/api/types/submittable' {
|
||||
**/
|
||||
setValidatorCount: AugmentedSubmittable<(updated: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Submit a phragmen result to the chain. If the solution:
|
||||
* Submit an election result to the chain. If the solution:
|
||||
*
|
||||
* 1. is valid.
|
||||
* 2. has a better score than a potentially existing solution on chain.
|
||||
@@ -2348,7 +2462,7 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* 2. `assignments`: the compact version of an assignment vector that encodes the edge
|
||||
* weights.
|
||||
*
|
||||
* Both of which may be computed using [`phragmen`], or any other algorithm.
|
||||
* Both of which may be computed using _phragmen_, or any other algorithm.
|
||||
*
|
||||
* Additionally, the submitter must provide:
|
||||
*
|
||||
@@ -2383,7 +2497,7 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* See `crate::weight` module.
|
||||
* # </weight>
|
||||
**/
|
||||
submitElectionSolution: AugmentedSubmittable<(winners: Vec<ValidatorIndex> | (ValidatorIndex | AnyNumber | Uint8Array)[], compact: CompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: PhragmenScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
submitElectionSolution: AugmentedSubmittable<(winners: Vec<ValidatorIndex> | (ValidatorIndex | AnyNumber | Uint8Array)[], compact: CompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: ElectionScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Unsigned version of `submit_election_solution`.
|
||||
*
|
||||
@@ -2395,7 +2509,7 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* See `crate::weight` module.
|
||||
* # </weight>
|
||||
**/
|
||||
submitElectionSolutionUnsigned: AugmentedSubmittable<(winners: Vec<ValidatorIndex> | (ValidatorIndex | AnyNumber | Uint8Array)[], compact: CompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: PhragmenScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
submitElectionSolutionUnsigned: AugmentedSubmittable<(winners: Vec<ValidatorIndex> | (ValidatorIndex | AnyNumber | Uint8Array)[], compact: CompactAssignments | { votes1?: any; votes2?: any; votes3?: any; votes4?: any; votes5?: any; votes6?: any; votes7?: any; votes8?: any; votes9?: any; votes10?: any; votes11?: any; votes12?: any; votes13?: any; votes14?: any; votes15?: any; votes16?: any } | string | Uint8Array, score: ElectionScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Schedule a portion of the stash to be unlocked ready for transfer out after the bond
|
||||
* period ends. If this leaves an amount actively bonded less than
|
||||
@@ -3015,105 +3129,29 @@ declare module '@polkadot/api/types/submittable' {
|
||||
utility: {
|
||||
[index: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
/**
|
||||
* Register approval for a dispatch to be made from a deterministic composite account if
|
||||
* approved by a total of `threshold - 1` of `other_signatories`.
|
||||
* Send a call through an indexed pseudonym of the sender.
|
||||
*
|
||||
* Payment: `MultisigDepositBase` will be reserved if this is the first approval, plus
|
||||
* `threshold` times `MultisigDepositFactor`. It is returned once this dispatch happens or
|
||||
* is cancelled.
|
||||
* Filter from origin are passed along. The call will be dispatched with an origin which
|
||||
* use the same filter as the origin of this call.
|
||||
*
|
||||
* NOTE: If you need to ensure that any account-based filtering is not honored (i.e.
|
||||
* because you expect `proxy` to have been used prior in the call stack and you do not want
|
||||
* the call restrictions to apply to any sub-accounts), then use `as_sub` instead.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* - `threshold`: The total number of approvals for this dispatch before it is executed.
|
||||
* - `other_signatories`: The accounts (other than the sender) who can approve this
|
||||
* dispatch. May not be empty.
|
||||
* - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is
|
||||
* not the first approval, then it must be `Some`, with the timepoint (block number and
|
||||
* transaction index) of the first approval transaction.
|
||||
* - `call_hash`: The hash of the call to be executed.
|
||||
*
|
||||
* NOTE: If this is the final approval, you will want to use `as_multi` instead.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(S)`.
|
||||
* - Up to one balance-reserve or unreserve operation.
|
||||
* - One passthrough operation, one insert, both `O(S)` where `S` is the number of
|
||||
* signatories. `S` is capped by `MaxSignatories`, with weight being proportional.
|
||||
* - One encode & hash, both of complexity `O(S)`.
|
||||
* - Up to one binary search and insert (`O(logS + S)`).
|
||||
* - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.
|
||||
* - One event.
|
||||
* - Storage: inserts one item, value size bounded by `MaxSignatories`, with a
|
||||
* deposit taken for its lifetime of
|
||||
* `MultisigDepositBase + threshold * MultisigDepositFactor`.
|
||||
* ----------------------------------
|
||||
* - Base Weight:
|
||||
* - Create: 44.71 + 0.088 * S
|
||||
* - Approve: 31.48 + 0.116 * S
|
||||
* - DB Weight:
|
||||
* - Read: Multisig Storage, [Caller Account]
|
||||
* - Write: Multisig Storage, [Caller Account]
|
||||
* - Base weight: 2.861 µs
|
||||
* - Plus the weight of the `call`
|
||||
* # </weight>
|
||||
**/
|
||||
approveAsMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec<AccountId> | (AccountId | string | Uint8Array)[], maybeTimepoint: Option<Timepoint> | null | object | string | Uint8Array, callHash: U8aFixed | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Register approval for a dispatch to be made from a deterministic composite account if
|
||||
* approved by a total of `threshold - 1` of `other_signatories`.
|
||||
*
|
||||
* If there are enough, then dispatch the call. Calls must each fulfil the `IsCallable`
|
||||
* filter.
|
||||
*
|
||||
* Payment: `MultisigDepositBase` will be reserved if this is the first approval, plus
|
||||
* `threshold` times `MultisigDepositFactor`. It is returned once this dispatch happens or
|
||||
* is cancelled.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* - `threshold`: The total number of approvals for this dispatch before it is executed.
|
||||
* - `other_signatories`: The accounts (other than the sender) who can approve this
|
||||
* dispatch. May not be empty.
|
||||
* - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is
|
||||
* not the first approval, then it must be `Some`, with the timepoint (block number and
|
||||
* transaction index) of the first approval transaction.
|
||||
* - `call`: The call to be executed.
|
||||
*
|
||||
* NOTE: Unless this is the final approval, you will generally want to use
|
||||
* `approve_as_multi` instead, since it only requires a hash of the call.
|
||||
*
|
||||
* Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise
|
||||
* on success, result is `Ok` and the result from the interior call, if it was executed,
|
||||
* may be found in the deposited `MultisigExecuted` event.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(S + Z + Call)`.
|
||||
* - Up to one balance-reserve or unreserve operation.
|
||||
* - One passthrough operation, one insert, both `O(S)` where `S` is the number of
|
||||
* signatories. `S` is capped by `MaxSignatories`, with weight being proportional.
|
||||
* - One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len.
|
||||
* - One encode & hash, both of complexity `O(S)`.
|
||||
* - Up to one binary search and insert (`O(logS + S)`).
|
||||
* - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.
|
||||
* - One event.
|
||||
* - The weight of the `call`.
|
||||
* - Storage: inserts one item, value size bounded by `MaxSignatories`, with a
|
||||
* deposit taken for its lifetime of
|
||||
* `MultisigDepositBase + threshold * MultisigDepositFactor`.
|
||||
* -------------------------------
|
||||
* - Base Weight:
|
||||
* - Create: 46.55 + 0.089 * S µs
|
||||
* - Approve: 34.03 + .112 * S µs
|
||||
* - Complete: 40.36 + .225 * S µs
|
||||
* - DB Weight:
|
||||
* - Reads: Multisig Storage, [Caller Account]
|
||||
* - Writes: Multisig Storage, [Caller Account]
|
||||
* - Plus Call Weight
|
||||
* # </weight>
|
||||
**/
|
||||
asMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec<AccountId> | (AccountId | string | Uint8Array)[], maybeTimepoint: Option<Timepoint> | null | object | string | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
asLimitedSub: AugmentedSubmittable<(index: u16 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Send a call through an indexed pseudonym of the sender.
|
||||
*
|
||||
* Calls must each fulfil the `IsCallable` filter.
|
||||
* NOTE: If you need to ensure that any account-based filtering is honored (i.e. because
|
||||
* you expect `proxy` to have been used prior in the call stack and you want it to apply to
|
||||
* any sub-accounts), then use `as_limited_sub` instead.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
@@ -3126,13 +3164,13 @@ declare module '@polkadot/api/types/submittable' {
|
||||
/**
|
||||
* Send a batch of dispatch calls.
|
||||
*
|
||||
* This will execute until the first one fails and then stop. Calls must fulfil the
|
||||
* `IsCallable` filter unless the origin is `Root`.
|
||||
*
|
||||
* May be called from any origin.
|
||||
*
|
||||
* - `calls`: The calls to be dispatched from the same origin.
|
||||
*
|
||||
* If origin is root then call are dispatch without checking origin filter. (This includes
|
||||
* bypassing `frame_system::Trait::BaseCallFilter`).
|
||||
*
|
||||
* # <weight>
|
||||
* - Base weight: 14.39 + .987 * c µs
|
||||
* - Plus the sum of the weights of the `calls`.
|
||||
@@ -3146,39 +3184,31 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* event is deposited.
|
||||
**/
|
||||
batch: AugmentedSubmittable<(calls: Vec<Call> | (Call | { callIndex?: any; args?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously
|
||||
* for this operation will be unreserved on success.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_.
|
||||
*
|
||||
* - `threshold`: The total number of approvals for this dispatch before it is executed.
|
||||
* - `other_signatories`: The accounts (other than the sender) who can approve this
|
||||
* dispatch. May not be empty.
|
||||
* - `timepoint`: The timepoint (block number and transaction index) of the first approval
|
||||
* transaction for this dispatch.
|
||||
* - `call_hash`: The hash of the call to be executed.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(S)`.
|
||||
* - Up to one balance-reserve or unreserve operation.
|
||||
* - One passthrough operation, one insert, both `O(S)` where `S` is the number of
|
||||
* signatories. `S` is capped by `MaxSignatories`, with weight being proportional.
|
||||
* - One encode & hash, both of complexity `O(S)`.
|
||||
* - One event.
|
||||
* - I/O: 1 read `O(S)`, one remove.
|
||||
* - Storage: removes one item.
|
||||
* ----------------------------------
|
||||
* - Base Weight: 37.6 + 0.084 * S
|
||||
* - DB Weight:
|
||||
* - Read: Multisig Storage, [Caller Account]
|
||||
* - Write: Multisig Storage, [Caller Account]
|
||||
* # </weight>
|
||||
**/
|
||||
cancelAsMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec<AccountId> | (AccountId | string | Uint8Array)[], timepoint: Timepoint | { height?: any; index?: any } | string | Uint8Array, callHash: U8aFixed | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
};
|
||||
vesting: {
|
||||
[index: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
/**
|
||||
* Force a vested transfer.
|
||||
*
|
||||
* The dispatch origin for this call must be _Root_.
|
||||
*
|
||||
* - `source`: The account whose funds should be transferred.
|
||||
* - `target`: The account that should be transferred the vested funds.
|
||||
* - `amount`: The amount of funds to transfer and will be vested.
|
||||
* - `schedule`: The vesting schedule attached to the transfer.
|
||||
*
|
||||
* Emits `VestingCreated`.
|
||||
*
|
||||
* # <weight>
|
||||
* - `O(1)`.
|
||||
* - DbWeight: 4 Reads, 4 Writes
|
||||
* - Reads: Vesting Storage, Balances Locks, Target Account, Source Account
|
||||
* - Writes: Vesting Storage, Balances Locks, Target Account, Source Account
|
||||
* - Benchmark: 100.3 + .365 * l µs (min square analysis)
|
||||
* - Using 100 µs fixed. Assuming less than 50 locks on any user, else we may want factor in number of locks.
|
||||
* # </weight>
|
||||
**/
|
||||
forceVestedTransfer: AugmentedSubmittable<(source: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, target: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, schedule: VestingInfo | { locked?: any; perBlock?: any; startingBlock?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>>;
|
||||
/**
|
||||
* Unlock any vested funds of the sender account.
|
||||
*
|
||||
|
||||
@@ -11,7 +11,7 @@ import { ApiInterfaceRx, ApiOptions, ApiTypes, DecorateMethod, DecoratedRpc, Dec
|
||||
|
||||
import BN from 'bn.js';
|
||||
import { BehaviorSubject, Observable, combineLatest, of } from 'rxjs';
|
||||
import { map, switchMap, take, tap, toArray } from 'rxjs/operators';
|
||||
import { map, switchMap, tap, toArray } from 'rxjs/operators';
|
||||
import decorateDerive, { ExactDerive } from '@polkadot/api-derive';
|
||||
import { memo } from '@polkadot/api-derive/util';
|
||||
import DecoratedMeta from '@polkadot/metadata/Decorated';
|
||||
@@ -145,7 +145,7 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
/**
|
||||
* @description Creates an instance of a type as registered
|
||||
*/
|
||||
public createType <K extends keyof InterfaceTypes> (type: K, ...params: any[]): InterfaceTypes[K] {
|
||||
public createType <K extends keyof InterfaceTypes> (type: K, ...params: unknown[]): InterfaceTypes[K] {
|
||||
return this.registry.createType(type, ...params);
|
||||
}
|
||||
|
||||
@@ -320,68 +320,50 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
|
||||
private _decorateStorageEntry<ApiType extends ApiTypes> (creator: StorageEntry, decorateMethod: DecorateMethod<ApiType>): QueryableStorageEntry<ApiType> {
|
||||
// get the storage arguments, with DoubleMap as an array entry, otherwise spread
|
||||
const getArgs = (...args: any[]): any[] => extractStorageArgs(creator, args);
|
||||
const getArgs = (...args: unknown[]): unknown[] => extractStorageArgs(creator, args);
|
||||
|
||||
// Disable this where it occurs for each field we are decorating
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment */
|
||||
|
||||
// FIXME We probably want to be able to query the full list with non-subs as well
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
const decorated = this.hasSubscriptions && creator.iterKey && creator.meta.type.isMap && creator.meta.type.asMap.linked.isTrue
|
||||
? this._decorateStorageLinked(creator, decorateMethod)
|
||||
: decorateMethod((...args: any[]): Observable<Codec> => (
|
||||
this.hasSubscriptions
|
||||
? this._rpcCore.state
|
||||
// Unfortunately for one-shot calls we also use .subscribeStorage here
|
||||
.subscribeStorage<[Codec]>([getArgs(...args)])
|
||||
// state_storage returns an array of values, since we have just subscribed to
|
||||
// a single entry, we pull that from the array and return it as-is
|
||||
.pipe(map(([data]): Codec => data))
|
||||
: this._rpcCore.state.getStorage(getArgs(...args))
|
||||
), { methodName: creator.method });
|
||||
: this._decorateStorageCall(creator, decorateMethod);
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||
decorated.creator = creator;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.at = decorateMethod((hash: Hash, arg1?: Arg, arg2?: Arg): Observable<Codec> =>
|
||||
this._rpcCore.state.getStorage(getArgs(arg1, arg2), hash));
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.hash = decorateMethod((arg1?: Arg, arg2?: Arg): Observable<Hash> =>
|
||||
this._rpcCore.state.getStorageHash(getArgs(arg1, arg2)));
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||
decorated.key = (arg1?: Arg, arg2?: Arg): string =>
|
||||
u8aToHex(compactStripLength(creator(creator.meta.type.isDoubleMap ? [arg1, arg2] : arg1))[1]);
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||
decorated.keyPrefix = (key1?: Arg): string =>
|
||||
u8aToHex(creator.keyPrefix(key1));
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.range = decorateMethod((range: [Hash, Hash?], arg1?: Arg, arg2?: Arg): Observable<[Hash, Codec][]> =>
|
||||
this._decorateStorageRange(decorated, [arg1, arg2], range));
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.size = decorateMethod((arg1?: Arg, arg2?: Arg): Observable<u64> =>
|
||||
this._rpcCore.state.getStorageSize(getArgs(arg1, arg2)));
|
||||
|
||||
// .keys() & .entries() only available on map types
|
||||
if (creator.iterKey && (creator.meta.type.isMap || creator.meta.type.isDoubleMap)) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.entries = decorateMethod(
|
||||
memo((doubleMapArg?: Arg): Observable<[StorageKey, Codec][]> =>
|
||||
this._retrieveMapEntries(creator, doubleMapArg)));
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.entriesPaged = decorateMethod(
|
||||
memo((opts: PaginationOptions): Observable<[StorageKey, Codec][]> =>
|
||||
this._retrieveMapEntriesPaged(creator, opts)));
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.keys = decorateMethod(
|
||||
memo((doubleMapArg?: Arg): Observable<StorageKey[]> =>
|
||||
this._retrieveMapKeys(creator, doubleMapArg)));
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.keysPaged = decorateMethod(
|
||||
memo((opts: PaginationOptions): Observable<StorageKey[]> =>
|
||||
this._retrieveMapKeysPaged(creator, opts)));
|
||||
@@ -390,15 +372,32 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
// only support multi where subs are available
|
||||
if (this.hasSubscriptions) {
|
||||
// When using double map storage function, user need to pass double map key as an array
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
decorated.multi = decorateMethod((args: (Arg | Arg[])[]): Observable<Codec[]> =>
|
||||
this._rpcCore.state.subscribeStorage(
|
||||
args.map((arg: Arg[] | Arg): [StorageEntry, Arg | Arg[]] => [creator, arg])));
|
||||
}
|
||||
|
||||
/* eslint-enable @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment */
|
||||
|
||||
return this._decorateFunctionMeta(creator as any, decorated) as unknown as QueryableStorageEntry<ApiType>;
|
||||
}
|
||||
|
||||
// Decorate the base storage call. In the case or rxjs or promise-without-callback (await)
|
||||
// we make a subscription, alternatively we push this through a single-shot query
|
||||
private _decorateStorageCall<ApiType extends ApiTypes> (creator: StorageEntry, decorateMethod: DecorateMethod<ApiType>): ReturnType<DecorateMethod<ApiType>> {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||
return decorateMethod((...args: unknown[]): Observable<Codec> => {
|
||||
return this.hasSubscriptions
|
||||
? this._rpcCore.state.subscribeStorage<[Codec]>([extractStorageArgs(creator, args)]).pipe(
|
||||
map(([data]) => data) // extract first/only result from list
|
||||
)
|
||||
: this._rpcCore.state.getStorage(extractStorageArgs(creator, args));
|
||||
}, {
|
||||
methodName: creator.method,
|
||||
overrideNoSub: (...args: unknown[]) => this._rpcCore.state.getStorage(extractStorageArgs(creator, args))
|
||||
});
|
||||
}
|
||||
|
||||
private _decorateStorageRange<ApiType extends ApiTypes> (decorated: QueryableStorageEntry<ApiType>, args: [Arg?, Arg?], range: [Hash, Hash?]): Observable<[Hash, Codec][]> {
|
||||
const outputType = unwrapStorageType(decorated.creator.meta.type, decorated.creator.meta.modifier.isOptional);
|
||||
|
||||
@@ -412,6 +411,8 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
));
|
||||
}
|
||||
|
||||
// This is deprecated/removed on substrate - we still have some live chains, eg. Edgeware needing it, so it
|
||||
// has not been dropped yet. Slated for removal in API 2.0
|
||||
private _decorateStorageLinked<ApiType extends ApiTypes> (creator: StorageEntry, decorateMethod: DecorateMethod<ApiType>): ReturnType<DecorateMethod<ApiType>> {
|
||||
const result = new Map<Codec, ITuple<[Codec, Linkage<Codec>]> | null>();
|
||||
let subject: BehaviorSubject<LinkageResult>;
|
||||
@@ -477,15 +478,15 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
// this handles the case where the head changes effectively, i.e. a new entry
|
||||
// appears at the top of the list, the new getNext gets kicked off
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||
return decorateMethod((...args: any[]): Observable<LinkageResult | [Codec, Linkage<Codec>]> =>
|
||||
return decorateMethod((...args: unknown[]): Observable<LinkageResult | [Codec, Linkage<Codec>]> =>
|
||||
args.length
|
||||
? this._rpcCore.state
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
.subscribeStorage<[[Codec, Linkage<Codec>]]>([[creator, ...args]])
|
||||
.pipe(map(([data]): [Codec, Linkage<Codec>] => data))
|
||||
.pipe(map(([data]) => data))
|
||||
: this._rpcCore.state
|
||||
.subscribeStorage<[LinkageResult]>([iterKey()])
|
||||
.pipe(switchMap(([key]): Observable<LinkageResult> => getNext(head = key)))
|
||||
.pipe(switchMap(([key]) => getNext(head = key)))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -495,35 +496,28 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
const headKey = iterKey(arg).toHex();
|
||||
const startSubject = new BehaviorSubject<string>(headKey);
|
||||
|
||||
return this._rpcCore.state.getKeysPaged
|
||||
? startSubject.pipe(
|
||||
switchMap((startKey) =>
|
||||
this._rpcCore.state.getKeysPaged(headKey, PAGE_SIZE_KEYS, startKey).pipe(
|
||||
map((keys) => keys.map((key) => key.setMeta(meta)))
|
||||
)
|
||||
),
|
||||
tap((keys): void => {
|
||||
keys.length === PAGE_SIZE_KEYS
|
||||
? startSubject.next(keys[PAGE_SIZE_KEYS - 1].toHex())
|
||||
: startSubject.complete();
|
||||
}),
|
||||
toArray(), // toArray since we want to startSubject to be completed
|
||||
map((keysArr: StorageKey[][]) => keysArr.reduce((result: StorageKey[], keys) => result.concat(keys), []))
|
||||
)
|
||||
: this._rpcCore.state.getKeys(headKey).pipe(
|
||||
map((keys) => keys.map((key) => key.setMeta(meta)))
|
||||
);
|
||||
return startSubject.pipe(
|
||||
switchMap((startKey) =>
|
||||
this._rpcCore.state.getKeysPaged(headKey, PAGE_SIZE_KEYS, startKey).pipe(
|
||||
map((keys) => keys.map((key) => key.setMeta(meta)))
|
||||
)
|
||||
),
|
||||
tap((keys): void => {
|
||||
keys.length === PAGE_SIZE_KEYS
|
||||
? startSubject.next(keys[PAGE_SIZE_KEYS - 1].toHex())
|
||||
: startSubject.complete();
|
||||
}),
|
||||
toArray(), // toArray since we want to startSubject to be completed
|
||||
map((keysArr: StorageKey[][]) => keysArr.reduce((result: StorageKey[], keys) => result.concat(keys), []))
|
||||
);
|
||||
}
|
||||
|
||||
private _retrieveMapKeysPaged ({ iterKey, meta }: StorageEntry, opts: PaginationOptions): Observable<StorageKey[]> {
|
||||
assert(iterKey && (meta.type.isMap || meta.type.isDoubleMap), 'keys can only be retrieved on maps, linked maps and double maps');
|
||||
|
||||
const headKey = iterKey(opts.arg).toHex();
|
||||
const getKeysPaged = this._rpcCore.state.getKeysPaged;
|
||||
|
||||
assert(getKeysPaged, 'Pagination not supported by the chain');
|
||||
|
||||
return getKeysPaged(headKey, opts.pageSize, opts.startKey || headKey).pipe(
|
||||
return this._rpcCore.state.getKeysPaged(headKey, opts.pageSize, opts.startKey || headKey).pipe(
|
||||
map((keys) => keys.map((key) => key.setMeta(meta)))
|
||||
);
|
||||
}
|
||||
@@ -535,13 +529,11 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
of(keys),
|
||||
...Array(Math.ceil(keys.length / PAGE_SIZE_VALS))
|
||||
.fill(0)
|
||||
.map((_, index): Observable<Codec[]> => {
|
||||
const keyset = keys.slice(index * PAGE_SIZE_VALS, (index * PAGE_SIZE_VALS) + PAGE_SIZE_VALS);
|
||||
|
||||
return this._rpcCore.state.queryStorageAt
|
||||
? this._rpcCore.state.queryStorageAt<Codec[]>(keyset)
|
||||
: this._rpcCore.state.subscribeStorage<Codec[]>(keyset).pipe(take(1));
|
||||
})
|
||||
.map((_, index): Observable<Codec[]> =>
|
||||
this._rpcCore.state.queryStorageAt<Codec[]>(
|
||||
keys.slice(index * PAGE_SIZE_VALS, (index * PAGE_SIZE_VALS) + PAGE_SIZE_VALS)
|
||||
)
|
||||
)
|
||||
])
|
||||
),
|
||||
map(([keys, ...valsArr]): [StorageKey, Codec][] =>
|
||||
@@ -557,9 +549,7 @@ export default abstract class Decorate<ApiType extends ApiTypes> extends Events
|
||||
switchMap((keys) =>
|
||||
combineLatest<[StorageKey[], ...Codec[][]]>([
|
||||
of(keys),
|
||||
this._rpcCore.state.queryStorageAt
|
||||
? this._rpcCore.state.queryStorageAt<Codec[]>(keys)
|
||||
: this._rpcCore.state.subscribeStorage<Codec[]>(keys).pipe(take(1))
|
||||
this._rpcCore.state.queryStorageAt<Codec[]>(keys)
|
||||
])
|
||||
),
|
||||
map(([keys, ...valsArr]): [StorageKey, Codec][] =>
|
||||
|
||||
@@ -2,31 +2,30 @@
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { AnyFunction, Callback, Codec } from '@polkadot/types/types';
|
||||
import { ApiOptions, DecorateMethodOptions, ObsInnerType, StorageEntryPromiseOverloads, UnsubscribePromise } from '../types';
|
||||
import { Callback, Codec } from '@polkadot/types/types';
|
||||
import { ApiOptions, DecorateFn, DecorateMethodOptions, ObsInnerType, StorageEntryPromiseOverloads, UnsubscribePromise, VoidFn } from '../types';
|
||||
|
||||
import { Observable, EMPTY } from 'rxjs';
|
||||
import { catchError, first, tap } from 'rxjs/operators';
|
||||
import { EMPTY, Observable, Subscription } from 'rxjs';
|
||||
import { catchError, tap } from 'rxjs/operators';
|
||||
import { isFunction, assert } from '@polkadot/util';
|
||||
|
||||
import ApiBase from '../base';
|
||||
import Combinator, { CombinatorCallback, CombinatorFunction } from './Combinator';
|
||||
|
||||
interface Tracker {
|
||||
interface Tracker<T> {
|
||||
reject: (value: Error) => Observable<never>;
|
||||
resolve: (value: () => void) => void;
|
||||
resolve: (value: T) => void;
|
||||
}
|
||||
|
||||
// extract the arguments and callback params from a value array possibly containing a callback
|
||||
function extractArgs (args: any[], needsCallback: boolean): [any[], Callback<Codec> | undefined] {
|
||||
function extractArgs (args: unknown[], needsCallback: boolean): [unknown[], Callback<Codec> | undefined] {
|
||||
let callback: Callback<Codec> | undefined;
|
||||
const actualArgs = args.slice();
|
||||
|
||||
// If the last arg is a function, we pop it, put it into callback.
|
||||
// actualArgs will then hold the actual arguments to be passed to `method`
|
||||
if (args.length && isFunction(args[args.length - 1])) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
callback = actualArgs.pop();
|
||||
callback = actualArgs.pop() as Callback<Codec>;
|
||||
}
|
||||
|
||||
// When we need a subscription, ensure that a valid callback is actually passed
|
||||
@@ -36,64 +35,75 @@ function extractArgs (args: any[], needsCallback: boolean): [any[], Callback<Cod
|
||||
}
|
||||
|
||||
// a Promise completion tracker, wrapping an isComplete variable that ensures the promise only resolves once
|
||||
function promiseTracker (resolve: (value: () => void) => void, reject: (value: Error) => void): Tracker {
|
||||
function promiseTracker<T> (resolve: (value: T) => void, reject: (value: Error) => void): Tracker<T> {
|
||||
let isCompleted = false;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
const complete = (fn: Function, value: any): void => {
|
||||
if (!isCompleted) {
|
||||
isCompleted = true;
|
||||
|
||||
fn(value);
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
reject: (error: Error): Observable<never> => {
|
||||
complete(reject, error);
|
||||
if (!isCompleted) {
|
||||
isCompleted = true;
|
||||
|
||||
reject(error);
|
||||
}
|
||||
|
||||
return EMPTY;
|
||||
},
|
||||
resolve: (value: any): void => {
|
||||
complete(resolve, value);
|
||||
resolve: (value: T): void => {
|
||||
if (!isCompleted) {
|
||||
isCompleted = true;
|
||||
|
||||
resolve(value);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Decorate a call for a single-shot result - retrieve and then immediate unsubscribe
|
||||
function decorateCall<Method extends DecorateFn<ObsInnerType<ReturnType<Method>>>> (method: Method, actualArgs: unknown[]): Promise<ObsInnerType<ReturnType<Method>>> {
|
||||
return new Promise((resolve, reject): void => {
|
||||
// single result tracker - either reject with Error or resolve with Codec result
|
||||
const tracker = promiseTracker(resolve, reject);
|
||||
|
||||
// errors reject immediately, any result unsubscribes and resolves
|
||||
const subscription: Subscription = method(...actualArgs).pipe(
|
||||
catchError((error) => tracker.reject(error))
|
||||
).subscribe((result): void => {
|
||||
tracker.resolve(result);
|
||||
setImmediate(() => subscription.unsubscribe());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Decorate a subscription where we have a result callback specified
|
||||
function decorateSubscribe<Method extends DecorateFn<ObsInnerType<ReturnType<Method>>>> (method: Method, actualArgs: unknown[], resultCb: Callback<Codec>): UnsubscribePromise {
|
||||
return new Promise<VoidFn>((resolve, reject): void => {
|
||||
// either reject with error or resolve with unsubscribe callback
|
||||
const tracker = promiseTracker(resolve, reject);
|
||||
|
||||
// errors reject immediately, the first result resolves with an unsubscribe promise, all results via callback
|
||||
const subscription: Subscription = method(...actualArgs).pipe(
|
||||
catchError((error) => tracker.reject(error)),
|
||||
tap(() => tracker.resolve(() => subscription.unsubscribe()))
|
||||
).subscribe((result): void => {
|
||||
// We use setImmediate here to ensure that the Promise above (tracker) has resolved, before returning
|
||||
// the first result. By putting is back in the queue, the promise above is guarded for first execution
|
||||
setImmediate(() => resultCb(result) as void);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Decorate method for ApiPromise, where the results are converted to the Promise equivalent
|
||||
*/
|
||||
export function decorateMethod<Method extends AnyFunction> (method: Method, options?: DecorateMethodOptions): StorageEntryPromiseOverloads {
|
||||
export function decorateMethod<Method extends DecorateFn<ObsInnerType<ReturnType<Method>>>> (method: Method, options?: DecorateMethodOptions): StorageEntryPromiseOverloads {
|
||||
const needsCallback = options && options.methodName && options.methodName.includes('subscribe');
|
||||
|
||||
return function (...args: any[]): Promise<ObsInnerType<ReturnType<Method>>> | UnsubscribePromise {
|
||||
const [actualArgs, callback] = extractArgs(args, !!needsCallback);
|
||||
return function (...args: unknown[]): Promise<ObsInnerType<ReturnType<Method>>> | UnsubscribePromise {
|
||||
const [actualArgs, resultCb] = extractArgs(args, !!needsCallback);
|
||||
|
||||
if (!callback) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
||||
return method(...actualArgs).pipe(first()).toPromise() as Promise<ObsInnerType<ReturnType<Method>>>;
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject): void => {
|
||||
const tracker = promiseTracker(resolve, reject);
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||
const subscription: { unsubscribe: () => void } = method(...actualArgs).pipe(
|
||||
// if we find an error (invalid params, etc), reject the promise
|
||||
catchError((error): Observable<never> => tracker.reject(error)),
|
||||
// upon the first result, resolve with the unsub function
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
|
||||
tap(() => tracker.resolve(() => subscription.unsubscribe()))
|
||||
).subscribe((result: any): void => {
|
||||
if (setImmediate) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||
setImmediate(() => callback(result) as void);
|
||||
} else {
|
||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||
callback(result);
|
||||
}
|
||||
});
|
||||
}) as UnsubscribePromise;
|
||||
return resultCb
|
||||
? decorateSubscribe(method, actualArgs, resultCb)
|
||||
: decorateCall((options?.overrideNoSub as Method) || method, actualArgs);
|
||||
} as StorageEntryPromiseOverloads;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { AnyFunction } from '@polkadot/types/types';
|
||||
import { ApiOptions } from '../types';
|
||||
import { Codec } from '@polkadot/types/types';
|
||||
import { ApiOptions, DecorateFn } from '../types';
|
||||
|
||||
import { from, Observable } from 'rxjs';
|
||||
|
||||
import ApiBase from '../base';
|
||||
|
||||
export function decorateMethod <Method extends AnyFunction> (method: Method): Method {
|
||||
export function decorateMethod <Method extends DecorateFn<Codec>> (method: Method): Method {
|
||||
return method;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 { Observable } from 'rxjs';
|
||||
import type { Observable } from 'rxjs';
|
||||
import { AnyFunction, Callback, Codec, CodecArg } from '@polkadot/types/types';
|
||||
|
||||
// Prepend an element V onto the beginning of a tuple T.
|
||||
@@ -30,7 +30,9 @@ export type ApiTypes = 'promise' | 'rxjs';
|
||||
// Returns the inner type of an Observable
|
||||
export type ObsInnerType<O extends Observable<any>> = O extends Observable<infer U> ? U : never;
|
||||
|
||||
export type UnsubscribePromise = Promise<() => void>;
|
||||
export type VoidFn = () => void;
|
||||
|
||||
export type UnsubscribePromise = Promise<VoidFn>;
|
||||
|
||||
// FIXME The day TS has higher-kinded types, we can remove this hardcoded stuff
|
||||
export type PromiseOrObs<ApiType extends ApiTypes, T> = ApiType extends 'rxjs'
|
||||
@@ -66,10 +68,13 @@ export type MethodResult<ApiType extends ApiTypes, F extends AnyFunction> = ApiT
|
||||
// information. This describes it.
|
||||
export interface DecorateMethodOptions {
|
||||
methodName?: string;
|
||||
overrideNoSub?: (...args: unknown[]) => Observable<Codec>;
|
||||
}
|
||||
|
||||
export interface PaginationOptions {
|
||||
arg?: CodecArg;
|
||||
export type DecorateFn <T extends Codec> = (...args: any[]) => Observable<T>;
|
||||
|
||||
export interface PaginationOptions<ArgType = CodecArg> {
|
||||
arg?: ArgType;
|
||||
pageSize: number;
|
||||
startKey?: string;
|
||||
}
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
// Augment the modules
|
||||
import '@polkadot/api/augment';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import type BN from 'bn.js';
|
||||
import { DeriveCustom, ExactDerive } from '@polkadot/api-derive';
|
||||
import { Constants } from '@polkadot/metadata/Decorated/types';
|
||||
import { RpcInterface } from '@polkadot/rpc-core/types';
|
||||
import { ProviderInterface, ProviderInterfaceEmitted } from '@polkadot/rpc-provider/types';
|
||||
import { Metadata } from '@polkadot/types';
|
||||
import { Hash, RuntimeVersion } from '@polkadot/types/interfaces';
|
||||
import { DefinitionRpc, DefinitionRpcSub, Signer, SignatureOptions, Registry, RegisteredTypes } from '@polkadot/types/types';
|
||||
@@ -18,7 +19,6 @@ import ApiBase from '../base';
|
||||
import { DecoratedRpc } from './rpc';
|
||||
import { QueryableStorage, QueryableStorageMulti } from './storage';
|
||||
import { SubmittableExtrinsics } from './submittable';
|
||||
import { ProviderInterface, ProviderInterfaceEmitted } from '@polkadot/rpc-provider/types';
|
||||
|
||||
export { Signer, SignerResult } from '@polkadot/types/types';
|
||||
export { default as ApiBase } from '../base';
|
||||
|
||||
@@ -28,20 +28,19 @@ export type QueryableStorageEntry<ApiType extends ApiTypes> =
|
||||
export interface StorageEntryBase<ApiType extends ApiTypes, F extends AnyFunction> {
|
||||
at: <T extends Codec | any = ObsInnerType<ReturnType<F>>>(hash: Hash | Uint8Array | string, ...args: Parameters<F>) => PromiseOrObs<ApiType, T>;
|
||||
creator: StorageEntry;
|
||||
entries: <T extends Codec | any = ObsInnerType<ReturnType<F>>>(arg?: any) => PromiseOrObs<ApiType, [StorageKey, T][]>;
|
||||
entriesPaged: <T extends Codec | any = ObsInnerType<ReturnType<F>>>(opts: PaginationOptions) => PromiseOrObs<ApiType, [StorageKey, T][]>;
|
||||
entries: <T extends Codec | any = ObsInnerType<ReturnType<F>>>(arg?: Parameters<F>[0]) => PromiseOrObs<ApiType, [StorageKey, T][]>;
|
||||
entriesPaged: <T extends Codec | any = ObsInnerType<ReturnType<F>>>(opts: PaginationOptions<Parameters<F>[0]>) => PromiseOrObs<ApiType, [StorageKey, T][]>;
|
||||
hash: (...args: Parameters<F>) => PromiseOrObs<ApiType, Hash>;
|
||||
key: (...args: Parameters<F>) => string;
|
||||
keyPrefix: () => string;
|
||||
keys: (arg?: any) => PromiseOrObs<ApiType, StorageKey[]>;
|
||||
keysPaged: (opts: PaginationOptions) => PromiseOrObs<ApiType, StorageKey[]>;
|
||||
keysPaged: (opts: PaginationOptions<Parameters<F>[0]>) => PromiseOrObs<ApiType, StorageKey[]>;
|
||||
range: <T extends Codec | any = ObsInnerType<ReturnType<F>>>([from, to]: [Hash | Uint8Array | string, Hash | Uint8Array | string | undefined] | [Hash | Uint8Array | string], ...args: Parameters<F>) => PromiseOrObs<ApiType, [Hash, T][]>;
|
||||
size: (...args: Parameters<F>) => PromiseOrObs<ApiType, u64>;
|
||||
multi: ApiType extends 'rxjs' ? StorageEntryObservableMulti : StorageEntryPromiseMulti;
|
||||
}
|
||||
|
||||
export interface StorageEntryDoubleMap<ApiType extends ApiTypes, F extends AnyFunction> extends StorageEntryBase<ApiType, F> {
|
||||
entries: <T extends Codec | any = ObsInnerType<ReturnType<F>>>(arg?: Parameters<F>[0]) => PromiseOrObs<ApiType, [StorageKey, T][]>;
|
||||
keyPrefix: (key1?: Parameters<F>[0]) => string;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ function extractKeys (src: Record<string, Record<string, any>>, dst: Record<stri
|
||||
}
|
||||
|
||||
function findSectionExcludes (a: string[], b: string[]): string[] {
|
||||
return a.filter((section): boolean => !b.includes(section));
|
||||
return a.filter((section) => !b.includes(section));
|
||||
}
|
||||
|
||||
function extractSections (src: Record<string, Record<string, any>>, dst: Record<string, Record<string, any>>): StringsStrings {
|
||||
@@ -49,15 +49,15 @@ function findMethodExcludes (src: Record<string, Record<string, any>>, dst: Reco
|
||||
const dstSections = Object.keys(dst);
|
||||
|
||||
return dstSections
|
||||
.filter((section): boolean => srcSections.includes(section))
|
||||
.filter((section) => srcSections.includes(section))
|
||||
.reduce((rmMethods: string[], section): string[] => {
|
||||
const srcMethods = Object.keys(src[section]);
|
||||
|
||||
return rmMethods.concat(
|
||||
...Object
|
||||
.keys(dst[section])
|
||||
.filter((method): boolean => !srcMethods.includes(method))
|
||||
.map((method): string => `${section}.${method}`)
|
||||
.filter((method) => !srcMethods.includes(method))
|
||||
.map((method) => `${section}.${method}`)
|
||||
);
|
||||
}, []);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ export default function filterEvents (extHash: H256, { block: { extrinsics, head
|
||||
return;
|
||||
}
|
||||
|
||||
return allEvents.filter(({ phase }): boolean =>
|
||||
return allEvents.filter(({ phase }) =>
|
||||
// only ApplyExtrinsic has the extrinsic index
|
||||
phase.isApplyExtrinsic && phase.asApplyExtrinsic.eqn(index)
|
||||
);
|
||||
|
||||
@@ -11,7 +11,7 @@ function sig ({ method, section }: StorageEntry, ...args: Type[]): string {
|
||||
return `${section}.${method}(${args.join(', ')})`;
|
||||
}
|
||||
|
||||
function doDoubleMap (creator: StorageEntry, args: any[]): [StorageEntry, [any, any]] {
|
||||
function doDoubleMap (creator: StorageEntry, args: unknown[]): [StorageEntry, [any, any]] {
|
||||
const { key1, key2 } = creator.meta.type.asDoubleMap;
|
||||
|
||||
assert(args.length === 2, `${sig(creator, key1, key2)} is a doublemap, requiring 2 arguments, ${args.length} found`);
|
||||
@@ -20,7 +20,7 @@ function doDoubleMap (creator: StorageEntry, args: any[]): [StorageEntry, [any,
|
||||
return [creator, args as [any, any]];
|
||||
}
|
||||
|
||||
function doMap (creator: StorageEntry, args: any[]): [StorageEntry] | [StorageEntry, any] {
|
||||
function doMap (creator: StorageEntry, args: unknown[]): [StorageEntry] | [StorageEntry, any] {
|
||||
const { key, linked } = creator.meta.type.asMap;
|
||||
|
||||
linked.isTrue
|
||||
@@ -35,7 +35,7 @@ function doMap (creator: StorageEntry, args: any[]): [StorageEntry] | [StorageEn
|
||||
|
||||
// sets up the arguments in the form of [creator, args] ready to be used in a storage
|
||||
// call. Additionally, it verifies that the correct number of arguments have been passed
|
||||
export function extractStorageArgs (creator: StorageEntry, _args: any[]): [StorageEntry, [any, any]] | [StorageEntry] | [StorageEntry, any] {
|
||||
export function extractStorageArgs (creator: StorageEntry, _args: unknown[]): [StorageEntry, [any, any]] | [StorageEntry] | [StorageEntry, any] {
|
||||
const args = _args.filter((arg) => !isUndefined(arg));
|
||||
|
||||
if (creator.meta.type.isDoubleMap) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/metadata",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "Helpers to extract information from runtime metadata",
|
||||
"main": "index.js",
|
||||
"publishConfig": {
|
||||
@@ -26,14 +26,14 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/type-metadata#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/types-known": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@polkadot/util-crypto": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/types-known": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"@polkadot/util-crypto": "^2.18.1",
|
||||
"bn.js": "^5.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^2.13.1"
|
||||
"@polkadot/keyring": "^2.18.1"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -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 { FunctionMetadataV11, FunctionMetadataLatest, MetadataV11, MetadataLatest, ModuleMetadataLatest, StorageMetadataV11, StorageMetadataLatest, StorageEntryMetadataLatest } from '@polkadot/types/interfaces/metadata';
|
||||
import { EventMetadataV11, EventMetadataLatest, FunctionMetadataV11, FunctionMetadataLatest, MetadataV11, MetadataLatest, ModuleMetadataLatest, StorageMetadataV11, StorageMetadataLatest, StorageEntryMetadataLatest } from '@polkadot/types/interfaces/metadata';
|
||||
import { Registry, OverrideModuleType } from '@polkadot/types/types';
|
||||
|
||||
import { getModuleTypes } from '@polkadot/types-known';
|
||||
@@ -35,6 +35,18 @@ function convertCalls (registry: Registry, calls: FunctionMetadataV11[], section
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply module-specific type overrides (always be done as part of toLatest)
|
||||
* @internal
|
||||
**/
|
||||
function convertEvents (registry: Registry, events: EventMetadataV11[], sectionTypes: OverrideModuleType): EventMetadataLatest[] {
|
||||
return events.map(({ args, documentation, name }): EventMetadataLatest => {
|
||||
args.forEach((type): void => setTypeOverride(sectionTypes, type));
|
||||
|
||||
return registry.createType('EventMetadataLatest', { args, documentation, name });
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply module-specific storage type overrides (always part of toLatest)
|
||||
* @internal
|
||||
@@ -70,6 +82,7 @@ export default function toLatest (registry: Registry, { extrinsic, modules }: Me
|
||||
extrinsic,
|
||||
modules: modules.map((mod): ModuleMetadataLatest => {
|
||||
const calls = mod.calls.unwrapOr(null);
|
||||
const events = mod.events.unwrapOr(null);
|
||||
const storage = mod.storage.unwrapOr(null);
|
||||
const sectionTypes = getModuleTypes(registry, stringCamelCase(mod.name.toString()));
|
||||
|
||||
@@ -78,6 +91,9 @@ export default function toLatest (registry: Registry, { extrinsic, modules }: Me
|
||||
calls: calls
|
||||
? convertCalls(registry, calls, sectionTypes)
|
||||
: null,
|
||||
events: events
|
||||
? convertEvents(registry, events, sectionTypes)
|
||||
: null,
|
||||
storage: storage
|
||||
? convertStorage(registry, storage, sectionTypes)
|
||||
: null
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/rpc-core",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "A JavaScript wrapper for the Polkadot JsonRPC interface",
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
@@ -26,15 +26,15 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-core#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/metadata": "1.18.1",
|
||||
"@polkadot/rpc-provider": "1.18.1",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/metadata": "1.24.1",
|
||||
"@polkadot/rpc-provider": "1.24.1",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"memoizee": "^0.4.14",
|
||||
"rxjs": "^6.5.5"
|
||||
"rxjs": "^6.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^2.13.1"
|
||||
"@polkadot/keyring": "^2.18.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,15 @@ import { combineLatest, from, Observable, Observer, of, throwError } from 'rxjs'
|
||||
import { catchError, map, publishReplay, refCount, switchMap } from 'rxjs/operators';
|
||||
import jsonrpc from '@polkadot/types/interfaces/jsonrpc';
|
||||
import { Option, StorageKey, Vec, createClass, createTypeUnsafe } from '@polkadot/types';
|
||||
import { assert, hexToU8a, isFunction, isNull, isNumber, isUndefined, logger, u8aToU8a } from '@polkadot/util';
|
||||
import { assert, hexToU8a, isFunction, isNull, isUndefined, logger, u8aToU8a } from '@polkadot/util';
|
||||
|
||||
import { drr } from './rxjs';
|
||||
|
||||
interface StorageChangeSetJSON {
|
||||
block: string;
|
||||
changes: [string, string | null][];
|
||||
}
|
||||
|
||||
const l = logger('rpc-core');
|
||||
|
||||
const EMPTY_META = {
|
||||
@@ -75,8 +80,6 @@ export default class Rpc implements RpcInterface {
|
||||
// these via the createInterfaces inside the constructor. However... this is not quite visible. The reason
|
||||
// why we don't do for individual assignments is to allow user-defined RPCs to also be defined
|
||||
|
||||
public readonly account!: RpcInterface['account'];
|
||||
|
||||
public readonly author!: RpcInterface['author'];
|
||||
|
||||
public readonly babe!: RpcInterface['babe'];
|
||||
@@ -212,7 +215,7 @@ export default class Rpc implements RpcInterface {
|
||||
}
|
||||
|
||||
// create a subscriptor, it subscribes once and resolves with the id as subscribe
|
||||
private _createSubscriber ({ paramsJson, subName, subType, update }: { subType: string; subName: string; paramsJson: AnyJson[]; update: ProviderInterfaceCallback }, errorHandler: (error: Error) => void): Promise<number> {
|
||||
private _createSubscriber ({ paramsJson, subName, subType, update }: { subType: string; subName: string; paramsJson: AnyJson[]; update: ProviderInterfaceCallback }, errorHandler: (error: Error) => void): Promise<number | string> {
|
||||
return new Promise((resolve, reject): void => {
|
||||
this.provider
|
||||
.subscribe(subType, subName, paramsJson, update)
|
||||
@@ -229,11 +232,12 @@ export default class Rpc implements RpcInterface {
|
||||
const subName = `${section}_${subMethod}`;
|
||||
const unsubName = `${section}_${unsubMethod}`;
|
||||
const subType = `${section}_${updateType}`;
|
||||
let memoized: null | RpcInterfaceMethod & memoizee.Memoized<RpcInterfaceMethod> = null;
|
||||
|
||||
const creator = (isRaw: boolean) => (...values: any[]): Observable<any> => {
|
||||
const creator = (isRaw: boolean) => (...values: unknown[]): Observable<any> => {
|
||||
return new Observable((observer: Observer<any>): VoidCallback => {
|
||||
// Have at least an empty promise, as used in the unsubscribe
|
||||
let subscriptionPromise: Promise<number | void> = Promise.resolve();
|
||||
let subscriptionPromise: Promise<number | string | null> = Promise.resolve(null);
|
||||
|
||||
const errorHandler = (error: Error): void => {
|
||||
logErrorMessage(method, def, error);
|
||||
@@ -279,22 +283,21 @@ export default class Rpc implements RpcInterface {
|
||||
// api.query.system.account(addr1).subscribe(); // will output 6 instead of 7 if we don't clear cache
|
||||
// // that's because all our observables are replay(1)
|
||||
// ```
|
||||
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||||
memoized.delete(...values);
|
||||
memoized && memoized.delete(...values);
|
||||
|
||||
// Unsubscribe from provider
|
||||
subscriptionPromise
|
||||
.then((subscriptionId): Promise<boolean> =>
|
||||
isNumber(subscriptionId)
|
||||
? this.provider.unsubscribe(subType, unsubName, subscriptionId)
|
||||
: Promise.resolve(false)
|
||||
isNull(subscriptionId)
|
||||
? Promise.resolve(false)
|
||||
: this.provider.unsubscribe(subType, unsubName, subscriptionId)
|
||||
)
|
||||
.catch((error: Error): void => logErrorMessage(method, def, error));
|
||||
.catch((error: Error) => logErrorMessage(method, def, error));
|
||||
};
|
||||
}).pipe(drr());
|
||||
};
|
||||
|
||||
const memoized = memoizee(this._createMethodWithRaw(creator), {
|
||||
memoized = memoizee(this._createMethodWithRaw(creator), {
|
||||
// Dynamic length for argument
|
||||
length: false,
|
||||
// Normalize args so that different args that should be cached
|
||||
@@ -341,10 +344,10 @@ export default class Rpc implements RpcInterface {
|
||||
const keys = params[0] as Vec<StorageKey>;
|
||||
|
||||
return keys
|
||||
? this._formatStorageSet(keys, (result as { changes: [string, string | null][] }).changes)
|
||||
? this._formatStorageSet(keys, (result as StorageChangeSetJSON).changes)
|
||||
: this.registry.createType('StorageChangeSet', result);
|
||||
} else if (rpc.type === 'Vec<StorageChangeSet>') {
|
||||
const mapped = (result as { block: string; changes: [string, string | null][] }[]).map(({ block, changes }): [Hash, Codec[]] => [
|
||||
const mapped = (result as StorageChangeSetJSON[]).map(({ block, changes }): [Hash, Codec[]] => [
|
||||
this.registry.createType('Hash', block),
|
||||
this._formatStorageSet(params[0] as Vec<StorageKey>, changes)
|
||||
]);
|
||||
|
||||
@@ -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 { asapScheduler, ConnectableObservable, MonoTypeOperatorFunction, Observable, Subscription } from 'rxjs';
|
||||
import { asapScheduler, ConnectableObservable, MonoTypeOperatorFunction, Observable, Subscription, TeardownLogic } from 'rxjs';
|
||||
|
||||
const DELAY = 1750;
|
||||
|
||||
@@ -11,7 +11,7 @@ function refCountDelayInner <T> (source: Observable<T>): Observable<T> {
|
||||
// state: 0 = disconnected, 1 = disconnecting, 2 = connecting, 3 = connected
|
||||
let [state, refCount, connection, scheduler] = [0, 0, Subscription.EMPTY, Subscription.EMPTY];
|
||||
|
||||
return new Observable((ob) => {
|
||||
return new Observable((ob): TeardownLogic => {
|
||||
source.subscribe(ob);
|
||||
|
||||
if (refCount++ === 0) {
|
||||
@@ -27,12 +27,14 @@ function refCountDelayInner <T> (source: Observable<T>): Observable<T> {
|
||||
return (): void => {
|
||||
if (--refCount === 0) {
|
||||
if (state === 2) {
|
||||
state = 0; scheduler.unsubscribe();
|
||||
state = 0;
|
||||
scheduler.unsubscribe();
|
||||
} else {
|
||||
// state === 3
|
||||
state = 1;
|
||||
scheduler = asapScheduler.schedule((): void => {
|
||||
state = 0; connection.unsubscribe();
|
||||
state = 0;
|
||||
connection.unsubscribe();
|
||||
}, DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/rpc-provider",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "Transport providers for the API",
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
@@ -26,19 +26,19 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-provider#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/metadata": "1.18.1",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@polkadot/util-crypto": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/metadata": "1.24.1",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"@polkadot/util-crypto": "^2.18.1",
|
||||
"bn.js": "^5.1.2",
|
||||
"eventemitter3": "^4.0.4",
|
||||
"isomorphic-fetch": "^2.2.1",
|
||||
"websocket": "^1.0.31"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^2.13.1",
|
||||
"@polkadot/keyring": "^2.18.1",
|
||||
"mock-socket": "^9.0.3",
|
||||
"nock": "^12.0.3"
|
||||
"nock": "^13.0.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,6 +49,6 @@ export interface ProviderInterface {
|
||||
isConnected (): boolean;
|
||||
on (type: ProviderInterfaceEmitted, sub: ProviderInterfaceEmitCb): () => void;
|
||||
send (method: string, params: any[]): Promise<any>;
|
||||
subscribe (type: string, method: string, params: any[], cb: ProviderInterfaceCallback): Promise<number>;
|
||||
unsubscribe (type: string, method: string, id: number): Promise<boolean>;
|
||||
subscribe (type: string, method: string, params: any[], cb: ProviderInterfaceCallback): Promise<number | string>;
|
||||
unsubscribe (type: string, method: string, id: number | string): Promise<boolean>;
|
||||
}
|
||||
|
||||
@@ -247,8 +247,8 @@ export default class WsProvider implements WSProviderInterface {
|
||||
* })
|
||||
* ```
|
||||
*/
|
||||
public async subscribe (type: string, method: string, params: any[], callback: ProviderInterfaceCallback): Promise<number> {
|
||||
const id = await this.send(method, params, { callback, type }) as Promise<number>;
|
||||
public async subscribe (type: string, method: string, params: any[], callback: ProviderInterfaceCallback): Promise<number | string> {
|
||||
const id = await this.send(method, params, { callback, type }) as Promise<number | string>;
|
||||
|
||||
return id;
|
||||
}
|
||||
@@ -256,7 +256,7 @@ export default class WsProvider implements WSProviderInterface {
|
||||
/**
|
||||
* @summary Allows unsubscribing to subscriptions made with [[subscribe]].
|
||||
*/
|
||||
public async unsubscribe (type: string, method: string, id: number): Promise<boolean> {
|
||||
public async unsubscribe (type: string, method: string, id: number | string): Promise<boolean> {
|
||||
const subscription = `${type}::${id}`;
|
||||
|
||||
// FIXME This now could happen with re-subscriptions. The issue is that with a re-sub
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/typegen",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "Type generation scripts",
|
||||
"main": "index.js",
|
||||
"bin": {
|
||||
@@ -33,20 +33,20 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/typegen#readme",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.10.2",
|
||||
"@babel/register": "^7.10.1",
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/api": "1.18.1",
|
||||
"@polkadot/metadata": "1.18.1",
|
||||
"@polkadot/rpc-provider": "1.18.1",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@babel/core": "^7.10.4",
|
||||
"@babel/register": "^7.10.4",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/api": "1.24.1",
|
||||
"@polkadot/metadata": "1.24.1",
|
||||
"@polkadot/rpc-provider": "1.24.1",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"handlebars": "^4.7.6",
|
||||
"websocket": "^1.0.31",
|
||||
"yargs": "^15.3.1"
|
||||
"yargs": "^15.4.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/websocket": "^1.0.0",
|
||||
"@types/websocket": "^1.0.1",
|
||||
"@types/yargs": "^15.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/types-known",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "A JavaScript wrapper for the Polkadot JsonRPC interface",
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
@@ -26,9 +26,9 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/types-known#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/types": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/types": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"bn.js": "^5.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -6,8 +6,11 @@ import { OverrideModuleType } from '@polkadot/types/types';
|
||||
|
||||
// type overrides for modules (where duplication between modules exist)
|
||||
const typesModules: Record<string, OverrideModuleType> = {
|
||||
babe: {
|
||||
EquivocationProof: 'BabeEquivocationProof'
|
||||
},
|
||||
balances: {
|
||||
Releases: 'ReleasesBalances'
|
||||
Status: 'BalanceStatus'
|
||||
},
|
||||
contract: { // old metadata & naming
|
||||
// v2 & v3
|
||||
@@ -16,8 +19,9 @@ const typesModules: Record<string, OverrideModuleType> = {
|
||||
contracts: {
|
||||
StorageKey: 'ContractStorageKey'
|
||||
},
|
||||
democracy: {
|
||||
Releases: 'ReleasesDemocracy'
|
||||
grandpa: {
|
||||
Equivocation: 'GrandpaEquivocation',
|
||||
EquivocationProof: 'GrandpaEquivocationProof'
|
||||
},
|
||||
identity: {
|
||||
Judgement: 'IdentityJudgement'
|
||||
@@ -30,8 +34,7 @@ const typesModules: Record<string, OverrideModuleType> = {
|
||||
Vote: 'SocietyVote'
|
||||
},
|
||||
staking: {
|
||||
Compact: 'CompactAssignments',
|
||||
Releases: 'ReleasesStaking'
|
||||
Compact: 'CompactAssignments'
|
||||
},
|
||||
treasury: {
|
||||
Proposal: 'TreasuryProposal'
|
||||
|
||||
@@ -4,6 +4,15 @@
|
||||
|
||||
import { OverrideVersionedType } from '@polkadot/types/types';
|
||||
|
||||
const sharedTypes = {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
ProxyType: {
|
||||
_enum: ['Any', 'NonTransfer', 'Governance', 'Staking', 'IdentityJudgement']
|
||||
}
|
||||
};
|
||||
|
||||
const versioned: OverrideVersionedType[] = [
|
||||
{
|
||||
// 1020 is first CC3
|
||||
@@ -16,6 +25,7 @@ const versioned: OverrideVersionedType[] = [
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'Address',
|
||||
Multiplier: 'Fixed64',
|
||||
OpenTip: 'OpenTipTo225',
|
||||
ReferendumInfo: 'ReferendumInfoTo239',
|
||||
SlashingSpans: 'SlashingSpansTo204',
|
||||
StakingLedger: 'StakingLedgerTo223',
|
||||
@@ -32,6 +42,7 @@ const versioned: OverrideVersionedType[] = [
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'Address',
|
||||
Multiplier: 'Fixed64',
|
||||
OpenTip: 'OpenTipTo225',
|
||||
ReferendumInfo: 'ReferendumInfoTo239',
|
||||
SlashingSpans: 'SlashingSpansTo204',
|
||||
StakingLedger: 'StakingLedgerTo223',
|
||||
@@ -49,6 +60,7 @@ const versioned: OverrideVersionedType[] = [
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'Address',
|
||||
Multiplier: 'Fixed64',
|
||||
OpenTip: 'OpenTipTo225',
|
||||
ReferendumInfo: 'ReferendumInfoTo239',
|
||||
StakingLedger: 'StakingLedgerTo223',
|
||||
Votes: 'VotesTo230',
|
||||
@@ -59,11 +71,10 @@ const versioned: OverrideVersionedType[] = [
|
||||
minmax: [1046, 1054],
|
||||
types: {
|
||||
// Indices optional, not in transaction
|
||||
Address: 'AccountId',
|
||||
...sharedTypes,
|
||||
DispatchInfo: 'DispatchInfoTo244',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
Multiplier: 'Fixed64',
|
||||
OpenTip: 'OpenTipTo225',
|
||||
ReferendumInfo: 'ReferendumInfoTo239',
|
||||
StakingLedger: 'StakingLedgerTo240',
|
||||
Weight: 'u32'
|
||||
@@ -72,11 +83,10 @@ const versioned: OverrideVersionedType[] = [
|
||||
{
|
||||
minmax: [1055, 1056],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
...sharedTypes,
|
||||
DispatchInfo: 'DispatchInfoTo244',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
Multiplier: 'Fixed64',
|
||||
OpenTip: 'OpenTipTo225',
|
||||
StakingLedger: 'StakingLedgerTo240',
|
||||
Weight: 'u32'
|
||||
}
|
||||
@@ -84,18 +94,22 @@ const versioned: OverrideVersionedType[] = [
|
||||
{
|
||||
minmax: [1057, 1061],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
...sharedTypes,
|
||||
DispatchInfo: 'DispatchInfoTo244',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId'
|
||||
OpenTip: 'OpenTipTo225'
|
||||
}
|
||||
},
|
||||
{
|
||||
minmax: [1062, undefined],
|
||||
minmax: [1062, 2012],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId'
|
||||
...sharedTypes,
|
||||
OpenTip: 'OpenTipTo225'
|
||||
}
|
||||
},
|
||||
{
|
||||
minmax: [2013, undefined],
|
||||
types: {
|
||||
...sharedTypes
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@@ -4,25 +4,28 @@
|
||||
|
||||
import { OverrideVersionedType } from '@polkadot/types/types';
|
||||
|
||||
const sharedTypes = {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
ProxyType: {
|
||||
_enum: ['Any', 'NonTransfer', 'Governance', 'Staking', 'SudoBalances', 'IdentityJudgement']
|
||||
}
|
||||
};
|
||||
|
||||
// these are override types for Polkadot
|
||||
const versioned: OverrideVersionedType[] = [
|
||||
{
|
||||
minmax: [0, 3],
|
||||
minmax: [0, 12],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId'
|
||||
...sharedTypes,
|
||||
OpenTip: 'OpenTipTo225'
|
||||
}
|
||||
},
|
||||
{
|
||||
minmax: [4, undefined],
|
||||
minmax: [13, undefined],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
ProxyType: {
|
||||
_enum: ['Any', 'NonTransfer', 'Governance', 'Staking', 'SudoBalances']
|
||||
}
|
||||
...sharedTypes
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@@ -4,34 +4,36 @@
|
||||
|
||||
import { OverrideVersionedType } from '@polkadot/types/types';
|
||||
|
||||
const sharedTypes = {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
ProxyType: {
|
||||
_enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances', 'IdentityJudgement']
|
||||
}
|
||||
};
|
||||
|
||||
const versioned: OverrideVersionedType[] = [
|
||||
{
|
||||
minmax: [1, 2],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
...sharedTypes,
|
||||
Multiplier: 'Fixed64',
|
||||
OpenTip: 'OpenTipTo225',
|
||||
Weight: 'u32'
|
||||
}
|
||||
},
|
||||
{
|
||||
minmax: [3, 19],
|
||||
minmax: [3, 22],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId'
|
||||
...sharedTypes,
|
||||
OpenTip: 'OpenTipTo225'
|
||||
}
|
||||
},
|
||||
{
|
||||
minmax: [20, undefined],
|
||||
minmax: [23, undefined],
|
||||
types: {
|
||||
Address: 'AccountId',
|
||||
Keys: 'SessionKeys5',
|
||||
LookupSource: 'AccountId',
|
||||
ProxyType: {
|
||||
_enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances']
|
||||
}
|
||||
...sharedTypes
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/types",
|
||||
"version": "1.18.1",
|
||||
"version": "1.24.1",
|
||||
"description": "Implementation of the Parity codec",
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
@@ -26,17 +26,17 @@
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/types#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.2",
|
||||
"@polkadot/metadata": "1.18.1",
|
||||
"@polkadot/util": "^2.13.1",
|
||||
"@polkadot/util-crypto": "^2.13.1",
|
||||
"@babel/runtime": "^7.10.4",
|
||||
"@polkadot/metadata": "1.24.1",
|
||||
"@polkadot/util": "^2.18.1",
|
||||
"@polkadot/util-crypto": "^2.18.1",
|
||||
"@types/bn.js": "^4.11.6",
|
||||
"bn.js": "^5.1.2",
|
||||
"memoizee": "^0.4.14",
|
||||
"rxjs": "^6.5.5"
|
||||
"rxjs": "^6.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^2.13.1",
|
||||
"@polkadot/keyring": "^2.18.1",
|
||||
"@types/memoizee": "^0.4.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,39 +7,40 @@ import { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/t
|
||||
import { RawAuraPreDigest } from '@polkadot/types/interfaces/aura';
|
||||
import { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';
|
||||
import { UncleEntryItem } from '@polkadot/types/interfaces/authorship';
|
||||
import { AllowedSlots, BabeAuthorityWeight, BabeBlockWeight, BabeWeight, EpochAuthorship, MaybeRandomness, MaybeVrf, NextConfigDescriptor, NextConfigDescriptorV1, Randomness, RawBabePreDigest, RawBabePreDigestCompat, RawBabePreDigestPrimary, RawBabePreDigestPrimaryTo159, RawBabePreDigestSecondaryPlain, RawBabePreDigestSecondaryTo159, RawBabePreDigestSecondaryVRF, RawBabePreDigestTo159, SlotNumber, VrfData, VrfOutput, VrfProof } from '@polkadot/types/interfaces/babe';
|
||||
import { AccountData, BalanceLock, BalanceLockTo212, Reasons, ReleasesBalances, VestingSchedule, WithdrawReasons } from '@polkadot/types/interfaces/balances';
|
||||
import { AllowedSlots, BabeAuthorityWeight, BabeBlockWeight, BabeEquivocationProof, BabeWeight, EpochAuthorship, MaybeRandomness, MaybeVrf, NextConfigDescriptor, NextConfigDescriptorV1, Randomness, RawBabePreDigest, RawBabePreDigestCompat, RawBabePreDigestPrimary, RawBabePreDigestPrimaryTo159, RawBabePreDigestSecondaryPlain, RawBabePreDigestSecondaryTo159, RawBabePreDigestSecondaryVRF, RawBabePreDigestTo159, SlotNumber, VrfData, VrfOutput, VrfProof } from '@polkadot/types/interfaces/babe';
|
||||
import { AccountData, BalanceLock, BalanceLockTo212, BalanceStatus, Reasons, VestingSchedule, WithdrawReasons } from '@polkadot/types/interfaces/balances';
|
||||
import { BlockHash } from '@polkadot/types/interfaces/chain';
|
||||
import { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';
|
||||
import { EthereumAddress, StatementKind } from '@polkadot/types/interfaces/claims';
|
||||
import { MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective';
|
||||
import { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus';
|
||||
import { AliveContractInfo, CodeHash, ContractCallRequest, ContractExecResult, ContractExecResultSuccess, ContractInfo, ContractStorageKey, Gas, PrefabWasmModule, PrefabWasmModuleReserved, Schedule, ScheduleTo212, SeedOf, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
|
||||
import { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, ReleasesDemocracy, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy';
|
||||
import { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy';
|
||||
import { ApprovalFlag, DefunctVoter, Renouncing, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections';
|
||||
import { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine';
|
||||
import { Account, Log, Vicinity } from '@polkadot/types/interfaces/evm';
|
||||
import { EcdsaSignature, Ed25519Signature, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV1, ExtrinsicPayloadV2, ExtrinsicPayloadV3, ExtrinsicPayloadV4, ExtrinsicSignatureV1, ExtrinsicSignatureV2, ExtrinsicSignatureV3, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV1, ExtrinsicV2, ExtrinsicV3, ExtrinsicV4, ImmortalEra, MortalEra, MultiSignature, Signature, SignerPayload, Sr25519Signature } from '@polkadot/types/interfaces/extrinsics';
|
||||
import { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV1 } from '@polkadot/types/interfaces/genericAsset';
|
||||
import { AuthorityIndex, AuthorityList, AuthorityWeight, Equivocation, EquivocationProof, GrandpaEquivocation, GrandpaPrevote, KeyOwnerProof, NextAuthority, PendingPause, PendingResume, Precommits, Prevotes, ReportedRoundStates, RoundState, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa';
|
||||
import { AuthorityIndex, AuthorityList, AuthorityWeight, GrandpaEquivocation, GrandpaEquivocationProof, GrandpaEquivocationValue, GrandpaPrevote, KeyOwnerProof, NextAuthority, PendingPause, PendingResume, Precommits, Prevotes, ReportedRoundStates, RoundState, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa';
|
||||
import { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement } from '@polkadot/types/interfaces/identity';
|
||||
import { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline';
|
||||
import { CallMetadataV0, DoubleMapTypeLatest, DoubleMapTypeV10, DoubleMapTypeV11, DoubleMapTypeV3, DoubleMapTypeV4, DoubleMapTypeV5, DoubleMapTypeV6, DoubleMapTypeV7, DoubleMapTypeV8, DoubleMapTypeV9, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV8, ErrorMetadataV9, EventMetadataLatest, EventMetadataV0, EventMetadataV1, EventMetadataV10, EventMetadataV11, EventMetadataV2, EventMetadataV3, EventMetadataV4, EventMetadataV5, EventMetadataV6, EventMetadataV7, EventMetadataV8, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV0, FunctionArgumentMetadataV1, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV2, FunctionArgumentMetadataV3, FunctionArgumentMetadataV4, FunctionArgumentMetadataV5, FunctionArgumentMetadataV6, FunctionArgumentMetadataV7, FunctionArgumentMetadataV8, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV0, FunctionMetadataV1, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV2, FunctionMetadataV3, FunctionMetadataV4, FunctionMetadataV5, FunctionMetadataV6, FunctionMetadataV7, FunctionMetadataV8, FunctionMetadataV9, MapTypeLatest, MapTypeV0, MapTypeV10, MapTypeV11, MapTypeV2, MapTypeV3, MapTypeV4, MapTypeV5, MapTypeV6, MapTypeV7, MapTypeV8, MapTypeV9, MetadataAll, MetadataLatest, MetadataV0, MetadataV1, MetadataV10, MetadataV11, MetadataV2, MetadataV3, MetadataV4, MetadataV5, MetadataV6, MetadataV7, MetadataV8, MetadataV9, ModuleConstantMetadataLatest, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV6, ModuleConstantMetadataV7, ModuleConstantMetadataV8, ModuleConstantMetadataV9, ModuleMetadataLatest, ModuleMetadataV0, ModuleMetadataV1, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV2, ModuleMetadataV3, ModuleMetadataV4, ModuleMetadataV5, ModuleMetadataV6, ModuleMetadataV7, ModuleMetadataV8, ModuleMetadataV9, OuterDispatchCallV0, OuterDispatchMetadataV0, OuterEventEventMetadataEventsV0, OuterEventEventMetadataV0, OuterEventMetadataV0, PlainTypeLatest, PlainTypeV0, PlainTypeV10, PlainTypeV11, PlainTypeV2, PlainTypeV3, PlainTypeV4, PlainTypeV5, PlainTypeV6, PlainTypeV7, PlainTypeV8, PlainTypeV9, RuntimeModuleMetadataV0, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV6, StorageEntryMetadataV7, StorageEntryMetadataV8, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV6, StorageEntryModifierV7, StorageEntryModifierV8, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV6, StorageEntryTypeV7, StorageEntryTypeV8, StorageEntryTypeV9, StorageFunctionMetadataV0, StorageFunctionMetadataV1, StorageFunctionMetadataV2, StorageFunctionMetadataV3, StorageFunctionMetadataV4, StorageFunctionMetadataV5, StorageFunctionModifierV0, StorageFunctionModifierV1, StorageFunctionModifierV2, StorageFunctionModifierV3, StorageFunctionModifierV4, StorageFunctionModifierV5, StorageFunctionTypeV0, StorageFunctionTypeV1, StorageFunctionTypeV2, StorageFunctionTypeV3, StorageFunctionTypeV4, StorageFunctionTypeV5, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV4, StorageHasherV5, StorageHasherV6, StorageHasherV7, StorageHasherV8, StorageHasherV9, StorageMetadataLatest, StorageMetadataV0, StorageMetadataV10, StorageMetadataV11, StorageMetadataV7, StorageMetadataV8, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata';
|
||||
import { StorageKind } from '@polkadot/types/interfaces/offchain';
|
||||
import { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences';
|
||||
import { AttestedCandidate, AuctionIndex, Bidder, CandidateReceipt, CollatorId, CollatorSignature, DoubleVoteReport, DoubleVoteReportProof, DoubleVoteReportStatement, EgressQueueRoot, HeadData, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, LeasePeriod, LeasePeriodOf, NewBidder, ParaId, ParaIdOf, ParaInfo, ParaPastCodeMeta, ParaScheduling, ParachainDispatchOrigin, Retriable, SigningContext, SlotRange, Statement, SubId, UpwardMessage, ValidationCode, ValidatorSignature, ValidityAttestation, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains';
|
||||
import { AbridgedCandidateReceipt, AttestedCandidate, AuctionIndex, Bidder, CandidateCommitments, CandidateReceipt, CollatorId, CollatorSignature, DoubleVoteReport, DownwardMessage, GlobalValidationSchedule, HeadData, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, LeasePeriod, LeasePeriodOf, LocalValidationData, NewBidder, ParaId, ParaInfo, ParaPastCodeMeta, ParaScheduling, ParachainDispatchOrigin, Remark, Retriable, Scheduling, SigningContext, SlotRange, Statement, SubId, UpwardMessage, ValidationCode, ValidatorSignature, ValidityAttestation, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains';
|
||||
import { RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';
|
||||
import { Approvals } from '@polkadot/types/interfaces/poll';
|
||||
import { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery';
|
||||
import { RpcMethods } from '@polkadot/types/interfaces/rpc';
|
||||
import { AccountId, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, Call, ChangesTrieConfiguration, Consensus, ConsensusEngineId, Digest, DigestItem, DispatchClass, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, ExtrinsicsWeight, Fixed128, Fixed64, H160, H256, H512, Hash, Header, Index, Justification, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, Origin, Pays, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, ProxyType, RuntimeDbWeight, Seal, SealV0, SignedBlock, StorageData, ValidatorId, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
|
||||
import { AccountId, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, Call, ChangesTrieConfiguration, Consensus, ConsensusEngineId, Digest, DigestItem, ExtrinsicsWeight, Fixed128, Fixed64, H160, H256, H512, Hash, Header, Index, Justification, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, OpaqueCall, Origin, Pays, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, ProxyType, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, StorageData, ValidatorId, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
|
||||
import { Period, Priority, SchedulePeriod, SchedulePriority, Scheduled, TaskAddress } from '@polkadot/types/interfaces/scheduler';
|
||||
import { FullIdentification, IdentificationTuple, Keys, MembershipProof, SessionIndex, SessionKeys1, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6, ValidatorCount } from '@polkadot/types/interfaces/session';
|
||||
import { Bid, BidKind, SocietyJudgement, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society';
|
||||
import { ActiveEraInfo, CompactAssignments, CompactScore, ElectionCompute, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, OffchainAccuracy, PerU16, PhragmenScore, Points, ReleasesStaking, RewardDestination, RewardPoint, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196 } from '@polkadot/types/interfaces/staking';
|
||||
import { ActiveEraInfo, CompactAssignments, CompactScore, ElectionCompute, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, OffchainAccuracy, PerU16, PhragmenScore, Points, RewardDestination, RewardPoint, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196 } from '@polkadot/types/interfaces/staking';
|
||||
import { ApiId, KeyValueOption, ReadProof, RuntimeVersion, RuntimeVersionApi, StorageChangeSet } from '@polkadot/types/interfaces/state';
|
||||
import { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';
|
||||
import { AccountInfo, ChainProperties, ChainType, DigestOf, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, EventRecordTo76, Health, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, Phase, RefCount } from '@polkadot/types/interfaces/system';
|
||||
import { OpenTip, OpenTipFinder, OpenTipTip, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
|
||||
import { AccountInfo, ApplyExtrinsicResult, ChainProperties, ChainType, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, EventRecordTo76, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, Phase, RefCount, TransactionValidityError, UnknownTransaction } from '@polkadot/types/interfaces/system';
|
||||
import { OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
|
||||
import { Multiplier } from '@polkadot/types/interfaces/txpayment';
|
||||
import { CallHash, Multisig, Timepoint } from '@polkadot/types/interfaces/utility';
|
||||
import { VestingInfo } from '@polkadot/types/interfaces/vesting';
|
||||
@@ -171,18 +172,6 @@ declare module '@polkadot/types/types/registry' {
|
||||
DigestItem: DigestItem;
|
||||
'Option<DigestItem>': Option<DigestItem>;
|
||||
'Vec<DigestItem>': Vec<DigestItem>;
|
||||
DispatchClass: DispatchClass;
|
||||
'Option<DispatchClass>': Option<DispatchClass>;
|
||||
'Vec<DispatchClass>': Vec<DispatchClass>;
|
||||
DispatchInfo: DispatchInfo;
|
||||
'Option<DispatchInfo>': Option<DispatchInfo>;
|
||||
'Vec<DispatchInfo>': Vec<DispatchInfo>;
|
||||
DispatchInfoTo190: DispatchInfoTo190;
|
||||
'Option<DispatchInfoTo190>': Option<DispatchInfoTo190>;
|
||||
'Vec<DispatchInfoTo190>': Vec<DispatchInfoTo190>;
|
||||
DispatchInfoTo244: DispatchInfoTo244;
|
||||
'Option<DispatchInfoTo244>': Option<DispatchInfoTo244>;
|
||||
'Vec<DispatchInfoTo244>': Vec<DispatchInfoTo244>;
|
||||
ExtrinsicsWeight: ExtrinsicsWeight;
|
||||
'Option<ExtrinsicsWeight>': Option<ExtrinsicsWeight>;
|
||||
'Vec<ExtrinsicsWeight>': Vec<ExtrinsicsWeight>;
|
||||
@@ -237,6 +226,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
'Compact<Moment>': Compact<Moment>;
|
||||
'Option<Moment>': Option<Moment>;
|
||||
'Vec<Moment>': Vec<Moment>;
|
||||
OpaqueCall: OpaqueCall;
|
||||
'Option<OpaqueCall>': Option<OpaqueCall>;
|
||||
'Vec<OpaqueCall>': Vec<OpaqueCall>;
|
||||
Origin: Origin;
|
||||
'Option<Origin>': Option<Origin>;
|
||||
'Vec<Origin>': Vec<Origin>;
|
||||
@@ -268,6 +260,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
ProxyType: ProxyType;
|
||||
'Option<ProxyType>': Option<ProxyType>;
|
||||
'Vec<ProxyType>': Vec<ProxyType>;
|
||||
Releases: Releases;
|
||||
'Option<Releases>': Option<Releases>;
|
||||
'Vec<Releases>': Vec<Releases>;
|
||||
RuntimeDbWeight: RuntimeDbWeight;
|
||||
'Option<RuntimeDbWeight>': Option<RuntimeDbWeight>;
|
||||
'Vec<RuntimeDbWeight>': Vec<RuntimeDbWeight>;
|
||||
@@ -316,16 +311,19 @@ declare module '@polkadot/types/types/registry' {
|
||||
'Compact<BabeBlockWeight>': Compact<BabeBlockWeight>;
|
||||
'Option<BabeBlockWeight>': Option<BabeBlockWeight>;
|
||||
'Vec<BabeBlockWeight>': Vec<BabeBlockWeight>;
|
||||
BabeEquivocationProof: BabeEquivocationProof;
|
||||
'Option<BabeEquivocationProof>': Option<BabeEquivocationProof>;
|
||||
'Vec<BabeEquivocationProof>': Vec<BabeEquivocationProof>;
|
||||
BabeWeight: BabeWeight;
|
||||
'Compact<BabeWeight>': Compact<BabeWeight>;
|
||||
'Option<BabeWeight>': Option<BabeWeight>;
|
||||
'Vec<BabeWeight>': Vec<BabeWeight>;
|
||||
MaybeRandomness: MaybeRandomness;
|
||||
'Option<MaybeRandomness>': Option<MaybeRandomness>;
|
||||
'Vec<MaybeRandomness>': Vec<MaybeRandomness>;
|
||||
MaybeVrf: MaybeVrf;
|
||||
'Option<MaybeVrf>': Option<MaybeVrf>;
|
||||
'Vec<MaybeVrf>': Vec<MaybeVrf>;
|
||||
BabeWeight: BabeWeight;
|
||||
'Compact<BabeWeight>': Compact<BabeWeight>;
|
||||
'Option<BabeWeight>': Option<BabeWeight>;
|
||||
'Vec<BabeWeight>': Vec<BabeWeight>;
|
||||
EpochAuthorship: EpochAuthorship;
|
||||
'Option<EpochAuthorship>': Option<EpochAuthorship>;
|
||||
'Vec<EpochAuthorship>': Vec<EpochAuthorship>;
|
||||
@@ -384,9 +382,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
BalanceLock: BalanceLock;
|
||||
'Option<BalanceLock>': Option<BalanceLock>;
|
||||
'Vec<BalanceLock>': Vec<BalanceLock>;
|
||||
ReleasesBalances: ReleasesBalances;
|
||||
'Option<ReleasesBalances>': Option<ReleasesBalances>;
|
||||
'Vec<ReleasesBalances>': Vec<ReleasesBalances>;
|
||||
BalanceStatus: BalanceStatus;
|
||||
'Option<BalanceStatus>': Option<BalanceStatus>;
|
||||
'Vec<BalanceStatus>': Vec<BalanceStatus>;
|
||||
Reasons: Reasons;
|
||||
'Option<Reasons>': Option<Reasons>;
|
||||
'Vec<Reasons>': Vec<Reasons>;
|
||||
@@ -512,9 +510,6 @@ declare module '@polkadot/types/types/registry' {
|
||||
ReferendumStatus: ReferendumStatus;
|
||||
'Option<ReferendumStatus>': Option<ReferendumStatus>;
|
||||
'Vec<ReferendumStatus>': Vec<ReferendumStatus>;
|
||||
ReleasesDemocracy: ReleasesDemocracy;
|
||||
'Option<ReleasesDemocracy>': Option<ReleasesDemocracy>;
|
||||
'Vec<ReleasesDemocracy>': Vec<ReleasesDemocracy>;
|
||||
Tally: Tally;
|
||||
'Option<Tally>': Option<Tally>;
|
||||
'Vec<Tally>': Vec<Tally>;
|
||||
@@ -673,15 +668,15 @@ declare module '@polkadot/types/types/registry' {
|
||||
'Compact<AuthorityWeight>': Compact<AuthorityWeight>;
|
||||
'Option<AuthorityWeight>': Option<AuthorityWeight>;
|
||||
'Vec<AuthorityWeight>': Vec<AuthorityWeight>;
|
||||
Equivocation: Equivocation;
|
||||
'Option<Equivocation>': Option<Equivocation>;
|
||||
'Vec<Equivocation>': Vec<Equivocation>;
|
||||
EquivocationProof: EquivocationProof;
|
||||
'Option<EquivocationProof>': Option<EquivocationProof>;
|
||||
'Vec<EquivocationProof>': Vec<EquivocationProof>;
|
||||
GrandpaEquivocation: GrandpaEquivocation;
|
||||
'Option<GrandpaEquivocation>': Option<GrandpaEquivocation>;
|
||||
'Vec<GrandpaEquivocation>': Vec<GrandpaEquivocation>;
|
||||
GrandpaEquivocationProof: GrandpaEquivocationProof;
|
||||
'Option<GrandpaEquivocationProof>': Option<GrandpaEquivocationProof>;
|
||||
'Vec<GrandpaEquivocationProof>': Vec<GrandpaEquivocationProof>;
|
||||
GrandpaEquivocationValue: GrandpaEquivocationValue;
|
||||
'Option<GrandpaEquivocationValue>': Option<GrandpaEquivocationValue>;
|
||||
'Vec<GrandpaEquivocationValue>': Vec<GrandpaEquivocationValue>;
|
||||
GrandpaPrevote: GrandpaPrevote;
|
||||
'Option<GrandpaPrevote>': Option<GrandpaPrevote>;
|
||||
'Vec<GrandpaPrevote>': Vec<GrandpaPrevote>;
|
||||
@@ -942,9 +937,6 @@ declare module '@polkadot/types/types/registry' {
|
||||
PhragmenScore: PhragmenScore;
|
||||
'Option<PhragmenScore>': Option<PhragmenScore>;
|
||||
'Vec<PhragmenScore>': Vec<PhragmenScore>;
|
||||
ReleasesStaking: ReleasesStaking;
|
||||
'Option<ReleasesStaking>': Option<ReleasesStaking>;
|
||||
'Vec<ReleasesStaking>': Vec<ReleasesStaking>;
|
||||
RewardDestination: RewardDestination;
|
||||
'Option<RewardDestination>': Option<RewardDestination>;
|
||||
'Vec<RewardDestination>': Vec<RewardDestination>;
|
||||
@@ -1005,6 +997,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
AccountInfo: AccountInfo;
|
||||
'Option<AccountInfo>': Option<AccountInfo>;
|
||||
'Vec<AccountInfo>': Vec<AccountInfo>;
|
||||
ApplyExtrinsicResult: ApplyExtrinsicResult;
|
||||
'Option<ApplyExtrinsicResult>': Option<ApplyExtrinsicResult>;
|
||||
'Vec<ApplyExtrinsicResult>': Vec<ApplyExtrinsicResult>;
|
||||
ChainProperties: ChainProperties;
|
||||
'Option<ChainProperties>': Option<ChainProperties>;
|
||||
'Vec<ChainProperties>': Vec<ChainProperties>;
|
||||
@@ -1014,6 +1009,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
DigestOf: DigestOf;
|
||||
'Option<DigestOf>': Option<DigestOf>;
|
||||
'Vec<DigestOf>': Vec<DigestOf>;
|
||||
DispatchClass: DispatchClass;
|
||||
'Option<DispatchClass>': Option<DispatchClass>;
|
||||
'Vec<DispatchClass>': Vec<DispatchClass>;
|
||||
DispatchError: DispatchError;
|
||||
'Option<DispatchError>': Option<DispatchError>;
|
||||
'Vec<DispatchError>': Vec<DispatchError>;
|
||||
@@ -1023,6 +1021,18 @@ declare module '@polkadot/types/types/registry' {
|
||||
DispatchErrorTo198: DispatchErrorTo198;
|
||||
'Option<DispatchErrorTo198>': Option<DispatchErrorTo198>;
|
||||
'Vec<DispatchErrorTo198>': Vec<DispatchErrorTo198>;
|
||||
DispatchInfo: DispatchInfo;
|
||||
'Option<DispatchInfo>': Option<DispatchInfo>;
|
||||
'Vec<DispatchInfo>': Vec<DispatchInfo>;
|
||||
DispatchInfoTo190: DispatchInfoTo190;
|
||||
'Option<DispatchInfoTo190>': Option<DispatchInfoTo190>;
|
||||
'Vec<DispatchInfoTo190>': Vec<DispatchInfoTo190>;
|
||||
DispatchInfoTo244: DispatchInfoTo244;
|
||||
'Option<DispatchInfoTo244>': Option<DispatchInfoTo244>;
|
||||
'Vec<DispatchInfoTo244>': Vec<DispatchInfoTo244>;
|
||||
DispatchOutcome: DispatchOutcome;
|
||||
'Option<DispatchOutcome>': Option<DispatchOutcome>;
|
||||
'Vec<DispatchOutcome>': Vec<DispatchOutcome>;
|
||||
DispatchResult: DispatchResult;
|
||||
'Option<DispatchResult>': Option<DispatchResult>;
|
||||
'Vec<DispatchResult>': Vec<DispatchResult>;
|
||||
@@ -1051,6 +1061,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
Health: Health;
|
||||
'Option<Health>': Option<Health>;
|
||||
'Vec<Health>': Vec<Health>;
|
||||
InvalidTransaction: InvalidTransaction;
|
||||
'Option<InvalidTransaction>': Option<InvalidTransaction>;
|
||||
'Vec<InvalidTransaction>': Vec<InvalidTransaction>;
|
||||
Key: Key;
|
||||
'Option<Key>': Option<Key>;
|
||||
'Vec<Key>': Vec<Key>;
|
||||
@@ -1094,12 +1107,21 @@ declare module '@polkadot/types/types/registry' {
|
||||
'Compact<RefCount>': Compact<RefCount>;
|
||||
'Option<RefCount>': Option<RefCount>;
|
||||
'Vec<RefCount>': Vec<RefCount>;
|
||||
TransactionValidityError: TransactionValidityError;
|
||||
'Option<TransactionValidityError>': Option<TransactionValidityError>;
|
||||
'Vec<TransactionValidityError>': Vec<TransactionValidityError>;
|
||||
UnknownTransaction: UnknownTransaction;
|
||||
'Option<UnknownTransaction>': Option<UnknownTransaction>;
|
||||
'Vec<UnknownTransaction>': Vec<UnknownTransaction>;
|
||||
OpenTip: OpenTip;
|
||||
'Option<OpenTip>': Option<OpenTip>;
|
||||
'Vec<OpenTip>': Vec<OpenTip>;
|
||||
OpenTipFinder: OpenTipFinder;
|
||||
'Option<OpenTipFinder>': Option<OpenTipFinder>;
|
||||
'Vec<OpenTipFinder>': Vec<OpenTipFinder>;
|
||||
OpenTipTo225: OpenTipTo225;
|
||||
'Option<OpenTipTo225>': Option<OpenTipTo225>;
|
||||
'Vec<OpenTipTo225>': Vec<OpenTipTo225>;
|
||||
OpenTipFinderTo225: OpenTipFinderTo225;
|
||||
'Option<OpenTipFinderTo225>': Option<OpenTipFinderTo225>;
|
||||
'Vec<OpenTipFinderTo225>': Vec<OpenTipFinderTo225>;
|
||||
OpenTipTip: OpenTipTip;
|
||||
'Option<OpenTipTip>': Option<OpenTipTip>;
|
||||
'Vec<OpenTipTip>': Vec<OpenTipTip>;
|
||||
@@ -1136,6 +1158,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
StatementKind: StatementKind;
|
||||
'Option<StatementKind>': Option<StatementKind>;
|
||||
'Vec<StatementKind>': Vec<StatementKind>;
|
||||
AbridgedCandidateReceipt: AbridgedCandidateReceipt;
|
||||
'Option<AbridgedCandidateReceipt>': Option<AbridgedCandidateReceipt>;
|
||||
'Vec<AbridgedCandidateReceipt>': Vec<AbridgedCandidateReceipt>;
|
||||
AttestedCandidate: AttestedCandidate;
|
||||
'Option<AttestedCandidate>': Option<AttestedCandidate>;
|
||||
'Vec<AttestedCandidate>': Vec<AttestedCandidate>;
|
||||
@@ -1146,6 +1171,9 @@ declare module '@polkadot/types/types/registry' {
|
||||
Bidder: Bidder;
|
||||
'Option<Bidder>': Option<Bidder>;
|
||||
'Vec<Bidder>': Vec<Bidder>;
|
||||
CandidateCommitments: CandidateCommitments;
|
||||
'Option<CandidateCommitments>': Option<CandidateCommitments>;
|
||||
'Vec<CandidateCommitments>': Vec<CandidateCommitments>;
|
||||
CandidateReceipt: CandidateReceipt;
|
||||
'Option<CandidateReceipt>': Option<CandidateReceipt>;
|
||||
'Vec<CandidateReceipt>': Vec<CandidateReceipt>;
|
||||
@@ -1158,58 +1186,61 @@ declare module '@polkadot/types/types/registry' {
|
||||
DoubleVoteReport: DoubleVoteReport;
|
||||
'Option<DoubleVoteReport>': Option<DoubleVoteReport>;
|
||||
'Vec<DoubleVoteReport>': Vec<DoubleVoteReport>;
|
||||
DoubleVoteReportProof: DoubleVoteReportProof;
|
||||
'Option<DoubleVoteReportProof>': Option<DoubleVoteReportProof>;
|
||||
'Vec<DoubleVoteReportProof>': Vec<DoubleVoteReportProof>;
|
||||
DoubleVoteReportStatement: DoubleVoteReportStatement;
|
||||
'Option<DoubleVoteReportStatement>': Option<DoubleVoteReportStatement>;
|
||||
'Vec<DoubleVoteReportStatement>': Vec<DoubleVoteReportStatement>;
|
||||
EgressQueueRoot: EgressQueueRoot;
|
||||
'Option<EgressQueueRoot>': Option<EgressQueueRoot>;
|
||||
'Vec<EgressQueueRoot>': Vec<EgressQueueRoot>;
|
||||
DownwardMessage: DownwardMessage;
|
||||
'Option<DownwardMessage>': Option<DownwardMessage>;
|
||||
'Vec<DownwardMessage>': Vec<DownwardMessage>;
|
||||
GlobalValidationSchedule: GlobalValidationSchedule;
|
||||
'Option<GlobalValidationSchedule>': Option<GlobalValidationSchedule>;
|
||||
'Vec<GlobalValidationSchedule>': Vec<GlobalValidationSchedule>;
|
||||
HeadData: HeadData;
|
||||
'Option<HeadData>': Option<HeadData>;
|
||||
'Vec<HeadData>': Vec<HeadData>;
|
||||
IncomingParachainDeploy: IncomingParachainDeploy;
|
||||
'Option<IncomingParachainDeploy>': Option<IncomingParachainDeploy>;
|
||||
'Vec<IncomingParachainDeploy>': Vec<IncomingParachainDeploy>;
|
||||
IncomingParachainFixed: IncomingParachainFixed;
|
||||
'Option<IncomingParachainFixed>': Option<IncomingParachainFixed>;
|
||||
'Vec<IncomingParachainFixed>': Vec<IncomingParachainFixed>;
|
||||
IncomingParachain: IncomingParachain;
|
||||
'Option<IncomingParachain>': Option<IncomingParachain>;
|
||||
'Vec<IncomingParachain>': Vec<IncomingParachain>;
|
||||
IncomingParachainFixed: IncomingParachainFixed;
|
||||
'Option<IncomingParachainFixed>': Option<IncomingParachainFixed>;
|
||||
'Vec<IncomingParachainFixed>': Vec<IncomingParachainFixed>;
|
||||
IncomingParachainDeploy: IncomingParachainDeploy;
|
||||
'Option<IncomingParachainDeploy>': Option<IncomingParachainDeploy>;
|
||||
'Vec<IncomingParachainDeploy>': Vec<IncomingParachainDeploy>;
|
||||
LeasePeriod: LeasePeriod;
|
||||
'Option<LeasePeriod>': Option<LeasePeriod>;
|
||||
'Vec<LeasePeriod>': Vec<LeasePeriod>;
|
||||
LeasePeriodOf: LeasePeriodOf;
|
||||
'Option<LeasePeriodOf>': Option<LeasePeriodOf>;
|
||||
'Vec<LeasePeriodOf>': Vec<LeasePeriodOf>;
|
||||
LocalValidationData: LocalValidationData;
|
||||
'Option<LocalValidationData>': Option<LocalValidationData>;
|
||||
'Vec<LocalValidationData>': Vec<LocalValidationData>;
|
||||
NewBidder: NewBidder;
|
||||
'Option<NewBidder>': Option<NewBidder>;
|
||||
'Vec<NewBidder>': Vec<NewBidder>;
|
||||
ParachainDispatchOrigin: ParachainDispatchOrigin;
|
||||
'Option<ParachainDispatchOrigin>': Option<ParachainDispatchOrigin>;
|
||||
'Vec<ParachainDispatchOrigin>': Vec<ParachainDispatchOrigin>;
|
||||
ParaId: ParaId;
|
||||
'Compact<ParaId>': Compact<ParaId>;
|
||||
'Option<ParaId>': Option<ParaId>;
|
||||
'Vec<ParaId>': Vec<ParaId>;
|
||||
ParaIdOf: ParaIdOf;
|
||||
'Option<ParaIdOf>': Option<ParaIdOf>;
|
||||
'Vec<ParaIdOf>': Vec<ParaIdOf>;
|
||||
ParaInfo: ParaInfo;
|
||||
'Option<ParaInfo>': Option<ParaInfo>;
|
||||
'Vec<ParaInfo>': Vec<ParaInfo>;
|
||||
ParaPastCodeMeta: ParaPastCodeMeta;
|
||||
'Option<ParaPastCodeMeta>': Option<ParaPastCodeMeta>;
|
||||
'Vec<ParaPastCodeMeta>': Vec<ParaPastCodeMeta>;
|
||||
ParachainDispatchOrigin: ParachainDispatchOrigin;
|
||||
'Option<ParachainDispatchOrigin>': Option<ParachainDispatchOrigin>;
|
||||
'Vec<ParachainDispatchOrigin>': Vec<ParachainDispatchOrigin>;
|
||||
ParaScheduling: ParaScheduling;
|
||||
'Option<ParaScheduling>': Option<ParaScheduling>;
|
||||
'Vec<ParaScheduling>': Vec<ParaScheduling>;
|
||||
Remark: Remark;
|
||||
'Option<Remark>': Option<Remark>;
|
||||
'Vec<Remark>': Vec<Remark>;
|
||||
Retriable: Retriable;
|
||||
'Option<Retriable>': Option<Retriable>;
|
||||
'Vec<Retriable>': Vec<Retriable>;
|
||||
Scheduling: Scheduling;
|
||||
'Option<Scheduling>': Option<Scheduling>;
|
||||
'Vec<Scheduling>': Vec<Scheduling>;
|
||||
SigningContext: SigningContext;
|
||||
'Option<SigningContext>': Option<SigningContext>;
|
||||
'Vec<SigningContext>': Vec<SigningContext>;
|
||||
@@ -1229,18 +1260,21 @@ declare module '@polkadot/types/types/registry' {
|
||||
ValidationCode: ValidationCode;
|
||||
'Option<ValidationCode>': Option<ValidationCode>;
|
||||
'Vec<ValidationCode>': Vec<ValidationCode>;
|
||||
ValidityAttestation: ValidityAttestation;
|
||||
'Option<ValidityAttestation>': Option<ValidityAttestation>;
|
||||
'Vec<ValidityAttestation>': Vec<ValidityAttestation>;
|
||||
ValidatorSignature: ValidatorSignature;
|
||||
'Option<ValidatorSignature>': Option<ValidatorSignature>;
|
||||
'Vec<ValidatorSignature>': Vec<ValidatorSignature>;
|
||||
WinningDataEntry: WinningDataEntry;
|
||||
'Option<WinningDataEntry>': Option<WinningDataEntry>;
|
||||
'Vec<WinningDataEntry>': Vec<WinningDataEntry>;
|
||||
ValidityAttestation: ValidityAttestation;
|
||||
'Option<ValidityAttestation>': Option<ValidityAttestation>;
|
||||
'Vec<ValidityAttestation>': Vec<ValidityAttestation>;
|
||||
WinningData: WinningData;
|
||||
'Option<WinningData>': Option<WinningData>;
|
||||
'Vec<WinningData>': Vec<WinningData>;
|
||||
WinningDataEntry: WinningDataEntry;
|
||||
'Option<WinningDataEntry>': Option<WinningDataEntry>;
|
||||
'Vec<WinningDataEntry>': Vec<WinningDataEntry>;
|
||||
Approvals: Approvals;
|
||||
'Option<Approvals>': Option<Approvals>;
|
||||
'Vec<Approvals>': Vec<Approvals>;
|
||||
CallMetadataV0: CallMetadataV0;
|
||||
'Option<CallMetadataV0>': Option<CallMetadataV0>;
|
||||
'Vec<CallMetadataV0>': Vec<CallMetadataV0>;
|
||||
|
||||
@@ -6,7 +6,7 @@ import { H256 } from '../interfaces/runtime';
|
||||
import { AnyNumber, Codec, Registry } from '../types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import { assert, bnToBn, bnToHex, bnToU8a, formatBalance, formatNumber, hexToBn, isHex, isString, isU8a, u8aToBn } from '@polkadot/util';
|
||||
import { BN_ZERO, assert, bnToBn, bnToHex, bnToU8a, formatBalance, formatNumber, hexToBn, isHex, isString, isU8a, u8aToBn } from '@polkadot/util';
|
||||
import { blake2AsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
import Raw from './Raw';
|
||||
@@ -77,6 +77,7 @@ export default abstract class AbstractInt extends BN implements Codec {
|
||||
this.#isHexJson = isHexJson;
|
||||
this.#isSigned = isSigned;
|
||||
|
||||
assert(isSigned || this.gte(BN_ZERO), `${this.toRawType()}: Negative number passed to unsigned type`);
|
||||
assert(super.bitLength() <= bitLength, `${this.toRawType()}: Input too large. Found input with ${super.bitLength()} bits, expected ${bitLength}`);
|
||||
}
|
||||
|
||||
@@ -161,7 +162,7 @@ export default abstract class AbstractInt extends BN implements Codec {
|
||||
* @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
public toHuman (isExpanded?: boolean): any {
|
||||
public toHuman (isExpanded?: boolean): string {
|
||||
// FIXME we need proper expansion here
|
||||
return this instanceof this.registry.createClass('Balance')
|
||||
? this.isMax()
|
||||
|
||||
@@ -171,7 +171,7 @@ export default class BTreeSet<V extends Codec = Codec> extends Set<V> implements
|
||||
* @description Returns the base runtime type name for this instance
|
||||
*/
|
||||
public toRawType (): string {
|
||||
return `BTreeSet<${new this.#ValClass(this.registry).toRawType()}>`;
|
||||
return `BTreeSet<${this.registry.getClassName(this.#ValClass) || new this.#ValClass(this.registry).toRawType()}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,15 +2,17 @@
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { AnyNumber, Codec, Constructor, ICompact, InterfaceTypes, Registry } from '../types';
|
||||
import { H256 } from '@polkadot/types/interfaces';
|
||||
import { AnyJson, AnyNumber, Codec, Constructor, ICompact, InterfaceTypes, Registry } from '../types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import { compactAddLength, compactFromU8a, compactStripLength, compactToU8a, isBigInt, isBn, isNumber, isString } from '@polkadot/util';
|
||||
import { DEFAULT_BITLENGTH } from '@polkadot/util/compact/defaults';
|
||||
import { blake2AsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
import typeToConstructor from './utils/typeToConstructor';
|
||||
import { UIntBitLength } from './AbstractInt';
|
||||
import Base from './Base';
|
||||
import Raw from './Raw';
|
||||
|
||||
export interface CompactEncodable extends Codec {
|
||||
bitLength (): number;
|
||||
@@ -26,11 +28,17 @@ export interface CompactEncodable extends Codec {
|
||||
* used by other types to add length-prefixed encoding, or in the case of wrapped types, taking
|
||||
* a number and making the compact representation thereof
|
||||
*/
|
||||
export default class Compact<T extends CompactEncodable> extends Base<T> implements ICompact<T> {
|
||||
export default class Compact<T extends CompactEncodable> implements ICompact<T> {
|
||||
public readonly registry: Registry;
|
||||
|
||||
readonly #Type: Constructor<T>;
|
||||
|
||||
readonly #raw: T;
|
||||
|
||||
constructor (registry: Registry, Type: Constructor<T> | keyof InterfaceTypes, value: Compact<T> | AnyNumber = 0) {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
super(registry, Compact.decodeCompact<T>(registry, typeToConstructor(registry, Type), value));
|
||||
this.registry = registry;
|
||||
this.#Type = typeToConstructor(registry, Type);
|
||||
this.#raw = Compact.decodeCompact<T>(registry, this.#Type, value) as T;
|
||||
}
|
||||
|
||||
public static with<T extends CompactEncodable> (Type: Constructor<T> | keyof InterfaceTypes): Constructor<Compact<T>> {
|
||||
@@ -61,7 +69,7 @@ export default class Compact<T extends CompactEncodable> extends Base<T> impleme
|
||||
/** @internal */
|
||||
public static decodeCompact<T extends CompactEncodable> (registry: Registry, Type: Constructor<T>, value: Compact<T> | AnyNumber): CompactEncodable {
|
||||
if (value instanceof Compact) {
|
||||
return new Type(registry, value._raw);
|
||||
return new Type(registry, value.#raw);
|
||||
} else if (isString(value) || isNumber(value) || isBn(value) || isBigInt(value)) {
|
||||
return new Type(registry, value);
|
||||
}
|
||||
@@ -71,20 +79,41 @@ export default class Compact<T extends CompactEncodable> extends Base<T> impleme
|
||||
return new Type(registry, _value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description The length of the value when encoded as a Uint8Array
|
||||
*/
|
||||
public get encodedLength (): number {
|
||||
return this.toU8a().length;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description returns a hash of the contents
|
||||
*/
|
||||
public get hash (): H256 {
|
||||
return new Raw(this.registry, blake2AsU8a(this.toU8a(), 256));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Checks if the value is an empty value
|
||||
*/
|
||||
public get isEmpty (): boolean {
|
||||
return this.#raw.isEmpty;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the number of bits in the value
|
||||
*/
|
||||
public bitLength (): number {
|
||||
return this._raw.bitLength();
|
||||
return this.#raw.bitLength();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Compares the value of the input to see if there is a match
|
||||
*/
|
||||
public eq (other?: unknown): boolean {
|
||||
return this._raw.eq(
|
||||
return this.#raw.eq(
|
||||
other instanceof Compact
|
||||
? other._raw
|
||||
? other.#raw
|
||||
: other
|
||||
);
|
||||
}
|
||||
@@ -93,21 +122,49 @@ export default class Compact<T extends CompactEncodable> extends Base<T> impleme
|
||||
* @description Returns the BN representation of the number
|
||||
*/
|
||||
public toBn (): BN {
|
||||
return this._raw.toBn();
|
||||
return this.#raw.toBn();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns a hex string representation of the value. isLe returns a LE (number-only) representation
|
||||
*/
|
||||
public toHex (isLe?: boolean): string {
|
||||
return this.#raw.toHex(isLe);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
|
||||
*/
|
||||
public toHuman (isExtended?: boolean): AnyJson {
|
||||
return this.#raw.toHuman(isExtended);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Converts the Object to JSON, typically used for RPC transfers
|
||||
*/
|
||||
public toJSON (): AnyJson {
|
||||
return this.#raw.toJSON();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the number representation for the value
|
||||
*/
|
||||
public toNumber (): number {
|
||||
return this._raw.toNumber();
|
||||
return this.#raw.toNumber();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the base runtime type name for this instance
|
||||
*/
|
||||
public toRawType (): string {
|
||||
return `Compact<${this._raw.toRawType()}>`;
|
||||
return `Compact<${this.registry.getClassName(this.#Type) || this.#raw.toRawType()}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the string representation of the value
|
||||
*/
|
||||
public toString (): string {
|
||||
return this.#raw.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,13 +173,13 @@ export default class Compact<T extends CompactEncodable> extends Base<T> impleme
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
public toU8a (isBare?: boolean): Uint8Array {
|
||||
return Compact.encodeU8a(this._raw.toBn());
|
||||
return Compact.encodeU8a(this.#raw.toBn());
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the embedded [[UInt]] or [[Moment]] value
|
||||
*/
|
||||
public unwrap (): T {
|
||||
return this._raw;
|
||||
return this.#raw;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +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 { H256 } from '@polkadot/types/interfaces';
|
||||
import { AnyJson, Codec, Constructor, InterfaceTypes, Registry } from '../types';
|
||||
|
||||
import { assert, hexToU8a, isHex, isNumber, isObject, isString, isU8a, isUndefined, stringCamelCase, stringUpperFirst, u8aConcat, u8aToHex } from '@polkadot/util';
|
||||
import { blake2AsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
import Null from '../primitive/Null';
|
||||
import { mapToTypeMap } from './utils';
|
||||
import Base from './Base';
|
||||
import Raw from './Raw';
|
||||
import Struct from './Struct';
|
||||
|
||||
// export interface, this is used in Enum.with, so required as public by TS
|
||||
@@ -114,25 +116,29 @@ function decodeEnum (registry: Registry, def: TypesDef, value?: any, index?: num
|
||||
// TODO:
|
||||
// - As per Enum, actually use TS enum
|
||||
// - It should rather probably extend Enum instead of copying code
|
||||
export default class Enum extends Base<Codec> {
|
||||
private _def: TypesDef;
|
||||
export default class Enum implements Codec {
|
||||
public readonly registry: Registry;
|
||||
|
||||
private _index: number;
|
||||
readonly #def: TypesDef;
|
||||
|
||||
private _indexes: number[];
|
||||
readonly #index: number;
|
||||
|
||||
private _isBasic: boolean;
|
||||
readonly #indexes: number[];
|
||||
|
||||
readonly #isBasic: boolean;
|
||||
|
||||
readonly #raw: Codec;
|
||||
|
||||
constructor (registry: Registry, def: Record<string, keyof InterfaceTypes | Constructor> | string[], value?: unknown, index?: number) {
|
||||
const defInfo = extractDef(registry, def);
|
||||
const decoded = decodeEnum(registry, defInfo.def, value, index);
|
||||
|
||||
super(registry, decoded.value);
|
||||
|
||||
this._def = defInfo.def;
|
||||
this._isBasic = defInfo.isBasic;
|
||||
this._indexes = Object.keys(defInfo.def).map((_, index): number => index);
|
||||
this._index = this._indexes.indexOf(decoded.index) || 0;
|
||||
this.registry = registry;
|
||||
this.#def = defInfo.def;
|
||||
this.#isBasic = defInfo.isBasic;
|
||||
this.#indexes = Object.keys(defInfo.def).map((_, index): number => index);
|
||||
this.#index = this.#indexes.indexOf(decoded.index) || 0;
|
||||
this.#raw = decoded.value;
|
||||
}
|
||||
|
||||
public static with (Types: Record<string, keyof InterfaceTypes | Constructor> | string[]): EnumConstructor<Enum> {
|
||||
@@ -140,7 +146,7 @@ export default class Enum extends Base<Codec> {
|
||||
constructor (registry: Registry, value?: unknown, index?: number) {
|
||||
super(registry, Types, value, index);
|
||||
|
||||
Object.keys(this._def).forEach((_key): void => {
|
||||
Object.keys(this.#def).forEach((_key): void => {
|
||||
const name = stringUpperFirst(stringCamelCase(_key.replace(' ', '_')));
|
||||
const askey = `as${name}`;
|
||||
const iskey = `is${name}`;
|
||||
@@ -175,21 +181,35 @@ export default class Enum extends Base<Codec> {
|
||||
* @description The length of the value when encoded as a Uint8Array
|
||||
*/
|
||||
public get encodedLength (): number {
|
||||
return 1 + this._raw.encodedLength;
|
||||
return 1 + this.#raw.encodedLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description returns a hash of the contents
|
||||
*/
|
||||
public get hash (): H256 {
|
||||
return new Raw(this.registry, blake2AsU8a(this.toU8a(), 256));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description The index of the metadata value
|
||||
*/
|
||||
public get index (): number {
|
||||
return this._index;
|
||||
return this.#index;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description true if this is a basic enum (no values)
|
||||
*/
|
||||
public get isBasic (): boolean {
|
||||
return this._isBasic;
|
||||
return this.#isBasic;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Checks if the value is an empty value
|
||||
*/
|
||||
public get isEmpty (): boolean {
|
||||
return this.#raw.isEmpty;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -203,35 +223,35 @@ export default class Enum extends Base<Codec> {
|
||||
* @description Checks if the Enum points to a [[Null]] type (deprecated, use isNone)
|
||||
*/
|
||||
public get isNull (): boolean {
|
||||
return this._raw instanceof Null;
|
||||
return this.#raw instanceof Null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description The available keys for this enum
|
||||
*/
|
||||
public get defEntries (): string[] {
|
||||
return Object.keys(this._def);
|
||||
return Object.keys(this.#def);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description The available keys for this enum
|
||||
*/
|
||||
public get defKeys (): string[] {
|
||||
return Object.keys(this._def);
|
||||
return Object.keys(this.#def);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description The name of the type this enum value represents
|
||||
*/
|
||||
public get type (): string {
|
||||
return this.defKeys[this._index];
|
||||
return this.defKeys[this.#index];
|
||||
}
|
||||
|
||||
/**
|
||||
* @description The value of the enum
|
||||
*/
|
||||
public get value (): Codec {
|
||||
return this._raw;
|
||||
return this.#raw;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -241,7 +261,7 @@ export default class Enum extends Base<Codec> {
|
||||
// cater for the case where we only pass the enum index
|
||||
if (isNumber(other)) {
|
||||
return this.toNumber() === other;
|
||||
} else if (this._isBasic && isString(other)) {
|
||||
} else if (this.#isBasic && isString(other)) {
|
||||
return this.type === other;
|
||||
} else if (isU8a(other)) {
|
||||
return !this.toU8a().some((entry, index): boolean => entry !== other[index]);
|
||||
@@ -268,34 +288,34 @@ export default class Enum extends Base<Codec> {
|
||||
* @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
|
||||
*/
|
||||
public toHuman (isExtended?: boolean): AnyJson {
|
||||
return this._isBasic
|
||||
return this.#isBasic
|
||||
? this.type
|
||||
: { [this.type]: this._raw.toHuman(isExtended) };
|
||||
: { [this.type]: this.#raw.toHuman(isExtended) };
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Converts the Object to JSON, typically used for RPC transfers
|
||||
*/
|
||||
public toJSON (): AnyJson {
|
||||
return this._isBasic
|
||||
return this.#isBasic
|
||||
? this.type
|
||||
: { [this.type]: this._raw.toJSON() };
|
||||
: { [this.type]: this.#raw.toJSON() };
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the number representation for the value
|
||||
*/
|
||||
public toNumber (): number {
|
||||
return this._index;
|
||||
return this.#index;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns a raw struct representation of the enum types
|
||||
*/
|
||||
protected _toRawStruct (): string[] | Record<string, string> {
|
||||
return this._isBasic
|
||||
return this.#isBasic
|
||||
? this.defKeys
|
||||
: Struct.typesToMap(this.registry, this._def);
|
||||
: Struct.typesToMap(this.registry, this.#def);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -319,11 +339,11 @@ export default class Enum extends Base<Codec> {
|
||||
* @param isBare true when the value has none of the type-specific prefixes (internal)
|
||||
*/
|
||||
public toU8a (isBare?: boolean): Uint8Array {
|
||||
const index = this._indexes[this._index];
|
||||
const index = this.#indexes[this.#index];
|
||||
|
||||
return u8aConcat(
|
||||
new Uint8Array([index]),
|
||||
this._raw.toU8a(isBare)
|
||||
this.#raw.toU8a(isBare)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ export default class CodecMap<K extends Codec = Codec, V extends Codec = Codec>
|
||||
* @description Returns the base runtime type name for this instance
|
||||
*/
|
||||
public toRawType (): string {
|
||||
return `${this.#type}<${new this.#KeyClass(this.registry).toRawType()},${new this.#ValClass(this.registry).toRawType()}>`;
|
||||
return `${this.#type}<${this.registry.getClassName(this.#KeyClass) || new this.#KeyClass(this.registry).toRawType()},${this.registry.getClassName(this.#ValClass) || new this.#ValClass(this.registry).toRawType()}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,13 +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 { Codec, Constructor, InterfaceTypes, Registry } from '../types';
|
||||
import { H256 } from '@polkadot/types/interfaces';
|
||||
import { AnyJson, Codec, Constructor, InterfaceTypes, Registry } from '../types';
|
||||
|
||||
import { isNull, isU8a, isUndefined, u8aToHex } from '@polkadot/util';
|
||||
import { blake2AsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
import Null from '../primitive/Null';
|
||||
import { typeToConstructor } from './utils';
|
||||
import Base from './Base';
|
||||
import Raw from './Raw';
|
||||
|
||||
/** @internal */
|
||||
function decodeOptionU8a (registry: Registry, Type: Constructor, value: Uint8Array): Codec {
|
||||
@@ -48,15 +50,17 @@ function decodeOption (registry: Registry, typeName: Constructor | keyof Interfa
|
||||
* implements that - decodes, checks for optionality and wraps the required structure
|
||||
* with a value if/as required/found.
|
||||
*/
|
||||
export default class Option<T extends Codec> extends Base<T> {
|
||||
export default class Option<T extends Codec> implements Codec {
|
||||
public readonly registry: Registry;
|
||||
|
||||
readonly #Type: Constructor<T>;
|
||||
|
||||
constructor (registry: Registry, typeName: Constructor<T> | keyof InterfaceTypes, value?: unknown) {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
super(registry, decodeOption(registry, typeName, value));
|
||||
readonly #raw: T;
|
||||
|
||||
constructor (registry: Registry, typeName: Constructor<T> | keyof InterfaceTypes, value?: unknown) {
|
||||
this.registry = registry;
|
||||
this.#Type = typeToConstructor(registry, typeName);
|
||||
this.#raw = decodeOption(registry, typeName, value) as T;
|
||||
}
|
||||
|
||||
public static with<O extends Codec> (Type: Constructor<O> | keyof InterfaceTypes): Constructor<Option<O>> {
|
||||
@@ -72,7 +76,14 @@ export default class Option<T extends Codec> extends Base<T> {
|
||||
*/
|
||||
public get encodedLength (): number {
|
||||
// boolean byte (has value, doesn't have) along with wrapped length
|
||||
return 1 + this._raw.encodedLength;
|
||||
return 1 + this.#raw.encodedLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description returns a hash of the contents
|
||||
*/
|
||||
public get hash (): H256 {
|
||||
return new Raw(this.registry, blake2AsU8a(this.toU8a(), 256));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -86,7 +97,7 @@ export default class Option<T extends Codec> extends Base<T> {
|
||||
* @description Checks if the Option has no value
|
||||
*/
|
||||
public get isNone (): boolean {
|
||||
return this._raw instanceof Null;
|
||||
return this.#raw instanceof Null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,7 +111,7 @@ export default class Option<T extends Codec> extends Base<T> {
|
||||
* @description The actual value for the Option
|
||||
*/
|
||||
public get value (): Codec {
|
||||
return this._raw;
|
||||
return this.#raw;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,31 +136,52 @@ export default class Option<T extends Codec> extends Base<T> {
|
||||
: u8aToHex(this.toU8a().subarray(1));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
|
||||
*/
|
||||
public toHuman (isExtended?: boolean): AnyJson {
|
||||
return this.#raw.toHuman(isExtended);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Converts the Object to JSON, typically used for RPC transfers
|
||||
*/
|
||||
public toJSON (): AnyJson {
|
||||
return this.#raw.toJSON();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the base runtime type name for this instance
|
||||
*/
|
||||
public toRawType (isBare?: boolean): string {
|
||||
const wrapped = new this.#Type(this.registry).toRawType();
|
||||
const wrapped = this.registry.getClassName(this.#Type) || new this.#Type(this.registry).toRawType();
|
||||
|
||||
return isBare
|
||||
? wrapped
|
||||
: `Option<${wrapped}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the string representation of the value
|
||||
*/
|
||||
public toString (): string {
|
||||
return this.#raw.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Encodes the value as a Uint8Array as per the SCALE specifications
|
||||
* @param isBare true when the value has none of the type-specific prefixes (internal)
|
||||
*/
|
||||
public toU8a (isBare?: boolean): Uint8Array {
|
||||
if (isBare) {
|
||||
return this._raw.toU8a(true);
|
||||
return this.#raw.toU8a(true);
|
||||
}
|
||||
|
||||
const u8a = new Uint8Array(this.encodedLength);
|
||||
|
||||
if (this.isSome) {
|
||||
u8a.set([1]);
|
||||
u8a.set(this._raw.toU8a(), 1);
|
||||
u8a.set(this.#raw.toU8a(), 1);
|
||||
}
|
||||
|
||||
return u8a;
|
||||
@@ -163,7 +195,7 @@ export default class Option<T extends Codec> extends Base<T> {
|
||||
throw new Error('Option: unwrapping a None value');
|
||||
}
|
||||
|
||||
return this._raw;
|
||||
return this.#raw;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,7 +23,7 @@ const testEncode = (to: CodecTo, expected: any): void =>
|
||||
expect(e[to]()).toEqual(expected);
|
||||
});
|
||||
|
||||
describe('U8a', (): void => {
|
||||
describe('Raw', (): void => {
|
||||
let u8a: Raw;
|
||||
|
||||
beforeEach((): void => {
|
||||
@@ -74,5 +74,21 @@ describe('U8a', (): void => {
|
||||
it('compares against hex inputs', (): void => {
|
||||
expect(u8a.eq('0x0102030405')).toBe(true);
|
||||
});
|
||||
|
||||
it('has valid isAscii', (): void => {
|
||||
expect(u8a.isAscii).toBe(false);
|
||||
expect(new Raw(registry, '0x2021222324').isAscii).toBe(true);
|
||||
});
|
||||
|
||||
it('has valid toUtf8', (): void => {
|
||||
expect(new Raw(registry, 'Приветствую, ми').toUtf8()).toEqual('Приветствую, ми');
|
||||
expect(new Raw(registry, '0xe4bda0e5a5bd').toUtf8()).toEqual('你好');
|
||||
});
|
||||
|
||||
it('throws on invalid utf8', (): void => {
|
||||
expect(
|
||||
() => new Raw(registry, '0x7f07b1f87709608bee603bbc79a0dfc29cd315c1351a83aa31adf7458d7d3003').toUtf8()
|
||||
).toThrow(/The character sequence is not a valid Utf8 string/);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
import { H256 } from '../interfaces/runtime';
|
||||
import { AnyJson, AnyU8a, IU8a, Registry } from '../types';
|
||||
|
||||
import { isU8a, isUndefined, u8aToHex, u8aToU8a } from '@polkadot/util';
|
||||
import { assert, isAscii, isU8a, isUndefined, isUtf8, u8aToHex, u8aToString, u8aToU8a } from '@polkadot/util';
|
||||
import { blake2AsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
/** @internal */
|
||||
@@ -49,11 +49,25 @@ export default class Raw extends Uint8Array implements IU8a {
|
||||
return new Raw(this.registry, blake2AsU8a(this.toU8a(), 256));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns true if the wrapped value contains only ASCII printable characters
|
||||
*/
|
||||
public get isAscii (): boolean {
|
||||
return isAscii(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns true if the type wraps an empty/default all-0 value
|
||||
*/
|
||||
public get isEmpty (): boolean {
|
||||
return !this.length || isUndefined(this.find((value): boolean => !!value));
|
||||
return !this.length || isUndefined(this.find((value) => !!value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns true if the wrapped value contains only utf8 characters
|
||||
*/
|
||||
public get isUtf8 (): boolean {
|
||||
return isUtf8(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,7 +91,7 @@ export default class Raw extends Uint8Array implements IU8a {
|
||||
public eq (other?: unknown): boolean {
|
||||
if (other instanceof Uint8Array) {
|
||||
return (this.length === other.length) &&
|
||||
!this.some((value, index): boolean => value !== other[index]);
|
||||
!this.some((value, index) => value !== other[index]);
|
||||
}
|
||||
|
||||
return this.eq(decodeU8a(other));
|
||||
@@ -135,4 +149,13 @@ export default class Raw extends Uint8Array implements IU8a {
|
||||
public toU8a (isBare?: boolean): Uint8Array {
|
||||
return Uint8Array.from(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Returns the wrapped data as a UTF-8 string
|
||||
*/
|
||||
public toUtf8 (): string {
|
||||
assert(this.isUtf8, 'The character sequence is not a valid Utf8 string');
|
||||
|
||||
return u8aToString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +58,6 @@ describe('Result', (): void => {
|
||||
});
|
||||
|
||||
it('returns a proper raw typedef rom a built-in', (): void => {
|
||||
expect(registry.createType('DispatchResult').toRawType()).toEqual('Result<(),{"_enum":{"Other":"Null","CannotLookup":"Null","BadOrigin":"Null","Module":"{\\"index\\":\\"u8\\",\\"error\\":\\"u8\\"}"}}>');
|
||||
expect(registry.createType('DispatchResult').toRawType()).toEqual('Result<(),DispatchError>');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -50,7 +50,7 @@ export default class Result<O extends Codec, E extends Codec> extends Enum {
|
||||
* @description Checks if the Result has no value
|
||||
*/
|
||||
public get isEmpty (): boolean {
|
||||
return this.isOk && this._raw.isEmpty;
|
||||
return this.isOk && this.value.isEmpty;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
/* eslint-disable sort-keys */
|
||||
|
||||
import { TypeRegistry } from '../create';
|
||||
import AccountId from '../generic/AccountId';
|
||||
import Text from '../primitive/Text';
|
||||
import U32 from '../primitive/U32';
|
||||
import { CodecTo } from '../types';
|
||||
@@ -221,20 +220,20 @@ describe('Struct', (): void => {
|
||||
it('generates sane toRawType', (): void => {
|
||||
expect(
|
||||
new Struct(registry, {
|
||||
accountId: AccountId,
|
||||
accountId: 'AccountId',
|
||||
balanceCompact: registry.createClass('Compact<Balance>'),
|
||||
blockNumber: registry.createClass('BlockNumber'),
|
||||
compactNumber: registry.createClass('Compact<BlockNumber>'),
|
||||
optionNumber: registry.createClass('Option<BlockNumber>'),
|
||||
counter: U32,
|
||||
vector: Vec.with(AccountId)
|
||||
vector: Vec.with('AccountId')
|
||||
}).toRawType()
|
||||
).toEqual(JSON.stringify({
|
||||
accountId: 'AccountId',
|
||||
balanceCompact: 'Compact<Balance>', // Override in Uint
|
||||
blockNumber: 'u32',
|
||||
compactNumber: 'Compact<u32>',
|
||||
optionNumber: 'Option<u32>',
|
||||
blockNumber: 'BlockNumber',
|
||||
compactNumber: 'Compact<BlockNumber>',
|
||||
optionNumber: 'Option<BlockNumber>',
|
||||
counter: 'u32',
|
||||
vector: 'Vec<AccountId>'
|
||||
}));
|
||||
@@ -242,7 +241,7 @@ describe('Struct', (): void => {
|
||||
|
||||
it('generates sane toRawType (via with)', (): void => {
|
||||
const Type = Struct.with({
|
||||
accountId: AccountId,
|
||||
accountId: 'AccountId',
|
||||
balance: registry.createClass('Balance')
|
||||
});
|
||||
|
||||
|
||||
@@ -267,11 +267,11 @@ export default class Struct<
|
||||
}
|
||||
|
||||
public static typesToMap (registry: Registry, Types: Record<string, Constructor>): Record<string, string> {
|
||||
return Object.entries(Types).reduce((result, [key, Type]): Record<string, string> => {
|
||||
result[key] = new Type(registry).toRawType();
|
||||
return Object.entries(Types).reduce((result: Record<string, string>, [key, Type]): Record<string, string> => {
|
||||
result[key] = registry.getClassName(Type) || new Type(registry).toRawType();
|
||||
|
||||
return result;
|
||||
}, {} as Record<string, string>);
|
||||
}, {});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -131,14 +131,14 @@ describe('Tuple', (): void => {
|
||||
it('generates sane value with array types', (): void => {
|
||||
expect(
|
||||
new Tuple(registry, [U128, registry.createClass('BlockNumber')]).toRawType()
|
||||
).toEqual('(u128,u32)');
|
||||
).toEqual('(u128,BlockNumber)');
|
||||
});
|
||||
|
||||
it('generates sane value with object types', (): void => {
|
||||
expect(
|
||||
// eslint-disable-next-line sort-keys
|
||||
new Tuple(registry, { number: U128, blockNumber: registry.createClass('BlockNumber') }).toRawType()
|
||||
).toEqual('(u128,u32)');
|
||||
).toEqual('(u128,BlockNumber)');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -101,7 +101,9 @@ export default class Tuple extends AbstractArray<Codec> {
|
||||
Array.isArray(this._Types)
|
||||
? this._Types
|
||||
: Object.values(this._Types)
|
||||
).map((Type): string => new Type(this.registry).toRawType());
|
||||
).map((Type) =>
|
||||
this.registry.getClassName(Type) || new Type(this.registry).toRawType()
|
||||
);
|
||||
|
||||
return `(${types.join(',')})`;
|
||||
}
|
||||
|
||||
@@ -8,10 +8,11 @@ import { isString, u8aToU8a } from '@polkadot/util';
|
||||
|
||||
import Raw from './Raw';
|
||||
|
||||
// The 520 here is a weird one - it is explicitly for a [u8; 65] as found as a EcdsaSignature
|
||||
// The 520 here is a weird one - it is explicitly for a [u8; 65] as found as a EcdsaSignature,
|
||||
// and 264 here is explicity for a [u8; 33] as found as EcdsaPublic key.
|
||||
// Likewise 160 is for [u8; 20], which is also a H160, i.e. an Ethereum address. Both these are
|
||||
// as a result of the Polkadot claims module. (Technically we don't need the 520 in here)
|
||||
export type BitLength = 8 | 16 | 32 | 64 | 128 | 160 | 256 | 512 | 520 | 1024 | 2048;
|
||||
export type BitLength = 8 | 16 | 32 | 64 | 128 | 160 | 256 | 264 | 512 | 520 | 1024 | 2048;
|
||||
|
||||
/** @internal */
|
||||
function decodeU8aFixed (value: AnyU8a, bitLength: BitLength): AnyU8a {
|
||||
|
||||
@@ -16,6 +16,12 @@ describe('UInt', (): void => {
|
||||
).toThrow('u32: Input too large. Found input with 164 bits, expected 32');
|
||||
});
|
||||
|
||||
it('fails on negative numbers', (): void => {
|
||||
expect(
|
||||
(): UInt => new UInt(registry, -123, 32)
|
||||
).toThrow('u32: Negative number passed to unsigned type');
|
||||
});
|
||||
|
||||
it('allows for construction via BigInt', (): void => {
|
||||
expect(
|
||||
new UInt(registry, 123456789123456789123456789n, 128).toHuman()
|
||||
|
||||
@@ -92,6 +92,6 @@ export default class Vec<T extends Codec> extends AbstractArray<T> {
|
||||
* @description Returns the base runtime type name for this instance
|
||||
*/
|
||||
public toRawType (): string {
|
||||
return `Vec<${new this._Type(this.registry).toRawType()}>`;
|
||||
return `Vec<${this.registry.getClassName(this._Type) || new this._Type(this.registry).toRawType()}>`;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
import { TypeDef, TypeDefInfo } from './types';
|
||||
|
||||
import { getTypeDef } from '.';
|
||||
import { TypeRegistry, getTypeDef } from '.';
|
||||
|
||||
describe('getTypeDef', (): void => {
|
||||
it('does not allow invalid tuples, end )', (): void => {
|
||||
@@ -290,4 +290,32 @@ describe('getTypeDef', (): void => {
|
||||
type: '[[u8;32];3]'
|
||||
});
|
||||
});
|
||||
|
||||
it('creates recursive structures', (): void => {
|
||||
const registry = new TypeRegistry();
|
||||
|
||||
registry.register({
|
||||
Recursive: {
|
||||
data: 'Vec<Recursive>'
|
||||
}
|
||||
});
|
||||
|
||||
const raw = registry.createType('Recursive' as 'u32').toRawType();
|
||||
|
||||
expect(
|
||||
getTypeDef(raw)
|
||||
).toEqual({
|
||||
info: TypeDefInfo.Struct,
|
||||
sub: [{
|
||||
info: TypeDefInfo.Vec,
|
||||
name: 'data',
|
||||
sub: {
|
||||
info: TypeDefInfo.Plain,
|
||||
type: 'Recursive'
|
||||
},
|
||||
type: 'Vec<Recursive>'
|
||||
}],
|
||||
type: '{"data":"Vec<Recursive>"}'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -9,10 +9,17 @@ import { assert } from '@polkadot/util';
|
||||
import sanitize from './sanitize';
|
||||
import { typeSplit } from './typeSplit';
|
||||
|
||||
interface TypeDefOptions {
|
||||
name?: string;
|
||||
displayName?: string;
|
||||
}
|
||||
|
||||
const MAX_NESTED = 64;
|
||||
|
||||
// decode an enum of either of the following forms
|
||||
// { _enum: ['A', 'B', 'C'] }
|
||||
// { _enum: { A: AccountId, B: Balance, C: u32 } }
|
||||
function _decodeEnum (value: TypeDef, details: string[] | Record<string, string>): TypeDef {
|
||||
function _decodeEnum (value: TypeDef, details: string[] | Record<string, string>, count: number): TypeDef {
|
||||
value.info = TypeDefInfo.Enum;
|
||||
|
||||
// not as pretty, but remain compatible with oo7 for both struct and Array types
|
||||
@@ -24,7 +31,7 @@ function _decodeEnum (value: TypeDef, details: string[] | Record<string, string>
|
||||
}))
|
||||
: Object.entries(details).map(([name, type]): TypeDef =>
|
||||
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||||
getTypeDef(type || 'Null', { name })
|
||||
getTypeDef(type || 'Null', { name }, count)
|
||||
);
|
||||
|
||||
return value;
|
||||
@@ -50,13 +57,13 @@ function _decodeSet (value: TypeDef, details: Record<string, number>): TypeDef {
|
||||
|
||||
// decode a struct, set or enum
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
function _decodeStruct (value: TypeDef, type: string, _: string): TypeDef {
|
||||
function _decodeStruct (value: TypeDef, type: string, _: string, count: number): TypeDef {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
const parsed: Record<string, any> = JSON.parse(type);
|
||||
const keys = Object.keys(parsed);
|
||||
|
||||
if (keys.length === 1 && keys[0] === '_enum') {
|
||||
return _decodeEnum(value, parsed[keys[0]]);
|
||||
return _decodeEnum(value, parsed[keys[0]], count);
|
||||
} else if (keys.length === 1 && keys[0] === '_set') {
|
||||
return _decodeSet(value, parsed[keys[0]]);
|
||||
}
|
||||
@@ -66,7 +73,7 @@ function _decodeStruct (value: TypeDef, type: string, _: string): TypeDef {
|
||||
: undefined;
|
||||
value.sub = keys.filter((name) => !['_alias'].includes(name)).map((name): TypeDef =>
|
||||
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||||
getTypeDef(parsed[name], { name })
|
||||
getTypeDef(parsed[name], { name }, count)
|
||||
);
|
||||
|
||||
return value;
|
||||
@@ -74,7 +81,7 @@ function _decodeStruct (value: TypeDef, type: string, _: string): TypeDef {
|
||||
|
||||
// decode a fixed vector, e.g. [u8;32]
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
function _decodeFixedVec (value: TypeDef, type: string, _: string): TypeDef {
|
||||
function _decodeFixedVec (value: TypeDef, type: string, _: string, count: number): TypeDef {
|
||||
const [vecType, strLength, displayName] = type.substr(1, type.length - 2).split(';');
|
||||
const length = parseInt(strLength.trim(), 10);
|
||||
|
||||
@@ -84,18 +91,18 @@ function _decodeFixedVec (value: TypeDef, type: string, _: string): TypeDef {
|
||||
value.displayName = displayName;
|
||||
value.length = length;
|
||||
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||||
value.sub = getTypeDef(vecType);
|
||||
value.sub = getTypeDef(vecType, {}, count);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
// decode a tuple
|
||||
function _decodeTuple (value: TypeDef, _: string, subType: string): TypeDef {
|
||||
function _decodeTuple (value: TypeDef, _: string, subType: string, count: number): TypeDef {
|
||||
value.sub = subType.length === 0
|
||||
? []
|
||||
: typeSplit(subType).map((inner): TypeDef =>
|
||||
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||||
getTypeDef(inner)
|
||||
getTypeDef(inner, {}, count)
|
||||
);
|
||||
|
||||
return value;
|
||||
@@ -103,7 +110,7 @@ function _decodeTuple (value: TypeDef, _: string, subType: string): TypeDef {
|
||||
|
||||
// decode a Int/UInt<bitLength[, name]>
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
function _decodeInt (value: TypeDef, type: string, _: string, clazz: 'Int' | 'UInt' = 'Int'): TypeDef {
|
||||
function _decodeAnyInt (value: TypeDef, type: string, _: string, clazz: 'Int' | 'UInt'): TypeDef {
|
||||
const [strLength, displayName] = type.substr(clazz.length + 1, type.length - clazz.length - 1 - 1).split(',');
|
||||
const length = parseInt(strLength.trim(), 10);
|
||||
|
||||
@@ -116,8 +123,12 @@ function _decodeInt (value: TypeDef, type: string, _: string, clazz: 'Int' | 'UI
|
||||
return value;
|
||||
}
|
||||
|
||||
function _decodeInt (value: TypeDef, type: string, subType: string): TypeDef {
|
||||
return _decodeAnyInt(value, type, subType, 'Int');
|
||||
}
|
||||
|
||||
function _decodeUInt (value: TypeDef, type: string, subType: string): TypeDef {
|
||||
return _decodeInt(value, type, subType, 'UInt');
|
||||
return _decodeAnyInt(value, type, subType, 'UInt');
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
@@ -139,7 +150,7 @@ function hasWrapper (type: string, [start, end]: [string, string, TypeDefInfo, a
|
||||
return true;
|
||||
}
|
||||
|
||||
const nestedExtraction: [string, string, TypeDefInfo, (value: TypeDef, type: string, subType: string) => TypeDef][] = [
|
||||
const nestedExtraction: [string, string, TypeDefInfo, (value: TypeDef, type: string, subType: string, count: number) => TypeDef][] = [
|
||||
['[', ']', TypeDefInfo.VecFixed, _decodeFixedVec],
|
||||
['{', '}', TypeDefInfo.Struct, _decodeStruct],
|
||||
['(', ')', TypeDefInfo.Tuple, _decodeTuple],
|
||||
@@ -164,15 +175,17 @@ function extractSubType (type: string, [start, end]: [string, string, TypeDefInf
|
||||
return type.substr(start.length, type.length - start.length - end.length);
|
||||
}
|
||||
|
||||
interface TypeDefOptions {
|
||||
name?: string;
|
||||
displayName?: string;
|
||||
}
|
||||
|
||||
export function getTypeDef (_type: string, { displayName, name }: TypeDefOptions = {}): TypeDef {
|
||||
export function getTypeDef (_type: string, { displayName, name }: TypeDefOptions = {}, count = 0): TypeDef {
|
||||
// create the type via Type, allowing types to be sanitized
|
||||
const type = sanitize(_type);
|
||||
const value: TypeDef = { displayName, info: TypeDefInfo.Plain, name, type };
|
||||
|
||||
if (++count === MAX_NESTED) {
|
||||
console.warn('getTypeDef: Maximum nested limit reached');
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
const nested = nestedExtraction.find((nested): boolean =>
|
||||
hasWrapper(type, nested)
|
||||
);
|
||||
@@ -180,7 +193,7 @@ export function getTypeDef (_type: string, { displayName, name }: TypeDefOptions
|
||||
if (nested) {
|
||||
value.info = nested[2];
|
||||
|
||||
return nested[3](value, type, extractSubType(type, nested));
|
||||
return nested[3](value, type, extractSubType(type, nested), count);
|
||||
}
|
||||
|
||||
const wrapped = wrappedExtraction.find((wrapped): boolean =>
|
||||
@@ -189,7 +202,7 @@ export function getTypeDef (_type: string, { displayName, name }: TypeDefOptions
|
||||
|
||||
if (wrapped) {
|
||||
value.info = wrapped[2];
|
||||
value.sub = getTypeDef(extractSubType(type, wrapped));
|
||||
value.sub = getTypeDef(extractSubType(type, wrapped), {}, count);
|
||||
}
|
||||
|
||||
return value;
|
||||
|
||||
@@ -76,7 +76,35 @@ describe('TypeRegistry', (): void => {
|
||||
expect((first as any).next.unwrap().next.isSome).toBe(false);
|
||||
});
|
||||
|
||||
it('can register cross-referencing types ()', (): void => {
|
||||
it('can register non-embedded recursive types', (): void => {
|
||||
registry.register({
|
||||
Operation: {
|
||||
data: 'OperationData'
|
||||
},
|
||||
OperationData: {
|
||||
ops: 'Vec<Operation>'
|
||||
},
|
||||
Rule: {
|
||||
data: 'RuleData'
|
||||
},
|
||||
RuleData: {
|
||||
ops: 'Vec<Operation>'
|
||||
}
|
||||
});
|
||||
|
||||
expect(registry.hasDef('Rule')).toBe(true);
|
||||
expect(registry.hasClass('Rule')).toBe(false);
|
||||
|
||||
const Rule = registry.getOrThrow('Rule');
|
||||
|
||||
expect(registry.hasClass('Rule')).toBe(true);
|
||||
|
||||
const instance = new Rule(registry);
|
||||
|
||||
expect(instance.toRawType()).toEqual('{"data":"RuleData"}');
|
||||
});
|
||||
|
||||
it('can register cross-referencing types', (): void => {
|
||||
registry.register({
|
||||
A: {
|
||||
next: 'B'
|
||||
|
||||
@@ -153,7 +153,7 @@ export class TypeRegistry implements Registry {
|
||||
/**
|
||||
* @description Creates an instance of a type as registered
|
||||
*/
|
||||
public createType <K extends keyof InterfaceTypes> (type: K, ...params: any[]): InterfaceTypes[K] {
|
||||
public createType <K extends keyof InterfaceTypes> (type: K, ...params: unknown[]): InterfaceTypes[K] {
|
||||
return createType(this, type, ...params);
|
||||
}
|
||||
|
||||
@@ -225,6 +225,14 @@ export class TypeRegistry implements Registry {
|
||||
return this.#chainProperties;
|
||||
}
|
||||
|
||||
public getClassName (clazz: Constructor): string | undefined {
|
||||
const entry = [...this.#classes.entries()].find(([, test]) => test === clazz);
|
||||
|
||||
return entry
|
||||
? entry[0]
|
||||
: undefined;
|
||||
}
|
||||
|
||||
public getDefinition (name: string): string | undefined {
|
||||
return this.#definitions.get(name);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright 2017-2020 @polkadot/types authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
export default {
|
||||
extra: {},
|
||||
types: {}
|
||||
};
|
||||
@@ -4,29 +4,13 @@
|
||||
|
||||
import { ExtDef } from './types';
|
||||
|
||||
import EmptyCheck from './emptyCheck';
|
||||
|
||||
export default {
|
||||
LimitParathreadCommits: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
OnlyStakingAndClaims: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
PrevalidateAttests: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
RestrictFunctionality: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
TransactionCallFilter: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
ValidateDoubleVoteReports: {
|
||||
extra: {},
|
||||
types: {}
|
||||
}
|
||||
LimitParathreadCommits: EmptyCheck,
|
||||
OnlyStakingAndClaims: EmptyCheck,
|
||||
PrevalidateAttests: EmptyCheck,
|
||||
RestrictFunctionality: EmptyCheck,
|
||||
TransactionCallFilter: EmptyCheck,
|
||||
ValidateDoubleVoteReports: EmptyCheck
|
||||
} as ExtDef;
|
||||
|
||||
@@ -4,6 +4,17 @@
|
||||
|
||||
import { ExtDef } from './types';
|
||||
|
||||
import EmptyCheck from './emptyCheck';
|
||||
|
||||
const CheckMortality = {
|
||||
extra: {
|
||||
blockHash: 'Hash'
|
||||
},
|
||||
types: {
|
||||
era: 'ExtrinsicEra'
|
||||
}
|
||||
};
|
||||
|
||||
export default {
|
||||
ChargeTransactionPayment: {
|
||||
extra: {},
|
||||
@@ -11,24 +22,15 @@ export default {
|
||||
tip: 'Compact<Balance>'
|
||||
}
|
||||
},
|
||||
CheckBlockGasLimit: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
CheckEra: {
|
||||
extra: {
|
||||
blockHash: 'Hash'
|
||||
},
|
||||
types: {
|
||||
era: 'ExtrinsicEra'
|
||||
}
|
||||
},
|
||||
CheckBlockGasLimit: EmptyCheck,
|
||||
CheckEra: CheckMortality,
|
||||
CheckGenesis: {
|
||||
extra: {
|
||||
genesisHash: 'Hash'
|
||||
},
|
||||
types: {}
|
||||
},
|
||||
CheckMortality,
|
||||
CheckNonce: {
|
||||
extra: {},
|
||||
types: {
|
||||
@@ -53,16 +55,7 @@ export default {
|
||||
},
|
||||
types: {}
|
||||
},
|
||||
CheckWeight: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
LockStakingStatus: {
|
||||
extra: {},
|
||||
types: {}
|
||||
},
|
||||
ValidateEquivocationReport: {
|
||||
extra: {},
|
||||
types: {}
|
||||
}
|
||||
CheckWeight: EmptyCheck,
|
||||
LockStakingStatus: EmptyCheck,
|
||||
ValidateEquivocationReport: EmptyCheck
|
||||
} as ExtDef;
|
||||
|
||||
@@ -24,15 +24,7 @@ describe('Block', (): void => {
|
||||
).toEqual(
|
||||
// each of the containing structures have been stringified on their own
|
||||
JSON.stringify({
|
||||
header: JSON.stringify({
|
||||
parentHash: 'H256',
|
||||
number: 'Compact<u32>',
|
||||
stateRoot: 'H256',
|
||||
extrinsicsRoot: 'H256',
|
||||
digest: JSON.stringify({
|
||||
logs: 'Vec<{"_enum":{"Other":"Bytes","AuthoritiesChange":"Vec<AccountId>","ChangesTrieRoot":"H256","SealV0":"(u64,H512)","Consensus":"(u32,Bytes)","Seal":"(u32,Bytes)","PreRuntime":"(u32,Bytes)"}}>'
|
||||
})
|
||||
}),
|
||||
header: 'Header',
|
||||
extrinsics: 'Vec<Extrinsic>'
|
||||
})
|
||||
);
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
|
||||
/* eslint-disable */
|
||||
|
||||
export type PHANTOM_ACCOUNT = 'account';
|
||||
@@ -21,10 +21,15 @@ export default {
|
||||
},
|
||||
BabeAuthorityWeight: 'u64',
|
||||
BabeBlockWeight: 'u32',
|
||||
BabeEquivocationProof: {
|
||||
offender: 'AuthorityId',
|
||||
slotNumber: 'SlotNumber',
|
||||
firstHeader: 'Header',
|
||||
secondHeader: 'Header'
|
||||
},
|
||||
BabeWeight: 'u64',
|
||||
MaybeRandomness: 'Option<Randomness>',
|
||||
MaybeVrf: 'Option<VrfData>',
|
||||
// TODO Remove as soon as merged and metadata static updated
|
||||
BabeWeight: 'u64',
|
||||
EpochAuthorship: {
|
||||
primary: 'Vec<u64>',
|
||||
secondary: 'Vec<u64>'
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
import { ITuple } from '@polkadot/types/types';
|
||||
import { Enum, Option, Struct, U8aFixed, Vec } from '@polkadot/types/codec';
|
||||
import { u32, u64 } from '@polkadot/types/primitive';
|
||||
import { Hash } from '@polkadot/types/interfaces/runtime';
|
||||
import { AuthorityId } from '@polkadot/types/interfaces/consensus';
|
||||
import { Hash, Header } from '@polkadot/types/interfaces/runtime';
|
||||
|
||||
/** @name AllowedSlots */
|
||||
export interface AllowedSlots extends Enum {
|
||||
@@ -19,6 +20,14 @@ export interface BabeAuthorityWeight extends u64 {}
|
||||
/** @name BabeBlockWeight */
|
||||
export interface BabeBlockWeight extends u32 {}
|
||||
|
||||
/** @name BabeEquivocationProof */
|
||||
export interface BabeEquivocationProof extends Struct {
|
||||
readonly offender: AuthorityId;
|
||||
readonly slotNumber: SlotNumber;
|
||||
readonly firstHeader: Header;
|
||||
readonly secondHeader: Header;
|
||||
}
|
||||
|
||||
/** @name BabeWeight */
|
||||
export interface BabeWeight extends u64 {}
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ export default {
|
||||
amount: 'Balance',
|
||||
reasons: 'Reasons'
|
||||
},
|
||||
ReleasesBalances: {
|
||||
_enum: ['V1_0_0', 'V2_0_0']
|
||||
BalanceStatus: {
|
||||
_enum: ['Free', 'Reserved']
|
||||
},
|
||||
Reasons: {
|
||||
_enum: ['Fee', 'Misc', 'All']
|
||||
|
||||
@@ -27,6 +27,12 @@ export interface BalanceLockTo212 extends Struct {
|
||||
readonly reasons: WithdrawReasons;
|
||||
}
|
||||
|
||||
/** @name BalanceStatus */
|
||||
export interface BalanceStatus extends Enum {
|
||||
readonly isFree: boolean;
|
||||
readonly isReserved: boolean;
|
||||
}
|
||||
|
||||
/** @name Reasons */
|
||||
export interface Reasons extends Enum {
|
||||
readonly isFee: boolean;
|
||||
@@ -34,12 +40,6 @@ export interface Reasons extends Enum {
|
||||
readonly isAll: boolean;
|
||||
}
|
||||
|
||||
/** @name ReleasesBalances */
|
||||
export interface ReleasesBalances extends Enum {
|
||||
readonly isV100: boolean;
|
||||
readonly isV200: boolean;
|
||||
}
|
||||
|
||||
/** @name VestingSchedule */
|
||||
export interface VestingSchedule extends Struct {
|
||||
readonly offset: Balance;
|
||||
|
||||
@@ -39,13 +39,13 @@ export { default as vesting } from './vesting/definitions';
|
||||
export { default as attestations } from './attestations/definitions';
|
||||
export { default as claims } from './claims/definitions';
|
||||
export { default as parachains } from './parachains/definitions';
|
||||
export { default as poll } from './poll/definitions';
|
||||
|
||||
// pull in metadata & rpc last, assuming that is uses info from above
|
||||
export { default as metadata } from './metadata/definitions';
|
||||
export { default as rpc } from './rpc/definitions';
|
||||
|
||||
// rpc-only definitions
|
||||
export { default as account } from './account/definitions';
|
||||
export { default as author } from './author/definitions';
|
||||
export { default as chain } from './chain/definitions';
|
||||
export { default as childstate } from './childstate/definitions';
|
||||
|
||||
@@ -96,9 +96,6 @@ export default {
|
||||
delay: 'BlockNumber',
|
||||
tally: 'Tally'
|
||||
},
|
||||
ReleasesDemocracy: {
|
||||
_enum: ['V1']
|
||||
},
|
||||
Tally: {
|
||||
ayes: 'Balance',
|
||||
nays: 'Balance',
|
||||
|
||||
@@ -112,11 +112,6 @@ export interface ReferendumStatus extends Struct {
|
||||
readonly tally: Tally;
|
||||
}
|
||||
|
||||
/** @name ReleasesDemocracy */
|
||||
export interface ReleasesDemocracy extends Enum {
|
||||
readonly isV1: boolean;
|
||||
}
|
||||
|
||||
/** @name Tally */
|
||||
export interface Tally extends Struct {
|
||||
readonly ayes: Balance;
|
||||
|
||||
@@ -19,17 +19,17 @@ export default {
|
||||
AuthorityIndex: 'u64',
|
||||
AuthorityList: 'Vec<NextAuthority>',
|
||||
AuthorityWeight: 'u64',
|
||||
Equivocation: {
|
||||
GrandpaEquivocation: {
|
||||
_enum: {
|
||||
Prevote: 'GrandpaEquivocation',
|
||||
Precommit: 'GrandpaEquivocation'
|
||||
Prevote: 'GrandpaEquivocationValue',
|
||||
Precommit: 'GrandpaEquivocationValue'
|
||||
}
|
||||
},
|
||||
EquivocationProof: {
|
||||
GrandpaEquivocationProof: {
|
||||
setId: 'SetId',
|
||||
equivocation: 'Equivocation'
|
||||
equivocation: 'GrandpaEquivocation'
|
||||
},
|
||||
GrandpaEquivocation: {
|
||||
GrandpaEquivocationValue: {
|
||||
roundNumber: 'u64',
|
||||
identity: 'AuthorityId',
|
||||
first: '(GrandpaPrevote, AuthoritySignature)',
|
||||
|
||||
@@ -18,22 +18,22 @@ export interface AuthorityList extends Vec<NextAuthority> {}
|
||||
/** @name AuthorityWeight */
|
||||
export interface AuthorityWeight extends u64 {}
|
||||
|
||||
/** @name Equivocation */
|
||||
export interface Equivocation extends Enum {
|
||||
readonly isPrevote: boolean;
|
||||
readonly asPrevote: GrandpaEquivocation;
|
||||
readonly isPrecommit: boolean;
|
||||
readonly asPrecommit: GrandpaEquivocation;
|
||||
}
|
||||
|
||||
/** @name EquivocationProof */
|
||||
export interface EquivocationProof extends Struct {
|
||||
readonly setId: SetId;
|
||||
readonly equivocation: Equivocation;
|
||||
}
|
||||
|
||||
/** @name GrandpaEquivocation */
|
||||
export interface GrandpaEquivocation extends Struct {
|
||||
export interface GrandpaEquivocation extends Enum {
|
||||
readonly isPrevote: boolean;
|
||||
readonly asPrevote: GrandpaEquivocationValue;
|
||||
readonly isPrecommit: boolean;
|
||||
readonly asPrecommit: GrandpaEquivocationValue;
|
||||
}
|
||||
|
||||
/** @name GrandpaEquivocationProof */
|
||||
export interface GrandpaEquivocationProof extends Struct {
|
||||
readonly setId: SetId;
|
||||
readonly equivocation: GrandpaEquivocation;
|
||||
}
|
||||
|
||||
/** @name GrandpaEquivocationValue */
|
||||
export interface GrandpaEquivocationValue extends Struct {
|
||||
readonly roundNumber: u64;
|
||||
readonly identity: AuthorityId;
|
||||
readonly first: ITuple<[GrandpaPrevote, AuthoritySignature]>;
|
||||
|
||||
@@ -7,11 +7,22 @@
|
||||
|
||||
import { Definitions } from '../../types';
|
||||
|
||||
const SLOT_RANGE_COUNT = 10;
|
||||
|
||||
export default {
|
||||
rpc: {},
|
||||
types: {
|
||||
AbridgedCandidateReceipt: {
|
||||
parachainIndex: 'ParaId',
|
||||
relayParent: 'Hash',
|
||||
headData: 'HeadData',
|
||||
collator: 'CollatorId',
|
||||
signature: 'CollatorSignature',
|
||||
povBlockHash: 'Hash',
|
||||
commitments: 'CandidateCommitments'
|
||||
},
|
||||
AttestedCandidate: {
|
||||
candidate: 'CandidateReceipt',
|
||||
candidate: 'AbridgedCandidateReceipt',
|
||||
validityVotes: 'Vec<ValidityAttestation>',
|
||||
validatorIndices: 'BitVec'
|
||||
},
|
||||
@@ -22,42 +33,45 @@ export default {
|
||||
Existing: 'ParaId'
|
||||
}
|
||||
},
|
||||
CandidateCommitments: {
|
||||
fees: 'Balance',
|
||||
upwardMessages: 'Vec<UpwardMessage>',
|
||||
erasureRoot: 'Hash',
|
||||
newValidationCode: 'Option<ValidationCode>',
|
||||
processedDownwardMessages: 'u32'
|
||||
},
|
||||
CandidateReceipt: {
|
||||
parachainIndex: 'ParaId',
|
||||
relayParent: 'Hash',
|
||||
head_data: 'HeadData',
|
||||
collator: 'CollatorId',
|
||||
signature: 'CollatorSignature',
|
||||
headData: 'HeadData',
|
||||
egressQueueRoots: 'Vec<(ParaId, Hash)>',
|
||||
fees: 'Balance',
|
||||
blockDataHash: 'Hash',
|
||||
upwardMessages: 'Vec<UpwardMessage>',
|
||||
erasureRoot: 'Hash'
|
||||
povBlockHash: 'Hash',
|
||||
globalValidation: 'GlobalValidationSchedule',
|
||||
localValidation: 'LocalValidationData',
|
||||
commitments: 'CandidateCommitments'
|
||||
},
|
||||
CollatorId: 'H256',
|
||||
CollatorId: '[u8; 32]',
|
||||
CollatorSignature: 'Signature',
|
||||
DoubleVoteReport: {
|
||||
identity: 'ValidatorId',
|
||||
first: 'DoubleVoteReportStatement',
|
||||
second: 'DoubleVoteReportStatement',
|
||||
proof: 'DoubleVoteReportProof',
|
||||
first: '(Statement, ValidatorSignature)',
|
||||
second: '(Statement, ValidatorSignature)',
|
||||
proof: 'MembershipProof',
|
||||
signingContext: 'SigningContext'
|
||||
},
|
||||
// session::historical::Proof
|
||||
DoubleVoteReportProof: {
|
||||
session: 'SessionIndex',
|
||||
trieNodes: 'Vec<Bytes>'
|
||||
DownwardMessage: {
|
||||
_enum: {
|
||||
TransferInto: '(AccountId, Balance, Remark)',
|
||||
Opaque: 'Vec<u8>'
|
||||
}
|
||||
},
|
||||
GlobalValidationSchedule: {
|
||||
maxCodeSize: 'u32',
|
||||
maxHeadDataSize: 'u32',
|
||||
blockNumber: 'BlockNumber'
|
||||
},
|
||||
DoubleVoteReportStatement: '(Statement, ValidatorSignature)',
|
||||
EgressQueueRoot: '(ParaId, Hash)',
|
||||
HeadData: 'Bytes',
|
||||
IncomingParachainDeploy: {
|
||||
code: 'Bytes',
|
||||
initialHeadData: 'Bytes'
|
||||
},
|
||||
IncomingParachainFixed: {
|
||||
codeHash: 'Hash',
|
||||
initialHeadData: 'Bytes'
|
||||
},
|
||||
IncomingParachain: {
|
||||
_enum: {
|
||||
Unset: 'NewBidder',
|
||||
@@ -65,55 +79,60 @@ export default {
|
||||
Deploy: 'IncomingParachainDeploy'
|
||||
}
|
||||
},
|
||||
IncomingParachainFixed: {
|
||||
codeHash: 'Hash',
|
||||
codeSize: 'u32',
|
||||
initialHeadData: 'HeadData'
|
||||
},
|
||||
IncomingParachainDeploy: {
|
||||
code: 'ValidationCode',
|
||||
initialHeadData: 'HeadData'
|
||||
},
|
||||
LeasePeriod: 'BlockNumber',
|
||||
LeasePeriodOf: 'LeasePeriod',
|
||||
LocalValidationData: {
|
||||
parentHead: 'HeadData',
|
||||
balance: 'Balance',
|
||||
codeUpgradeAllowed: 'Option<BlockNumber>'
|
||||
},
|
||||
NewBidder: {
|
||||
who: 'AccountId',
|
||||
sub: 'SubId'
|
||||
},
|
||||
ParachainDispatchOrigin: {
|
||||
_enum: ['Signed', 'Parachain', 'Root']
|
||||
},
|
||||
ParaId: 'u32',
|
||||
ParaIdOf: 'ParaId',
|
||||
ParaInfo: {
|
||||
scheduling: 'ParaScheduling'
|
||||
scheduling: 'Scheduling'
|
||||
},
|
||||
ParaPastCodeMeta: {
|
||||
upgradeTimes: 'Vec<BlockNumber>',
|
||||
lastPruned: 'Option<BlockNumber>'
|
||||
},
|
||||
ParachainDispatchOrigin: {
|
||||
_enum: ['Signed', 'Parachain']
|
||||
},
|
||||
ParaScheduling: {
|
||||
_enum: ['Always', 'Dynamic']
|
||||
},
|
||||
Remark: '[u8; 32]',
|
||||
Retriable: {
|
||||
_enum: {
|
||||
Never: 'Null',
|
||||
WithRetries: 'u32'
|
||||
}
|
||||
},
|
||||
Scheduling: {
|
||||
_enum: ['Always', 'Dynamic']
|
||||
},
|
||||
SigningContext: {
|
||||
sessionIndex: 'SessionIndex',
|
||||
parentHash: 'Hash'
|
||||
},
|
||||
SlotRange: {
|
||||
_enum: [
|
||||
'ZeroZero', // 0
|
||||
'ZeroOne', // 1,
|
||||
'ZeroTwo', // 2,
|
||||
'ZeroThree', // 3,
|
||||
'OneOne', // 4,
|
||||
'OneTwo', // 5,
|
||||
'OneThree', // 6,
|
||||
'TwoTwo', // 7,
|
||||
'TwoThree', // 8,
|
||||
'ThreeThree' // 9
|
||||
]
|
||||
_enum: ['ZeroZero', 'ZeroOne', 'ZeroTwo', 'ZeroThree', 'OneOne', 'OneTwo', 'OneThree', 'TwoTwo', 'TwoThree', 'ThreeThree']
|
||||
},
|
||||
Statement: {
|
||||
_enum: {
|
||||
// This Null is not in the original, however indexes start at 1
|
||||
Never: 'Null',
|
||||
Never: 'Null', // starts at 1
|
||||
Candidate: 'Hash',
|
||||
Valid: 'Hash',
|
||||
Invalid: 'Hash'
|
||||
@@ -122,19 +141,18 @@ export default {
|
||||
SubId: 'u32',
|
||||
UpwardMessage: {
|
||||
origin: 'ParachainDispatchOrigin',
|
||||
data: 'Bytes'
|
||||
data: 'Vec<u8>'
|
||||
},
|
||||
ValidationCode: 'Bytes',
|
||||
ValidatorSignature: 'Signature',
|
||||
ValidityAttestation: {
|
||||
_enum: {
|
||||
// This Null is not in the original, however indexes start at 1
|
||||
Never: 'Null',
|
||||
Implicit: 'ValidatorSignature', // 1
|
||||
Explicit: 'ValidatorSignature' // 2
|
||||
Never: 'Null', // starts at 1
|
||||
Implicit: 'ValidatorSignature',
|
||||
Explicit: 'ValidatorSignature'
|
||||
}
|
||||
},
|
||||
ValidatorSignature: 'Signature',
|
||||
WinningDataEntry: '(AccountId, ParaIdOf, BalanceOf)',
|
||||
WinningData: '[WinningDataEntry; 10]'
|
||||
WinningData: `[WinningDataEntry; ${SLOT_RANGE_COUNT}]`,
|
||||
WinningDataEntry: 'Option<Bidder>'
|
||||
}
|
||||
} as Definitions;
|
||||
|
||||
@@ -2,15 +2,26 @@
|
||||
/* eslint-disable */
|
||||
|
||||
import { ITuple } from '@polkadot/types/types';
|
||||
import { Enum, Option, Struct, Vec } from '@polkadot/types/codec';
|
||||
import { Enum, Option, Struct, U8aFixed, Vec } from '@polkadot/types/codec';
|
||||
import { BitVec, Bytes, u32 } from '@polkadot/types/primitive';
|
||||
import { Signature } from '@polkadot/types/interfaces/extrinsics';
|
||||
import { AccountId, Balance, BalanceOf, BlockNumber, H256, Hash, ValidatorId } from '@polkadot/types/interfaces/runtime';
|
||||
import { SessionIndex } from '@polkadot/types/interfaces/session';
|
||||
import { AccountId, Balance, BlockNumber, Hash, ValidatorId } from '@polkadot/types/interfaces/runtime';
|
||||
import { MembershipProof, SessionIndex } from '@polkadot/types/interfaces/session';
|
||||
|
||||
/** @name AbridgedCandidateReceipt */
|
||||
export interface AbridgedCandidateReceipt extends Struct {
|
||||
readonly parachainIndex: ParaId;
|
||||
readonly relayParent: Hash;
|
||||
readonly headData: HeadData;
|
||||
readonly collator: CollatorId;
|
||||
readonly signature: CollatorSignature;
|
||||
readonly povBlockHash: Hash;
|
||||
readonly commitments: CandidateCommitments;
|
||||
}
|
||||
|
||||
/** @name AttestedCandidate */
|
||||
export interface AttestedCandidate extends Struct {
|
||||
readonly candidate: CandidateReceipt;
|
||||
readonly candidate: AbridgedCandidateReceipt;
|
||||
readonly validityVotes: Vec<ValidityAttestation>;
|
||||
readonly validatorIndices: BitVec;
|
||||
}
|
||||
@@ -26,21 +37,30 @@ export interface Bidder extends Enum {
|
||||
readonly asExisting: ParaId;
|
||||
}
|
||||
|
||||
/** @name CandidateCommitments */
|
||||
export interface CandidateCommitments extends Struct {
|
||||
readonly fees: Balance;
|
||||
readonly upwardMessages: Vec<UpwardMessage>;
|
||||
readonly erasureRoot: Hash;
|
||||
readonly newValidationCode: Option<ValidationCode>;
|
||||
readonly processedDownwardMessages: u32;
|
||||
}
|
||||
|
||||
/** @name CandidateReceipt */
|
||||
export interface CandidateReceipt extends Struct {
|
||||
readonly parachainIndex: ParaId;
|
||||
readonly relayParent: Hash;
|
||||
readonly head_data: HeadData;
|
||||
readonly collator: CollatorId;
|
||||
readonly signature: CollatorSignature;
|
||||
readonly headData: HeadData;
|
||||
readonly egressQueueRoots: Vec<ITuple<[ParaId, Hash]>>;
|
||||
readonly fees: Balance;
|
||||
readonly blockDataHash: Hash;
|
||||
readonly upwardMessages: Vec<UpwardMessage>;
|
||||
readonly erasureRoot: Hash;
|
||||
readonly povBlockHash: Hash;
|
||||
readonly globalValidation: GlobalValidationSchedule;
|
||||
readonly localValidation: LocalValidationData;
|
||||
readonly commitments: CandidateCommitments;
|
||||
}
|
||||
|
||||
/** @name CollatorId */
|
||||
export interface CollatorId extends H256 {}
|
||||
export interface CollatorId extends U8aFixed {}
|
||||
|
||||
/** @name CollatorSignature */
|
||||
export interface CollatorSignature extends Signature {}
|
||||
@@ -48,23 +68,26 @@ export interface CollatorSignature extends Signature {}
|
||||
/** @name DoubleVoteReport */
|
||||
export interface DoubleVoteReport extends Struct {
|
||||
readonly identity: ValidatorId;
|
||||
readonly first: DoubleVoteReportStatement;
|
||||
readonly second: DoubleVoteReportStatement;
|
||||
readonly proof: DoubleVoteReportProof;
|
||||
readonly first: ITuple<[Statement, ValidatorSignature]>;
|
||||
readonly second: ITuple<[Statement, ValidatorSignature]>;
|
||||
readonly proof: MembershipProof;
|
||||
readonly signingContext: SigningContext;
|
||||
}
|
||||
|
||||
/** @name DoubleVoteReportProof */
|
||||
export interface DoubleVoteReportProof extends Struct {
|
||||
readonly session: SessionIndex;
|
||||
readonly trieNodes: Vec<Bytes>;
|
||||
/** @name DownwardMessage */
|
||||
export interface DownwardMessage extends Enum {
|
||||
readonly isTransferInto: boolean;
|
||||
readonly asTransferInto: ITuple<[AccountId, Balance, Remark]>;
|
||||
readonly isOpaque: boolean;
|
||||
readonly asOpaque: Bytes;
|
||||
}
|
||||
|
||||
/** @name DoubleVoteReportStatement */
|
||||
export interface DoubleVoteReportStatement extends ITuple<[Statement, ValidatorSignature]> {}
|
||||
|
||||
/** @name EgressQueueRoot */
|
||||
export interface EgressQueueRoot extends ITuple<[ParaId, Hash]> {}
|
||||
/** @name GlobalValidationSchedule */
|
||||
export interface GlobalValidationSchedule extends Struct {
|
||||
readonly maxCodeSize: u32;
|
||||
readonly maxHeadDataSize: u32;
|
||||
readonly blockNumber: BlockNumber;
|
||||
}
|
||||
|
||||
/** @name HeadData */
|
||||
export interface HeadData extends Bytes {}
|
||||
@@ -81,14 +104,15 @@ export interface IncomingParachain extends Enum {
|
||||
|
||||
/** @name IncomingParachainDeploy */
|
||||
export interface IncomingParachainDeploy extends Struct {
|
||||
readonly code: Bytes;
|
||||
readonly initialHeadData: Bytes;
|
||||
readonly code: ValidationCode;
|
||||
readonly initialHeadData: HeadData;
|
||||
}
|
||||
|
||||
/** @name IncomingParachainFixed */
|
||||
export interface IncomingParachainFixed extends Struct {
|
||||
readonly codeHash: Hash;
|
||||
readonly initialHeadData: Bytes;
|
||||
readonly codeSize: u32;
|
||||
readonly initialHeadData: HeadData;
|
||||
}
|
||||
|
||||
/** @name LeasePeriod */
|
||||
@@ -97,6 +121,13 @@ export interface LeasePeriod extends BlockNumber {}
|
||||
/** @name LeasePeriodOf */
|
||||
export interface LeasePeriodOf extends LeasePeriod {}
|
||||
|
||||
/** @name LocalValidationData */
|
||||
export interface LocalValidationData extends Struct {
|
||||
readonly parentHead: HeadData;
|
||||
readonly balance: Balance;
|
||||
readonly codeUpgradeAllowed: Option<BlockNumber>;
|
||||
}
|
||||
|
||||
/** @name NewBidder */
|
||||
export interface NewBidder extends Struct {
|
||||
readonly who: AccountId;
|
||||
@@ -107,17 +138,15 @@ export interface NewBidder extends Struct {
|
||||
export interface ParachainDispatchOrigin extends Enum {
|
||||
readonly isSigned: boolean;
|
||||
readonly isParachain: boolean;
|
||||
readonly isRoot: boolean;
|
||||
}
|
||||
|
||||
/** @name ParaId */
|
||||
export interface ParaId extends u32 {}
|
||||
|
||||
/** @name ParaIdOf */
|
||||
export interface ParaIdOf extends ParaId {}
|
||||
|
||||
/** @name ParaInfo */
|
||||
export interface ParaInfo extends Struct {
|
||||
readonly scheduling: ParaScheduling;
|
||||
readonly scheduling: Scheduling;
|
||||
}
|
||||
|
||||
/** @name ParaPastCodeMeta */
|
||||
@@ -132,6 +161,9 @@ export interface ParaScheduling extends Enum {
|
||||
readonly isDynamic: boolean;
|
||||
}
|
||||
|
||||
/** @name Remark */
|
||||
export interface Remark extends U8aFixed {}
|
||||
|
||||
/** @name Retriable */
|
||||
export interface Retriable extends Enum {
|
||||
readonly isNever: boolean;
|
||||
@@ -139,6 +171,12 @@ export interface Retriable extends Enum {
|
||||
readonly asWithRetries: u32;
|
||||
}
|
||||
|
||||
/** @name Scheduling */
|
||||
export interface Scheduling extends Enum {
|
||||
readonly isAlways: boolean;
|
||||
readonly isDynamic: boolean;
|
||||
}
|
||||
|
||||
/** @name SigningContext */
|
||||
export interface SigningContext extends Struct {
|
||||
readonly sessionIndex: SessionIndex;
|
||||
@@ -198,6 +236,6 @@ export interface ValidityAttestation extends Enum {
|
||||
export interface WinningData extends Vec<WinningDataEntry> {}
|
||||
|
||||
/** @name WinningDataEntry */
|
||||
export interface WinningDataEntry extends ITuple<[AccountId, ParaIdOf, BalanceOf]> {}
|
||||
export interface WinningDataEntry extends Option<Bidder> {}
|
||||
|
||||
export type PHANTOM_PARACHAINS = 'parachains';
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
/* eslint-disable */
|
||||
|
||||
import { Struct } from '@polkadot/types/codec';
|
||||
import { Balance, DispatchClass, Weight } from '@polkadot/types/interfaces/runtime';
|
||||
import { Balance, Weight } from '@polkadot/types/interfaces/runtime';
|
||||
import { DispatchClass } from '@polkadot/types/interfaces/system';
|
||||
|
||||
/** @name RuntimeDispatchInfo */
|
||||
export interface RuntimeDispatchInfo extends Struct {
|
||||
|
||||
+4
-14
@@ -8,18 +8,8 @@
|
||||
import { Definitions } from '../../types';
|
||||
|
||||
export default {
|
||||
rpc: {
|
||||
nextIndex: {
|
||||
alias: ['system_accountNextIndex'],
|
||||
description: 'Retrieves the next accountIndex as available on the node',
|
||||
params: [
|
||||
{
|
||||
name: 'accountId',
|
||||
type: 'AccountId'
|
||||
}
|
||||
],
|
||||
type: 'Index'
|
||||
}
|
||||
},
|
||||
types: {}
|
||||
rpc: {},
|
||||
types: {
|
||||
Approvals: '[bool; 4]'
|
||||
}
|
||||
} as Definitions;
|
||||
@@ -0,0 +1,10 @@
|
||||
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
|
||||
/* eslint-disable */
|
||||
|
||||
import { Vec } from '@polkadot/types/codec';
|
||||
import { bool } from '@polkadot/types/primitive';
|
||||
|
||||
/** @name Approvals */
|
||||
export interface Approvals extends Vec<bool> {}
|
||||
|
||||
export type PHANTOM_POLL = 'poll';
|
||||
@@ -39,23 +39,6 @@ export default {
|
||||
PreRuntime: 'PreRuntime' // 6
|
||||
}
|
||||
},
|
||||
DispatchClass: {
|
||||
_enum: ['Normal', 'Operational', 'Mandatory']
|
||||
},
|
||||
DispatchInfo: {
|
||||
weight: 'Weight',
|
||||
class: 'DispatchClass',
|
||||
paysFee: 'Pays'
|
||||
},
|
||||
DispatchInfoTo190: {
|
||||
weight: 'Weight',
|
||||
class: 'DispatchClass'
|
||||
},
|
||||
DispatchInfoTo244: {
|
||||
weight: 'Weight',
|
||||
class: 'DispatchClass',
|
||||
paysFee: 'bool'
|
||||
},
|
||||
ExtrinsicsWeight: {
|
||||
normal: 'Weight',
|
||||
operational: 'Weight'
|
||||
@@ -82,6 +65,7 @@ export default {
|
||||
LookupTarget: 'AccountId',
|
||||
ModuleId: 'LockIdentifier',
|
||||
Moment: 'u64',
|
||||
OpaqueCall: 'Bytes',
|
||||
Origin: 'DoNotConstruct<Origin>',
|
||||
Pays: {
|
||||
_enum: ['Yes', 'No']
|
||||
@@ -95,6 +79,9 @@ export default {
|
||||
ProxyType: {
|
||||
_enum: ['Any', 'NonTransfer', 'Governance', 'Staking']
|
||||
},
|
||||
Releases: {
|
||||
_enum: ['V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10']
|
||||
},
|
||||
RuntimeDbWeight: {
|
||||
read: 'Weight',
|
||||
write: 'Weight'
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import { ITuple } from '@polkadot/types/types';
|
||||
import { Compact, Enum, Int, Struct, U8aFixed, Vec } from '@polkadot/types/codec';
|
||||
import { GenericAccountId, GenericAccountIndex, GenericAddress, GenericBlock, GenericCall, GenericConsensusEngineId } from '@polkadot/types/generic';
|
||||
import { Bytes, DoNotConstruct, Null, StorageKey, bool, u128, u32, u64, u8 } from '@polkadot/types/primitive';
|
||||
import { Bytes, DoNotConstruct, Null, StorageKey, u128, u32, u64, u8 } from '@polkadot/types/primitive';
|
||||
import { AuthorityId } from '@polkadot/types/interfaces/consensus';
|
||||
import { Signature } from '@polkadot/types/interfaces/extrinsics';
|
||||
|
||||
@@ -73,33 +73,6 @@ export interface DigestItem extends Enum {
|
||||
readonly asPreRuntime: PreRuntime;
|
||||
}
|
||||
|
||||
/** @name DispatchClass */
|
||||
export interface DispatchClass extends Enum {
|
||||
readonly isNormal: boolean;
|
||||
readonly isOperational: boolean;
|
||||
readonly isMandatory: boolean;
|
||||
}
|
||||
|
||||
/** @name DispatchInfo */
|
||||
export interface DispatchInfo extends Struct {
|
||||
readonly weight: Weight;
|
||||
readonly class: DispatchClass;
|
||||
readonly paysFee: Pays;
|
||||
}
|
||||
|
||||
/** @name DispatchInfoTo190 */
|
||||
export interface DispatchInfoTo190 extends Struct {
|
||||
readonly weight: Weight;
|
||||
readonly class: DispatchClass;
|
||||
}
|
||||
|
||||
/** @name DispatchInfoTo244 */
|
||||
export interface DispatchInfoTo244 extends Struct {
|
||||
readonly weight: Weight;
|
||||
readonly class: DispatchClass;
|
||||
readonly paysFee: bool;
|
||||
}
|
||||
|
||||
/** @name ExtrinsicsWeight */
|
||||
export interface ExtrinsicsWeight extends Struct {
|
||||
readonly normal: Weight;
|
||||
@@ -160,6 +133,9 @@ export interface ModuleId extends LockIdentifier {}
|
||||
/** @name Moment */
|
||||
export interface Moment extends u64 {}
|
||||
|
||||
/** @name OpaqueCall */
|
||||
export interface OpaqueCall extends Bytes {}
|
||||
|
||||
/** @name Origin */
|
||||
export interface Origin extends DoNotConstruct {}
|
||||
|
||||
@@ -198,6 +174,20 @@ export interface ProxyType extends Enum {
|
||||
readonly isStaking: boolean;
|
||||
}
|
||||
|
||||
/** @name Releases */
|
||||
export interface Releases extends Enum {
|
||||
readonly isV1: boolean;
|
||||
readonly isV2: boolean;
|
||||
readonly isV3: boolean;
|
||||
readonly isV4: boolean;
|
||||
readonly isV5: boolean;
|
||||
readonly isV6: boolean;
|
||||
readonly isV7: boolean;
|
||||
readonly isV8: boolean;
|
||||
readonly isV9: boolean;
|
||||
readonly isV10: boolean;
|
||||
}
|
||||
|
||||
/** @name RuntimeDbWeight */
|
||||
export interface RuntimeDbWeight extends Struct {
|
||||
readonly read: Weight;
|
||||
|
||||
@@ -100,9 +100,6 @@ export default {
|
||||
PerU16: 'u16',
|
||||
PhragmenScore: '[u128; 3]',
|
||||
Points: 'u32',
|
||||
ReleasesStaking: {
|
||||
_enum: ['V1_0_0', 'V2_0_0', 'V3_0_0']
|
||||
},
|
||||
RewardDestination: {
|
||||
_enum: [
|
||||
'Staked',
|
||||
|
||||
@@ -136,13 +136,6 @@ export interface PhragmenScore extends Vec<u128> {}
|
||||
/** @name Points */
|
||||
export interface Points extends u32 {}
|
||||
|
||||
/** @name ReleasesStaking */
|
||||
export interface ReleasesStaking extends Enum {
|
||||
readonly isV100: boolean;
|
||||
readonly isV200: boolean;
|
||||
readonly isV300: boolean;
|
||||
}
|
||||
|
||||
/** @name RewardDestination */
|
||||
export interface RewardDestination extends Enum {
|
||||
readonly isStaked: boolean;
|
||||
|
||||
@@ -9,6 +9,33 @@ import { Definitions } from '../../types';
|
||||
|
||||
export default {
|
||||
rpc: {
|
||||
accountNextIndex: {
|
||||
alias: ['account_nextIndex'],
|
||||
description: 'Retrieves the next accountIndex as available on the node',
|
||||
params: [
|
||||
{
|
||||
name: 'accountId',
|
||||
type: 'AccountId'
|
||||
}
|
||||
],
|
||||
type: 'Index'
|
||||
},
|
||||
dryRun: {
|
||||
alias: ['system_dryRunAt'],
|
||||
description: 'Dry run an extrinsic at a given block',
|
||||
params: [
|
||||
{
|
||||
name: 'extrinsic',
|
||||
type: 'Bytes'
|
||||
},
|
||||
{
|
||||
name: 'at',
|
||||
type: 'BlockHash',
|
||||
isOptional: true
|
||||
}
|
||||
],
|
||||
type: 'ApplyExtrinsicResult'
|
||||
},
|
||||
name: {
|
||||
description: 'Retrieves the node name',
|
||||
params: [],
|
||||
@@ -91,6 +118,7 @@ export default {
|
||||
refcount: 'RefCount',
|
||||
data: 'AccountData'
|
||||
},
|
||||
ApplyExtrinsicResult: 'Result<DispatchOutcome, TransactionValidityError>',
|
||||
ChainProperties: {
|
||||
ss58Format: 'Option<u8>',
|
||||
tokenDecimals: 'Option<u32>',
|
||||
@@ -105,6 +133,9 @@ export default {
|
||||
}
|
||||
},
|
||||
DigestOf: 'Digest',
|
||||
DispatchClass: {
|
||||
_enum: ['Normal', 'Operational', 'Mandatory']
|
||||
},
|
||||
DispatchError: {
|
||||
_enum: {
|
||||
Other: 'Null',
|
||||
@@ -121,6 +152,21 @@ export default {
|
||||
module: 'Option<u8>',
|
||||
error: 'u8'
|
||||
},
|
||||
DispatchInfo: {
|
||||
weight: 'Weight',
|
||||
class: 'DispatchClass',
|
||||
paysFee: 'Pays'
|
||||
},
|
||||
DispatchInfoTo190: {
|
||||
weight: 'Weight',
|
||||
class: 'DispatchClass'
|
||||
},
|
||||
DispatchInfoTo244: {
|
||||
weight: 'Weight',
|
||||
class: 'DispatchClass',
|
||||
paysFee: 'bool'
|
||||
},
|
||||
DispatchOutcome: 'Result<(), DispatchError>',
|
||||
DispatchResult: 'Result<(), DispatchError>',
|
||||
DispatchResultOf: 'DispatchResult',
|
||||
DispatchResultTo198: 'Result<(), Text>',
|
||||
@@ -141,6 +187,20 @@ export default {
|
||||
isSyncing: 'bool',
|
||||
shouldHavePeers: 'bool'
|
||||
},
|
||||
InvalidTransaction: {
|
||||
_enum: {
|
||||
Call: 'Null',
|
||||
Payment: 'Null',
|
||||
Future: 'Null',
|
||||
Stale: 'Null',
|
||||
BadProof: 'Null',
|
||||
AncientBirthBlock: 'Null',
|
||||
ExhaustsResources: 'Null',
|
||||
Custom: 'u8',
|
||||
BadMandatory: 'Null',
|
||||
MandatoryDispatch: 'Null'
|
||||
}
|
||||
},
|
||||
Key: 'Bytes',
|
||||
LastRuntimeUpgradeInfo: {
|
||||
specVersion: 'Compact<u32>',
|
||||
@@ -214,6 +274,19 @@ export default {
|
||||
Initialization: 'Null'
|
||||
}
|
||||
},
|
||||
RefCount: 'u8'
|
||||
RefCount: 'u8',
|
||||
TransactionValidityError: {
|
||||
_enum: {
|
||||
Invalid: 'InvalidTransaction',
|
||||
Unknown: 'UnknownTransaction'
|
||||
}
|
||||
},
|
||||
UnknownTransaction: {
|
||||
_enum: {
|
||||
CannotLookup: 'Null',
|
||||
NoUnsignedValidator: 'Null',
|
||||
Custom: 'u8'
|
||||
}
|
||||
}
|
||||
}
|
||||
} as Definitions;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user