Compare commits

...
126 Commits
Author SHA1 Message Date
Github Actions f5c25d75ff [CI Skip] release/stable 4.7.2
skip-checks: true
2021-04-26 18:20:50 +00:00
Jaco 780cc62942 4.7.2 (#3448)
* 4.7.2

* XcmError update
2021-04-26 20:11:39 +02:00
Github Actions 165568c905 [CI Skip] release/beta 4.7.2-5
skip-checks: true
2021-04-26 16:34:59 +00:00
Jaco 976a48d8f9 Update .nvmrc (#3447)
As per https://github.com/polkadot-js/api/issues/3446 (also need one on common before bumping to a patch)
2021-04-26 19:24:44 +03:00
Github Actions 35cbbbe0ed [CI Skip] release/beta 4.7.2-4
skip-checks: true
2021-04-26 12:06:50 +00:00
Jaco 772769c981 Add membership derives (#3442) 2021-04-26 13:57:30 +02:00
Github Actions 1ba2bd1766 [CI Skip] release/beta 4.7.2-3
skip-checks: true
2021-04-26 10:43:48 +00:00
Jaco 4afa345a7d Cleanup encodedLength calculations (#3441)
* Cleanup encodedLength calculations

* Remove array santize

* Test adjustments
2021-04-26 12:33:16 +02:00
Github Actions 5c03359f32 [CI Skip] release/beta 4.7.2-2
skip-checks: true
2021-04-25 15:16:21 +00:00
Jaco Greeff 04120505f0 Fix H32 definition 2021-04-25 18:08:02 +03:00
Github Actions 7bd9dd65f8 [CI Skip] release/beta 4.7.2-1
skip-checks: true
2021-04-25 14:44:02 +00:00
Jaco 5f57ecb2e1 Update ETH types (#3439)
* Update ETH types

* Build
2021-04-25 16:34:42 +02:00
Github Actions 9123f1d805 [CI Skip] release/beta 4.7.2-0
skip-checks: true
2021-04-25 11:28:54 +00:00
Jaco 7050c4a554 Updated Xcm OriginKind enum (#3438) 2021-04-25 13:18:47 +02:00
Github Actions 62afb0b534 [CI Skip] release/stable 4.7.1
skip-checks: true
2021-04-25 05:18:10 +00:00
Jaco Greeff 5157ca5608 CHANGELOG bump 2021-04-25 08:08:28 +03:00
Jaco 315617c027 4.7 (#3435)
* 4.7

* Update CHANGELOG.md
2021-04-25 06:31:42 +02:00
Github Actions 7d33b4dec6 [CI Skip] release/beta 4.6.3-11
skip-checks: true
2021-04-24 08:06:21 +00:00
Jaco 2345f69c71 Add engines field to package.json (#3433) 2021-04-24 09:56:50 +02:00
Github Actions 3cef2fb4d5 [CI Skip] release/beta 4.6.3-10
skip-checks: true
2021-04-23 15:50:43 +00:00
Jaco 2bbf5513b2 Expand DispatchError (#3431) 2021-04-23 17:43:32 +02:00
Github Actions c146f06178 [CI Skip] release/beta 4.6.3-9
skip-checks: true
2021-04-23 05:44:16 +00:00
Jaco 5903704b61 Expand Data (from identity) with all is/as getters (#3429) 2021-04-23 07:34:01 +02:00
Github Actions 90d8db651b [CI Skip] release/beta 4.6.3-8
skip-checks: true
2021-04-22 13:10:53 +00:00
Jaco 557283a3d1 Struct decoding error messaging (#3425)
* Struct decoding error messaging

* Error adjust

* Tests

* Bump common, use stringify

* Linting

* Adjust

* Bumps

* Rebump

* Assert cleanups

* Don't modify original value on encoding

* util bump, fixe compact encoding
2021-04-22 15:02:54 +02:00
Github Actions 88b84dcf75 [CI Skip] release/beta 4.6.3-7
skip-checks: true
2021-04-21 17:13:17 +00:00
Jaco 45d190eaca Revery Westend beefy keys (#3423) 2021-04-21 20:03:43 +03:00
Github Actions 6d32328509 [CI Skip] release/beta 4.6.3-6
skip-checks: true
2021-04-21 10:37:47 +00:00
Jaco ba470e7417 Bump WS reconnect delay from 1s -> 2.5s (#3420) 2021-04-21 12:27:16 +02:00
Github Actions 4a16e46f88 [CI Skip] release/beta 4.6.3-5
skip-checks: true
2021-04-21 09:39:02 +00:00
Jaco Greeff ada0d99a84 Sorting 2021-04-21 12:28:51 +03:00
Github Actions e486fc4316 [CI Skip] release/beta 4.6.3-4
skip-checks: true
2021-04-21 08:58:57 +00:00
Jaco 6e5c6f4e0b Bump deps (#3418)
* Bump deps

* Sorting md
2021-04-21 10:48:52 +02:00
Github Actions 21ddcaf173 [CI Skip] release/beta 4.6.3-3
skip-checks: true
2021-04-21 07:17:45 +00:00
Jaco 6085b994f6 Remove well-known json dependency (#3417) 2021-04-21 09:09:30 +02:00
Github Actions 7c3bf05868 [CI Skip] release/beta 4.6.3-2
skip-checks: true
2021-04-21 07:03:45 +00:00
Jaco 8bce5b4a09 Add support for BoundedVec (#3415)
* Add support for BoundedVec

* Update packages/types/src/create/sanitize.ts

* Cleanup sanitize duplication

* Additional cleanups

* Update packages/types/src/create/sanitize.ts

* Box wrap
2021-04-21 08:52:56 +02:00
Github Actions 7a6077301f [CI Skip] release/beta 4.6.3-1
skip-checks: true
2021-04-20 09:05:25 +00:00
Jaco 3f2767462f Adjust statemint proxy type (#3412) 2021-04-20 10:55:28 +02:00
Github Actions ecc37d11df [CI Skip] release/beta 4.6.3-0
skip-checks: true
2021-04-20 06:02:39 +00:00
Jaco 0589d151da Add Xcm Plurality types (#3411) 2021-04-20 07:53:24 +02:00
Jaco 47cd6c6410 RewardDestination: None types (#3231) 2021-04-20 07:44:42 +02:00
Github Actions 65688f9e0e [CI Skip] release/stable 4.6.2
skip-checks: true
2021-04-19 10:47:57 +00:00
Jaco 5eb2a95ef2 Correct Kusama/Polkadot runtime 30 session key definitions (#3409)
* Correct Kusama/Polkadot runtime 30 session key definitions

* Remove duplicates
2021-04-19 12:38:48 +02:00
Github Actions 282b39d27a [CI Skip] release/stable 4.6.1
skip-checks: true
2021-04-19 06:07:35 +00:00
Jaco f21e3d317a 4.6.1 (#3407) 2021-04-19 07:56:46 +02:00
Github Actions c2af7cf8f2 [CI Skip] release/beta 4.5.2-8
skip-checks: true
2021-04-18 09:29:51 +00:00
Jaco 0958a4c693 Bump common (#3405)
* Bump common

* Bumps
2021-04-18 11:19:47 +02:00
Github Actions c687181130 [CI Skip] release/beta 4.5.2-7
skip-checks: true
2021-04-16 16:03:07 +00:00
Jaco 685f1ec0b6 Update .123trigger 2021-04-16 17:53:22 +02:00
Jaco e0069b6f7d statemint known-types (#3404) 2021-04-16 17:39:21 +02:00
Github Actions cf48762ff2 [CI Skip] release/beta 4.5.2-6
skip-checks: true
2021-04-15 12:27:19 +00:00
Jaco 31a7545a19 Bump common (#3403) 2021-04-15 14:18:06 +02:00
Github Actions 5cd8e8fb97 [CI Skip] release/beta 4.5.2-5
skip-checks: true
2021-04-14 07:15:18 +00:00
Jaco 96e4090174 Simplify/harden session derives (#3401) 2021-04-14 09:05:35 +02:00
Github Actions 0bbebab90b [CI Skip] release/beta 4.5.2-4
skip-checks: true
2021-04-14 06:26:22 +00:00
Jaco 57dac0ef47 Assert keypair validity in signing operations (#3400) 2021-04-14 08:17:10 +02:00
Github Actions 6c3d24551b [CI Skip] release/beta 4.5.2-3
skip-checks: true
2021-04-13 18:44:11 +00:00
Jaco e7dc6d7a5a Expose internalError on submittables (#3399) 2021-04-13 20:33:59 +02:00
Github Actions a63b7f611e [CI Skip] release/beta 4.5.2-2
skip-checks: true
2021-04-13 10:33:28 +00:00
Jaco 82e15dc36d Explicitly handle isReadyOrError (when only using isReady) (#3395) 2021-04-13 12:24:26 +02:00
Github Actions 6f96037cb5 [CI Skip] release/beta 4.5.2-1
skip-checks: true
2021-04-13 09:08:55 +00:00
Jaco b6da84b8b2 Beefy subscribeJustifications (#3393)
* Beefy subscribeJustifications

* Add payload info

* Update RPC description
2021-04-13 10:59:23 +02:00
Github Actions 41209f074c [CI Skip] release/beta 4.5.2-0
skip-checks: true
2021-04-12 13:17:40 +00:00
Jaco Greeff c47964c942 Updated xcm types (#3391)
* Updated xcm types

* Move NetworkId

* Update DoubleEncodedCall

* trigger

* Xcm is an enum
2021-04-12 15:09:33 +02:00
Github Actions 5f13a634e5 [CI Skip] release/stable 4.5.1
skip-checks: true
2021-04-12 06:30:52 +00:00
Jaco Greeff 40af520fe7 4.5.1 (#3390) 2021-04-12 08:21:37 +02:00
Github Actions 1e506e0f8c [CI Skip] release/beta 4.4.2-7
skip-checks: true
2021-04-11 13:29:10 +00:00
Jaco Greeff 96ea5803d4 Adjust Westend known & detection (#3386) 2021-04-11 15:19:05 +02:00
Jaco Greeff 7d99459f50 Bump deps (#3389) 2021-04-11 15:15:01 +02:00
Github Actions 8fa090f435 [CI Skip] release/beta 4.4.2-6
skip-checks: true
2021-04-09 20:11:40 +00:00
Jaco Greeff d3c60d197c PalletId type 2021-04-09 23:01:11 +03:00
Github Actions ad8550f7f5 [CI Skip] release/beta 4.4.2-5
skip-checks: true
2021-04-09 19:51:56 +00:00
Jaco Greeff a899aa439d Adjust slot types based on constants (#3385) 2021-04-09 21:40:24 +02:00
Github Actions e0e075b350 [CI Skip] release/beta 4.4.2-4
skip-checks: true
2021-04-09 04:48:56 +00:00
Jaco Greeff 34ff14547e Westend runtime 50 upgrade block (& v30 session keys) (#3382)
* Westend runtime 50 upgrade block (& v30 session keys)

* Revery beefy keys

* Defer 7B keys to 51
2021-04-09 06:39:40 +02:00
Github Actions 681a80d456 [CI Skip] release/beta 4.4.2-3
skip-checks: true
2021-04-08 12:17:03 +00:00
Jaco Greeff ed5f2673ce Detect Keys, inject SessionKeys (#3380) 2021-04-08 14:07:39 +02:00
Github Actions 43e87603e2 [CI Skip] release/beta 4.4.2-2
skip-checks: true
2021-04-08 09:02:42 +00:00
Jaco Greeff d056416b47 Bump deps (#3379) 2021-04-08 10:52:20 +02:00
Github Actions 1bcf94131d [CI Skip] release/beta 4.4.2-1
skip-checks: true
2021-04-08 05:45:13 +00:00
Jaco Greeff 17b607b6c3 Update Rococo session key (& small para type cleanups) (#3378) 2021-04-08 08:35:24 +03:00
Github Actions 5a16d1dd8b [CI Skip] release/beta 4.4.2-0
skip-checks: true
2021-04-07 14:18:01 +00:00
Jaco Greeff 144b74306a Update parachain types (#3376)
* Update parachain types

* Remove retiring flag
2021-04-07 16:09:38 +02:00
Jaco Greeff 16b9fa956d Adjust ParaInfo types (#3372) 2021-04-07 15:53:57 +02:00
Github Actions b6af4b9877 [CI Skip] release/stable 4.4.1
skip-checks: true
2021-04-05 11:30:23 +00:00
Jaco Greeff 3f368e721d 4.4 (#3371)
* 4.4

* CHANGELOG
2021-04-05 13:20:18 +02:00
Github Actions 22b4257636 [CI Skip] release/beta 4.3.2-2
skip-checks: true
2021-04-03 06:15:11 +00:00
Jaco Greeff ca7a631032 Add cumulus ServiceQuality type (#3368) 2021-04-03 08:04:42 +02:00
Github Actions da5bbd17af [CI Skip] release/beta 4.3.2-1
skip-checks: true
2021-03-30 09:52:02 +00:00
Jaco Greeff b58f3f5c3e Multilocation update (X5-X8) (#3362) 2021-03-30 11:42:27 +02:00
Github Actions 8c30194f59 [CI Skip] release/beta 4.3.2-0
skip-checks: true
2021-03-30 09:03:06 +00:00
Jaco Greeff dc9ec37490 Add Polkadot 29 upgrade block (#3361) 2021-03-30 10:53:30 +02:00
Github Actions 5175e77eec [CI Skip] release/stable 4.3.1
skip-checks: true
2021-03-29 09:40:47 +00:00
Jaco Greeff 9553c5467c 4.3 (#3359) 2021-03-29 12:30:49 +03:00
Github Actions a1f07e3274 [CI Skip] release/beta 4.2.2-4
skip-checks: true
2021-03-24 11:04:59 +00:00
Jaco Greeff 58deb2eb14 Session index without staking (#3352)
* Session index without staking

* Fix ordering
2021-03-24 11:55:36 +01:00
Github Actions 83caad7f1b [CI Skip] release/beta 4.2.2-3
skip-checks: true
2021-03-24 10:08:26 +00:00
Jaco Greeff 26c3cc9126 Make council optional with treasury proposals (#3351) 2021-03-24 10:58:03 +01:00
Github Actions 1a231dfb0d [CI Skip] release/beta 4.2.2-2
skip-checks: true
2021-03-23 09:48:48 +00:00
Jaco Greeff 712d0425d0 Update ParaInfo types (#3348) 2021-03-23 10:38:28 +01:00
Github Actions eaa5db517f [CI Skip] release/beta 4.2.2-1
skip-checks: true
2021-03-22 16:12:29 +00:00
Jaco Greeff 88c3850d1b Warn on deprecated contracts interfaces (#3346) 2021-03-22 17:03:49 +01:00
Github Actions 943df72ae9 [CI Skip] release/beta 4.2.2-0
skip-checks: true
2021-03-22 15:58:36 +00:00
Veliko 67ab11a036 Abi constructor takes different parameters (#3347)
The Abi constructor used to take the registry as a parameter, now it takes registry.getChainProperties() and this change introduced hard to debug behaviour
2021-03-22 16:48:15 +01:00
Github Actions c87ef7526b [CI Skip] release/stable 4.2.1
skip-checks: true
2021-03-22 08:39:17 +00:00
Jaco Greeff bccf2d52ad 4.2 (#3344) 2021-03-22 09:29:38 +01:00
Github Actions be6dbdd3e4 [CI Skip] release/beta 4.1.2-8
skip-checks: true
2021-03-21 16:37:49 +00:00
Jaco Greeff 3c34ee9897 Bump metadata (#3343) 2021-03-21 17:27:41 +01:00
Github Actions 9ad97813e3 [CI Skip] release/beta 4.1.2-7
skip-checks: true
2021-03-20 17:28:19 +00:00
Jaco Greeff 028f04e47f Optimize society multi-derive (#3342)
* Optimize society multi-derive

* isVoting flag

* isDefenderVoter
2021-03-20 18:18:49 +01:00
Github Actions 4974c9247f [CI Skip] release/beta 4.1.2-6
skip-checks: true
2021-03-20 10:22:42 +00:00
Jaco Greeff 1ffe6a11bf SignedBlock (justifications field) (#3340) 2021-03-20 11:13:56 +01:00
Github Actions 19699ea445 [CI Skip] release/beta 4.1.2-5
skip-checks: true
2021-03-20 09:11:02 +00:00
Jaco Greeff d98ccfb12a Ensure metadata private fields are not accessed (#3341) 2021-03-20 10:01:03 +01:00
Github Actions 41cb056b0f [CI Skip] release/beta 4.1.2-4
skip-checks: true
2021-03-20 08:10:05 +00:00
Jaco Greeff 48bda0bdea Rococo types (detected, now explicit) (#3339)
* Rococo types (detected, now explicit)

* Bumps
2021-03-20 08:59:57 +01:00
Github Actions 1b393c7b67 [CI Skip] release/beta 4.1.2-3
skip-checks: true
2021-03-18 16:17:51 +00:00
Jaco Greeff f52e518b7b Adjust extended derives with as-defined instances (#3336) 2021-03-18 17:08:18 +01:00
Github Actions 08970cff88 [CI Skip] release/beta 4.1.2-2
skip-checks: true
2021-03-17 08:06:55 +00:00
Jaco Greeff 6d38ca6453 Update .123trigger 2021-03-17 08:57:36 +01:00
Github Actions 60db4bc66b [CI Skip] release/beta 4.1.2-1
skip-checks: true
2021-03-16 13:48:13 +00:00
Jaco Greeff 0661237b28 Bump deps (#3326) 2021-03-16 14:38:17 +01:00
Github Actions 6ccac712a8 [CI Skip] release/beta 4.1.2-0
skip-checks: true
2021-03-16 07:41:09 +00:00
Jaco Greeff 3d4877940c Update .123trigger 2021-03-16 08:31:40 +01:00
VelikoandJaco Greeff 70fc95ef27 Fix contractEvents in ContractSubmittableResult (#3324)
* fix the autoaggregation of contract events 

apparently, the system event for contract emitted events has had its name changed

* fix the autoaggregation of contract events

apparently, the system event for contract emitted events has had its name changed

* Update packages/api-contract/src/base/Contract.ts

* Apply suggestions from code review

Co-authored-by: Jaco Greeff <jacogr@gmail.com>
2021-03-15 22:16:35 +01:00
153 changed files with 3508 additions and 2654 deletions
+5 -3
View File
@@ -1,4 +1,4 @@
26
29
1.4.2
1.6.2
1.11.2
@@ -17,6 +17,8 @@
3.9.2
3.9.3
3.10.2
4.0.2
4.0.3
4.0.3
4.6.2
4.7.2
+1 -1
View File
@@ -1 +1 @@
12
14
+117
View File
@@ -1,5 +1,122 @@
# CHANGELOG
## 4.7.2 Apr 26, 2021
Upgrade priority: Low. Recommended for users of 4.7.1 using nvm
Changes:
- Update `.nvmrc` to reflect engines changes
- Update `EthBlock`/`EthHeader` types (as per Rust origin)
- Updated Xcm `OriginKind` enum
- Add derives for `membership`
- Cleanups on encodedLength calculations
## 4.7.1 Apr 25, 2021
Upgrade priority: Low. Recommended for users following Substrate master.
Changes:
- Adjust Struct decoding with better error messages on invalid input objects
- Add support for new `BoundedVec` type
- Expand `Data` type (as used in identity), with all is/as getters
- Updated `Xcm` types (with Plularity)
- Adjust `DispatchError` type as per current Substrate master
- Adjusted Statemint `Proxy` type
- Remove metadata generation dependency on well-known.json (dedupe)
- Adjust WebSocket reconnection delay from 1s to 2.5s
- Revert Beefy keys addition for Westend
- Add explicit `engines` config to `package.json`
- Support for `None` in `RewardDestination`
- Align with latest substrate metadata
## 4.6.2 Apr 19, 2021
Upgrade priority: Low. Recommended for users of Kusama/Polkadot.
Changes:
- Correct Kusama/Polkadot runtime 30 session key definitions
## 4.6.1 Apr 19, 2021
Upgrade priority: Low. Recommended if used in a Node.js 15.x environment.
Changes:
- Assert keypair validity in signing operations
- Expose `internalError` on submittable results (e.g. event decoding errors)
- Simplify session derives for old/new
- Add Statemint to known types
- Add support for `rpc.beefy.subscribeJustifications`
- Update Xcm types
- Explicitly handle `isReadyOrError` with `Api.create`
- Add Kusama upgrade block for 2030
## 4.5.1 Apr 12, 2021
Upgrade priority: Low. Recommended with usage with the Rococo testnet.
Changes:
- Update parachain types as per latest Polkadot
- Cater for `Keys` with `BEEFY` session keys
- Update `Keys` injection to allow for on-chain type detection
- Add `Westend` known upgrade block for runtime 50
- Align types with latest Substrate master
- Adjust keepalive `system_health` timer
## 4.4.1 Apr 5, 2021
Upgrade priority: Low. Recommended with usage with the Rococo testnet.
Changes:
- Add `ServiceQuality` type for Cumulus
- Adjust XCM MultiLocation type (X5 to X8 junctions)
- Add Polkadot 29 upgrade block
## 4.3.1 Mar 29, 2021
Upgrade priority: Low.
Contributed:
- Fix documentation on ABI parameters (Thanks to https://github.com/vminkov)
Changes:
- Warn on usage of deprecated contract interfaces
- Update `ParaInfo` type
- Council should be optional in treasury derives
- Allow extraction of session derives indexes with no staking
## 4.2.1 Mar 22, 2021
Upgrade priority: Low. Recommended when tracking the latest updates from Substrate.
Contributed:
- Fix contract even decoding on Substrate 3 (Thanks to https://github.com/vminkov)
Changes:
- Adjust `Extender{Header, SignedBlock}` types to ensure at-block `Header` types are used
- Explicit definition for new Rococo triple refcount `AccountData` types
- Convert metadata private class fields to ES-private
- Adjust `SignedBlock` type for new `justifications` field
- Optimize society derive for multi accounts
- Bump metadata to latest substrate version
## 4.1.1 Mar 15, 2021
Upgrade priority: Low. Recommended when tracking the latest updates from Substrate.
+8 -8
View File
@@ -8,7 +8,7 @@
"packages/*"
],
"resolutions": {
"typescript": "^4.2.3"
"typescript": "^4.2.4"
},
"scripts": {
"build": "yarn build:interfaces && polkadot-dev-build-ts",
@@ -25,14 +25,14 @@
"test:watch": "polkadot-dev-run-test --watch"
},
"devDependencies": {
"@babel/core": "^7.13.8",
"@babel/register": "^7.13.8",
"@babel/runtime": "^7.13.9",
"@polkadot/dev": "^0.62.5",
"@polkadot/ts": "^0.3.62",
"@babel/core": "^7.13.16",
"@babel/register": "^7.13.16",
"@babel/runtime": "^7.13.17",
"@polkadot/dev": "^0.62.10",
"@polkadot/ts": "^0.3.63",
"@polkadot/typegen": "workspace:packages/typegen",
"@types/jest": "^26.0.20",
"@types/jest": "^26.0.22",
"copyfiles": "^2.4.1"
},
"version": "4.1.1"
"version": "4.7.2"
}
+1 -1
View File
@@ -8,7 +8,7 @@ import { Abi } from '@polkadot/api-contract';
const wsProvider = new WsProvider(<...Node Url...>);
const api = await ApiPromise.create({ provider: wsProvider });
const abi = new Abi(api.registry, <...JSON ABI...>);
const abi = new Abi(<...JSON ABI...>, api.registry.getChainProperties());
api.tx.contracts
.call(<contract addr>, <value>, <max gas>, abi.messages.<method name>(<...params...>))
+9 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/api-contract",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "Interfaces for interacting with contracts and contract ABIs",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
@@ -16,11 +19,11 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/api": "4.1.1",
"@polkadot/types": "4.1.1",
"@polkadot/util": "^6.0.5",
"@polkadot/x-rxjs": "^6.0.5",
"@babel/runtime": "^7.13.17",
"@polkadot/api": "4.7.2",
"@polkadot/types": "4.7.2",
"@polkadot/util": "^6.3.1",
"@polkadot/x-rxjs": "^6.3.1",
"bn.js": "^4.11.9"
}
}
+5 -5
View File
@@ -6,7 +6,7 @@ import type { ChainProperties, ContractConstructorSpec, ContractEventSpec, Contr
import type { AnyJson, Codec, CodecArg } from '@polkadot/types/types';
import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from './types';
import { assert, assertReturn, compactAddLength, compactStripLength, isNumber, isObject, isString, logger, stringCamelCase, u8aConcat, u8aToHex } from '@polkadot/util';
import { assert, assertReturn, compactAddLength, compactStripLength, isNumber, isObject, isString, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util';
import { MetaRegistry } from './MetaRegistry';
@@ -21,7 +21,7 @@ function findMessage <T extends AbiMessage> (list: T[], messageOrId: T | string
? list.find(({ identifier }) => [identifier, stringCamelCase(identifier)].includes(messageOrId.toString()))
: messageOrId;
return assertReturn(message, `Attempted to call an invalid contract interface, ${JSON.stringify(messageOrId)}`);
return assertReturn(message, `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`);
}
export class Abi {
@@ -81,7 +81,7 @@ export class Abi {
const index = data[0];
const event = this.#events[index];
assert(event, `Unable to find event with index ${index}`);
assert(event, () => `Unable to find event with index ${index}`);
return event.fromU8a(data.subarray(1));
}
@@ -118,7 +118,7 @@ export class Abi {
type: this.registry.getMetaTypeDef(arg.type)
};
} catch (error) {
l.error(`Error expanding argument ${index} in ${JSON.stringify(spec)}`);
l.error(`Error expanding argument ${index} in ${stringify(spec)}`);
throw error;
}
@@ -186,7 +186,7 @@ export class Abi {
}
#encodeArgs = ({ name, selector }: ContractMessageSpec | ContractConstructorSpec, args: AbiParam[], data: CodecArg[], additional = EMPTY_U8A): Uint8Array => {
assert(data.length === args.length, `Expected ${args.length} arguments to contract message '${name.toString()}', found ${data.length}`);
assert(data.length === args.length, () => `Expected ${args.length} arguments to contract message '${name.toString()}', found ${data.length}`);
return compactAddLength(
u8aConcat(
+2 -2
View File
@@ -80,7 +80,7 @@ export class MetaRegistry extends TypeRegistry {
#getMetaType = (id: SiLookupTypeId): SiType => {
const type = this.#siTypes[getRegistryOffset(id)];
assert(!isUndefined(type), `getMetaType:: Unable to find ${id.toNumber()} in type values`);
assert(!isUndefined(type), () => `getMetaType:: Unable to find ${id.toNumber()} in type values`);
return this.createType('SiType', type);
}
@@ -184,7 +184,7 @@ export class MetaRegistry extends TypeRegistry {
}
#extractSequence = ({ type }: SiTypeDefSequence, id: SiLookupTypeId): Omit<TypeDef, 'type'> => {
assert(!!type, `ContractRegistry: Invalid sequence type found at id ${id.toString()}`);
assert(!!type, () => `ContractRegistry: Invalid sequence type found at id ${id.toString()}`);
return {
info: TypeDefInfo.Vec,
+11 -5
View File
@@ -10,7 +10,7 @@ import type { MapConstructorExec } from './types';
import { SubmittableResult } from '@polkadot/api';
import { ApiBase } from '@polkadot/api/base';
import { assert, compactAddLength, isFunction, isUndefined, isWasm, stringCamelCase, u8aToU8a } from '@polkadot/util';
import { assert, compactAddLength, isFunction, isUndefined, isWasm, logger, stringCamelCase, u8aToU8a } from '@polkadot/util';
import { blake2AsU8a } from '@polkadot/util-crypto';
import { Abi } from '../Abi';
@@ -20,6 +20,8 @@ import { Blueprint } from './Blueprint';
import { Contract } from './Contract';
import { createBluePrintTx, EMPTY_SALT, encodeSalt } from './util';
const l = logger('Code');
export class CodeSubmittableResult<ApiType extends ApiTypes> extends SubmittableResult {
public readonly blueprint?: Blueprint<ApiType>;
public readonly contract?: Contract<ApiType>;
@@ -64,22 +66,26 @@ export class Code<ApiType extends ApiTypes> extends Base<ApiType> {
* @deprecated Use the `code.tx.<constructor>(...) format to put code and deploy
*/
public createContract (constructorOrId: AbiConstructor | string | number, options: BlueprintOptions, params: CodecArg[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> {
l.warn('.createContract is deprecated, use code.tx.<constructorName>(...) instead (where code refers to this instance)');
return this.#instantiate(constructorOrId, options, params);
}
#instantiate = (constructorOrId: AbiConstructor | string | number, options: BlueprintOptions, params: CodecArg[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
return isFunction(this.api.tx.contracts.instantiateWithCode)
? this.#instantiateSingle(constructorOrId, options, params)
: this.#instantiateBatch(constructorOrId, options, params);
? this.#instantiateCurrent(constructorOrId, options, params)
: this.#instantiatePrev(constructorOrId, options, params);
}
#instantiateSingle = (constructorOrId: AbiConstructor | string | number, { gasLimit = 0, salt, value = 0 }: BlueprintOptions, params: CodecArg[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
#instantiateCurrent = (constructorOrId: AbiConstructor | string | number, { gasLimit = 0, salt, value = 0 }: BlueprintOptions, params: CodecArg[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
return this.api.tx.contracts
.instantiateWithCode(value, gasLimit, compactAddLength(this.code), this.abi.findConstructor(constructorOrId).toU8a(params), encodeSalt(salt))
.withResultTransform(this.#transformEvents);
}
#instantiateBatch = (constructorOrId: AbiConstructor | string | number, { gasLimit = 0, salt, value = 0 }: BlueprintOptions, params: CodecArg[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
#instantiatePrev = (constructorOrId: AbiConstructor | string | number, { gasLimit = 0, salt, value = 0 }: BlueprintOptions, params: CodecArg[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
assert(isFunction(this.api.tx.utility?.batch), 'Your chain does not include the utility pallet, for contracts v2 deployment, this is required');
const encodedSalt = encodeSalt(salt);
const withSalt = this.api.tx.contracts.instantiate.meta.args.length === 5;
const encoded = this.abi.findConstructor(constructorOrId).toU8a(params, withSalt ? EMPTY_SALT : encodedSalt);
+11 -6
View File
@@ -23,6 +23,7 @@ import { Base } from './Base';
// As per Rust, 5 * GAS_PER_SEC
const MAX_CALL_GAS = new BN(5_000_000_000_000).subn(1);
const ERROR_NO_CALL = 'Your node does not expose the contracts.call RPC. This is most probably due to a runtime configuration.';
const l = logger('Contract');
function createQuery <ApiType extends ApiTypes> (fn: (origin: string | AccountId | Uint8Array, options: ContractOptions, params: CodecArg[]) => ContractCallResult<ApiType, ContractCallOutcome>): ContractQuery<ApiType> {
@@ -39,11 +40,14 @@ function createTx <ApiType extends ApiTypes> (fn: (options: ContractOptions, par
: fn(...extractOptions(options, params));
}
function createWithId <T> (fn: (messageOrId: AbiMessage | string | number, options: ContractOptions, params: CodecArg[]) => T): ContractGeneric<ContractOptions, T> {
return (messageOrId: AbiMessage | string | number, options: BigInt | string | number | BN | ContractOptions, ...params: CodecArg[]): T =>
isOptions(options)
function createWithId <T> (fn: (messageOrId: AbiMessage | string | number, options: ContractOptions, params: CodecArg[]) => T, warn?: string): ContractGeneric<ContractOptions, T> {
return (messageOrId: AbiMessage | string | number, options: BigInt | string | number | BN | ContractOptions, ...params: CodecArg[]): T => {
warn && l.warn(warn);
return isOptions(options)
? fn(messageOrId, options, params)
: fn(messageOrId, ...extractOptions(options, params));
};
}
export class ContractSubmittableResult extends SubmittableResult {
@@ -109,8 +113,8 @@ export class Contract<ApiType extends ApiTypes> extends Base<ApiType> {
super(api, abi, decorateMethod);
this.address = this.registry.createType('AccountId', address);
this.exec = createWithId(this.#exec);
this.read = createWithId(this.#read);
this.exec = createWithId(this.#exec, '.exec is deprecated, use contract.tx.<messageName>(...) instead (where contract refers to this instance)');
this.read = createWithId(this.#read, '.read is deprecated, use contract.query.<messageName>(...) instead (where contract refers to this instance)');
this.abi.messages.forEach((m): void => {
const messageName = stringCamelCase(m.identifier);
@@ -156,7 +160,8 @@ export class Contract<ApiType extends ApiTypes> extends Base<ApiType> {
return this.api.tx.contracts
.call(this.address, value, this.#getGas(gasLimit), this.abi.findMessage(messageOrId).toU8a(params))
.withResultTransform((result: ISubmittableResult) =>
new ContractSubmittableResult(result, applyOnEvent(result, ['ContractExecution'], (records: EventRecord[]) =>
// ContractEmitted is the current generation, ContractExecution is the previous generation
new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) =>
records
.map(({ event: { data: [, data] } }): DecodedEvent | null => {
try {
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/api-contract', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/api-contract', version: '4.7.2' };
+1 -1
View File
@@ -12,7 +12,7 @@ import BN from 'bn.js';
import { createTypeUnsafe } from '@polkadot/types/create';
import { isBigInt, isBn, isNumber, isString } from '@polkadot/util';
type ContractEvents = 'CodeStored' | 'ContractExecution' | 'Instantiated';
type ContractEvents = 'CodeStored' | 'ContractEmitted' | 'ContractExecution' | 'Instantiated';
type TOptions = BlueprintOptions | ContractOptions;
+13 -10
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/api-derive",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "Common functions used across Polkadot, derived from RPC calls and storage queries.",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
@@ -16,17 +19,17 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-derive#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/api": "4.1.1",
"@polkadot/rpc-core": "4.1.1",
"@polkadot/types": "4.1.1",
"@polkadot/util": "^6.0.5",
"@polkadot/util-crypto": "^6.0.5",
"@polkadot/x-rxjs": "^6.0.5",
"@babel/runtime": "^7.13.17",
"@polkadot/api": "4.7.2",
"@polkadot/rpc-core": "4.7.2",
"@polkadot/types": "4.7.2",
"@polkadot/util": "^6.3.1",
"@polkadot/util-crypto": "^6.3.1",
"@polkadot/x-rxjs": "^6.3.1",
"bn.js": "^4.11.9"
},
"devDependencies": {
"@polkadot/keyring": "^6.0.5",
"@polkadot/rpc-provider": "4.1.1"
"@polkadot/keyring": "^6.3.1",
"@polkadot/rpc-provider": "4.7.2"
}
}
+6 -2
View File
@@ -37,12 +37,16 @@ export function bounties (instanceId: string, api: ApiInterfaceRx): () => Observ
return memo(instanceId, (): Observable<DeriveBounties> =>
combineLatest([
bountyBase.bountyCount<BountyIndex>(),
api.query.council ? api.query.council.proposalCount<ProposalIndex>() : of(0)
api.query.council
? api.query.council.proposalCount<ProposalIndex>()
: of(0)
]).pipe(
switchMap(() =>
combineLatest([
bountyBase.bounties.keys<[BountyIndex]>(),
api.derive.council ? api.derive.council.proposals() : of([])
api.derive.council
? api.derive.council.proposals()
: of([])
])
),
switchMap(([keys, proposals]): Observable<Result> => {
+3 -2
View File
@@ -3,11 +3,12 @@
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { Observable } from '@polkadot/x-rxjs';
import type { SignedBlockExtended } from '../type/types';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { catchError, map } from '@polkadot/x-rxjs/operators';
import { SignedBlockExtended } from '../type';
import { createSignedBlockExtended } from '../type';
import { memo } from '../util';
/**
@@ -33,7 +34,7 @@ export function getBlock (instanceId: string, api: ApiInterfaceRx): (hash: Uint8
: of([])
]).pipe(
map(([signedBlock, events, validators]): SignedBlockExtended =>
new SignedBlockExtended(signedBlock.registry, signedBlock, events, validators)
createSignedBlockExtended(api.registry, signedBlock, events, validators)
),
catchError((): Observable<undefined> =>
// where rpc.chain.getHeader throws, we will land here - it can happen that
+3 -2
View File
@@ -3,11 +3,12 @@
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { Observable } from '@polkadot/x-rxjs';
import type { HeaderExtended } from '../type/types';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { catchError, map } from '@polkadot/x-rxjs/operators';
import { HeaderExtended } from '../type';
import { createHeaderExtended } from '../type';
import { memo } from '../util';
/**
@@ -33,7 +34,7 @@ export function getHeader (instanceId: string, api: ApiInterfaceRx): (hash: Uint
: of([])
]).pipe(
map(([header, validators]): HeaderExtended =>
new HeaderExtended(header.registry, header, validators)
createHeaderExtended(header.registry, header, validators)
),
catchError((): Observable<undefined> =>
// where rpc.chain.getHeader throws, we will land here - it can happen that
@@ -5,12 +5,12 @@ import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { Vec } from '@polkadot/types';
import type { EventRecord, SignedBlock } from '@polkadot/types/interfaces';
import type { Observable } from '@polkadot/x-rxjs';
import type { HeaderExtended } from '../type';
import type { HeaderExtended, SignedBlockExtended } from '../type/types';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { SignedBlockExtended } from '../type';
import { createSignedBlockExtended } from '../type';
import { memo } from '../util';
/**
@@ -30,7 +30,7 @@ export function subscribeNewBlocks (instanceId: string, api: ApiInterfaceRx): ()
);
}),
map(([block, events, header]) =>
new SignedBlockExtended(block.registry, block, events, header.validators)
createSignedBlockExtended(block.registry, block, events, header.validators)
)
)
);
@@ -3,11 +3,12 @@
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { Observable } from '@polkadot/x-rxjs';
import type { HeaderExtended } from '../type/types';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { map } from '@polkadot/x-rxjs/operators';
import { HeaderExtended } from '../type';
import { createHeaderExtended } from '../type';
import { memo } from '../util';
/**
@@ -34,7 +35,7 @@ export function subscribeNewHeads (instanceId: string, api: ApiInterfaceRx): ()
map(([header, validators]): HeaderExtended => {
header.createdAtHash = header.hash;
return new HeaderExtended(header.registry, header, validators);
return createHeaderExtended(header.registry, header, validators);
})
)
);
@@ -13,6 +13,8 @@ import { catchError, map, switchMap } from '@polkadot/x-rxjs/operators';
import { memo } from '../util';
type Collective = 'council' | 'membership' | 'technicalCommittee';
type Result = [(Hash | Uint8Array | string)[], (Option<Proposal> | null)[], Option<Votes>[]];
function parse (api: ApiInterfaceRx, [hashes, proposals, votes]: Result): DeriveCollectiveProposal[] {
@@ -29,7 +31,7 @@ function parse (api: ApiInterfaceRx, [hashes, proposals, votes]: Result): Derive
.filter((proposal): proposal is DeriveCollectiveProposal => !!proposal);
}
function _proposalsFrom (instanceId: string, api: ApiInterfaceRx, section: 'council' | 'technicalCommittee' = 'council'): (hashes: (Hash | Uint8Array | string)[]) => Observable<DeriveCollectiveProposal[]> {
function _proposalsFrom (instanceId: string, api: ApiInterfaceRx, section: Collective): (hashes: (Hash | Uint8Array | string)[]) => Observable<DeriveCollectiveProposal[]> {
return memo(instanceId, (hashes: (Hash | Uint8Array | string)[]): Observable<DeriveCollectiveProposal[]> =>
(isFunction(api.query[section]?.proposals) && hashes.length
? combineLatest<Result>([
@@ -49,19 +51,19 @@ function _proposalsFrom (instanceId: string, api: ApiInterfaceRx, section: 'coun
);
}
export function proposals (instanceId: string, api: ApiInterfaceRx, section: 'council' | 'technicalCommittee' = 'council'): () => Observable<DeriveCollectiveProposal[]> {
export function proposals (instanceId: string, api: ApiInterfaceRx, section: Collective): () => Observable<DeriveCollectiveProposal[]> {
const proposalsFrom = _proposalsFrom(instanceId, api, section);
return memo(instanceId, (): Observable<DeriveCollectiveProposal[]> =>
isFunction(api.query[section]?.proposals)
? api.query[section].proposals().pipe(
? api.query[section as 'council'].proposals().pipe(
switchMap(proposalsFrom)
)
: of([] as DeriveCollectiveProposal[])
);
}
export function proposal (instanceId: string, api: ApiInterfaceRx, section: 'council' | 'technicalCommittee' = 'council'): (hash: Hash | Uint8Array | string) => Observable<DeriveCollectiveProposal | null> {
export function proposal (instanceId: string, api: ApiInterfaceRx, section: Collective): (hash: Hash | Uint8Array | string) => Observable<DeriveCollectiveProposal | null> {
const proposalsFrom = _proposalsFrom(instanceId, api, section);
return memo(instanceId, (hash: Hash | Uint8Array | string): Observable<DeriveCollectiveProposal | null> =>
+2 -2
View File
@@ -10,9 +10,9 @@ import { proposal as collectiveProposal, proposals as collectiveProposals } from
import { memo } from '../util';
export function proposal (instanceId: string, api: ApiInterfaceRx): (hash: Hash | Uint8Array | string) => Observable<DeriveCollectiveProposal | null> {
return memo(instanceId, collectiveProposal(instanceId, api));
return memo(instanceId, collectiveProposal(instanceId, api, 'council'));
}
export function proposals (instanceId: string, api: ApiInterfaceRx): () => Observable<DeriveCollectiveProposal[]> {
return memo(instanceId, collectiveProposals(instanceId, api));
return memo(instanceId, collectiveProposals(instanceId, api, 'council'));
}
+3 -1
View File
@@ -16,6 +16,7 @@ import * as council from './council';
import * as democracy from './democracy';
import * as elections from './elections';
import * as imOnline from './imOnline';
import * as membership from './membership';
import * as parachains from './parachains';
import * as session from './session';
import * as society from './society';
@@ -27,7 +28,7 @@ import * as tx from './tx';
export { packageInfo } from './packageInfo';
export * from './type';
export const derive = { accounts, balances, bounties, chain, contracts, council, democracy, elections, imOnline, parachains, session, society, staking, technicalCommittee, treasury, tx };
export const derive = { accounts, balances, bounties, chain, contracts, council, democracy, elections, imOnline, membership, parachains, session, society, staking, technicalCommittee, treasury, tx };
type DeriveSection<Section> = {
[Method in keyof Section]: Section[Method] extends AnyFunction
@@ -49,6 +50,7 @@ const deriveAvail: Record<string, string[]> = {
democracy: ['democracy'],
elections: ['electionsPhragmen', 'elections'],
imOnline: ['imOnline'],
membership: ['membership'],
parachains: ['parachains', 'registrar'],
session: ['session'],
society: ['society'],
@@ -0,0 +1,4 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './proposals';
@@ -0,0 +1,13 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveCollectiveProposal } from '../types';
import { proposals as collectiveProposals } from '../collective';
import { memo } from '../util';
export function proposals (instanceId: string, api: ApiInterfaceRx): () => Observable<DeriveCollectiveProposal[]> {
return memo(instanceId, collectiveProposals(instanceId, api, 'membership'));
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/api-derive', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/api-derive', version: '4.7.2' };
+24 -9
View File
@@ -13,7 +13,7 @@ import { map } from '@polkadot/x-rxjs/operators';
import { memo } from '../util';
// parse into Indexes
function parse ([activeEra, activeEraStart, currentEra, currentIndex, validatorCount]: [EraIndex, Option<Moment>, EraIndex, SessionIndex, u32]): DeriveSessionIndexes {
function parse ([currentIndex, activeEra, activeEraStart, currentEra, validatorCount]: [SessionIndex, EraIndex, Option<Moment>, EraIndex, u32]): DeriveSessionIndexes {
return {
activeEra,
activeEraStart,
@@ -24,42 +24,57 @@ function parse ([activeEra, activeEraStart, currentEra, currentIndex, validatorC
}
// query based on latest
function query (api: ApiInterfaceRx): Observable<DeriveSessionIndexes> {
return api.queryMulti<[Option<ActiveEraInfo>, Option<EraIndex>, SessionIndex, u32]>([
function queryStaking (api: ApiInterfaceRx): Observable<DeriveSessionIndexes> {
return api.queryMulti<[SessionIndex, Option<ActiveEraInfo>, Option<EraIndex>, u32]>([
api.query.session.currentIndex,
api.query.staking.activeEra,
api.query.staking.currentEra,
api.query.session.currentIndex,
api.query.staking.validatorCount
]).pipe(
map(([activeOpt, currentEra, currentIndex, validatorCount]): DeriveSessionIndexes => {
map(([currentIndex, activeOpt, currentEra, validatorCount]): DeriveSessionIndexes => {
const { index, start } = activeOpt.unwrapOrDefault();
return parse([
currentIndex,
index,
start,
currentEra.unwrapOrDefault(),
currentIndex,
validatorCount
]);
})
);
}
// query based on latest
function querySession (api: ApiInterfaceRx): Observable<DeriveSessionIndexes> {
return api.query.session.currentIndex().pipe(
map((currentIndex): DeriveSessionIndexes => parse([
currentIndex,
api.registry.createType('EraIndex'),
api.registry.createType('Option<Moment>'),
api.registry.createType('EraIndex'),
api.registry.createType('u32')
]))
);
}
// empty set when none is available
function empty (api: ApiInterfaceRx): Observable<DeriveSessionIndexes> {
return of(parse([
api.registry.createType('SessionIndex', 1),
api.registry.createType('EraIndex'),
api.registry.createType('Option<Moment>'),
api.registry.createType('EraIndex'),
api.registry.createType('SessionIndex', 1),
api.registry.createType('u32')
]));
}
export function indexes (instanceId: string, api: ApiInterfaceRx): () => Observable<DeriveSessionIndexes> {
return memo(instanceId, (): Observable<DeriveSessionIndexes> =>
api.query.session && api.query.staking
? query(api)
api.query.session
? api.query.staking
? queryStaking(api)
: querySession(api)
: empty(api)
);
}
+15 -55
View File
@@ -2,71 +2,31 @@
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { u64 } from '@polkadot/types';
import type { SessionIndex } from '@polkadot/types/interfaces';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveSessionIndexes, DeriveSessionInfo } from '../types';
import type { DeriveSessionInfo } from '../types';
import { map } from '@polkadot/x-rxjs/operators';
import { memo } from '../util';
type ResultType = [boolean, u64, SessionIndex];
type Result = [ResultType, DeriveSessionIndexes];
function createDerive (api: ApiInterfaceRx, [[hasBabe, epochDuration, sessionsPerEra], { activeEra, activeEraStart, currentEra, currentIndex, validatorCount }]: Result): DeriveSessionInfo {
return {
activeEra,
activeEraStart,
currentEra,
currentIndex,
eraLength: api.registry.createType('BlockNumber', sessionsPerEra.mul(epochDuration)),
isEpoch: hasBabe,
sessionLength: epochDuration,
sessionsPerEra,
validatorCount
};
}
function queryAura (api: ApiInterfaceRx): Observable<DeriveSessionInfo> {
return api.derive.session.indexes().pipe(
map((indexes): DeriveSessionInfo =>
createDerive(api, [
[
false,
api.registry.createType('u64', 1),
// we may have aura without staking (permissioned)
api.consts.staking?.sessionsPerEra || api.registry.createType('SessionIndex', 1)
],
indexes
])
)
);
}
function queryBabe (api: ApiInterfaceRx): Observable<DeriveSessionInfo> {
return api.derive.session.indexes().pipe(
map((indexes) =>
createDerive(api, [
[
true,
api.consts.babe.epochDuration,
// we may have babe without staking (permissioned)
api.consts.staking?.sessionsPerEra || api.registry.createType('SessionIndex', 1)
],
indexes
])
)
);
}
/**
* @description Retrieves all the session and era query and calculates specific values on it as the length of the session and eras
*/
export function info (instanceId: string, api: ApiInterfaceRx): () => Observable<DeriveSessionInfo> {
return memo(instanceId, (): Observable<DeriveSessionInfo> =>
api.consts.babe
? queryBabe(api)
: queryAura(api)
api.derive.session.indexes().pipe(
map((indexes) => {
const sessionLength = api.consts?.babe?.epochDuration || api.registry.createType('u64', 1);
const sessionsPerEra = api.consts?.staking?.sessionsPerEra || api.registry.createType('SessionIndex', 1);
return {
...indexes,
eraLength: api.registry.createType('BlockNumber', sessionsPerEra.mul(sessionLength)),
isEpoch: !!api.query.babe,
sessionLength,
sessionsPerEra
};
})
)
);
}
+2 -2
View File
@@ -44,7 +44,7 @@ function queryBabe (api: ApiInterfaceRx): Observable<[DeriveSessionInfo, ResultS
combineLatest([
of(info),
// we may have no staking, but have babe (permissioned)
api.query.staking
api.query.staking?.erasStartSessionIndex
? api.queryMulti<ResultSlots>([
api.query.babe.currentSlot,
api.query.babe.epochIndex,
@@ -69,7 +69,7 @@ function queryBabe (api: ApiInterfaceRx): Observable<[DeriveSessionInfo, ResultS
*/
export function progress (instanceId: string, api: ApiInterfaceRx): () => Observable<DeriveSessionProgress> {
return memo(instanceId, (): Observable<DeriveSessionProgress> =>
api.consts.babe
api.query.babe
? queryBabe(api).pipe(
map(([info, slots]: [DeriveSessionInfo, ResultSlotsFlat]): DeriveSessionProgress =>
createDerive(api, info, slots)
+3 -20
View File
@@ -2,9 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { bool, Option, Vec } from '@polkadot/types';
import type { AccountId, Balance, BlockNumber, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces';
import type { ITuple } from '@polkadot/types/types';
import type { AccountId } from '@polkadot/types/interfaces';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveSocietyMember } from '../types';
@@ -12,28 +10,13 @@ import { map } from '@polkadot/x-rxjs/operators';
import { memo } from '../util';
type Result = [Vec<ITuple<[BlockNumber, Balance]>>, StrikeCount, Option<SocietyVote>, bool, Option<VouchingStatus>];
/**
* @description Get the member info for a society
*/
export function member (instanceId: string, api: ApiInterfaceRx): (accountId: AccountId) => Observable<DeriveSocietyMember> {
return memo(instanceId, (accountId: AccountId): Observable<DeriveSocietyMember> =>
api.queryMulti<Result>([
[api.query.society.payouts, accountId],
[api.query.society.strikes, accountId],
[api.query.society.defenderVotes, accountId],
[api.query.society.suspendedMembers, accountId],
[api.query.society.vouching, accountId]
]).pipe(
map(([payouts, strikes, defenderVotes, suspended, vouching]: Result): DeriveSocietyMember => ({
accountId,
isSuspended: suspended.isTrue,
payouts,
strikes,
vote: defenderVotes.unwrapOr(undefined),
vouching: vouching.unwrapOr(undefined)
}))
api.derive.society._members([accountId]).pipe(
map(([result]) => result)
)
);
}
+33 -10
View File
@@ -2,28 +2,51 @@
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { AccountId } from '@polkadot/types/interfaces';
import type { bool, Option, Vec } from '@polkadot/types';
import type { AccountId, Balance, BlockNumber, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces';
import type { ITuple } from '@polkadot/types/types';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveSocietyMember } from '../types';
import { combineLatest } from '@polkadot/x-rxjs';
import { switchMap } from '@polkadot/x-rxjs/operators';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { memo } from '../util';
type Result = [AccountId[], Vec<ITuple<[BlockNumber, Balance]>>[], StrikeCount[], Option<SocietyVote>[], bool[], Option<VouchingStatus>[]];
export function _members (instanceId: string, api: ApiInterfaceRx): (accountIds: AccountId[]) => Observable<DeriveSocietyMember[]> {
return memo(instanceId, (accountIds: AccountId[]): Observable<DeriveSocietyMember[]> =>
combineLatest<Result>([
of(accountIds),
api.query.society.payouts.multi(accountIds),
api.query.society.strikes.multi(accountIds),
api.query.society.defenderVotes.multi(accountIds),
api.query.society.suspendedMembers.multi(accountIds),
api.query.society.vouching.multi(accountIds)
]).pipe(
map(([accountIds, payouts, strikes, defenderVotes, suspended, vouching]) =>
accountIds.map((accountId, index) => ({
accountId,
isDefenderVoter: defenderVotes[index].isSome,
isSuspended: suspended[index].isTrue,
payouts: payouts[index],
strikes: strikes[index],
vote: defenderVotes[index].unwrapOr(undefined),
vouching: vouching[index].unwrapOr(undefined)
}))
)
)
);
}
/**
* @description Get the member info for a society
*/
export function members (instanceId: string, api: ApiInterfaceRx): () => Observable<DeriveSocietyMember[]> {
return memo(instanceId, (): Observable<DeriveSocietyMember[]> =>
api.query.society.members<AccountId[]>().pipe(
switchMap((members): Observable<DeriveSocietyMember[]> =>
combineLatest(
members.map((accountId): Observable<DeriveSocietyMember> =>
api.derive.society.member(accountId)
)
)
)
switchMap((members) => api.derive.society._members(members))
)
);
}
@@ -61,7 +61,9 @@ function retrieveProposals (api: ApiInterfaceRx, proposalCount: ProposalIndex, a
return combineLatest([
api.query.treasury.proposals.multi<Option<TreasuryProposal>>(allIds),
api.derive.council.proposals()
api.derive.council
? api.derive.council.proposals()
: of([] as DeriveCollectiveProposal[])
]).pipe(
map(([allProposals, councilProposals]: [Option<TreasuryProposal>[], DeriveCollectiveProposal[]]): DeriveTreasuryProposals =>
parseResult(api, { allIds, allProposals, approvalIds, councilProposals, proposalCount })
+29 -32
View File
@@ -2,44 +2,41 @@
// SPDX-License-Identifier: Apache-2.0
import type { AccountId, Header } from '@polkadot/types/interfaces';
import type { Constructor, Registry } from '@polkadot/types/types';
import { Struct } from '@polkadot/types';
import runtimeTypes from '@polkadot/types/interfaces/runtime/definitions';
import type { Registry } from '@polkadot/types/types';
import type { HeaderExtended } from './types';
import { extractAuthor } from './util';
// We can ignore the properties, added via Struct.with
const _Header = Struct.with(runtimeTypes.types.Header as any) as Constructor<Header>;
export function createHeaderExtended (registry: Registry, header?: Header, validators?: AccountId[]): HeaderExtended {
// an instance of the base extrinsic for us to extend
const HeaderBase = registry.createClass('Header');
/**
* @name HeaderExtended
* @description
* A [[Block]] header with an additional `author` field that indicates the block author
*/
export class HeaderExtended extends _Header {
readonly #author?: AccountId;
readonly #validators?: AccountId[];
class Implementation extends HeaderBase implements HeaderExtended {
readonly #author?: AccountId;
readonly #validators?: AccountId[];
constructor (registry: Registry, header?: Header, validators?: AccountId[]) {
super(registry, header);
constructor (registry: Registry, header?: Header, validators?: AccountId[]) {
super(registry, header);
this.#author = extractAuthor(this.digest, validators);
this.#validators = validators;
this.createdAtHash = header?.createdAtHash;
this.#author = extractAuthor(this.digest, validators);
this.#validators = validators;
this.createdAtHash = header?.createdAtHash;
}
/**
* @description Convenience method, returns the author for the block
*/
public get author (): AccountId | undefined {
return this.#author;
}
/**
* @description Convenience method, returns the validators for the block
*/
public get validators (): AccountId[] | undefined {
return this.#validators;
}
}
/**
* @description Convenience method, returns the author for the block
*/
public get author (): AccountId | undefined {
return this.#author;
}
/**
* @description Convenience method, returns the validators for the block
*/
public get validators (): AccountId[] | undefined {
return this.#validators;
}
return new Implementation(registry, header, validators);
}
@@ -1,24 +1,12 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { AccountId, DispatchError, DispatchInfo, Event, EventRecord, Extrinsic, SignedBlock } from '@polkadot/types/interfaces';
import type { Constructor, Registry } from '@polkadot/types/types';
import { Struct } from '@polkadot/types';
import runtimeTypes from '@polkadot/types/interfaces/runtime/definitions';
import type { AccountId, DispatchError, DispatchInfo, EventRecord, Extrinsic, SignedBlock } from '@polkadot/types/interfaces';
import type { Registry } from '@polkadot/types/types';
import type { SignedBlockExtended, TxWithEvent } from './types';
import { extractAuthor } from './util';
// We can ignore the properties, added via Struct.with
const _SignedBlock = Struct.with(runtimeTypes.types.SignedBlock as any) as Constructor<SignedBlock>;
interface TxWithEvent {
dispatchError?: DispatchError;
dispatchInfo?: DispatchInfo;
events: Event[];
extrinsic: Extrinsic;
}
function mapExtrinsics (extrinsics: Extrinsic[], records: EventRecord[]): TxWithEvent[] {
return extrinsics.map((extrinsic, index): TxWithEvent => {
let dispatchError: DispatchError | undefined;
@@ -43,43 +31,45 @@ function mapExtrinsics (extrinsics: Extrinsic[], records: EventRecord[]): TxWith
});
}
/**
* @name SignedBlockExtended
* @description
* A [[Block]] header with an additional `author` field that indicates the block author
*/
export class SignedBlockExtended extends _SignedBlock {
readonly #author?: AccountId;
readonly #events: EventRecord[];
readonly #extrinsics: TxWithEvent[];
export function createSignedBlockExtended (registry: Registry, block?: SignedBlock, events?: EventRecord[], validators?: AccountId[]): SignedBlockExtended {
// an instance of the base extrinsic for us to extend
const SignedBlockBase = registry.createClass('SignedBlock');
constructor (registry: Registry, block?: SignedBlock, events?: EventRecord[], validators?: AccountId[]) {
super(registry, block);
class Implementation extends SignedBlockBase implements SignedBlockExtended {
readonly #author?: AccountId;
readonly #events: EventRecord[];
readonly #extrinsics: TxWithEvent[];
this.#author = extractAuthor(this.block.header.digest, validators);
this.#events = events || ([] as EventRecord[]);
this.#extrinsics = mapExtrinsics(this.block.extrinsics, this.#events);
this.createdAtHash = block?.createdAtHash;
constructor (registry: Registry, block?: SignedBlock, events?: EventRecord[], validators?: AccountId[]) {
super(registry, block);
this.#author = extractAuthor(this.block.header.digest, validators);
this.#events = events || ([] as EventRecord[]);
this.#extrinsics = mapExtrinsics(this.block.extrinsics, this.#events);
this.createdAtHash = block?.createdAtHash;
}
/**
* @description Convenience method, returns the author for the block
*/
public get author (): AccountId | undefined {
return this.#author;
}
/**
* @description Convenience method, returns the events associated with the block
*/
public get events (): EventRecord[] {
return this.#events;
}
/**
* @description Returns the extrinsics and their events, mapped
*/
public get extrinsics (): TxWithEvent[] {
return this.#extrinsics;
}
}
/**
* @description Convenience method, returns the author for the block
*/
public get author (): AccountId | undefined {
return this.#author;
}
/**
* @description Convenience method, returns the events associated with the block
*/
public get events (): EventRecord[] {
return this.#events;
}
/**
* @description Returns the extrinsics and their events, mapped
*/
public get extrinsics (): TxWithEvent[] {
return this.#extrinsics;
}
return new Implementation(registry, block, events, validators);
}
+2 -2
View File
@@ -1,5 +1,5 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { HeaderExtended } from './HeaderExtended';
export { SignedBlockExtended } from './SignedBlockExtended';
export { createHeaderExtended } from './HeaderExtended';
export { createSignedBlockExtended } from './SignedBlockExtended';
+22
View File
@@ -0,0 +1,22 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { AccountId, DispatchError, DispatchInfo, Event, EventRecord, Extrinsic, Header, SignedBlock } from '@polkadot/types/interfaces';
export interface HeaderExtended extends Header {
readonly author: AccountId | undefined;
readonly validators: AccountId[] | undefined;
}
export interface SignedBlockExtended extends SignedBlock {
readonly author: AccountId | undefined;
readonly events: EventRecord[];
readonly extrinsics: TxWithEvent[];
}
export interface TxWithEvent {
dispatchError?: DispatchError;
dispatchInfo?: DispatchInfo;
events: Event[];
extrinsic: Extrinsic;
}
+2
View File
@@ -12,6 +12,7 @@ export * from './elections/types';
export * from './parachains/types';
export * from './session/types';
export * from './staking/types';
export * from './type/types';
export interface DeriveBalancesAccountData {
freeBalance: Balance;
@@ -107,6 +108,7 @@ export interface DeriveSocietyCandidate {
export interface DeriveSocietyMember {
accountId: AccountId;
isDefenderVoter: boolean;
isSuspended: boolean;
payouts: [BlockNumber, Balance][];
strikes: StrikeCount;
+15 -12
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/api",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "Promise and RxJS wrappers around the Polkadot JS RPC",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
@@ -16,17 +19,17 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/api-derive": "4.1.1",
"@polkadot/keyring": "^6.0.5",
"@polkadot/metadata": "4.1.1",
"@polkadot/rpc-core": "4.1.1",
"@polkadot/rpc-provider": "4.1.1",
"@polkadot/types": "4.1.1",
"@polkadot/types-known": "4.1.1",
"@polkadot/util": "^6.0.5",
"@polkadot/util-crypto": "^6.0.5",
"@polkadot/x-rxjs": "^6.0.5",
"@babel/runtime": "^7.13.17",
"@polkadot/api-derive": "4.7.2",
"@polkadot/keyring": "^6.3.1",
"@polkadot/metadata": "4.7.2",
"@polkadot/rpc-core": "4.7.2",
"@polkadot/rpc-provider": "4.7.2",
"@polkadot/types": "4.7.2",
"@polkadot/types-known": "4.7.2",
"@polkadot/util": "^6.3.1",
"@polkadot/util-crypto": "^6.3.1",
"@polkadot/x-rxjs": "^6.3.1",
"bn.js": "^4.11.9",
"eventemitter3": "^4.0.7"
}
+56 -32
View File
@@ -3,7 +3,7 @@
import type { Vec, u16, u32, u64, u8 } from '@polkadot/types';
import type { Codec } from '@polkadot/types/types';
import type { Balance, BalanceOf, BlockNumber, LockIdentifier, ModuleId, Moment, Perbill, Percent, Permill, RuntimeDbWeight, Weight } from '@polkadot/types/interfaces/runtime';
import type { Balance, BalanceOf, BlockNumber, LockIdentifier, Moment, PalletId, Perbill, Percent, Permill, RuntimeDbWeight, Weight } from '@polkadot/types/interfaces/runtime';
import type { SessionIndex } from '@polkadot/types/interfaces/session';
import type { EraIndex } from '@polkadot/types/interfaces/staking';
import type { RuntimeVersion } from '@polkadot/types/interfaces/state';
@@ -16,11 +16,9 @@ declare module '@polkadot/api/types/consts' {
babe: {
[key: string]: Codec;
/**
* The number of **slots** that an epoch takes. We couple sessions to
* epochs, i.e. we start a new session once the new epoch begins.
* NOTE: Currently it is not possible to change the epoch duration
* after the chain has started. Attempting to do so will brick block
* production.
* The amount of time, in slots, that each epoch should last.
* NOTE: Currently it is not possible to change the epoch duration after
* the chain has started. Attempting to do so will brick block production.
**/
epochDuration: u64 & AugmentedConst<ApiType>;
/**
@@ -202,12 +200,38 @@ declare module '@polkadot/api/types/consts' {
};
elections: {
[key: string]: Codec;
/**
* How much should be locked up in order to submit one's candidacy.
**/
candidacyBond: BalanceOf & AugmentedConst<ApiType>;
/**
* Number of members to elect.
**/
desiredMembers: u32 & AugmentedConst<ApiType>;
/**
* Number of runners_up to keep.
**/
desiredRunnersUp: u32 & AugmentedConst<ApiType>;
moduleId: LockIdentifier & AugmentedConst<ApiType>;
/**
* Identifier for the elections-phragmen pallet's lock
**/
palletId: LockIdentifier & AugmentedConst<ApiType>;
/**
* How long each seat is kept. This defines the next block number at which an election
* round will happen. If set to zero, no elections are ever triggered and the module will
* be in passive mode.
**/
termDuration: BlockNumber & AugmentedConst<ApiType>;
/**
* Base deposit associated with voting.
*
* This should be sensibly high to economically ensure the pallet cannot be attacked by
* creating a gigantic number of votes.
**/
votingBondBase: BalanceOf & AugmentedConst<ApiType>;
/**
* The amount of bond that need to be locked for each vote (32 bytes).
**/
votingBondFactor: BalanceOf & AugmentedConst<ApiType>;
};
gilt: {
@@ -297,7 +321,7 @@ declare module '@polkadot/api/types/consts' {
lottery: {
[key: string]: Codec;
maxCalls: u32 & AugmentedConst<ApiType>;
moduleId: ModuleId & AugmentedConst<ApiType>;
palletId: PalletId & AugmentedConst<ApiType>;
};
multisig: {
[key: string]: Codec;
@@ -318,15 +342,20 @@ declare module '@polkadot/api/types/consts' {
proxy: {
[key: string]: Codec;
/**
* `AnnouncementDepositBase` metadata shadow.
* The base amount of currency needed to reserve for creating an announcement.
*
* This is held when a new storage item holding a `Balance` is created (typically 16 bytes).
**/
announcementDepositBase: BalanceOf & AugmentedConst<ApiType>;
/**
* `AnnouncementDepositFactor` metadata shadow.
* The amount of currency needed per announcement made.
*
* This is held for adding an `AccountId`, `Hash` and `BlockNumber` (typically 68 bytes)
* into a pre-existing storage value.
**/
announcementDepositFactor: BalanceOf & AugmentedConst<ApiType>;
/**
* `MaxPending` metadata shadow.
* The maximum amount of time-delayed announcements that are allowed to be pending.
**/
maxPending: u32 & AugmentedConst<ApiType>;
/**
@@ -335,10 +364,17 @@ declare module '@polkadot/api/types/consts' {
maxProxies: u16 & AugmentedConst<ApiType>;
/**
* The base amount of currency needed to reserve for creating a proxy.
*
* This is held for an additional storage item whose value size is
* `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes.
**/
proxyDepositBase: BalanceOf & AugmentedConst<ApiType>;
/**
* The amount of currency needed per proxy added.
*
* This is held for adding 32 bytes plus an instance of `ProxyType` more into a pre-existing
* storage value. Thus, when configuring `ProxyDepositFactor` one should take into account
* `32 + proxy_type.encode().len()` bytes of data.
**/
proxyDepositFactor: BalanceOf & AugmentedConst<ApiType>;
};
@@ -371,6 +407,10 @@ declare module '@polkadot/api/types/consts' {
* The number of blocks between membership challenges.
**/
challengePeriod: BlockNumber & AugmentedConst<ApiType>;
/**
* Maximum candidate intake per round.
**/
maxCandidateIntake: u32 & AugmentedConst<ApiType>;
/**
* The number of times a member may vote the wrong way (or not at all, when they are a skeptic)
* before they become suspended.
@@ -379,7 +419,7 @@ declare module '@polkadot/api/types/consts' {
/**
* The societies's module id
**/
moduleId: ModuleId & AugmentedConst<ApiType>;
palletId: PalletId & AugmentedConst<ApiType>;
/**
* The amount of incentive paid within each period. Doesn't include VoterTip.
**/
@@ -401,21 +441,9 @@ declare module '@polkadot/api/types/consts' {
**/
bondingDuration: EraIndex & AugmentedConst<ApiType>;
/**
* 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.
* Maximum number of nominations per nominator.
**/
electionLookahead: BlockNumber & AugmentedConst<ApiType>;
/**
* Maximum number of balancing iterations to run in the offchain submission.
*
* If set to 0, balance_solution will not be executed at all.
**/
maxIterations: u32 & AugmentedConst<ApiType>;
maxNominations: u32 & AugmentedConst<ApiType>;
/**
* The maximum number of nominators rewarded for each validator.
*
@@ -423,10 +451,6 @@ declare module '@polkadot/api/types/consts' {
* their reward. This used to limit the i/o cost for the nominator payout.
**/
maxNominatorRewardedPerValidator: u32 & AugmentedConst<ApiType>;
/**
* The threshold of improvement that should be provided for a new solution to be accepted.
**/
minSolutionScoreBump: Perbill & AugmentedConst<ApiType>;
/**
* Number of sessions per era.
**/
@@ -524,7 +548,7 @@ declare module '@polkadot/api/types/consts' {
/**
* The treasury's module id, used for deriving its sovereign account ID.
**/
moduleId: ModuleId & AugmentedConst<ApiType>;
palletId: PalletId & AugmentedConst<ApiType>;
/**
* Fraction of a proposal's value that should be bonded in order to place the proposal.
* An accepted proposal gets these back. A rejected proposal does not.
@@ -542,7 +566,7 @@ declare module '@polkadot/api/types/consts' {
vesting: {
[key: string]: Codec;
/**
* The minimum amount to be transferred to create a new vesting schedule.
* The minimum amount transferred to call `vested_transfer`.
**/
minVestedTransfer: BalanceOf & AugmentedConst<ApiType>;
};
+84 -59
View File
@@ -91,6 +91,21 @@ declare module '@polkadot/api/types/errors' {
**/
UnclesAlreadySet: AugmentedError<ApiType>;
};
babe: {
[key: string]: AugmentedError<ApiType>;
/**
* A given equivocation report is valid but already previously reported.
**/
DuplicateOffenceReport: AugmentedError<ApiType>;
/**
* An equivocation proof provided as part of an equivocation report is invalid.
**/
InvalidEquivocationProof: AugmentedError<ApiType>;
/**
* A key ownership proof provided as part of an equivocation report is invalid.
**/
InvalidKeyOwnershipProof: AugmentedError<ApiType>;
};
balances: {
[key: string]: AugmentedError<ApiType>;
/**
@@ -728,6 +743,64 @@ declare module '@polkadot/api/types/errors' {
**/
InvalidKey: AugmentedError<ApiType>;
};
indices: {
[key: string]: AugmentedError<ApiType>;
/**
* The index was not available.
**/
InUse: AugmentedError<ApiType>;
/**
* The index was not already assigned.
**/
NotAssigned: AugmentedError<ApiType>;
/**
* The index is assigned to another account.
**/
NotOwner: AugmentedError<ApiType>;
/**
* The source and destination accounts are identical.
**/
NotTransfer: AugmentedError<ApiType>;
/**
* The index is permanent and may not be freed/changed.
**/
Permanent: AugmentedError<ApiType>;
};
lottery: {
[key: string]: AugmentedError<ApiType>;
/**
* A lottery has already ended.
**/
AlreadyEnded: AugmentedError<ApiType>;
/**
* You are already participating in the lottery with this call.
**/
AlreadyParticipating: AugmentedError<ApiType>;
/**
* Failed to encode calls
**/
EncodingFailed: AugmentedError<ApiType>;
/**
* A lottery is already in progress.
**/
InProgress: AugmentedError<ApiType>;
/**
* The call is not valid for an open lottery.
**/
InvalidCall: AugmentedError<ApiType>;
/**
* A lottery has not been configured.
**/
NotConfigured: AugmentedError<ApiType>;
/**
* An overflow has occurred.
**/
Overflow: AugmentedError<ApiType>;
/**
* Too many calls for a single lottery.
**/
TooManyCalls: AugmentedError<ApiType>;
};
multisig: {
[key: string]: AugmentedError<ApiType>;
/**
@@ -1032,10 +1105,6 @@ declare module '@polkadot/api/types/errors' {
* A nomination target was supplied that was blocked or otherwise not a validator.
**/
BadTarget: AugmentedError<ApiType>;
/**
* The call is not allowed at the given time due to restrictions of election period.
**/
CallNotAllowed: AugmentedError<ApiType>;
/**
* Duplicate index.
**/
@@ -1092,61 +1161,6 @@ declare module '@polkadot/api/types/errors' {
* Can not rebond without unlocking chunks.
**/
NoUnlockChunk: AugmentedError<ApiType>;
/**
* Error while building the assignment type from the compact. This can happen if an index
* is invalid, or if the weights _overflow_.
**/
OffchainElectionBogusCompact: AugmentedError<ApiType>;
/**
* The submitted result has unknown edges that are not among the presented winners.
**/
OffchainElectionBogusEdge: AugmentedError<ApiType>;
/**
* The election size is invalid.
**/
OffchainElectionBogusElectionSize: AugmentedError<ApiType>;
/**
* One of the submitted nominators has an edge to which they have not voted on chain.
**/
OffchainElectionBogusNomination: AugmentedError<ApiType>;
/**
* One of the submitted nominators is not an active nominator on chain.
**/
OffchainElectionBogusNominator: AugmentedError<ApiType>;
/**
* The claimed score does not match with the one computed from the data.
**/
OffchainElectionBogusScore: AugmentedError<ApiType>;
/**
* A self vote must only be originated from a validator to ONLY themselves.
**/
OffchainElectionBogusSelfVote: AugmentedError<ApiType>;
/**
* One of the submitted winners is not an active candidate on chain (index is out of range
* in snapshot).
**/
OffchainElectionBogusWinner: AugmentedError<ApiType>;
/**
* Incorrect number of winners were presented.
**/
OffchainElectionBogusWinnerCount: AugmentedError<ApiType>;
/**
* The submitted result is received out of the open window.
**/
OffchainElectionEarlySubmission: AugmentedError<ApiType>;
/**
* One of the submitted nominators has an edge which is submitted before the last non-zero
* slash of the target.
**/
OffchainElectionSlashedNomination: AugmentedError<ApiType>;
/**
* The submitted result is not as good as the one stored on chain.
**/
OffchainElectionWeakSubmission: AugmentedError<ApiType>;
/**
* The snapshot data of the current window is missing.
**/
SnapshotUnavailable: AugmentedError<ApiType>;
/**
* Too many nomination targets supplied.
**/
@@ -1229,6 +1243,17 @@ declare module '@polkadot/api/types/errors' {
**/
WrongProposalWeight: AugmentedError<ApiType>;
};
technicalMembership: {
[key: string]: AugmentedError<ApiType>;
/**
* Already a member.
**/
AlreadyMember: AugmentedError<ApiType>;
/**
* Not a member.
**/
NotMember: AugmentedError<ApiType>;
};
tips: {
[key: string]: AugmentedError<ApiType>;
/**
+7 -10
View File
@@ -418,10 +418,11 @@ declare module '@polkadot/api/types/events' {
**/
MemberKicked: AugmentedEvent<ApiType, [AccountId]>;
/**
* A new term with \[new_members\]. This indicates that enough candidates existed to run the
* election, not that enough have has been elected. The inner value must be examined for
* this purpose. A `NewTerm(\[\])` indicates that some candidates got their bond slashed and
* none were elected, whilst `EmptyTerm` means that no candidates existed to begin with.
* A new term with \[new_members\]. This indicates that enough candidates existed to run
* the election, not that enough have has been elected. The inner value must be examined
* for this purpose. A `NewTerm(\[\])` indicates that some candidates got their bond
* slashed and none were elected, whilst `EmptyTerm` means that no candidates existed to
* begin with.
**/
NewTerm: AugmentedEvent<ApiType, [Vec<ITuple<[AccountId, Balance]>>]>;
/**
@@ -769,13 +770,9 @@ declare module '@polkadot/api/types/events' {
**/
Slash: AugmentedEvent<ApiType, [AccountId, Balance]>;
/**
* A new solution for the upcoming election has been stored. \[compute\]
* A new set of stakers was elected.
**/
SolutionStored: AugmentedEvent<ApiType, [ElectionCompute]>;
/**
* A new set of stakers was elected with the given \[compute\].
**/
StakingElection: AugmentedEvent<ApiType, [ElectionCompute]>;
StakingElection: AugmentedEvent<ApiType, []>;
/**
* An account has unbonded this amount. \[stash, amount\]
**/
+2 -44
View File
@@ -24,7 +24,7 @@ import type { AccountId, AccountIndex, AssetId, Balance, BalanceOf, BlockNumber,
import type { Scheduled, TaskAddress } from '@polkadot/types/interfaces/scheduler';
import type { Keys, SessionIndex } from '@polkadot/types/interfaces/session';
import type { Bid, BidKind, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society';
import type { ActiveEraInfo, ElectionPhase, ElectionResult, ElectionScore, ElectionStatus, EraIndex, EraRewardPoints, Exposure, Forcing, Nominations, ReadySolution, RewardDestination, RoundSnapshot, SeatHolder, SlashingSpans, SolutionOrSnapshotSize, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, ValidatorPrefs, Voter } from '@polkadot/types/interfaces/staking';
import type { ActiveEraInfo, ElectionPhase, EraIndex, EraRewardPoints, Exposure, Forcing, Nominations, ReadySolution, RewardDestination, RoundSnapshot, SeatHolder, SlashingSpans, SolutionOrSnapshotSize, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, ValidatorPrefs, Voter } from '@polkadot/types/interfaces/staking';
import type { AccountInfo, ConsumedWeight, DigestOf, EventIndex, EventRecord, LastRuntimeUpgradeInfo, Phase } from '@polkadot/types/interfaces/system';
import type { Bounty, BountyIndex, OpenTip, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
import type { Multiplier } from '@polkadot/types/interfaces/txpayment';
@@ -822,13 +822,6 @@ declare module '@polkadot/api/types/storage' {
* The earliest era for which we have a pending, unapplied slash.
**/
earliestUnappliedSlash: AugmentedQuery<ApiType, () => Observable<Option<EraIndex>>, []> & QueryableStorageEntry<ApiType, []>;
/**
* Flag to control the execution of the offchain election. When `Open(_)`, we accept
* solutions to be submitted.
*
* TWO_PHASE_NOTE: should be removed once we switch to multi-phase.
**/
eraElectionStatus: AugmentedQuery<ApiType, () => Observable<ElectionStatus>, []> & QueryableStorageEntry<ApiType, []>;
/**
* Rewards for the last `HISTORY_DEPTH` eras.
* If reward hasn't been set or has been removed then 0 reward is returned.
@@ -903,13 +896,6 @@ declare module '@polkadot/api/types/storage' {
* invulnerables) and restricted to testnets.
**/
invulnerables: AugmentedQuery<ApiType, () => Observable<Vec<AccountId>>, []> & QueryableStorageEntry<ApiType, []>;
/**
* True if the current **planned** session is final. Note that this does not take era
* forcing into account.
*
* TWO_PHASE_NOTE: should be removed once we switch to multi-phase.
**/
isCurrentSessionFinal: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;
/**
* Map from all (unlocked) "controller" accounts to the info regarding the staking.
**/
@@ -930,20 +916,6 @@ declare module '@polkadot/api/types/storage' {
* Where the reward payment should be made. Keyed by stash.
**/
payee: AugmentedQuery<ApiType, (arg: AccountId | string | Uint8Array) => Observable<RewardDestination>, [AccountId]> & QueryableStorageEntry<ApiType, [AccountId]>;
/**
* The next validator set. At the end of an era, if this is available (potentially from the
* result of an offchain worker), it is immediately used. Otherwise, the on-chain election
* is executed.
*
* TWO_PHASE_NOTE: should be removed once we switch to multi-phase.
**/
queuedElected: AugmentedQuery<ApiType, () => Observable<Option<ElectionResult>>, []> & QueryableStorageEntry<ApiType, []>;
/**
* The score of the current [`QueuedElected`].
*
* TWO_PHASE_NOTE: should be removed once we switch to multi-phase.
**/
queuedScore: AugmentedQuery<ApiType, () => Observable<Option<ElectionScore>>, []> & QueryableStorageEntry<ApiType, []>;
/**
* Slashing spans for stash accounts.
**/
@@ -954,20 +926,6 @@ declare module '@polkadot/api/types/storage' {
* The rest of the slashed value is handled by the `Slash`.
**/
slashRewardFraction: AugmentedQuery<ApiType, () => Observable<Perbill>, []> & QueryableStorageEntry<ApiType, []>;
/**
* Snapshot of nominators at the beginning of the current election window. This should only
* have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`.
*
* TWO_PHASE_NOTE: should be removed once we switch to multi-phase.
**/
snapshotNominators: AugmentedQuery<ApiType, () => Observable<Option<Vec<AccountId>>>, []> & QueryableStorageEntry<ApiType, []>;
/**
* Snapshot of validators at the beginning of the current election window. This should only
* have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`.
*
* TWO_PHASE_NOTE: should be removed once we switch to multi-phase.
**/
snapshotValidators: AugmentedQuery<ApiType, () => Observable<Option<Vec<AccountId>>>, []> & QueryableStorageEntry<ApiType, []>;
/**
* Records information about the maximum slash of a stash within a slashing span,
* as well as how much reward has been paid out.
@@ -977,7 +935,7 @@ declare module '@polkadot/api/types/storage' {
* True if network has been upgraded to this version.
* Storage version of the pallet.
*
* This is set to v5.0.0 for new networks.
* This is set to v6.0.0 for new networks.
**/
storageVersion: AugmentedQuery<ApiType, () => Observable<Releases>, []> & QueryableStorageEntry<ApiType, []>;
/**
+8 -1
View File
@@ -6,6 +6,7 @@ import type { Bytes, HashMap, Json, Null, Option, StorageKey, Text, U256, U64, V
import type { AnyNumber, Codec, IExtrinsic, Observable } from '@polkadot/types/types';
import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';
import type { EpochAuthorship } from '@polkadot/types/interfaces/babe';
import type { BeefySignedCommitment } from '@polkadot/types/interfaces/beefy';
import type { BlockHash } from '@polkadot/types/interfaces/chain';
import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';
import type { AuthorityId } from '@polkadot/types/interfaces/consensus';
@@ -64,6 +65,12 @@ declare module '@polkadot/rpc-core/types.jsonrpc' {
**/
epochAuthorship: AugmentedRpc<() => Observable<HashMap<AuthorityId, EpochAuthorship>>>;
};
beefy: {
/**
* Returns the block most recently finalized by BEEFY, alongside side its justification.
**/
subscribeJustifications: AugmentedRpc<() => Observable<BeefySignedCommitment>>;
};
chain: {
/**
* Get header and body of a relay chain block
@@ -134,7 +141,7 @@ declare module '@polkadot/rpc-core/types.jsonrpc' {
/**
* Instructs the manual-seal authorship task to finalize a block
**/
finalizeBlock: AugmentedRpc<(hash: BlockHash | string | Uint8Array, justification?: Justification | string | Uint8Array) => Observable<bool>>;
finalizeBlock: AugmentedRpc<(hash: BlockHash | string | Uint8Array, justification?: Justification) => Observable<bool>>;
};
eth: {
/**
+10 -75
View File
@@ -19,7 +19,7 @@ import type { AccountId, AccountIndex, AssetId, Balance, BalanceOf, BlockNumber,
import type { Period, Priority } from '@polkadot/types/interfaces/scheduler';
import type { Keys } from '@polkadot/types/interfaces/session';
import type { SocietyJudgement } from '@polkadot/types/interfaces/society';
import type { CompactAssignments, ElectionScore, ElectionSize, EraIndex, RawSolution, RewardDestination, SolutionOrSnapshotSize, ValidatorIndex, ValidatorPrefs } from '@polkadot/types/interfaces/staking';
import type { EraIndex, RawSolution, RewardDestination, SolutionOrSnapshotSize, ValidatorPrefs } from '@polkadot/types/interfaces/staking';
import type { Key } from '@polkadot/types/interfaces/system';
import type { BountyIndex } from '@polkadot/types/interfaces/treasury';
import type { Timepoint } from '@polkadot/types/interfaces/utility';
@@ -108,8 +108,7 @@ declare module '@polkadot/api/types/submittable' {
*
* The origin must be Signed and the sender must have sufficient funds free.
*
* Funds of sender are reserved according to the formula:
* `AssetDepositBase + AssetDepositPerZombie * max_zombies`.
* Funds of sender are reserved by `AssetDeposit`.
*
* Parameters:
* - `id`: The identifier of the new asset. This must not be currently in use to identify
@@ -713,7 +712,7 @@ declare module '@polkadot/api/types/submittable' {
* * `gas_limit`: The gas limit enforced when executing the constructor.
* * `code`: The contract code to deploy in raw bytes.
* * `data`: The input data to pass to the contract constructor.
* * `salt`: Used for the address derivation. See [`Self::contract_address`].
* * `salt`: Used for the address derivation. See [`Pallet::contract_address`].
*
* Instantiation is executed as follows:
*
@@ -1277,8 +1276,8 @@ declare module '@polkadot/api/types/submittable' {
* origin is removed as a runner-up.
* - `origin` is a current member. In this case, the deposit is unreserved and origin is
* removed as a member, consequently not being a candidate for the next round anymore.
* Similar to [`remove_members`], if replacement runners exists, they are immediately used.
* If the prime is renouncing, then no prime will exist until the next round.
* Similar to [`remove_members`], if replacement runners exists, they are immediately
* used. If the prime is renouncing, then no prime will exist until the next round.
*
* The dispatch origin of this call must be signed, and have one of the above roles.
*
@@ -2098,7 +2097,7 @@ declare module '@polkadot/api/types/submittable' {
**/
proxy: AugmentedSubmittable<(real: AccountId | string | Uint8Array, forceProxyType: Option<ProxyType> | null | object | string | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId, Option<ProxyType>, Call]>;
/**
* Dispatch the given `call` from an account that the sender is authorised for through
* Dispatch the given `call` from an account that the sender is authorized for through
* `add_proxy`.
*
* Removes any corresponding announcement(s).
@@ -2837,7 +2836,7 @@ declare module '@polkadot/api/types/submittable' {
* - Write: Bonded, Payee, [Origin Account], Locks, Ledger
* # </weight>
**/
bond: AugmentedSubmittable<(controller: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact<BalanceOf> | AnyNumber | Uint8Array, payee: RewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [LookupSource, Compact<BalanceOf>, RewardDestination]>;
bond: AugmentedSubmittable<(controller: LookupSource | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact<BalanceOf> | AnyNumber | Uint8Array, payee: RewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [LookupSource, Compact<BalanceOf>, RewardDestination]>;
/**
* Add some extra amount that have appeared in the stash `free_balance` into the balance up
* for staking.
@@ -3143,7 +3142,7 @@ declare module '@polkadot/api/types/submittable' {
* - Write: Payee
* # </weight>
**/
setPayee: AugmentedSubmittable<(payee: RewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [RewardDestination]>;
setPayee: AugmentedSubmittable<(payee: RewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | { None: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [RewardDestination]>;
/**
* Sets the ideal number of validators.
*
@@ -3155,70 +3154,6 @@ declare module '@polkadot/api/types/submittable' {
* # </weight>
**/
setValidatorCount: AugmentedSubmittable<(updated: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>]>;
/**
* 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.
*
* then, it will be _put_ on chain.
*
* A solution consists of two pieces of data:
*
* 1. `winners`: a flat vector of all the winners of the round.
* 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.
*
* Additionally, the submitter must provide:
*
* - The `score` that they claim their solution has.
*
* Both validators and nominators will be represented by indices in the solution. The
* indices should respect the corresponding types ([`ValidatorIndex`] and
* [`NominatorIndex`]). Moreover, they should be valid when used to index into
* [`SnapshotValidators`] and [`SnapshotNominators`]. Any invalid index will cause the
* solution to be rejected. These two storage items are set during the election window and
* may be used to determine the indices.
*
* A solution is valid if:
*
* 0. It is submitted when [`EraElectionStatus`] is `Open`.
* 1. Its claimed score is equal to the score computed on-chain.
* 2. Presents the correct number of winners.
* 3. All indexes must be value according to the snapshot vectors. All edge values must
* also be correct and should not overflow the granularity of the ratio type (i.e. 256
* or billion).
* 4. For each edge, all targets are actually nominated by the voter.
* 5. Has correct self-votes.
*
* A solutions score is consisted of 3 parameters:
*
* 1. `min { support.total }` for each support of a winner. This value should be maximized.
* 2. `sum { support.total }` for each support of a winner. This value should be minimized.
* 3. `sum { support.total^2 }` for each support of a winner. This value should be
* minimized (to ensure less variance)
*
* # <weight>
* The transaction is assumed to be the longest path, a better solution.
* - Initial solution is almost the same.
* - Worse solution is retraced in pre-dispatch-checks which sets its own weight.
* # </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: ElectionScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Vec<ValidatorIndex>, CompactAssignments, ElectionScore, EraIndex, ElectionSize]>;
/**
* Unsigned version of `submit_election_solution`.
*
* Note that this must pass the [`ValidateUnsigned`] check which only allows transactions
* from the local node to be included. In other words, only the block author can include a
* transaction in the block.
*
* # <weight>
* See [`submit_election_solution`].
* # </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: ElectionScore, era: EraIndex | AnyNumber | Uint8Array, size: ElectionSize | { validators?: any; nominators?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Vec<ValidatorIndex>, CompactAssignments, ElectionScore, EraIndex, ElectionSize]>;
/**
* 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
@@ -3939,7 +3874,7 @@ declare module '@polkadot/api/types/submittable' {
* Unlock any vested funds of the sender account.
*
* The dispatch origin for this call must be _Signed_ and the sender must have funds still
* locked under this module.
* locked under this pallet.
*
* Emits either `VestingCompleted` or `VestingUpdated`.
*
@@ -3957,7 +3892,7 @@ declare module '@polkadot/api/types/submittable' {
* The dispatch origin for this call must be _Signed_.
*
* - `target`: The account whose vested funds should be unlocked. Must have funds still
* locked under this module.
* locked under this pallet.
*
* Emits either `VestingCompleted` or `VestingUpdated`.
*
+28 -12
View File
@@ -13,15 +13,15 @@ import BN from 'bn.js';
import { Metadata } from '@polkadot/metadata';
import { TypeRegistry } from '@polkadot/types/create';
import { getSpecAlias, getSpecExtensions, getSpecHasher, getSpecRpc, getSpecTypes, getUpgradeVersion } from '@polkadot/types-known';
import { assert, BN_ZERO, logger, u8aEq, u8aToHex, u8aToU8a } from '@polkadot/util';
import { assert, BN_ZERO, logger, stringify, u8aEq, u8aToHex, u8aToU8a } from '@polkadot/util';
import { cryptoWaitReady } from '@polkadot/util-crypto';
import { of } from '@polkadot/x-rxjs';
import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { detectedCapabilities } from './capabilities';
import { Decorate } from './Decorate';
import { detectedCapabilities } from './util';
const KEEPALIVE_INTERVAL = 15000;
const KEEPALIVE_INTERVAL = 10000;
const DEFAULT_BLOCKNUMBER = { unwrap: () => BN_ZERO };
const l = logger('api/init');
@@ -31,7 +31,7 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
#registries: VersionedRegistry[] = [];
#updateSub?: Subscription;
#updateSub?: Subscription | null = null;
constructor (options: ApiOptions, type: ApiTypes, decorateMethod: DecorateMethod<ApiType>) {
super(options, type, decorateMethod);
@@ -156,10 +156,10 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
// on re-connection to the same chain, we don't want to re-do everything from chain again
if (this._isReady) {
return true;
} else if (this.#updateSub) {
this.#updateSub.unsubscribe();
}
this._unsubscribeUpdates();
// only load from on-chain if we are not a clone (default path), alternatively
// just use the values from the source instance provided
[this._genesisHash, this._runtimeMetadata] = this._options.source?._isReady
@@ -197,7 +197,7 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
if (Object.keys(types).length) {
(registry || this.registry).register(types as Record<string, string>);
l.debug(`Capabilities detected${blockHash ? ` (${u8aToHex(u8aToU8a(blockHash))})` : ''}: ${JSON.stringify(types)}`);
l.debug(() => `Capabilities detected${blockHash ? ` (${u8aToHex(u8aToU8a(blockHash))})` : ''}: ${stringify(types)}`);
}
})
.catch(l.error);
@@ -302,6 +302,25 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
return true;
}
private _unsubscribeHealth (): void {
if (this.#healthTimer) {
clearInterval(this.#healthTimer);
this.#healthTimer = null;
}
}
private _unsubscribeUpdates (): void {
if (this.#updateSub) {
this.#updateSub.unsubscribe();
this.#updateSub = null;
}
}
protected _unsubscribe (): void {
this._unsubscribeHealth();
this._unsubscribeUpdates();
}
#onProviderConnect = async (): Promise<void> => {
this.emit('connected');
this._isConnected.next(true);
@@ -321,7 +340,7 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
}
this.#healthTimer = setInterval((): void => {
this._rpcCore.system.health().toPromise().catch(() => null);
this._rpcCore.system.health().toPromise().catch((error) => l.warn(`Health keepalive check failed: ${(error as Error).message}`));
}, KEEPALIVE_INTERVAL);
} catch (_error) {
const error = new Error(`FATAL: Unable to initialize the API: ${(_error as Error).message}`);
@@ -337,10 +356,7 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
this.emit('disconnected');
this._isConnected.next(false);
if (this.#healthTimer) {
clearInterval(this.#healthTimer);
this.#healthTimer = null;
}
this._unsubscribeHealth();
};
#onProviderError = (error: Error): void => {
+181
View File
@@ -0,0 +1,181 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { bool, Raw, u32 } from '@polkadot/types';
import type { Releases } from '@polkadot/types/interfaces';
import type { InterfaceTypes } from '@polkadot/types/types';
import { assert, compactFromU8a } from '@polkadot/util';
import { combineLatest, Observable, of } from '@polkadot/x-rxjs';
import { map, take } from '@polkadot/x-rxjs/operators';
// the order and types needs to map with the all array setup below
type ExtractedQ = [bool | null, bool | null, bool | null, Releases | null];
type ExtractedR = [Raw | null];
type ExtractedC = [u32 | null, u32 | null];
type DetectedKeys = keyof Pick<InterfaceTypes, 'AccountInfo' | 'ValidatorPrefs'>;
type DetectedValues = keyof InterfaceTypes;
interface DetectedTypes extends Record<DetectedKeys, DetectedValues> {
AccountInfo: 'AccountInfoWithRefCount' | 'AccountInfoWithDualRefCount' | 'AccountInfoWithTripleRefCount',
Keys: 'SessionKeys1' | 'SessionKeys2' | 'SessionKeys3' | 'SessionKeys4' | 'SessionKeys5' | 'SessionKeys6' | 'SessionKeys7' | 'SessionKeys8' | 'SessionKeys9' | 'SessionKeys10';
RefCount: 'u8' | 'u32',
SlotRange: Record<string, unknown>;
ValidatorPrefs: 'ValidatorPrefsWithBlocked' | 'ValidatorPrefsWithCommission';
WinningData: string;
}
interface AvailableMap<T> {
filtered: T[];
included: boolean[];
original: T[];
}
interface Constants {
accountIdLength: number;
}
const NumberMap = ['Zero', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten'];
function mapCapabilities ({ accountIdLength }: Constants, [leasePeriodsPerSlot, slotRangeCount]: ExtractedC, [systemRefcount32, systemRefcountDual, systemRefcountTriple, stakingVersion]: ExtractedQ, [keys]: ExtractedR): Partial<DetectedTypes> {
const types: Partial<DetectedTypes> = {};
// AccountInfo
if (systemRefcountTriple && systemRefcountTriple.isTrue) {
types.AccountInfo = 'AccountInfoWithTripleRefCount';
} else if (systemRefcountDual && systemRefcountDual.isTrue) {
types.AccountInfo = 'AccountInfoWithDualRefCount';
} else {
types.AccountInfo = 'AccountInfoWithRefCount';
if (!systemRefcount32 || systemRefcount32.isFalse) {
types.RefCount = 'u8';
}
}
// ValidatorPrefs
if (stakingVersion) {
if (stakingVersion.index >= 4) { // v1 = index 0, V5 = index 4
types.ValidatorPrefs = 'ValidatorPrefsWithBlocked';
} else {
types.ValidatorPrefs = 'ValidatorPrefsWithCommission';
}
}
// Keys
if (keys) {
try {
const [offset, numItems] = compactFromU8a(keys);
const tupleLength = (keys.length - offset) / numItems.toNumber();
const numIds = tupleLength / accountIdLength;
const numIdsRound = Math.floor(numIds);
assert(numIds >= 2 && numIds <= 11, () => `Detected ${numIds} in Keys, should be >= 2 and <= 11`);
if (numIdsRound !== numIds) {
// Beefy?
if ((((numIdsRound - 1) * accountIdLength) + 33) === tupleLength) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
types.Keys = `SessionKeys${numIdsRound - 1}B`;
} else {
assert(false, () => `Expected integer number of keys, found ${numIds.toFixed(2)}`);
}
} else {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
types.Keys = `SessionKeys${numIds - 1}`;
}
} catch (error) {
console.error(error);
}
}
// auctions
if (leasePeriodsPerSlot && slotRangeCount) {
const _enum: string[] = [];
for (let i = 0; leasePeriodsPerSlot.gtn(i); i++) {
for (let j = i; leasePeriodsPerSlot.gtn(j); j++) {
_enum.push(`${NumberMap[i]}${NumberMap[j]}`);
}
}
types.SlotRange = { _enum };
types.WinningData = `[WinningDataEntry; ${slotRangeCount.toNumber()}]`;
}
return types;
}
function filterEntries <T> (original: T[]): AvailableMap<T> {
const included = original.map((c) => !!c);
const filtered = original.filter((_, index) => included[index]);
return { filtered, included, original };
}
function extractResults <R, T = unknown> (results: unknown[], map: AvailableMap<T>): R {
let offset = -1;
return map.included.map((isIncluded) =>
isIncluded
? results[++offset]
: null
) as unknown as R;
}
/**
* @description Query the chain for the specific capabilities
*/
export function detectedCapabilities (api: ApiInterfaceRx, blockHash?: Uint8Array | string | undefined): Observable<Partial<DetectedTypes>> {
const consts = filterEntries([
api.consts.auctions?.leasePeriodsPerSlot,
api.consts.auctions?.slotRangeCount
]);
const queries = filterEntries([
api.query.system?.upgradedToU32RefCount,
api.query.system?.upgradedToDualRefCount,
api.query.system?.upgradedToTripleRefCount,
api.query.staking?.storageVersion
]);
const raws = filterEntries([
api.query.session?.queuedKeys
]);
return combineLatest([
consts.filtered.length
? blockHash
// FIXME consts don't have .at as of yet...
? of([])
: of(consts.filtered)
: of([]),
queries.filtered.length
? blockHash
? combineLatest(queries.filtered.map((c) => c.at(blockHash)))
: api.queryMulti(queries.filtered)
: of([]),
raws.filtered.length
? blockHash
? combineLatest(raws.filtered.map((k) => api.rpc.state.getStorage.raw(k.key(), blockHash)))
: combineLatest(raws.filtered.map((k) => api.rpc.state.getStorage.raw(k.key())))
: of([])
]).pipe(
map(([cResults, qResults, rResults]): Partial<DetectedTypes> =>
mapCapabilities(
{
accountIdLength: api.registry.createType('AccountId').encodedLength
},
extractResults<ExtractedC>(cResults, consts),
extractResults<ExtractedQ>(qResults, queries),
extractResults<ExtractedR>(rResults, raws)
)
),
take(1)
);
}
+2
View File
@@ -50,6 +50,8 @@ export abstract class ApiBase<ApiType extends ApiTypes> extends Getters<ApiType>
* @description Disconnect from the underlying provider, halting all network traffic
*/
public disconnect (): Promise<void> {
this._unsubscribe();
return this._rpcCore.disconnect();
}
-82
View File
@@ -1,82 +0,0 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { bool } from '@polkadot/types';
import type { Releases } from '@polkadot/types/interfaces';
import type { InterfaceTypes } from '@polkadot/types/types';
import { combineLatest, Observable, of } from '@polkadot/x-rxjs';
import { map, take } from '@polkadot/x-rxjs/operators';
// the order and types needs to map with the all array setup below
type Extracted = [bool | null, bool | null, bool | null, Releases | null];
type DetectedKeys = keyof Pick<InterfaceTypes, 'AccountInfo' | 'ValidatorPrefs'>;
type DetectedValues = keyof InterfaceTypes;
interface DetectedTypes extends Record<DetectedKeys, DetectedValues> {
AccountInfo: 'AccountInfoWithRefCount' | 'AccountInfoWithDualRefCount' | 'AccountInfoWithTripleRefCount',
RefCount: 'u8' | 'u32',
ValidatorPrefs: 'ValidatorPrefsWithBlocked' | 'ValidatorPrefsWithCommission';
}
function mapCapabilities ([systemRefcount32, systemRefcountDual, systemRefcountTriple, stakingVersion]: Extracted): Partial<DetectedTypes> {
const types: Partial<DetectedTypes> = {};
// AccountInfo
if (systemRefcountTriple && systemRefcountTriple.isTrue) {
types.AccountInfo = 'AccountInfoWithTripleRefCount';
} else if (systemRefcountDual && systemRefcountDual.isTrue) {
types.AccountInfo = 'AccountInfoWithDualRefCount';
} else {
types.AccountInfo = 'AccountInfoWithRefCount';
if (!systemRefcount32 || systemRefcount32.isFalse) {
types.RefCount = 'u8';
}
}
// ValidatorPrefs
if (stakingVersion) {
if (stakingVersion.index >= 4) { // v1 = index 0, V5 = index 4
types.ValidatorPrefs = 'ValidatorPrefsWithBlocked';
} else {
types.ValidatorPrefs = 'ValidatorPrefsWithCommission';
}
}
return types;
}
/**
* @description Query the chain for the specific capabilities
*/
export function detectedCapabilities (api: ApiInterfaceRx, blockHash?: Uint8Array | string | undefined): Observable<Partial<DetectedTypes>> {
const all = [
api.query.system?.upgradedToU32RefCount,
api.query.system?.upgradedToDualRefCount,
api.query.system?.upgradedToTripleRefCount,
api.query.staking?.storageVersion
];
const included = all.map((c) => !!c);
const filtered = all.filter((_, index) => included[index]);
return (
filtered.length
? blockHash
? combineLatest(filtered.map((c) => c.at(blockHash)))
: api.queryMulti(filtered)
: of([])
).pipe(
map((results): Partial<DetectedTypes> => {
let offset = -1;
return mapCapabilities(
included.map((isIncluded) => isIncluded ? results[++offset] : null) as Extracted
);
}),
take(1)
);
}
+1 -1
View File
@@ -3,12 +3,12 @@
// Simple non-runnable checks to test type definitions in the editor itself
import type { HeaderExtended } from '@polkadot/api-derive/types';
import type { StorageKey } from '@polkadot/types';
import type { AccountId, Balance, DispatchErrorModule, Event, Header, Index } from '@polkadot/types/interfaces';
import type { AnyTuple, IExtrinsic, IMethod } from '@polkadot/types/types';
import { ApiPromise } from '@polkadot/api';
import { HeaderExtended } from '@polkadot/api-derive';
import { createTestPairs, TestKeyringMap } from '@polkadot/keyring/testingPairs';
import { createTypeUnsafe, TypeRegistry } from '@polkadot/types/create';
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/api', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/api', version: '4.7.2' };
+18 -10
View File
@@ -211,7 +211,19 @@ export class ApiPromise extends ApiBase<'promise'> {
* ```
*/
public static create (options?: ApiOptions): Promise<ApiPromise> {
return new ApiPromise(options).isReady;
const instance = new ApiPromise(options);
if (options && options.throwOnConnect) {
return instance.isReadyOrError;
}
// Swallow any rejections on isReadyOrError
// (in Node 15.x this creates issues, when not being looked at)
instance.isReadyOrError.catch(() => {
// ignore
});
return instance.isReady;
}
/**
@@ -235,18 +247,14 @@ export class ApiPromise extends ApiBase<'promise'> {
super(options, 'promise', decorateMethod);
this.#isReadyPromise = new Promise((resolve): void => {
super.once('ready', (): void => {
resolve(this);
});
super.once('ready', () => resolve(this));
});
this.#isReadyOrErrorPromise = new Promise((resolve, reject): void => {
super.once('ready', (): void => {
resolve(this);
});
super.once('error', (e): void => {
reject(e);
});
const tracker = promiseTracker(resolve, reject);
super.once('ready', () => tracker.resolve(this));
super.once('error', (e) => tracker.reject(e));
});
}
+1 -3
View File
@@ -165,9 +165,7 @@ export class ApiRx extends ApiBase<'rxjs'> {
this.#isReadyRx = from<Promise<ApiRx>>(
// You can create an observable from an event, however my mind groks this form better
new Promise((resolve): void => {
super.on('ready', (): void => {
resolve(this);
});
super.on('ready', () => resolve(this));
})
);
}
+5 -1
View File
@@ -32,14 +32,17 @@ export class SubmittableResult implements ISubmittableResult {
public readonly dispatchInfo?: DispatchInfo;
public readonly internalError?: Error;
public readonly events: EventRecord[];
public readonly status: ExtrinsicStatus;
constructor ({ dispatchError, dispatchInfo, events, status }: SubmittableResultValue) {
constructor ({ dispatchError, dispatchInfo, events, internalError, status }: SubmittableResultValue) {
this.dispatchError = dispatchError || extractError(events);
this.dispatchInfo = dispatchInfo || extractInfo(events);
this.events = events || [];
this.internalError = internalError;
this.status = status;
}
@@ -85,6 +88,7 @@ export class SubmittableResult implements ISubmittableResult {
dispatchError: this.dispatchError?.toHuman(),
dispatchInfo: this.dispatchInfo?.toHuman(),
events: this.events.map((event) => event.toHuman(isExtended)),
internalError: this.internalError?.message.toString(),
status: this.status.toHuman(isExtended)
};
}
+4 -1
View File
@@ -11,7 +11,7 @@ import type { AddressOrPair, SignerOptions, SubmittableDryRunResult, Submittable
import { assert, isBn, isFunction, isNumber, isString, isU8a } from '@polkadot/util';
import { of } from '@polkadot/x-rxjs';
import { first, map, mapTo, mergeMap, switchMap, tap } from '@polkadot/x-rxjs/operators';
import { catchError, first, map, mapTo, mergeMap, switchMap, tap } from '@polkadot/x-rxjs/operators';
import { ApiBase } from '../base';
import { filterEvents, isKeyringPair } from '../util';
@@ -242,6 +242,9 @@ export function createClass <ApiType extends ApiTypes> ({ api, apiType, decorate
events: filterEvents(hash, block, events, status),
status
}))
),
catchError((internalError: Error) =>
of(this.#transformResult(new SubmittableResult({ internalError, status })))
)
);
}
+1
View File
@@ -10,6 +10,7 @@ export interface SubmittableResultValue {
dispatchError?: DispatchError;
dispatchInfo?: DispatchInfo;
events?: EventRecord[];
internalError?: Error;
status: ExtrinsicStatus;
}
+4
View File
@@ -69,6 +69,10 @@ export interface ApiOptions extends RegisteredTypes {
* @description The source object to use for runtime information (only used when cloning)
*/
source?: ApiBase<any>;
/**
* @description Throws an error when the initial connection fails (same as isReadyOrError)
*/
throwOnConnect?: boolean;
}
// A smaller interface of ApiRx, used in derive and in SubmittableExtrinsic
+3 -3
View File
@@ -13,7 +13,7 @@ function sig ({ method, section }: StorageEntry, ...args: Type[]): string {
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`);
assert(args.length === 2, () => `${sig(creator, key1, key2)} is a doublemap, requiring 2 arguments, ${args.length} found`);
// pass as tuple
return [creator, args as [any, any]];
@@ -22,7 +22,7 @@ function doDoubleMap (creator: StorageEntry, args: unknown[]): [StorageEntry, [a
function doMap (creator: StorageEntry, args: unknown[]): [StorageEntry] | [StorageEntry, any] {
const { key } = creator.meta.type.asMap;
assert(args.length === 1, `${sig(creator, key)} is a map, requiring 1 argument, ${args.length} found`);
assert(args.length === 1, () => `${sig(creator, key)} is a map, requiring 1 argument, ${args.length} found`);
// expand
return args.length
@@ -41,7 +41,7 @@ export function extractStorageArgs (creator: StorageEntry, _args: unknown[]): [S
return doMap(creator, args);
}
assert(args.length === 0, `${sig(creator)} does not take any arguments, ${args.length} found`);
assert(args.length === 0, () => `${sig(creator)} does not take any arguments, ${args.length} found`);
// no args
return [creator];
+10 -7
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/metadata",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "Helpers to extract information from runtime metadata",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"repository": "github:polkadot-js/api",
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
@@ -16,14 +19,14 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/type-metadata#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/types": "4.1.1",
"@polkadot/types-known": "4.1.1",
"@polkadot/util": "^6.0.5",
"@polkadot/util-crypto": "^6.0.5",
"@babel/runtime": "^7.13.17",
"@polkadot/types": "4.7.2",
"@polkadot/types-known": "4.7.2",
"@polkadot/util": "^6.3.1",
"@polkadot/util-crypto": "^6.3.1",
"bn.js": "^4.11.9"
},
"devDependencies": {
"@polkadot/keyring": "^6.0.5"
"@polkadot/keyring": "^6.3.1"
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ export class MagicNumber extends U32 {
if (!this.isEmpty) {
const magic = registry.createType('u32', MAGIC_NUMBER);
assert(this.eq(magic), `MagicNumber mismatch: expected ${magic.toHex()}, found ${this.toHex()}`);
assert(this.eq(magic), () => `MagicNumber mismatch: expected ${magic.toHex()}, found ${this.toHex()}`);
}
}
}
+2 -2
View File
@@ -3,7 +3,7 @@
import type { Registry } from '@polkadot/types/types';
import { isString, u8aConcat, u8aToU8a } from '@polkadot/util';
import { isString, u8aToU8a } from '@polkadot/util';
import { MetadataVersioned } from './MetadataVersioned';
@@ -11,7 +11,7 @@ import { MetadataVersioned } from './MetadataVersioned';
const VERSION_IDX = 4;
// magic + lowest supported version
const EMPTY_METADATA = u8aConcat(new Uint8Array([0x6d, 0x65, 0x74, 0x61, 9]));
const EMPTY_METADATA = new Uint8Array([0x6d, 0x65, 0x74, 0x61, 9]);
const EMPTY_U8A = new Uint8Array();
function sanitizeInput (_value: Uint8Array | string = EMPTY_U8A): Uint8Array {
+20 -20
View File
@@ -33,18 +33,18 @@ export class MetadataVersioned extends Struct {
}, value as Map<unknown, unknown>);
}
private _assertVersion (version: number): boolean {
assert(this.version <= version, `Cannot convert metadata from v${this.version} to v${version}`);
#assertVersion = (version: number): boolean => {
assert(this.version <= version, () => `Cannot convert metadata from v${this.version} to v${version}`);
return this.version === version;
}
};
private _getVersion<T extends MetaMapped, F extends MetaMapped> (version: MetaVersions, fromPrev: (registry: Registry, input: F, metaVersion: number) => T): T {
#getVersion = <T extends MetaMapped, F extends MetaMapped>(version: MetaVersions, fromPrev: (registry: Registry, input: F, metaVersion: number) => T): T => {
const asCurr = `asV${version}` as MetaAsX;
const asPrev = `asV${version - 1}` as MetaAsX;
if (this._assertVersion(version)) {
return this._metadata[asCurr] as T;
if (this.#assertVersion(version)) {
return this.#metadata()[asCurr] as T;
}
if (!this.#converted.has(version)) {
@@ -52,6 +52,13 @@ export class MetadataVersioned extends Struct {
}
return this.#converted.get(version) as T;
};
/**
* @description the metadata wrapped
*/
#metadata = (): MetadataAll => {
return this.get('metadata') as MetadataAll;
}
/**
@@ -68,30 +75,30 @@ export class MetadataVersioned extends Struct {
* @description Returns the wrapped metadata as a V9 object
*/
public get asV9 (): MetadataV9 {
this._assertVersion(9);
this.#assertVersion(9);
return this._metadata.asV9;
return this.#metadata().asV9;
}
/**
* @description Returns the wrapped values as a V10 object
*/
public get asV10 (): MetadataV10 {
return this._getVersion(10, toV10);
return this.#getVersion(10, toV10);
}
/**
* @description Returns the wrapped values as a V11 object
*/
public get asV11 (): MetadataV11 {
return this._getVersion(11, toV11);
return this.#getVersion(11, toV11);
}
/**
* @description Returns the wrapped values as a V12 object
*/
public get asV12 (): MetadataV12 {
return this._getVersion(12, toV12);
return this.#getVersion(12, toV12);
}
/**
@@ -99,7 +106,7 @@ export class MetadataVersioned extends Struct {
*/
public get asLatest (): MetadataLatest {
// This is non-existent & latest - applied here to do the module-specific type conversions
return this._getVersion(13, toLatest);
return this.#getVersion(13, toLatest);
}
/**
@@ -109,18 +116,11 @@ export class MetadataVersioned extends Struct {
return this.get('magicNumber') as MagicNumber;
}
/**
* @description the metadata wrapped
*/
private get _metadata (): MetadataAll {
return this.get('metadata') as MetadataAll;
}
/**
* @description the metadata version this structure represents
*/
public get version (): number {
return this._metadata.index;
return this.#metadata().index;
}
public getUniqTypes (throwError: boolean): string[] {
@@ -16,7 +16,7 @@ export function createUnchecked (registry: Registry, section: string, callIndex:
const funcName = stringCamelCase(callMetadata.name);
const extrinsicFn = (...args: any[]): Call => {
assert(expectedArgs.length === args.length, `Extrinsic ${section}.${funcName} expects ${expectedArgs.length.valueOf()} arguments, got ${args.length}.`);
assert(expectedArgs.length === args.length, () => `Extrinsic ${section}.${funcName} expects ${expectedArgs.length.valueOf()} arguments, got ${args.length}.`);
return registry.createType('Call', {
args,
@@ -65,7 +65,7 @@ function createKeyDoubleMap (registry: Registry, itemFn: CreateItemFn, args: [Cr
const { meta: { name, type } } = itemFn;
// since we are passing an almost-unknown through, trust, but verify
assert(Array.isArray(args) && !isUndefined(args[0]) && !isNull(args[0]) && !isUndefined(args[1]) && !isNull(args[1]), `${(name || 'unknown').toString()} is a DoubleMap and requires two arguments`);
assert(Array.isArray(args) && !isUndefined(args[0]) && !isNull(args[0]) && !isUndefined(args[1]) && !isNull(args[1]), () => `${(name || 'unknown').toString()} is a DoubleMap and requires two arguments`);
// if this fails, we have bigger issues
assert(!isUndefined(hasher2), '2 hashing functions should be defined for DoubleMaps');
@@ -92,7 +92,7 @@ function createKey (registry: Registry, itemFn: CreateItemFn, arg: CreateArgType
if (type.isMap) {
const map = type.asMap;
assert(!isUndefined(arg) && !isNull(arg), `${name.toString()} is a Map and requires one argument`);
assert(!isUndefined(arg) && !isNull(arg), () => `${name.toString()} is a Map and requires one argument`);
param = registry.createType(map.key.toString() as 'Raw', arg).toU8a();
}
@@ -5,7 +5,7 @@ import type { StorageEntry } from '@polkadot/types/primitive/types';
import type { Registry } from '@polkadot/types/types';
import type { Storage } from '../types';
import * as substrate from './substrate';
import { substrate } from './substrate';
/** @internal */
export function getStorage (registry: Registry, metaVersion: number): Storage {
@@ -12,6 +12,8 @@ interface SubstrateMetadata {
type: string;
}
type Creator = (registry: Registry, metaVersion: number) => StorageEntry;
// Small helper function to factorize code on this page.
/** @internal */
function createRuntimeFunction (method: string, key: string, { documentation, type }: SubstrateMetadata): (registry: Registry, metaVersion: number) => StorageEntry {
@@ -29,27 +31,25 @@ function createRuntimeFunction (method: string, key: string, { documentation, ty
}, { key, metaVersion, skipHashing: true });
}
export const code = createRuntimeFunction('code', ':code', {
documentation: 'Wasm code of the runtime.',
type: 'Bytes'
});
export const heapPages = createRuntimeFunction('heapPages', ':heappages', {
documentation: 'Number of wasm linear memory pages required for execution of the runtime.',
type: 'u64'
});
export const extrinsicIndex = createRuntimeFunction('extrinsicIndex', ':extrinsic_index', {
documentation: 'Current extrinsic index (u32) is stored under this key.',
type: 'u32'
});
export const changesTrieConfig = createRuntimeFunction('changesTrieConfig', ':changes_trie', {
documentation: 'Changes trie configuration is stored under this key.',
type: 'u32'
});
export const childStorageKeyPrefix = createRuntimeFunction('childStorageKeyPrefix', ':child_storage:', {
documentation: 'Prefix of child storage keys.',
type: 'u32'
});
export const substrate: Record<string, Creator> = {
changesTrieConfig: createRuntimeFunction('changesTrieConfig', ':changes_trie', {
documentation: ' Changes trie configuration is stored under this key.',
type: 'u32'
}),
childStorageKeyPrefix: createRuntimeFunction('childStorageKeyPrefix', ':child_storage:', {
documentation: ' Prefix of child storage keys.',
type: 'u32'
}),
code: createRuntimeFunction('code', ':code', {
documentation: ' Wasm code of the runtime.',
type: 'Bytes'
}),
extrinsicIndex: createRuntimeFunction('extrinsicIndex', ':extrinsic_index', {
documentation: ' Current extrinsic index (u32) is stored under this key.',
type: 'u32'
}),
heapPages: createRuntimeFunction('heapPages', ':heappages', {
documentation: ' Number of wasm linear memory pages required for execution of the runtime.',
type: 'u64'
})
};
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/metadata', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/metadata', version: '4.7.2' };
+3 -3
View File
@@ -5,7 +5,7 @@ import type { Codec, Registry } from '@polkadot/types/types';
import type { MetadataInterface } from '../types';
import { unwrapStorageType } from '@polkadot/types/primitive/StorageKey';
import { assert, hexToU8a, u8aToHex } from '@polkadot/util';
import { assert, hexToU8a, stringify, u8aToHex } from '@polkadot/util';
import { Metadata } from '../Metadata';
import { getUniqTypes } from './getUniqTypes';
@@ -22,7 +22,7 @@ export function decodeLatestSubstrate<Modules extends Codec> (registry: Registry
expect((metadata[`asV${version}` as keyof Metadata] as unknown as MetadataInterface<Modules>).modules.length).not.toBe(0);
expect(metadata.toJSON()).toEqual(staticSubstrate);
} catch (error) {
console.error(JSON.stringify(metadata.toJSON()));
console.error(stringify(metadata.toJSON()));
throw error;
}
@@ -65,7 +65,7 @@ export function defaultValues (registry: Registry, rpcData: string, withThrow =
if (withFallbackCheck) {
const [hexType, hexOrig] = [u8aToHex(type.toU8a()), u8aToHex(fallback.toU8a(true))];
assert(hexType === hexOrig, `Fallback does not match (${((hexOrig.length - 2) / 2) - ((hexType.length - 2) / 2)} bytes missing): ${hexType} !== ${hexOrig}`);
assert(hexType === hexOrig, () => `Fallback does not match (${((hexOrig.length - 2) / 2) - ((hexType.length - 2) / 2)} bytes missing): ${hexType} !== ${hexOrig}`);
}
} catch (error) {
const message = `${location}:: ${(error as Error).message}`;
+212 -381
View File
@@ -499,7 +499,7 @@
{
"name": "Version",
"type": "RuntimeVersion",
"value": "0x106e6f6465387375627374726174652d6e6f64650a000000090100000000000034df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000068b66ba122c93fa70100000037c8bb1350a9a2a80100000091d5df18b0d2cf5801000000ab3c0572291feb8b0100000002000000",
"value": "0x106e6f6465387375627374726174652d6e6f64650a000000090100000100000034df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000068b66ba122c93fa70100000037c8bb1350a9a2a80100000091d5df18b0d2cf5801000000ab3c0572291feb8b0100000002000000",
"documentation": [
" Get the chain's current version."
]
@@ -947,13 +947,11 @@
{
"name": "EpochDuration",
"type": "u64",
"value": "0x1400000000000000",
"value": "0xc800000000000000",
"documentation": [
" The number of **slots** that an epoch takes. We couple sessions to",
" epochs, i.e. we start a new session once the new epoch begins.",
" NOTE: Currently it is not possible to change the epoch duration",
" after the chain has started. Attempting to do so will brick block",
" production."
" The amount of time, in slots, that each epoch should last.",
" NOTE: Currently it is not possible to change the epoch duration after",
" the chain has started. Attempting to do so will brick block production."
]
},
{
@@ -969,7 +967,26 @@
]
}
],
"errors": [],
"errors": [
{
"name": "InvalidEquivocationProof",
"documentation": [
" An equivocation proof provided as part of an equivocation report is invalid."
]
},
{
"name": "InvalidKeyOwnershipProof",
"documentation": [
" A key ownership proof provided as part of an equivocation report is invalid."
]
},
{
"name": "DuplicateOffenceReport",
"documentation": [
" A given equivocation report is valid but already previously reported."
]
}
],
"index": 2
},
{
@@ -1375,7 +1392,38 @@
]
}
],
"errors": [],
"errors": [
{
"name": "NotAssigned",
"documentation": [
" The index was not already assigned."
]
},
{
"name": "NotOwner",
"documentation": [
" The index is assigned to another account."
]
},
{
"name": "InUse",
"documentation": [
" The index was not available."
]
},
{
"name": "NotTransfer",
"documentation": [
" The source and destination accounts are identical."
]
},
{
"name": "Permanent",
"documentation": [
" The index is permanent and may not be freed/changed."
]
}
],
"index": 5
},
{
@@ -1954,7 +2002,7 @@
{
"name": "UnsignedPhase",
"type": "BlockNumber",
"value": "0x05000000",
"value": "0x32000000",
"documentation": [
" Duration of the unsigned phase."
]
@@ -1962,7 +2010,7 @@
{
"name": "SignedPhase",
"type": "BlockNumber",
"value": "0x05000000",
"value": "0x32000000",
"documentation": [
" Duration of the signed phase."
]
@@ -1970,7 +2018,7 @@
{
"name": "SolutionImprovementThreshold",
"type": "Perbill",
"value": "0x20a10700",
"value": "0xa0860100",
"documentation": [
" The minimum amount of improvement to the solution score that defines a solution as",
" \"better\" (in any phase)."
@@ -2463,102 +2511,18 @@
" This is basically in sync with the call to [`SessionManager::new_session`]."
]
},
{
"name": "SnapshotValidators",
"modifier": "Optional",
"type": {
"plain": "Vec<AccountId>"
},
"fallback": "0x00",
"documentation": [
" Snapshot of validators at the beginning of the current election window. This should only",
" have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`.",
"",
" TWO_PHASE_NOTE: should be removed once we switch to multi-phase."
]
},
{
"name": "SnapshotNominators",
"modifier": "Optional",
"type": {
"plain": "Vec<AccountId>"
},
"fallback": "0x00",
"documentation": [
" Snapshot of nominators at the beginning of the current election window. This should only",
" have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`.",
"",
" TWO_PHASE_NOTE: should be removed once we switch to multi-phase."
]
},
{
"name": "QueuedElected",
"modifier": "Optional",
"type": {
"plain": "ElectionResult"
},
"fallback": "0x00",
"documentation": [
" The next validator set. At the end of an era, if this is available (potentially from the",
" result of an offchain worker), it is immediately used. Otherwise, the on-chain election",
" is executed.",
"",
" TWO_PHASE_NOTE: should be removed once we switch to multi-phase."
]
},
{
"name": "QueuedScore",
"modifier": "Optional",
"type": {
"plain": "ElectionScore"
},
"fallback": "0x00",
"documentation": [
" The score of the current [`QueuedElected`].",
"",
" TWO_PHASE_NOTE: should be removed once we switch to multi-phase."
]
},
{
"name": "EraElectionStatus",
"modifier": "Default",
"type": {
"plain": "ElectionStatus"
},
"fallback": "0x00",
"documentation": [
" Flag to control the execution of the offchain election. When `Open(_)`, we accept",
" solutions to be submitted.",
"",
" TWO_PHASE_NOTE: should be removed once we switch to multi-phase."
]
},
{
"name": "IsCurrentSessionFinal",
"modifier": "Default",
"type": {
"plain": "bool"
},
"fallback": "0x00",
"documentation": [
" True if the current **planned** session is final. Note that this does not take era",
" forcing into account.",
"",
" TWO_PHASE_NOTE: should be removed once we switch to multi-phase."
]
},
{
"name": "StorageVersion",
"modifier": "Default",
"type": {
"plain": "Releases"
},
"fallback": "0x04",
"fallback": "0x05",
"documentation": [
" True if network has been upgraded to this version.",
" Storage version of the pallet.",
"",
" This is set to v5.0.0 for new networks."
" This is set to v6.0.0 for new networks."
]
}
]
@@ -3163,118 +3127,6 @@
" # </weight>"
]
},
{
"name": "submit_election_solution",
"args": [
{
"name": "winners",
"type": "Vec<ValidatorIndex>"
},
{
"name": "compact",
"type": "CompactAssignments"
},
{
"name": "score",
"type": "ElectionScore"
},
{
"name": "era",
"type": "EraIndex"
},
{
"name": "size",
"type": "ElectionSize"
}
],
"documentation": [
" 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.",
"",
" then, it will be _put_ on chain.",
"",
" A solution consists of two pieces of data:",
"",
" 1. `winners`: a flat vector of all the winners of the round.",
" 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.",
"",
" Additionally, the submitter must provide:",
"",
" - The `score` that they claim their solution has.",
"",
" Both validators and nominators will be represented by indices in the solution. The",
" indices should respect the corresponding types ([`ValidatorIndex`] and",
" [`NominatorIndex`]). Moreover, they should be valid when used to index into",
" [`SnapshotValidators`] and [`SnapshotNominators`]. Any invalid index will cause the",
" solution to be rejected. These two storage items are set during the election window and",
" may be used to determine the indices.",
"",
" A solution is valid if:",
"",
" 0. It is submitted when [`EraElectionStatus`] is `Open`.",
" 1. Its claimed score is equal to the score computed on-chain.",
" 2. Presents the correct number of winners.",
" 3. All indexes must be value according to the snapshot vectors. All edge values must",
" also be correct and should not overflow the granularity of the ratio type (i.e. 256",
" or billion).",
" 4. For each edge, all targets are actually nominated by the voter.",
" 5. Has correct self-votes.",
"",
" A solutions score is consisted of 3 parameters:",
"",
" 1. `min { support.total }` for each support of a winner. This value should be maximized.",
" 2. `sum { support.total }` for each support of a winner. This value should be minimized.",
" 3. `sum { support.total^2 }` for each support of a winner. This value should be",
" minimized (to ensure less variance)",
"",
" # <weight>",
" The transaction is assumed to be the longest path, a better solution.",
" - Initial solution is almost the same.",
" - Worse solution is retraced in pre-dispatch-checks which sets its own weight.",
" # </weight>"
]
},
{
"name": "submit_election_solution_unsigned",
"args": [
{
"name": "winners",
"type": "Vec<ValidatorIndex>"
},
{
"name": "compact",
"type": "CompactAssignments"
},
{
"name": "score",
"type": "ElectionScore"
},
{
"name": "era",
"type": "EraIndex"
},
{
"name": "size",
"type": "ElectionSize"
}
],
"documentation": [
" Unsigned version of `submit_election_solution`.",
"",
" Note that this must pass the [`ValidateUnsigned`] check which only allows transactions",
" from the local node to be included. In other words, only the block author can include a",
" transaction in the block.",
"",
" # <weight>",
" See [`submit_election_solution`].",
" # </weight>"
]
},
{
"name": "kick",
"args": [
@@ -3347,20 +3199,9 @@
},
{
"name": "StakingElection",
"args": [
"ElectionCompute"
],
"args": [],
"documentation": [
" A new set of stakers was elected with the given \\[compute\\]."
]
},
{
"name": "SolutionStored",
"args": [
"ElectionCompute"
],
"documentation": [
" A new solution for the upcoming election has been stored. \\[compute\\]"
" A new set of stakers was elected."
]
},
{
@@ -3437,38 +3278,6 @@
" intervention."
]
},
{
"name": "ElectionLookahead",
"type": "BlockNumber",
"value": "0x05000000",
"documentation": [
" 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."
]
},
{
"name": "MaxIterations",
"type": "u32",
"value": "0x0a000000",
"documentation": [
" Maximum number of balancing iterations to run in the offchain submission.",
"",
" If set to 0, balance_solution will not be executed at all."
]
},
{
"name": "MinSolutionScoreBump",
"type": "Perbill",
"value": "0x20a10700",
"documentation": [
" The threshold of improvement that should be provided for a new solution to be accepted."
]
},
{
"name": "MaxNominatorRewardedPerValidator",
"type": "u32",
@@ -3479,6 +3288,14 @@
" For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim",
" their reward. This used to limit the i/o cost for the nominator payout."
]
},
{
"name": "MaxNominations",
"type": "u32",
"value": "0x10000000",
"documentation": [
" Maximum number of nominations per nominator."
]
}
],
"errors": [
@@ -3572,93 +3389,6 @@
" Rewards for this era have already been claimed for this validator."
]
},
{
"name": "OffchainElectionEarlySubmission",
"documentation": [
" The submitted result is received out of the open window."
]
},
{
"name": "OffchainElectionWeakSubmission",
"documentation": [
" The submitted result is not as good as the one stored on chain."
]
},
{
"name": "SnapshotUnavailable",
"documentation": [
" The snapshot data of the current window is missing."
]
},
{
"name": "OffchainElectionBogusWinnerCount",
"documentation": [
" Incorrect number of winners were presented."
]
},
{
"name": "OffchainElectionBogusWinner",
"documentation": [
" One of the submitted winners is not an active candidate on chain (index is out of range",
" in snapshot)."
]
},
{
"name": "OffchainElectionBogusCompact",
"documentation": [
" Error while building the assignment type from the compact. This can happen if an index",
" is invalid, or if the weights _overflow_."
]
},
{
"name": "OffchainElectionBogusNominator",
"documentation": [
" One of the submitted nominators is not an active nominator on chain."
]
},
{
"name": "OffchainElectionBogusNomination",
"documentation": [
" One of the submitted nominators has an edge to which they have not voted on chain."
]
},
{
"name": "OffchainElectionSlashedNomination",
"documentation": [
" One of the submitted nominators has an edge which is submitted before the last non-zero",
" slash of the target."
]
},
{
"name": "OffchainElectionBogusSelfVote",
"documentation": [
" A self vote must only be originated from a validator to ONLY themselves."
]
},
{
"name": "OffchainElectionBogusEdge",
"documentation": [
" The submitted result has unknown edges that are not among the presented winners."
]
},
{
"name": "OffchainElectionBogusScore",
"documentation": [
" The claimed score does not match with the one computed from the data."
]
},
{
"name": "OffchainElectionBogusElectionSize",
"documentation": [
" The election size is invalid."
]
},
{
"name": "CallNotAllowed",
"documentation": [
" The call is not allowed at the given time due to restrictions of election period."
]
},
{
"name": "IncorrectHistoryDepth",
"documentation": [
@@ -6056,7 +5786,7 @@
{
"name": "Elections",
"storage": {
"prefix": "PhragmenElection",
"prefix": "Elections",
"items": [
{
"name": "Members",
@@ -6226,8 +5956,8 @@
" origin is removed as a runner-up.",
" - `origin` is a current member. In this case, the deposit is unreserved and origin is",
" removed as a member, consequently not being a candidate for the next round anymore.",
" Similar to [`remove_members`], if replacement runners exists, they are immediately used.",
" If the prime is renouncing, then no prime will exist until the next round.",
" Similar to [`remove_members`], if replacement runners exists, they are immediately",
" used. If the prime is renouncing, then no prime will exist until the next round.",
"",
" The dispatch origin of this call must be signed, and have one of the above roles.",
"",
@@ -6298,10 +6028,11 @@
"Vec<(AccountId,Balance)>"
],
"documentation": [
" A new term with \\[new_members\\]. This indicates that enough candidates existed to run the",
" election, not that enough have has been elected. The inner value must be examined for",
" this purpose. A `NewTerm(\\[\\])` indicates that some candidates got their bond slashed and",
" none were elected, whilst `EmptyTerm` means that no candidates existed to begin with."
" A new term with \\[new_members\\]. This indicates that enough candidates existed to run",
" the election, not that enough have has been elected. The inner value must be examined",
" for this purpose. A `NewTerm(\\[\\])` indicates that some candidates got their bond",
" slashed and none were elected, whilst `EmptyTerm` means that no candidates existed to",
" begin with."
]
},
{
@@ -6363,47 +6094,66 @@
}
],
"constants": [
{
"name": "PalletId",
"type": "LockIdentifier",
"value": "0x706872656c656374",
"documentation": [
" Identifier for the elections-phragmen pallet's lock"
]
},
{
"name": "CandidacyBond",
"type": "BalanceOf",
"value": "0x0080c6a47e8d03000000000000000000",
"documentation": []
"documentation": [
" How much should be locked up in order to submit one's candidacy."
]
},
{
"name": "VotingBondBase",
"type": "BalanceOf",
"value": "0x00f0436de36a01000000000000000000",
"documentation": []
"documentation": [
" Base deposit associated with voting.",
"",
" This should be sensibly high to economically ensure the pallet cannot be attacked by",
" creating a gigantic number of votes."
]
},
{
"name": "VotingBondFactor",
"type": "BalanceOf",
"value": "0x0000cc7b9fae00000000000000000000",
"documentation": []
"documentation": [
" The amount of bond that need to be locked for each vote (32 bytes)."
]
},
{
"name": "DesiredMembers",
"type": "u32",
"value": "0x0d000000",
"documentation": []
"documentation": [
" Number of members to elect."
]
},
{
"name": "DesiredRunnersUp",
"type": "u32",
"value": "0x07000000",
"documentation": []
"documentation": [
" Number of runners_up to keep."
]
},
{
"name": "TermDuration",
"type": "BlockNumber",
"value": "0x80130300",
"documentation": []
},
{
"name": "ModuleId",
"type": "LockIdentifier",
"value": "0x706872656c656374",
"documentation": []
"documentation": [
" How long each seat is kept. This defines the next block number at which an election",
" round will happen. If set to zero, no elections are ever triggered and the module will",
" be in passive mode."
]
}
],
"errors": [
@@ -6692,7 +6442,20 @@
}
],
"constants": [],
"errors": [],
"errors": [
{
"name": "AlreadyMember",
"documentation": [
" Already a member."
]
},
{
"name": "NotMember",
"documentation": [
" Not a member."
]
}
],
"index": 15
},
{
@@ -7134,8 +6897,8 @@
]
},
{
"name": "ModuleId",
"type": "ModuleId",
"name": "PalletId",
"type": "PalletId",
"value": "0x70792f7472737279",
"documentation": [
" The treasury's module id, used for deriving its sovereign account ID."
@@ -7335,7 +7098,7 @@
" * `gas_limit`: The gas limit enforced when executing the constructor.",
" * `code`: The contract code to deploy in raw bytes.",
" * `data`: The input data to pass to the contract constructor.",
" * `salt`: Used for the address derivation. See [`Self::contract_address`].",
" * `salt`: Used for the address derivation. See [`Pallet::contract_address`].",
"",
" Instantiation is executed as follows:",
"",
@@ -9878,12 +9641,20 @@
]
},
{
"name": "ModuleId",
"type": "ModuleId",
"name": "PalletId",
"type": "PalletId",
"value": "0x70792f736f636965",
"documentation": [
" The societies's module id"
]
},
{
"name": "MaxCandidateIntake",
"type": "u32",
"value": "0x0a000000",
"documentation": [
" Maximum candidate intake per round."
]
}
],
"errors": [
@@ -10583,7 +10354,7 @@
" Unlock any vested funds of the sender account.",
"",
" The dispatch origin for this call must be _Signed_ and the sender must have funds still",
" locked under this module.",
" locked under this pallet.",
"",
" Emits either `VestingCompleted` or `VestingUpdated`.",
"",
@@ -10609,7 +10380,7 @@
" The dispatch origin for this call must be _Signed_.",
"",
" - `target`: The account whose vested funds should be unlocked. Must have funds still",
" locked under this module.",
" locked under this pallet.",
"",
" Emits either `VestingCompleted` or `VestingUpdated`.",
"",
@@ -10718,7 +10489,7 @@
"type": "BalanceOf",
"value": "0x0000c16ff28623000000000000000000",
"documentation": [
" The minimum amount to be transferred to create a new vesting schedule."
" The minimum amount transferred to call `vested_transfer`."
]
}
],
@@ -11397,7 +11168,7 @@
}
],
"documentation": [
" Dispatch the given `call` from an account that the sender is authorised for through",
" Dispatch the given `call` from an account that the sender is authorized for through",
" `add_proxy`.",
"",
" Removes any corresponding announcement(s).",
@@ -11458,7 +11229,10 @@
"type": "BalanceOf",
"value": "0x00f09e544c3900000000000000000000",
"documentation": [
" The base amount of currency needed to reserve for creating a proxy."
" The base amount of currency needed to reserve for creating a proxy.",
"",
" This is held for an additional storage item whose value size is",
" `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes."
]
},
{
@@ -11466,7 +11240,11 @@
"type": "BalanceOf",
"value": "0x0060aa7714b400000000000000000000",
"documentation": [
" The amount of currency needed per proxy added."
" The amount of currency needed per proxy added.",
"",
" This is held for adding 32 bytes plus an instance of `ProxyType` more into a pre-existing",
" storage value. Thus, when configuring `ProxyDepositFactor` one should take into account",
" `32 + proxy_type.encode().len()` bytes of data."
]
},
{
@@ -11482,7 +11260,7 @@
"type": "u32",
"value": "0x20000000",
"documentation": [
" `MaxPending` metadata shadow."
" The maximum amount of time-delayed announcements that are allowed to be pending."
]
},
{
@@ -11490,7 +11268,9 @@
"type": "BalanceOf",
"value": "0x00f09e544c3900000000000000000000",
"documentation": [
" `AnnouncementDepositBase` metadata shadow."
" The base amount of currency needed to reserve for creating an announcement.",
"",
" This is held when a new storage item holding a `Balance` is created (typically 16 bytes)."
]
},
{
@@ -11498,7 +11278,10 @@
"type": "BalanceOf",
"value": "0x00c054ef286801000000000000000000",
"documentation": [
" `AnnouncementDepositFactor` metadata shadow."
" The amount of currency needed per announcement made.",
"",
" This is held for adding an `AccountId`, `Hash` and `BlockNumber` (typically 68 bytes)",
" into a pre-existing storage value."
]
}
],
@@ -12911,8 +12694,7 @@
"",
" The origin must be Signed and the sender must have sufficient funds free.",
"",
" Funds of sender are reserved according to the formula:",
" `AssetDepositBase + AssetDepositPerZombie * max_zombies`.",
" Funds of sender are reserved by `AssetDeposit`.",
"",
" Parameters:",
" - `id`: The identifier of the new asset. This must not be currently in use to identify",
@@ -14199,8 +13981,8 @@
],
"constants": [
{
"name": "ModuleId",
"type": "ModuleId",
"name": "PalletId",
"type": "PalletId",
"value": "0x70792f6c6f74746f",
"documentation": []
},
@@ -14211,7 +13993,56 @@
"documentation": []
}
],
"errors": [],
"errors": [
{
"name": "Overflow",
"documentation": [
" An overflow has occurred."
]
},
{
"name": "NotConfigured",
"documentation": [
" A lottery has not been configured."
]
},
{
"name": "InProgress",
"documentation": [
" A lottery is already in progress."
]
},
{
"name": "AlreadyEnded",
"documentation": [
" A lottery has already ended."
]
},
{
"name": "InvalidCall",
"documentation": [
" The call is not valid for an open lottery."
]
},
{
"name": "AlreadyParticipating",
"documentation": [
" You are already participating in the lottery with this call."
]
},
{
"name": "TooManyCalls",
"documentation": [
" Too many calls for a single lottery."
]
},
{
"name": "EncodingFailed",
"documentation": [
" Failed to encode calls"
]
}
],
"index": 36
},
{
File diff suppressed because one or more lines are too long
+11 -8
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/rpc-core",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "A JavaScript wrapper for the Polkadot JsonRPC interface",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
@@ -16,14 +19,14 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-core#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/metadata": "4.1.1",
"@polkadot/rpc-provider": "4.1.1",
"@polkadot/types": "4.1.1",
"@polkadot/util": "^6.0.5",
"@polkadot/x-rxjs": "^6.0.5"
"@babel/runtime": "^7.13.17",
"@polkadot/metadata": "4.7.2",
"@polkadot/rpc-provider": "4.7.2",
"@polkadot/types": "4.7.2",
"@polkadot/util": "^6.3.1",
"@polkadot/x-rxjs": "^6.3.1"
},
"devDependencies": {
"@polkadot/keyring": "^6.0.5"
"@polkadot/keyring": "^6.3.1"
}
}
+1 -1
View File
@@ -343,7 +343,7 @@ export class RpcCore {
? ''
: ` (${def.params.length - reqArgCount} optional)`;
assert(inputs.length >= reqArgCount && inputs.length <= def.params.length, `Expected ${def.params.length} parameters${optText}, ${inputs.length} found instead`);
assert(inputs.length >= reqArgCount && inputs.length <= def.params.length, () => `Expected ${def.params.length} parameters${optText}, ${inputs.length} found instead`);
return inputs.map((input, index): Codec =>
createTypeUnsafe(registry, def.params[index].type, [input], { blockHash })
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/rpc-core', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/rpc-core', version: '4.7.2' };
+2 -2
View File
@@ -3,7 +3,7 @@
import type { Observable } from '@polkadot/x-rxjs';
import { logger } from '@polkadot/util';
import { logger, stringify } from '@polkadot/util';
import { catchError, distinctUntilChanged, publishReplay, refCount, tap } from '@polkadot/x-rxjs/operators';
import { refCountDelay } from './refCountDelay';
@@ -19,7 +19,7 @@ interface Options {
const l = logger('drr');
const CMP = (a: unknown, b: unknown): boolean =>
JSON.stringify({ t: a }) === JSON.stringify({ t: b });
stringify({ t: a }) === stringify({ t: b });
const ERR = (error: Error): Observable<never> => {
l.error(error);
+14 -11
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/rpc-provider",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "Transport providers for the API",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
@@ -16,20 +19,20 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-provider#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/types": "4.1.1",
"@polkadot/util": "^6.0.5",
"@polkadot/util-crypto": "^6.0.5",
"@polkadot/x-fetch": "^6.0.5",
"@polkadot/x-global": "^6.0.5",
"@polkadot/x-ws": "^6.0.5",
"@babel/runtime": "^7.13.17",
"@polkadot/types": "4.7.2",
"@polkadot/util": "^6.3.1",
"@polkadot/util-crypto": "^6.3.1",
"@polkadot/x-fetch": "^6.3.1",
"@polkadot/x-global": "^6.3.1",
"@polkadot/x-ws": "^6.3.1",
"bn.js": "^4.11.9",
"eventemitter3": "^4.0.7"
},
"devDependencies": {
"@polkadot/keyring": "^6.0.5",
"@polkadot/metadata": "4.1.1",
"@polkadot/keyring": "^6.3.1",
"@polkadot/metadata": "4.7.2",
"mock-socket": "^9.0.3",
"nock": "^13.0.10"
"nock": "^13.0.11"
}
}
+3 -3
View File
@@ -3,7 +3,7 @@
import type { JsonRpcRequest, JsonRpcResponse, JsonRpcResponseBaseError } from '../types';
import { assert, isNumber, isString, isUndefined } from '@polkadot/util';
import { assert, isNumber, isString, isUndefined, stringify } from '@polkadot/util';
function formatErrorData (data?: string | number): string {
if (isUndefined(data)) {
@@ -12,7 +12,7 @@ function formatErrorData (data?: string | number): string {
const formatted = `: ${isString(data)
? data.replace(/Error\("/g, '').replace(/\("/g, '(').replace(/"\)/g, ')').replace(/\(/g, ', ').replace(/\)/g, '')
: JSON.stringify(data)}`;
: stringify(data)}`;
// We need some sort of cut-off here since these can be very large and
// very nested, pick a number and trim the result display to it
@@ -47,7 +47,7 @@ export class RpcCoder {
}
public encodeJson (method: string, params: any | any[]): string {
return JSON.stringify(
return stringify(
this.encodeObject(method, params)
);
}
+2 -2
View File
@@ -44,7 +44,7 @@ export class HttpProvider implements ProviderInterface {
* @param {string} endpoint The endpoint url starting with http://
*/
constructor (endpoint: string = defaults.HTTP_URL, headers: Record<string, string> = {}) {
assert(/^(https|http):\/\//.test(endpoint), `Endpoint should start with 'http://', received '${endpoint}'`);
assert(/^(https|http):\/\//.test(endpoint), () => `Endpoint should start with 'http://', received '${endpoint}'`);
this.#coder = new RpcCoder();
this.#endpoint = endpoint;
@@ -116,7 +116,7 @@ export class HttpProvider implements ProviderInterface {
method: 'POST'
});
assert(response.ok, `[${response.status}]: ${response.statusText}`);
assert(response.ok, () => `[${response.status}]: ${response.statusText}`);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const result = await response.json();
+4 -4
View File
@@ -60,7 +60,7 @@ export class MockProvider implements ProviderInterface {
chain_getFinalizedHead: () => this.registry.createType('Header', rpcHeader.result).hash,
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
chain_getHeader: () => this.registry.createType('Header', rpcHeader.result).toJSON(),
rpc_methods: (): string[] => [],
rpc_methods: () => this.registry.createType('RpcMethods').toJSON(),
state_getKeys: (): string[] => [],
state_getKeysPaged: (): string[] => [],
state_getMetadata: (): string => rpcMetadata,
@@ -121,7 +121,7 @@ export class MockProvider implements ProviderInterface {
// eslint-disable-next-line @typescript-eslint/require-await
public async send (method: string, params: any[]): Promise<unknown> {
assert(this.requests[method], `provider.send: Invalid method '${method}'`);
assert(this.requests[method], () => `provider.send: Invalid method '${method}'`);
return this.requests[method](this.db, params);
}
@@ -130,7 +130,7 @@ export class MockProvider implements ProviderInterface {
public async subscribe (type: string, method: string, ...params: unknown[]): Promise<number> {
l.debug((): any => ['subscribe', method, params]);
assert(this.subscriptions[method], `provider.subscribe: Invalid method '${method}'`);
assert(this.subscriptions[method], () => `provider.subscribe: Invalid method '${method}'`);
const callback = params.pop() as MockStateSubscriptionCallback;
const id = ++this.subscriptionId;
@@ -151,7 +151,7 @@ export class MockProvider implements ProviderInterface {
l.debug((): any => ['unsubscribe', id, sub]);
assert(sub, `Unable to find subscription for ${id}`);
assert(sub, () => `Unable to find subscription for ${id}`);
delete this.subscriptionMap[id];
delete this.subscriptions[sub].callbacks[id];
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/rpc-provider', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/rpc-provider', version: '4.7.2' };
+2 -2
View File
@@ -38,7 +38,7 @@ const ALIASSES: { [index: string]: string } = {
chain_unsubscribeFinalisedHeads: 'chain_unsubscribeFinalizedHeads'
};
const RETRY_DELAY = 1000;
const RETRY_DELAY = 2500;
const l = logger('api-ws');
@@ -109,7 +109,7 @@ export class WsProvider implements ProviderInterface {
assert(endpoints.length !== 0, 'WsProvider requires at least one Endpoint');
endpoints.forEach((endpoint) => {
assert(/^(wss|ws):\/\//.test(endpoint), `Endpoint should start with 'ws://', received '${endpoint}'`);
assert(/^(wss|ws):\/\//.test(endpoint), () => `Endpoint should start with 'ws://', received '${endpoint}'`);
});
this.#eventemitter = new EventEmitter();
+3 -1
View File
@@ -3,6 +3,8 @@
import { Server, WebSocket } from 'mock-socket';
import { stringify } from '@polkadot/util';
interface Scope {
body: { [index: string]: Record<string, any> };
requests: number;
@@ -79,7 +81,7 @@ export function mockWs (requests: ({ method: string } & ErrorDef)[], wsUrl: stri
scope.body[request.method] = body;
requestCount++;
socket.send(JSON.stringify(response));
socket.send(stringify(response));
});
});
+14 -11
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/typegen",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "Type generation scripts",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"bin": {
"polkadot-types-chain-info": "./scripts/polkadot-types-chain-info.cjs",
"polkadot-types-from-chain": "./scripts/polkadot-types-from-chain.cjs",
@@ -23,20 +26,20 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/typegen#readme",
"dependencies": {
"@babel/core": "^7.13.8",
"@babel/register": "^7.13.8",
"@babel/runtime": "^7.13.9",
"@polkadot/api": "4.1.1",
"@polkadot/metadata": "4.1.1",
"@polkadot/rpc-provider": "4.1.1",
"@polkadot/types": "4.1.1",
"@polkadot/util": "^6.0.5",
"@babel/core": "^7.13.16",
"@babel/register": "^7.13.16",
"@babel/runtime": "^7.13.17",
"@polkadot/api": "4.7.2",
"@polkadot/metadata": "4.7.2",
"@polkadot/rpc-provider": "4.7.2",
"@polkadot/types": "4.7.2",
"@polkadot/util": "^6.3.1",
"handlebars": "^4.7.7",
"websocket": "^1.0.33",
"websocket": "^1.0.34",
"yargs": "^16.2.0"
},
"devDependencies": {
"@types/websocket": "^1.0.2",
"@types/yargs": "^16.0.0"
"@types/yargs": "^16.0.1"
}
}
+2 -2
View File
@@ -10,7 +10,7 @@ import path from 'path';
import { getTypeDef } from '@polkadot/types/create';
import { TypeDefInfo } from '@polkadot/types/create/types';
import * as defaultDefinitions from '@polkadot/types/interfaces/definitions';
import { assert, isString, stringCamelCase, stringUpperFirst } from '@polkadot/util';
import { assert, isString, stringCamelCase, stringify, stringUpperFirst } from '@polkadot/util';
import { createImports, exportInterface, exportType, formatType, readTemplate, setImports, TypeImports, writeFile } from '../util';
@@ -192,7 +192,7 @@ function generateInterfaces (definitions: Record<string, ModuleTypes>, { types }
};
return Object.entries(types).map(([name, type]): [string, string] => {
const def = getTypeDef(isString(type) ? type : JSON.stringify(type), { name });
const def = getTypeDef(isString(type) ? type : stringify(type), { name });
return [name, generators[def.info](definitions, def, imports)];
});
+30 -11
View File
@@ -7,6 +7,7 @@ import type { Codec, DefinitionRpcParam } from '@polkadot/types/types';
import fs from 'fs';
import { Metadata } from '@polkadot/metadata';
import { getStorage as getSubstrateStorage } from '@polkadot/metadata/decorate/storage/getStorage';
import rpcdata from '@polkadot/metadata/static';
import { Vec } from '@polkadot/types/codec';
import { TypeRegistry } from '@polkadot/types/create';
@@ -16,15 +17,17 @@ import { Text } from '@polkadot/types/primitive';
import { unwrapStorageType } from '@polkadot/types/primitive/StorageKey';
import { stringCamelCase, stringLowerFirst } from '@polkadot/util';
interface SectionItem {
link?: string;
name: string;
[bullet: string]: undefined | string | Vec<Text>;
}
interface Section {
link?: string;
name: string;
description?: string;
items: {
link?: string;
name: string;
[bullet: string]: undefined | string | Vec<Text>;
}[];
items: SectionItem[];
}
interface Page {
@@ -156,7 +159,7 @@ function addRpc (): string {
});
return all;
}, []).sort((a, b) => a.name.localeCompare(b.name)),
}, []).sort(sortByName),
title: 'JSON-RPC'
});
}
@@ -192,10 +195,11 @@ function addConstants (metadata: MetadataLatest): string {
/** @internal */
function addStorage (metadata: MetadataLatest): string {
const { substrate } = getSubstrateStorage(metadata.registry, 12);
const moduleSections = metadata.modules
.sort(sortByName)
.filter((moduleMetadata) => !moduleMetadata.storage.isNone)
.map((moduleMetadata) => {
.map((moduleMetadata): Section => {
const sectionName = stringLowerFirst(moduleMetadata.name);
return {
@@ -220,12 +224,27 @@ function addStorage (metadata: MetadataLatest): string {
};
});
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const knownSection: any = JSON.parse(fs.readFileSync('docs/substrate/storage-known-section.json', 'utf8'));
return renderPage({
description: DESC_STORAGE,
sections: moduleSections.concat([knownSection]),
sections: moduleSections.concat([{
description: 'These are well-known keys that are always available to the runtime implementation of any Substrate-based network.',
items: Object.entries(substrate).map(([name, { meta }]) => {
const arg = meta.type.isMap
? ('`' + meta.type.asMap.key.toString() + '`')
: meta.type.isDoubleMap
? ('`' + meta.type.asDoubleMap.key1.toString() + ', ' + meta.type.asDoubleMap.key2.toString() + '`')
: '';
const methodName = stringLowerFirst(name);
const outputType = unwrapStorageType(meta.type, meta.modifier.isOptional);
return {
interface: '`' + `api.query.substrate.${methodName}` + '`',
name: `${methodName}(${arg}): ` + '`' + outputType + '`',
summary: meta.documentation
};
}),
name: 'substrate'
}]).sort(sortByName),
title: 'Storage'
});
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/typegen', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/typegen', version: '4.7.2' };
+2 -2
View File
@@ -12,7 +12,7 @@ import { GenericAccountId, GenericLookupSource, GenericVote } from '@polkadot/ty
import { AllConvictions } from '@polkadot/types/interfaces/democracy/definitions';
import { Null } from '@polkadot/types/primitive';
import * as primitiveClasses from '@polkadot/types/primitive';
import { isChildClass } from '@polkadot/util';
import { isChildClass, stringify } from '@polkadot/util';
import { isCompactEncodable } from './class';
import { formatType } from './formatting';
@@ -98,7 +98,7 @@ export function getSimilarTypes (registry: Registry, definitions: Record<string,
possibleTypes.push(`([${subs.join(', ')}])[]`);
} else {
throw new Error(`Unhandled subtype in Vec, ${JSON.stringify(subDef)}`);
throw new Error(`Unhandled subtype in Vec, ${stringify(subDef)}`);
}
}
} else if (isChildClass(Enum, Clazz)) {
+2 -2
View File
@@ -7,7 +7,7 @@ import Handlebars from 'handlebars';
import { getTypeDef, paramsNotation } from '@polkadot/types/create';
import { TypeDefInfo } from '@polkadot/types/create/types';
import { isString } from '@polkadot/util';
import { isString, stringify } from '@polkadot/util';
import { readTemplate } from './file';
import { ModuleTypes, setImports, TypeImports } from './imports';
@@ -284,7 +284,7 @@ export function formatType (definitions: Record<string, ModuleTypes>, type: stri
}
default: {
throw new Error(`Cannot format ${JSON.stringify(type)}`);
throw new Error(`Cannot format ${stringify(type)}`);
}
}
}
+8 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/types-known",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "A JavaScript wrapper for the Polkadot JsonRPC interface",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
@@ -16,10 +19,10 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/types-known#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/networks": "^6.0.5",
"@polkadot/types": "4.1.1",
"@polkadot/util": "^6.0.5",
"@babel/runtime": "^7.13.17",
"@polkadot/networks": "^6.3.1",
"@polkadot/types": "4.7.2",
"@polkadot/util": "^6.3.1",
"bn.js": "^4.11.9"
},
"devDependencies": {
+6
View File
@@ -72,6 +72,12 @@ const typesModules: Record<string, OverrideModuleType> = {
},
treasury: {
Proposal: 'TreasuryProposal'
},
xcm: {
Outcome: 'XcmOutcome'
},
xcmPallet: {
Outcome: 'XcmOutcome'
}
};
+1 -1
View File
@@ -3,4 +3,4 @@
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/types-known', version: '4.1.1' };
export const packageInfo = { name: '@polkadot/types-known', version: '4.7.2' };
+2
View File
@@ -9,6 +9,7 @@ import node from './node';
import nodeTemplate from './node-template';
import polkadot from './polkadot';
import rococo from './rococo';
import statemint from './statemint';
import westend from './westend';
// Type overrides for specific spec types & versions as given in runtimeVersion
@@ -19,6 +20,7 @@ const typesSpec: Record<string, OverrideVersionedType[]> = {
'node-template': nodeTemplate,
polkadot,
rococo,
statemint,
westend
};
+9 -6
View File
@@ -6,14 +6,10 @@
import type { OverrideVersionedType } from '@polkadot/types/types';
const sharedTypes = {
AccountInfo: 'AccountInfoWithDualRefCount',
Address: 'MultiAddress',
Keys: 'SessionKeys6',
LookupSource: 'MultiAddress',
ProxyType: {
_enum: ['Any', 'NonTransfer', 'Governance', 'Staking', 'IdentityJudgement', 'CancelProxy']
},
ValidatorPrefs: 'ValidatorPrefsWithBlocked'
}
};
const addrIndicesTypes = {
@@ -165,7 +161,14 @@ const versioned: OverrideVersionedType[] = [
}
},
{
minmax: [2028, undefined],
minmax: [2028, 2029],
types: {
...sharedTypes,
AccountInfo: 'AccountInfoWithDualRefCount'
}
},
{
minmax: [2030, undefined],
types: {
...sharedTypes
}
+9 -6
View File
@@ -6,10 +6,7 @@
import type { OverrideVersionedType } from '@polkadot/types/types';
const sharedTypes = {
AccountInfo: 'AccountInfoWithDualRefCount',
Address: 'MultiAddress',
Keys: 'SessionKeys6',
LookupSource: 'MultiAddress',
ProxyType: {
_enum: {
Any: 0,
@@ -20,8 +17,7 @@ const sharedTypes = {
IdentityJudgement: 5,
CancelProxy: 6
}
},
ValidatorPrefs: 'ValidatorPrefsWithBlocked'
}
};
const addrAccountIdTypes = {
@@ -69,7 +65,14 @@ const versioned: OverrideVersionedType[] = [
}
},
{
minmax: [28, undefined],
minmax: [28, 29],
types: {
...sharedTypes,
AccountInfo: 'AccountInfoWithDualRefCount'
}
},
{
minmax: [30, undefined],
types: {
...sharedTypes
}
+17 -5
View File
@@ -9,11 +9,8 @@ import type { OverrideVersionedType } from '@polkadot/types/types';
/* eslint-disable sort-keys */
const sharedTypes = {
AccountInfo: 'AccountInfoWithDualRefCount',
Address: 'MultiAddress',
FullIdentification: '()', // No staking, only session (as per config)
LookupSource: 'MultiAddress',
Keys: 'SessionKeys6'
Keys: 'SessionKeys7B'
};
const versioned: OverrideVersionedType[] = [
@@ -21,12 +18,27 @@ const versioned: OverrideVersionedType[] = [
minmax: [0, 200],
types: {
...sharedTypes,
AccountInfo: 'AccountInfoWithDualRefCount',
Address: 'AccountId',
LookupSource: 'AccountId'
}
},
{
minmax: [201, undefined],
minmax: [201, 214],
types: {
...sharedTypes,
AccountInfo: 'AccountInfoWithDualRefCount'
}
},
{
minmax: [215, 228],
types: {
...sharedTypes,
Keys: 'SessionKeys6'
}
},
{
minmax: [229, undefined],
types: {
...sharedTypes
}
@@ -0,0 +1,29 @@
// Copyright 2017-2021 @polkadot/types-known authors & contributors
// SPDX-License-Identifier: Apache-2.0
/* eslint-disable sort-keys */
import type { OverrideVersionedType } from '@polkadot/types/types';
// these are override types for Polkadot
const versioned: OverrideVersionedType[] = [
{
minmax: [0, undefined],
types: {
TAssetBalance: 'u128',
ProxyType: {
_enum: [
'Any',
'NonTransfer',
'CancelProxy',
'Assets',
'AssetOwner',
'AssetManager',
'Staking'
]
}
}
}
];
export default versioned;
+10 -8
View File
@@ -6,15 +6,10 @@
import type { OverrideVersionedType } from '@polkadot/types/types';
const sharedTypes = {
AccountInfo: 'AccountInfoWithDualRefCount',
Address: 'MultiAddress',
Keys: 'SessionKeys6',
LookupSource: 'MultiAddress',
ProxyType: {
_enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances', 'IdentityJudgement', 'CancelProxy'
]
},
ValidatorPrefs: 'ValidatorPrefsWithBlocked'
_enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances', 'IdentityJudgement', 'CancelProxy']
}
};
const addrAccountIdTypes = {
@@ -73,7 +68,14 @@ const versioned: OverrideVersionedType[] = [
}
},
{
minmax: [48, undefined],
minmax: [48, 49],
types: {
...sharedTypes,
AccountInfo: 'AccountInfoWithDualRefCount'
}
},
{
minmax: [50, undefined],
types: {
...sharedTypes
}
+3 -3
View File
@@ -7,7 +7,7 @@ import type { ChainUpgradesRaw } from './types';
import BN from 'bn.js';
import networks from '@polkadot/networks';
import { assert, hexToU8a } from '@polkadot/util';
import { assert, hexToU8a, stringify } from '@polkadot/util';
import kusama from './kusama';
import polkadot from './polkadot';
@@ -30,7 +30,7 @@ function checkOrder (network: string, versions: ChainUpgradesRaw): [number, numb
: curr[0] <= prev[0] || curr[1] <= prev[1];
});
assert(!ooo.length, `${network}: Mismatched upgrade ordering: ${JSON.stringify(ooo)}`);
assert(!ooo.length, () => `${network}: Mismatched upgrade ordering: ${stringify(ooo)}`);
return versions;
}
@@ -39,7 +39,7 @@ function checkOrder (network: string, versions: ChainUpgradesRaw): [number, numb
function mapRaw ([network, versions]: [string, ChainUpgradesRaw]): ChainUpgrades {
const chain = networks.find((n) => n.network === network) || NET_EXTRA[network];
assert(chain, `Unable to find info for chain ${network}`);
assert(chain, () => `Unable to find info for chain ${network}`);
return {
genesisHash: hexToU8a(chain.genesisHash[0]),
+1 -1
View File
@@ -12,7 +12,7 @@ const upgrades: ChainUpgradesRaw = [
[2201991, 1062], [2671528, 2005], [2704202, 2007], [2728002, 2008], [2832534, 2011],
[2962294, 2012], [3240000, 2013], [3274408, 2015], [3323565, 2019], [3534175, 2022],
[3860281, 2023], [4143129, 2024], [4401242, 2025], [4841367, 2026], [5961600, 2027],
[6137912, 2028], [6561855, 2029]
[6137912, 2028], [6561855, 2029], [7100891, 2030]
];
export default upgrades;
@@ -8,7 +8,7 @@ const upgrades: ChainUpgradesRaw = [
[244358, 8], [303079, 9], [314201, 10], [342400, 11], [443963, 12],
[528470, 13], [687751, 14], [746085, 15], [787923, 16], [799302, 17],
[1205128, 18], [1603423, 23], [1733218, 24], [2005673, 25], [2436698, 26],
[3613564, 27], [3899547, 28]
[3613564, 27], [3899547, 28], [4345767, 29]
];
export default upgrades;
+2 -1
View File
@@ -8,7 +8,8 @@ const upgrades: ChainUpgradesRaw = [
[879238, 25], [889472, 26], [902937, 27], [932751, 28], [991142, 29],
[1030162, 31], [1119657, 32], [1199282, 33], [1342534, 34], [1392263, 35],
[1431703, 36], [1433369, 37], [1490972, 41], [2087397, 43], [2316688, 44],
[2549864, 45], [3925782, 46], [3925843, 47], [4207800, 48], [4627944, 49]
[2549864, 45], [3925782, 46], [3925843, 47], [4207800, 48], [4627944, 49],
[5124076, 50]
];
export default upgrades;
+10 -7
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/types",
"version": "4.1.1",
"version": "4.7.2",
"type": "module",
"description": "Implementation of the Parity codec",
"main": "index.js",
@@ -8,6 +8,9 @@
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
@@ -16,15 +19,15 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/types#readme",
"dependencies": {
"@babel/runtime": "^7.13.9",
"@polkadot/metadata": "4.1.1",
"@polkadot/util": "^6.0.5",
"@polkadot/util-crypto": "^6.0.5",
"@polkadot/x-rxjs": "^6.0.5",
"@babel/runtime": "^7.13.17",
"@polkadot/metadata": "4.7.2",
"@polkadot/util": "^6.3.1",
"@polkadot/util-crypto": "^6.3.1",
"@polkadot/x-rxjs": "^6.3.1",
"@types/bn.js": "^4.11.6",
"bn.js": "^4.11.9"
},
"devDependencies": {
"@polkadot/keyring": "^6.0.5"
"@polkadot/keyring": "^6.3.1"
}
}
+200 -65
View File
@@ -9,6 +9,7 @@ import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interface
import type { UncleEntryItem } from '@polkadot/types/interfaces/authorship';
import type { AllowedSlots, BabeAuthorityWeight, BabeBlockWeight, BabeEpochConfiguration, 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 type { AccountData, BalanceLock, BalanceLockTo212, BalanceStatus, Reasons, VestingSchedule, WithdrawReasons } from '@polkadot/types/interfaces/balances';
import type { BeefyCommitment, BeefyNextAuthoritySet, BeefyPayload, BeefySignedCommitment, MmrRootHash, ValidatorSetId } from '@polkadot/types/interfaces/beefy';
import type { BlockHash } from '@polkadot/types/interfaces/chain';
import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';
import type { EthereumAddress, StatementKind } from '@polkadot/types/interfaces/claims';
@@ -20,7 +21,7 @@ import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot
import type { 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 type { ApprovalFlag, DefunctVoter, Renouncing, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections';
import type { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine';
import type { EthAccount, EthBlock, EthBloom, EthCallRequest, EthFilter, EthFilterAddress, EthFilterChanges, EthFilterTopic, EthFilterTopicEntry, EthFilterTopicInner, EthHeader, EthLog, EthReceipt, EthRichBlock, EthRichHeader, EthStorageProof, EthSubKind, EthSubParams, EthSubResult, EthSyncInfo, EthSyncStatus, EthTransaction, EthTransactionAction, EthTransactionCondition, EthTransactionRequest, EthTransactionStatus, EthWork, EthereumAccountId, EthereumLookupSource, EthereumSignature } from '@polkadot/types/interfaces/eth';
import type { EthAccount, EthBlock, EthBloom, EthCallRequest, EthFilter, EthFilterAddress, EthFilterChanges, EthFilterTopic, EthFilterTopicEntry, EthFilterTopicInner, EthHeader, EthLog, EthReceipt, EthRichBlock, EthRichHeader, EthStorageProof, EthSubKind, EthSubParams, EthSubResult, EthSyncInfo, EthSyncStatus, EthTransaction, EthTransactionAction, EthTransactionCondition, EthTransactionRequest, EthTransactionSignature, EthTransactionStatus, EthWork, EthereumAccountId, EthereumLookupSource, EthereumSignature } from '@polkadot/types/interfaces/eth';
import type { EvmAccount, EvmLog, EvmVicinity, ExitError, ExitFatal, ExitReason, ExitRevert, ExitSucceed } from '@polkadot/types/interfaces/evm';
import type { AnySignature, EcdsaSignature, Ed25519Signature, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV4, ExtrinsicSignature, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV4, ImmortalEra, MortalEra, MultiSignature, Signature, SignerPayload, Sr25519Signature } from '@polkadot/types/interfaces/extrinsics';
import type { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV1 } from '@polkadot/types/interfaces/genericAsset';
@@ -33,26 +34,27 @@ import type { DoubleMapTypeLatest, DoubleMapTypeV10, DoubleMapTypeV11, DoubleMap
import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr';
import type { StorageKind } from '@polkadot/types/interfaces/offchain';
import type { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences';
import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AbstractFungible, AbstractNonFungible, AccountId32Junction, AccountIndex64Junction, AccountKey20Junction, AssetInstance, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Balances, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, ConcreteFungible, ConcreteNonFungible, CoreAssignment, CoreIndex, CoreOccupied, DepositAsset, DepositReserveAsset, DoubleVoteReport, DownwardMessage, ExchangeAsset, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InitiateReserveWithdraw, InitiateTeleport, Junction, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiAsset, MultiLocation, NetworkId, NewBidder, Order, OriginKind, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueryHolding, QueuedParathread, RegisteredParachainInfo, RelayChainBlockNumber, RelayChainHash, RelayTo, RelayedFrom, Remark, ReserveAssetDeposit, Retriable, Scheduling, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, Statement, SubId, SystemInherentData, TeleportAsset, Transact, TransientValidationData, UpwardMessage, ValidationCode, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, VersionedMultiAsset, VersionedMultiLocation, VersionedXcm, WinnersData, WinnersDataTuple, WinningData, WinningDataEntry, WithdrawAsset, Xcm, XcmError, XcmResult } from '@polkadot/types/interfaces/parachains';
import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayChainBlockNumber, RelayChainHash, Remark, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, Statement, SubId, SystemInherentData, TransientValidationData, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersDataTuple, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains';
import type { FeeDetails, InclusionFee, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';
import type { Approvals } from '@polkadot/types/interfaces/poll';
import type { ProxyAnnouncement, ProxyDefinition, ProxyType } from '@polkadot/types/interfaces/proxy';
import type { AccountStatus, AccountValidity } from '@polkadot/types/interfaces/purchase';
import type { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery';
import type { RpcMethods } from '@polkadot/types/interfaces/rpc';
import type { AccountId, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, Call, CallHash, CallHashOf, ChangesTrieConfiguration, CodecHash, Consensus, ConsensusEngineId, Digest, DigestItem, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H512, H64, Hash, Header, I32F32, Index, IndicesLookupSource, Justification, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, Slot, StorageData, StorageProof, TransactionPriority, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
import type { AccountId, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, Call, CallHash, CallHashOf, ChangesTrieConfiguration, CodecHash, Consensus, ConsensusEngineId, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, StorageData, StorageProof, TransactionPriority, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
import type { SiField, SiLookupTypeId, SiPath, SiType, SiTypeDef, SiTypeDefArray, SiTypeDefComposite, SiTypeDefPrimitive, SiTypeDefSequence, SiTypeDefTuple, SiTypeDefVariant, SiVariant } from '@polkadot/types/interfaces/scaleInfo';
import type { Period, Priority, SchedulePeriod, SchedulePriority, Scheduled, ScheduledTo254, TaskAddress } from '@polkadot/types/interfaces/scheduler';
import type { FullIdentification, IdentificationTuple, Keys, MembershipProof, SessionIndex, SessionKeys1, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6, SessionKeys7, SessionKeys8, SessionKeys9, ValidatorCount } from '@polkadot/types/interfaces/session';
import type { BeefyKey, FullIdentification, IdentificationTuple, Keys, MembershipProof, SessionIndex, SessionKeys1, SessionKeys10, SessionKeys10B, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6, SessionKeys6B, SessionKeys7, SessionKeys7B, SessionKeys8, SessionKeys8B, SessionKeys9, SessionKeys9B, ValidatorCount } from '@polkadot/types/interfaces/session';
import type { Bid, BidKind, SocietyJudgement, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society';
import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactScore, CompactScoreCompact, ElectionCompute, ElectionPhase, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, ExtendedBalance, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RawSolution, ReadySolution, RewardDestination, RewardPoint, RoundSnapshot, SeatHolder, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SolutionOrSnapshotSize, SolutionSupport, SolutionSupports, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, VoteWeight, Voter } from '@polkadot/types/interfaces/staking';
import type { ApiId, KeyValueOption, ReadProof, RuntimeVersion, RuntimeVersionApi, StorageChangeSet } from '@polkadot/types/interfaces/state';
import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';
import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
import type { Multiplier } from '@polkadot/types/interfaces/txpayment';
import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility';
import type { VestingInfo } from '@polkadot/types/interfaces/vesting';
import type { AccountId32Junction, AccountIndex64Junction, AccountKey20Junction, AssetInstance, BodyId, BodyPart, BodyPartAtLeastProportion, BodyPartFraction, BodyPartMoreThanProportion, DoubleEncodedCall, Junction, MultiAsset, MultiAssetAbstractFungible, MultiAssetAbstractNonFungible, MultiAssetConcreteFungible, MultiAssetConcreteNonFungible, MultiLocation, NetworkId, PluralityJunction, VersionedMultiAsset, VersionedMultiLocation, VersionedXcm, Xcm, XcmAssetEffects, XcmError, XcmHrmpChannelAccepted, XcmHrmpChannelClosing, XcmHrmpNewChannelOpenRequest, XcmOrder, XcmOrderBuyExecution, XcmOrderDepositAsset, XcmOrderDepositReserveAsset, XcmOrderExchangeAsset, XcmOrderInitiateReserveWithdraw, XcmOrderInitiateTeleport, XcmOrderQueryHolding, XcmOriginKind, XcmOutcome, XcmQueryResponse, XcmRelayedFrom, XcmReserveAssetDeposit, XcmResponse, XcmTeleportAsset, XcmTransact, XcmTransferAsset, XcmTransferReserveAsset, XcmWithdrawAsset } from '@polkadot/types/interfaces/xcm';
declare module '@polkadot/types/types/registry' {
export interface InterfaceTypes {
@@ -139,14 +141,13 @@ declare module '@polkadot/types/types/registry' {
'Compact<USize>': Compact<USize>;
'Compact<ValidatorCount>': Compact<ValidatorCount>;
'Compact<ValidatorIndex>': Compact<ValidatorIndex>;
'Compact<ValidatorSetId>': Compact<ValidatorSetId>;
'Compact<VoteIndex>': Compact<VoteIndex>;
'Compact<VoteWeight>': Compact<VoteWeight>;
'Compact<Weight>': Compact<Weight>;
'Option<AbridgedCandidateReceipt>': Option<AbridgedCandidateReceipt>;
'Option<AbridgedHostConfiguration>': Option<AbridgedHostConfiguration>;
'Option<AbridgedHrmpChannel>': Option<AbridgedHrmpChannel>;
'Option<AbstractFungible>': Option<AbstractFungible>;
'Option<AbstractNonFungible>': Option<AbstractNonFungible>;
'Option<AccountData>': Option<AccountData>;
'Option<AccountId>': Option<AccountId>;
'Option<AccountId32Junction>': Option<AccountId32Junction>;
@@ -209,8 +210,12 @@ declare module '@polkadot/types/types/registry' {
'Option<BalanceLock>': Option<BalanceLock>;
'Option<BalanceLockTo212>': Option<BalanceLockTo212>;
'Option<BalanceOf>': Option<BalanceOf>;
'Option<Balances>': Option<Balances>;
'Option<BalanceStatus>': Option<BalanceStatus>;
'Option<BeefyCommitment>': Option<BeefyCommitment>;
'Option<BeefyKey>': Option<BeefyKey>;
'Option<BeefyNextAuthoritySet>': Option<BeefyNextAuthoritySet>;
'Option<BeefyPayload>': Option<BeefyPayload>;
'Option<BeefySignedCommitment>': Option<BeefySignedCommitment>;
'Option<Bid>': Option<Bid>;
'Option<Bidder>': Option<Bidder>;
'Option<BidKind>': Option<BidKind>;
@@ -221,6 +226,11 @@ declare module '@polkadot/types/types/registry' {
'Option<BlockLength>': Option<BlockLength>;
'Option<BlockNumber>': Option<BlockNumber>;
'Option<BlockWeights>': Option<BlockWeights>;
'Option<BodyId>': Option<BodyId>;
'Option<BodyPart>': Option<BodyPart>;
'Option<BodyPartAtLeastProportion>': Option<BodyPartAtLeastProportion>;
'Option<BodyPartFraction>': Option<BodyPartFraction>;
'Option<BodyPartMoreThanProportion>': Option<BodyPartMoreThanProportion>;
'Option<bool>': Option<bool>;
'Option<Bool>': Option<Bool>;
'Option<Bounty>': Option<Bounty>;
@@ -253,8 +263,6 @@ declare module '@polkadot/types/types/registry' {
'Option<CompactAssignmentsTo257>': Option<CompactAssignmentsTo257>;
'Option<CompactScore>': Option<CompactScore>;
'Option<CompactScoreCompact>': Option<CompactScoreCompact>;
'Option<ConcreteFungible>': Option<ConcreteFungible>;
'Option<ConcreteNonFungible>': Option<ConcreteNonFungible>;
'Option<Consensus>': Option<Consensus>;
'Option<ConsensusEngineId>': Option<ConsensusEngineId>;
'Option<ConsumedWeight>': Option<ConsumedWeight>;
@@ -303,8 +311,6 @@ declare module '@polkadot/types/types/registry' {
'Option<DefunctVoter>': Option<DefunctVoter>;
'Option<Delegations>': Option<Delegations>;
'Option<DeletedContract>': Option<DeletedContract>;
'Option<DepositAsset>': Option<DepositAsset>;
'Option<DepositReserveAsset>': Option<DepositReserveAsset>;
'Option<Digest>': Option<Digest>;
'Option<DigestItem>': Option<DigestItem>;
'Option<DigestOf>': Option<DigestOf>;
@@ -319,7 +325,10 @@ declare module '@polkadot/types/types/registry' {
'Option<DispatchResult>': Option<DispatchResult>;
'Option<DispatchResultOf>': Option<DispatchResultOf>;
'Option<DispatchResultTo198>': Option<DispatchResultTo198>;
'Option<DisputeStatement>': Option<DisputeStatement>;
'Option<DisputeStatementSet>': Option<DisputeStatementSet>;
'Option<DoNotConstruct>': Option<DoNotConstruct>;
'Option<DoubleEncodedCall>': Option<DoubleEncodedCall>;
'Option<DoubleMapTypeLatest>': Option<DoubleMapTypeLatest>;
'Option<DoubleMapTypeV10>': Option<DoubleMapTypeV10>;
'Option<DoubleMapTypeV11>': Option<DoubleMapTypeV11>;
@@ -336,6 +345,7 @@ declare module '@polkadot/types/types/registry' {
'Option<ElectionSize>': Option<ElectionSize>;
'Option<ElectionStatus>': Option<ElectionStatus>;
'Option<EncodedFinalityProofs>': Option<EncodedFinalityProofs>;
'Option<EncodedJustification>': Option<EncodedJustification>;
'Option<EpochAuthorship>': Option<EpochAuthorship>;
'Option<EraIndex>': Option<EraIndex>;
'Option<EraPoints>': Option<EraPoints>;
@@ -375,6 +385,7 @@ declare module '@polkadot/types/types/registry' {
'Option<EthTransactionAction>': Option<EthTransactionAction>;
'Option<EthTransactionCondition>': Option<EthTransactionCondition>;
'Option<EthTransactionRequest>': Option<EthTransactionRequest>;
'Option<EthTransactionSignature>': Option<EthTransactionSignature>;
'Option<EthTransactionStatus>': Option<EthTransactionStatus>;
'Option<EthWork>': Option<EthWork>;
'Option<Event>': Option<Event>;
@@ -389,12 +400,12 @@ declare module '@polkadot/types/types/registry' {
'Option<EvmAccount>': Option<EvmAccount>;
'Option<EvmLog>': Option<EvmLog>;
'Option<EvmVicinity>': Option<EvmVicinity>;
'Option<ExchangeAsset>': Option<ExchangeAsset>;
'Option<ExitError>': Option<ExitError>;
'Option<ExitFatal>': Option<ExitFatal>;
'Option<ExitReason>': Option<ExitReason>;
'Option<ExitRevert>': Option<ExitRevert>;
'Option<ExitSucceed>': Option<ExitSucceed>;
'Option<ExplicitDisputeStatement>': Option<ExplicitDisputeStatement>;
'Option<Exposure>': Option<Exposure>;
'Option<ExtendedBalance>': Option<ExtendedBalance>;
'Option<Extrinsic>': Option<Extrinsic>;
@@ -435,6 +446,7 @@ declare module '@polkadot/types/types/registry' {
'Option<FundInfo>': Option<FundInfo>;
'Option<Gas>': Option<Gas>;
'Option<GiltBid>': Option<GiltBid>;
'Option<GlobalValidationData>': Option<GlobalValidationData>;
'Option<GlobalValidationSchedule>': Option<GlobalValidationSchedule>;
'Option<GrandpaEquivocation>': Option<GrandpaEquivocation>;
'Option<GrandpaEquivocationProof>': Option<GrandpaEquivocationProof>;
@@ -446,6 +458,7 @@ declare module '@polkadot/types/types/registry' {
'Option<H160>': Option<H160>;
'Option<H2048>': Option<H2048>;
'Option<H256>': Option<H256>;
'Option<H32>': Option<H32>;
'Option<H512>': Option<H512>;
'Option<H64>': Option<H64>;
'Option<Hash>': Option<Hash>;
@@ -491,14 +504,14 @@ declare module '@polkadot/types/types/registry' {
'Option<Index>': Option<Index>;
'Option<IndicesLookupSource>': Option<IndicesLookupSource>;
'Option<IndividualExposure>': Option<IndividualExposure>;
'Option<InitiateReserveWithdraw>': Option<InitiateReserveWithdraw>;
'Option<InitiateTeleport>': Option<InitiateTeleport>;
'Option<InstructionWeights>': Option<InstructionWeights>;
'Option<InvalidDisputeStatementKind>': Option<InvalidDisputeStatementKind>;
'Option<InvalidTransaction>': Option<InvalidTransaction>;
'Option<Json>': Option<Json>;
'Option<Junction>': Option<Junction>;
'Option<Justification>': Option<Justification>;
'Option<JustificationNotification>': Option<JustificationNotification>;
'Option<Justifications>': Option<Justifications>;
'Option<Key>': Option<Key>;
'Option<KeyOwnerProof>': Option<KeyOwnerProof>;
'Option<Keys>': Option<Keys>;
@@ -538,6 +551,7 @@ declare module '@polkadot/types/types/registry' {
'Option<MetadataV12>': Option<MetadataV12>;
'Option<MetadataV9>': Option<MetadataV9>;
'Option<MmrLeafProof>': Option<MmrLeafProof>;
'Option<MmrRootHash>': Option<MmrRootHash>;
'Option<ModuleConstantMetadataLatest>': Option<ModuleConstantMetadataLatest>;
'Option<ModuleConstantMetadataV10>': Option<ModuleConstantMetadataV10>;
'Option<ModuleConstantMetadataV11>': Option<ModuleConstantMetadataV11>;
@@ -555,6 +569,11 @@ declare module '@polkadot/types/types/registry' {
'Option<MortalEra>': Option<MortalEra>;
'Option<MultiAddress>': Option<MultiAddress>;
'Option<MultiAsset>': Option<MultiAsset>;
'Option<MultiAssetAbstractFungible>': Option<MultiAssetAbstractFungible>;
'Option<MultiAssetAbstractNonFungible>': Option<MultiAssetAbstractNonFungible>;
'Option<MultiAssetConcreteFungible>': Option<MultiAssetConcreteFungible>;
'Option<MultiAssetConcreteNonFungible>': Option<MultiAssetConcreteNonFungible>;
'Option<MultiDisputeStatementSet>': Option<MultiDisputeStatementSet>;
'Option<MultiLocation>': Option<MultiLocation>;
'Option<Multiplier>': Option<Multiplier>;
'Option<Multisig>': Option<Multisig>;
@@ -587,17 +606,17 @@ declare module '@polkadot/types/types/registry' {
'Option<OpenTipFinderTo225>': Option<OpenTipFinderTo225>;
'Option<OpenTipTip>': Option<OpenTipTip>;
'Option<OpenTipTo225>': Option<OpenTipTo225>;
'Option<Order>': Option<Order>;
'Option<Origin>': Option<Origin>;
'Option<OriginCaller>': Option<OriginCaller>;
'Option<OriginKind>': Option<OriginKind>;
'Option<OutboundHrmpMessage>': Option<OutboundHrmpMessage>;
'Option<Owner>': Option<Owner>;
'Option<PalletId>': Option<PalletId>;
'Option<PalletsOrigin>': Option<PalletsOrigin>;
'Option<PalletVersion>': Option<PalletVersion>;
'Option<ParachainDispatchOrigin>': Option<ParachainDispatchOrigin>;
'Option<ParachainInherentData>': Option<ParachainInherentData>;
'Option<ParachainProposal>': Option<ParachainProposal>;
'Option<ParachainsInherentData>': Option<ParachainsInherentData>;
'Option<ParaGenesisArgs>': Option<ParaGenesisArgs>;
'Option<ParaId>': Option<ParaId>;
'Option<ParaInfo>': Option<ParaInfo>;
@@ -633,6 +652,7 @@ declare module '@polkadot/types/types/registry' {
'Option<PhantomData>': Option<PhantomData>;
'Option<Phase>': Option<Phase>;
'Option<PhragmenScore>': Option<PhragmenScore>;
'Option<PluralityJunction>': Option<PluralityJunction>;
'Option<Points>': Option<Points>;
'Option<Precommits>': Option<Precommits>;
'Option<PrefabWasmModule>': Option<PrefabWasmModule>;
@@ -650,7 +670,6 @@ declare module '@polkadot/types/types/registry' {
'Option<ProxyDefinition>': Option<ProxyDefinition>;
'Option<ProxyState>': Option<ProxyState>;
'Option<ProxyType>': Option<ProxyType>;
'Option<QueryHolding>': Option<QueryHolding>;
'Option<QueuedParathread>': Option<QueuedParathread>;
'Option<Randomness>': Option<Randomness>;
'Option<Raw>': Option<Raw>;
@@ -684,15 +703,12 @@ declare module '@polkadot/types/types/registry' {
'Option<RegistrationJudgement>': Option<RegistrationJudgement>;
'Option<RelayChainBlockNumber>': Option<RelayChainBlockNumber>;
'Option<RelayChainHash>': Option<RelayChainHash>;
'Option<RelayedFrom>': Option<RelayedFrom>;
'Option<RelayTo>': Option<RelayTo>;
'Option<Releases>': Option<Releases>;
'Option<Remark>': Option<Remark>;
'Option<Renouncing>': Option<Renouncing>;
'Option<ReportedRoundStates>': Option<ReportedRoundStates>;
'Option<Reporter>': Option<Reporter>;
'Option<ReportIdOf>': Option<ReportIdOf>;
'Option<ReserveAssetDeposit>': Option<ReserveAssetDeposit>;
'Option<Retriable>': Option<Retriable>;
'Option<RewardDestination>': Option<RewardDestination>;
'Option<RewardPoint>': Option<RewardPoint>;
@@ -716,18 +732,25 @@ declare module '@polkadot/types/types/registry' {
'Option<SealV0>': Option<SealV0>;
'Option<SeatHolder>': Option<SeatHolder>;
'Option<SeedOf>': Option<SeedOf>;
'Option<ServiceQuality>': Option<ServiceQuality>;
'Option<SessionIndex>': Option<SessionIndex>;
'Option<SessionInfo>': Option<SessionInfo>;
'Option<SessionInfoValidatorGroup>': Option<SessionInfoValidatorGroup>;
'Option<SessionKeys1>': Option<SessionKeys1>;
'Option<SessionKeys10>': Option<SessionKeys10>;
'Option<SessionKeys10B>': Option<SessionKeys10B>;
'Option<SessionKeys2>': Option<SessionKeys2>;
'Option<SessionKeys3>': Option<SessionKeys3>;
'Option<SessionKeys4>': Option<SessionKeys4>;
'Option<SessionKeys5>': Option<SessionKeys5>;
'Option<SessionKeys6>': Option<SessionKeys6>;
'Option<SessionKeys6B>': Option<SessionKeys6B>;
'Option<SessionKeys7>': Option<SessionKeys7>;
'Option<SessionKeys7B>': Option<SessionKeys7B>;
'Option<SessionKeys8>': Option<SessionKeys8>;
'Option<SessionKeys8B>': Option<SessionKeys8B>;
'Option<SessionKeys9>': Option<SessionKeys9>;
'Option<SessionKeys9B>': Option<SessionKeys9B>;
'Option<SetId>': Option<SetId>;
'Option<SetIndex>': Option<SetIndex>;
'Option<SiField>': Option<SiField>;
@@ -735,6 +758,8 @@ declare module '@polkadot/types/types/registry' {
'Option<SignedAvailabilityBitfield>': Option<SignedAvailabilityBitfield>;
'Option<SignedAvailabilityBitfields>': Option<SignedAvailabilityBitfields>;
'Option<SignedBlock>': Option<SignedBlock>;
'Option<SignedBlockWithJustification>': Option<SignedBlockWithJustification>;
'Option<SignedBlockWithJustifications>': Option<SignedBlockWithJustifications>;
'Option<SignerPayload>': Option<SignerPayload>;
'Option<SigningContext>': Option<SigningContext>;
'Option<SiLookupTypeId>': Option<SiLookupTypeId>;
@@ -808,11 +833,10 @@ declare module '@polkadot/types/types/registry' {
'Option<TaskAddress>': Option<TaskAddress>;
'Option<TAssetBalance>': Option<TAssetBalance>;
'Option<TAssetDepositBalance>': Option<TAssetDepositBalance>;
'Option<TeleportAsset>': Option<TeleportAsset>;
'Option<Text>': Option<Text>;
'Option<Timepoint>': Option<Timepoint>;
'Option<TokenError>': Option<TokenError>;
'Option<TombstoneContractInfo>': Option<TombstoneContractInfo>;
'Option<Transact>': Option<Transact>;
'Option<TransactionPriority>': Option<TransactionPriority>;
'Option<TransactionValidityError>': Option<TransactionValidityError>;
'Option<TransientValidationData>': Option<TransientValidationData>;
@@ -855,7 +879,9 @@ declare module '@polkadot/types/types/registry' {
'Option<ValidatorPrefsTo196>': Option<ValidatorPrefsTo196>;
'Option<ValidatorPrefsWithBlocked>': Option<ValidatorPrefsWithBlocked>;
'Option<ValidatorPrefsWithCommission>': Option<ValidatorPrefsWithCommission>;
'Option<ValidatorSetId>': Option<ValidatorSetId>;
'Option<ValidatorSignature>': Option<ValidatorSignature>;
'Option<ValidDisputeStatementKind>': Option<ValidDisputeStatementKind>;
'Option<ValidityAttestation>': Option<ValidityAttestation>;
'Option<VecInboundHrmpMessage>': Option<VecInboundHrmpMessage>;
'Option<VersionedMultiAsset>': Option<VersionedMultiAsset>;
@@ -887,16 +913,35 @@ declare module '@polkadot/types/types/registry' {
'Option<WinnersDataTuple>': Option<WinnersDataTuple>;
'Option<WinningData>': Option<WinningData>;
'Option<WinningDataEntry>': Option<WinningDataEntry>;
'Option<WithdrawAsset>': Option<WithdrawAsset>;
'Option<WithdrawReasons>': Option<WithdrawReasons>;
'Option<Xcm>': Option<Xcm>;
'Option<XcmAssetEffects>': Option<XcmAssetEffects>;
'Option<XcmError>': Option<XcmError>;
'Option<XcmResult>': Option<XcmResult>;
'Option<XcmHrmpChannelAccepted>': Option<XcmHrmpChannelAccepted>;
'Option<XcmHrmpChannelClosing>': Option<XcmHrmpChannelClosing>;
'Option<XcmHrmpNewChannelOpenRequest>': Option<XcmHrmpNewChannelOpenRequest>;
'Option<XcmOrder>': Option<XcmOrder>;
'Option<XcmOrderBuyExecution>': Option<XcmOrderBuyExecution>;
'Option<XcmOrderDepositAsset>': Option<XcmOrderDepositAsset>;
'Option<XcmOrderDepositReserveAsset>': Option<XcmOrderDepositReserveAsset>;
'Option<XcmOrderExchangeAsset>': Option<XcmOrderExchangeAsset>;
'Option<XcmOrderInitiateReserveWithdraw>': Option<XcmOrderInitiateReserveWithdraw>;
'Option<XcmOrderInitiateTeleport>': Option<XcmOrderInitiateTeleport>;
'Option<XcmOrderQueryHolding>': Option<XcmOrderQueryHolding>;
'Option<XcmOriginKind>': Option<XcmOriginKind>;
'Option<XcmOutcome>': Option<XcmOutcome>;
'Option<XcmQueryResponse>': Option<XcmQueryResponse>;
'Option<XcmRelayedFrom>': Option<XcmRelayedFrom>;
'Option<XcmReserveAssetDeposit>': Option<XcmReserveAssetDeposit>;
'Option<XcmResponse>': Option<XcmResponse>;
'Option<XcmTeleportAsset>': Option<XcmTeleportAsset>;
'Option<XcmTransact>': Option<XcmTransact>;
'Option<XcmTransferAsset>': Option<XcmTransferAsset>;
'Option<XcmTransferReserveAsset>': Option<XcmTransferReserveAsset>;
'Option<XcmWithdrawAsset>': Option<XcmWithdrawAsset>;
'Vec<AbridgedCandidateReceipt>': Vec<AbridgedCandidateReceipt>;
'Vec<AbridgedHostConfiguration>': Vec<AbridgedHostConfiguration>;
'Vec<AbridgedHrmpChannel>': Vec<AbridgedHrmpChannel>;
'Vec<AbstractFungible>': Vec<AbstractFungible>;
'Vec<AbstractNonFungible>': Vec<AbstractNonFungible>;
'Vec<AccountData>': Vec<AccountData>;
'Vec<AccountId>': Vec<AccountId>;
'Vec<AccountId32Junction>': Vec<AccountId32Junction>;
@@ -959,8 +1004,12 @@ declare module '@polkadot/types/types/registry' {
'Vec<BalanceLock>': Vec<BalanceLock>;
'Vec<BalanceLockTo212>': Vec<BalanceLockTo212>;
'Vec<BalanceOf>': Vec<BalanceOf>;
'Vec<Balances>': Vec<Balances>;
'Vec<BalanceStatus>': Vec<BalanceStatus>;
'Vec<BeefyCommitment>': Vec<BeefyCommitment>;
'Vec<BeefyKey>': Vec<BeefyKey>;
'Vec<BeefyNextAuthoritySet>': Vec<BeefyNextAuthoritySet>;
'Vec<BeefyPayload>': Vec<BeefyPayload>;
'Vec<BeefySignedCommitment>': Vec<BeefySignedCommitment>;
'Vec<Bid>': Vec<Bid>;
'Vec<Bidder>': Vec<Bidder>;
'Vec<BidKind>': Vec<BidKind>;
@@ -971,6 +1020,11 @@ declare module '@polkadot/types/types/registry' {
'Vec<BlockLength>': Vec<BlockLength>;
'Vec<BlockNumber>': Vec<BlockNumber>;
'Vec<BlockWeights>': Vec<BlockWeights>;
'Vec<BodyId>': Vec<BodyId>;
'Vec<BodyPart>': Vec<BodyPart>;
'Vec<BodyPartAtLeastProportion>': Vec<BodyPartAtLeastProportion>;
'Vec<BodyPartFraction>': Vec<BodyPartFraction>;
'Vec<BodyPartMoreThanProportion>': Vec<BodyPartMoreThanProportion>;
'Vec<bool>': Vec<bool>;
'Vec<Bool>': Vec<Bool>;
'Vec<Bounty>': Vec<Bounty>;
@@ -1003,8 +1057,6 @@ declare module '@polkadot/types/types/registry' {
'Vec<CompactAssignmentsTo257>': Vec<CompactAssignmentsTo257>;
'Vec<CompactScore>': Vec<CompactScore>;
'Vec<CompactScoreCompact>': Vec<CompactScoreCompact>;
'Vec<ConcreteFungible>': Vec<ConcreteFungible>;
'Vec<ConcreteNonFungible>': Vec<ConcreteNonFungible>;
'Vec<Consensus>': Vec<Consensus>;
'Vec<ConsensusEngineId>': Vec<ConsensusEngineId>;
'Vec<ConsumedWeight>': Vec<ConsumedWeight>;
@@ -1053,8 +1105,6 @@ declare module '@polkadot/types/types/registry' {
'Vec<DefunctVoter>': Vec<DefunctVoter>;
'Vec<Delegations>': Vec<Delegations>;
'Vec<DeletedContract>': Vec<DeletedContract>;
'Vec<DepositAsset>': Vec<DepositAsset>;
'Vec<DepositReserveAsset>': Vec<DepositReserveAsset>;
'Vec<Digest>': Vec<Digest>;
'Vec<DigestItem>': Vec<DigestItem>;
'Vec<DigestOf>': Vec<DigestOf>;
@@ -1069,7 +1119,10 @@ declare module '@polkadot/types/types/registry' {
'Vec<DispatchResult>': Vec<DispatchResult>;
'Vec<DispatchResultOf>': Vec<DispatchResultOf>;
'Vec<DispatchResultTo198>': Vec<DispatchResultTo198>;
'Vec<DisputeStatement>': Vec<DisputeStatement>;
'Vec<DisputeStatementSet>': Vec<DisputeStatementSet>;
'Vec<DoNotConstruct>': Vec<DoNotConstruct>;
'Vec<DoubleEncodedCall>': Vec<DoubleEncodedCall>;
'Vec<DoubleMapTypeLatest>': Vec<DoubleMapTypeLatest>;
'Vec<DoubleMapTypeV10>': Vec<DoubleMapTypeV10>;
'Vec<DoubleMapTypeV11>': Vec<DoubleMapTypeV11>;
@@ -1086,6 +1139,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<ElectionSize>': Vec<ElectionSize>;
'Vec<ElectionStatus>': Vec<ElectionStatus>;
'Vec<EncodedFinalityProofs>': Vec<EncodedFinalityProofs>;
'Vec<EncodedJustification>': Vec<EncodedJustification>;
'Vec<EpochAuthorship>': Vec<EpochAuthorship>;
'Vec<EraIndex>': Vec<EraIndex>;
'Vec<EraPoints>': Vec<EraPoints>;
@@ -1125,6 +1179,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<EthTransactionAction>': Vec<EthTransactionAction>;
'Vec<EthTransactionCondition>': Vec<EthTransactionCondition>;
'Vec<EthTransactionRequest>': Vec<EthTransactionRequest>;
'Vec<EthTransactionSignature>': Vec<EthTransactionSignature>;
'Vec<EthTransactionStatus>': Vec<EthTransactionStatus>;
'Vec<EthWork>': Vec<EthWork>;
'Vec<Event>': Vec<Event>;
@@ -1139,12 +1194,12 @@ declare module '@polkadot/types/types/registry' {
'Vec<EvmAccount>': Vec<EvmAccount>;
'Vec<EvmLog>': Vec<EvmLog>;
'Vec<EvmVicinity>': Vec<EvmVicinity>;
'Vec<ExchangeAsset>': Vec<ExchangeAsset>;
'Vec<ExitError>': Vec<ExitError>;
'Vec<ExitFatal>': Vec<ExitFatal>;
'Vec<ExitReason>': Vec<ExitReason>;
'Vec<ExitRevert>': Vec<ExitRevert>;
'Vec<ExitSucceed>': Vec<ExitSucceed>;
'Vec<ExplicitDisputeStatement>': Vec<ExplicitDisputeStatement>;
'Vec<Exposure>': Vec<Exposure>;
'Vec<ExtendedBalance>': Vec<ExtendedBalance>;
'Vec<Extrinsic>': Vec<Extrinsic>;
@@ -1185,6 +1240,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<FundInfo>': Vec<FundInfo>;
'Vec<Gas>': Vec<Gas>;
'Vec<GiltBid>': Vec<GiltBid>;
'Vec<GlobalValidationData>': Vec<GlobalValidationData>;
'Vec<GlobalValidationSchedule>': Vec<GlobalValidationSchedule>;
'Vec<GrandpaEquivocation>': Vec<GrandpaEquivocation>;
'Vec<GrandpaEquivocationProof>': Vec<GrandpaEquivocationProof>;
@@ -1196,6 +1252,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<H160>': Vec<H160>;
'Vec<H2048>': Vec<H2048>;
'Vec<H256>': Vec<H256>;
'Vec<H32>': Vec<H32>;
'Vec<H512>': Vec<H512>;
'Vec<H64>': Vec<H64>;
'Vec<Hash>': Vec<Hash>;
@@ -1241,14 +1298,14 @@ declare module '@polkadot/types/types/registry' {
'Vec<Index>': Vec<Index>;
'Vec<IndicesLookupSource>': Vec<IndicesLookupSource>;
'Vec<IndividualExposure>': Vec<IndividualExposure>;
'Vec<InitiateReserveWithdraw>': Vec<InitiateReserveWithdraw>;
'Vec<InitiateTeleport>': Vec<InitiateTeleport>;
'Vec<InstructionWeights>': Vec<InstructionWeights>;
'Vec<InvalidDisputeStatementKind>': Vec<InvalidDisputeStatementKind>;
'Vec<InvalidTransaction>': Vec<InvalidTransaction>;
'Vec<Json>': Vec<Json>;
'Vec<Junction>': Vec<Junction>;
'Vec<Justification>': Vec<Justification>;
'Vec<JustificationNotification>': Vec<JustificationNotification>;
'Vec<Justifications>': Vec<Justifications>;
'Vec<Key>': Vec<Key>;
'Vec<KeyOwnerProof>': Vec<KeyOwnerProof>;
'Vec<Keys>': Vec<Keys>;
@@ -1288,6 +1345,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<MetadataV12>': Vec<MetadataV12>;
'Vec<MetadataV9>': Vec<MetadataV9>;
'Vec<MmrLeafProof>': Vec<MmrLeafProof>;
'Vec<MmrRootHash>': Vec<MmrRootHash>;
'Vec<ModuleConstantMetadataLatest>': Vec<ModuleConstantMetadataLatest>;
'Vec<ModuleConstantMetadataV10>': Vec<ModuleConstantMetadataV10>;
'Vec<ModuleConstantMetadataV11>': Vec<ModuleConstantMetadataV11>;
@@ -1305,6 +1363,11 @@ declare module '@polkadot/types/types/registry' {
'Vec<MortalEra>': Vec<MortalEra>;
'Vec<MultiAddress>': Vec<MultiAddress>;
'Vec<MultiAsset>': Vec<MultiAsset>;
'Vec<MultiAssetAbstractFungible>': Vec<MultiAssetAbstractFungible>;
'Vec<MultiAssetAbstractNonFungible>': Vec<MultiAssetAbstractNonFungible>;
'Vec<MultiAssetConcreteFungible>': Vec<MultiAssetConcreteFungible>;
'Vec<MultiAssetConcreteNonFungible>': Vec<MultiAssetConcreteNonFungible>;
'Vec<MultiDisputeStatementSet>': Vec<MultiDisputeStatementSet>;
'Vec<MultiLocation>': Vec<MultiLocation>;
'Vec<Multiplier>': Vec<Multiplier>;
'Vec<Multisig>': Vec<Multisig>;
@@ -1337,17 +1400,17 @@ declare module '@polkadot/types/types/registry' {
'Vec<OpenTipFinderTo225>': Vec<OpenTipFinderTo225>;
'Vec<OpenTipTip>': Vec<OpenTipTip>;
'Vec<OpenTipTo225>': Vec<OpenTipTo225>;
'Vec<Order>': Vec<Order>;
'Vec<Origin>': Vec<Origin>;
'Vec<OriginCaller>': Vec<OriginCaller>;
'Vec<OriginKind>': Vec<OriginKind>;
'Vec<OutboundHrmpMessage>': Vec<OutboundHrmpMessage>;
'Vec<Owner>': Vec<Owner>;
'Vec<PalletId>': Vec<PalletId>;
'Vec<PalletsOrigin>': Vec<PalletsOrigin>;
'Vec<PalletVersion>': Vec<PalletVersion>;
'Vec<ParachainDispatchOrigin>': Vec<ParachainDispatchOrigin>;
'Vec<ParachainInherentData>': Vec<ParachainInherentData>;
'Vec<ParachainProposal>': Vec<ParachainProposal>;
'Vec<ParachainsInherentData>': Vec<ParachainsInherentData>;
'Vec<ParaGenesisArgs>': Vec<ParaGenesisArgs>;
'Vec<ParaId>': Vec<ParaId>;
'Vec<ParaInfo>': Vec<ParaInfo>;
@@ -1383,6 +1446,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<PhantomData>': Vec<PhantomData>;
'Vec<Phase>': Vec<Phase>;
'Vec<PhragmenScore>': Vec<PhragmenScore>;
'Vec<PluralityJunction>': Vec<PluralityJunction>;
'Vec<Points>': Vec<Points>;
'Vec<Precommits>': Vec<Precommits>;
'Vec<PrefabWasmModule>': Vec<PrefabWasmModule>;
@@ -1400,7 +1464,6 @@ declare module '@polkadot/types/types/registry' {
'Vec<ProxyDefinition>': Vec<ProxyDefinition>;
'Vec<ProxyState>': Vec<ProxyState>;
'Vec<ProxyType>': Vec<ProxyType>;
'Vec<QueryHolding>': Vec<QueryHolding>;
'Vec<QueuedParathread>': Vec<QueuedParathread>;
'Vec<Randomness>': Vec<Randomness>;
'Vec<Raw>': Vec<Raw>;
@@ -1434,15 +1497,12 @@ declare module '@polkadot/types/types/registry' {
'Vec<RegistrationJudgement>': Vec<RegistrationJudgement>;
'Vec<RelayChainBlockNumber>': Vec<RelayChainBlockNumber>;
'Vec<RelayChainHash>': Vec<RelayChainHash>;
'Vec<RelayedFrom>': Vec<RelayedFrom>;
'Vec<RelayTo>': Vec<RelayTo>;
'Vec<Releases>': Vec<Releases>;
'Vec<Remark>': Vec<Remark>;
'Vec<Renouncing>': Vec<Renouncing>;
'Vec<ReportedRoundStates>': Vec<ReportedRoundStates>;
'Vec<Reporter>': Vec<Reporter>;
'Vec<ReportIdOf>': Vec<ReportIdOf>;
'Vec<ReserveAssetDeposit>': Vec<ReserveAssetDeposit>;
'Vec<Retriable>': Vec<Retriable>;
'Vec<RewardDestination>': Vec<RewardDestination>;
'Vec<RewardPoint>': Vec<RewardPoint>;
@@ -1466,18 +1526,25 @@ declare module '@polkadot/types/types/registry' {
'Vec<SealV0>': Vec<SealV0>;
'Vec<SeatHolder>': Vec<SeatHolder>;
'Vec<SeedOf>': Vec<SeedOf>;
'Vec<ServiceQuality>': Vec<ServiceQuality>;
'Vec<SessionIndex>': Vec<SessionIndex>;
'Vec<SessionInfo>': Vec<SessionInfo>;
'Vec<SessionInfoValidatorGroup>': Vec<SessionInfoValidatorGroup>;
'Vec<SessionKeys1>': Vec<SessionKeys1>;
'Vec<SessionKeys10>': Vec<SessionKeys10>;
'Vec<SessionKeys10B>': Vec<SessionKeys10B>;
'Vec<SessionKeys2>': Vec<SessionKeys2>;
'Vec<SessionKeys3>': Vec<SessionKeys3>;
'Vec<SessionKeys4>': Vec<SessionKeys4>;
'Vec<SessionKeys5>': Vec<SessionKeys5>;
'Vec<SessionKeys6>': Vec<SessionKeys6>;
'Vec<SessionKeys6B>': Vec<SessionKeys6B>;
'Vec<SessionKeys7>': Vec<SessionKeys7>;
'Vec<SessionKeys7B>': Vec<SessionKeys7B>;
'Vec<SessionKeys8>': Vec<SessionKeys8>;
'Vec<SessionKeys8B>': Vec<SessionKeys8B>;
'Vec<SessionKeys9>': Vec<SessionKeys9>;
'Vec<SessionKeys9B>': Vec<SessionKeys9B>;
'Vec<SetId>': Vec<SetId>;
'Vec<SetIndex>': Vec<SetIndex>;
'Vec<SiField>': Vec<SiField>;
@@ -1485,6 +1552,8 @@ declare module '@polkadot/types/types/registry' {
'Vec<SignedAvailabilityBitfield>': Vec<SignedAvailabilityBitfield>;
'Vec<SignedAvailabilityBitfields>': Vec<SignedAvailabilityBitfields>;
'Vec<SignedBlock>': Vec<SignedBlock>;
'Vec<SignedBlockWithJustification>': Vec<SignedBlockWithJustification>;
'Vec<SignedBlockWithJustifications>': Vec<SignedBlockWithJustifications>;
'Vec<SignerPayload>': Vec<SignerPayload>;
'Vec<SigningContext>': Vec<SigningContext>;
'Vec<SiLookupTypeId>': Vec<SiLookupTypeId>;
@@ -1558,11 +1627,10 @@ declare module '@polkadot/types/types/registry' {
'Vec<TaskAddress>': Vec<TaskAddress>;
'Vec<TAssetBalance>': Vec<TAssetBalance>;
'Vec<TAssetDepositBalance>': Vec<TAssetDepositBalance>;
'Vec<TeleportAsset>': Vec<TeleportAsset>;
'Vec<Text>': Vec<Text>;
'Vec<Timepoint>': Vec<Timepoint>;
'Vec<TokenError>': Vec<TokenError>;
'Vec<TombstoneContractInfo>': Vec<TombstoneContractInfo>;
'Vec<Transact>': Vec<Transact>;
'Vec<TransactionPriority>': Vec<TransactionPriority>;
'Vec<TransactionValidityError>': Vec<TransactionValidityError>;
'Vec<TransientValidationData>': Vec<TransientValidationData>;
@@ -1605,7 +1673,9 @@ declare module '@polkadot/types/types/registry' {
'Vec<ValidatorPrefsTo196>': Vec<ValidatorPrefsTo196>;
'Vec<ValidatorPrefsWithBlocked>': Vec<ValidatorPrefsWithBlocked>;
'Vec<ValidatorPrefsWithCommission>': Vec<ValidatorPrefsWithCommission>;
'Vec<ValidatorSetId>': Vec<ValidatorSetId>;
'Vec<ValidatorSignature>': Vec<ValidatorSignature>;
'Vec<ValidDisputeStatementKind>': Vec<ValidDisputeStatementKind>;
'Vec<ValidityAttestation>': Vec<ValidityAttestation>;
'Vec<VecInboundHrmpMessage>': Vec<VecInboundHrmpMessage>;
'Vec<VersionedMultiAsset>': Vec<VersionedMultiAsset>;
@@ -1637,16 +1707,35 @@ declare module '@polkadot/types/types/registry' {
'Vec<WinnersDataTuple>': Vec<WinnersDataTuple>;
'Vec<WinningData>': Vec<WinningData>;
'Vec<WinningDataEntry>': Vec<WinningDataEntry>;
'Vec<WithdrawAsset>': Vec<WithdrawAsset>;
'Vec<WithdrawReasons>': Vec<WithdrawReasons>;
'Vec<Xcm>': Vec<Xcm>;
'Vec<XcmAssetEffects>': Vec<XcmAssetEffects>;
'Vec<XcmError>': Vec<XcmError>;
'Vec<XcmResult>': Vec<XcmResult>;
'Vec<XcmHrmpChannelAccepted>': Vec<XcmHrmpChannelAccepted>;
'Vec<XcmHrmpChannelClosing>': Vec<XcmHrmpChannelClosing>;
'Vec<XcmHrmpNewChannelOpenRequest>': Vec<XcmHrmpNewChannelOpenRequest>;
'Vec<XcmOrder>': Vec<XcmOrder>;
'Vec<XcmOrderBuyExecution>': Vec<XcmOrderBuyExecution>;
'Vec<XcmOrderDepositAsset>': Vec<XcmOrderDepositAsset>;
'Vec<XcmOrderDepositReserveAsset>': Vec<XcmOrderDepositReserveAsset>;
'Vec<XcmOrderExchangeAsset>': Vec<XcmOrderExchangeAsset>;
'Vec<XcmOrderInitiateReserveWithdraw>': Vec<XcmOrderInitiateReserveWithdraw>;
'Vec<XcmOrderInitiateTeleport>': Vec<XcmOrderInitiateTeleport>;
'Vec<XcmOrderQueryHolding>': Vec<XcmOrderQueryHolding>;
'Vec<XcmOriginKind>': Vec<XcmOriginKind>;
'Vec<XcmOutcome>': Vec<XcmOutcome>;
'Vec<XcmQueryResponse>': Vec<XcmQueryResponse>;
'Vec<XcmRelayedFrom>': Vec<XcmRelayedFrom>;
'Vec<XcmReserveAssetDeposit>': Vec<XcmReserveAssetDeposit>;
'Vec<XcmResponse>': Vec<XcmResponse>;
'Vec<XcmTeleportAsset>': Vec<XcmTeleportAsset>;
'Vec<XcmTransact>': Vec<XcmTransact>;
'Vec<XcmTransferAsset>': Vec<XcmTransferAsset>;
'Vec<XcmTransferReserveAsset>': Vec<XcmTransferReserveAsset>;
'Vec<XcmWithdrawAsset>': Vec<XcmWithdrawAsset>;
AbridgedCandidateReceipt: AbridgedCandidateReceipt;
AbridgedHostConfiguration: AbridgedHostConfiguration;
AbridgedHrmpChannel: AbridgedHrmpChannel;
AbstractFungible: AbstractFungible;
AbstractNonFungible: AbstractNonFungible;
AccountData: AccountData;
AccountId: AccountId;
AccountId32Junction: AccountId32Junction;
@@ -1709,8 +1798,12 @@ declare module '@polkadot/types/types/registry' {
BalanceLock: BalanceLock;
BalanceLockTo212: BalanceLockTo212;
BalanceOf: BalanceOf;
Balances: Balances;
BalanceStatus: BalanceStatus;
BeefyCommitment: BeefyCommitment;
BeefyKey: BeefyKey;
BeefyNextAuthoritySet: BeefyNextAuthoritySet;
BeefyPayload: BeefyPayload;
BeefySignedCommitment: BeefySignedCommitment;
Bid: Bid;
Bidder: Bidder;
BidKind: BidKind;
@@ -1721,6 +1814,11 @@ declare module '@polkadot/types/types/registry' {
BlockLength: BlockLength;
BlockNumber: BlockNumber;
BlockWeights: BlockWeights;
BodyId: BodyId;
BodyPart: BodyPart;
BodyPartAtLeastProportion: BodyPartAtLeastProportion;
BodyPartFraction: BodyPartFraction;
BodyPartMoreThanProportion: BodyPartMoreThanProportion;
bool: bool;
Bool: Bool;
Bounty: Bounty;
@@ -1753,8 +1851,6 @@ declare module '@polkadot/types/types/registry' {
CompactAssignmentsTo257: CompactAssignmentsTo257;
CompactScore: CompactScore;
CompactScoreCompact: CompactScoreCompact;
ConcreteFungible: ConcreteFungible;
ConcreteNonFungible: ConcreteNonFungible;
Consensus: Consensus;
ConsensusEngineId: ConsensusEngineId;
ConsumedWeight: ConsumedWeight;
@@ -1803,8 +1899,6 @@ declare module '@polkadot/types/types/registry' {
DefunctVoter: DefunctVoter;
Delegations: Delegations;
DeletedContract: DeletedContract;
DepositAsset: DepositAsset;
DepositReserveAsset: DepositReserveAsset;
Digest: Digest;
DigestItem: DigestItem;
DigestOf: DigestOf;
@@ -1819,7 +1913,10 @@ declare module '@polkadot/types/types/registry' {
DispatchResult: DispatchResult;
DispatchResultOf: DispatchResultOf;
DispatchResultTo198: DispatchResultTo198;
DisputeStatement: DisputeStatement;
DisputeStatementSet: DisputeStatementSet;
DoNotConstruct: DoNotConstruct;
DoubleEncodedCall: DoubleEncodedCall;
DoubleMapTypeLatest: DoubleMapTypeLatest;
DoubleMapTypeV10: DoubleMapTypeV10;
DoubleMapTypeV11: DoubleMapTypeV11;
@@ -1836,6 +1933,7 @@ declare module '@polkadot/types/types/registry' {
ElectionSize: ElectionSize;
ElectionStatus: ElectionStatus;
EncodedFinalityProofs: EncodedFinalityProofs;
EncodedJustification: EncodedJustification;
EpochAuthorship: EpochAuthorship;
EraIndex: EraIndex;
EraPoints: EraPoints;
@@ -1875,6 +1973,7 @@ declare module '@polkadot/types/types/registry' {
EthTransactionAction: EthTransactionAction;
EthTransactionCondition: EthTransactionCondition;
EthTransactionRequest: EthTransactionRequest;
EthTransactionSignature: EthTransactionSignature;
EthTransactionStatus: EthTransactionStatus;
EthWork: EthWork;
Event: Event;
@@ -1889,12 +1988,12 @@ declare module '@polkadot/types/types/registry' {
EvmAccount: EvmAccount;
EvmLog: EvmLog;
EvmVicinity: EvmVicinity;
ExchangeAsset: ExchangeAsset;
ExitError: ExitError;
ExitFatal: ExitFatal;
ExitReason: ExitReason;
ExitRevert: ExitRevert;
ExitSucceed: ExitSucceed;
ExplicitDisputeStatement: ExplicitDisputeStatement;
Exposure: Exposure;
ExtendedBalance: ExtendedBalance;
Extrinsic: Extrinsic;
@@ -1935,6 +2034,7 @@ declare module '@polkadot/types/types/registry' {
FundInfo: FundInfo;
Gas: Gas;
GiltBid: GiltBid;
GlobalValidationData: GlobalValidationData;
GlobalValidationSchedule: GlobalValidationSchedule;
GrandpaEquivocation: GrandpaEquivocation;
GrandpaEquivocationProof: GrandpaEquivocationProof;
@@ -1946,6 +2046,7 @@ declare module '@polkadot/types/types/registry' {
H160: H160;
H2048: H2048;
H256: H256;
H32: H32;
H512: H512;
H64: H64;
Hash: Hash;
@@ -1991,14 +2092,14 @@ declare module '@polkadot/types/types/registry' {
Index: Index;
IndicesLookupSource: IndicesLookupSource;
IndividualExposure: IndividualExposure;
InitiateReserveWithdraw: InitiateReserveWithdraw;
InitiateTeleport: InitiateTeleport;
InstructionWeights: InstructionWeights;
InvalidDisputeStatementKind: InvalidDisputeStatementKind;
InvalidTransaction: InvalidTransaction;
Json: Json;
Junction: Junction;
Justification: Justification;
JustificationNotification: JustificationNotification;
Justifications: Justifications;
Key: Key;
KeyOwnerProof: KeyOwnerProof;
Keys: Keys;
@@ -2038,6 +2139,7 @@ declare module '@polkadot/types/types/registry' {
MetadataV12: MetadataV12;
MetadataV9: MetadataV9;
MmrLeafProof: MmrLeafProof;
MmrRootHash: MmrRootHash;
ModuleConstantMetadataLatest: ModuleConstantMetadataLatest;
ModuleConstantMetadataV10: ModuleConstantMetadataV10;
ModuleConstantMetadataV11: ModuleConstantMetadataV11;
@@ -2055,6 +2157,11 @@ declare module '@polkadot/types/types/registry' {
MortalEra: MortalEra;
MultiAddress: MultiAddress;
MultiAsset: MultiAsset;
MultiAssetAbstractFungible: MultiAssetAbstractFungible;
MultiAssetAbstractNonFungible: MultiAssetAbstractNonFungible;
MultiAssetConcreteFungible: MultiAssetConcreteFungible;
MultiAssetConcreteNonFungible: MultiAssetConcreteNonFungible;
MultiDisputeStatementSet: MultiDisputeStatementSet;
MultiLocation: MultiLocation;
Multiplier: Multiplier;
Multisig: Multisig;
@@ -2087,17 +2194,17 @@ declare module '@polkadot/types/types/registry' {
OpenTipFinderTo225: OpenTipFinderTo225;
OpenTipTip: OpenTipTip;
OpenTipTo225: OpenTipTo225;
Order: Order;
Origin: Origin;
OriginCaller: OriginCaller;
OriginKind: OriginKind;
OutboundHrmpMessage: OutboundHrmpMessage;
Owner: Owner;
PalletId: PalletId;
PalletsOrigin: PalletsOrigin;
PalletVersion: PalletVersion;
ParachainDispatchOrigin: ParachainDispatchOrigin;
ParachainInherentData: ParachainInherentData;
ParachainProposal: ParachainProposal;
ParachainsInherentData: ParachainsInherentData;
ParaGenesisArgs: ParaGenesisArgs;
ParaId: ParaId;
ParaInfo: ParaInfo;
@@ -2133,6 +2240,7 @@ declare module '@polkadot/types/types/registry' {
PhantomData: PhantomData;
Phase: Phase;
PhragmenScore: PhragmenScore;
PluralityJunction: PluralityJunction;
Points: Points;
Precommits: Precommits;
PrefabWasmModule: PrefabWasmModule;
@@ -2150,7 +2258,6 @@ declare module '@polkadot/types/types/registry' {
ProxyDefinition: ProxyDefinition;
ProxyState: ProxyState;
ProxyType: ProxyType;
QueryHolding: QueryHolding;
QueuedParathread: QueuedParathread;
Randomness: Randomness;
Raw: Raw;
@@ -2184,15 +2291,12 @@ declare module '@polkadot/types/types/registry' {
RegistrationJudgement: RegistrationJudgement;
RelayChainBlockNumber: RelayChainBlockNumber;
RelayChainHash: RelayChainHash;
RelayedFrom: RelayedFrom;
RelayTo: RelayTo;
Releases: Releases;
Remark: Remark;
Renouncing: Renouncing;
ReportedRoundStates: ReportedRoundStates;
Reporter: Reporter;
ReportIdOf: ReportIdOf;
ReserveAssetDeposit: ReserveAssetDeposit;
Retriable: Retriable;
RewardDestination: RewardDestination;
RewardPoint: RewardPoint;
@@ -2216,18 +2320,25 @@ declare module '@polkadot/types/types/registry' {
SealV0: SealV0;
SeatHolder: SeatHolder;
SeedOf: SeedOf;
ServiceQuality: ServiceQuality;
SessionIndex: SessionIndex;
SessionInfo: SessionInfo;
SessionInfoValidatorGroup: SessionInfoValidatorGroup;
SessionKeys1: SessionKeys1;
SessionKeys10: SessionKeys10;
SessionKeys10B: SessionKeys10B;
SessionKeys2: SessionKeys2;
SessionKeys3: SessionKeys3;
SessionKeys4: SessionKeys4;
SessionKeys5: SessionKeys5;
SessionKeys6: SessionKeys6;
SessionKeys6B: SessionKeys6B;
SessionKeys7: SessionKeys7;
SessionKeys7B: SessionKeys7B;
SessionKeys8: SessionKeys8;
SessionKeys8B: SessionKeys8B;
SessionKeys9: SessionKeys9;
SessionKeys9B: SessionKeys9B;
SetId: SetId;
SetIndex: SetIndex;
SiField: SiField;
@@ -2235,6 +2346,8 @@ declare module '@polkadot/types/types/registry' {
SignedAvailabilityBitfield: SignedAvailabilityBitfield;
SignedAvailabilityBitfields: SignedAvailabilityBitfields;
SignedBlock: SignedBlock;
SignedBlockWithJustification: SignedBlockWithJustification;
SignedBlockWithJustifications: SignedBlockWithJustifications;
SignerPayload: SignerPayload;
SigningContext: SigningContext;
SiLookupTypeId: SiLookupTypeId;
@@ -2308,11 +2421,10 @@ declare module '@polkadot/types/types/registry' {
TaskAddress: TaskAddress;
TAssetBalance: TAssetBalance;
TAssetDepositBalance: TAssetDepositBalance;
TeleportAsset: TeleportAsset;
Text: Text;
Timepoint: Timepoint;
TokenError: TokenError;
TombstoneContractInfo: TombstoneContractInfo;
Transact: Transact;
TransactionPriority: TransactionPriority;
TransactionValidityError: TransactionValidityError;
TransientValidationData: TransientValidationData;
@@ -2355,7 +2467,9 @@ declare module '@polkadot/types/types/registry' {
ValidatorPrefsTo196: ValidatorPrefsTo196;
ValidatorPrefsWithBlocked: ValidatorPrefsWithBlocked;
ValidatorPrefsWithCommission: ValidatorPrefsWithCommission;
ValidatorSetId: ValidatorSetId;
ValidatorSignature: ValidatorSignature;
ValidDisputeStatementKind: ValidDisputeStatementKind;
ValidityAttestation: ValidityAttestation;
VecInboundHrmpMessage: VecInboundHrmpMessage;
VersionedMultiAsset: VersionedMultiAsset;
@@ -2387,10 +2501,31 @@ declare module '@polkadot/types/types/registry' {
WinnersDataTuple: WinnersDataTuple;
WinningData: WinningData;
WinningDataEntry: WinningDataEntry;
WithdrawAsset: WithdrawAsset;
WithdrawReasons: WithdrawReasons;
Xcm: Xcm;
XcmAssetEffects: XcmAssetEffects;
XcmError: XcmError;
XcmResult: XcmResult;
XcmHrmpChannelAccepted: XcmHrmpChannelAccepted;
XcmHrmpChannelClosing: XcmHrmpChannelClosing;
XcmHrmpNewChannelOpenRequest: XcmHrmpNewChannelOpenRequest;
XcmOrder: XcmOrder;
XcmOrderBuyExecution: XcmOrderBuyExecution;
XcmOrderDepositAsset: XcmOrderDepositAsset;
XcmOrderDepositReserveAsset: XcmOrderDepositReserveAsset;
XcmOrderExchangeAsset: XcmOrderExchangeAsset;
XcmOrderInitiateReserveWithdraw: XcmOrderInitiateReserveWithdraw;
XcmOrderInitiateTeleport: XcmOrderInitiateTeleport;
XcmOrderQueryHolding: XcmOrderQueryHolding;
XcmOriginKind: XcmOriginKind;
XcmOutcome: XcmOutcome;
XcmQueryResponse: XcmQueryResponse;
XcmRelayedFrom: XcmRelayedFrom;
XcmReserveAssetDeposit: XcmReserveAssetDeposit;
XcmResponse: XcmResponse;
XcmTeleportAsset: XcmTeleportAsset;
XcmTransact: XcmTransact;
XcmTransferAsset: XcmTransferAsset;
XcmTransferReserveAsset: XcmTransferReserveAsset;
XcmWithdrawAsset: XcmWithdrawAsset;
}
}
+1 -3
View File
@@ -30,9 +30,7 @@ export abstract class AbstractArray<T extends Codec> extends Array<T> implements
* @description The length of the value when encoded as a Uint8Array
*/
public get encodedLength (): number {
return this.reduce((total, raw): number => {
return total + raw.encodedLength;
}, compactToU8a(this.length).length);
return this.reduce((total, entry) => total + entry.encodedLength, compactToU8a(this.length).length);
}
/**

Some files were not shown because too many files have changed in this diff Show More