difftreelog
merge develop
in: master
91 files changed
.envdiffbeforeafterboth--- a/.env
+++ b/.env
@@ -1,6 +1,6 @@
RUST_TOOLCHAIN=nightly-2022-05-11
RUST_C=1.62.0-nightly
-POLKA_VERSION=release-v0.9.22
+POLKA_VERSION=release-v0.9.23
UNIQUE_BRANCH=develop
USER=***
PASS=***
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -68,7 +68,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
dependencies = [
- "getrandom 0.2.6",
+ "getrandom 0.2.7",
"once_cell",
"version_check",
]
@@ -99,9 +99,9 @@
[[package]]
name = "anyhow"
-version = "1.0.57"
+version = "1.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
+checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
[[package]]
name = "approx"
@@ -188,9 +188,9 @@
[[package]]
name = "async-global-executor"
-version = "2.1.0"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd8b508d585e01084059b60f06ade4cb7415cd2e4084b71dd1cb44e7d3fb9880"
+checksum = "5262ed948da60dd8956c6c5aca4d4163593dddb7b32d73267c93dab7b2e98940"
dependencies = [
"async-channel",
"async-executor",
@@ -198,6 +198,7 @@
"async-lock",
"blocking",
"futures-lite",
+ "num_cpus",
"once_cell",
]
@@ -248,9 +249,9 @@
[[package]]
name = "async-std"
-version = "1.11.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52580991739c5cdb36cde8b2a516371c0a3b70dda36d916cc08b82372916808c"
+checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
dependencies = [
"async-attributes",
"async-channel",
@@ -267,7 +268,6 @@
"kv-log-macro",
"log",
"memchr",
- "num_cpus",
"once_cell",
"pin-project-lite 0.2.9",
"pin-utils",
@@ -371,7 +371,7 @@
checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
dependencies = [
"futures-core",
- "getrandom 0.2.6",
+ "getrandom 0.2.7",
"instant",
"pin-project-lite 0.2.9",
"rand 0.8.5",
@@ -429,7 +429,7 @@
[[package]]
name = "beefy-gadget"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"beefy-primitives",
"fnv",
@@ -437,7 +437,7 @@
"futures-timer",
"hex",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-chain-spec",
"sc-client-api",
@@ -463,14 +463,14 @@
[[package]]
name = "beefy-gadget-rpc"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"beefy-gadget",
"beefy-primitives",
"futures 0.3.21",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-rpc",
"sc-utils",
@@ -483,14 +483,14 @@
[[package]]
name = "beefy-merkle-tree"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
[[package]]
name = "beefy-primitives"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-api",
"sp-application-crypto",
@@ -695,7 +695,7 @@
"bp-runtime",
"finality-grandpa",
"frame-support",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -711,7 +711,7 @@
dependencies = [
"bp-runtime",
"frame-support",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-std",
]
@@ -726,7 +726,7 @@
"frame-support",
"frame-system",
"impl-trait-for-tuples",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -742,7 +742,7 @@
"bp-runtime",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-api",
"sp-core",
@@ -760,7 +760,7 @@
"bp-polkadot-core",
"bp-runtime",
"frame-support",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"smallvec",
"sp-api",
"sp-runtime",
@@ -776,7 +776,7 @@
"frame-support",
"hash-db",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -794,7 +794,7 @@
"bp-header-chain",
"ed25519-dalek",
"finality-grandpa",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-application-crypto",
"sp-finality-grandpa",
"sp-runtime",
@@ -810,7 +810,7 @@
"bp-polkadot-core",
"bp-rococo",
"bp-runtime",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api",
"sp-runtime",
"sp-std",
@@ -831,7 +831,7 @@
"pallet-bridge-grandpa",
"pallet-bridge-messages",
"pallet-transaction-payment",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-api",
"sp-core",
@@ -1067,16 +1067,16 @@
[[package]]
name = "clap"
-version = "3.1.18"
+version = "3.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
+checksum = "d53da17d37dba964b9b3ecb5c5a1f193a2762c700e6829201e645b9381c99dc7"
dependencies = [
"atty",
"bitflags",
"clap_derive",
"clap_lex",
"indexmap",
- "lazy_static",
+ "once_cell",
"strsim",
"termcolor",
"textwrap",
@@ -1084,9 +1084,9 @@
[[package]]
name = "clap_derive"
-version = "3.1.18"
+version = "3.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c"
+checksum = "c11d40217d16aee8508cc8e5fde8b4ff24639758608e5374e731b53f85749fb9"
dependencies = [
"heck 0.4.0",
"proc-macro-error",
@@ -1097,9 +1097,9 @@
[[package]]
name = "clap_lex"
-version = "0.2.0"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"
+checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613"
dependencies = [
"os_str_bytes",
]
@@ -1297,9 +1297,9 @@
[[package]]
name = "crossbeam-channel"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
+checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-utils",
@@ -1318,15 +1318,15 @@
[[package]]
name = "crossbeam-epoch"
-version = "0.9.8"
+version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
+checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
dependencies = [
"autocfg",
"cfg-if 1.0.0",
"crossbeam-utils",
- "lazy_static",
"memoffset",
+ "once_cell",
"scopeguard",
]
@@ -1342,12 +1342,12 @@
[[package]]
name = "crossbeam-utils"
-version = "0.8.8"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
+checksum = "8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978"
dependencies = [
"cfg-if 1.0.0",
- "lazy_static",
+ "once_cell",
]
[[package]]
@@ -1431,7 +1431,7 @@
[[package]]
name = "cumulus-client-cli"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"clap",
"sc-cli",
@@ -1442,14 +1442,14 @@
[[package]]
name = "cumulus-client-collator"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-client-consensus-common",
"cumulus-client-network",
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -1466,13 +1466,13 @@
[[package]]
name = "cumulus-client-consensus-aura"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"async-trait",
"cumulus-client-consensus-common",
"cumulus-primitives-core",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-consensus",
"sc-consensus-aura",
@@ -1495,13 +1495,13 @@
[[package]]
name = "cumulus-client-consensus-common"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"async-trait",
"cumulus-relay-chain-interface",
"dyn-clone",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"sc-client-api",
"sc-consensus",
@@ -1516,14 +1516,14 @@
[[package]]
name = "cumulus-client-network"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"async-trait",
"cumulus-relay-chain-interface",
"derive_more",
"futures 0.3.21",
"futures-timer",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"polkadot-node-primitives",
"polkadot-parachain",
@@ -1541,13 +1541,13 @@
[[package]]
name = "cumulus-client-pov-recovery"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
"futures 0.3.21",
"futures-timer",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-overseer",
@@ -1565,7 +1565,7 @@
[[package]]
name = "cumulus-client-service"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-client-cli",
"cumulus-client-collator",
@@ -1573,7 +1573,7 @@
"cumulus-client-pov-recovery",
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"polkadot-overseer",
"polkadot-primitives",
@@ -1595,13 +1595,13 @@
[[package]]
name = "cumulus-pallet-aura-ext"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"frame-executive",
"frame-support",
"frame-system",
"pallet-aura",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-application-crypto",
@@ -1613,13 +1613,13 @@
[[package]]
name = "cumulus-pallet-dmp-queue"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -1631,7 +1631,7 @@
[[package]]
name = "cumulus-pallet-parachain-system"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-pallet-parachain-system-proc-macro",
"cumulus-primitives-core",
@@ -1642,7 +1642,7 @@
"impl-trait-for-tuples",
"log",
"pallet-balances",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"scale-info",
"serde",
@@ -1661,7 +1661,7 @@
[[package]]
name = "cumulus-pallet-parachain-system-proc-macro"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -1672,12 +1672,12 @@
[[package]]
name = "cumulus-pallet-xcm"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-io",
@@ -1689,13 +1689,13 @@
[[package]]
name = "cumulus-pallet-xcmp-queue"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rand_chacha 0.3.1",
"scale-info",
"sp-runtime",
@@ -1707,10 +1707,10 @@
[[package]]
name = "cumulus-primitives-core"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"frame-support",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-core-primitives",
"polkadot-parachain",
"polkadot-primitives",
@@ -1723,13 +1723,13 @@
[[package]]
name = "cumulus-primitives-parachain-inherent"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"async-trait",
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
"cumulus-test-relay-sproof-builder",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"scale-info",
"sp-api",
@@ -1746,11 +1746,11 @@
[[package]]
name = "cumulus-primitives-timestamp"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-inherents",
"sp-std",
"sp-timestamp",
@@ -1759,11 +1759,11 @@
[[package]]
name = "cumulus-primitives-utility"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
"frame-support",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-core-primitives",
"polkadot-parachain",
"polkadot-primitives",
@@ -1776,7 +1776,7 @@
[[package]]
name = "cumulus-relay-chain-inprocess-interface"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"async-trait",
"cumulus-primitives-core",
@@ -1807,14 +1807,14 @@
[[package]]
name = "cumulus-relay-chain-interface"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"async-trait",
"cumulus-primitives-core",
"derive_more",
"futures 0.3.21",
"jsonrpsee-core",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"polkadot-overseer",
"polkadot-service",
@@ -1831,7 +1831,7 @@
[[package]]
name = "cumulus-relay-chain-rpc-interface"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"async-trait",
"backoff",
@@ -1840,7 +1840,7 @@
"futures 0.3.21",
"futures-timer",
"jsonrpsee",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"polkadot-service",
"sc-client-api",
@@ -1857,10 +1857,10 @@
[[package]]
name = "cumulus-test-relay-sproof-builder"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"sp-runtime",
"sp-state-machine",
@@ -2115,9 +2115,9 @@
[[package]]
name = "dyn-clone"
-version = "1.0.5"
+version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28"
+checksum = "140206b78fb2bc3edbcfc9b5ccbd0b30699cfe8d348b8b31b330e47df5291a5a"
[[package]]
name = "ecdsa"
@@ -2286,7 +2286,7 @@
"ethereum-types",
"hash-db",
"hash256-std-hasher",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rlp",
"rlp-derive",
"scale-info",
@@ -2329,7 +2329,7 @@
"evm-gasometer",
"evm-runtime",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"primitive-types",
"rlp",
"scale-info",
@@ -2368,7 +2368,7 @@
version = "0.35.0"
source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.23#e9252ed42dc26fc85b6703b1ba50660a08209e55"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"primitive-types",
"scale-info",
"serde",
@@ -2504,7 +2504,7 @@
"fp-storage",
"kvdb-rocksdb",
"parity-db",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-client-db",
"sp-core",
@@ -2546,8 +2546,8 @@
"jsonrpsee",
"libsecp256k1",
"log",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"prometheus",
"rand 0.8.5",
"rlp",
@@ -2623,7 +2623,7 @@
"futures-timer",
"log",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.11.2",
"scale-info",
]
@@ -2682,9 +2682,9 @@
[[package]]
name = "fork-tree"
version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
]
[[package]]
@@ -2703,7 +2703,7 @@
source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"
dependencies = [
"ethereum",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-core",
"sp-runtime",
"sp-std",
@@ -2717,7 +2717,7 @@
"evm",
"frame-support",
"impl-trait-for-tuples",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"serde",
"sp-core",
"sp-std",
@@ -2740,7 +2740,7 @@
"ethereum",
"ethereum-types",
"fp-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-api",
"sp-core",
@@ -2756,7 +2756,7 @@
dependencies = [
"ethereum",
"frame-support",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"scale-info",
"serde",
@@ -2770,19 +2770,19 @@
version = "2.0.0"
source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
]
[[package]]
name = "frame-benchmarking"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
"linregress",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"paste",
"scale-info",
"serde",
@@ -2798,7 +2798,7 @@
[[package]]
name = "frame-benchmarking-cli"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"Inflector",
"chrono",
@@ -2816,7 +2816,7 @@
"linked-hash-map",
"log",
"memory-db",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rand 0.8.5",
"rand_pcg 0.3.1",
"sc-block-builder",
@@ -2848,7 +2848,7 @@
[[package]]
name = "frame-election-provider-solution-type"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -2859,12 +2859,12 @@
[[package]]
name = "frame-election-provider-support"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-election-provider-solution-type",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-arithmetic",
"sp-npos-elections",
@@ -2875,11 +2875,11 @@
[[package]]
name = "frame-executive"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -2895,7 +2895,7 @@
checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"
dependencies = [
"cfg-if 1.0.0",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
]
@@ -2903,7 +2903,7 @@
[[package]]
name = "frame-support"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"bitflags",
"frame-metadata",
@@ -2912,7 +2912,7 @@
"k256",
"log",
"once_cell",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"paste",
"scale-info",
"serde",
@@ -2933,7 +2933,7 @@
[[package]]
name = "frame-support-procedural"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"Inflector",
"frame-support-procedural-tools",
@@ -2945,7 +2945,7 @@
[[package]]
name = "frame-support-procedural-tools"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support-procedural-tools-derive",
"proc-macro-crate",
@@ -2957,7 +2957,7 @@
[[package]]
name = "frame-support-procedural-tools-derive"
version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro2",
"quote",
@@ -2967,11 +2967,11 @@
[[package]]
name = "frame-system"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -2984,12 +2984,12 @@
[[package]]
name = "frame-system-benchmarking"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-runtime",
@@ -2999,16 +2999,16 @@
[[package]]
name = "frame-system-rpc-runtime-api"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api",
]
[[package]]
name = "frame-try-runtime"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"sp-api",
@@ -3225,13 +3225,13 @@
[[package]]
name = "getrandom"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
+checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
dependencies = [
"cfg-if 1.0.0",
"libc",
- "wasi 0.10.0+wasi-snapshot-preview1",
+ "wasi 0.11.0+wasi-snapshot-preview1",
]
[[package]]
@@ -3263,9 +3263,9 @@
[[package]]
name = "globset"
-version = "0.4.8"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd"
+checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"
dependencies = [
"aho-corasick",
"bstr",
@@ -3555,9 +3555,9 @@
[[package]]
name = "if-watch"
-version = "1.0.0"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae8f4a3c3d4c89351ca83e120c1c00b27df945d38e05695668c9d4b4f7bc52f3"
+checksum = "774d59367a3d26965d21ac70a86fcb697d83405d1c4312d1d8a6855296af0cf7"
dependencies = [
"async-io",
"core-foundation",
@@ -3577,7 +3577,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
]
[[package]]
@@ -3611,12 +3611,12 @@
[[package]]
name = "indexmap"
-version = "1.8.2"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"
+checksum = "6c6392766afd7964e2531940894cffe4bd8d7d17dbc3c1c4857040fd4b33bdb3"
dependencies = [
"autocfg",
- "hashbrown 0.11.2",
+ "hashbrown 0.12.1",
"serde",
]
@@ -3706,9 +3706,9 @@
[[package]]
name = "js-sys"
-version = "0.3.57"
+version = "0.3.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"
+checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"
dependencies = [
"wasm-bindgen",
]
@@ -3927,7 +3927,7 @@
"pallet-vesting",
"pallet-xcm",
"pallet-xcm-benchmarks",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"polkadot-runtime-common",
"polkadot-runtime-parachains",
@@ -4074,7 +4074,7 @@
"bytes 1.1.0",
"futures 0.3.21",
"futures-timer",
- "getrandom 0.2.6",
+ "getrandom 0.2.7",
"instant",
"lazy_static",
"libp2p-autonat",
@@ -4245,7 +4245,7 @@
"libp2p-core",
"libp2p-swarm",
"log",
- "lru 0.7.6",
+ "lru 0.7.7",
"prost 0.9.0",
"prost-build",
"smallvec",
@@ -4710,9 +4710,9 @@
[[package]]
name = "lru"
-version = "0.7.6"
+version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8015d95cb7b2ddd3c0d32ca38283ceb1eea09b4713ee380bceb942d85a244228"
+checksum = "c84e6fe5655adc6ce00787cf7dcaf8dc4f998a0565d23eafc207a8b08ca3349a"
dependencies = [
"hashbrown 0.11.2",
]
@@ -4899,9 +4899,9 @@
[[package]]
name = "mio"
-version = "0.8.3"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799"
+checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
dependencies = [
"libc",
"log",
@@ -5152,9 +5152,9 @@
[[package]]
name = "num-complex"
-version = "0.4.1"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790"
+checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19"
dependencies = [
"num-traits",
]
@@ -5250,7 +5250,7 @@
[[package]]
name = "opal-runtime"
-version = "0.9.22"
+version = "0.9.23"
dependencies = [
"cumulus-pallet-aura-ext",
"cumulus-pallet-dmp-queue",
@@ -5299,10 +5299,10 @@
"pallet-transaction-payment-rpc-runtime-api",
"pallet-treasury",
"pallet-unique",
- "pallet-unq-scheduler",
+ "pallet-unique-scheduler",
"pallet-xcm",
"parachain-info",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"rmrk-rpc",
"scale-info",
@@ -5393,7 +5393,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-io",
@@ -5419,12 +5419,12 @@
[[package]]
name = "pallet-aura"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
"pallet-timestamp",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-application-crypto",
"sp-consensus-aura",
@@ -5435,12 +5435,12 @@
[[package]]
name = "pallet-authority-discovery"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
"pallet-session",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-application-crypto",
"sp-authority-discovery",
@@ -5451,12 +5451,12 @@
[[package]]
name = "pallet-authorship"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
"impl-trait-for-tuples",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-authorship",
"sp-runtime",
@@ -5466,7 +5466,7 @@
[[package]]
name = "pallet-babe"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
@@ -5475,7 +5475,7 @@
"pallet-authorship",
"pallet-session",
"pallet-timestamp",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-application-crypto",
"sp-consensus-babe",
@@ -5490,7 +5490,7 @@
[[package]]
name = "pallet-bags-list"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-election-provider-support",
@@ -5498,7 +5498,7 @@
"frame-system",
"log",
"pallet-balances",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -5510,13 +5510,13 @@
[[package]]
name = "pallet-balances"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-runtime",
"sp-std",
@@ -5530,7 +5530,7 @@
"fp-evm",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -5540,13 +5540,13 @@
[[package]]
name = "pallet-beefy"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"beefy-primitives",
"frame-support",
"frame-system",
"pallet-session",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-runtime",
@@ -5556,7 +5556,7 @@
[[package]]
name = "pallet-beefy-mmr"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"beefy-merkle-tree",
"beefy-primitives",
@@ -5567,7 +5567,7 @@
"pallet-beefy",
"pallet-mmr",
"pallet-session",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -5579,14 +5579,14 @@
[[package]]
name = "pallet-bounties"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
"pallet-treasury",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -5604,7 +5604,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-runtime",
@@ -5624,7 +5624,7 @@
"frame-system",
"log",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-finality-grandpa",
@@ -5646,7 +5646,7 @@
"frame-system",
"log",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -5657,7 +5657,7 @@
[[package]]
name = "pallet-child-bounties"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
@@ -5665,7 +5665,7 @@
"log",
"pallet-bounties",
"pallet-treasury",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -5676,13 +5676,13 @@
[[package]]
name = "pallet-collective"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -5702,7 +5702,7 @@
"frame-system",
"pallet-evm",
"pallet-evm-coder-substrate",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -5714,12 +5714,12 @@
[[package]]
name = "pallet-democracy"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-io",
@@ -5730,14 +5730,14 @@
[[package]]
name = "pallet-election-provider-multi-phase"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-election-provider-support",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rand 0.7.3",
"scale-info",
"sp-arithmetic",
@@ -5753,12 +5753,12 @@
[[package]]
name = "pallet-election-provider-support-benchmarking"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-election-provider-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-npos-elections",
"sp-runtime",
]
@@ -5766,13 +5766,13 @@
[[package]]
name = "pallet-elections-phragmen"
version = "5.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -5800,7 +5800,7 @@
"log",
"pallet-evm",
"pallet-timestamp",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rlp",
"scale-info",
"serde",
@@ -5825,7 +5825,7 @@
"impl-trait-for-tuples",
"log",
"pallet-timestamp",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"primitive-types",
"rlp",
"scale-info",
@@ -5848,7 +5848,7 @@
"frame-system",
"pallet-ethereum",
"pallet-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-std",
@@ -5867,7 +5867,7 @@
"pallet-common",
"pallet-evm",
"pallet-evm-coder-substrate",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-runtime",
@@ -5885,7 +5885,7 @@
"frame-support",
"frame-system",
"pallet-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -5903,7 +5903,7 @@
"frame-system",
"pallet-ethereum",
"pallet-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -5925,7 +5925,7 @@
"pallet-evm",
"pallet-evm-coder-substrate",
"pallet-structure",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-runtime",
@@ -5936,12 +5936,12 @@
[[package]]
name = "pallet-gilt"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-arithmetic",
"sp-runtime",
@@ -5951,7 +5951,7 @@
[[package]]
name = "pallet-grandpa"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
@@ -5959,7 +5959,7 @@
"log",
"pallet-authorship",
"pallet-session",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-application-crypto",
"sp-core",
@@ -5974,13 +5974,13 @@
[[package]]
name = "pallet-identity"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"enumflags2",
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -5990,14 +5990,14 @@
[[package]]
name = "pallet-im-online"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
"pallet-authorship",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-application-crypto",
"sp-core",
@@ -6010,12 +6010,12 @@
[[package]]
name = "pallet-indices"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -6034,7 +6034,7 @@
"pallet-balances",
"pallet-randomness-collective-flip",
"pallet-timestamp",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -6046,13 +6046,13 @@
[[package]]
name = "pallet-membership"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -6063,13 +6063,13 @@
[[package]]
name = "pallet-mmr"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"ckb-merkle-mountain-range",
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -6081,10 +6081,10 @@
[[package]]
name = "pallet-mmr-rpc"
version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"jsonrpsee",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"serde",
"sp-api",
"sp-blockchain",
@@ -6096,12 +6096,12 @@
[[package]]
name = "pallet-multisig"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6111,11 +6111,11 @@
[[package]]
name = "pallet-nicks"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6125,12 +6125,12 @@
[[package]]
name = "pallet-nomination-pools"
version = "1.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-runtime",
@@ -6141,7 +6141,7 @@
[[package]]
name = "pallet-nomination-pools-benchmarking"
version = "1.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-election-provider-support",
@@ -6150,7 +6150,7 @@
"pallet-bags-list",
"pallet-nomination-pools",
"pallet-staking",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-runtime",
"sp-staking",
@@ -6170,7 +6170,7 @@
"pallet-evm",
"pallet-evm-coder-substrate",
"pallet-structure",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-runtime",
@@ -6182,13 +6182,13 @@
[[package]]
name = "pallet-offences"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
"log",
"pallet-balances",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-runtime",
@@ -6199,7 +6199,7 @@
[[package]]
name = "pallet-offences-benchmarking"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-election-provider-support",
@@ -6212,7 +6212,7 @@
"pallet-offences",
"pallet-session",
"pallet-staking",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-runtime",
"sp-staking",
@@ -6222,12 +6222,12 @@
[[package]]
name = "pallet-preimage"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -6238,12 +6238,12 @@
[[package]]
name = "pallet-proxy"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6253,11 +6253,11 @@
[[package]]
name = "pallet-randomness-collective-flip"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"safe-mix",
"scale-info",
"sp-runtime",
@@ -6267,12 +6267,12 @@
[[package]]
name = "pallet-recovery"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6289,7 +6289,7 @@
"pallet-common",
"pallet-evm",
"pallet-structure",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-runtime",
@@ -6310,7 +6310,7 @@
"pallet-evm",
"pallet-nonfungible",
"pallet-structure",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rmrk-traits",
"scale-info",
"sp-core",
@@ -6330,7 +6330,7 @@
"pallet-evm",
"pallet-nonfungible",
"pallet-rmrk-core",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rmrk-traits",
"scale-info",
"sp-core",
@@ -6342,13 +6342,13 @@
[[package]]
name = "pallet-scheduler"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6358,14 +6358,14 @@
[[package]]
name = "pallet-session"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
"impl-trait-for-tuples",
"log",
"pallet-timestamp",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -6379,7 +6379,7 @@
[[package]]
name = "pallet-session-benchmarking"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
@@ -6395,11 +6395,11 @@
[[package]]
name = "pallet-society"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rand_chacha 0.2.2",
"scale-info",
"sp-runtime",
@@ -6409,7 +6409,7 @@
[[package]]
name = "pallet-staking"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-election-provider-support",
@@ -6418,7 +6418,7 @@
"log",
"pallet-authorship",
"pallet-session",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rand_chacha 0.2.2",
"scale-info",
"serde",
@@ -6432,7 +6432,7 @@
[[package]]
name = "pallet-staking-reward-curve"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -6443,7 +6443,7 @@
[[package]]
name = "pallet-staking-reward-fn"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
"sp-arithmetic",
@@ -6458,7 +6458,7 @@
"frame-system",
"pallet-common",
"pallet-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-std",
"up-data-structs",
@@ -6467,11 +6467,11 @@
[[package]]
name = "pallet-sudo"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6488,7 +6488,7 @@
"frame-system",
"pallet-balances",
"pallet-transaction-payment",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -6501,13 +6501,13 @@
[[package]]
name = "pallet-timestamp"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-inherents",
"sp-io",
@@ -6519,14 +6519,14 @@
[[package]]
name = "pallet-tips"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
"pallet-treasury",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -6538,11 +6538,11 @@
[[package]]
name = "pallet-transaction-payment"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -6554,11 +6554,11 @@
[[package]]
name = "pallet-transaction-payment-rpc"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"jsonrpsee",
"pallet-transaction-payment-rpc-runtime-api",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api",
"sp-blockchain",
"sp-core",
@@ -6569,10 +6569,10 @@
[[package]]
name = "pallet-transaction-payment-rpc-runtime-api"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"pallet-transaction-payment",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api",
"sp-runtime",
]
@@ -6580,14 +6580,14 @@
[[package]]
name = "pallet-treasury"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"impl-trait-for-tuples",
"pallet-balances",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-runtime",
@@ -6607,7 +6607,7 @@
"pallet-evm",
"pallet-evm-coder-substrate",
"pallet-nonfungible",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -6618,14 +6618,14 @@
]
[[package]]
-name = "pallet-unq-scheduler"
+name = "pallet-unique-scheduler"
version = "0.1.0"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -6639,12 +6639,12 @@
[[package]]
name = "pallet-utility"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -6655,13 +6655,13 @@
[[package]]
name = "pallet-vesting"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-runtime",
"sp-std",
@@ -6675,7 +6675,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -6694,7 +6694,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-runtime",
"sp-std",
@@ -6705,12 +6705,12 @@
[[package]]
name = "parachain-info"
version = "0.1.0"
-source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"
+source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
dependencies = [
"cumulus-primitives-core",
"frame-support",
"frame-system",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
]
@@ -6750,15 +6750,15 @@
[[package]]
name = "parity-scale-codec"
-version = "3.1.2"
+version = "3.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066"
+checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0"
dependencies = [
"arrayvec 0.7.2",
"bitvec 1.0.0",
"byte-slice-cast",
"impl-trait-for-tuples",
- "parity-scale-codec-derive 3.1.2",
+ "parity-scale-codec-derive 3.1.3",
"serde",
]
@@ -6776,9 +6776,9 @@
[[package]]
name = "parity-scale-codec-derive"
-version = "3.1.2"
+version = "3.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8"
+checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -6802,7 +6802,7 @@
"ethereum-types",
"hashbrown 0.12.1",
"impl-trait-for-tuples",
- "lru 0.7.6",
+ "lru 0.7.7",
"parity-util-mem-derive",
"parking_lot 0.12.1",
"primitive-types",
@@ -7086,8 +7086,8 @@
"derive_more",
"fatality",
"futures 0.3.21",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -7108,8 +7108,8 @@
dependencies = [
"fatality",
"futures 0.3.21",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -7213,7 +7213,7 @@
version = "0.9.23"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"scale-info",
"sp-core",
@@ -7229,8 +7229,8 @@
"derive_more",
"fatality",
"futures 0.3.21",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -7249,7 +7249,7 @@
version = "0.9.23"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-node-primitives",
"polkadot-primitives",
"reed-solomon-novelpoly",
@@ -7287,7 +7287,7 @@
"async-trait",
"bytes 1.1.0",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"polkadot-node-network-protocol",
"polkadot-node-subsystem",
@@ -7305,7 +7305,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
dependencies = [
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-erasure-coding",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7327,9 +7327,9 @@
"futures 0.3.21",
"futures-timer",
"kvdb",
- "lru 0.7.6",
+ "lru 0.7.7",
"merlin",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-node-jaeger",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7355,7 +7355,7 @@
"futures 0.3.21",
"futures-timer",
"kvdb",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-erasure-coding",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7407,7 +7407,7 @@
dependencies = [
"async-trait",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-node-core-pvf",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7441,7 +7441,7 @@
"futures 0.3.21",
"futures-timer",
"kvdb",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-node-subsystem-util",
@@ -7458,8 +7458,8 @@
"fatality",
"futures 0.3.21",
"kvdb",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-node-subsystem-util",
@@ -7515,7 +7515,7 @@
"async-std",
"futures 0.3.21",
"futures-timer",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"pin-project 1.0.10",
"polkadot-core-primitives",
"polkadot-node-subsystem-util",
@@ -7577,7 +7577,7 @@
"lazy_static",
"log",
"mick-jaeger",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"polkadot-node-primitives",
"polkadot-primitives",
@@ -7595,7 +7595,7 @@
"futures 0.3.21",
"futures-timer",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"prioritized-metered-channel",
"sc-cli",
@@ -7614,14 +7614,14 @@
"derive_more",
"fatality",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-node-jaeger",
"polkadot-node-primitives",
"polkadot-primitives",
"rand 0.8.5",
"sc-authority-discovery",
"sc-network",
- "strum 0.24.0",
+ "strum 0.24.1",
"thiserror",
"tracing-gum",
]
@@ -7633,7 +7633,7 @@
dependencies = [
"bounded-vec",
"futures 0.3.21",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"polkadot-primitives",
"schnorrkel",
@@ -7688,9 +7688,9 @@
"futures 0.3.21",
"itertools",
"kvdb",
- "lru 0.7.6",
+ "lru 0.7.7",
"parity-db",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"parking_lot 0.11.2",
"pin-project 1.0.10",
@@ -7717,7 +7717,7 @@
dependencies = [
"futures 0.3.21",
"futures-timer",
- "lru 0.7.6",
+ "lru 0.7.7",
"orchestra",
"parity-util-mem",
"parking_lot 0.12.1",
@@ -7739,7 +7739,7 @@
dependencies = [
"derive_more",
"frame-support",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"polkadot-core-primitives",
"scale-info",
@@ -7772,7 +7772,7 @@
"bitvec 1.0.0",
"frame-system",
"hex-literal",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"polkadot-core-primitives",
"polkadot-parachain",
@@ -7879,7 +7879,7 @@
"pallet-utility",
"pallet-vesting",
"pallet-xcm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"polkadot-runtime-common",
"polkadot-runtime-constants",
@@ -7938,7 +7938,7 @@
"pallet-transaction-payment",
"pallet-treasury",
"pallet-vesting",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"polkadot-runtime-parachains",
"rustc-hex",
@@ -7977,7 +7977,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
dependencies = [
"bs58",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"sp-std",
"sp-tracing",
@@ -8003,7 +8003,7 @@
"pallet-staking",
"pallet-timestamp",
"pallet-vesting",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"polkadot-runtime-metrics",
"rand 0.8.5",
@@ -8040,7 +8040,7 @@
"kusama-runtime",
"kvdb",
"kvdb-rocksdb",
- "lru 0.7.6",
+ "lru 0.7.7",
"pallet-babe",
"pallet-im-online",
"pallet-staking",
@@ -8138,7 +8138,7 @@
"fatality",
"futures 0.3.21",
"indexmap",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -8155,7 +8155,7 @@
version = "0.9.23"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-primitives",
"sp-core",
]
@@ -8190,7 +8190,7 @@
"pallet-transaction-payment-rpc-runtime-api",
"pallet-vesting",
"pallet-xcm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"polkadot-primitives",
"polkadot-runtime-common",
@@ -8383,9 +8383,9 @@
[[package]]
name = "proc-macro2"
-version = "1.0.39"
+version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
+checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
dependencies = [
"unicode-ident",
]
@@ -8514,7 +8514,7 @@
[[package]]
name = "quartz-runtime"
-version = "0.9.22"
+version = "0.9.23"
dependencies = [
"cumulus-pallet-aura-ext",
"cumulus-pallet-dmp-queue",
@@ -8528,11 +8528,14 @@
"fp-evm-mapping",
"fp-rpc",
"fp-self-contained",
+ "frame-benchmarking",
"frame-executive",
"frame-support",
"frame-system",
+ "frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
+ "hex-literal",
"log",
"orml-vesting",
"pallet-aura",
@@ -8560,10 +8563,10 @@
"pallet-transaction-payment-rpc-runtime-api",
"pallet-treasury",
"pallet-unique",
- "pallet-unq-scheduler",
+ "pallet-unique-scheduler",
"pallet-xcm",
"parachain-info",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"rmrk-rpc",
"scale-info",
@@ -8610,9 +8613,9 @@
[[package]]
name = "quote"
-version = "1.0.18"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
+checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
dependencies = [
"proc-macro2",
]
@@ -8689,7 +8692,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
- "getrandom 0.2.6",
+ "getrandom 0.2.7",
]
[[package]]
@@ -8774,7 +8777,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
- "getrandom 0.2.6",
+ "getrandom 0.2.7",
"redox_syscall",
"thiserror",
]
@@ -8864,12 +8867,12 @@
[[package]]
name = "remote-externalities"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"env_logger",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"serde",
"serde_json",
"sp-core",
@@ -8967,7 +8970,7 @@
name = "rmrk-traits"
version = "0.1.0"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
]
@@ -9028,7 +9031,7 @@
"pallet-transaction-payment-rpc-runtime-api",
"pallet-utility",
"pallet-xcm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"polkadot-primitives",
"polkadot-runtime-common",
@@ -9181,9 +9184,9 @@
[[package]]
name = "rustversion"
-version = "1.0.6"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
+checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf"
[[package]]
name = "rw-stream-sink"
@@ -9232,7 +9235,7 @@
[[package]]
name = "sc-allocator"
version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
"sp-core",
@@ -9243,7 +9246,7 @@
[[package]]
name = "sc-authority-discovery"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures 0.3.21",
@@ -9251,7 +9254,7 @@
"ip_network",
"libp2p",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"prost 0.10.4",
"prost-build",
"rand 0.7.3",
@@ -9270,12 +9273,12 @@
[[package]]
name = "sc-basic-authorship"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"futures-timer",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-block-builder",
"sc-client-api",
"sc-proposer-metrics",
@@ -9293,9 +9296,9 @@
[[package]]
name = "sc-block-builder"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sp-api",
"sp-block-builder",
@@ -9309,11 +9312,11 @@
[[package]]
name = "sc-chain-spec"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"impl-trait-for-tuples",
"memmap2 0.5.4",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-chain-spec-derive",
"sc-network",
"sc-telemetry",
@@ -9326,7 +9329,7 @@
[[package]]
name = "sc-chain-spec-derive"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -9337,7 +9340,7 @@
[[package]]
name = "sc-cli"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"chrono",
"clap",
@@ -9347,7 +9350,7 @@
"libp2p",
"log",
"names",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rand 0.7.3",
"regex",
"rpassword",
@@ -9376,13 +9379,13 @@
[[package]]
name = "sc-client-api"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"fnv",
"futures 0.3.21",
"hash-db",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-executor",
"sc-transaction-pool-api",
@@ -9404,7 +9407,7 @@
[[package]]
name = "sc-client-db"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"hash-db",
"kvdb",
@@ -9413,7 +9416,7 @@
"linked-hash-map",
"log",
"parity-db",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-client-api",
"sc-state-db",
@@ -9429,7 +9432,7 @@
[[package]]
name = "sc-consensus"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures 0.3.21",
@@ -9453,12 +9456,12 @@
[[package]]
name = "sc-consensus-aura"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures 0.3.21",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-block-builder",
"sc-client-api",
"sc-consensus",
@@ -9482,7 +9485,7 @@
[[package]]
name = "sc-consensus-babe"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"fork-tree",
@@ -9492,7 +9495,7 @@
"num-bigint",
"num-rational 0.2.4",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"rand 0.7.3",
"retain_mut",
@@ -9525,7 +9528,7 @@
[[package]]
name = "sc-consensus-babe-rpc"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"jsonrpsee",
@@ -9547,10 +9550,10 @@
[[package]]
name = "sc-consensus-epochs"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"fork-tree",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-consensus",
"sp-blockchain",
@@ -9560,14 +9563,14 @@
[[package]]
name = "sc-consensus-manual-seal"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"assert_matches",
"async-trait",
"futures 0.3.21",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-consensus",
"sc-consensus-aura",
@@ -9594,13 +9597,13 @@
[[package]]
name = "sc-consensus-slots"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures 0.3.21",
"futures-timer",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-consensus",
"sc-telemetry",
@@ -9619,7 +9622,7 @@
[[package]]
name = "sc-consensus-uncles"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"sc-client-api",
"sp-authorship",
@@ -9630,11 +9633,11 @@
[[package]]
name = "sc-executor"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"lazy_static",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-executor-common",
"sc-executor-wasmi",
@@ -9657,10 +9660,10 @@
[[package]]
name = "sc-executor-common"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"environmental",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-allocator",
"sp-maybe-compressed-blob",
"sp-sandbox",
@@ -9674,10 +9677,10 @@
[[package]]
name = "sc-executor-wasmi"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-allocator",
"sc-executor-common",
"sp-runtime-interface",
@@ -9689,12 +9692,12 @@
[[package]]
name = "sc-executor-wasmtime"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"cfg-if 1.0.0",
"libc",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-wasm 0.42.2",
"sc-allocator",
"sc-executor-common",
@@ -9707,7 +9710,7 @@
[[package]]
name = "sc-finality-grandpa"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"ahash",
"async-trait",
@@ -9718,7 +9721,7 @@
"futures-timer",
"hex",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"rand 0.8.5",
"sc-block-builder",
@@ -9747,13 +9750,13 @@
[[package]]
name = "sc-finality-grandpa-rpc"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"finality-grandpa",
"futures 0.3.21",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-finality-grandpa",
"sc-rpc",
@@ -9768,7 +9771,7 @@
[[package]]
name = "sc-informant"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"ansi_term",
"futures 0.3.21",
@@ -9785,7 +9788,7 @@
[[package]]
name = "sc-keystore"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"hex",
@@ -9800,7 +9803,7 @@
[[package]]
name = "sc-network"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"asynchronous-codec",
@@ -9818,8 +9821,8 @@
"linked-hash-map",
"linked_hash_set",
"log",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"pin-project 1.0.10",
"prost 0.10.4",
@@ -9852,11 +9855,11 @@
[[package]]
name = "sc-network-common"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"libp2p",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"prost-build",
"sc-peerset",
"smallvec",
@@ -9865,14 +9868,14 @@
[[package]]
name = "sc-network-gossip"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"ahash",
"futures 0.3.21",
"futures-timer",
"libp2p",
"log",
- "lru 0.7.6",
+ "lru 0.7.7",
"sc-network",
"sp-runtime",
"substrate-prometheus-endpoint",
@@ -9882,12 +9885,12 @@
[[package]]
name = "sc-network-light"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"libp2p",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"prost 0.10.4",
"prost-build",
"sc-client-api",
@@ -9902,7 +9905,7 @@
[[package]]
name = "sc-network-sync"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"bitflags",
"either",
@@ -9910,8 +9913,8 @@
"futures 0.3.21",
"libp2p",
"log",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"prost 0.10.4",
"prost-build",
"sc-client-api",
@@ -9931,7 +9934,7 @@
[[package]]
name = "sc-offchain"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"bytes 1.1.0",
"fnv",
@@ -9942,7 +9945,7 @@
"hyper-rustls",
"num_cpus",
"once_cell",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"rand 0.7.3",
"sc-client-api",
@@ -9959,7 +9962,7 @@
[[package]]
name = "sc-peerset"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"libp2p",
@@ -9972,7 +9975,7 @@
[[package]]
name = "sc-proposer-metrics"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
"substrate-prometheus-endpoint",
@@ -9981,13 +9984,13 @@
[[package]]
name = "sc-rpc"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"hash-db",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-block-builder",
"sc-chain-spec",
@@ -10011,12 +10014,12 @@
[[package]]
name = "sc-rpc-api"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sc-chain-spec",
"sc-transaction-pool-api",
@@ -10034,7 +10037,7 @@
[[package]]
name = "sc-rpc-server"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"jsonrpsee",
@@ -10047,7 +10050,7 @@
[[package]]
name = "sc-service"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"directories",
@@ -10057,7 +10060,7 @@
"hash-db",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"parking_lot 0.12.1",
"pin-project 1.0.10",
@@ -10112,10 +10115,10 @@
[[package]]
name = "sc-state-db"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"parity-util-mem-derive",
"parking_lot 0.12.1",
@@ -10126,10 +10129,10 @@
[[package]]
name = "sc-sync-state-rpc"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"jsonrpsee",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-chain-spec",
"sc-client-api",
"sc-consensus-babe",
@@ -10145,7 +10148,7 @@
[[package]]
name = "sc-sysinfo"
version = "6.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"libc",
@@ -10164,7 +10167,7 @@
[[package]]
name = "sc-telemetry"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"chrono",
"futures 0.3.21",
@@ -10182,7 +10185,7 @@
[[package]]
name = "sc-tracing"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"ansi_term",
"atty",
@@ -10213,7 +10216,7 @@
[[package]]
name = "sc-tracing-proc-macro"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -10224,13 +10227,13 @@
[[package]]
name = "sc-transaction-pool"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"futures-timer",
"linked-hash-map",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"parking_lot 0.12.1",
"retain_mut",
@@ -10251,7 +10254,7 @@
[[package]]
name = "sc-transaction-pool-api"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"log",
@@ -10264,7 +10267,7 @@
[[package]]
name = "sc-utils"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"futures-timer",
@@ -10283,7 +10286,7 @@
"bitvec 1.0.0",
"cfg-if 1.0.0",
"derive_more",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info-derive",
"serde",
]
@@ -10630,7 +10633,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
dependencies = [
"enumn",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"paste",
"sp-runtime",
"sp-std",
@@ -10703,11 +10706,11 @@
[[package]]
name = "sp-api"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"hash-db",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api-proc-macro",
"sp-core",
"sp-runtime",
@@ -10720,7 +10723,7 @@
[[package]]
name = "sp-api-proc-macro"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"blake2",
"proc-macro-crate",
@@ -10732,9 +10735,9 @@
[[package]]
name = "sp-application-crypto"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-core",
@@ -10745,11 +10748,11 @@
[[package]]
name = "sp-arithmetic"
version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"integer-sqrt",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-debug-derive",
@@ -10760,9 +10763,9 @@
[[package]]
name = "sp-authority-discovery"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-api",
"sp-application-crypto",
@@ -10773,10 +10776,10 @@
[[package]]
name = "sp-authorship"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-inherents",
"sp-runtime",
"sp-std",
@@ -10785,9 +10788,9 @@
[[package]]
name = "sp-block-builder"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api",
"sp-inherents",
"sp-runtime",
@@ -10797,12 +10800,12 @@
[[package]]
name = "sp-blockchain"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"log",
- "lru 0.7.6",
- "parity-scale-codec 3.1.2",
+ "lru 0.7.7",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"sp-api",
"sp-consensus",
@@ -10815,13 +10818,13 @@
[[package]]
name = "sp-consensus"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures 0.3.21",
"futures-timer",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-core",
"sp-inherents",
"sp-runtime",
@@ -10834,10 +10837,10 @@
[[package]]
name = "sp-consensus-aura"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-api",
"sp-application-crypto",
@@ -10852,11 +10855,11 @@
[[package]]
name = "sp-consensus-babe"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"merlin",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-api",
@@ -10875,9 +10878,9 @@
[[package]]
name = "sp-consensus-slots"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-arithmetic",
@@ -10889,9 +10892,9 @@
[[package]]
name = "sp-consensus-vrf"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"schnorrkel",
"sp-core",
@@ -10902,7 +10905,7 @@
[[package]]
name = "sp-core"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"base58",
"bitflags",
@@ -10920,7 +10923,7 @@
"log",
"merlin",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"parking_lot 0.12.1",
"primitive-types",
@@ -10948,7 +10951,7 @@
[[package]]
name = "sp-core-hashing"
version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"blake2",
"byteorder",
@@ -10962,7 +10965,7 @@
[[package]]
name = "sp-core-hashing-proc-macro"
version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro2",
"quote",
@@ -10973,7 +10976,7 @@
[[package]]
name = "sp-database"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"kvdb",
"parking_lot 0.12.1",
@@ -10982,7 +10985,7 @@
[[package]]
name = "sp-debug-derive"
version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro2",
"quote",
@@ -10992,10 +10995,10 @@
[[package]]
name = "sp-externalities"
version = "0.12.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"environmental",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-std",
"sp-storage",
]
@@ -11003,11 +11006,11 @@
[[package]]
name = "sp-finality-grandpa"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"finality-grandpa",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-api",
@@ -11021,11 +11024,11 @@
[[package]]
name = "sp-inherents"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"impl-trait-for-tuples",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-core",
"sp-runtime",
"sp-std",
@@ -11035,13 +11038,13 @@
[[package]]
name = "sp-io"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"hash-db",
"libsecp256k1",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"secp256k1",
"sp-core",
@@ -11060,7 +11063,7 @@
[[package]]
name = "sp-keyring"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"lazy_static",
"sp-core",
@@ -11071,12 +11074,12 @@
[[package]]
name = "sp-keystore"
version = "0.12.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures 0.3.21",
"merlin",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"schnorrkel",
"serde",
@@ -11088,7 +11091,7 @@
[[package]]
name = "sp-maybe-compressed-blob"
version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"thiserror",
"zstd",
@@ -11097,10 +11100,10 @@
[[package]]
name = "sp-mmr-primitives"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"serde",
"sp-api",
"sp-core",
@@ -11112,9 +11115,9 @@
[[package]]
name = "sp-npos-elections"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"serde",
"sp-arithmetic",
@@ -11126,7 +11129,7 @@
[[package]]
name = "sp-offchain"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"sp-api",
"sp-core",
@@ -11136,7 +11139,7 @@
[[package]]
name = "sp-panic-handler"
version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"backtrace",
"lazy_static",
@@ -11146,7 +11149,7 @@
[[package]]
name = "sp-rpc"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"rustc-hash",
"serde",
@@ -11156,13 +11159,13 @@
[[package]]
name = "sp-runtime"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"either",
"hash256-std-hasher",
"impl-trait-for-tuples",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-util-mem",
"paste",
"rand 0.7.3",
@@ -11178,10 +11181,10 @@
[[package]]
name = "sp-runtime-interface"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"impl-trait-for-tuples",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"primitive-types",
"sp-externalities",
"sp-runtime-interface-proc-macro",
@@ -11195,7 +11198,7 @@
[[package]]
name = "sp-runtime-interface-proc-macro"
version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"Inflector",
"proc-macro-crate",
@@ -11207,10 +11210,10 @@
[[package]]
name = "sp-sandbox"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-core",
"sp-io",
"sp-std",
@@ -11221,7 +11224,7 @@
[[package]]
name = "sp-serializer"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"serde",
"serde_json",
@@ -11230,9 +11233,9 @@
[[package]]
name = "sp-session"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-api",
"sp-core",
@@ -11244,9 +11247,9 @@
[[package]]
name = "sp-staking"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-runtime",
"sp-std",
@@ -11255,12 +11258,12 @@
[[package]]
name = "sp-state-machine"
version = "0.12.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"hash-db",
"log",
"num-traits",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.12.1",
"rand 0.7.3",
"smallvec",
@@ -11277,15 +11280,15 @@
[[package]]
name = "sp-std"
version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
[[package]]
name = "sp-storage"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"impl-serde",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"ref-cast",
"serde",
"sp-debug-derive",
@@ -11295,7 +11298,7 @@
[[package]]
name = "sp-tasks"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"log",
"sp-core",
@@ -11308,12 +11311,12 @@
[[package]]
name = "sp-timestamp"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures-timer",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api",
"sp-inherents",
"sp-runtime",
@@ -11324,9 +11327,9 @@
[[package]]
name = "sp-tracing"
version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-std",
"tracing",
"tracing-core",
@@ -11336,7 +11339,7 @@
[[package]]
name = "sp-transaction-pool"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"sp-api",
"sp-runtime",
@@ -11345,11 +11348,11 @@
[[package]]
name = "sp-transaction-storage-proof"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-inherents",
@@ -11361,11 +11364,11 @@
[[package]]
name = "sp-trie"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"hash-db",
"memory-db",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-std",
@@ -11377,10 +11380,10 @@
[[package]]
name = "sp-version"
version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"impl-serde",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parity-wasm 0.42.2",
"scale-info",
"serde",
@@ -11394,9 +11397,9 @@
[[package]]
name = "sp-version-proc-macro"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"proc-macro2",
"quote",
"syn",
@@ -11405,11 +11408,11 @@
[[package]]
name = "sp-wasm-interface"
version = "6.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"impl-trait-for-tuples",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-std",
"wasmi",
"wasmtime",
@@ -11511,9 +11514,9 @@
[[package]]
name = "strum"
-version = "0.24.0"
+version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e96acfc1b70604b8b2f1ffa4c57e59176c7dbb05d556c71ecd2f5498a1dee7f8"
+checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
dependencies = [
"strum_macros 0.24.0",
]
@@ -11560,7 +11563,7 @@
[[package]]
name = "substrate-build-script-utils"
version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"platforms",
]
@@ -11568,13 +11571,13 @@
[[package]]
name = "substrate-frame-rpc-system"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"frame-system-rpc-runtime-api",
"futures 0.3.21",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-rpc-api",
"sc-transaction-pool-api",
@@ -11589,7 +11592,7 @@
[[package]]
name = "substrate-prometheus-endpoint"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures-util",
"hyper",
@@ -11602,11 +11605,11 @@
[[package]]
name = "substrate-state-trie-migration-rpc"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-rpc-api",
"scale-info",
@@ -11623,12 +11626,12 @@
[[package]]
name = "substrate-test-client"
version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"async-trait",
"futures 0.3.21",
"hex",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sc-client-api",
"sc-client-db",
"sc-consensus",
@@ -11649,7 +11652,7 @@
[[package]]
name = "substrate-test-utils"
version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"futures 0.3.21",
"substrate-test-utils-derive",
@@ -11659,7 +11662,7 @@
[[package]]
name = "substrate-test-utils-derive"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -11670,7 +11673,7 @@
[[package]]
name = "substrate-wasm-builder"
version = "5.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"ansi_term",
"build-helper",
@@ -11691,9 +11694,9 @@
[[package]]
name = "syn"
-version = "1.0.96"
+version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf"
+checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
dependencies = [
"proc-macro2",
"quote",
@@ -11799,7 +11802,7 @@
"pallet-timestamp",
"pallet-transaction-payment",
"pallet-unique",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"sp-core",
"sp-io",
@@ -12028,9 +12031,9 @@
[[package]]
name = "tower-service"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
[[package]]
name = "tracing"
@@ -12107,7 +12110,7 @@
"ahash",
"lazy_static",
"log",
- "lru 0.7.6",
+ "lru 0.7.7",
"tracing-core",
]
@@ -12228,12 +12231,12 @@
[[package]]
name = "try-runtime-cli"
version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"
+source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
dependencies = [
"clap",
"jsonrpsee",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"remote-externalities",
"sc-chain-spec",
"sc-cli",
@@ -12282,7 +12285,7 @@
"jsonrpsee",
"pallet-common",
"pallet-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rmrk-rpc",
"sp-api",
"sp-blockchain",
@@ -12329,9 +12332,9 @@
[[package]]
name = "unicode-ident"
-version = "1.0.0"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
+checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
[[package]]
name = "unicode-normalization"
@@ -12362,7 +12365,7 @@
[[package]]
name = "unique-node"
-version = "0.9.22"
+version = "0.9.23"
dependencies = [
"clap",
"cumulus-client-cli",
@@ -12392,7 +12395,7 @@
"pallet-ethereum",
"pallet-transaction-payment-rpc",
"pallet-transaction-payment-rpc-runtime-api",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"parking_lot 0.11.2",
"polkadot-cli",
"polkadot-parachain",
@@ -12499,7 +12502,7 @@
[[package]]
name = "unique-runtime"
-version = "0.9.22"
+version = "0.9.23"
dependencies = [
"cumulus-pallet-aura-ext",
"cumulus-pallet-dmp-queue",
@@ -12548,10 +12551,10 @@
"pallet-transaction-payment-rpc-runtime-api",
"pallet-treasury",
"pallet-unique",
- "pallet-unq-scheduler",
+ "pallet-unique-scheduler",
"pallet-xcm",
"parachain-info",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"rmrk-rpc",
"scale-info",
@@ -12581,7 +12584,7 @@
[[package]]
name = "unique-runtime-common"
-version = "0.9.22"
+version = "0.9.23"
dependencies = [
"evm-coder",
"fp-rpc",
@@ -12593,7 +12596,8 @@
"pallet-nonfungible",
"pallet-refungible",
"pallet-unique",
- "parity-scale-codec 3.1.2",
+ "pallet-unique-scheduler",
+ "parity-scale-codec 3.1.5",
"rmrk-rpc",
"scale-info",
"sp-consensus-aura",
@@ -12640,7 +12644,7 @@
"frame-support",
"frame-system",
"pallet-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"rmrk-traits",
"scale-info",
"serde",
@@ -12656,7 +12660,7 @@
dependencies = [
"pallet-common",
"pallet-evm",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-api",
"sp-core",
"sp-runtime",
@@ -12765,9 +12769,9 @@
[[package]]
name = "wasm-bindgen"
-version = "0.2.80"
+version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"
+checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"
dependencies = [
"cfg-if 1.0.0",
"wasm-bindgen-macro",
@@ -12775,9 +12779,9 @@
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.80"
+version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"
+checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"
dependencies = [
"bumpalo",
"lazy_static",
@@ -12790,9 +12794,9 @@
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.30"
+version = "0.4.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2"
+checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f"
dependencies = [
"cfg-if 1.0.0",
"js-sys",
@@ -12802,9 +12806,9 @@
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.80"
+version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
+checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -12812,9 +12816,9 @@
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.80"
+version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
+checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"
dependencies = [
"proc-macro2",
"quote",
@@ -12825,9 +12829,9 @@
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.80"
+version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
+checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"
[[package]]
name = "wasm-gc-api"
@@ -13065,9 +13069,9 @@
[[package]]
name = "web-sys"
-version = "0.3.57"
+version = "0.3.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"
+checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -13157,7 +13161,7 @@
"pallet-vesting",
"pallet-xcm",
"pallet-xcm-benchmarks",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"polkadot-primitives",
"polkadot-runtime-common",
@@ -13252,15 +13256,15 @@
[[package]]
name = "windows"
-version = "0.29.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aac7fef12f4b59cd0a29339406cc9203ab44e440ddff6b3f5a41455349fa9cf3"
+checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f"
dependencies = [
- "windows_aarch64_msvc 0.29.0",
- "windows_i686_gnu 0.29.0",
- "windows_i686_msvc 0.29.0",
- "windows_x86_64_gnu 0.29.0",
- "windows_x86_64_msvc 0.29.0",
+ "windows_aarch64_msvc 0.34.0",
+ "windows_i686_gnu 0.34.0",
+ "windows_i686_msvc 0.34.0",
+ "windows_x86_64_gnu 0.34.0",
+ "windows_x86_64_msvc 0.34.0",
]
[[package]]
@@ -13278,9 +13282,9 @@
[[package]]
name = "windows_aarch64_msvc"
-version = "0.29.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3d027175d00b01e0cbeb97d6ab6ebe03b12330a35786cbaca5252b1c4bf5d9b"
+checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d"
[[package]]
name = "windows_aarch64_msvc"
@@ -13290,9 +13294,9 @@
[[package]]
name = "windows_i686_gnu"
-version = "0.29.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8793f59f7b8e8b01eda1a652b2697d87b93097198ae85f823b969ca5b89bba58"
+checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed"
[[package]]
name = "windows_i686_gnu"
@@ -13302,9 +13306,9 @@
[[package]]
name = "windows_i686_msvc"
-version = "0.29.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8602f6c418b67024be2996c512f5f995de3ba417f4c75af68401ab8756796ae4"
+checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956"
[[package]]
name = "windows_i686_msvc"
@@ -13314,9 +13318,9 @@
[[package]]
name = "windows_x86_64_gnu"
-version = "0.29.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3d615f419543e0bd7d2b3323af0d86ff19cbc4f816e6453f36a2c2ce889c354"
+checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4"
[[package]]
name = "windows_x86_64_gnu"
@@ -13326,9 +13330,9 @@
[[package]]
name = "windows_x86_64_msvc"
-version = "0.29.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11d95421d9ed3672c280884da53201a5c46b7b2765ca6faf34b0d71cf34a3561"
+checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9"
[[package]]
name = "windows_x86_64_msvc"
@@ -13379,7 +13383,7 @@
"derivative",
"impl-trait-for-tuples",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"scale-info",
"xcm-procedural",
]
@@ -13393,7 +13397,7 @@
"frame-system",
"log",
"pallet-transaction-payment",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"polkadot-parachain",
"scale-info",
"sp-arithmetic",
@@ -13413,7 +13417,7 @@
"frame-support",
"impl-trait-for-tuples",
"log",
- "parity-scale-codec 3.1.2",
+ "parity-scale-codec 3.1.5",
"sp-arithmetic",
"sp-core",
"sp-io",
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -59,11 +59,11 @@
.PHONY: _bench
_bench:
- cargo run --release --features runtime-benchmarks,unique-runtime -- \
- benchmark pallet --pallet pallet-$(PALLET) \
+ cargo run --release --features runtime-benchmarks,$(RUNTIME) -- \
+ benchmark pallet --pallet pallet-$(if $(PALLET),$(PALLET),$(error Must set PALLET)) \
--wasm-execution compiled --extrinsic '*' \
- --template .maintain/frame-weight-template.hbs --steps=50 --repeat=200 --heap-pages=4096 \
- --output=./pallets/$(PALLET)/src/weights.rs
+ --template .maintain/frame-weight-template.hbs --steps=50 --repeat=80 --heap-pages=4096 \
+ --output=./pallets/$(if $(PALLET_DIR),$(PALLET_DIR),$(PALLET))/src/weights.rs
.PHONY: bench-evm-migration
bench-evm-migration:
@@ -93,9 +93,17 @@
bench-structure:
make _bench PALLET=structure
+.PHONY: bench-scheduler
+bench-scheduler:
+ make _bench PALLET=unique-scheduler PALLET_DIR=scheduler
+
.PHONY: bench-rmrk-core
bench-rmrk-core:
make _bench PALLET=proxy-rmrk-core
+.PHONY: bench-rmrk-equip
+bench-rmrk-equip:
+ make _bench PALLET=proxy-rmrk-equip
+
.PHONY: bench
-bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-rmrk-core
+bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -291,7 +291,7 @@
license = 'GPLv3'
name = 'unique-node'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.22'
+version = '0.9.23'
[[bin]]
name = 'unique-collator'
@@ -323,7 +323,9 @@
[features]
default = []
runtime-benchmarks = [
- 'unique-runtime/runtime-benchmarks',
+ 'unique-runtime?/runtime-benchmarks',
+ 'quartz-runtime?/runtime-benchmarks',
+ 'opal-runtime/runtime-benchmarks',
'polkadot-service/runtime-benchmarks',
]
try-runtime = []
node/cli/src/chain_spec.rsdiffbeforeafterboth--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -26,13 +26,13 @@
use unique_runtime_common::types::*;
#[cfg(feature = "unique-runtime")]
-use unique_runtime as default_runtime;
+pub use unique_runtime as default_runtime;
#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]
-use quartz_runtime as default_runtime;
+pub use quartz_runtime as default_runtime;
#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
-use opal_runtime as default_runtime;
+pub use opal_runtime as default_runtime;
/// The `ChainSpec` parameterized for the unique runtime.
#[cfg(feature = "unique-runtime")]
node/cli/src/command.rsdiffbeforeafterboth--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -33,7 +33,9 @@
// limitations under the License.
use crate::{
- chain_spec::{self, RuntimeId, RuntimeIdentification, ServiceId, ServiceIdentification},
+ chain_spec::{
+ self, RuntimeId, RuntimeIdentification, ServiceId, ServiceIdentification, default_runtime,
+ },
cli::{Cli, RelayChainCli, Subcommand},
service::{new_partial, start_node, start_dev_node},
};
@@ -44,7 +46,7 @@
#[cfg(feature = "quartz-runtime")]
use crate::service::QuartzRuntimeExecutor;
-use crate::service::OpalRuntimeExecutor;
+use crate::service::{OpalRuntimeExecutor, DefaultRuntimeExecutor};
use codec::Encode;
use cumulus_primitives_core::ParaId;
@@ -371,7 +373,6 @@
Ok(())
}
- #[cfg(feature = "unique-runtime")]
Some(Subcommand::Benchmark(cmd)) => {
use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};
let runner = cli.create_runner(cmd)?;
@@ -379,7 +380,7 @@
match cmd {
BenchmarkCmd::Pallet(cmd) => {
if cfg!(feature = "runtime-benchmarks") {
- runner.sync_run(|config| cmd.run::<Block, UniqueRuntimeExecutor>(config))
+ runner.sync_run(|config| cmd.run::<Block, DefaultRuntimeExecutor>(config))
} else {
Err("Benchmarking wasn't enabled when building the node. \
You can enable it with `--features runtime-benchmarks`."
@@ -388,16 +389,16 @@
}
BenchmarkCmd::Block(cmd) => runner.sync_run(|config| {
let partials = new_partial::<
- unique_runtime::RuntimeApi,
- UniqueRuntimeExecutor,
+ default_runtime::RuntimeApi,
+ DefaultRuntimeExecutor,
_,
>(&config, crate::service::parachain_build_import_queue)?;
cmd.run(partials.client)
}),
BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| {
let partials = new_partial::<
- unique_runtime::RuntimeApi,
- UniqueRuntimeExecutor,
+ default_runtime::RuntimeApi,
+ DefaultRuntimeExecutor,
_,
>(&config, crate::service::parachain_build_import_queue)?;
let db = partials.backend.expose_db();
@@ -410,10 +411,6 @@
}
BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()),
}
- }
- #[cfg(not(feature = "unique-runtime"))]
- Some(Subcommand::Benchmark(..)) => {
- Err("benchmarking is only available with unique runtime enabled".into())
}
Some(Subcommand::TryRuntime(cmd)) => {
if cfg!(feature = "try-runtime") {
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -77,13 +77,21 @@
#[cfg(feature = "quartz-runtime")]
/// Quartz native executor instance.
-
pub struct QuartzRuntimeExecutor;
/// Opal native executor instance.
pub struct OpalRuntimeExecutor;
#[cfg(feature = "unique-runtime")]
+pub type DefaultRuntimeExecutor = UniqueRuntimeExecutor;
+
+#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]
+pub type DefaultRuntimeExecutor = QuartzRuntimeExecutor;
+
+#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
+pub type DefaultRuntimeExecutor = OpalRuntimeExecutor;
+
+#[cfg(feature = "unique-runtime")]
impl NativeExecutionDispatch for UniqueRuntimeExecutor {
type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions;
node/rpc/Cargo.tomldiffbeforeafterboth--- a/node/rpc/Cargo.toml
+++ b/node/rpc/Cargo.toml
@@ -63,3 +63,4 @@
[features]
default = []
std = []
+unique-runtime = []
node/rpc/src/lib.rsdiffbeforeafterboth--- a/node/rpc/src/lib.rs
+++ b/node/rpc/src/lib.rs
@@ -169,7 +169,11 @@
Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,
EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,
};
- use uc_rpc::{UniqueApiServer, Unique, RmrkApiServer, Rmrk};
+ use uc_rpc::{UniqueApiServer, Unique};
+
+ #[cfg(not(feature = "unique-runtime"))]
+ use uc_rpc::{RmrkApiServer, Rmrk};
+
// use pallet_contracts_rpc::{Contracts, ContractsApi};
use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};
use substrate_frame_rpc_system::{System, SystemApiServer};
@@ -223,6 +227,8 @@
)?;
io.merge(Unique::new(client.clone()).into_rpc())?;
+
+ #[cfg(not(feature = "unique-runtime"))]
io.merge(Rmrk::new(client.clone()).into_rpc())?;
if let Some(filter_pool) = filter_pool {
pallets/common/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/common/src/benchmarking.rs
+++ b/pallets/common/src/benchmarking.rs
@@ -96,10 +96,11 @@
permissions: Some(CollectionPermissions {
nesting: Some(NestingPermissions {
token_owner: false,
- admin: false,
+ collection_admin: false,
restricted: None,
permissive: true,
}),
+ mint_mode: Some(true),
..Default::default()
}),
..Default::default()
pallets/common/src/erc.rsdiffbeforeafterboth--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -22,7 +22,9 @@
pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};
use pallet_evm_coder_substrate::dispatch_to_evm;
use sp_std::vec::Vec;
-use up_data_structs::{Property, SponsoringRateLimit, OwnerRestrictedSet, AccessMode};
+use up_data_structs::{
+ Property, SponsoringRateLimit, OwnerRestrictedSet, AccessMode, CollectionPermissions,
+};
use alloc::format;
use crate::{Pallet, CollectionHandle, Config, CollectionProperties};
@@ -47,10 +49,15 @@
#[solidity_interface(name = "Collection")]
impl<T: Config> CollectionHandle<T>
-// where
-// T::AccountId: From<H256>
+where
+ T::AccountId: From<[u8; 32]>,
{
- fn set_collection_property(&mut self, caller: caller, key: string, value: bytes) -> Result<()> {
+ fn set_collection_property(
+ &mut self,
+ caller: caller,
+ key: string,
+ value: bytes,
+ ) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
let key = <Vec<u8>>::from(key)
.try_into()
@@ -83,7 +90,7 @@
}
fn set_collection_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {
- check_is_owner(caller, self)?;
+ check_is_owner_or_admin(caller, self)?;
let sponsor = T::CrossAccountId::from_eth(sponsor);
self.set_sponsor(sponsor.as_sub().clone())
@@ -97,14 +104,14 @@
.confirm_sponsorship(caller.as_sub())
.map_err(dispatch_to_evm::<T>)?
{
- return Err(Error::Revert("Caller is not set as sponsor".into()));
+ return Err("caller is not set as sponsor".into());
}
save(self)
}
#[solidity(rename_selector = "setCollectionLimit")]
fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {
- check_is_owner(caller, self)?;
+ check_is_owner_or_admin(caller, self)?;
let mut limits = self.limits.clone();
match limit.as_str() {
@@ -128,7 +135,7 @@
}
_ => {
return Err(Error::Revert(format!(
- "Unknown integer limit \"{}\"",
+ "unknown integer limit \"{}\"",
limit
)))
}
@@ -140,7 +147,7 @@
#[solidity(rename_selector = "setCollectionLimit")]
fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {
- check_is_owner(caller, self)?;
+ check_is_owner_or_admin(caller, self)?;
let mut limits = self.limits.clone();
match limit.as_str() {
@@ -155,7 +162,7 @@
}
_ => {
return Err(Error::Revert(format!(
- "Unknown boolean limit \"{}\"",
+ "unknown boolean limit \"{}\"",
limit
)))
}
@@ -169,52 +176,48 @@
Ok(crate::eth::collection_id_to_address(self.id))
}
- // fn add_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {
- // let mut new_admin_h256 = H256::default();
- // new_admin.to_little_endian(&mut new_admin_h256.0);
- // let account_id = T::AccountId::from(new_admin_h256);
- // let caller = T::CrossAccountId::from_eth(caller);
- // let new_admin = T::CrossAccountId::from_sub(account_id);
- // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)
- // .map_err(dispatch_to_evm::<T>)?;
- // Ok(())
- // }
+ fn add_collection_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {
+ let caller = T::CrossAccountId::from_eth(caller);
+ let mut new_admin_arr: [u8; 32] = Default::default();
+ new_admin.to_big_endian(&mut new_admin_arr);
+ let account_id = T::AccountId::from(new_admin_arr);
+ let new_admin = T::CrossAccountId::from_sub(account_id);
+ <Pallet<T>>::toggle_admin(self, &caller, &new_admin, true).map_err(dispatch_to_evm::<T>)?;
+ Ok(())
+ }
- // fn remove_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {
- // let mut new_admin_h256 = H256::default();
- // new_admin.to_little_endian(&mut new_admin_h256.0);
- // let account_id = T::AccountId::from(new_admin_h256);
- // let caller = T::CrossAccountId::from_eth(caller);
- // let new_admin = T::CrossAccountId::from_sub(account_id);
- // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, false)
- // .map_err(dispatch_to_evm::<T>)?;
- // Ok(())
- // }
+ fn remove_collection_admin_substrate(
+ &self,
+ caller: caller,
+ new_admin: uint256,
+ ) -> Result<void> {
+ let caller = T::CrossAccountId::from_eth(caller);
+ let mut new_admin_arr: [u8; 32] = Default::default();
+ new_admin.to_big_endian(&mut new_admin_arr);
+ let account_id = T::AccountId::from(new_admin_arr);
+ let new_admin = T::CrossAccountId::from_sub(account_id);
+ <Pallet<T>>::toggle_admin(self, &caller, &new_admin, false)
+ .map_err(dispatch_to_evm::<T>)?;
+ Ok(())
+ }
fn add_collection_admin(&self, caller: caller, new_admin: address) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
- self.check_is_owner_or_admin(&caller)
- .map_err(dispatch_to_evm::<T>)?;
let new_admin = T::CrossAccountId::from_eth(new_admin);
- <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)
- .map_err(dispatch_to_evm::<T>)?;
+ <Pallet<T>>::toggle_admin(self, &caller, &new_admin, true).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
- self.check_is_owner_or_admin(&caller)
- .map_err(dispatch_to_evm::<T>)?;
let admin = T::CrossAccountId::from_eth(admin);
- <Pallet<T>>::toggle_admin(&self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;
+ <Pallet<T>>::toggle_admin(self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
#[solidity(rename_selector = "setCollectionNesting")]
fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {
- let caller = T::CrossAccountId::from_eth(caller);
- self.check_is_owner_or_admin(&caller)
- .map_err(dispatch_to_evm::<T>)?;
+ check_is_owner_or_admin(caller, self)?;
let mut permissions = self.collection.permissions.clone();
let mut nesting = permissions.nesting().clone();
@@ -240,11 +243,9 @@
collections: Vec<address>,
) -> Result<void> {
if collections.is_empty() {
- return Err("No addresses provided".into());
+ return Err("no addresses provided".into());
}
- let caller = T::CrossAccountId::from_eth(caller);
- self.check_is_owner_or_admin(&caller)
- .map_err(dispatch_to_evm::<T>)?;
+ check_is_owner_or_admin(caller, self)?;
let mut permissions = self.collection.permissions.clone();
match enable {
@@ -280,27 +281,34 @@
}
fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result<void> {
- let caller = T::CrossAccountId::from_eth(caller);
- self.check_is_owner_or_admin(&caller)
- .map_err(dispatch_to_evm::<T>)?;
- self.collection.permissions.access = Some(match mode {
- 0 => AccessMode::Normal,
- 1 => AccessMode::AllowList,
- _ => return Err("Not supported access mode".into()),
- });
- save(self)?;
- Ok(())
+ check_is_owner_or_admin(caller, self)?;
+ let permissions = CollectionPermissions {
+ access: Some(match mode {
+ 0 => AccessMode::Normal,
+ 1 => AccessMode::AllowList,
+ _ => return Err("not supported access mode".into()),
+ }),
+ ..Default::default()
+ };
+ self.collection.permissions = <Pallet<T>>::clamp_permissions(
+ self.collection.mode.clone(),
+ &self.collection.permissions,
+ permissions,
+ )
+ .map_err(dispatch_to_evm::<T>)?;
+
+ save(self)
}
fn add_to_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {
- let caller = check_is_owner_or_admin(caller, self)?;
+ let caller = T::CrossAccountId::from_eth(caller);
let user = T::CrossAccountId::from_eth(user);
<Pallet<T>>::toggle_allowlist(self, &caller, &user, true).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
fn remove_from_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {
- let caller = check_is_owner_or_admin(caller, self)?;
+ let caller = T::CrossAccountId::from_eth(caller);
let user = T::CrossAccountId::from_eth(user);
<Pallet<T>>::toggle_allowlist(self, &caller, &user, false).map_err(dispatch_to_evm::<T>)?;
Ok(())
@@ -308,18 +316,19 @@
fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {
check_is_owner_or_admin(caller, self)?;
- self.collection.permissions.mint_mode = Some(mode);
- save(self)?;
- Ok(())
- }
-}
+ let permissions = CollectionPermissions {
+ mint_mode: Some(mode),
+ ..Default::default()
+ };
+ self.collection.permissions = <Pallet<T>>::clamp_permissions(
+ self.collection.mode.clone(),
+ &self.collection.permissions,
+ permissions,
+ )
+ .map_err(dispatch_to_evm::<T>)?;
-fn check_is_owner<T: Config>(caller: caller, collection: &CollectionHandle<T>) -> Result<void> {
- let caller = T::CrossAccountId::from_eth(caller);
- collection
- .check_is_owner(&caller)
- .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;
- Ok(())
+ save(self)
+ }
}
fn check_is_owner_or_admin<T: Config>(
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -74,7 +74,7 @@
RmrkPropertyInfo,
RmrkBaseInfo,
RmrkPartType,
- RmrkTheme,
+ RmrkBoundedTheme,
RmrkNftChild,
CollectionPermissions,
SchemaVersion,
@@ -148,7 +148,7 @@
.saturating_mul(writes),
))
}
- pub fn save(self) -> Result<(), DispatchError> {
+ pub fn save(self) -> DispatchResult {
<CollectionById<T>>::insert(self.id, self.collection);
Ok(())
}
@@ -543,7 +543,7 @@
RmrkPropertyInfo,
RmrkBaseInfo<T::AccountId>,
RmrkPartType,
- RmrkTheme,
+ RmrkBoundedTheme,
RmrkNftChild,
)>,
),
@@ -1019,7 +1019,7 @@
}
#[transactional]
- pub fn set_property_permissions(
+ pub fn set_token_property_permissions(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
property_permissions: Vec<PropertyKeyPermission>,
@@ -1164,6 +1164,7 @@
old_limit: &CollectionLimits,
mut new_limit: CollectionLimits,
) -> Result<CollectionLimits, DispatchError> {
+ let limits = old_limit;
limit_default!(old_limit, new_limit,
account_token_ownership_limit => ensure!(
new_limit <= MAX_TOKEN_OWNERSHIP,
@@ -1190,6 +1191,7 @@
),
sponsor_approve_timeout => {},
owner_can_transfer => ensure!(
+ !limits.owner_can_transfer_instaled() ||
old_limit || !new_limit,
<Error<T>>::OwnerPermissionsCantBeReverted,
),
@@ -1210,11 +1212,14 @@
limit_default_clone!(old_limit, new_limit,
access => {},
mint_mode => {},
- nesting => ensure!(
- // Permissive is only allowed for tests and internal usage of chain for now
- old_limit.permissive || !new_limit.permissive,
- <Error<T>>::NoPermission,
- ),
+ nesting => {
+ #[cfg(not(feature = "runtime-benchmarks"))]
+ ensure!(
+ // Permissive is only allowed for tests and internal usage of chain for now
+ old_limit.permissive || !new_limit.permissive,
+ <Error<T>>::NoPermission,
+ )
+ },
);
Ok(new_limit)
}
@@ -1237,7 +1242,7 @@
fn delete_collection_properties(amount: u32) -> Weight;
fn set_token_properties(amount: u32) -> Weight;
fn delete_token_properties(amount: u32) -> Weight;
- fn set_property_permissions(amount: u32) -> Weight;
+ fn set_token_property_permissions(amount: u32) -> Weight;
fn transfer() -> Weight;
fn approve() -> Weight;
fn transfer_from() -> Weight;
@@ -1316,7 +1321,7 @@
token_id: TokenId,
property_keys: Vec<PropertyKey>,
) -> DispatchResultWithPostInfo;
- fn set_property_permissions(
+ fn set_token_property_permissions(
&self,
sender: &T::CrossAccountId,
property_permissions: Vec<PropertyKeyPermission>,
pallets/evm-migration/src/weights.rsdiffbeforeafterboth--- a/pallets/evm-migration/src/weights.rs
+++ b/pallets/evm-migration/src/weights.rs
@@ -3,12 +3,13 @@
//! Autogenerated weights for pallet_evm_migration
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
// target/release/unique-collator
// benchmark
+// pallet
// --pallet
// pallet-evm-migration
// --wasm-execution
@@ -44,23 +45,23 @@
// Storage: System Account (r:1 w:0)
// Storage: EVM AccountCodes (r:1 w:0)
fn begin() -> Weight {
- (6_441_000 as Weight)
+ (6_914_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: EvmMigration MigrationPending (r:1 w:0)
// Storage: EVM AccountStorages (r:0 w:1)
fn set_data(b: u32, ) -> Weight {
- (3_424_000 as Weight)
+ (2_875_000 as Weight)
// Standard Error: 0
- .saturating_add((973_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((794_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
}
// Storage: EvmMigration MigrationPending (r:1 w:1)
// Storage: EVM AccountCodes (r:0 w:1)
fn finish(b: u32, ) -> Weight {
- (4_702_000 as Weight)
+ (6_320_000 as Weight)
// Standard Error: 0
.saturating_add((2_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
@@ -74,23 +75,23 @@
// Storage: System Account (r:1 w:0)
// Storage: EVM AccountCodes (r:1 w:0)
fn begin() -> Weight {
- (6_441_000 as Weight)
+ (6_914_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: EvmMigration MigrationPending (r:1 w:0)
// Storage: EVM AccountStorages (r:0 w:1)
fn set_data(b: u32, ) -> Weight {
- (3_424_000 as Weight)
+ (2_875_000 as Weight)
// Standard Error: 0
- .saturating_add((973_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((794_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
}
// Storage: EvmMigration MigrationPending (r:1 w:1)
// Storage: EVM AccountCodes (r:0 w:1)
fn finish(b: u32, ) -> Weight {
- (4_702_000 as Weight)
+ (6_320_000 as Weight)
// Standard Error: 0
.saturating_add((2_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -72,7 +72,7 @@
0
}
- fn set_property_permissions(_amount: u32) -> Weight {
+ fn set_token_property_permissions(_amount: u32) -> Weight {
// Error
0
}
@@ -302,7 +302,7 @@
fail!(<Error<T>>::SettingPropertiesNotAllowed)
}
- fn set_property_permissions(
+ fn set_token_property_permissions(
&self,
_sender: &T::CrossAccountId,
_property_permissions: Vec<PropertyKeyPermission>,
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -152,12 +152,15 @@
via("CollectionHandle<T>", common_mut, Collection)
)
)]
-impl<T: Config> FungibleHandle<T> {}
+impl<T: Config> FungibleHandle<T> where T::AccountId: From<[u8; 32]> {}
generate_stubgen!(gen_impl, UniqueFungibleCall<()>, true);
generate_stubgen!(gen_iface, UniqueFungibleCall<()>, false);
-impl<T: Config> CommonEvmHandler for FungibleHandle<T> {
+impl<T: Config> CommonEvmHandler for FungibleHandle<T>
+where
+ T::AccountId: From<[u8; 32]>,
+{
const CODE: &'static [u8] = include_bytes!("./stubs/UniqueFungible.raw");
fn call(self, handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {
pallets/fungible/src/weights.rsdiffbeforeafterboth--- a/pallets/fungible/src/weights.rs
+++ b/pallets/fungible/src/weights.rs
@@ -3,12 +3,13 @@
//! Autogenerated weights for pallet_fungible
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
// target/release/unique-collator
// benchmark
+// pallet
// --pallet
// pallet-fungible
// --wasm-execution
@@ -18,7 +19,7 @@
// --template
// .maintain/frame-weight-template.hbs
// --steps=50
-// --repeat=200
+// --repeat=80
// --heap-pages=4096
// --output=./pallets/fungible/src/weights.rs
@@ -47,16 +48,16 @@
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:1 w:1)
fn create_item() -> Weight {
- (14_407_000 as Weight)
+ (17_828_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:4 w:4)
fn create_multiple_items_ex(b: u32, ) -> Weight {
- (13_030_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((3_779_000 as Weight).saturating_mul(b as Weight))
+ (17_574_000 as Weight)
+ // Standard Error: 3_000
+ .saturating_add((4_288_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
@@ -65,28 +66,27 @@
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:1 w:1)
fn burn_item() -> Weight {
- (15_565_000 as Weight)
+ (18_417_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
-
// Storage: Fungible Balance (r:2 w:2)
fn transfer() -> Weight {
- (17_713_000 as Weight)
+ (20_090_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
// Storage: Fungible Balance (r:1 w:0)
// Storage: Fungible Allowance (r:0 w:1)
fn approve() -> Weight {
- (14_834_000 as Weight)
+ (17_532_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Fungible Allowance (r:1 w:1)
// Storage: Fungible Balance (r:2 w:2)
fn transfer_from() -> Weight {
- (25_189_000 as Weight)
+ (29_869_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
}
@@ -94,7 +94,7 @@
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:1 w:1)
fn burn_from() -> Weight {
- (24_065_000 as Weight)
+ (27_835_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
}
@@ -105,16 +105,16 @@
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:1 w:1)
fn create_item() -> Weight {
- (14_407_000 as Weight)
+ (17_828_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:4 w:4)
fn create_multiple_items_ex(b: u32, ) -> Weight {
- (13_030_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((3_779_000 as Weight).saturating_mul(b as Weight))
+ (17_574_000 as Weight)
+ // Standard Error: 3_000
+ .saturating_add((4_288_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
@@ -123,28 +123,27 @@
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:1 w:1)
fn burn_item() -> Weight {
- (15_565_000 as Weight)
+ (18_417_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
-
// Storage: Fungible Balance (r:2 w:2)
fn transfer() -> Weight {
- (17_713_000 as Weight)
+ (20_090_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
// Storage: Fungible Balance (r:1 w:0)
// Storage: Fungible Allowance (r:0 w:1)
fn approve() -> Weight {
- (14_834_000 as Weight)
+ (17_532_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Fungible Allowance (r:1 w:1)
// Storage: Fungible Balance (r:2 w:2)
fn transfer_from() -> Weight {
- (25_189_000 as Weight)
+ (29_869_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
}
@@ -152,7 +151,7 @@
// Storage: Fungible TotalSupply (r:1 w:1)
// Storage: Fungible Balance (r:1 w:1)
fn burn_from() -> Weight {
- (24_065_000 as Weight)
+ (27_835_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
}
pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -147,7 +147,7 @@
<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;
}: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}
- set_property_permissions {
+ set_token_property_permissions {
let b in 0..MAX_PROPERTIES_PER_ITEM;
bench_init!{
owner: sub; collection: collection(owner);
@@ -161,7 +161,7 @@
token_owner: false,
},
}).collect::<Vec<_>>();
- }: {<Pallet<T>>::set_property_permissions(&collection, &owner, perms)?}
+ }: {<Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?}
set_token_properties {
let b in 0..MAX_PROPERTIES_PER_ITEM;
@@ -177,7 +177,7 @@
token_owner: true,
},
}).collect::<Vec<_>>();
- <Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;
+ <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;
let props = (0..b).map(|k| Property {
key: property_key(k as usize),
value: property_value(),
@@ -199,7 +199,7 @@
token_owner: true,
},
}).collect::<Vec<_>>();
- <Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;
+ <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;
let props = (0..b).map(|k| Property {
key: property_key(k as usize),
value: property_value(),
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -89,8 +89,8 @@
<SelfWeightOf<T>>::delete_token_properties(amount)
}
- fn set_property_permissions(amount: u32) -> Weight {
- <SelfWeightOf<T>>::set_property_permissions(amount)
+ fn set_token_property_permissions(amount: u32) -> Weight {
+ <SelfWeightOf<T>>::set_token_property_permissions(amount)
}
fn transfer() -> Weight {
@@ -242,16 +242,16 @@
)
}
- fn set_property_permissions(
+ fn set_token_property_permissions(
&self,
sender: &T::CrossAccountId,
property_permissions: Vec<PropertyKeyPermission>,
) -> DispatchResultWithPostInfo {
let weight =
- <CommonWeights<T>>::set_property_permissions(property_permissions.len() as u32);
+ <CommonWeights<T>>::set_token_property_permissions(property_permissions.len() as u32);
with_weight(
- <Pallet<T>>::set_property_permissions(self, sender, property_permissions),
+ <Pallet<T>>::set_token_property_permissions(self, sender, property_permissions),
weight,
)
}
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -583,13 +583,16 @@
TokenProperties,
)
)]
-impl<T: Config> NonfungibleHandle<T> {}
+impl<T: Config> NonfungibleHandle<T> where T::AccountId: From<[u8; 32]> {}
// Not a tests, but code generators
generate_stubgen!(gen_impl, UniqueNFTCall<()>, true);
generate_stubgen!(gen_iface, UniqueNFTCall<()>, false);
-impl<T: Config> CommonEvmHandler for NonfungibleHandle<T> {
+impl<T: Config> CommonEvmHandler for NonfungibleHandle<T>
+where
+ T::AccountId: From<[u8; 32]>,
+{
const CODE: &'static [u8] = include_bytes!("./stubs/UniqueNFT.raw");
fn call(self, handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -28,7 +28,7 @@
use up_data_structs::{
AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,
mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission, PropertyKey,
- PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild,
+ PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild, AuxPropertyValue,
};
use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
use pallet_common::{
@@ -124,6 +124,19 @@
OnEmpty = up_data_structs::TokenProperties,
>;
+ #[pallet::storage]
+ #[pallet::getter(fn token_aux_property)]
+ pub type TokenAuxProperties<T: Config> = StorageNMap<
+ Key = (
+ Key<Twox64Concat, CollectionId>,
+ Key<Twox64Concat, TokenId>,
+ Key<Twox64Concat, PropertyScope>,
+ Key<Twox64Concat, PropertyKey>,
+ ),
+ Value = AuxPropertyValue,
+ QueryKind = OptionQuery,
+ >;
+
/// Used to enumerate tokens owned by account
#[pallet::storage]
pub type Owned<T: Config> = StorageNMap<
@@ -294,6 +307,33 @@
Ok(())
}
+ pub fn try_mutate_token_aux_property<R, E>(
+ collection_id: CollectionId,
+ token_id: TokenId,
+ scope: PropertyScope,
+ key: PropertyKey,
+ f: impl FnOnce(&mut Option<AuxPropertyValue>) -> Result<R, E>,
+ ) -> Result<R, E> {
+ <TokenAuxProperties<T>>::try_mutate((collection_id, token_id, scope, key), f)
+ }
+
+ pub fn remove_token_aux_property(
+ collection_id: CollectionId,
+ token_id: TokenId,
+ scope: PropertyScope,
+ key: PropertyKey,
+ ) {
+ <TokenAuxProperties<T>>::remove((collection_id, token_id, scope, key));
+ }
+
+ pub fn iterate_token_aux_properties(
+ collection_id: CollectionId,
+ token_id: TokenId,
+ scope: PropertyScope,
+ ) -> impl Iterator<Item = (PropertyKey, AuxPropertyValue)> {
+ <TokenAuxProperties<T>>::iter_prefix((collection_id, token_id, scope))
+ }
+
pub fn current_token_id(collection_id: CollectionId) -> TokenId {
TokenId(<TokensMinted<T>>::get(collection_id))
}
@@ -375,6 +415,7 @@
<TokensBurnt<T>>::insert(collection.id, burnt);
<TokenData<T>>::remove((collection.id, token));
<TokenProperties<T>>::remove((collection.id, token));
+ <TokenAuxProperties<T>>::remove_prefix((collection.id, token), None);
let old_spender = <Allowance<T>>::take((collection.id, token));
if let Some(old_spender) = old_spender {
@@ -594,12 +635,12 @@
<PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)
}
- pub fn set_property_permissions(
+ pub fn set_token_property_permissions(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
property_permissions: Vec<PropertyKeyPermission>,
) -> DispatchResult {
- <PalletCommon<T>>::set_property_permissions(collection, sender, property_permissions)
+ <PalletCommon<T>>::set_token_property_permissions(collection, sender, property_permissions)
}
pub fn set_property_permission(
@@ -1008,7 +1049,7 @@
nesting_budget,
)? {
// Pass
- } else if nesting.admin && handle.is_owner_or_admin(&sender) {
+ } else if nesting.collection_admin && handle.is_owner_or_admin(&sender) {
// Pass
} else {
fail!(<CommonError<T>>::UserIsNotAllowedToNest);
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -297,7 +297,40 @@
}
}
-// Selector: 6aea9834
+// Selector: 780e9d63
+contract ERC721Enumerable is Dummy, ERC165 {
+ // Selector: tokenByIndex(uint256) 4f6ccce7
+ function tokenByIndex(uint256 index) public view returns (uint256) {
+ require(false, stub_error);
+ index;
+ dummy;
+ return 0;
+ }
+
+ // Not implemented
+ //
+ // Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+ function tokenOfOwnerByIndex(address owner, uint256 index)
+ public
+ view
+ returns (uint256)
+ {
+ require(false, stub_error);
+ owner;
+ index;
+ dummy;
+ return 0;
+ }
+
+ // Selector: totalSupply() 18160ddd
+ function totalSupply() public view returns (uint256) {
+ require(false, stub_error);
+ dummy;
+ return 0;
+ }
+}
+
+// Selector: 7d9262e6
contract Collection is Dummy, ERC165 {
// Selector: setCollectionProperty(string,bytes) 2f073f66
function setCollectionProperty(string memory key, bytes memory value)
@@ -366,6 +399,20 @@
return 0x0000000000000000000000000000000000000000;
}
+ // Selector: addCollectionAdminSubstrate(uint256) 5730062b
+ function addCollectionAdminSubstrate(uint256 newAdmin) public view {
+ require(false, stub_error);
+ newAdmin;
+ dummy;
+ }
+
+ // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+ function removeCollectionAdminSubstrate(uint256 newAdmin) public view {
+ require(false, stub_error);
+ newAdmin;
+ dummy;
+ }
+
// Selector: addCollectionAdmin(address) 92e462c7
function addCollectionAdmin(address newAdmin) public view {
require(false, stub_error);
@@ -423,39 +470,6 @@
require(false, stub_error);
mode;
dummy = 0;
- }
-}
-
-// Selector: 780e9d63
-contract ERC721Enumerable is Dummy, ERC165 {
- // Selector: tokenByIndex(uint256) 4f6ccce7
- function tokenByIndex(uint256 index) public view returns (uint256) {
- require(false, stub_error);
- index;
- dummy;
- return 0;
- }
-
- // Not implemented
- //
- // Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
- function tokenOfOwnerByIndex(address owner, uint256 index)
- public
- view
- returns (uint256)
- {
- require(false, stub_error);
- owner;
- index;
- dummy;
- return 0;
- }
-
- // Selector: totalSupply() 18160ddd
- function totalSupply() public view returns (uint256) {
- require(false, stub_error);
- dummy;
- return 0;
}
}
pallets/nonfungible/src/weights.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/weights.rs
+++ b/pallets/nonfungible/src/weights.rs
@@ -3,12 +3,13 @@
//! Autogenerated weights for pallet_nonfungible
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
// target/release/unique-collator
// benchmark
+// pallet
// --pallet
// pallet-nonfungible
// --wasm-execution
@@ -18,7 +19,7 @@
// --template
// .maintain/frame-weight-template.hbs
// --steps=50
-// --repeat=200
+// --repeat=80
// --heap-pages=4096
// --output=./pallets/nonfungible/src/weights.rs
@@ -42,9 +43,9 @@
fn approve() -> Weight;
fn transfer_from() -> Weight;
fn burn_from() -> Weight;
- fn set_property_permissions(b: u32) -> Weight;
- fn set_token_properties(b: u32) -> Weight;
- fn delete_token_properties(b: u32) -> Weight;
+ fn set_token_property_permissions(b: u32, ) -> Weight;
+ fn set_token_properties(b: u32, ) -> Weight;
+ fn delete_token_properties(b: u32, ) -> Weight;
}
/// Weights for pallet_nonfungible using the Substrate node and recommended hardware.
@@ -55,7 +56,7 @@
// Storage: Nonfungible TokenData (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (18_450_000 as Weight)
+ (24_135_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -64,9 +65,9 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (10_228_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((4_392_000 as Weight).saturating_mul(b as Weight))
+ (21_952_000 as Weight)
+ // Standard Error: 5_000
+ .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
.saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))
@@ -76,23 +77,25 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items_ex(b: u32, ) -> Weight {
- (6_543_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((7_175_000 as Weight).saturating_mul(b as Weight))
+ (10_432_000 as Weight)
+ // Standard Error: 6_000
+ .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
.saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))
}
// Storage: Nonfungible TokenData (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:1 w:0)
// Storage: Nonfungible TokensBurnt (r:1 w:1)
// Storage: Nonfungible AccountBalance (r:1 w:1)
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_item() -> Weight {
- (24_554_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(4 as Weight))
- .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ (29_798_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(5 as Weight))
+ .saturating_add(T::DbWeight::get().writes(5 as Weight))
}
// Storage: Nonfungible TokenChildren (r:1 w:0)
// Storage: Nonfungible TokenData (r:1 w:1)
@@ -102,7 +105,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_recursively_self_raw() -> Weight {
- (86_136_000 as Weight)
+ (37_955_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -116,11 +119,11 @@
// Storage: Common CollectionById (r:1 w:0)
fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 42_828_000
- .saturating_add((381_478_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(T::DbWeight::get().reads(6 as Weight))
+ // Standard Error: 1_349_000
+ .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(7 as Weight))
.saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
- .saturating_add(T::DbWeight::get().writes(5 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
.saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
}
// Storage: Nonfungible TokenData (r:1 w:1)
@@ -128,14 +131,14 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer() -> Weight {
- (28_339_000 as Weight)
+ (27_867_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
// Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible Allowance (r:1 w:1)
fn approve() -> Weight {
- (17_616_000 as Weight)
+ (18_824_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -144,25 +147,27 @@
// Storage: Nonfungible AccountBalance (r:2 w:2)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer_from() -> Weight {
- (32_196_000 as Weight)
+ (32_879_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
// Storage: Nonfungible Allowance (r:1 w:1)
// Storage: Nonfungible TokenData (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:1 w:0)
// Storage: Nonfungible TokensBurnt (r:1 w:1)
// Storage: Nonfungible AccountBalance (r:1 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_from() -> Weight {
- (27_580_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(4 as Weight))
- .saturating_add(T::DbWeight::get().writes(5 as Weight))
+ (37_061_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(5 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
}
// Storage: Common CollectionPropertyPermissions (r:1 w:1)
- fn set_property_permissions(b: u32, ) -> Weight {
+ fn set_token_property_permissions(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 3_432_000
- .saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 57_000
+ .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -171,8 +176,8 @@
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn set_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 158_583_000
- .saturating_add((4_707_700_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 2_278_000
+ .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -181,8 +186,8 @@
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn delete_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 169_018_000
- .saturating_add((4_783_967_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 2_234_000
+ .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -195,7 +200,7 @@
// Storage: Nonfungible TokenData (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (18_450_000 as Weight)
+ (24_135_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -204,9 +209,9 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (10_228_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((4_392_000 as Weight).saturating_mul(b as Weight))
+ (21_952_000 as Weight)
+ // Standard Error: 5_000
+ .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
.saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))
@@ -216,23 +221,25 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items_ex(b: u32, ) -> Weight {
- (6_543_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((7_175_000 as Weight).saturating_mul(b as Weight))
+ (10_432_000 as Weight)
+ // Standard Error: 6_000
+ .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
.saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))
}
// Storage: Nonfungible TokenData (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:1 w:0)
// Storage: Nonfungible TokensBurnt (r:1 w:1)
// Storage: Nonfungible AccountBalance (r:1 w:1)
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_item() -> Weight {
- (24_554_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(4 as Weight))
- .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ (29_798_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(5 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
// Storage: Nonfungible TokenChildren (r:1 w:0)
// Storage: Nonfungible TokenData (r:1 w:1)
@@ -242,7 +249,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_recursively_self_raw() -> Weight {
- (86_136_000 as Weight)
+ (37_955_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -256,11 +263,11 @@
// Storage: Common CollectionById (r:1 w:0)
fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 42_828_000
- .saturating_add((381_478_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(RocksDbWeight::get().reads(6 as Weight))
+ // Standard Error: 1_349_000
+ .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(7 as Weight))
.saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
- .saturating_add(RocksDbWeight::get().writes(5 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
.saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
}
// Storage: Nonfungible TokenData (r:1 w:1)
@@ -268,14 +275,14 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer() -> Weight {
- (28_339_000 as Weight)
+ (27_867_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
// Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible Allowance (r:1 w:1)
fn approve() -> Weight {
- (17_616_000 as Weight)
+ (18_824_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -284,25 +291,27 @@
// Storage: Nonfungible AccountBalance (r:2 w:2)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer_from() -> Weight {
- (32_196_000 as Weight)
+ (32_879_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
// Storage: Nonfungible Allowance (r:1 w:1)
// Storage: Nonfungible TokenData (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:1 w:0)
// Storage: Nonfungible TokensBurnt (r:1 w:1)
// Storage: Nonfungible AccountBalance (r:1 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_from() -> Weight {
- (27_580_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(4 as Weight))
- .saturating_add(RocksDbWeight::get().writes(5 as Weight))
+ (37_061_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(5 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
// Storage: Common CollectionPropertyPermissions (r:1 w:1)
- fn set_property_permissions(b: u32, ) -> Weight {
+ fn set_token_property_permissions(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 3_432_000
- .saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 57_000
+ .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -311,8 +320,8 @@
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn set_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 158_583_000
- .saturating_add((4_707_700_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 2_278_000
+ .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -321,8 +330,8 @@
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn delete_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 169_018_000
- .saturating_add((4_783_967_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 2_234_000
+ .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
pallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/benchmarking.rs
+++ b/pallets/proxy-rmrk-core/src/benchmarking.rs
@@ -6,21 +6,523 @@
traits::{Currency, Get},
BoundedVec,
};
+use sp_runtime::Permill;
+
+use up_data_structs::*;
-use crate::{Config, Pallet, Call};
+use super::*;
const SEED: u32 = 1;
fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {
+ vec![b'A'; S::get() as usize].try_into().expect("size == S")
+}
+
+fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {
vec![0; S::get() as usize].try_into().expect("size == S")
}
+fn create_basic_resource() -> RmrkBasicResource {
+ RmrkBasicResource {
+ src: Some(create_data()),
+ metadata: Some(create_data()),
+ license: Some(create_data()),
+ thumb: Some(create_data()),
+ }
+}
+
+fn create_composable_resource() -> RmrkComposableResource {
+ RmrkComposableResource {
+ parts: create_u32_array(),
+ base: 100,
+ src: Some(create_data()),
+ metadata: Some(create_data()),
+ license: Some(create_data()),
+ thumb: Some(create_data()),
+ }
+}
+
+fn create_slot_resource() -> RmrkSlotResource {
+ RmrkSlotResource {
+ base: 100,
+ slot: 200,
+ src: Some(create_data()),
+ metadata: Some(create_data()),
+ license: Some(create_data()),
+ thumb: Some(create_data()),
+ }
+}
+
+fn create_max_resource_types_array<S: Get<u32>>(num: usize) -> BoundedVec<RmrkResourceTypes, S> {
+ vec![RmrkResourceTypes::Composable(create_composable_resource()); num]
+ .try_into()
+ .expect("num <= S")
+}
+
+fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {
+ <T as pallet_common::Config>::Currency::deposit_creating(
+ owner,
+ T::CollectionCreationPrice::get(),
+ );
+
+ let metadata = create_data();
+ let max = None;
+ let symbol = create_data();
+
+ <Pallet<T>>::create_collection(
+ RawOrigin::Signed(owner.clone()).into(),
+ metadata,
+ max,
+ symbol,
+ )
+}
+
+fn create_nft<T: Config>(owner: &T::AccountId, collection_id: RmrkCollectionId) -> DispatchResult {
+ let royalty_recipient = Some(owner.clone());
+ let royalty_amount = Some(Permill::from_percent(25));
+ let metadata = create_data();
+ let transferable = true;
+
+ <Pallet<T>>::mint_nft(
+ RawOrigin::Signed(owner.clone()).into(),
+ None,
+ collection_id,
+ royalty_recipient,
+ royalty_amount,
+ metadata,
+ transferable,
+ None,
+ )
+}
+
+struct NftBuilder {
+ collection_id: RmrkCollectionId,
+ current_nft_id: RmrkNftId,
+}
+
+impl NftBuilder {
+ fn new(collection_id: RmrkCollectionId) -> Self {
+ Self {
+ collection_id,
+ current_nft_id: 0,
+ }
+ }
+
+ fn build<T: Config>(&mut self, owner: &T::AccountId) -> Result<RmrkNftId, DispatchError> {
+ create_nft::<T>(owner, self.collection_id)?;
+ self.current_nft_id += 1;
+
+ Ok(self.current_nft_id)
+ }
+
+ fn build_tower<T: Config>(
+ &mut self,
+ owner: &T::AccountId,
+ height: u32,
+ ) -> Result<(RmrkNftId, RmrkNftId), DispatchError> {
+ self.build::<T>(owner)?;
+
+ let root_nft_id = self.current_nft_id;
+ let mut prev_nft_id = root_nft_id;
+
+ for _ in 0..height {
+ self.build::<T>(owner)?;
+
+ let new_owner =
+ <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
+ self.collection_id,
+ prev_nft_id,
+ );
+
+ <Pallet<T>>::send(
+ RawOrigin::Signed(owner.clone()).into(),
+ self.collection_id,
+ self.current_nft_id,
+ new_owner,
+ )?;
+
+ prev_nft_id = self.current_nft_id;
+ }
+
+ let deepest_nft_id = self.current_nft_id;
+
+ Ok((root_nft_id, deepest_nft_id))
+ }
+
+ fn build_wide_tree<T: Config>(
+ &mut self,
+ owner: &T::AccountId,
+ width: u32,
+ ) -> Result<RmrkNftId, DispatchError> {
+ self.build::<T>(owner)?;
+
+ let root_nft_id = self.current_nft_id;
+
+ let root_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
+ self.collection_id,
+ root_nft_id,
+ );
+
+ for _ in 0..width {
+ self.build::<T>(owner)?;
+
+ <Pallet<T>>::send(
+ RawOrigin::Signed(owner.clone()).into(),
+ self.collection_id,
+ self.current_nft_id,
+ root_owner.clone(),
+ )?;
+ }
+
+ Ok(root_nft_id)
+ }
+}
+
benchmarks! {
create_collection {
let caller = account("caller", 0, SEED);
<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
let metadata = create_data();
- // TODO: Fix CollectionTokenPrefixLimitExceeded with create_data
- let symbol = vec![].try_into().expect("0 <= x");
- }: _(RawOrigin::Signed(caller), metadata, None, symbol)
+ let max = None;
+ let symbol = create_data();
+ }: _(RawOrigin::Signed(caller), metadata, max, symbol)
+
+ destroy_collection {
+ let caller = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+ }: _(RawOrigin::Signed(caller), collection_id)
+
+ change_collection_issuer {
+ let caller: T::AccountId = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let new_owner: T::AccountId = account("new_owner", 0, SEED);
+
+ let new_owner_source = T::Lookup::unlookup(new_owner);
+ }: _(RawOrigin::Signed(caller), collection_id, new_owner_source)
+
+ lock_collection {
+ let caller: T::AccountId = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+ }: _(RawOrigin::Signed(caller), collection_id)
+
+ mint_nft {
+ let b in 0..100;
+
+ let caller: T::AccountId = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+ let owner = caller.clone();
+
+ let royalty_recipient = Some(caller.clone());
+ let royalty_amount = Some(Permill::from_percent(25));
+ let metadata = create_data();
+ let transferable = true;
+ }: _(
+ RawOrigin::Signed(caller),
+ None,
+ collection_id,
+ royalty_recipient,
+ royalty_amount,
+ metadata,
+ transferable,
+ Some(create_max_resource_types_array(b as usize))
+ )
+
+ burn_nft {
+ let b in 0..200;
+
+ let caller: T::AccountId = account("caller", 0, SEED);
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let root_nft_id = nft_builder.build_wide_tree::<T>(&caller, b)?;
+ let max_burns = b + 1;
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ root_nft_id,
+ max_burns
+ )
+
+ send {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let src_nft_id = nft_builder.build::<T>(&caller)?;
+ let (_, target_nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ src_nft_id,
+ <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)
+ )
+
+ accept_nft {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let sender: T::AccountId = account("sender", 0, SEED);
+
+ create_max_collection::<T>(&sender)?;
+ let src_collection_id = 0;
+
+ create_max_collection::<T>(&caller)?;
+ let target_collection_id = 1;
+
+ let mut src_nft_builder = NftBuilder::new(src_collection_id);
+ let src_nft_id = src_nft_builder.build::<T>(&sender)?;
+
+ let mut target_nft_builder = NftBuilder::new(target_collection_id);
+ let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;
+ let (_, target_nft_id) = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+
+ let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
+ target_collection_id,
+ fake_target_nft_id
+ );
+
+ let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
+ target_collection_id,
+ target_nft_id
+ );
+
+ <Pallet<T>>::send(
+ RawOrigin::Signed(sender.clone()).into(),
+ src_collection_id,
+ src_nft_id,
+ new_owner,
+ )?;
+ }: _(
+ RawOrigin::Signed(caller),
+ src_collection_id,
+ src_nft_id,
+ actual_new_owner
+ )
+
+ reject_nft {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let sender: T::AccountId = account("sender", 0, SEED);
+
+ create_max_collection::<T>(&sender)?;
+ let src_collection_id = 0;
+
+ create_max_collection::<T>(&caller)?;
+ let target_collection_id = 1;
+
+ let mut src_nft_builder = NftBuilder::new(src_collection_id);
+ let (src_root_nft_id, _) = src_nft_builder.build_tower::<T>(&sender, NESTING_BUDGET - 1)?;
+
+ let mut target_nft_builder = NftBuilder::new(target_collection_id);
+ let target_nft_id = target_nft_builder.build::<T>(&caller)?;
+
+ let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
+ target_collection_id,
+ target_nft_id
+ );
+
+ <Pallet<T>>::send(
+ RawOrigin::Signed(sender.clone()).into(),
+ src_collection_id,
+ src_root_nft_id,
+ new_owner,
+ )?;
+ }: _(
+ RawOrigin::Signed(caller),
+ src_collection_id,
+ src_root_nft_id
+ )
+
+ set_property {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+
+ let key = create_data();
+ let value = create_data();
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ Some(nft_id),
+ key,
+ value
+ )
+
+ set_priority {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+ let priorities = create_u32_array();
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ nft_id,
+ priorities
+ )
+
+ add_basic_resource {
+ let caller: T::AccountId = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+ let resource = create_basic_resource();
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ nft_id,
+ resource
+ )
+
+ add_composable_resource {
+ let caller: T::AccountId = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+ let resource = create_composable_resource();
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ nft_id,
+ resource
+ )
+
+ add_slot_resource {
+ let caller: T::AccountId = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+ let resource = create_slot_resource();
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ nft_id,
+ resource
+ )
+
+ remove_resource {
+ let caller: T::AccountId = account("caller", 0, SEED);
+
+ create_max_collection::<T>(&caller)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+ let resource = create_basic_resource();
+
+ <Pallet<T>>::add_basic_resource(
+ RawOrigin::Signed(caller.clone()).into(),
+ collection_id,
+ nft_id,
+ resource
+ )?;
+
+ let resource_id = 0;
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ nft_id,
+ resource_id
+ )
+
+ accept_resource {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let admin: T::AccountId = account("admin", 0, SEED);
+
+ create_max_collection::<T>(&admin)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let root_nft_id = 1;
+ let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;
+ let resource = create_basic_resource();
+
+ let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());
+
+ <Pallet<T>>::send(
+ RawOrigin::Signed(admin.clone()).into(),
+ collection_id,
+ root_nft_id,
+ new_owner,
+ )?;
+
+ <Pallet<T>>::add_basic_resource(
+ RawOrigin::Signed(admin.clone()).into(),
+ collection_id,
+ nested_nft_id,
+ resource
+ )?;
+
+ let resource_id = 0;
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ nested_nft_id,
+ resource_id
+ )
+
+ accept_resource_removal {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let admin: T::AccountId = account("admin", 0, SEED);
+
+ create_max_collection::<T>(&admin)?;
+ let collection_id = 0;
+
+ let mut nft_builder = NftBuilder::new(collection_id);
+ let root_nft_id = 1;
+ let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;
+ let resource = create_basic_resource();
+
+ <Pallet<T>>::add_basic_resource(
+ RawOrigin::Signed(admin.clone()).into(),
+ collection_id,
+ nested_nft_id,
+ resource
+ )?;
+
+ let resource_id = 0;
+
+ let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());
+
+ <Pallet<T>>::send(
+ RawOrigin::Signed(admin.clone()).into(),
+ collection_id,
+ root_nft_id,
+ new_owner,
+ )?;
+
+ <Pallet<T>>::remove_resource(
+ RawOrigin::Signed(admin).into(),
+ collection_id,
+ nested_nft_id,
+ resource_id
+ )?;
+ }: _(
+ RawOrigin::Signed(caller),
+ collection_id,
+ nested_nft_id,
+ resource_id
+ )
}
pallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/lib.rs
+++ b/pallets/proxy-rmrk-core/src/lib.rs
@@ -35,6 +35,7 @@
pub mod benchmarking;
pub mod misc;
pub mod property;
+pub mod rpc;
pub mod weights;
pub type SelfWeightOf<T> = <T as Config>::WeightInfo;
@@ -45,7 +46,7 @@
use RmrkProperty::*;
-const NESTING_BUDGET: u32 = 5;
+pub const NESTING_BUDGET: u32 = 5;
#[frame_support::pallet]
pub mod pallet {
@@ -67,10 +68,6 @@
#[pallet::storage]
pub type UniqueCollectionId<T: Config> =
StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;
-
- #[pallet::storage]
- pub type RmrkInernalCollectionId<T: Config> =
- StorageMap<_, Twox64Concat, CollectionId, RmrkCollectionId, ValueQuery>;
#[pallet::pallet]
#[pallet::generate_store(pub(super) trait Store)]
@@ -158,6 +155,8 @@
NftTypeEncodeError,
RmrkPropertyKeyIsTooLong,
RmrkPropertyValueIsTooLong,
+ RmrkPropertyIsNotFound,
+ UnableToDecodeRmrkData,
/* RMRK compatible events */
CollectionNotEmpty,
@@ -171,7 +170,9 @@
CannotSendToDescendentOrSelf,
CannotAcceptNonOwnedNft,
CannotRejectNonOwnedNft,
+ CannotRejectNonPendingNft,
ResourceNotPending,
+ NoAvailableResourceId,
}
#[pallet::call]
@@ -202,7 +203,7 @@
permissions: Some(CollectionPermissions {
nesting: Some(NestingPermissions {
token_owner: true,
- admin: false,
+ collection_admin: false,
restricted: None,
permissive: false,
@@ -224,8 +225,13 @@
let rmrk_collection_id = <CollectionIndex<T>>::get();
<UniqueCollectionId<T>>::insert(rmrk_collection_id, unique_collection_id);
- <RmrkInernalCollectionId<T>>::insert(unique_collection_id, rmrk_collection_id);
+ <PalletCommon<T>>::set_scoped_collection_property(
+ unique_collection_id,
+ PropertyScope::Rmrk,
+ Self::rmrk_property(RmrkInternalCollectionId, &rmrk_collection_id)?,
+ )?;
+
<CollectionIndex<T>>::mutate(|n| *n += 1);
Self::deposit_event(Event::CollectionCreated {
@@ -237,8 +243,8 @@
}
/// destroy collection
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::destroy_collection())]
pub fn destroy_collection(
origin: OriginFor<T>,
collection_id: RmrkCollectionId,
@@ -269,8 +275,8 @@
/// - `origin`: sender of the transaction
/// - `collection_id`: collection id of the nft to change issuer of
/// - `new_issuer`: Collection's new issuer
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::change_collection_issuer())]
pub fn change_collection_issuer(
origin: OriginFor<T>,
collection_id: RmrkCollectionId,
@@ -300,8 +306,8 @@
}
/// lock collection
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::lock_collection())]
pub fn lock_collection(
origin: OriginFor<T>,
collection_id: RmrkCollectionId,
@@ -341,19 +347,22 @@
/// - `royalty`: Permillage reward from each trade for the Recipient
/// - `metadata`: Arbitrary data about an nft, e.g. IPFS hash
/// - `transferable`: Ability to transfer this NFT
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::mint_nft(resources.as_ref().map(|r| r.len() as u32).unwrap_or(0)))]
pub fn mint_nft(
origin: OriginFor<T>,
- owner: T::AccountId,
+ owner: Option<T::AccountId>,
collection_id: RmrkCollectionId,
recipient: Option<T::AccountId>,
royalty_amount: Option<Permill>,
metadata: RmrkString,
transferable: bool,
+ resources: Option<BoundedVec<RmrkResourceTypes, MaxResourcesOnMint>>,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
- let sender = T::CrossAccountId::from_sub(sender);
+ let cross_sender = T::CrossAccountId::from_sub(sender.clone());
+
+ let owner = owner.unwrap_or(sender.clone());
let cross_owner = T::CrossAccountId::from_sub(owner.clone());
let collection = Self::get_typed_nft_collection(
@@ -368,7 +377,7 @@
});
let nft_id = Self::create_nft(
- &sender,
+ &cross_sender,
&cross_owner,
&collection,
[
@@ -378,21 +387,8 @@
Self::rmrk_property(RoyaltyInfo, &royalty_info)?,
Self::rmrk_property(Metadata, &metadata)?,
Self::rmrk_property(Equipped, &false)?,
- Self::rmrk_property(
- ResourceCollection,
- &Self::init_collection(
- sender.clone(),
- CreateCollectionData {
- ..Default::default()
- },
- [Self::rmrk_property(
- CollectionType,
- &misc::CollectionType::Resource,
- )?]
- .into_iter(),
- )?,
- )?, // todo possibly add limits to the collection if rmrk warrants them
Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,
+ Self::rmrk_property(NextResourceId, &(0 as RmrkResourceId))?,
]
.into_iter(),
)
@@ -401,6 +397,12 @@
err => Self::map_unique_err_to_proxy(err),
})?;
+ if let Some(resources) = resources {
+ for resource in resources {
+ Self::resource_add(sender.clone(), collection.id, nft_id, resource)?;
+ }
+ }
+
Self::deposit_event(Event::NftMinted {
owner,
collection_id,
@@ -411,12 +413,13 @@
}
/// burn nft
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::burn_nft(*max_burns))]
pub fn burn_nft(
origin: OriginFor<T>,
collection_id: RmrkCollectionId,
nft_id: RmrkNftId,
+ max_burns: u32,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
let cross_sender = T::CrossAccountId::from_sub(sender.clone());
@@ -431,8 +434,10 @@
cross_sender,
Self::unique_collection_id(collection_id)?,
nft_id.into(),
+ max_burns,
+ <Error<T>>::NoPermission,
)
- .map_err(Self::map_unique_err_to_proxy)?;
+ .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;
Self::deposit_event(Event::NFTBurned {
owner: sender,
@@ -449,8 +454,8 @@
/// - `rmrk_collection_id`: collection id of the nft to be transferred
/// - `rmrk_nft_id`: nft id of the nft to be transferred
/// - `new_owner`: new owner of the nft which can be either an account or a NFT
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::send())]
pub fn send(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
@@ -561,8 +566,8 @@
/// - `rmrk_nft_id`: nft id of the nft to be accepted
/// - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was
/// sent to
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::accept_nft())]
pub fn accept_nft(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
@@ -636,8 +641,8 @@
/// - `origin`: sender of the transaction
/// - `rmrk_collection_id`: collection id of the nft to be accepted
/// - `rmrk_nft_id`: nft id of the nft to be accepted
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::reject_nft())]
pub fn reject_nft(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
@@ -653,15 +658,28 @@
Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
collection.check_is_external()?;
- Self::destroy_nft(cross_sender, collection_id, nft_id).map_err(|err| {
- if err == <CommonError<T>>::NoPermission.into()
- || err == <CommonError<T>>::ApprovedValueTooLow.into()
- {
- <Error<T>>::CannotRejectNonOwnedNft.into()
- } else {
- Self::map_unique_err_to_proxy(err)
- }
- })?;
+ ensure!(
+ <TokenData<T>>::get((collection_id, nft_id)).is_some(),
+ <Error<T>>::NoAvailableNftId
+ );
+
+ ensure!(
+ Self::get_nft_property_decoded(
+ collection_id,
+ nft_id,
+ RmrkProperty::PendingNftAccept
+ )?,
+ <Error<T>>::CannotRejectNonPendingNft
+ );
+
+ Self::destroy_nft(
+ cross_sender,
+ collection_id,
+ nft_id,
+ NESTING_BUDGET,
+ <Error<T>>::CannotRejectNonOwnedNft,
+ )
+ .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;
Self::deposit_event(Event::NFTRejected {
sender,
@@ -673,13 +691,13 @@
}
/// accept the addition of a new resource to an existing NFT
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::accept_resource())]
pub fn accept_resource(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
rmrk_nft_id: RmrkNftId,
- rmrk_resource_id: RmrkResourceId,
+ resource_id: RmrkResourceId,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
let cross_sender = T::CrossAccountId::from_sub(sender);
@@ -691,7 +709,6 @@
collection.check_is_external()?;
let nft_id = rmrk_nft_id.into();
- let resource_id = rmrk_resource_id.into();
let budget = budget::Value::new(NESTING_BUDGET);
@@ -699,44 +716,31 @@
<PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
.map_err(|_| <Error<T>>::ResourceDoesntExist)?;
- let resource_collection_id: CollectionId =
- Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
-
- let is_pending: bool = Self::get_nft_property_decoded(
- resource_collection_id,
- resource_id,
- PendingResourceAccept,
- )
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
-
- ensure!(is_pending, <Error<T>>::ResourceNotPending);
+ Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {
+ ensure!(res.pending, <Error<T>>::ResourceNotPending);
+ ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
- ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
+ res.pending = false;
- <PalletNft<T>>::set_scoped_token_property(
- resource_collection_id,
- rmrk_resource_id.into(),
- PropertyScope::Rmrk,
- Self::rmrk_property(PendingResourceAccept, &false)?,
- )?;
+ Ok(())
+ })?;
Self::deposit_event(Event::<T>::ResourceAccepted {
nft_id: rmrk_nft_id,
- resource_id: rmrk_resource_id,
+ resource_id,
});
Ok(())
}
/// accept the removal of a resource of an existing NFT
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::accept_resource_removal())]
pub fn accept_resource_removal(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
rmrk_nft_id: RmrkNftId,
- rmrk_resource_id: RmrkResourceId,
+ resource_id: RmrkResourceId,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
let cross_sender = T::CrossAccountId::from_sub(sender);
@@ -748,7 +752,6 @@
collection.check_is_external()?;
let nft_id = rmrk_nft_id.into();
- let resource_id = rmrk_resource_id.into();
let budget = budget::Value::new(NESTING_BUDGET);
@@ -758,38 +761,41 @@
ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
- let resource_collection_id: CollectionId =
- Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
+ let resource_id_key = Self::rmrk_property_key(ResourceId(resource_id))?;
- let is_pending: bool = Self::get_nft_property_decoded(
- resource_collection_id,
- resource_id,
- PendingResourceRemoval,
- )
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
+ let resource_info = <PalletNft<T>>::token_aux_property((
+ collection_id,
+ nft_id,
+ PropertyScope::Rmrk,
+ resource_id_key.clone(),
+ ))
+ .ok_or(<Error<T>>::ResourceDoesntExist)?;
- ensure!(is_pending, <Error<T>>::ResourceNotPending);
+ let resource_info: RmrkResourceInfo = Self::decode_property(&resource_info)?;
- let resource_collection = Self::get_typed_nft_collection(
- resource_collection_id,
- misc::CollectionType::Resource,
- )?;
+ ensure!(
+ resource_info.pending_removal,
+ <Error<T>>::ResourceNotPending
+ );
- <PalletNft<T>>::burn(&resource_collection, &cross_sender, rmrk_resource_id.into())
- .map_err(Self::map_unique_err_to_proxy)?;
+ <PalletNft<T>>::remove_token_aux_property(
+ collection_id,
+ nft_id,
+ PropertyScope::Rmrk,
+ resource_id_key,
+ );
Self::deposit_event(Event::<T>::ResourceRemovalAccepted {
nft_id: rmrk_nft_id,
- resource_id: rmrk_resource_id,
+ resource_id,
});
Ok(())
}
/// set a custom value on an NFT
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::set_property())]
pub fn set_property(
origin: OriginFor<T>,
#[pallet::compact] rmrk_collection_id: RmrkCollectionId,
@@ -848,8 +854,8 @@
}
/// set a different order of resource priority
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::set_priority())]
pub fn set_priority(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
@@ -887,8 +893,8 @@
}
/// Create basic resource
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::add_basic_resource())]
pub fn add_basic_resource(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
@@ -906,15 +912,7 @@
sender,
collection_id,
nft_id.into(),
- [
- Self::rmrk_property(TokenType, &NftType::Resource)?,
- Self::rmrk_property(ResourceType, &misc::ResourceType::Basic)?,
- Self::rmrk_property(Src, &resource.src)?,
- Self::rmrk_property(Metadata, &resource.metadata)?,
- Self::rmrk_property(License, &resource.license)?,
- Self::rmrk_property(Thumb, &resource.thumb)?,
- ]
- .into_iter(),
+ RmrkResourceTypes::Basic(resource),
)?;
Self::deposit_event(Event::ResourceAdded {
@@ -925,13 +923,12 @@
}
/// Create composable resource
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::add_composable_resource())]
pub fn add_composable_resource(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
nft_id: RmrkNftId,
- _resource_id: RmrkBoundedResource,
resource: RmrkComposableResource,
) -> DispatchResult {
let sender = ensure_signed(origin.clone())?;
@@ -945,17 +942,7 @@
sender,
collection_id,
nft_id.into(),
- [
- Self::rmrk_property(TokenType, &NftType::Resource)?,
- Self::rmrk_property(ResourceType, &misc::ResourceType::Composable)?,
- Self::rmrk_property(Parts, &resource.parts)?,
- Self::rmrk_property(Base, &resource.base)?,
- Self::rmrk_property(Src, &resource.src)?,
- Self::rmrk_property(Metadata, &resource.metadata)?,
- Self::rmrk_property(License, &resource.license)?,
- Self::rmrk_property(Thumb, &resource.thumb)?,
- ]
- .into_iter(),
+ RmrkResourceTypes::Composable(resource),
)?;
Self::deposit_event(Event::ResourceAdded {
@@ -966,8 +953,8 @@
}
/// Create slot resource
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::add_slot_resource())]
pub fn add_slot_resource(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
@@ -985,17 +972,7 @@
sender,
collection_id,
nft_id.into(),
- [
- Self::rmrk_property(TokenType, &NftType::Resource)?,
- Self::rmrk_property(ResourceType, &misc::ResourceType::Slot)?,
- Self::rmrk_property(Base, &resource.base)?,
- Self::rmrk_property(Src, &resource.src)?,
- Self::rmrk_property(Metadata, &resource.metadata)?,
- Self::rmrk_property(Slot, &resource.slot)?,
- Self::rmrk_property(License, &resource.license)?,
- Self::rmrk_property(Thumb, &resource.thumb)?,
- ]
- .into_iter(),
+ RmrkResourceTypes::Slot(resource),
)?;
Self::deposit_event(Event::ResourceAdded {
@@ -1006,8 +983,8 @@
}
/// remove resource
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::remove_resource())]
pub fn remove_resource(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
@@ -1021,7 +998,7 @@
Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
collection.check_is_external()?;
- Self::resource_remove(sender, collection_id, nft_id.into(), resource_id.into())?;
+ Self::resource_remove(sender, collection_id, nft_id.into(), resource_id)?;
Self::deposit_event(Event::ResourceRemoval {
nft_id,
@@ -1050,19 +1027,29 @@
) -> Result<Property, DispatchError> {
let key = rmrk_key.to_key::<T>()?;
+ let value = Self::encode_property(value)?;
+
+ let property = Property { key, value };
+
+ Ok(property)
+ }
+
+ pub fn encode_property<E: Encode, S: Get<u32>>(
+ value: &E,
+ ) -> Result<BoundedBytes<S>, DispatchError> {
let value = value
.encode()
.try_into()
.map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong)?;
- let property = Property { key, value };
-
- Ok(property)
+ Ok(value)
}
- pub fn decode_property<D: Decode>(vec: PropertyValue) -> Result<D, DispatchError> {
+ pub fn decode_property<D: Decode, S: Get<u32>>(
+ vec: &BoundedBytes<S>,
+ ) -> Result<D, DispatchError> {
vec.decode()
- .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong.into())
+ .map_err(|_| <Error<T>>::UnableToDecodeRmrkData.into())
}
pub fn rebind<L, S>(vec: &BoundedVec<u8, L>) -> Result<BoundedVec<u8, S>, DispatchError>
@@ -1124,7 +1111,9 @@
sender: T::CrossAccountId,
collection_id: CollectionId,
token_id: TokenId,
- ) -> DispatchResult {
+ max_burns: u32,
+ error_if_not_owned: Error<T>,
+ ) -> DispatchResultWithPostInfo {
let collection =
Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
@@ -1133,16 +1122,57 @@
let from = token_data.owner;
- let budget = budget::Value::new(NESTING_BUDGET);
+ let owner_check_budget = budget::Value::new(NESTING_BUDGET);
- <PalletNft<T>>::burn_from(&collection, &sender, &from, token_id, &budget)
+ ensure!(
+ <PalletStructure<T>>::check_indirectly_owned(
+ sender.clone(),
+ collection_id,
+ token_id,
+ None,
+ &owner_check_budget
+ )?,
+ error_if_not_owned,
+ );
+
+ let burns_budget = budget::Value::new(max_burns);
+ let breadth_budget = budget::Value::new(max_burns);
+
+ <PalletNft<T>>::burn_recursively(
+ &collection,
+ &from,
+ token_id,
+ &burns_budget,
+ &breadth_budget,
+ )
}
+ fn acquire_next_resource_id(
+ collection_id: CollectionId,
+ nft_id: TokenId,
+ ) -> Result<RmrkResourceId, DispatchError> {
+ let resource_id: RmrkResourceId =
+ Self::get_nft_property_decoded(collection_id, nft_id, NextResourceId)?;
+
+ let next_id = resource_id
+ .checked_add(1)
+ .ok_or(<Error<T>>::NoAvailableResourceId)?;
+
+ <PalletNft<T>>::set_scoped_token_property(
+ collection_id,
+ nft_id,
+ PropertyScope::Rmrk,
+ Self::rmrk_property(NextResourceId, &next_id)?,
+ )?;
+
+ Ok(resource_id)
+ }
+
fn resource_add(
sender: T::AccountId,
collection_id: CollectionId,
- token_id: TokenId,
- resource_properties: impl Iterator<Item = Property>,
+ nft_id: TokenId,
+ resource: RmrkResourceTypes,
) -> Result<RmrkResourceId, DispatchError> {
let collection =
Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
@@ -1151,77 +1181,108 @@
let sender = T::CrossAccountId::from_sub(sender);
let budget = budget::Value::new(NESTING_BUDGET);
- let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, token_id, &budget)
+ let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
.map_err(Self::map_unique_err_to_proxy)?;
let pending = sender != nft_owner;
- let resource_collection_id: CollectionId =
- Self::get_nft_property_decoded(collection_id, token_id, ResourceCollection)?;
- let resource_collection =
- Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;
+ let id = Self::acquire_next_resource_id(collection_id, nft_id)?;
- // todo probably add extra connections to bases, slots, etc., when RMRK starts to use them
+ let resource_info = RmrkResourceInfo {
+ id,
+ resource,
+ pending,
+ pending_removal: false,
+ };
- let resource_id = Self::create_nft(
- &sender,
- &nft_owner,
- &resource_collection,
- resource_properties.chain(
- [
- Self::rmrk_property(PendingResourceAccept, &pending)?,
- Self::rmrk_property(PendingResourceRemoval, &false)?,
- ]
- .into_iter(),
- ),
- )
- .map_err(|err| match err {
- DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),
- err => Self::map_unique_err_to_proxy(err),
- })?;
+ <PalletNft<T>>::try_mutate_token_aux_property(
+ collection_id,
+ nft_id,
+ PropertyScope::Rmrk,
+ Self::rmrk_property_key(ResourceId(id))?,
+ |value| -> DispatchResult {
+ *value = Some(Self::encode_property(&resource_info)?);
- Ok(resource_id.0)
+ Ok(())
+ },
+ )?;
+
+ Ok(id)
}
fn resource_remove(
sender: T::AccountId,
collection_id: CollectionId,
nft_id: TokenId,
- resource_id: TokenId,
+ resource_id: RmrkResourceId,
) -> DispatchResult {
let collection =
Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
ensure!(collection.owner == sender, Error::<T>::NoPermission);
- let resource_collection_id: CollectionId =
- Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)?;
- let resource_collection =
- Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;
+ let resource_id_key = Self::rmrk_property_key(ResourceId(resource_id))?;
+ let scope = PropertyScope::Rmrk;
+
ensure!(
- <PalletNft<T>>::token_exists(&resource_collection, resource_id),
- Error::<T>::ResourceDoesntExist
+ <PalletNft<T>>::token_aux_property((
+ collection_id,
+ nft_id,
+ scope,
+ resource_id_key.clone()
+ ))
+ .is_some(),
+ <Error<T>>::ResourceDoesntExist
);
- let budget = up_data_structs::budget::Value::new(10);
+ let budget = up_data_structs::budget::Value::new(NESTING_BUDGET);
let topmost_owner =
<PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?;
let sender = T::CrossAccountId::from_sub(sender);
if topmost_owner == sender {
- <PalletNft<T>>::burn(&resource_collection, &sender, resource_id)
- .map_err(Self::map_unique_err_to_proxy)?;
+ <PalletNft<T>>::remove_token_aux_property(
+ collection_id,
+ nft_id,
+ PropertyScope::Rmrk,
+ Self::rmrk_property_key(ResourceId(resource_id))?,
+ );
} else {
- <PalletNft<T>>::set_scoped_token_property(
- resource_collection_id,
- resource_id,
- PropertyScope::Rmrk,
- Self::rmrk_property(PendingResourceRemoval, &true)?,
- )?;
+ Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {
+ res.pending_removal = true;
+
+ Ok(())
+ })?;
}
Ok(())
}
+ fn try_mutate_resource_info(
+ collection_id: CollectionId,
+ nft_id: TokenId,
+ resource_id: RmrkResourceId,
+ f: impl FnOnce(&mut RmrkResourceInfo) -> DispatchResult,
+ ) -> DispatchResult {
+ <PalletNft<T>>::try_mutate_token_aux_property(
+ collection_id,
+ nft_id,
+ PropertyScope::Rmrk,
+ Self::rmrk_property_key(ResourceId(resource_id))?,
+ |value| match value {
+ Some(value) => {
+ let mut resource_info: RmrkResourceInfo = Self::decode_property(value)?;
+
+ f(&mut resource_info)?;
+
+ *value = Self::encode_property(&resource_info)?;
+
+ Ok(())
+ }
+ None => Err(<Error<T>>::ResourceDoesntExist.into()),
+ },
+ )
+ }
+
fn change_collection_owner(
collection_id: CollectionId,
collection_type: misc::CollectionType,
@@ -1237,7 +1298,7 @@
collection.save()
}
- fn check_collection_owner(
+ pub fn check_collection_owner(
collection: &NonfungibleHandle<T>,
account: &T::CrossAccountId,
) -> DispatchResult {
@@ -1260,8 +1321,7 @@
pub fn rmrk_collection_id(
unique_collection_id: CollectionId,
) -> Result<RmrkCollectionId, DispatchError> {
- <RmrkInernalCollectionId<T>>::try_get(unique_collection_id)
- .map_err(|_| <Error<T>>::CollectionUnknown.into())
+ Self::get_collection_property_decoded(unique_collection_id, RmrkInternalCollectionId)
}
pub fn get_nft_collection(
@@ -1296,14 +1356,19 @@
collection_id: CollectionId,
key: RmrkProperty,
) -> Result<V, DispatchError> {
- Self::decode_property(Self::get_collection_property(collection_id, key)?)
+ Self::decode_property(&Self::get_collection_property(collection_id, key)?)
}
pub fn get_collection_type(
collection_id: CollectionId,
) -> Result<misc::CollectionType, DispatchError> {
- Self::get_collection_property_decoded(collection_id, CollectionType)
- .map_err(|_| <Error<T>>::CorruptedCollectionType.into())
+ Self::get_collection_property_decoded(collection_id, CollectionType).map_err(|err| {
+ if err != <Error<T>>::CollectionUnknown.into() {
+ <Error<T>>::CorruptedCollectionType.into()
+ } else {
+ err
+ }
+ })
}
pub fn ensure_collection_type(
@@ -1349,7 +1414,7 @@
) -> Result<PropertyValue, DispatchError> {
let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))
.get(&Self::rmrk_property_key(key)?)
- .ok_or(<Error<T>>::NoAvailableNftId)? // todo replace with better error?
+ .ok_or(<Error<T>>::RmrkPropertyIsNotFound)?
.clone();
Ok(nft_property)
@@ -1360,7 +1425,7 @@
nft_id: TokenId,
key: RmrkProperty,
) -> Result<V, DispatchError> {
- Self::decode_property(Self::get_nft_property(collection_id, nft_id, key)?)
+ Self::decode_property(&Self::get_nft_property(collection_id, nft_id, key)?)
}
pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {
pallets/proxy-rmrk-core/src/misc.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/misc.rs
+++ b/pallets/proxy-rmrk-core/src/misc.rs
@@ -61,22 +61,13 @@
#[derive(Encode, Decode, PartialEq, Eq)]
pub enum CollectionType {
Regular,
- Resource,
Base,
}
#[derive(Encode, Decode, PartialEq, Eq)]
pub enum NftType {
Regular,
- Resource,
FixedPart,
SlotPart,
Theme,
-}
-
-#[derive(Encode, Decode, PartialEq, Eq)]
-pub enum ResourceType {
- Basic,
- Composable,
- Slot,
}
pallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/property.rs
+++ b/pallets/proxy-rmrk-core/src/property.rs
@@ -17,25 +17,23 @@
use super::*;
use core::convert::AsRef;
+const RESOURCE_ID_PREFIX: &str = "rsid-";
+
pub enum RmrkProperty<'r> {
Metadata,
CollectionType,
+ RmrkInternalCollectionId,
TokenType,
Transferable,
RoyaltyInfo,
Equipped,
- ResourceCollection,
ResourcePriorities,
- ResourceType,
+ NextResourceId,
+ ResourceId(RmrkResourceId),
PendingNftAccept,
- PendingResourceAccept,
- PendingResourceRemoval,
Parts,
Base,
Src,
- Slot,
- License,
- Thumb,
EquippedNft,
BaseType,
ExternalPartId,
@@ -66,22 +64,18 @@
match self {
Self::Metadata => key!("metadata"),
Self::CollectionType => key!("collection-type"),
+ Self::RmrkInternalCollectionId => key!("internal-id"),
Self::TokenType => key!("token-type"),
Self::Transferable => key!("transferable"),
Self::RoyaltyInfo => key!("royalty-info"),
Self::Equipped => key!("equipped"),
- Self::ResourceCollection => key!("resource-collection"),
Self::ResourcePriorities => key!("resource-priorities"),
- Self::ResourceType => key!("resource-type"),
+ Self::NextResourceId => key!("next-resource-id"),
+ Self::ResourceId(id) => key!(RESOURCE_ID_PREFIX, id.to_le_bytes()),
Self::PendingNftAccept => key!("pending-nft-accept"),
- Self::PendingResourceAccept => key!("pending-resource-accept"),
- Self::PendingResourceRemoval => key!("pending-resource-removal"),
Self::Parts => key!("parts"),
Self::Base => key!("base"),
Self::Src => key!("src"),
- Self::Slot => key!("slot"),
- Self::License => key!("license"),
- Self::Thumb => key!("thumb"),
Self::EquippedNft => key!("equipped-nft"),
Self::BaseType => key!("base-type"),
Self::ExternalPartId => key!("ext-part-id"),
pallets/proxy-rmrk-core/src/rpc.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/proxy-rmrk-core/src/rpc.rs
@@ -0,0 +1,265 @@
+use super::*;
+
+pub fn last_collection_idx<T: Config>() -> Result<RmrkCollectionId, DispatchError> {
+ Ok(<Pallet<T>>::last_collection_idx())
+}
+
+pub fn collection_by_id<T: Config>(
+ collection_id: RmrkCollectionId,
+) -> Result<Option<RmrkCollectionInfo<T::AccountId>>, DispatchError> {
+ let (collection, collection_id) = match <Pallet<T>>::get_typed_nft_collection_mapped(
+ collection_id,
+ misc::CollectionType::Regular,
+ ) {
+ Ok(c) => c,
+ Err(_) => return Ok(None),
+ };
+
+ let nfts_count = collection.total_supply();
+
+ Ok(Some(RmrkCollectionInfo {
+ issuer: collection.owner.clone(),
+ metadata: <Pallet<T>>::get_collection_property_decoded(
+ collection_id,
+ RmrkProperty::Metadata,
+ )?,
+ max: collection.limits.token_limit,
+ symbol: <Pallet<T>>::rebind(&collection.token_prefix)?,
+ nfts_count,
+ }))
+}
+
+pub fn nft_by_id<T: Config>(
+ collection_id: RmrkCollectionId,
+ nft_by_id: RmrkNftId,
+) -> Result<Option<RmrkInstanceInfo<T::AccountId>>, DispatchError> {
+ let (collection, collection_id) = match <Pallet<T>>::get_typed_nft_collection_mapped(
+ collection_id,
+ misc::CollectionType::Regular,
+ ) {
+ Ok(c) => c,
+ Err(_) => return Ok(None),
+ };
+
+ let nft_id = TokenId(nft_by_id);
+ if !<Pallet<T>>::nft_exists(collection_id, nft_id) {
+ return Ok(None);
+ }
+
+ let owner = match collection.token_owner(nft_id) {
+ Some(owner) => match T::CrossTokenAddressMapping::address_to_token(&owner) {
+ Some((col, tok)) => {
+ let rmrk_collection = <Pallet<T>>::rmrk_collection_id(col)?;
+
+ RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(rmrk_collection, tok.0)
+ }
+ None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone()),
+ },
+ None => return Ok(None),
+ };
+
+ Ok(Some(RmrkInstanceInfo {
+ owner: owner,
+ royalty: <Pallet<T>>::get_nft_property_decoded(
+ collection_id,
+ nft_id,
+ RmrkProperty::RoyaltyInfo,
+ )?,
+ metadata: <Pallet<T>>::get_nft_property_decoded(
+ collection_id,
+ nft_id,
+ RmrkProperty::Metadata,
+ )?,
+ equipped: <Pallet<T>>::get_nft_property_decoded(
+ collection_id,
+ nft_id,
+ RmrkProperty::Equipped,
+ )?,
+ pending: <Pallet<T>>::get_nft_property_decoded(
+ collection_id,
+ nft_id,
+ RmrkProperty::PendingNftAccept,
+ )?,
+ }))
+}
+
+pub fn account_tokens<T: Config>(
+ account_id: T::AccountId,
+ collection_id: RmrkCollectionId,
+) -> Result<Vec<RmrkNftId>, DispatchError> {
+ let cross_account_id = CrossAccountId::from_sub(account_id);
+
+ let (collection, collection_id) = match <Pallet<T>>::get_typed_nft_collection_mapped(
+ collection_id,
+ misc::CollectionType::Regular,
+ ) {
+ Ok(c) => c,
+ Err(_) => return Ok(Vec::new()),
+ };
+
+ let tokens = collection
+ .account_tokens(cross_account_id)
+ .into_iter()
+ .filter(|token| {
+ let is_pending = <Pallet<T>>::get_nft_property_decoded(
+ collection_id,
+ *token,
+ RmrkProperty::PendingNftAccept,
+ )
+ .unwrap_or(true);
+
+ !is_pending
+ })
+ .map(|token| token.0)
+ .collect();
+
+ Ok(tokens)
+}
+
+pub fn nft_children<T: Config>(
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+) -> Result<Vec<RmrkNftChild>, DispatchError> {
+ let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
+ Ok(id) => id,
+ Err(_) => return Ok(Vec::new()),
+ };
+ let nft_id = TokenId(nft_id);
+ if !<Pallet<T>>::nft_exists(collection_id, nft_id) {
+ return Ok(Vec::new());
+ }
+
+ Ok(
+ pallet_nonfungible::TokenChildren::<T>::iter_prefix((collection_id, nft_id))
+ .filter_map(|((child_collection, child_token), _)| {
+ let is_pending = <Pallet<T>>::get_nft_property_decoded(
+ child_collection,
+ child_token,
+ RmrkProperty::PendingNftAccept,
+ )
+ .ok()?;
+
+ if is_pending {
+ return None;
+ }
+
+ let rmrk_child_collection =
+ <Pallet<T>>::rmrk_collection_id(child_collection).ok()?;
+
+ Some(RmrkNftChild {
+ collection_id: rmrk_child_collection,
+ nft_id: child_token.0,
+ })
+ })
+ .collect(),
+ )
+}
+
+pub fn collection_properties<T: Config>(
+ collection_id: RmrkCollectionId,
+ filter_keys: Option<Vec<RmrkPropertyKey>>,
+) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
+ Ok(id) => id,
+ Err(_) => return Ok(Vec::new()),
+ };
+ if <Pallet<T>>::ensure_collection_type(collection_id, misc::CollectionType::Regular).is_err() {
+ return Ok(Vec::new());
+ }
+
+ let properties = <Pallet<T>>::filter_user_properties(
+ collection_id,
+ /* token_id = */ None,
+ filter_keys,
+ |key, value| RmrkPropertyInfo { key, value },
+ )?;
+
+ Ok(properties)
+}
+
+pub fn nft_properties<T: Config>(
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+ filter_keys: Option<Vec<RmrkPropertyKey>>,
+) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
+ Ok(id) => id,
+ Err(_) => return Ok(Vec::new()),
+ };
+ let token_id = TokenId(nft_id);
+
+ if <Pallet<T>>::ensure_nft_type(collection_id, token_id, NftType::Regular).is_err() {
+ return Ok(Vec::new());
+ }
+
+ let properties = <Pallet<T>>::filter_user_properties(
+ collection_id,
+ Some(token_id),
+ filter_keys,
+ |key, value| RmrkPropertyInfo { key, value },
+ )?;
+
+ Ok(properties)
+}
+
+pub fn nft_resources<T: Config>(
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
+ let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
+ Ok(id) => id,
+ Err(_) => return Ok(Vec::new()),
+ };
+ if <Pallet<T>>::ensure_collection_type(collection_id, misc::CollectionType::Regular).is_err() {
+ return Ok(Vec::new());
+ }
+
+ let nft_id = TokenId(nft_id);
+ if <Pallet<T>>::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() {
+ return Ok(Vec::new());
+ }
+
+ let resources = <pallet_nonfungible::Pallet<T>>::iterate_token_aux_properties(
+ collection_id,
+ nft_id,
+ PropertyScope::Rmrk,
+ )
+ .filter_map(|(_, value)| {
+ let resource_info: RmrkResourceInfo = <Pallet<T>>::decode_property(&value).ok()?;
+
+ Some(resource_info)
+ })
+ .collect();
+
+ Ok(resources)
+}
+
+pub fn nft_resource_priority<T: Config>(
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+ resource_id: RmrkResourceId,
+) -> Result<Option<u32>, DispatchError> {
+ let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
+ Ok(id) => id,
+ Err(_) => return Ok(None),
+ };
+ if <Pallet<T>>::ensure_collection_type(collection_id, misc::CollectionType::Regular).is_err() {
+ return Ok(None);
+ }
+
+ let nft_id = TokenId(nft_id);
+ if <Pallet<T>>::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() {
+ return Ok(None);
+ }
+
+ let priorities: Vec<_> = <Pallet<T>>::get_nft_property_decoded(
+ collection_id,
+ nft_id,
+ RmrkProperty::ResourcePriorities,
+ )?;
+ Ok(priorities
+ .into_iter()
+ .enumerate()
+ .find(|(_, id)| *id == resource_id)
+ .map(|(priority, _): (usize, RmrkResourceId)| priority as u32))
+}
pallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/weights.rs
+++ b/pallets/proxy-rmrk-core/src/weights.rs
@@ -3,7 +3,7 @@
//! Autogenerated weights for pallet_proxy_rmrk_core
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-06-09, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-17, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
@@ -19,7 +19,7 @@
// --template
// .maintain/frame-weight-template.hbs
// --steps=50
-// --repeat=200
+// --repeat=80
// --heap-pages=4096
// --output=./pallets/proxy-rmrk-core/src/weights.rs
@@ -34,6 +34,22 @@
/// Weight functions needed for pallet_proxy_rmrk_core.
pub trait WeightInfo {
fn create_collection() -> Weight;
+ fn destroy_collection() -> Weight;
+ fn change_collection_issuer() -> Weight;
+ fn lock_collection() -> Weight;
+ fn mint_nft(b: u32, ) -> Weight;
+ fn burn_nft(b: u32, ) -> Weight;
+ fn send() -> Weight;
+ fn accept_nft() -> Weight;
+ fn reject_nft() -> Weight;
+ fn set_property() -> Weight;
+ fn set_priority() -> Weight;
+ fn add_basic_resource() -> Weight;
+ fn add_composable_resource() -> Weight;
+ fn add_slot_resource() -> Weight;
+ fn remove_resource() -> Weight;
+ fn accept_resource() -> Weight;
+ fn accept_resource_removal() -> Weight;
}
/// Weights for pallet_proxy_rmrk_core using the Substrate node and recommended hardware.
@@ -47,11 +63,204 @@
// Storage: Common CollectionProperties (r:0 w:1)
// Storage: Common CollectionById (r:0 w:1)
// Storage: RmrkCore UniqueCollectionId (r:0 w:1)
- // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)
fn create_collection() -> Weight {
- (76_647_000 as Weight)
+ (42_359_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
- .saturating_add(T::DbWeight::get().writes(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(8 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:1)
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:1 w:0)
+ // Storage: Common DestroyedCollectionCount (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:0 w:1)
+ // Storage: Nonfungible TokensBurnt (r:0 w:1)
+ // Storage: Common AdminAmount (r:0 w:1)
+ fn destroy_collection() -> Weight {
+ (45_375_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(5 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ fn change_collection_issuer() -> Weight {
+ (22_753_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(3 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:1 w:0)
+ // Storage: Nonfungible TokensBurnt (r:1 w:0)
+ fn lock_collection() -> Weight {
+ (24_356_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(5 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokensMinted (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
+ fn mint_nft(b: u32, ) -> Weight {
+ (44_853_000 as Weight)
+ // Standard Error: 2_000
+ .saturating_add((10_721_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(6 as Weight))
+ .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(T::DbWeight::get().writes(5 as Weight))
+ .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:1 w:0)
+ // Storage: Nonfungible TokensBurnt (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible Allowance (r:1 w:0)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenProperties (r:0 w:1)
+ fn burn_nft(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 1_590_000
+ .saturating_add((319_825_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
+ .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:0)
+ // Storage: Nonfungible AccountBalance (r:2 w:2)
+ // Storage: Nonfungible Allowance (r:1 w:0)
+ // Storage: Nonfungible TokenChildren (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:2)
+ fn send() -> Weight {
+ (72_576_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(12 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:2 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:2 w:0)
+ // Storage: Nonfungible TokenData (r:6 w:1)
+ // Storage: Nonfungible AccountBalance (r:2 w:2)
+ // Storage: Nonfungible Allowance (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:2)
+ fn accept_nft() -> Weight {
+ (79_670_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(15 as Weight))
+ .saturating_add(T::DbWeight::get().writes(7 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:5)
+ // Storage: Nonfungible TokenProperties (r:1 w:5)
+ // Storage: Nonfungible TokenChildren (r:9 w:4)
+ // Storage: Nonfungible TokensBurnt (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:5 w:5)
+ // Storage: Nonfungible Allowance (r:5 w:0)
+ // Storage: Nonfungible Owned (r:0 w:5)
+ fn reject_nft() -> Weight {
+ (254_989_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(29 as Weight))
+ .saturating_add(T::DbWeight::get().writes(25 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ fn set_property() -> Weight {
+ (48_651_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ fn set_priority() -> Weight {
+ (47_579_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn add_basic_resource() -> Weight {
+ (55_013_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(10 as Weight))
+ .saturating_add(T::DbWeight::get().writes(2 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn add_composable_resource() -> Weight {
+ (55_184_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(10 as Weight))
+ .saturating_add(T::DbWeight::get().writes(2 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn add_slot_resource() -> Weight {
+ (54_792_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(10 as Weight))
+ .saturating_add(T::DbWeight::get().writes(2 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ fn remove_resource() -> Weight {
+ (46_447_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn accept_resource() -> Weight {
+ (45_096_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn accept_resource_removal() -> Weight {
+ (45_445_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
}
}
@@ -65,10 +274,203 @@
// Storage: Common CollectionProperties (r:0 w:1)
// Storage: Common CollectionById (r:0 w:1)
// Storage: RmrkCore UniqueCollectionId (r:0 w:1)
- // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)
fn create_collection() -> Weight {
- (76_647_000 as Weight)
+ (42_359_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(5 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(8 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:1)
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:1 w:0)
+ // Storage: Common DestroyedCollectionCount (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:0 w:1)
+ // Storage: Nonfungible TokensBurnt (r:0 w:1)
+ // Storage: Common AdminAmount (r:0 w:1)
+ fn destroy_collection() -> Weight {
+ (45_375_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
- .saturating_add(RocksDbWeight::get().writes(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ fn change_collection_issuer() -> Weight {
+ (22_753_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(3 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:1 w:0)
+ // Storage: Nonfungible TokensBurnt (r:1 w:0)
+ fn lock_collection() -> Weight {
+ (24_356_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(5 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokensMinted (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
+ fn mint_nft(b: u32, ) -> Weight {
+ (44_853_000 as Weight)
+ // Standard Error: 2_000
+ .saturating_add((10_721_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(6 as Weight))
+ .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(RocksDbWeight::get().writes(5 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:1 w:0)
+ // Storage: Nonfungible TokensBurnt (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible Allowance (r:1 w:0)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ // Storage: Nonfungible TokenProperties (r:0 w:1)
+ fn burn_nft(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 1_590_000
+ .saturating_add((319_825_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:0)
+ // Storage: Nonfungible AccountBalance (r:2 w:2)
+ // Storage: Nonfungible Allowance (r:1 w:0)
+ // Storage: Nonfungible TokenChildren (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:2)
+ fn send() -> Weight {
+ (72_576_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(12 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:2 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:2 w:0)
+ // Storage: Nonfungible TokenData (r:6 w:1)
+ // Storage: Nonfungible AccountBalance (r:2 w:2)
+ // Storage: Nonfungible Allowance (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenChildren (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:2)
+ fn accept_nft() -> Weight {
+ (79_670_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(15 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(7 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:5)
+ // Storage: Nonfungible TokenProperties (r:1 w:5)
+ // Storage: Nonfungible TokenChildren (r:9 w:4)
+ // Storage: Nonfungible TokensBurnt (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:5 w:5)
+ // Storage: Nonfungible Allowance (r:5 w:0)
+ // Storage: Nonfungible Owned (r:0 w:5)
+ fn reject_nft() -> Weight {
+ (254_989_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(29 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(25 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ fn set_property() -> Weight {
+ (48_651_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ fn set_priority() -> Weight {
+ (47_579_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn add_basic_resource() -> Weight {
+ (55_013_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(10 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(2 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn add_composable_resource() -> Weight {
+ (55_184_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(10 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(2 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn add_slot_resource() -> Weight {
+ (54_792_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(10 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(2 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ fn remove_resource() -> Weight {
+ (46_447_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn accept_resource() -> Weight {
+ (45_096_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenData (r:5 w:0)
+ // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
+ fn accept_resource_removal() -> Weight {
+ (45_445_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
}
pallets/proxy-rmrk-equip/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/proxy-rmrk-equip/src/benchmarking.rs
@@ -0,0 +1,120 @@
+use sp_std::vec;
+
+use frame_benchmarking::{benchmarks, account};
+use frame_system::RawOrigin;
+use frame_support::{
+ traits::{Currency, Get},
+ BoundedVec,
+};
+
+use up_data_structs::*;
+
+use super::*;
+
+const SEED: u32 = 1;
+
+fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {
+ vec![b'A'; S::get() as usize].try_into().expect("size == S")
+}
+
+fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {
+ vec![0; S::get() as usize].try_into().expect("size == S")
+}
+
+fn create_max_part(id: RmrkSlotId) -> RmrkPartType {
+ RmrkPartType::SlotPart(RmrkSlotPart {
+ id,
+ equippable: RmrkEquippableList::Custom(create_u32_array()),
+ src: create_data(),
+ z: 1,
+ })
+}
+
+fn create_parts_array<S: Get<u32>>(num: u32) -> BoundedVec<RmrkPartType, S> {
+ let mut parts: BoundedVec<RmrkPartType, S> = vec![].try_into().expect("0 <= S");
+
+ for i in 0..num {
+ parts.try_push(create_max_part(i)).expect("num <= S");
+ }
+
+ parts
+}
+
+fn create_max_theme_property() -> RmrkThemeProperty {
+ RmrkThemeProperty {
+ key: create_data(),
+ value: create_data(),
+ }
+}
+
+fn create_theme_properties_array<S: Get<u32>>(num: u32) -> BoundedVec<RmrkThemeProperty, S> {
+ vec![create_max_theme_property(); num as usize]
+ .try_into()
+ .expect("num <= S")
+}
+
+fn create_max_theme(name: RmrkString, props_num: u32) -> RmrkBoundedTheme {
+ RmrkBoundedTheme {
+ name,
+ properties: create_theme_properties_array(props_num),
+ inherit: false,
+ }
+}
+
+benchmarks! {
+ create_base {
+ let b in 0..RmrkPartsLimit::get();
+
+ let caller = account("caller", 0, SEED);
+ <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
+
+ let base_type = create_data();
+ let symbol = create_data();
+ let parts = create_parts_array(b);
+ }: _(RawOrigin::Signed(caller), base_type, symbol, parts)
+
+ theme_add {
+ let b in 0..MaxPropertiesPerTheme::get();
+
+ let caller = account("caller", 0, SEED);
+ <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
+
+ let base_type = create_data();
+ let symbol = create_data();
+ let parts = create_parts_array(0);
+
+ <Pallet<T>>::create_base(RawOrigin::Signed(caller.clone()).into(), base_type, symbol, parts)?;
+ let base_id = 1;
+
+
+ let default_theme_name = b"default".to_vec().try_into().expect("default is a valid name; qed");
+ let default_theme = create_max_theme(default_theme_name, 0);
+
+ <Pallet<T>>::theme_add(RawOrigin::Signed(caller.clone()).into(), base_id, default_theme)?;
+
+ let theme = create_max_theme(create_data(), b);
+ }: _(RawOrigin::Signed(caller), base_id, theme)
+
+ equippable {
+ let caller = account("caller", 0, SEED);
+ <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
+
+ let base_id = 1;
+ let slot_id = 42;
+
+ let base_type = create_data();
+ let symbol = create_data();
+ let parts = vec! {
+ RmrkPartType::SlotPart(RmrkSlotPart {
+ id: slot_id,
+ equippable: RmrkEquippableList::All,
+ src: create_data(),
+ z: 1,
+ })
+ }.try_into().expect("1 <= RmrkPartsLimit");
+
+ <Pallet<T>>::create_base(RawOrigin::Signed(caller.clone()).into(), base_type, symbol, parts)?;
+
+ let equippables = RmrkEquippableList::Custom(create_u32_array());
+ }: _(RawOrigin::Signed(caller), base_id, slot_id, equippables)
+}
pallets/proxy-rmrk-equip/src/lib.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-equip/src/lib.rs
+++ b/pallets/proxy-rmrk-equip/src/lib.rs
@@ -22,15 +22,23 @@
use up_data_structs::*;
use pallet_common::{Pallet as PalletCommon, Error as CommonError};
use pallet_rmrk_core::{
- Pallet as PalletCore,
+ Pallet as PalletCore, Error as CoreError,
misc::{self, *},
property::RmrkProperty::*,
};
use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle};
use pallet_evm::account::CrossAccountId;
+use weights::WeightInfo;
pub use pallet::*;
+#[cfg(feature = "runtime-benchmarks")]
+pub mod benchmarking;
+pub mod rpc;
+pub mod weights;
+
+pub type SelfWeightOf<T> = <T as Config>::WeightInfo;
+
#[frame_support::pallet]
pub mod pallet {
use super::*;
@@ -38,6 +46,7 @@
#[pallet::config]
pub trait Config: frame_system::Config + pallet_rmrk_core::Config {
type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
+ type WeightInfo: WeightInfo;
}
#[pallet::storage]
@@ -61,6 +70,10 @@
issuer: T::AccountId,
base_id: RmrkBaseId,
},
+ EquippablesUpdated {
+ base_id: RmrkBaseId,
+ slot_id: RmrkSlotId,
+ },
}
#[pallet::error]
@@ -70,6 +83,8 @@
NoAvailablePartId,
BaseDoesntExist,
NeedsDefaultThemeFirst,
+ PartDoesntExist,
+ NoEquippableOnFixedPart,
}
#[pallet::call]
@@ -83,12 +98,12 @@
/// - symbol: arbitrary client-chosen symbol
/// - parts: array of Fixed and Slot parts composing the base, confined in length by
/// RmrkPartsLimit
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::create_base(parts.len() as u32))]
pub fn create_base(
origin: OriginFor<T>,
base_type: RmrkString,
- symbol: RmrkString,
+ symbol: RmrkBaseSymbol,
parts: BoundedVec<RmrkPartType, RmrkPartsLimit>,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -125,17 +140,7 @@
let collection = <PalletCore<T>>::get_nft_collection(collection_id)?;
for part in parts {
- let part_id = part.id();
- let part_token_id = Self::create_part(&cross_sender, &collection, part)?;
-
- <InernalPartId<T>>::insert(collection_id, part_id, part_token_id);
-
- <PalletNft<T>>::set_scoped_token_property(
- collection_id,
- part_token_id,
- PropertyScope::Rmrk,
- <PalletCore<T>>::rmrk_property(ExternalPartId, &part_id)?,
- )?;
+ Self::create_part(&cross_sender, &collection, part)?;
}
Self::deposit_event(Event::BaseCreated {
@@ -159,12 +164,12 @@
/// - key: arbitrary BoundedString, defined by client
/// - value: arbitrary BoundedString, defined by client
/// - inherit: optional bool
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::theme_add(theme.properties.len() as u32))]
pub fn theme_add(
origin: OriginFor<T>,
base_id: RmrkBaseId,
- theme: RmrkTheme,
+ theme: RmrkBoundedTheme,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -173,12 +178,7 @@
let collection_id: CollectionId = base_id.into();
- let collection = <PalletCore<T>>::get_typed_nft_collection(
- collection_id,
- misc::CollectionType::Base,
- )
- .map_err(|_| <Error<T>>::BaseDoesntExist)?;
- collection.check_is_external()?;
+ let collection = Self::get_base(collection_id)?;
if theme.name.as_slice() == b"default" {
<BaseHasDefaultTheme<T>>::insert(collection_id, true);
@@ -213,6 +213,55 @@
Ok(())
}
+
+ #[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::equippable())]
+ pub fn equippable(
+ origin: OriginFor<T>,
+ base_id: RmrkBaseId,
+ slot_id: RmrkSlotId,
+ equippables: RmrkEquippableList,
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+
+ let base_collection_id = base_id.into();
+ let collection = Self::get_base(base_collection_id)?;
+
+ <PalletCore<T>>::check_collection_owner(
+ &collection,
+ &T::CrossAccountId::from_sub(sender),
+ )
+ .map_err(|err| {
+ if err == <CoreError<T>>::NoPermission.into() {
+ <Error<T>>::PermissionError.into()
+ } else {
+ err
+ }
+ })?;
+
+ let part_id = Self::internal_part_id(base_collection_id, slot_id)
+ .ok_or(<Error<T>>::PartDoesntExist)?;
+
+ let nft_type = <PalletCore<T>>::get_nft_type(base_collection_id, part_id)
+ .map_err(|_| <Error<T>>::PartDoesntExist)?;
+
+ match nft_type {
+ NftType::Regular | NftType::Theme => return Err(<Error<T>>::PermissionError.into()),
+ NftType::FixedPart => return Err(<Error<T>>::NoEquippableOnFixedPart.into()),
+ NftType::SlotPart => {
+ <PalletNft<T>>::set_scoped_token_property(
+ base_collection_id,
+ part_id,
+ PropertyScope::Rmrk,
+ <PalletCore<T>>::rmrk_property(EquippableList, &equippables)?,
+ )?;
+ }
+ }
+
+ Self::deposit_event(Event::EquippablesUpdated { base_id, slot_id });
+
+ Ok(())
+ }
}
}
@@ -221,9 +270,10 @@
sender: &T::CrossAccountId,
collection: &NonfungibleHandle<T>,
part: RmrkPartType,
- ) -> Result<TokenId, DispatchError> {
+ ) -> DispatchResult {
let owner = sender;
+ let part_id = part.id();
let src = part.src();
let z_index = part.z_index();
@@ -232,21 +282,40 @@
RmrkPartType::SlotPart(_) => NftType::SlotPart,
};
- let token_id = <PalletCore<T>>::create_nft(
- sender,
- owner,
- collection,
+ let token_id = match Self::internal_part_id(collection.id, part_id) {
+ Some(token_id) => token_id,
+ None => {
+ let token_id =
+ <PalletCore<T>>::create_nft(sender, owner, collection, [].into_iter())
+ .map_err(|err| match err {
+ DispatchError::Arithmetic(_) => <Error<T>>::NoAvailablePartId.into(),
+ err => err,
+ })?;
+
+ <InernalPartId<T>>::insert(collection.id, part_id, token_id);
+
+ <PalletNft<T>>::set_scoped_token_property(
+ collection.id,
+ token_id,
+ PropertyScope::Rmrk,
+ <PalletCore<T>>::rmrk_property(ExternalPartId, &part_id)?,
+ )?;
+
+ token_id
+ }
+ };
+
+ <PalletNft<T>>::set_scoped_token_properties(
+ collection.id,
+ token_id,
+ PropertyScope::Rmrk,
[
<PalletCore<T>>::rmrk_property(TokenType, &nft_type)?,
<PalletCore<T>>::rmrk_property(Src, &src)?,
<PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,
]
.into_iter(),
- )
- .map_err(|err| match err {
- DispatchError::Arithmetic(_) => <Error<T>>::NoAvailablePartId.into(),
- err => err,
- })?;
+ )?;
if let RmrkPartType::SlotPart(part) = part {
<PalletNft<T>>::set_scoped_token_property(
@@ -257,6 +326,21 @@
)?;
}
- Ok(token_id)
+ Ok(())
+ }
+
+ fn get_base(base_id: CollectionId) -> Result<NonfungibleHandle<T>, DispatchError> {
+ let collection =
+ <PalletCore<T>>::get_typed_nft_collection(base_id, misc::CollectionType::Base)
+ .map_err(|err| {
+ if err == <CoreError<T>>::CollectionUnknown.into() {
+ <Error<T>>::BaseDoesntExist.into()
+ } else {
+ err
+ }
+ })?;
+ collection.check_is_external()?;
+
+ Ok(collection)
}
}
pallets/proxy-rmrk-equip/src/rpc.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/proxy-rmrk-equip/src/rpc.rs
@@ -0,0 +1,186 @@
+use super::*;
+use pallet_rmrk_core::{misc, property::*};
+use sp_std::vec::Vec;
+
+pub fn base<T: Config>(
+ base_id: RmrkBaseId,
+) -> Result<Option<RmrkBaseInfo<T::AccountId>>, DispatchError> {
+ let (collection, collection_id) =
+ match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
+ {
+ Ok(c) => c,
+ Err(_) => return Ok(None),
+ };
+
+ Ok(Some(RmrkBaseInfo {
+ issuer: collection.owner.clone(),
+ base_type: <PalletCore<T>>::get_collection_property_decoded(
+ collection_id,
+ RmrkProperty::BaseType,
+ )?,
+ symbol: <PalletCore<T>>::rebind(&collection.token_prefix)?,
+ }))
+}
+
+pub fn base_parts<T: Config>(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
+ use pallet_common::CommonCollectionOperations;
+
+ let (collection, collection_id) =
+ match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
+ {
+ Ok(c) => c,
+ Err(_) => return Ok(Vec::new()),
+ };
+
+ let parts = collection
+ .collection_tokens()
+ .into_iter()
+ .filter_map(|token_id| {
+ let nft_type = <PalletCore<T>>::get_nft_type(collection_id, token_id).ok()?;
+
+ match nft_type {
+ NftType::FixedPart => Some(RmrkPartType::FixedPart(RmrkFixedPart {
+ id: <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::ExternalPartId,
+ )
+ .ok()?,
+ src: <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::Src,
+ )
+ .ok()?,
+ z: <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::ZIndex,
+ )
+ .ok()?,
+ })),
+ NftType::SlotPart => Some(RmrkPartType::SlotPart(RmrkSlotPart {
+ id: <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::ExternalPartId,
+ )
+ .ok()?,
+ src: <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::Src,
+ )
+ .ok()?,
+ z: <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::ZIndex,
+ )
+ .ok()?,
+ equippable: <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::EquippableList,
+ )
+ .ok()?,
+ })),
+ _ => None,
+ }
+ })
+ .collect();
+
+ Ok(parts)
+}
+
+pub fn theme_names<T: Config>(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
+ use pallet_common::CommonCollectionOperations;
+
+ let (collection, collection_id) =
+ match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
+ {
+ Ok(c) => c,
+ Err(_) => return Ok(Vec::new()),
+ };
+
+ let theme_names = collection
+ .collection_tokens()
+ .iter()
+ .filter_map(|token_id| {
+ let nft_type = <PalletCore<T>>::get_nft_type(collection_id, *token_id).ok()?;
+
+ match nft_type {
+ NftType::Theme => <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ *token_id,
+ RmrkProperty::ThemeName,
+ )
+ .ok(),
+ _ => None,
+ }
+ })
+ .collect();
+
+ Ok(theme_names)
+}
+
+pub fn theme<T: Config>(
+ base_id: RmrkBaseId,
+ theme_name: RmrkThemeName,
+ filter_keys: Option<Vec<RmrkPropertyKey>>,
+) -> Result<Option<RmrkTheme>, DispatchError> {
+ use pallet_common::CommonCollectionOperations;
+
+ let (collection, collection_id) =
+ match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
+ {
+ Ok(c) => c,
+ Err(_) => return Ok(None),
+ };
+
+ let theme_info = collection
+ .collection_tokens()
+ .into_iter()
+ .find_map(|token_id| {
+ <PalletCore<T>>::ensure_nft_type(collection_id, token_id, NftType::Theme).ok()?;
+
+ let name: RmrkString = <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ token_id,
+ RmrkProperty::ThemeName,
+ )
+ .ok()?;
+
+ if name == theme_name {
+ Some((name, token_id))
+ } else {
+ None
+ }
+ });
+
+ let (name, theme_id) = match theme_info {
+ Some((name, theme_id)) => (name, theme_id),
+ None => return Ok(None),
+ };
+
+ let properties = <PalletCore<T>>::filter_user_properties(
+ collection_id,
+ Some(theme_id),
+ filter_keys,
+ |key, value| RmrkThemeProperty { key, value },
+ )?;
+
+ let inherit = <PalletCore<T>>::get_nft_property_decoded(
+ collection_id,
+ theme_id,
+ RmrkProperty::ThemeInherit,
+ )?;
+
+ let theme = RmrkTheme {
+ name,
+ properties,
+ inherit,
+ };
+
+ Ok(Some(theme))
+}
pallets/proxy-rmrk-equip/src/weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/proxy-rmrk-equip/src/weights.rs
@@ -0,0 +1,138 @@
+// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
+
+//! Autogenerated weights for pallet_proxy_rmrk_equip
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
+//! DATE: 2022-06-20, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
+
+// Executed Command:
+// target/release/unique-collator
+// benchmark
+// pallet
+// --pallet
+// pallet-proxy-rmrk-equip
+// --wasm-execution
+// compiled
+// --extrinsic
+// *
+// --template
+// .maintain/frame-weight-template.hbs
+// --steps=50
+// --repeat=80
+// --heap-pages=4096
+// --output=./pallets/proxy-rmrk-equip/src/weights.rs
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(clippy::unnecessary_cast)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weight functions needed for pallet_proxy_rmrk_equip.
+pub trait WeightInfo {
+ fn create_base(b: u32, ) -> Weight;
+ fn theme_add(b: u32, ) -> Weight;
+ fn equippable() -> Weight;
+}
+
+/// Weights for pallet_proxy_rmrk_equip using the Substrate node and recommended hardware.
+pub struct SubstrateWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
+ // Storage: Common CreatedCollectionCount (r:1 w:1)
+ // Storage: Common DestroyedCollectionCount (r:1 w:0)
+ // Storage: System Account (r:2 w:2)
+ // Storage: Common CollectionPropertyPermissions (r:0 w:1)
+ // Storage: Common CollectionProperties (r:0 w:1)
+ // Storage: Common CollectionById (r:0 w:1)
+ // Storage: RmrkEquip InernalPartId (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ fn create_base(b: u32, ) -> Weight {
+ (44_927_000 as Weight)
+ // Standard Error: 9_000
+ .saturating_add((18_896_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(6 as Weight))
+ .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(T::DbWeight::get().writes(8 as Weight))
+ .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: RmrkEquip BaseHasDefaultTheme (r:1 w:0)
+ // Storage: Nonfungible TokensMinted (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ fn theme_add(b: u32, ) -> Weight {
+ (39_120_000 as Weight)
+ // Standard Error: 11_000
+ .saturating_add((2_367_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(6 as Weight))
+ .saturating_add(T::DbWeight::get().writes(5 as Weight))
+ }
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: RmrkEquip InernalPartId (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ fn equippable() -> Weight {
+ (27_172_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+ // Storage: Common CreatedCollectionCount (r:1 w:1)
+ // Storage: Common DestroyedCollectionCount (r:1 w:0)
+ // Storage: System Account (r:2 w:2)
+ // Storage: Common CollectionPropertyPermissions (r:0 w:1)
+ // Storage: Common CollectionProperties (r:0 w:1)
+ // Storage: Common CollectionById (r:0 w:1)
+ // Storage: RmrkEquip InernalPartId (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ fn create_base(b: u32, ) -> Weight {
+ (44_927_000 as Weight)
+ // Standard Error: 9_000
+ .saturating_add((18_896_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(6 as Weight))
+ .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(RocksDbWeight::get().writes(8 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: RmrkEquip BaseHasDefaultTheme (r:1 w:0)
+ // Storage: Nonfungible TokensMinted (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:1 w:1)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:0 w:1)
+ // Storage: Nonfungible Owned (r:0 w:1)
+ fn theme_add(b: u32, ) -> Weight {
+ (39_120_000 as Weight)
+ // Standard Error: 11_000
+ .saturating_add((2_367_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(6 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(5 as Weight))
+ }
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: RmrkEquip InernalPartId (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:1)
+ fn equippable() -> Weight {
+ (27_172_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+}
pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -77,16 +77,19 @@
0
}
- fn set_token_properties(amount: u32) -> Weight {
- <SelfWeightOf<T>>::set_token_properties(amount)
+ fn set_token_properties(_amount: u32) -> Weight {
+ // Error
+ 0
}
- fn delete_token_properties(amount: u32) -> Weight {
- <SelfWeightOf<T>>::delete_token_properties(amount)
+ fn delete_token_properties(_amount: u32) -> Weight {
+ // Error
+ 0
}
- fn set_property_permissions(amount: u32) -> Weight {
- <SelfWeightOf<T>>::set_property_permissions(amount)
+ fn set_token_property_permissions(_amount: u32) -> Weight {
+ // Error
+ 0
}
fn transfer() -> Weight {
@@ -315,7 +318,7 @@
fail!(<Error<T>>::SettingPropertiesNotAllowed)
}
- fn set_property_permissions(
+ fn set_token_property_permissions(
&self,
_sender: &T::CrossAccountId,
_property_permissions: Vec<PropertyKeyPermission>,
pallets/refungible/src/weights.rsdiffbeforeafterboth--- a/pallets/refungible/src/weights.rs
+++ b/pallets/refungible/src/weights.rs
@@ -3,12 +3,13 @@
//! Autogenerated weights for pallet_refungible
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
// target/release/unique-collator
// benchmark
+// pallet
// --pallet
// pallet-refungible
// --wasm-execution
@@ -18,7 +19,7 @@
// --template
// .maintain/frame-weight-template.hbs
// --steps=50
-// --repeat=200
+// --repeat=80
// --heap-pages=4096
// --output=./pallets/refungible/src/weights.rs
@@ -38,9 +39,6 @@
fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight;
fn burn_item_partial() -> Weight;
fn burn_item_fully() -> Weight;
- fn set_token_properties(amount: u32) -> Weight;
- fn delete_token_properties(amount: u32) -> Weight;
- fn set_property_permissions(amount: u32) -> Weight;
fn transfer_normal() -> Weight;
fn transfer_creating() -> Weight;
fn transfer_removing() -> Weight;
@@ -63,7 +61,7 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (21_255_000 as Weight)
+ (21_321_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
@@ -74,9 +72,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (18_052_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((5_549_000 as Weight).saturating_mul(b as Weight))
+ (16_313_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
.saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
@@ -88,9 +86,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {
- (15_766_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((8_187_000 as Weight).saturating_mul(b as Weight))
+ (15_631_000 as Weight)
+ // Standard Error: 5_000
+ .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
@@ -103,9 +101,9 @@
// Storage: Refungible Balance (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {
- (5_675_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((6_315_000 as Weight).saturating_mul(b as Weight))
+ (11_191_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
@@ -116,7 +114,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_item_partial() -> Weight {
- (23_518_000 as Weight)
+ (24_421_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -127,29 +125,13 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_item_fully() -> Weight {
- (32_489_000 as Weight)
+ (32_900_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
-
- fn set_token_properties(_amount: u32) -> Weight {
- // Error
- 0
- }
-
- fn delete_token_properties(_amount: u32) -> Weight {
- // Error
- 0
- }
-
- fn set_property_permissions(_amount: u32) -> Weight {
- // Error
- 0
- }
-
// Storage: Refungible Balance (r:2 w:2)
fn transfer_normal() -> Weight {
- (19_766_000 as Weight)
+ (20_215_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
@@ -157,7 +139,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_creating() -> Weight {
- (23_360_000 as Weight)
+ (24_809_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -165,7 +147,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_removing() -> Weight {
- (25_344_000 as Weight)
+ (26_704_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -173,21 +155,21 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_creating_removing() -> Weight {
- (28_553_000 as Weight)
+ (28_728_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
// Storage: Refungible Balance (r:1 w:0)
// Storage: Refungible Allowance (r:0 w:1)
fn approve() -> Weight {
- (15_356_000 as Weight)
+ (16_107_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Refungible Allowance (r:1 w:1)
// Storage: Refungible Balance (r:2 w:2)
fn transfer_from_normal() -> Weight {
- (28_832_000 as Weight)
+ (28_765_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
}
@@ -196,7 +178,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_creating() -> Weight {
- (32_132_000 as Weight)
+ (32_788_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -205,7 +187,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_removing() -> Weight {
- (33_237_000 as Weight)
+ (34_523_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -214,7 +196,7 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_from_creating_removing() -> Weight {
- (36_399_000 as Weight)
+ (36_749_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(7 as Weight))
}
@@ -226,7 +208,7 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_from() -> Weight {
- (42_043_000 as Weight)
+ (42_259_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(7 as Weight))
}
@@ -241,7 +223,7 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (21_255_000 as Weight)
+ (21_321_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
@@ -252,9 +234,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (18_052_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((5_549_000 as Weight).saturating_mul(b as Weight))
+ (16_313_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
.saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
@@ -266,9 +248,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {
- (15_766_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((8_187_000 as Weight).saturating_mul(b as Weight))
+ (15_631_000 as Weight)
+ // Standard Error: 5_000
+ .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
@@ -281,9 +263,9 @@
// Storage: Refungible Balance (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {
- (5_675_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((6_315_000 as Weight).saturating_mul(b as Weight))
+ (11_191_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
@@ -294,7 +276,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_item_partial() -> Weight {
- (23_518_000 as Weight)
+ (24_421_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -305,29 +287,13 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_item_fully() -> Weight {
- (32_489_000 as Weight)
+ (32_900_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
- }
-
- fn set_token_properties(_amount: u32) -> Weight {
- // Error
- 0
- }
-
- fn delete_token_properties(_amount: u32) -> Weight {
- // Error
- 0
- }
-
- fn set_property_permissions(_amount: u32) -> Weight {
- // Error
- 0
}
-
// Storage: Refungible Balance (r:2 w:2)
fn transfer_normal() -> Weight {
- (19_766_000 as Weight)
+ (20_215_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
@@ -335,7 +301,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_creating() -> Weight {
- (23_360_000 as Weight)
+ (24_809_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -343,7 +309,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_removing() -> Weight {
- (25_344_000 as Weight)
+ (26_704_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -351,21 +317,21 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_creating_removing() -> Weight {
- (28_553_000 as Weight)
+ (28_728_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
// Storage: Refungible Balance (r:1 w:0)
// Storage: Refungible Allowance (r:0 w:1)
fn approve() -> Weight {
- (15_356_000 as Weight)
+ (16_107_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Refungible Allowance (r:1 w:1)
// Storage: Refungible Balance (r:2 w:2)
fn transfer_from_normal() -> Weight {
- (28_832_000 as Weight)
+ (28_765_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
}
@@ -374,7 +340,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_creating() -> Weight {
- (32_132_000 as Weight)
+ (32_788_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -383,7 +349,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_removing() -> Weight {
- (33_237_000 as Weight)
+ (34_523_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -392,7 +358,7 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_from_creating_removing() -> Weight {
- (36_399_000 as Weight)
+ (36_749_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(7 as Weight))
}
@@ -404,7 +370,7 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_from() -> Weight {
- (42_043_000 as Weight)
+ (42_259_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(7 as Weight))
}
pallets/scheduler/Cargo.tomldiffbeforeafterboth--- a/pallets/scheduler/Cargo.toml
+++ b/pallets/scheduler/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "pallet-unq-scheduler"
+name = "pallet-unique-scheduler"
version = "0.1.0"
authors = ["Unique Network <support@uniquenetwork.io>"]
edition = "2021"
pallets/scheduler/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/scheduler/src/benchmarking.rs
+++ b/pallets/scheduler/src/benchmarking.rs
@@ -34,35 +34,57 @@
//! Scheduler pallet benchmarking.
-#![cfg(feature = "runtime-benchmarks")]
-
use super::*;
-use sp_std::{vec, prelude::*};
+use frame_benchmarking::{benchmarks, account};
+use frame_support::{
+ ensure,
+ traits::{OnInitialize},
+};
use frame_system::RawOrigin;
-use frame_support::{ensure, traits::OnInitialize};
-use frame_benchmarking::{benchmarks, impl_benchmark_test_suite};
+use sp_runtime::traits::Hash;
+use sp_std::{prelude::*, vec};
-use crate::Module as Scheduler;
+use crate::Pallet as Scheduler;
use frame_system::Pallet as System;
+use frame_support::traits::Currency;
const BLOCK_NUMBER: u32 = 2;
-// Add `n` named items to the schedule
-fn fill_schedule<T: Config>(when: T::BlockNumber, n: u32) -> Result<(), &'static str> {
- // Essentially a no-op call.
- let call = frame_system::Call::set_storage { items: vec![] };
+/// Add `n` named items to the schedule.
+///
+/// For `resolved`:
+/// - `None`: aborted (hash without preimage)
+/// - `Some(true)`: hash resolves into call if possible, plain call otherwise
+/// - `Some(false)`: plain call
+fn fill_schedule<T: Config>(
+ when: T::BlockNumber,
+ n: u32,
+ periodic: bool,
+ resolved: Option<bool>,
+) -> Result<(), &'static str> {
+ let t = DispatchTime::At(when);
+ let caller = account("user", 0, 1);
+
+ // Give the sender account max funds for transfer (their account will never reasonably be killed).
+ T::Currency::make_free_balance_be(&caller, T::Currency::minimum_balance());
+
for i in 0..n {
- // Named schedule is strictly heavier than anonymous
- Scheduler::<T>::do_schedule_named(
- i.encode(),
- DispatchTime::At(when),
- // Add periodicity
- Some((T::BlockNumber::one(), 100)),
- // HARD_DEADLINE priority means it gets executed no matter what
- 0,
- frame_system::RawOrigin::Root.into(),
- call.clone().into(),
- )?;
+ let (call, hash) = call_and_hash::<T>(i);
+ let call_or_hash = match resolved {
+ Some(_) => call.into(),
+ None => CallOrHashOf::<T>::Hash(hash),
+ };
+ let period = match periodic {
+ true => Some(((i + 100).into(), 100)),
+ false => None,
+ };
+
+ let slice_id: [u8; 4] = i.encode().try_into().unwrap();
+ let mut id: [u8; 16] = [0; 16];
+ id[..4].clone_from_slice(&slice_id);
+
+ let origin = frame_system::RawOrigin::Signed(caller.clone()).into();
+ Scheduler::<T>::do_schedule_named(id, t, period, 0, origin, call_or_hash)?;
}
ensure!(
Agenda::<T>::get(when).len() == n as usize,
@@ -71,54 +93,121 @@
Ok(())
}
+fn call_and_hash<T: Config>(i: u32) -> (<T as Config>::Call, T::Hash) {
+ // Essentially a no-op call.
+ let call: <T as Config>::Call = frame_system::Call::remark { remark: i.encode() }.into();
+ let hash = T::Hashing::hash_of(&call);
+ (call, hash)
+}
+
benchmarks! {
- schedule {
- let s in 0 .. T::MaxScheduledPerBlock::get();
+ on_initialize_periodic_named_resolved {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
let when = BLOCK_NUMBER.into();
- let periodic = Some((T::BlockNumber::one(), 100));
- let priority = 0;
- // Essentially a no-op call.
- let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into());
+ fill_schedule::<T>(when, s, true, Some(true))?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
+ verify {
+ assert_eq!(System::<T>::event_count(), s);
+ for i in 0..s {
+ assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);
+ }
+ }
- fill_schedule::<T>(when, s)?;
- }: _(RawOrigin::Root, when, periodic, priority, call)
+ on_initialize_named_resolved {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
+ let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, false, Some(true))?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
verify {
- ensure!(
- Agenda::<T>::get(when).len() == (s + 1) as usize,
- "didn't add to schedule"
- );
+ assert_eq!(System::<T>::event_count(), s);
+ assert!(Agenda::<T>::iter().count() == 0);
}
- cancel {
+ on_initialize_periodic {
let s in 1 .. T::MaxScheduledPerBlock::get();
let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, true, Some(false))?;
+ }: { Scheduler::<T>::on_initialize(when); }
+ verify {
+ assert_eq!(System::<T>::event_count(), s);
+ for i in 0..s {
+ assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);
+ }
+ }
- fill_schedule::<T>(when, s)?;
- assert_eq!(Agenda::<T>::get(when).len(), s as usize);
- }: _(RawOrigin::Root, when, 0)
+ on_initialize_periodic_resolved {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
+ let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, true, Some(true))?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
verify {
- ensure!(
- Lookup::<T>::get(0.encode()).is_none(),
- "didn't remove from lookup"
- );
- // Removed schedule is NONE
- ensure!(
- Agenda::<T>::get(when)[0].is_none(),
- "didn't remove from schedule"
- );
+ assert_eq!(System::<T>::event_count(), s );
+ for i in 0..s {
+ assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);
+ }
}
+ on_initialize_aborted {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
+ let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, false, None)?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
+ verify {
+ assert_eq!(System::<T>::event_count(), 0);
+ }
+
+ on_initialize_named_aborted {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
+ let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, false, Some(false))?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
+ verify {
+ }
+
+ on_initialize_named {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
+ let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, false, None)?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
+ verify {
+ assert_eq!(System::<T>::event_count(), 0);
+ }
+
+ on_initialize {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
+ let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, false, Some(false))?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
+ verify {
+ assert_eq!(System::<T>::event_count(), s);
+ assert!(Agenda::<T>::iter().count() == 0);
+ }
+
+ on_initialize_resolved {
+ let s in 1 .. T::MaxScheduledPerBlock::get();
+ let when = BLOCK_NUMBER.into();
+ fill_schedule::<T>(when, s, false, Some(true))?;
+ }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
+ verify {
+ assert_eq!(System::<T>::event_count(), s);
+ assert!(Agenda::<T>::iter().count() == 0);
+ }
+
schedule_named {
+ let caller: T::AccountId = account("user", 0, 1);
+ let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Signed(caller.clone());
let s in 0 .. T::MaxScheduledPerBlock::get();
- let id = s.encode();
+ let slice_id: [u8; 4] = s.encode().try_into().unwrap();
+ let mut id: [u8; 16] = [0; 16];
+ id[..4].clone_from_slice(&slice_id);
let when = BLOCK_NUMBER.into();
let periodic = Some((T::BlockNumber::one(), 100));
let priority = 0;
// Essentially a no-op call.
- let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into());
-
- fill_schedule::<T>(when, s)?;
- }: _(RawOrigin::Root, id, when, periodic, priority, call)
+ let inner_call = frame_system::Call::set_storage { items: vec![] }.into();
+ let call = Box::new(CallOrHashOf::<T>::Value(inner_call));
+ fill_schedule::<T>(when, s, true, Some(false))?;
+ }: _(origin, id, when, periodic, priority, call)
verify {
ensure!(
Agenda::<T>::get(when).len() == (s + 1) as usize,
@@ -127,14 +216,16 @@
}
cancel_named {
+ let caller: T::AccountId = account("user", 0, 1);
+ let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Signed(caller.clone());
let s in 1 .. T::MaxScheduledPerBlock::get();
let when = BLOCK_NUMBER.into();
-
- fill_schedule::<T>(when, s)?;
- }: _(RawOrigin::Root, 0.encode())
+ let id = 0.encode().try_into().unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
+ fill_schedule::<T>(when, s, true, Some(false))?;
+ }: _(origin, id)
verify {
ensure!(
- Lookup::<T>::get(0.encode()).is_none(),
+ Lookup::<T>::get(id).is_none(),
"didn't remove from lookup"
);
// Removed schedule is NONE
@@ -144,21 +235,5 @@
);
}
- // TODO [#7141]: Make this more complex and flexible so it can be used in automation.
- #[extra]
- on_initialize {
- let s in 0 .. T::MaxScheduledPerBlock::get();
- let when = BLOCK_NUMBER.into();
- fill_schedule::<T>(when, s)?;
- }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
- verify {
- assert_eq!(System::<T>::event_count(), s);
- // Next block should have all the schedules again
- ensure!(
- Agenda::<T>::get(when + T::BlockNumber::one()).len() == s as usize,
- "didn't append schedule"
- );
- }
+ impl_benchmark_test_suite!(Scheduler, crate::mock::new_test_ext(), crate::mock::Test);
}
-
-impl_benchmark_test_suite!(Scheduler, crate::tests::new_test_ext(), crate::tests::Test,);
pallets/scheduler/src/lib.rsdiffbeforeafterboth--- a/pallets/scheduler/src/lib.rs
+++ b/pallets/scheduler/src/lib.rs
@@ -60,9 +60,8 @@
// Ensure we're `no_std` when compiling for Wasm.
#![cfg_attr(not(feature = "std"), no_std)]
-// FIXME
-// #[cfg(feature = "runtime-benchmarks")]
-// mod benchmarking;
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
pub mod weights;
@@ -159,11 +158,10 @@
Self::on_initialize_periodic(2) - Self::on_initialize_periodic(1)
}
(true, true, Some(false)) => {
- Self::on_initialize_periodic_named(2) - Self::on_initialize_periodic_named(1)
- }
- (false, false, Some(true)) => {
- Self::on_initialize_resolved(2) - Self::on_initialize_resolved(1)
+ Self::on_initialize_periodic_named_resolved(2)
+ - Self::on_initialize_periodic_named_resolved(1)
}
+ (false, false, Some(true)) => Self::on_initialize(2) - Self::on_initialize(1),
(false, true, Some(true)) => {
Self::on_initialize_named_resolved(2) - Self::on_initialize_named_resolved(1)
}
@@ -608,97 +606,8 @@
}
Ok(when)
- }
-
- fn do_schedule(
- when: DispatchTime<T::BlockNumber>,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: schedule::Priority,
- origin: T::PalletsOrigin,
- call: CallOrHashOf<T>,
- ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- let when = Self::resolve_time(when)?;
- call.ensure_requested::<T::PreimageProvider>();
-
- // sanitize maybe_periodic
- let maybe_periodic = maybe_periodic
- .filter(|p| p.1 > 1 && !p.0.is_zero())
- // Remove one from the number of repetitions since we will schedule one now.
- .map(|(p, c)| (p, c - 1));
- let s = Some(Scheduled {
- maybe_id: None,
- priority,
- call,
- maybe_periodic,
- origin,
- _phantom: PhantomData::<T::AccountId>::default(),
- });
- Agenda::<T>::append(when, s);
- let index = Agenda::<T>::decode_len(when).unwrap_or(1) as u32 - 1;
- Self::deposit_event(Event::Scheduled { when, index });
-
- Ok((when, index))
}
- fn do_cancel(
- origin: Option<T::PalletsOrigin>,
- (when, index): TaskAddress<T::BlockNumber>,
- ) -> Result<(), DispatchError> {
- let scheduled = Agenda::<T>::try_mutate(when, |agenda| {
- agenda.get_mut(index as usize).map_or(
- Ok(None),
- |s| -> Result<Option<Scheduled<_, _, _, _>>, DispatchError> {
- if let (Some(ref o), Some(ref s)) = (origin, s.borrow()) {
- if matches!(
- T::OriginPrivilegeCmp::cmp_privilege(o, &s.origin),
- Some(Ordering::Less) | None
- ) {
- return Err(BadOrigin.into());
- }
- };
- Ok(s.take())
- },
- )
- })?;
- if let Some(s) = scheduled {
- s.call.ensure_unrequested::<T::PreimageProvider>();
- if let Some(id) = s.maybe_id {
- Lookup::<T>::remove(id);
- }
- Self::deposit_event(Event::Canceled { when, index });
- Ok(())
- } else {
- Err(Error::<T>::NotFound)?
- }
- }
-
- fn do_reschedule(
- (when, index): TaskAddress<T::BlockNumber>,
- new_time: DispatchTime<T::BlockNumber>,
- ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- let new_time = Self::resolve_time(new_time)?;
-
- if new_time == when {
- return Err(Error::<T>::RescheduleNoChange.into());
- }
-
- Agenda::<T>::try_mutate(when, |agenda| -> DispatchResult {
- let task = agenda.get_mut(index as usize).ok_or(Error::<T>::NotFound)?;
- let task = task.take().ok_or(Error::<T>::NotFound)?;
- Agenda::<T>::append(new_time, Some(task));
- Ok(())
- })?;
-
- let new_index = Agenda::<T>::decode_len(new_time).unwrap_or(1) as u32 - 1;
- Self::deposit_event(Event::Canceled { when, index });
- Self::deposit_event(Event::Scheduled {
- when: new_time,
- index: new_index,
- });
-
- Ok((new_time, new_index))
- }
-
fn do_schedule_named(
id: ScheduledId,
when: DispatchTime<T::BlockNumber>,
@@ -789,125 +698,5 @@
Err(Error::<T>::NotFound)?
}
})
- }
-
- fn do_reschedule_named(
- id: ScheduledId,
- new_time: DispatchTime<T::BlockNumber>,
- ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- let new_time = Self::resolve_time(new_time)?;
-
- Lookup::<T>::try_mutate_exists(
- id,
- |lookup| -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- let (when, index) = lookup.ok_or(Error::<T>::NotFound)?;
-
- if new_time == when {
- return Err(Error::<T>::RescheduleNoChange.into());
- }
-
- Agenda::<T>::try_mutate(when, |agenda| -> DispatchResult {
- let task = agenda.get_mut(index as usize).ok_or(Error::<T>::NotFound)?;
- let task = task.take().ok_or(Error::<T>::NotFound)?;
- Agenda::<T>::append(new_time, Some(task));
-
- Ok(())
- })?;
-
- let new_index = Agenda::<T>::decode_len(new_time).unwrap_or(1) as u32 - 1;
- Self::deposit_event(Event::Canceled { when, index });
- Self::deposit_event(Event::Scheduled {
- when: new_time,
- index: new_index,
- });
-
- *lookup = Some((new_time, new_index));
-
- Ok((new_time, new_index))
- },
- )
- }
-}
-
-impl<T: Config> schedule::v2::Anon<T::BlockNumber, <T as Config>::Call, T::PalletsOrigin>
- for Pallet<T>
-{
- type Address = TaskAddress<T::BlockNumber>;
- type Hash = T::Hash;
-
- fn schedule(
- when: DispatchTime<T::BlockNumber>,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: schedule::Priority,
- origin: T::PalletsOrigin,
- call: CallOrHashOf<T>,
- ) -> Result<Self::Address, DispatchError> {
- Self::do_schedule(when, maybe_periodic, priority, origin, call)
- }
-
- fn cancel((when, index): Self::Address) -> Result<(), ()> {
- Self::do_cancel(None, (when, index)).map_err(|_| ())
- }
-
- fn reschedule(
- address: Self::Address,
- when: DispatchTime<T::BlockNumber>,
- ) -> Result<Self::Address, DispatchError> {
- Self::do_reschedule(address, when)
- }
-
- fn next_dispatch_time((when, index): Self::Address) -> Result<T::BlockNumber, ()> {
- Agenda::<T>::get(when)
- .get(index as usize)
- .ok_or(())
- .map(|_| when)
- }
-}
-
-impl<T: Config> schedule::v2::Named<T::BlockNumber, <T as Config>::Call, T::PalletsOrigin>
- for Pallet<T>
-{
- type Address = TaskAddress<T::BlockNumber>;
- type Hash = T::Hash;
-
- fn schedule_named(
- id: Vec<u8>,
- when: DispatchTime<T::BlockNumber>,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: schedule::Priority,
- origin: T::PalletsOrigin,
- call: CallOrHashOf<T>,
- ) -> Result<Self::Address, ()> {
- let inner_id: ScheduledId = id
- .try_into()
- .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
- Self::do_schedule_named(inner_id, when, maybe_periodic, priority, origin, call)
- .map_err(|_| ())
- }
-
- fn cancel_named(id: Vec<u8>) -> Result<(), ()> {
- let inner_id: ScheduledId = id
- .try_into()
- .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
- Self::do_cancel_named(None, inner_id).map_err(|_| ())
- }
-
- fn reschedule_named(
- id: Vec<u8>,
- when: DispatchTime<T::BlockNumber>,
- ) -> Result<Self::Address, DispatchError> {
- let inner_id: ScheduledId = id
- .try_into()
- .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
- Self::do_reschedule_named(inner_id, when)
- }
-
- fn next_dispatch_time(id: Vec<u8>) -> Result<T::BlockNumber, ()> {
- let inner_id: ScheduledId = id
- .try_into()
- .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
- Lookup::<T>::get(inner_id)
- .and_then(|(when, index)| Agenda::<T>::get(when).get(index as usize).map(|_| when))
- .ok_or(())
}
}
pallets/scheduler/src/weights.rsdiffbeforeafterboth--- a/pallets/scheduler/src/weights.rs
+++ b/pallets/scheduler/src/weights.rs
@@ -1,213 +1,183 @@
-// This file is part of Substrate.
-
-// Copyright (C) 2022 Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: Apache-2.0
-
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
-//! Autogenerated weights for pallet_scheduler
+//! Autogenerated weights for pallet_unique_scheduler
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-01-31, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
-//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
-// ./target/production/substrate
+// target/release/unique-collator
// benchmark
-// --chain=dev
+// pallet
+// --pallet
+// pallet-unique-scheduler
+// --wasm-execution
+// compiled
+// --extrinsic
+// *
+// --template
+// .maintain/frame-weight-template.hbs
// --steps=50
-// --repeat=20
-// --pallet=pallet_scheduler
-// --extrinsic=*
-// --execution=wasm
-// --wasm-execution=compiled
+// --repeat=80
// --heap-pages=4096
-// --output=./frame/scheduler/src/weights.rs
-// --template=.maintain/frame-weight-template.hbs
-// --header=HEADER-APACHE2
-// --raw
+// --output=./pallets/scheduler/src/weights.rs
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
#![allow(unused_imports)]
+#![allow(clippy::unnecessary_cast)]
use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
use sp_std::marker::PhantomData;
-/// Weight functions needed for pallet_scheduler.
+/// Weight functions needed for pallet_unique_scheduler.
pub trait WeightInfo {
fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight;
fn on_initialize_named_resolved(s: u32, ) -> Weight;
+ fn on_initialize_periodic(s: u32, ) -> Weight;
fn on_initialize_periodic_resolved(s: u32, ) -> Weight;
- fn on_initialize_resolved(s: u32, ) -> Weight;
+ fn on_initialize_aborted(s: u32, ) -> Weight;
fn on_initialize_named_aborted(s: u32, ) -> Weight;
- fn on_initialize_aborted(s: u32, ) -> Weight;
- fn on_initialize_periodic_named(s: u32, ) -> Weight;
- fn on_initialize_periodic(s: u32, ) -> Weight;
fn on_initialize_named(s: u32, ) -> Weight;
fn on_initialize(s: u32, ) -> Weight;
- fn schedule(s: u32, ) -> Weight;
- fn cancel(s: u32, ) -> Weight;
+ fn on_initialize_resolved(s: u32, ) -> Weight;
fn schedule_named(s: u32, ) -> Weight;
fn cancel_named(s: u32, ) -> Weight;
}
-/// Weights for pallet_scheduler using the Substrate node and recommended hardware.
+/// Weights for pallet_unique_scheduler using the Substrate node and recommended hardware.
pub struct SubstrateWeight<T>(PhantomData<T>);
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {
- (11_587_000 as Weight)
- // Standard Error: 17_000
- .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(s as Weight)))
+ (27_374_000 as Weight)
+ // Standard Error: 7_000
+ .saturating_add((9_673_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:1 w:1)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_named_resolved(s: u32, ) -> Weight {
- (8_965_000 as Weight)
- // Standard Error: 11_000
- .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))
+ (25_967_000 as Weight)
+ // Standard Error: 6_000
+ .saturating_add((5_916_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
- fn on_initialize_periodic_resolved(s: u32, ) -> Weight {
- (8_654_000 as Weight)
- // Standard Error: 17_000
- .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
- fn on_initialize_resolved(s: u32, ) -> Weight {
- (9_303_000 as Weight)
- // Standard Error: 10_000
- .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
+ // Storage: Scheduler Lookup (r:0 w:1)
+ fn on_initialize_periodic(s: u32, ) -> Weight {
+ (27_097_000 as Weight)
+ // Standard Error: 5_000
+ .saturating_add((9_652_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
.saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:0)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
- fn on_initialize_named_aborted(s: u32, ) -> Weight {
- (7_506_000 as Weight)
- // Standard Error: 3_000
- .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ fn on_initialize_periodic_resolved(s: u32, ) -> Weight {
+ (43_116_000 as Weight)
+ // Standard Error: 18_000
+ .saturating_add((8_352_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
- .saturating_add(T::DbWeight::get().writes(2 as Weight))
- .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:0)
+ // Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_aborted(s: u32, ) -> Weight {
- (8_046_000 as Weight)
- // Standard Error: 3_000
- .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight))
+ (4_921_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((2_249_000 as Weight).saturating_mul(s as Weight))
.saturating_add(T::DbWeight::get().reads(2 as Weight))
- .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
- // Storage: Scheduler Agenda (r:2 w:2)
+ // Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
- fn on_initialize_periodic_named(s: u32, ) -> Weight {
- (13_704_000 as Weight)
- // Standard Error: 4_000
- .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
- }
- // Storage: Scheduler Agenda (r:2 w:2)
- fn on_initialize_periodic(s: u32, ) -> Weight {
- (12_668_000 as Weight)
- // Standard Error: 5_000
- .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ fn on_initialize_named_aborted(s: u32, ) -> Weight {
+ (26_934_000 as Weight)
+ // Standard Error: 7_000
+ .saturating_add((5_819_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
.saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
- // Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: Scheduler Agenda (r:2 w:2)
// Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_named(s: u32, ) -> Weight {
- (13_946_000 as Weight)
- // Standard Error: 4_000
- .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ (6_423_000 as Weight)
+ // Standard Error: 1_000
+ .saturating_add((2_141_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(2 as Weight))
.saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
+ // Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize(s: u32, ) -> Weight {
- (13_151_000 as Weight)
- // Standard Error: 4_000
- .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ (27_586_000 as Weight)
+ // Standard Error: 11_000
+ .saturating_add((5_264_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:1 w:1)
- fn schedule(s: u32, ) -> Weight {
- (14_040_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((89_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
- fn cancel(s: u32, ) -> Weight {
- (14_376_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((576_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(2 as Weight))
+ fn on_initialize_resolved(s: u32, ) -> Weight {
+ (24_356_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((5_301_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Lookup (r:1 w:1)
// Storage: Scheduler Agenda (r:1 w:1)
fn schedule_named(s: u32, ) -> Weight {
- (16_806_000 as Weight)
+ (14_871_000 as Weight)
// Standard Error: 1_000
- .saturating_add((102_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add((183_000 as Weight).saturating_mul(s as Weight))
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
// Storage: Scheduler Lookup (r:1 w:1)
// Storage: Scheduler Agenda (r:1 w:1)
fn cancel_named(s: u32, ) -> Weight {
- (15_852_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((590_000 as Weight).saturating_mul(s as Weight))
+ (16_676_000 as Weight)
+ // Standard Error: 1_000
+ .saturating_add((500_000 as Weight).saturating_mul(s as Weight))
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
@@ -216,148 +186,134 @@
// For backwards compatibility and tests
impl WeightInfo for () {
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {
- (11_587_000 as Weight)
- // Standard Error: 17_000
- .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(s as Weight)))
+ (27_374_000 as Weight)
+ // Standard Error: 7_000
+ .saturating_add((9_673_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:1 w:1)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_named_resolved(s: u32, ) -> Weight {
- (8_965_000 as Weight)
- // Standard Error: 11_000
- .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))
+ (25_967_000 as Weight)
+ // Standard Error: 6_000
+ .saturating_add((5_916_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
- fn on_initialize_periodic_resolved(s: u32, ) -> Weight {
- (8_654_000 as Weight)
- // Standard Error: 17_000
- .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- // Storage: Preimage PreimageFor (r:1 w:1)
- // Storage: Preimage StatusFor (r:1 w:1)
- fn on_initialize_resolved(s: u32, ) -> Weight {
- (9_303_000 as Weight)
- // Standard Error: 10_000
- .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
+ // Storage: Scheduler Lookup (r:0 w:1)
+ fn on_initialize_periodic(s: u32, ) -> Weight {
+ (27_097_000 as Weight)
+ // Standard Error: 5_000
+ .saturating_add((9_652_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
.saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:0)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
- fn on_initialize_named_aborted(s: u32, ) -> Weight {
- (7_506_000 as Weight)
- // Standard Error: 3_000
- .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ fn on_initialize_periodic_resolved(s: u32, ) -> Weight {
+ (43_116_000 as Weight)
+ // Standard Error: 18_000
+ .saturating_add((8_352_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
- .saturating_add(RocksDbWeight::get().writes(2 as Weight))
- .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:2 w:2)
- // Storage: Preimage PreimageFor (r:1 w:0)
+ // Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_aborted(s: u32, ) -> Weight {
- (8_046_000 as Weight)
- // Standard Error: 3_000
- .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight))
+ (4_921_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((2_249_000 as Weight).saturating_mul(s as Weight))
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
- .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
- // Storage: Scheduler Agenda (r:2 w:2)
+ // Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
- fn on_initialize_periodic_named(s: u32, ) -> Weight {
- (13_704_000 as Weight)
- // Standard Error: 4_000
- .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
- }
- // Storage: Scheduler Agenda (r:2 w:2)
- fn on_initialize_periodic(s: u32, ) -> Weight {
- (12_668_000 as Weight)
- // Standard Error: 5_000
- .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ fn on_initialize_named_aborted(s: u32, ) -> Weight {
+ (26_934_000 as Weight)
+ // Standard Error: 7_000
+ .saturating_add((5_819_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
- // Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: Scheduler Agenda (r:2 w:2)
// Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize_named(s: u32, ) -> Weight {
- (13_946_000 as Weight)
- // Standard Error: 4_000
- .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ (6_423_000 as Weight)
+ // Standard Error: 1_000
+ .saturating_add((2_141_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(2 as Weight))
.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
+ // Storage: Scheduler Lookup (r:0 w:1)
fn on_initialize(s: u32, ) -> Weight {
- (13_151_000 as Weight)
- // Standard Error: 4_000
- .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ (27_586_000 as Weight)
+ // Standard Error: 11_000
+ .saturating_add((5_264_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Agenda (r:1 w:1)
- fn schedule(s: u32, ) -> Weight {
- (14_040_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((89_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: System AllExtrinsicsLen (r:1 w:1)
+ // Storage: System BlockWeight (r:1 w:1)
// Storage: Scheduler Lookup (r:0 w:1)
- fn cancel(s: u32, ) -> Weight {
- (14_376_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((576_000 as Weight).saturating_mul(s as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(2 as Weight))
+ fn on_initialize_resolved(s: u32, ) -> Weight {
+ (24_356_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((5_301_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
// Storage: Scheduler Lookup (r:1 w:1)
// Storage: Scheduler Agenda (r:1 w:1)
fn schedule_named(s: u32, ) -> Weight {
- (16_806_000 as Weight)
+ (14_871_000 as Weight)
// Standard Error: 1_000
- .saturating_add((102_000 as Weight).saturating_mul(s as Weight))
+ .saturating_add((183_000 as Weight).saturating_mul(s as Weight))
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
// Storage: Scheduler Lookup (r:1 w:1)
// Storage: Scheduler Agenda (r:1 w:1)
fn cancel_named(s: u32, ) -> Weight {
- (15_852_000 as Weight)
- // Standard Error: 2_000
- .saturating_add((590_000 as Weight).saturating_mul(s as Weight))
+ (16_676_000 as Weight)
+ // Standard Error: 1_000
+ .saturating_add((500_000 as Weight).saturating_mul(s as Weight))
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
pallets/structure/src/weights.rsdiffbeforeafterboth--- a/pallets/structure/src/weights.rs
+++ b/pallets/structure/src/weights.rs
@@ -3,12 +3,13 @@
//! Autogenerated weights for pallet_structure
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-03-24, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
// target/release/unique-collator
// benchmark
+// pallet
// --pallet
// pallet-structure
// --wasm-execution
@@ -41,7 +42,7 @@
// Storage: Common CollectionById (r:1 w:0)
// Storage: Nonfungible TokenData (r:1 w:0)
fn find_parent() -> Weight {
- (6_302_000 as Weight)
+ (7_013_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
}
}
@@ -51,7 +52,7 @@
// Storage: Common CollectionById (r:1 w:0)
// Storage: Nonfungible TokenData (r:1 w:0)
fn find_parent() -> Weight {
- (6_302_000 as Weight)
+ (7_013_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
}
}
pallets/unique/src/lib.rsdiffbeforeafterboth--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -491,7 +491,7 @@
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
+ target_collection.check_is_owner_or_admin(&sender)?;
target_collection.check_is_internal()?;
target_collection.set_sponsor(new_sponsor.clone())?;
@@ -670,9 +670,9 @@
dispatch_tx::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))
}
- #[weight = T::CommonWeightInfo::set_property_permissions(property_permissions.len() as u32)]
+ #[weight = T::CommonWeightInfo::set_token_property_permissions(property_permissions.len() as u32)]
#[transactional]
- pub fn set_property_permissions(
+ pub fn set_token_property_permissions(
origin,
collection_id: CollectionId,
property_permissions: Vec<PropertyKeyPermission>,
@@ -681,7 +681,7 @@
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- dispatch_tx::<T, _>(collection_id, |d| d.set_property_permissions(&sender, property_permissions))
+ dispatch_tx::<T, _>(collection_id, |d| d.set_token_property_permissions(&sender, property_permissions))
}
#[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]
@@ -865,7 +865,7 @@
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
target_collection.check_is_internal()?;
- target_collection.check_is_owner(&sender)?;
+ target_collection.check_is_owner_or_admin(&sender)?;
let old_limit = &target_collection.limits;
target_collection.limits = <PalletCommon<T>>::clamp_limits(target_collection.mode.clone(), &old_limit, new_limit)?;
@@ -887,7 +887,7 @@
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
target_collection.check_is_internal()?;
- target_collection.check_is_owner(&sender)?;
+ target_collection.check_is_owner_or_admin(&sender)?;
let old_limit = &target_collection.permissions;
target_collection.permissions = <PalletCommon<T>>::clamp_permissions(target_collection.mode.clone(), &old_limit, new_limit)?;
pallets/unique/src/weights.rsdiffbeforeafterboth--- a/pallets/unique/src/weights.rs
+++ b/pallets/unique/src/weights.rs
@@ -3,12 +3,13 @@
//! Autogenerated weights for pallet_unique
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
// target/release/unique-collator
// benchmark
+// pallet
// --pallet
// pallet-unique
// --wasm-execution
@@ -18,7 +19,7 @@
// --template
// .maintain/frame-weight-template.hbs
// --steps=50
-// --repeat=200
+// --repeat=80
// --heap-pages=4096
// --output=./pallets/unique/src/weights.rs
@@ -36,8 +37,6 @@
fn destroy_collection() -> Weight;
fn add_to_allow_list() -> Weight;
fn remove_from_allow_list() -> Weight;
- fn set_public_access_mode() -> Weight;
- fn set_mint_permission() -> Weight;
fn change_collection_owner() -> Weight;
fn add_collection_admin() -> Weight;
fn remove_collection_admin() -> Weight;
@@ -45,9 +44,6 @@
fn confirm_sponsorship() -> Weight;
fn remove_collection_sponsor() -> Weight;
fn set_transfers_enabled_flag() -> Weight;
- fn set_offchain_schema(b: u32, ) -> Weight;
- fn set_const_on_chain_schema(b: u32, ) -> Weight;
- fn set_schema_version() -> Weight;
fn set_collection_limits() -> Weight;
}
@@ -57,51 +53,43 @@
// Storage: Common CreatedCollectionCount (r:1 w:1)
// Storage: Common DestroyedCollectionCount (r:1 w:0)
// Storage: System Account (r:2 w:2)
+ // Storage: Common CollectionPropertyPermissions (r:0 w:1)
+ // Storage: Common CollectionProperties (r:0 w:1)
// Storage: Common CollectionById (r:0 w:1)
fn create_collection() -> Weight {
- (28_929_000 as Weight)
+ (39_427_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
- .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Common DestroyedCollectionCount (r:1 w:1)
// Storage: Nonfungible TokensMinted (r:0 w:1)
// Storage: Nonfungible TokensBurnt (r:0 w:1)
// Storage: Common AdminAmount (r:0 w:1)
+ // Storage: Common CollectionProperties (r:0 w:1)
fn destroy_collection() -> Weight {
- (40_303_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(2 as Weight))
- .saturating_add(T::DbWeight::get().writes(5 as Weight))
+ (48_339_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(3 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
}
// Storage: Common CollectionById (r:1 w:0)
// Storage: Common Allowlist (r:0 w:1)
fn add_to_allow_list() -> Weight {
- (15_989_000 as Weight)
+ (17_379_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:0)
// Storage: Common Allowlist (r:0 w:1)
fn remove_from_allow_list() -> Weight {
- (15_582_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_public_access_mode() -> Weight {
- (14_846_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_mint_permission() -> Weight {
- (14_534_000 as Weight)
+ (17_490_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn change_collection_owner() -> Weight {
- (14_990_000 as Weight)
+ (17_701_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -109,7 +97,7 @@
// Storage: Common IsAdmin (r:1 w:1)
// Storage: Common AdminAmount (r:1 w:1)
fn add_collection_admin() -> Weight {
- (19_957_000 as Weight)
+ (23_301_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
@@ -117,55 +105,37 @@
// Storage: Common IsAdmin (r:1 w:1)
// Storage: Common AdminAmount (r:1 w:1)
fn remove_collection_admin() -> Weight {
- (21_209_000 as Weight)
+ (24_859_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn set_collection_sponsor() -> Weight {
- (14_963_000 as Weight)
+ (17_795_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn confirm_sponsorship() -> Weight {
- (14_478_000 as Weight)
+ (17_297_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn remove_collection_sponsor() -> Weight {
- (14_393_000 as Weight)
+ (17_079_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn set_transfers_enabled_flag() -> Weight {
- (7_309_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_offchain_schema(_b: u32, ) -> Weight {
- (15_220_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_const_on_chain_schema(_b: u32, ) -> Weight {
- (14_984_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_schema_version() -> Weight {
- (14_596_000 as Weight)
+ (9_734_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn set_collection_limits() -> Weight {
- (15_339_000 as Weight)
+ (17_998_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -176,51 +146,43 @@
// Storage: Common CreatedCollectionCount (r:1 w:1)
// Storage: Common DestroyedCollectionCount (r:1 w:0)
// Storage: System Account (r:2 w:2)
+ // Storage: Common CollectionPropertyPermissions (r:0 w:1)
+ // Storage: Common CollectionProperties (r:0 w:1)
// Storage: Common CollectionById (r:0 w:1)
fn create_collection() -> Weight {
- (28_929_000 as Weight)
+ (39_427_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
- .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
+ // Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Common DestroyedCollectionCount (r:1 w:1)
// Storage: Nonfungible TokensMinted (r:0 w:1)
// Storage: Nonfungible TokensBurnt (r:0 w:1)
// Storage: Common AdminAmount (r:0 w:1)
+ // Storage: Common CollectionProperties (r:0 w:1)
fn destroy_collection() -> Weight {
- (40_303_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(2 as Weight))
- .saturating_add(RocksDbWeight::get().writes(5 as Weight))
+ (48_339_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(3 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
// Storage: Common CollectionById (r:1 w:0)
// Storage: Common Allowlist (r:0 w:1)
fn add_to_allow_list() -> Weight {
- (15_989_000 as Weight)
+ (17_379_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:0)
// Storage: Common Allowlist (r:0 w:1)
fn remove_from_allow_list() -> Weight {
- (15_582_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_public_access_mode() -> Weight {
- (14_846_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_mint_permission() -> Weight {
- (14_534_000 as Weight)
+ (17_490_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn change_collection_owner() -> Weight {
- (14_990_000 as Weight)
+ (17_701_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -228,7 +190,7 @@
// Storage: Common IsAdmin (r:1 w:1)
// Storage: Common AdminAmount (r:1 w:1)
fn add_collection_admin() -> Weight {
- (19_957_000 as Weight)
+ (23_301_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
@@ -236,55 +198,37 @@
// Storage: Common IsAdmin (r:1 w:1)
// Storage: Common AdminAmount (r:1 w:1)
fn remove_collection_admin() -> Weight {
- (21_209_000 as Weight)
+ (24_859_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn set_collection_sponsor() -> Weight {
- (14_963_000 as Weight)
+ (17_795_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn confirm_sponsorship() -> Weight {
- (14_478_000 as Weight)
+ (17_297_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn remove_collection_sponsor() -> Weight {
- (14_393_000 as Weight)
+ (17_079_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
fn set_transfers_enabled_flag() -> Weight {
- (7_309_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_offchain_schema(_b: u32, ) -> Weight {
- (15_220_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_const_on_chain_schema(_b: u32, ) -> Weight {
- (14_984_000 as Weight)
+ (9_734_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionById (r:1 w:1)
- fn set_schema_version() -> Weight {
- (14_596_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
fn set_collection_limits() -> Weight {
- (15_339_000 as Weight)
+ (17_998_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
primitives/data-structs/src/lib.rsdiffbeforeafterboth--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -39,15 +39,15 @@
// RMRK
use rmrk_traits::{
CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,
- ResourceTypes, BasicResource, ComposableResource, SlotResource,
+ ResourceTypes, BasicResource, ComposableResource, SlotResource, EquippableList,
};
pub use rmrk_traits::{
primitives::{
CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,
- PartId as RmrkPartId, ResourceId as RmrkResourceId,
+ SlotId as RmrkSlotId, PartId as RmrkPartId, ResourceId as RmrkResourceId,
},
NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,
- FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart, EquippableList as RmrkEquippableList,
+ FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart,
};
mod bounded;
@@ -104,15 +104,10 @@
pub const MAX_PROPERTY_VALUE_LENGTH: u32 = 32768;
pub const MAX_PROPERTIES_PER_ITEM: u32 = 64;
+pub const MAX_AUX_PROPERTY_VALUE_LENGTH: u32 = 2048;
+
pub const MAX_COLLECTION_PROPERTIES_SIZE: u32 = 40960;
pub const MAX_TOKEN_PROPERTIES_SIZE: u32 = 32768;
-
-// RMRK constants
-pub const RMRK_STRING_LIMIT: u32 = 128;
-pub const RMRK_COLLECTION_SYMBOL_LIMIT: u32 = 100;
-pub const RMRK_RESOURCE_SYMBOL_LIMIT: u32 = 10;
-pub const RMRK_KEY_LIMIT: u32 = 32;
-pub const RMRK_VALUE_LIMIT: u32 = 256;
/// How much items can be created per single
/// create_many call
@@ -416,8 +411,11 @@
.min(MAX_SPONSOR_TIMEOUT)
}
pub fn owner_can_transfer(&self) -> bool {
- self.owner_can_transfer.unwrap_or(true)
+ self.owner_can_transfer.unwrap_or(false)
}
+ pub fn owner_can_transfer_instaled(&self) -> bool {
+ self.owner_can_transfer.is_some()
+ }
pub fn owner_can_destroy(&self) -> bool {
self.owner_can_destroy.unwrap_or(true)
}
@@ -454,7 +452,7 @@
pub fn nesting(&self) -> &NestingPermissions {
static DEFAULT: NestingPermissions = NestingPermissions {
token_owner: false,
- admin: false,
+ collection_admin: false,
restricted: None,
permissive: false,
@@ -497,7 +495,7 @@
/// Owner of token can nest tokens under it
pub token_owner: bool,
/// Admin of token collection can nest tokens under token
- pub admin: bool,
+ pub collection_admin: bool,
/// If set - only tokens from specified collections can be nested
pub restricted: Option<OwnerRestrictedSet>,
@@ -658,8 +656,12 @@
}
}
-pub type PropertyKey = BoundedVec<u8, ConstU32<MAX_PROPERTY_KEY_LENGTH>>;
-pub type PropertyValue = BoundedVec<u8, ConstU32<MAX_PROPERTY_VALUE_LENGTH>>;
+pub type BoundedBytes<S> = BoundedVec<u8, S>;
+
+pub type AuxPropertyValue = BoundedBytes<ConstU32<MAX_AUX_PROPERTY_VALUE_LENGTH>>;
+
+pub type PropertyKey = BoundedBytes<ConstU32<MAX_PROPERTY_KEY_LENGTH>>;
+pub type PropertyValue = BoundedBytes<ConstU32<MAX_PROPERTY_VALUE_LENGTH>>;
#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
@@ -719,7 +721,7 @@
EmptyPropertyKey,
}
-#[derive(Clone, Copy)]
+#[derive(Encode, Decode, MaxEncodedLen, TypeInfo, PartialEq, Clone, Copy)]
pub enum PropertyScope {
None,
Rmrk,
@@ -812,7 +814,7 @@
for byte in key.as_slice().iter() {
let byte = *byte;
- if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' {
+ if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' && byte != b'.' {
return Err(PropertiesError::InvalidCharacterInPropertyKey);
}
}
@@ -946,19 +948,25 @@
#[derive(PartialEq, TypeInfo)]
pub const RmrkStringLimit: u32 = 128;
#[derive(PartialEq)]
- pub const RmrkCollectionSymbolLimit: u32 = 100;
+ pub const RmrkCollectionSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
#[derive(PartialEq)]
pub const RmrkResourceSymbolLimit: u32 = 10;
#[derive(PartialEq)]
+ pub const RmrkBaseSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
+ #[derive(PartialEq)]
pub const RmrkKeyLimit: u32 = 32;
#[derive(PartialEq)]
pub const RmrkValueLimit: u32 = 256;
#[derive(PartialEq)]
pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;
#[derive(PartialEq)]
- pub const RmrkPartsLimit: u32 = 3;
+ pub const MaxPropertiesPerTheme: u32 = 5;
+ #[derive(PartialEq)]
+ pub const RmrkPartsLimit: u32 = 25;
#[derive(PartialEq)]
- pub const RmrkMaxPriorities: u32 = 3;
+ pub const RmrkMaxPriorities: u32 = 25;
+ #[derive(PartialEq)]
+ pub const MaxResourcesOnMint: u32 = 100;
}
impl From<RmrkCollectionId> for CollectionId {
@@ -979,10 +987,13 @@
pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;
pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;
pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;
-pub type RmrkPartType =
- PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;
+pub type BoundedEquippableCollectionIds =
+ BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>;
+pub type RmrkPartType = PartType<RmrkString, BoundedEquippableCollectionIds>;
+pub type RmrkEquippableList = EquippableList<BoundedEquippableCollectionIds>;
pub type RmrkThemeProperty = ThemeProperty<RmrkString>;
pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;
+pub type RmrkBoundedTheme = Theme<RmrkString, BoundedVec<RmrkThemeProperty, MaxPropertiesPerTheme>>;
pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;
pub type RmrkBasicResource = BasicResource<RmrkString>;
@@ -991,6 +1002,7 @@
pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;
pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;
+pub type RmrkBaseSymbol = BoundedVec<u8, RmrkBaseSymbolLimit>;
pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;
pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;
pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;
runtime/common/Cargo.tomldiffbeforeafterboth--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -6,7 +6,7 @@
license = 'All Rights Reserved'
name = 'unique-runtime-common'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.22'
+version = '0.9.23'
[features]
default = ['std']
@@ -89,6 +89,10 @@
default-features = false
path = "../../pallets/refungible"
+[dependencies.pallet-unique-scheduler]
+default-features = false
+path = "../../pallets/scheduler"
+
[dependencies.up-data-structs]
default-features = false
path = "../../primitives/data-structs"
runtime/common/src/constants.rsdiffbeforeafterboth--- a/runtime/common/src/constants.rs
+++ b/runtime/common/src/constants.rs
@@ -38,7 +38,7 @@
pub const WEIGHT_TO_FEE_COEFF: u32 = 142_688_000;
// Targeting 0.15 UNQ per transfer
-pub const MIN_GAS_PRICE: u64 = 1_018_751_825_264;
+pub const MIN_GAS_PRICE: u64 = 1_019_493_469_850;
/// We assume that ~10% of the block weight is consumed by `on_initalize` handlers.
/// This is used to limit the maximal weight of a single extrinsic.
runtime/common/src/dispatch.rsdiffbeforeafterboth--- a/runtime/common/src/dispatch.rs
+++ b/runtime/common/src/dispatch.rs
@@ -112,6 +112,7 @@
+ pallet_fungible::Config
+ pallet_nonfungible::Config
+ pallet_refungible::Config,
+ T::AccountId: From<[u8; 32]>,
{
fn is_reserved(target: &H160) -> bool {
map_eth_to_id(target).is_some()
runtime/common/src/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -144,396 +144,6 @@
}
}
- impl rmrk_rpc::RmrkApi<
- Block,
- AccountId,
- RmrkCollectionInfo<AccountId>,
- RmrkInstanceInfo<AccountId>,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo<AccountId>,
- RmrkPartType,
- RmrkTheme
- > for Runtime {
- fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
- Ok(RmrkCore::last_collection_idx())
- }
-
- fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
- use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- let nfts_count = collection.total_supply();
-
- Ok(Some(RmrkCollectionInfo {
- issuer: collection.owner.clone(),
- metadata: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::Metadata)?,
- max: collection.limits.token_limit,
- symbol: RmrkCore::rebind(&collection.token_prefix)?,
- nfts_count
- }))
- }
-
- fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
- use up_data_structs::mapping::TokenAddressMapping;
- use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- let nft_id = TokenId(nft_by_id);
- if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(None); }
-
- let owner = match collection.token_owner(nft_id) {
- Some(owner) => match <Runtime as pallet_common::Config>::CrossTokenAddressMapping::address_to_token(&owner) {
- Some((col, tok)) => {
- let rmrk_collection = RmrkCore::rmrk_collection_id(col)?;
-
- RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(rmrk_collection, tok.0)
- }
- None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone())
- },
- None => return Ok(None)
- };
-
- Ok(Some(RmrkInstanceInfo {
- owner: owner,
- royalty: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::RoyaltyInfo)?,
- metadata: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Metadata)?,
- equipped: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Equipped)?,
- pending: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::PendingNftAccept)?,
- }))
- }
-
- fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
- use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
- use pallet_common::CommonCollectionOperations;
-
- let cross_account_id = CrossAccountId::from_sub(account_id);
-
- let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {
- Ok(c) => c,
- Err(_) => return Ok(Vec::new()),
- };
-
- let tokens = collection.account_tokens(cross_account_id)
- .into_iter()
- .filter(|token| {
- let is_pending = RmrkCore::get_nft_property_decoded(
- collection_id,
- *token,
- RmrkProperty::PendingNftAccept
- ).unwrap_or(true);
-
- !is_pending
- })
- .map(|token| token.0)
- .collect();
-
- Ok(tokens)
- }
-
- fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
- use pallet_proxy_rmrk_core::RmrkProperty;
-
- let collection_id = match RmrkCore::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new())
- };
- let nft_id = TokenId(nft_id);
- if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(Vec::new()); }
-
- Ok(
- pallet_nonfungible::TokenChildren::<Runtime>::iter_prefix((collection_id, nft_id))
- .filter_map(|((child_collection, child_token), _)| {
- let is_pending = RmrkCore::get_nft_property_decoded(
- child_collection,
- child_token,
- RmrkProperty::PendingNftAccept
- ).ok()?;
-
- if is_pending {
- return None;
- }
-
- let rmrk_child_collection = RmrkCore::rmrk_collection_id(
- child_collection
- ).ok()?;
-
- Some(RmrkNftChild {
- collection_id: rmrk_child_collection,
- nft_id: child_token.0,
- })
- }).collect()
- )
- }
-
- fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
- use pallet_proxy_rmrk_core::misc::CollectionType;
-
- let collection_id = match RmrkCore::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new())
- };
- if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() {
- return Ok(Vec::new());
- }
-
- let properties = RmrkCore::filter_user_properties(
- collection_id,
- /* token_id = */ None,
- filter_keys,
- |key, value| RmrkPropertyInfo {
- key,
- value
- }
- )?;
-
- Ok(properties)
- }
-
- fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
- use pallet_proxy_rmrk_core::misc::NftType;
-
- let collection_id = match RmrkCore::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new())
- };
- let token_id = TokenId(nft_id);
-
- if RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Regular).is_err() {
- return Ok(Vec::new());
- }
-
- let properties = RmrkCore::filter_user_properties(
- collection_id,
- Some(token_id),
- filter_keys,
- |key, value| RmrkPropertyInfo {
- key,
- value
- }
- )?;
-
- Ok(properties)
- }
-
- fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
- use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, ResourceType}};
- use pallet_common::CommonCollectionOperations;
-
- let collection_id = match RmrkCore::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new())
- };
- if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); }
-
- let nft_id = TokenId(nft_id);
- if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(Vec::new()); }
-
- let res_collection_id: CollectionId = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourceCollection)?;
- let resource_collection = RmrkCore::get_typed_nft_collection(res_collection_id, CollectionType::Resource)?;
-
- let resources = resource_collection
- .collection_tokens()
- .iter()
- .filter_map(|(res_id)| Some(RmrkResourceInfo {
- id: res_id.0,
- pending: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceAccept).ok()?,
- pending_removal: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceRemoval).ok()?,
- resource: match RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::ResourceType).ok()? {
- ResourceType::Basic => RmrkResourceTypes::Basic(RmrkBasicResource {
- src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,
- metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,
- license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,
- thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,
- }),
- ResourceType::Composable => RmrkResourceTypes::Composable(RmrkComposableResource {
- parts: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Parts).ok()?,
- base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,
- src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,
- metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,
- license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,
- thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,
- }),
- ResourceType::Slot => RmrkResourceTypes::Slot(RmrkSlotResource {
- base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,
- src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,
- metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,
- slot: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Slot).ok()?,
- license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,
- thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,
- }),
- },
- }))
- .collect();
-
- Ok(resources)
- }
-
- fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
- use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};
-
- let collection_id = match RmrkCore::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(None)
- };
- if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(None); }
-
- let nft_id = TokenId(nft_id);
- if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(None); }
-
- let priorities: Vec<_> = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourcePriorities)?;
- Ok(
- priorities.into_iter()
- .enumerate()
- .find(|(_, id)| *id == resource_id)
- .map(|(priority, _): (usize, RmrkResourceId)| priority as u32)
- )
- }
-
- fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
- use pallet_proxy_rmrk_core::{
- RmrkProperty, misc::{CollectionType},
- };
-
- let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- Ok(Some(RmrkBaseInfo {
- issuer: collection.owner.clone(),
- base_type: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::BaseType)?,
- symbol: RmrkCore::rebind(&collection.token_prefix)?,
- }))
- }
-
- fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
- use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
- Ok(c) => c,
- Err(_) => return Ok(Vec::new()),
- };
-
- let parts = collection.collection_tokens()
- .into_iter()
- .filter_map(|token_id| {
- let nft_type = RmrkCore::get_nft_type(collection_id, token_id).ok()?;
-
- match nft_type {
- NftType::FixedPart => Some(RmrkPartType::FixedPart(RmrkFixedPart {
- id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,
- src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,
- z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,
- })),
- NftType::SlotPart => Some(RmrkPartType::SlotPart(RmrkSlotPart {
- id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,
- src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,
- z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,
- equippable: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::EquippableList).ok()?,
- })),
- _ => None
- }
- })
- .collect();
-
- Ok(parts)
- }
-
- fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
- use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
- Ok(c) => c,
- Err(_) => return Ok(Vec::new()),
- };
-
- let theme_names = collection.collection_tokens()
- .iter()
- .filter_map(|token_id| {
- let nft_type = RmrkCore::get_nft_type(collection_id, *token_id).ok()?;
-
- match nft_type {
- Theme => RmrkCore::get_nft_property_decoded(collection_id, *token_id, RmrkProperty::ThemeName).ok(),
- _ => None
- }
- })
- .collect();
-
- Ok(theme_names)
- }
-
- fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
- use pallet_proxy_rmrk_core::{
- RmrkProperty,
- misc::{CollectionType, NftType}
- };
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- let theme_info = collection.collection_tokens()
- .into_iter()
- .find_map(|token_id| {
- RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Theme).ok()?;
-
- let name: RmrkString = RmrkCore::get_nft_property_decoded(
- collection_id, token_id, RmrkProperty::ThemeName
- ).ok()?;
-
- if name == theme_name {
- Some((name, token_id))
- } else {
- None
- }
- });
-
- let (name, theme_id) = match theme_info {
- Some((name, theme_id)) => (name, theme_id),
- None => return Ok(None)
- };
-
- let properties = RmrkCore::filter_user_properties(
- collection_id,
- Some(theme_id),
- filter_keys,
- |key, value| RmrkThemeProperty {
- key,
- value
- }
- )?;
-
- let inherit = RmrkCore::get_nft_property_decoded(
- collection_id,
- theme_id,
- RmrkProperty::ThemeInherit
- )?;
-
- let theme = RmrkTheme {
- name,
- properties,
- inherit,
- };
-
- Ok(Some(theme))
- }
- }
-
impl sp_api::Core<Block> for Runtime {
fn version() -> RuntimeVersion {
VERSION
@@ -843,7 +453,14 @@
list_benchmark!(list, extra, pallet_fungible, Fungible);
list_benchmark!(list, extra, pallet_refungible, Refungible);
list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);
+ list_benchmark!(list, extra, pallet_unique_scheduler, Scheduler);
+
+ #[cfg(not(feature = "unique-runtime"))]
list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);
+
+ #[cfg(not(feature = "unique-runtime"))]
+ list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);
+
// list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);
let storage_info = AllPalletsReversedWithSystemFirst::storage_info();
@@ -887,7 +504,14 @@
add_benchmark!(params, batches, pallet_fungible, Fungible);
add_benchmark!(params, batches, pallet_refungible, Refungible);
add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);
+ add_benchmark!(params, batches, pallet_unique_scheduler, Scheduler);
+
+ #[cfg(not(feature = "unique-runtime"))]
add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);
+
+ #[cfg(not(feature = "unique-runtime"))]
+ add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);
+
// add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);
if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
runtime/common/src/weights.rsdiffbeforeafterboth--- a/runtime/common/src/weights.rs
+++ b/runtime/common/src/weights.rs
@@ -70,8 +70,8 @@
dispatch_weight::<T>() + max_weight_of!(delete_token_properties(amount))
}
- fn set_property_permissions(amount: u32) -> Weight {
- dispatch_weight::<T>() + max_weight_of!(set_property_permissions(amount))
+ fn set_token_property_permissions(amount: u32) -> Weight {
+ dispatch_weight::<T>() + max_weight_of!(set_token_property_permissions(amount))
}
fn transfer() -> Weight {
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -10,7 +10,7 @@
license = 'GPLv3'
name = 'opal-runtime'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.22'
+version = '0.9.23'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
@@ -34,8 +34,10 @@
'pallet-refungible/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
'pallet-proxy-rmrk-core/runtime-benchmarks',
+ 'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
+ 'pallet-unique-scheduler/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
'xcm-builder/runtime-benchmarks',
@@ -93,7 +95,7 @@
'pallet-proxy-rmrk-core/std',
'pallet-proxy-rmrk-equip/std',
'pallet-unique/std',
- 'pallet-unq-scheduler/std',
+ 'pallet-unique-scheduler/std',
'pallet-charge-transaction/std',
'up-data-structs/std',
'sp-api/std',
@@ -412,7 +414,7 @@
pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
-pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }
+pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }
# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
runtime/opal/src/lib.rsdiffbeforeafterboth--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -69,16 +69,14 @@
WeightToFee,
},
};
-use pallet_unq_scheduler::DispatchCall;
+use pallet_unique_scheduler::DispatchCall;
use up_data_structs::{
CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,
CollectionStats, RpcCollection,
mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,
- RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,
- RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,
- RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,
- RmrkFixedPart, RmrkSlotPart, RmrkString,
+ RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,
+ RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,
};
// use pallet_contracts::weights::WeightInfo;
@@ -194,7 +192,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 922000,
+ spec_version: 923000,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
@@ -920,6 +918,7 @@
}
impl pallet_proxy_rmrk_equip::Config for Runtime {
+ type WeightInfo = pallet_proxy_rmrk_equip::weights::SubstrateWeight<Self>;
type Event = Event;
}
@@ -965,7 +964,7 @@
}
pub struct SchedulerPaymentExecutor;
-impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>
+impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>
DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor
where
<T as frame_system::Config>::Call: Member
@@ -975,13 +974,13 @@
+ From<frame_system::Call<Runtime>>,
SelfContainedSignedInfo: Send + Sync + 'static,
Call: From<<T as frame_system::Config>::Call>
- + From<<T as pallet_unq_scheduler::Config>::Call>
+ + From<<T as pallet_unique_scheduler::Config>::Call>
+ SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,
sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,
{
fn dispatch_call(
signer: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
) -> Result<
Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
TransactionValidityError,
@@ -1007,7 +1006,7 @@
fn reserve_balance(
id: [u8; 16],
sponsor: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
count: u32,
) -> Result<(), DispatchError> {
let dispatch_info = call.get_dispatch_info();
@@ -1024,7 +1023,7 @@
fn pay_for_call(
id: [u8; 16],
sponsor: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
) -> Result<u128, DispatchError> {
let dispatch_info = call.get_dispatch_info();
let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);
@@ -1065,7 +1064,7 @@
}
}
-impl pallet_unq_scheduler::Config for Runtime {
+impl pallet_unique_scheduler::Config for Runtime {
type Event = Event;
type Origin = Origin;
type Currency = Balances;
@@ -1154,7 +1153,7 @@
// Unique Pallets
Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,
- Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
+ Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
// free = 63
Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
// ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
@@ -1311,7 +1310,73 @@
}};
}
-impl_common_runtime_apis!();
+impl_common_runtime_apis! {
+ #![custom_apis]
+
+ impl rmrk_rpc::RmrkApi<
+ Block,
+ AccountId,
+ RmrkCollectionInfo<AccountId>,
+ RmrkInstanceInfo<AccountId>,
+ RmrkResourceInfo,
+ RmrkPropertyInfo,
+ RmrkBaseInfo<AccountId>,
+ RmrkPartType,
+ RmrkTheme
+ > for Runtime {
+ fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>()
+ }
+
+ fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id)
+ }
+
+ fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id)
+ }
+
+ fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id)
+ }
+
+ fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id)
+ }
+
+ fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys)
+ }
+
+ fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys)
+ }
+
+ fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id)
+ }
+
+ fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id)
+ }
+
+ fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id)
+ }
+
+ fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id)
+ }
+
+ fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id)
+ }
+
+ fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys)
+ }
+ }
+}
struct CheckInherents;
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -10,7 +10,7 @@
license = 'GPLv3'
name = 'quartz-runtime'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.22'
+version = '0.9.23'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
@@ -37,6 +37,7 @@
'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
+ 'pallet-unique-scheduler/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
'xcm-builder/runtime-benchmarks',
@@ -94,7 +95,7 @@
'pallet-proxy-rmrk-core/std',
'pallet-proxy-rmrk-equip/std',
'pallet-unique/std',
- 'pallet-unq-scheduler/std',
+ 'pallet-unique-scheduler/std',
'pallet-charge-transaction/std',
'up-data-structs/std',
'sp-api/std',
@@ -419,7 +420,7 @@
pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
-pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }
+pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }
# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
runtime/quartz/src/lib.rsdiffbeforeafterboth--- a/runtime/quartz/src/lib.rs
+++ b/runtime/quartz/src/lib.rs
@@ -69,16 +69,14 @@
WeightToFee,
},
};
-use pallet_unq_scheduler::DispatchCall;
+use pallet_unique_scheduler::DispatchCall;
use up_data_structs::{
CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,
CollectionStats, RpcCollection,
mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,
- RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,
- RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,
- RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,
- RmrkFixedPart, RmrkSlotPart, RmrkString,
+ RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,
+ RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,
};
// use pallet_contracts::weights::WeightInfo;
@@ -193,7 +191,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 922000,
+ spec_version: 923000,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
@@ -924,6 +922,7 @@
}
impl pallet_proxy_rmrk_equip::Config for Runtime {
+ type WeightInfo = pallet_proxy_rmrk_equip::weights::SubstrateWeight<Self>;
type Event = Event;
}
@@ -969,7 +968,7 @@
}
pub struct SchedulerPaymentExecutor;
-impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>
+impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>
DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor
where
<T as frame_system::Config>::Call: Member
@@ -979,13 +978,13 @@
+ From<frame_system::Call<Runtime>>,
SelfContainedSignedInfo: Send + Sync + 'static,
Call: From<<T as frame_system::Config>::Call>
- + From<<T as pallet_unq_scheduler::Config>::Call>
+ + From<<T as pallet_unique_scheduler::Config>::Call>
+ SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,
sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,
{
fn dispatch_call(
signer: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
) -> Result<
Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
TransactionValidityError,
@@ -1011,7 +1010,7 @@
fn reserve_balance(
id: [u8; 16],
sponsor: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
count: u32,
) -> Result<(), DispatchError> {
let dispatch_info = call.get_dispatch_info();
@@ -1028,7 +1027,7 @@
fn pay_for_call(
id: [u8; 16],
sponsor: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
) -> Result<u128, DispatchError> {
let dispatch_info = call.get_dispatch_info();
let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);
@@ -1069,7 +1068,7 @@
}
}
-impl pallet_unq_scheduler::Config for Runtime {
+impl pallet_unique_scheduler::Config for Runtime {
type Event = Event;
type Origin = Origin;
type Currency = Balances;
@@ -1157,7 +1156,7 @@
// Unique Pallets
Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,
- Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
+ Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
// free = 63
Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
// ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
@@ -1316,7 +1315,73 @@
}};
}
-impl_common_runtime_apis!();
+impl_common_runtime_apis! {
+ #![custom_apis]
+
+ impl rmrk_rpc::RmrkApi<
+ Block,
+ AccountId,
+ RmrkCollectionInfo<AccountId>,
+ RmrkInstanceInfo<AccountId>,
+ RmrkResourceInfo,
+ RmrkPropertyInfo,
+ RmrkBaseInfo<AccountId>,
+ RmrkPartType,
+ RmrkTheme
+ > for Runtime {
+ fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>()
+ }
+
+ fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id)
+ }
+
+ fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id)
+ }
+
+ fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id)
+ }
+
+ fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id)
+ }
+
+ fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys)
+ }
+
+ fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys)
+ }
+
+ fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id)
+ }
+
+ fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
+ pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id)
+ }
+
+ fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id)
+ }
+
+ fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id)
+ }
+
+ fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id)
+ }
+
+ fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
+ pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys)
+ }
+ }
+}
struct CheckInherents;
runtime/tests/src/tests.rsdiffbeforeafterboth--- a/runtime/tests/src/tests.rs
+++ b/runtime/tests/src/tests.rs
@@ -1264,7 +1264,6 @@
let collection1_id =
create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));
let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
// Add collection admins 2 and 3
assert_ok!(Unique::add_collection_admin(
@@ -1273,7 +1272,7 @@
account(2)
));
assert_ok!(Unique::add_collection_admin(
- origin1,
+ origin1.clone(),
collection1_id,
account(3)
));
@@ -1289,7 +1288,7 @@
// remove admin 3
assert_ok!(Unique::remove_collection_admin(
- origin2,
+ origin1,
CollectionId(1),
account(3)
));
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -10,13 +10,13 @@
license = 'GPLv3'
name = 'unique-runtime'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.22'
+version = '0.9.23'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
[features]
-default = ['std']
+default = ['std', 'unique-runtime']
runtime-benchmarks = [
'hex-literal',
'frame-benchmarking',
@@ -37,6 +37,7 @@
'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
+ 'pallet-unique-scheduler/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
'xcm-builder/runtime-benchmarks',
@@ -95,7 +96,7 @@
'pallet-proxy-rmrk-core/std',
'pallet-proxy-rmrk-equip/std',
'pallet-unique/std',
- 'pallet-unq-scheduler/std',
+ 'pallet-unique-scheduler/std',
'pallet-charge-transaction/std',
'up-data-structs/std',
'sp-api/std',
@@ -118,6 +119,7 @@
"orml-vesting/std",
]
limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
+unique-runtime = []
################################################################################
# Substrate Dependencies
@@ -412,7 +414,7 @@
pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
-pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }
+pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }
# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
runtime/unique/src/lib.rsdiffbeforeafterboth--- a/runtime/unique/src/lib.rs
+++ b/runtime/unique/src/lib.rs
@@ -69,16 +69,14 @@
WeightToFee,
},
};
-use pallet_unq_scheduler::DispatchCall;
+use pallet_unique_scheduler::DispatchCall;
use up_data_structs::{
CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,
CollectionStats, RpcCollection,
mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,
- RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,
- RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,
- RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,
- RmrkFixedPart, RmrkSlotPart, RmrkString,
+ RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,
+ RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,
};
// use pallet_contracts::weights::WeightInfo;
@@ -192,7 +190,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 922000,
+ spec_version: 923000,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
@@ -915,17 +913,8 @@
}
impl pallet_nonfungible::Config for Runtime {
type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;
-}
-
-impl pallet_proxy_rmrk_core::Config for Runtime {
- type WeightInfo = pallet_proxy_rmrk_core::weights::SubstrateWeight<Self>;
- type Event = Event;
}
-impl pallet_proxy_rmrk_equip::Config for Runtime {
- type Event = Event;
-}
-
impl pallet_unique::Config for Runtime {
type Event = Event;
type WeightInfo = pallet_unique::weights::SubstrateWeight<Self>;
@@ -968,7 +957,7 @@
}
pub struct SchedulerPaymentExecutor;
-impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>
+impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>
DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor
where
<T as frame_system::Config>::Call: Member
@@ -978,13 +967,13 @@
+ From<frame_system::Call<Runtime>>,
SelfContainedSignedInfo: Send + Sync + 'static,
Call: From<<T as frame_system::Config>::Call>
- + From<<T as pallet_unq_scheduler::Config>::Call>
+ + From<<T as pallet_unique_scheduler::Config>::Call>
+ SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,
sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,
{
fn dispatch_call(
signer: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
) -> Result<
Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
TransactionValidityError,
@@ -1010,7 +999,7 @@
fn reserve_balance(
id: [u8; 16],
sponsor: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
count: u32,
) -> Result<(), DispatchError> {
let dispatch_info = call.get_dispatch_info();
@@ -1027,7 +1016,7 @@
fn pay_for_call(
id: [u8; 16],
sponsor: <T as frame_system::Config>::AccountId,
- call: <T as pallet_unq_scheduler::Config>::Call,
+ call: <T as pallet_unique_scheduler::Config>::Call,
) -> Result<u128, DispatchError> {
let dispatch_info = call.get_dispatch_info();
let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);
@@ -1068,7 +1057,7 @@
}
}
-impl pallet_unq_scheduler::Config for Runtime {
+impl pallet_unique_scheduler::Config for Runtime {
type Event = Event;
type Origin = Origin;
type Currency = Balances;
@@ -1156,7 +1145,7 @@
// Unique Pallets
Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,
- Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
+ Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
// free = 63
Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
// ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
@@ -1165,8 +1154,6 @@
Refungible: pallet_refungible::{Pallet, Storage} = 68,
Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,
Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,
- RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,
- RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
// Frontier
EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,
@@ -1314,7 +1301,73 @@
}};
}
-impl_common_runtime_apis!();
+impl_common_runtime_apis! {
+ #![custom_apis]
+
+ impl rmrk_rpc::RmrkApi<
+ Block,
+ AccountId,
+ RmrkCollectionInfo<AccountId>,
+ RmrkInstanceInfo<AccountId>,
+ RmrkResourceInfo,
+ RmrkPropertyInfo,
+ RmrkBaseInfo<AccountId>,
+ RmrkPartType,
+ RmrkTheme
+ > for Runtime {
+ fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn collection_by_id(_collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn nft_by_id(_collection_id: RmrkCollectionId, _nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn account_tokens(_account_id: AccountId, _collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn nft_children(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn collection_properties(_collection_id: RmrkCollectionId, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn nft_properties(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn nft_resources(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn nft_resource_priority(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId, _resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn base(_base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn base_parts(_base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn theme_names(_base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
+ Ok(Default::default())
+ }
+
+ fn theme(_base_id: RmrkBaseId, _theme_name: RmrkThemeName, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
+ Ok(Default::default())
+ }
+ }
+}
struct CheckInherents;
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -28,6 +28,7 @@
"test": "mocha --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",
"testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",
"testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",
+ "testEthNesting": "mocha --timeout 9999999 -r ts-node/register './**/eth/nesting/**/*.test.ts'",
"load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",
"loadTransfer": "ts-node src/transfer.nload.ts",
"testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",
tests/src/approve.test.tsdiffbeforeafterboth--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -28,7 +28,7 @@
setCollectionLimitsExpectSuccess,
transferExpectSuccess,
addCollectionAdminExpectSuccess,
- adminApproveFromExpectSuccess,
+ adminApproveFromExpectFail,
getCreatedCollectionCount,
transferFromExpectSuccess,
transferFromExpectFail,
@@ -84,11 +84,11 @@
await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 0);
});
- it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {
+ it('can`t be called by collection owner on non-owned item when OwnerCanTransfer == false', async () => {
const collectionId = await createCollectionExpectSuccess();
const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
- await adminApproveFromExpectSuccess(collectionId, itemId, alice, bob.address, charlie.address);
+ await adminApproveFromExpectFail(collectionId, itemId, alice, bob.address, charlie.address);
});
});
@@ -292,7 +292,7 @@
});
});
-describe('Administrator and collection owner do not need approval in order to execute TransferFrom:', () => {
+describe('Administrator and collection owner do not need approval in order to execute TransferFrom (with owner_can_transfer_flag = true):', () => {
let alice: IKeyringPair;
let bob: IKeyringPair;
let charlie: IKeyringPair;
@@ -309,6 +309,7 @@
it('NFT', async () => {
const collectionId = await createCollectionExpectSuccess();
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', charlie.address);
await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'NFT');
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
@@ -317,6 +318,7 @@
it('Fungible up to an approved amount', async () => {
const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', charlie.address);
await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'Fungible');
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
@@ -325,6 +327,7 @@
it('ReFungible up to an approved amount', async () => {
const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', charlie.address);
await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'ReFungible');
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
@@ -402,7 +405,7 @@
const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- await adminApproveFromExpectSuccess(collectionId, itemId, bob, alice.address, charlie.address);
+ await adminApproveFromExpectFail(collectionId, itemId, bob, alice.address, charlie.address);
});
});
tests/src/burnItem.test.tsdiffbeforeafterboth--- a/tests/src/burnItem.test.ts
+++ b/tests/src/burnItem.test.ts
@@ -23,6 +23,7 @@
normalizeAccountId,
addCollectionAdminExpectSuccess,
getBalance,
+ setCollectionLimitsExpectSuccess,
isTokenExists,
} from './util/helpers';
@@ -149,6 +150,7 @@
it('Burn item in NFT collection', async () => {
const createMode = 'NFT';
const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
@@ -167,6 +169,7 @@
it('Burn item in Fungible collection', async () => {
const createMode = 'Fungible';
const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
@@ -189,6 +192,7 @@
it('Burn item in ReFungible collection', async () => {
const createMode = 'ReFungible';
const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
tests/src/createMultipleItems.test.tsdiffbeforeafterboth--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -48,7 +48,7 @@
const alice = privateKeyWrapper('//Alice');
await submitTransactionAsync(
alice,
- api.tx.unique.setPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),
+ api.tx.unique.setTokenPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),
);
const args = [
@@ -470,7 +470,7 @@
const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
- const tx1 = api.tx.unique.setPropertyPermissions(collectionId, propPerms);
+ const tx1 = api.tx.unique.setTokenPropertyPermissions(collectionId, propPerms);
await expect(executeTransaction(api, alice, tx1)).to.be.rejectedWith(/common\.PropertyLimitReached/);
const itemsListIndexBefore = await getLastTokenId(api, collectionId);
tests/src/createMultipleItemsEx.test.tsdiffbeforeafterboth--- a/tests/src/createMultipleItemsEx.test.ts
+++ b/tests/src/createMultipleItemsEx.test.ts
@@ -222,7 +222,7 @@
const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
await usingApi(async (api, privateKeyWrapper) => {
const alice = privateKeyWrapper('//Alice');
- await expect(executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);
+ await expect(executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);
});
});
tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -174,7 +174,24 @@
function finishMinting() external returns (bool);
}
-// Selector: 6aea9834
+// Selector: 780e9d63
+interface ERC721Enumerable is Dummy, ERC165 {
+ // Selector: tokenByIndex(uint256) 4f6ccce7
+ function tokenByIndex(uint256 index) external view returns (uint256);
+
+ // Not implemented
+ //
+ // Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+ function tokenOfOwnerByIndex(address owner, uint256 index)
+ external
+ view
+ returns (uint256);
+
+ // Selector: totalSupply() 18160ddd
+ function totalSupply() external view returns (uint256);
+}
+
+// Selector: 7d9262e6
interface Collection is Dummy, ERC165 {
// Selector: setCollectionProperty(string,bytes) 2f073f66
function setCollectionProperty(string memory key, bytes memory value)
@@ -206,6 +223,12 @@
// Selector: contractAddress() f6b4dfb4
function contractAddress() external view returns (address);
+ // Selector: addCollectionAdminSubstrate(uint256) 5730062b
+ function addCollectionAdminSubstrate(uint256 newAdmin) external view;
+
+ // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+ function removeCollectionAdminSubstrate(uint256 newAdmin) external view;
+
// Selector: addCollectionAdmin(address) 92e462c7
function addCollectionAdmin(address newAdmin) external view;
@@ -230,23 +253,6 @@
// Selector: setCollectionMintMode(bool) 00018e84
function setCollectionMintMode(bool mode) external;
-}
-
-// Selector: 780e9d63
-interface ERC721Enumerable is Dummy, ERC165 {
- // Selector: tokenByIndex(uint256) 4f6ccce7
- function tokenByIndex(uint256 index) external view returns (uint256);
-
- // Not implemented
- //
- // Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
- function tokenOfOwnerByIndex(address owner, uint256 index)
- external
- view
- returns (uint256);
-
- // Selector: totalSupply() 18160ddd
- function totalSupply() external view returns (uint256);
}
// Selector: d74d154f
tests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/eth/collectionAdmin.test.ts
@@ -0,0 +1,296 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import {expect} from 'chai';
+import privateKey from '../substrate/privateKey';
+import {
+ createEthAccount,
+ createEthAccountWithBalance,
+ evmCollection,
+ evmCollectionHelpers,
+ getCollectionAddressFromResult,
+ itWeb3,
+} from './util/helpers';
+
+describe('Add collection admins', () => {
+ itWeb3('Add admin by owner', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const newAdmin = await createEthAccount(web3);
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdmin(newAdmin).send();
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList[0].asEthereum.toString().toLocaleLowerCase())
+ .to.be.eq(newAdmin.toLocaleLowerCase());
+ });
+
+ itWeb3('Add substrate admin by owner', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const newAdmin = privateKeyWrapper('//Alice');
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdminSubstrate(newAdmin.addressRaw).send();
+
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList[0].asSubstrate.toString().toLocaleLowerCase())
+ .to.be.eq(newAdmin.address.toLocaleLowerCase());
+ });
+
+ itWeb3('(!negative tests!) Add admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdmin(admin).send();
+
+ const user = await createEthAccount(web3);
+ await expect(collectionEvm.methods.addCollectionAdmin(user).call({from: admin}))
+ .to.be.rejectedWith('NoPermission');
+
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(1);
+ expect(adminList[0].asEthereum.toString().toLocaleLowerCase())
+ .to.be.eq(admin.toLocaleLowerCase());
+ });
+
+ itWeb3('(!negative tests!) Add admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const notAdmin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+
+ const user = await createEthAccount(web3);
+ await expect(collectionEvm.methods.addCollectionAdmin(user).call({from: notAdmin}))
+ .to.be.rejectedWith('NoPermission');
+
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(0);
+ });
+
+ itWeb3('(!negative tests!) Add substrate admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdmin(admin).send();
+
+ const notAdmin = privateKey('//Alice');
+ await expect(collectionEvm.methods.addCollectionAdminSubstrate(notAdmin.addressRaw).call({from: admin}))
+ .to.be.rejectedWith('NoPermission');
+
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(1);
+ expect(adminList[0].asEthereum.toString().toLocaleLowerCase())
+ .to.be.eq(admin.toLocaleLowerCase());
+ });
+
+ itWeb3('(!negative tests!) Add substrate admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const notAdmin0 = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ const notAdmin1 = privateKey('//Alice');
+ await expect(collectionEvm.methods.addCollectionAdminSubstrate(notAdmin1.addressRaw).call({from: notAdmin0}))
+ .to.be.rejectedWith('NoPermission');
+
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(0);
+ });
+});
+
+describe('Remove collection admins', () => {
+ itWeb3('Remove admin by owner', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const newAdmin = await createEthAccount(web3);
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdmin(newAdmin).send();
+ {
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(1);
+ expect(adminList[0].asEthereum.toString().toLocaleLowerCase())
+ .to.be.eq(newAdmin.toLocaleLowerCase());
+ }
+
+ await collectionEvm.methods.removeCollectionAdmin(newAdmin).send();
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(0);
+ });
+
+ itWeb3('Remove substrate admin by owner', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const newAdmin = privateKeyWrapper('//Alice');
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdminSubstrate(newAdmin.addressRaw).send();
+ {
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList[0].asSubstrate.toString().toLocaleLowerCase())
+ .to.be.eq(newAdmin.address.toLocaleLowerCase());
+ }
+
+ await collectionEvm.methods.removeCollectionAdminSubstrate(newAdmin.addressRaw).send();
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(0);
+ });
+
+ itWeb3('(!negative tests!) Remove admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+
+ const admin0 = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ await collectionEvm.methods.addCollectionAdmin(admin0).send();
+ const admin1 = await createEthAccount(web3);
+ await collectionEvm.methods.addCollectionAdmin(admin1).send();
+
+ await expect(collectionEvm.methods.removeCollectionAdmin(admin1).call({from: admin0}))
+ .to.be.rejectedWith('NoPermission');
+ {
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(2);
+ expect(adminList.toString().toLocaleLowerCase())
+ .to.be.deep.contains(admin0.toLocaleLowerCase())
+ .to.be.deep.contains(admin1.toLocaleLowerCase());
+ }
+ });
+
+ itWeb3('(!negative tests!) Remove admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+
+ const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ await collectionEvm.methods.addCollectionAdmin(admin).send();
+ const notAdmin = await createEthAccount(web3);
+
+ await expect(collectionEvm.methods.removeCollectionAdmin(admin).call({from: notAdmin}))
+ .to.be.rejectedWith('NoPermission');
+ {
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList[0].asEthereum.toString().toLocaleLowerCase())
+ .to.be.eq(admin.toLocaleLowerCase());
+ expect(adminList.length).to.be.eq(1);
+ }
+ });
+
+ itWeb3('(!negative tests!) Remove substrate admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const adminSub = privateKeyWrapper('//Alice');
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send();
+ const adminEth = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ await collectionEvm.methods.addCollectionAdmin(adminEth).send();
+
+ await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: adminEth}))
+ .to.be.rejectedWith('NoPermission');
+
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(2);
+ expect(adminList.toString().toLocaleLowerCase())
+ .to.be.deep.contains(adminSub.address.toLocaleLowerCase())
+ .to.be.deep.contains(adminEth.toLocaleLowerCase());
+ });
+
+ itWeb3('(!negative tests!) Remove substrate admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const adminSub = privateKeyWrapper('//Alice');
+ const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
+ await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send();
+ const notAdminEth = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+
+ await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: notAdminEth}))
+ .to.be.rejectedWith('NoPermission');
+
+ const adminList = await api.rpc.unique.adminlist(collectionId);
+ expect(adminList.length).to.be.eq(1);
+ expect(adminList[0].asSubstrate.toString().toLocaleLowerCase())
+ .to.be.eq(adminSub.address.toLocaleLowerCase());
+ });
+});
\ No newline at end of file
tests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth--- a/tests/src/eth/contractSponsoring.test.ts
+++ b/tests/src/eth/contractSponsoring.test.ts
@@ -233,7 +233,7 @@
const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;
expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;
expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
- await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');
+ await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');
await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});
collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;
@@ -241,14 +241,13 @@
expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
const user = createEthAccount(web3);
- let nextTokenId = await collectionEvm.methods.nextTokenId().call();
+ const nextTokenId = await collectionEvm.methods.nextTokenId().call();
expect(nextTokenId).to.be.equal('1');
const oldPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();
expect(oldPermissions.mintMode).to.be.false;
expect(oldPermissions.access).to.be.equal('Normal');
- //TODO: change value, when enum generated
await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});
await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});
await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});
@@ -260,34 +259,35 @@
const ownerBalanceBefore = await ethBalanceViaSub(api, owner);
const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);
- nextTokenId = await collectionEvm.methods.nextTokenId().call({from: user});
- expect(nextTokenId).to.be.equal('1');
- result = await collectionEvm.methods.mintWithTokenURI(
- user,
- nextTokenId,
- 'Test URI',
- ).send({from: user});
- const events = normalizeEvents(result.events);
- events[0].address = events[0].address.toLocaleLowerCase();
+ {
+ const nextTokenId = await collectionEvm.methods.nextTokenId().call();
+ expect(nextTokenId).to.be.equal('1');
+ const result = await collectionEvm.methods.mintWithTokenURI(
+ user,
+ nextTokenId,
+ 'Test URI',
+ ).send({from: user});
+ const events = normalizeEvents(result.events);
- expect(events).to.be.deep.equal([
- {
- address: collectionIdAddress.toLocaleLowerCase(),
- event: 'Transfer',
- args: {
- from: '0x0000000000000000000000000000000000000000',
- to: user,
- tokenId: nextTokenId,
+ expect(events).to.be.deep.equal([
+ {
+ address: collectionIdAddress,
+ event: 'Transfer',
+ args: {
+ from: '0x0000000000000000000000000000000000000000',
+ to: user,
+ tokenId: nextTokenId,
+ },
},
- },
- ]);
+ ]);
- expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');
+ const ownerBalanceAfter = await ethBalanceViaSub(api, owner);
+ const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);
- const ownerBalanceAfter = await ethBalanceViaSub(api, owner);
- expect(ownerBalanceAfter).to.be.eq(ownerBalanceBefore);
- const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);
- expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;
+ expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');
+ expect(ownerBalanceBefore).to.be.eq(ownerBalanceAfter);
+ expect(sponsorBalanceBefore > sponsorBalanceAfter).to.be.true;
+ }
});
itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3, privateKeyWrapper}) => {
@@ -302,7 +302,7 @@
const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;
expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;
expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
- await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');
+ await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');
const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);
await sponsorCollection.methods.confirmCollectionSponsorship().send();
collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;
@@ -314,6 +314,7 @@
const ownerBalanceBefore = await ethBalanceViaSub(api, owner);
const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);
+
const userCollectionEvm = evmCollection(web3, user, collectionIdAddress);
const nextTokenId = await userCollectionEvm.methods.nextTokenId().call();
tests/src/eth/createCollection.test.tsdiffbeforeafterboth--- a/tests/src/eth/createCollection.test.ts
+++ b/tests/src/eth/createCollection.test.ts
@@ -80,7 +80,7 @@
expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;
const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;
expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
- await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');
+ await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');
const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);
await sponsorCollection.methods.confirmCollectionSponsorship().send();
collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;
@@ -208,7 +208,7 @@
const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);
await expect(sponsorCollection.methods
.confirmCollectionSponsorship()
- .call()).to.be.rejectedWith('Caller is not set as sponsor');
+ .call()).to.be.rejectedWith('caller is not set as sponsor');
}
{
await expect(contractEvmFromNotOwner.methods
@@ -225,6 +225,6 @@
const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
await expect(collectionEvm.methods
.setCollectionLimit('badLimit', 'true')
- .call()).to.be.rejectedWith('Unknown boolean limit "badLimit"');
+ .call()).to.be.rejectedWith('unknown boolean limit "badLimit"');
});
});
\ No newline at end of file
tests/src/eth/crossTransfer.test.tsdiffbeforeafterboth--- a/tests/src/eth/crossTransfer.test.ts
+++ b/tests/src/eth/crossTransfer.test.ts
@@ -18,6 +18,7 @@
createFungibleItemExpectSuccess,
transferExpectSuccess,
transferFromExpectSuccess,
+ setCollectionLimitsExpectSuccess,
createItemExpectSuccess} from '../util/helpers';
import {collectionIdToAddress,
createEthAccountWithBalance,
@@ -35,6 +36,7 @@
const alice = privateKeyWrapper('//Alice');
const bob = privateKeyWrapper('//Bob');
const charlie = privateKeyWrapper('//Charlie');
+ await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});
await transferExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)} , 200, 'Fungible');
await transferFromExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)}, charlie, 50, 'Fungible');
@@ -48,6 +50,7 @@
});
const alice = privateKeyWrapper('//Alice');
const bob = privateKeyWrapper('//Bob');
+ await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
@@ -71,6 +74,7 @@
const alice = privateKeyWrapper('//Alice');
const bob = privateKeyWrapper('//Bob');
const charlie = privateKeyWrapper('//Charlie');
+ await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
await transferExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, 1, 'NFT');
await transferFromExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, charlie, 1, 'NFT');
@@ -85,6 +89,7 @@
const alice = privateKeyWrapper('//Alice');
const bob = privateKeyWrapper('//Bob');
const charlie = privateKeyWrapper('//Charlie');
+ await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
tests/src/eth/nesting/nest.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/eth/nesting/nest.test.ts
@@ -0,0 +1,217 @@
+import {ApiPromise} from '@polkadot/api';
+import {Contract} from 'web3-eth-contract';
+import {expect} from 'chai';
+import Web3 from 'web3';
+import {createEthAccountWithBalance, evmCollectionHelpers, GAS_ARGS, getCollectionAddressFromResult, itWeb3, tokenIdToAddress} from '../../eth/util/helpers';
+import nonFungibleAbi from '../nonFungibleAbi.json';
+
+const createNestingCollection = async (
+ api: ApiPromise,
+ web3: Web3,
+ owner: string,
+): Promise<{ collectionId: number, collectionAddress: string, contract: Contract }> => {
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'B', 'C')
+ .send();
+ const {collectionIdAddress: collectionAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+
+ const contract = new web3.eth.Contract(nonFungibleAbi as any, collectionAddress, {from: owner, ...GAS_ARGS});
+ await contract.methods.setCollectionNesting(true).send({from: owner});
+
+ return {collectionId, collectionAddress, contract};
+};
+
+describe('Integration Test: EVM Nesting', () => {
+ itWeb3('NFT: allows an Owner to nest/unnest their token', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const {collectionId, contract} = await createNestingCollection(api, web3, owner);
+
+ // Create a token to be nested
+ const targetNFTTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ targetNFTTokenId,
+ ).send({from: owner});
+
+ const targetNftTokenAddress = tokenIdToAddress(collectionId, targetNFTTokenId);
+
+ // Create a nested token
+ const firstTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ targetNftTokenAddress,
+ firstTokenId,
+ ).send({from: owner});
+
+ expect(await contract.methods.ownerOf(firstTokenId).call()).to.be.equal(targetNftTokenAddress);
+
+ // Create a token to be nested and nest
+ const secondTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ secondTokenId,
+ ).send({from: owner});
+
+ await contract.methods.transfer(targetNftTokenAddress, secondTokenId).send({from: owner});
+
+ expect(await contract.methods.ownerOf(secondTokenId).call()).to.be.equal(targetNftTokenAddress);
+
+ // Unnest token back
+ await contract.methods.transferFrom(targetNftTokenAddress, owner, secondTokenId).send({from: owner});
+ expect(await contract.methods.ownerOf(secondTokenId).call()).to.be.equal(owner);
+ });
+
+ itWeb3('NFT: allows an Owner to nest/unnest their token (Restricted nesting)', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+
+ const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(api, web3, owner);
+ const {collectionAddress: collectionAddressB, contract: contractB} = await createNestingCollection(api, web3, owner);
+ await contractA.methods.setCollectionNesting(true, [collectionAddressA, collectionAddressB]).send({from: owner});
+
+ // Create a token to nest into
+ const targetNftTokenId = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ targetNftTokenId,
+ ).send({from: owner});
+ const nftTokenAddressA1 = tokenIdToAddress(collectionIdA, targetNftTokenId);
+
+ // Create a token for nesting in the same collection as the target
+ const nftTokenIdA = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ nftTokenIdA,
+ ).send({from: owner});
+
+ // Create a token for nesting in a different collection
+ const nftTokenIdB = await contractB.methods.nextTokenId().call();
+ await contractB.methods.mint(
+ owner,
+ nftTokenIdB,
+ ).send({from: owner});
+
+ // Nest
+ await contractA.methods.transfer(nftTokenAddressA1, nftTokenIdA).send({from: owner});
+ expect(await contractA.methods.ownerOf(nftTokenIdA).call()).to.be.equal(nftTokenAddressA1);
+
+ await contractB.methods.transfer(nftTokenAddressA1, nftTokenIdB).send({from: owner});
+ expect(await contractB.methods.ownerOf(nftTokenIdB).call()).to.be.equal(nftTokenAddressA1);
+ });
+});
+
+describe('Negative Test: EVM Nesting', async() => {
+ itWeb3('NFT: disallows to nest token if nesting is disabled', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+
+ const {collectionId, contract} = await createNestingCollection(api, web3, owner);
+ await contract.methods.setCollectionNesting(false).send({from: owner});
+
+ // Create a token to nest into
+ const targetNftTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ targetNftTokenId,
+ ).send({from: owner});
+
+ const targetNftTokenAddress = tokenIdToAddress(collectionId, targetNftTokenId);
+
+ // Create a token to nest
+ const nftTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ nftTokenId,
+ ).send({from: owner});
+
+ // Try to nest
+ await expect(contract.methods
+ .transfer(targetNftTokenAddress, nftTokenId)
+ .call({from: owner})).to.be.rejectedWith('UserIsNotAllowedToNest');
+ });
+
+ itWeb3('NFT: disallows a non-Owner to nest someone else\'s token', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const malignant = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+
+ const {collectionId, contract} = await createNestingCollection(api, web3, owner);
+
+ // Mint a token
+ const targetTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ targetTokenId,
+ ).send({from: owner});
+ const targetTokenAddress = tokenIdToAddress(collectionId, targetTokenId);
+
+ // Mint a token belonging to a different account
+ const tokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ malignant,
+ tokenId,
+ ).send({from: owner});
+
+ // Try to nest one token in another as a non-owner account
+ await expect(contract.methods
+ .transfer(targetTokenAddress, tokenId)
+ .call({from: malignant})).to.be.rejectedWith('UserIsNotAllowedToNest');
+ });
+
+ itWeb3('NFT: disallows a non-Owner to nest someone else\'s token (Restricted nesting)', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const malignant = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+
+ const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(api, web3, owner);
+ const {collectionAddress: collectionAddressB, contract: contractB} = await createNestingCollection(api, web3, owner);
+
+ await contractA.methods.setCollectionNesting(true, [collectionAddressA, collectionAddressB]).send({from: owner});
+
+ // Create a token in one collection
+ const nftTokenIdA = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ nftTokenIdA,
+ ).send({from: owner});
+ const nftTokenAddressA = tokenIdToAddress(collectionIdA, nftTokenIdA);
+
+ // Create a token in another collection belonging to someone else
+ const nftTokenIdB = await contractB.methods.nextTokenId().call();
+ await contractB.methods.mint(
+ malignant,
+ nftTokenIdB,
+ ).send({from: owner});
+
+ // Try to drag someone else's token into the other collection and nest
+ await expect(contractB.methods
+ .transfer(nftTokenAddressA, nftTokenIdB)
+ .call({from: malignant})).to.be.rejectedWith('UserIsNotAllowedToNest');
+ });
+
+ itWeb3('NFT: disallows to nest token in an unlisted collection', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+
+ const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(api, web3, owner);
+ const {contract: contractB} = await createNestingCollection(api, web3, owner);
+
+ await contractA.methods.setCollectionNesting(true, [collectionAddressA]).send({from: owner});
+
+ // Create a token in one collection
+ const nftTokenIdA = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ nftTokenIdA,
+ ).send({from: owner});
+ const nftTokenAddressA = tokenIdToAddress(collectionIdA, nftTokenIdA);
+
+ // Create a token in another collection
+ const nftTokenIdB = await contractB.methods.nextTokenId().call();
+ await contractB.methods.mint(
+ owner,
+ nftTokenIdB,
+ ).send({from: owner});
+
+ // Try to nest into a token in the other collection, disallowed in the first
+ await expect(contractB.methods
+ .transfer(nftTokenAddressA, nftTokenIdB)
+ .call()).to.be.rejectedWith('SourceCollectionIsNotAllowedToNest');
+ });
+});
tests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth--- a/tests/src/eth/nonFungibleAbi.json
+++ b/tests/src/eth/nonFungibleAbi.json
@@ -91,6 +91,15 @@
},
{
"inputs": [
+ { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }
+ ],
+ "name": "addCollectionAdminSubstrate",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
{ "internalType": "address", "name": "user", "type": "address" }
],
"name": "addToCollectionAllowList",
@@ -300,6 +309,15 @@
},
{
"inputs": [
+ { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }
+ ],
+ "name": "removeCollectionAdminSubstrate",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
{ "internalType": "address", "name": "user", "type": "address" }
],
"name": "removeFromCollectionAllowList",
tests/src/eth/tokenProperties.test.tsdiffbeforeafterboth--- a/tests/src/eth/tokenProperties.test.ts
+++ b/tests/src/eth/tokenProperties.test.ts
@@ -29,7 +29,7 @@
const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
const token = await createItemExpectSuccess(alice, collection, 'NFT');
- await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+ await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
key: 'testKey',
permission: {
collectionAdmin: true,
@@ -52,7 +52,7 @@
const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
const token = await createItemExpectSuccess(alice, collection, 'NFT');
- await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+ await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
key: 'testKey',
permission: {
mutable: true,
@@ -77,7 +77,7 @@
const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});
const token = await createItemExpectSuccess(alice, collection, 'NFT');
- await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+ await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
key: 'testKey',
permission: {
collectionAdmin: true,
tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -458,6 +458,7 @@
ResourceNotPending: AugmentedError<ApiType>;
RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;
RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;
+ UnableToDecodeRmrkData: AugmentedError<ApiType>;
/**
* Generic error
**/
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -5,7 +5,7 @@
import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUnqSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup';
import type { Observable } from '@polkadot/types/types';
declare module '@polkadot/api-base/types/storage' {
@@ -417,7 +417,6 @@
};
rmrkCore: {
collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
- rmrkInernalCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
/**
* Generic query
@@ -436,7 +435,7 @@
/**
* Items to be executed, indexed by the block number that they should be executed on.
**/
- agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUnqSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+ agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUniqueSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
/**
* Lookup from identity to the block number and index of the task.
**/
tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -5,7 +5,7 @@
import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';
import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
declare module '@polkadot/api-base/types/submittable' {
export interface AugmentedSubmittables<ApiType extends ApiTypes> {
@@ -373,7 +373,7 @@
/**
* Create composable resource
**/
- addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: Bytes | string | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, Bytes, RmrkTraitsResourceComposableResource]>;
+ addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceComposableResource]>;
/**
* Create slot resource
**/
@@ -381,7 +381,7 @@
/**
* burn nft
**/
- burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;
+ burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, maxBurns: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;
/**
* Change the issuer of a collection
*
@@ -415,7 +415,7 @@
* - `metadata`: Arbitrary data about an nft, e.g. IPFS hash
* - `transferable`: Ability to transfer this NFT
**/
- mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes, bool]>;
+ mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array, resources: Option<Vec<RmrkTraitsResourceResourceTypes>> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes, bool, Option<Vec<RmrkTraitsResourceResourceTypes>>]>;
/**
* Rejects an NFT sent from another account to self or owned NFT
*
@@ -974,8 +974,8 @@
* * new_sponsor.
**/
setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;
- setPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;
setTokenProperties: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, properties: Vec<UpDataStructsProperty> | (UpDataStructsProperty | { key?: any; value?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<UpDataStructsProperty>]>;
+ setTokenPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;
/**
* Set transfers_enabled value for particular collection
*
tests/src/interfaces/augment-types.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -1,7 +1,7 @@
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
import type { Data, StorageKey } from '@polkadot/types';
import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
@@ -819,10 +819,10 @@
PalletUniqueCall: PalletUniqueCall;
PalletUniqueError: PalletUniqueError;
PalletUniqueRawEvent: PalletUniqueRawEvent;
- PalletUnqSchedulerCall: PalletUnqSchedulerCall;
- PalletUnqSchedulerError: PalletUnqSchedulerError;
- PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;
- PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;
+ PalletUniqueSchedulerCall: PalletUniqueSchedulerCall;
+ PalletUniqueSchedulerError: PalletUniqueSchedulerError;
+ PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent;
+ PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3;
PalletVersion: PalletVersion;
PalletXcmCall: PalletXcmCall;
PalletXcmError: PalletXcmError;
tests/src/interfaces/default/types.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';5import type { ITuple } from '@polkadot/types-codec/types';6import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';7import type { Event } from '@polkadot/types/interfaces/system';89/** @name CumulusPalletDmpQueueCall */10export interface CumulusPalletDmpQueueCall extends Enum {11 readonly isServiceOverweight: boolean;12 readonly asServiceOverweight: {13 readonly index: u64;14 readonly weightLimit: u64;15 } & Struct;16 readonly type: 'ServiceOverweight';17}1819/** @name CumulusPalletDmpQueueConfigData */20export interface CumulusPalletDmpQueueConfigData extends Struct {21 readonly maxIndividual: u64;22}2324/** @name CumulusPalletDmpQueueError */25export interface CumulusPalletDmpQueueError extends Enum {26 readonly isUnknown: boolean;27 readonly isOverLimit: boolean;28 readonly type: 'Unknown' | 'OverLimit';29}3031/** @name CumulusPalletDmpQueueEvent */32export interface CumulusPalletDmpQueueEvent extends Enum {33 readonly isInvalidFormat: boolean;34 readonly asInvalidFormat: U8aFixed;35 readonly isUnsupportedVersion: boolean;36 readonly asUnsupportedVersion: U8aFixed;37 readonly isExecutedDownward: boolean;38 readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;39 readonly isWeightExhausted: boolean;40 readonly asWeightExhausted: ITuple<[U8aFixed, u64, u64]>;41 readonly isOverweightEnqueued: boolean;42 readonly asOverweightEnqueued: ITuple<[U8aFixed, u64, u64]>;43 readonly isOverweightServiced: boolean;44 readonly asOverweightServiced: ITuple<[u64, u64]>;45 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';46}4748/** @name CumulusPalletDmpQueuePageIndexData */49export interface CumulusPalletDmpQueuePageIndexData extends Struct {50 readonly beginUsed: u32;51 readonly endUsed: u32;52 readonly overweightCount: u64;53}5455/** @name CumulusPalletParachainSystemCall */56export interface CumulusPalletParachainSystemCall extends Enum {57 readonly isSetValidationData: boolean;58 readonly asSetValidationData: {59 readonly data: CumulusPrimitivesParachainInherentParachainInherentData;60 } & Struct;61 readonly isSudoSendUpwardMessage: boolean;62 readonly asSudoSendUpwardMessage: {63 readonly message: Bytes;64 } & Struct;65 readonly isAuthorizeUpgrade: boolean;66 readonly asAuthorizeUpgrade: {67 readonly codeHash: H256;68 } & Struct;69 readonly isEnactAuthorizedUpgrade: boolean;70 readonly asEnactAuthorizedUpgrade: {71 readonly code: Bytes;72 } & Struct;73 readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';74}7576/** @name CumulusPalletParachainSystemError */77export interface CumulusPalletParachainSystemError extends Enum {78 readonly isOverlappingUpgrades: boolean;79 readonly isProhibitedByPolkadot: boolean;80 readonly isTooBig: boolean;81 readonly isValidationDataNotAvailable: boolean;82 readonly isHostConfigurationNotAvailable: boolean;83 readonly isNotScheduled: boolean;84 readonly isNothingAuthorized: boolean;85 readonly isUnauthorized: boolean;86 readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';87}8889/** @name CumulusPalletParachainSystemEvent */90export interface CumulusPalletParachainSystemEvent extends Enum {91 readonly isValidationFunctionStored: boolean;92 readonly isValidationFunctionApplied: boolean;93 readonly asValidationFunctionApplied: u32;94 readonly isValidationFunctionDiscarded: boolean;95 readonly isUpgradeAuthorized: boolean;96 readonly asUpgradeAuthorized: H256;97 readonly isDownwardMessagesReceived: boolean;98 readonly asDownwardMessagesReceived: u32;99 readonly isDownwardMessagesProcessed: boolean;100 readonly asDownwardMessagesProcessed: ITuple<[u64, H256]>;101 readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';102}103104/** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot */105export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {106 readonly dmqMqcHead: H256;107 readonly relayDispatchQueueSize: ITuple<[u32, u32]>;108 readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;109 readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;110}111112/** @name CumulusPalletXcmCall */113export interface CumulusPalletXcmCall extends Null {}114115/** @name CumulusPalletXcmError */116export interface CumulusPalletXcmError extends Null {}117118/** @name CumulusPalletXcmEvent */119export interface CumulusPalletXcmEvent extends Enum {120 readonly isInvalidFormat: boolean;121 readonly asInvalidFormat: U8aFixed;122 readonly isUnsupportedVersion: boolean;123 readonly asUnsupportedVersion: U8aFixed;124 readonly isExecutedDownward: boolean;125 readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;126 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';127}128129/** @name CumulusPalletXcmOrigin */130export interface CumulusPalletXcmOrigin extends Enum {131 readonly isRelay: boolean;132 readonly isSiblingParachain: boolean;133 readonly asSiblingParachain: u32;134 readonly type: 'Relay' | 'SiblingParachain';135}136137/** @name CumulusPalletXcmpQueueCall */138export interface CumulusPalletXcmpQueueCall extends Enum {139 readonly isServiceOverweight: boolean;140 readonly asServiceOverweight: {141 readonly index: u64;142 readonly weightLimit: u64;143 } & Struct;144 readonly isSuspendXcmExecution: boolean;145 readonly isResumeXcmExecution: boolean;146 readonly isUpdateSuspendThreshold: boolean;147 readonly asUpdateSuspendThreshold: {148 readonly new_: u32;149 } & Struct;150 readonly isUpdateDropThreshold: boolean;151 readonly asUpdateDropThreshold: {152 readonly new_: u32;153 } & Struct;154 readonly isUpdateResumeThreshold: boolean;155 readonly asUpdateResumeThreshold: {156 readonly new_: u32;157 } & Struct;158 readonly isUpdateThresholdWeight: boolean;159 readonly asUpdateThresholdWeight: {160 readonly new_: u64;161 } & Struct;162 readonly isUpdateWeightRestrictDecay: boolean;163 readonly asUpdateWeightRestrictDecay: {164 readonly new_: u64;165 } & Struct;166 readonly isUpdateXcmpMaxIndividualWeight: boolean;167 readonly asUpdateXcmpMaxIndividualWeight: {168 readonly new_: u64;169 } & Struct;170 readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';171}172173/** @name CumulusPalletXcmpQueueError */174export interface CumulusPalletXcmpQueueError extends Enum {175 readonly isFailedToSend: boolean;176 readonly isBadXcmOrigin: boolean;177 readonly isBadXcm: boolean;178 readonly isBadOverweightIndex: boolean;179 readonly isWeightOverLimit: boolean;180 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';181}182183/** @name CumulusPalletXcmpQueueEvent */184export interface CumulusPalletXcmpQueueEvent extends Enum {185 readonly isSuccess: boolean;186 readonly asSuccess: Option<H256>;187 readonly isFail: boolean;188 readonly asFail: ITuple<[Option<H256>, XcmV2TraitsError]>;189 readonly isBadVersion: boolean;190 readonly asBadVersion: Option<H256>;191 readonly isBadFormat: boolean;192 readonly asBadFormat: Option<H256>;193 readonly isUpwardMessageSent: boolean;194 readonly asUpwardMessageSent: Option<H256>;195 readonly isXcmpMessageSent: boolean;196 readonly asXcmpMessageSent: Option<H256>;197 readonly isOverweightEnqueued: boolean;198 readonly asOverweightEnqueued: ITuple<[u32, u32, u64, u64]>;199 readonly isOverweightServiced: boolean;200 readonly asOverweightServiced: ITuple<[u64, u64]>;201 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';202}203204/** @name CumulusPalletXcmpQueueInboundChannelDetails */205export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {206 readonly sender: u32;207 readonly state: CumulusPalletXcmpQueueInboundState;208 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;209}210211/** @name CumulusPalletXcmpQueueInboundState */212export interface CumulusPalletXcmpQueueInboundState extends Enum {213 readonly isOk: boolean;214 readonly isSuspended: boolean;215 readonly type: 'Ok' | 'Suspended';216}217218/** @name CumulusPalletXcmpQueueOutboundChannelDetails */219export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {220 readonly recipient: u32;221 readonly state: CumulusPalletXcmpQueueOutboundState;222 readonly signalsExist: bool;223 readonly firstIndex: u16;224 readonly lastIndex: u16;225}226227/** @name CumulusPalletXcmpQueueOutboundState */228export interface CumulusPalletXcmpQueueOutboundState extends Enum {229 readonly isOk: boolean;230 readonly isSuspended: boolean;231 readonly type: 'Ok' | 'Suspended';232}233234/** @name CumulusPalletXcmpQueueQueueConfigData */235export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {236 readonly suspendThreshold: u32;237 readonly dropThreshold: u32;238 readonly resumeThreshold: u32;239 readonly thresholdWeight: u64;240 readonly weightRestrictDecay: u64;241 readonly xcmpMaxIndividualWeight: u64;242}243244/** @name CumulusPrimitivesParachainInherentParachainInherentData */245export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {246 readonly validationData: PolkadotPrimitivesV2PersistedValidationData;247 readonly relayChainState: SpTrieStorageProof;248 readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;249 readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;250}251252/** @name EthbloomBloom */253export interface EthbloomBloom extends U8aFixed {}254255/** @name EthereumBlock */256export interface EthereumBlock extends Struct {257 readonly header: EthereumHeader;258 readonly transactions: Vec<EthereumTransactionTransactionV2>;259 readonly ommers: Vec<EthereumHeader>;260}261262/** @name EthereumHeader */263export interface EthereumHeader extends Struct {264 readonly parentHash: H256;265 readonly ommersHash: H256;266 readonly beneficiary: H160;267 readonly stateRoot: H256;268 readonly transactionsRoot: H256;269 readonly receiptsRoot: H256;270 readonly logsBloom: EthbloomBloom;271 readonly difficulty: U256;272 readonly number: U256;273 readonly gasLimit: U256;274 readonly gasUsed: U256;275 readonly timestamp: u64;276 readonly extraData: Bytes;277 readonly mixHash: H256;278 readonly nonce: EthereumTypesHashH64;279}280281/** @name EthereumLog */282export interface EthereumLog extends Struct {283 readonly address: H160;284 readonly topics: Vec<H256>;285 readonly data: Bytes;286}287288/** @name EthereumReceiptEip658ReceiptData */289export interface EthereumReceiptEip658ReceiptData extends Struct {290 readonly statusCode: u8;291 readonly usedGas: U256;292 readonly logsBloom: EthbloomBloom;293 readonly logs: Vec<EthereumLog>;294}295296/** @name EthereumReceiptReceiptV3 */297export interface EthereumReceiptReceiptV3 extends Enum {298 readonly isLegacy: boolean;299 readonly asLegacy: EthereumReceiptEip658ReceiptData;300 readonly isEip2930: boolean;301 readonly asEip2930: EthereumReceiptEip658ReceiptData;302 readonly isEip1559: boolean;303 readonly asEip1559: EthereumReceiptEip658ReceiptData;304 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';305}306307/** @name EthereumTransactionAccessListItem */308export interface EthereumTransactionAccessListItem extends Struct {309 readonly address: H160;310 readonly storageKeys: Vec<H256>;311}312313/** @name EthereumTransactionEip1559Transaction */314export interface EthereumTransactionEip1559Transaction extends Struct {315 readonly chainId: u64;316 readonly nonce: U256;317 readonly maxPriorityFeePerGas: U256;318 readonly maxFeePerGas: U256;319 readonly gasLimit: U256;320 readonly action: EthereumTransactionTransactionAction;321 readonly value: U256;322 readonly input: Bytes;323 readonly accessList: Vec<EthereumTransactionAccessListItem>;324 readonly oddYParity: bool;325 readonly r: H256;326 readonly s: H256;327}328329/** @name EthereumTransactionEip2930Transaction */330export interface EthereumTransactionEip2930Transaction extends Struct {331 readonly chainId: u64;332 readonly nonce: U256;333 readonly gasPrice: U256;334 readonly gasLimit: U256;335 readonly action: EthereumTransactionTransactionAction;336 readonly value: U256;337 readonly input: Bytes;338 readonly accessList: Vec<EthereumTransactionAccessListItem>;339 readonly oddYParity: bool;340 readonly r: H256;341 readonly s: H256;342}343344/** @name EthereumTransactionLegacyTransaction */345export interface EthereumTransactionLegacyTransaction extends Struct {346 readonly nonce: U256;347 readonly gasPrice: U256;348 readonly gasLimit: U256;349 readonly action: EthereumTransactionTransactionAction;350 readonly value: U256;351 readonly input: Bytes;352 readonly signature: EthereumTransactionTransactionSignature;353}354355/** @name EthereumTransactionTransactionAction */356export interface EthereumTransactionTransactionAction extends Enum {357 readonly isCall: boolean;358 readonly asCall: H160;359 readonly isCreate: boolean;360 readonly type: 'Call' | 'Create';361}362363/** @name EthereumTransactionTransactionSignature */364export interface EthereumTransactionTransactionSignature extends Struct {365 readonly v: u64;366 readonly r: H256;367 readonly s: H256;368}369370/** @name EthereumTransactionTransactionV2 */371export interface EthereumTransactionTransactionV2 extends Enum {372 readonly isLegacy: boolean;373 readonly asLegacy: EthereumTransactionLegacyTransaction;374 readonly isEip2930: boolean;375 readonly asEip2930: EthereumTransactionEip2930Transaction;376 readonly isEip1559: boolean;377 readonly asEip1559: EthereumTransactionEip1559Transaction;378 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';379}380381/** @name EthereumTypesHashH64 */382export interface EthereumTypesHashH64 extends U8aFixed {}383384/** @name EvmCoreErrorExitError */385export interface EvmCoreErrorExitError extends Enum {386 readonly isStackUnderflow: boolean;387 readonly isStackOverflow: boolean;388 readonly isInvalidJump: boolean;389 readonly isInvalidRange: boolean;390 readonly isDesignatedInvalid: boolean;391 readonly isCallTooDeep: boolean;392 readonly isCreateCollision: boolean;393 readonly isCreateContractLimit: boolean;394 readonly isOutOfOffset: boolean;395 readonly isOutOfGas: boolean;396 readonly isOutOfFund: boolean;397 readonly isPcUnderflow: boolean;398 readonly isCreateEmpty: boolean;399 readonly isOther: boolean;400 readonly asOther: Text;401 readonly isInvalidCode: boolean;402 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';403}404405/** @name EvmCoreErrorExitFatal */406export interface EvmCoreErrorExitFatal extends Enum {407 readonly isNotSupported: boolean;408 readonly isUnhandledInterrupt: boolean;409 readonly isCallErrorAsFatal: boolean;410 readonly asCallErrorAsFatal: EvmCoreErrorExitError;411 readonly isOther: boolean;412 readonly asOther: Text;413 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';414}415416/** @name EvmCoreErrorExitReason */417export interface EvmCoreErrorExitReason extends Enum {418 readonly isSucceed: boolean;419 readonly asSucceed: EvmCoreErrorExitSucceed;420 readonly isError: boolean;421 readonly asError: EvmCoreErrorExitError;422 readonly isRevert: boolean;423 readonly asRevert: EvmCoreErrorExitRevert;424 readonly isFatal: boolean;425 readonly asFatal: EvmCoreErrorExitFatal;426 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';427}428429/** @name EvmCoreErrorExitRevert */430export interface EvmCoreErrorExitRevert extends Enum {431 readonly isReverted: boolean;432 readonly type: 'Reverted';433}434435/** @name EvmCoreErrorExitSucceed */436export interface EvmCoreErrorExitSucceed extends Enum {437 readonly isStopped: boolean;438 readonly isReturned: boolean;439 readonly isSuicided: boolean;440 readonly type: 'Stopped' | 'Returned' | 'Suicided';441}442443/** @name FpRpcTransactionStatus */444export interface FpRpcTransactionStatus extends Struct {445 readonly transactionHash: H256;446 readonly transactionIndex: u32;447 readonly from: H160;448 readonly to: Option<H160>;449 readonly contractAddress: Option<H160>;450 readonly logs: Vec<EthereumLog>;451 readonly logsBloom: EthbloomBloom;452}453454/** @name FrameSupportDispatchRawOrigin */455export interface FrameSupportDispatchRawOrigin extends Enum {456 readonly isRoot: boolean;457 readonly isSigned: boolean;458 readonly asSigned: AccountId32;459 readonly isNone: boolean;460 readonly type: 'Root' | 'Signed' | 'None';461}462463/** @name FrameSupportPalletId */464export interface FrameSupportPalletId extends U8aFixed {}465466/** @name FrameSupportScheduleLookupError */467export interface FrameSupportScheduleLookupError extends Enum {468 readonly isUnknown: boolean;469 readonly isBadFormat: boolean;470 readonly type: 'Unknown' | 'BadFormat';471}472473/** @name FrameSupportScheduleMaybeHashed */474export interface FrameSupportScheduleMaybeHashed extends Enum {475 readonly isValue: boolean;476 readonly asValue: Call;477 readonly isHash: boolean;478 readonly asHash: H256;479 readonly type: 'Value' | 'Hash';480}481482/** @name FrameSupportTokensMiscBalanceStatus */483export interface FrameSupportTokensMiscBalanceStatus extends Enum {484 readonly isFree: boolean;485 readonly isReserved: boolean;486 readonly type: 'Free' | 'Reserved';487}488489/** @name FrameSupportWeightsDispatchClass */490export interface FrameSupportWeightsDispatchClass extends Enum {491 readonly isNormal: boolean;492 readonly isOperational: boolean;493 readonly isMandatory: boolean;494 readonly type: 'Normal' | 'Operational' | 'Mandatory';495}496497/** @name FrameSupportWeightsDispatchInfo */498export interface FrameSupportWeightsDispatchInfo extends Struct {499 readonly weight: u64;500 readonly class: FrameSupportWeightsDispatchClass;501 readonly paysFee: FrameSupportWeightsPays;502}503504/** @name FrameSupportWeightsPays */505export interface FrameSupportWeightsPays extends Enum {506 readonly isYes: boolean;507 readonly isNo: boolean;508 readonly type: 'Yes' | 'No';509}510511/** @name FrameSupportWeightsPerDispatchClassU32 */512export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {513 readonly normal: u32;514 readonly operational: u32;515 readonly mandatory: u32;516}517518/** @name FrameSupportWeightsPerDispatchClassU64 */519export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {520 readonly normal: u64;521 readonly operational: u64;522 readonly mandatory: u64;523}524525/** @name FrameSupportWeightsPerDispatchClassWeightsPerClass */526export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {527 readonly normal: FrameSystemLimitsWeightsPerClass;528 readonly operational: FrameSystemLimitsWeightsPerClass;529 readonly mandatory: FrameSystemLimitsWeightsPerClass;530}531532/** @name FrameSupportWeightsRuntimeDbWeight */533export interface FrameSupportWeightsRuntimeDbWeight extends Struct {534 readonly read: u64;535 readonly write: u64;536}537538/** @name FrameSupportWeightsWeightToFeeCoefficient */539export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct {540 readonly coeffInteger: u128;541 readonly coeffFrac: Perbill;542 readonly negative: bool;543 readonly degree: u8;544}545546/** @name FrameSystemAccountInfo */547export interface FrameSystemAccountInfo extends Struct {548 readonly nonce: u32;549 readonly consumers: u32;550 readonly providers: u32;551 readonly sufficients: u32;552 readonly data: PalletBalancesAccountData;553}554555/** @name FrameSystemCall */556export interface FrameSystemCall extends Enum {557 readonly isFillBlock: boolean;558 readonly asFillBlock: {559 readonly ratio: Perbill;560 } & Struct;561 readonly isRemark: boolean;562 readonly asRemark: {563 readonly remark: Bytes;564 } & Struct;565 readonly isSetHeapPages: boolean;566 readonly asSetHeapPages: {567 readonly pages: u64;568 } & Struct;569 readonly isSetCode: boolean;570 readonly asSetCode: {571 readonly code: Bytes;572 } & Struct;573 readonly isSetCodeWithoutChecks: boolean;574 readonly asSetCodeWithoutChecks: {575 readonly code: Bytes;576 } & Struct;577 readonly isSetStorage: boolean;578 readonly asSetStorage: {579 readonly items: Vec<ITuple<[Bytes, Bytes]>>;580 } & Struct;581 readonly isKillStorage: boolean;582 readonly asKillStorage: {583 readonly keys_: Vec<Bytes>;584 } & Struct;585 readonly isKillPrefix: boolean;586 readonly asKillPrefix: {587 readonly prefix: Bytes;588 readonly subkeys: u32;589 } & Struct;590 readonly isRemarkWithEvent: boolean;591 readonly asRemarkWithEvent: {592 readonly remark: Bytes;593 } & Struct;594 readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';595}596597/** @name FrameSystemError */598export interface FrameSystemError extends Enum {599 readonly isInvalidSpecName: boolean;600 readonly isSpecVersionNeedsToIncrease: boolean;601 readonly isFailedToExtractRuntimeVersion: boolean;602 readonly isNonDefaultComposite: boolean;603 readonly isNonZeroRefCount: boolean;604 readonly isCallFiltered: boolean;605 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';606}607608/** @name FrameSystemEvent */609export interface FrameSystemEvent extends Enum {610 readonly isExtrinsicSuccess: boolean;611 readonly asExtrinsicSuccess: {612 readonly dispatchInfo: FrameSupportWeightsDispatchInfo;613 } & Struct;614 readonly isExtrinsicFailed: boolean;615 readonly asExtrinsicFailed: {616 readonly dispatchError: SpRuntimeDispatchError;617 readonly dispatchInfo: FrameSupportWeightsDispatchInfo;618 } & Struct;619 readonly isCodeUpdated: boolean;620 readonly isNewAccount: boolean;621 readonly asNewAccount: {622 readonly account: AccountId32;623 } & Struct;624 readonly isKilledAccount: boolean;625 readonly asKilledAccount: {626 readonly account: AccountId32;627 } & Struct;628 readonly isRemarked: boolean;629 readonly asRemarked: {630 readonly sender: AccountId32;631 readonly hash_: H256;632 } & Struct;633 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';634}635636/** @name FrameSystemEventRecord */637export interface FrameSystemEventRecord extends Struct {638 readonly phase: FrameSystemPhase;639 readonly event: Event;640 readonly topics: Vec<H256>;641}642643/** @name FrameSystemExtensionsCheckGenesis */644export interface FrameSystemExtensionsCheckGenesis extends Null {}645646/** @name FrameSystemExtensionsCheckNonce */647export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}648649/** @name FrameSystemExtensionsCheckSpecVersion */650export interface FrameSystemExtensionsCheckSpecVersion extends Null {}651652/** @name FrameSystemExtensionsCheckWeight */653export interface FrameSystemExtensionsCheckWeight extends Null {}654655/** @name FrameSystemLastRuntimeUpgradeInfo */656export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {657 readonly specVersion: Compact<u32>;658 readonly specName: Text;659}660661/** @name FrameSystemLimitsBlockLength */662export interface FrameSystemLimitsBlockLength extends Struct {663 readonly max: FrameSupportWeightsPerDispatchClassU32;664}665666/** @name FrameSystemLimitsBlockWeights */667export interface FrameSystemLimitsBlockWeights extends Struct {668 readonly baseBlock: u64;669 readonly maxBlock: u64;670 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;671}672673/** @name FrameSystemLimitsWeightsPerClass */674export interface FrameSystemLimitsWeightsPerClass extends Struct {675 readonly baseExtrinsic: u64;676 readonly maxExtrinsic: Option<u64>;677 readonly maxTotal: Option<u64>;678 readonly reserved: Option<u64>;679}680681/** @name FrameSystemPhase */682export interface FrameSystemPhase extends Enum {683 readonly isApplyExtrinsic: boolean;684 readonly asApplyExtrinsic: u32;685 readonly isFinalization: boolean;686 readonly isInitialization: boolean;687 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';688}689690/** @name OpalRuntimeOriginCaller */691export interface OpalRuntimeOriginCaller extends Enum {692 readonly isVoid: boolean;693 readonly asVoid: SpCoreVoid;694 readonly isSystem: boolean;695 readonly asSystem: FrameSupportDispatchRawOrigin;696 readonly isPolkadotXcm: boolean;697 readonly asPolkadotXcm: PalletXcmOrigin;698 readonly isCumulusXcm: boolean;699 readonly asCumulusXcm: CumulusPalletXcmOrigin;700 readonly isEthereum: boolean;701 readonly asEthereum: PalletEthereumRawOrigin;702 readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';703}704705/** @name OpalRuntimeRuntime */706export interface OpalRuntimeRuntime extends Null {}707708/** @name OrmlVestingModuleCall */709export interface OrmlVestingModuleCall extends Enum {710 readonly isClaim: boolean;711 readonly isVestedTransfer: boolean;712 readonly asVestedTransfer: {713 readonly dest: MultiAddress;714 readonly schedule: OrmlVestingVestingSchedule;715 } & Struct;716 readonly isUpdateVestingSchedules: boolean;717 readonly asUpdateVestingSchedules: {718 readonly who: MultiAddress;719 readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;720 } & Struct;721 readonly isClaimFor: boolean;722 readonly asClaimFor: {723 readonly dest: MultiAddress;724 } & Struct;725 readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';726}727728/** @name OrmlVestingModuleError */729export interface OrmlVestingModuleError extends Enum {730 readonly isZeroVestingPeriod: boolean;731 readonly isZeroVestingPeriodCount: boolean;732 readonly isInsufficientBalanceToLock: boolean;733 readonly isTooManyVestingSchedules: boolean;734 readonly isAmountLow: boolean;735 readonly isMaxVestingSchedulesExceeded: boolean;736 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';737}738739/** @name OrmlVestingModuleEvent */740export interface OrmlVestingModuleEvent extends Enum {741 readonly isVestingScheduleAdded: boolean;742 readonly asVestingScheduleAdded: {743 readonly from: AccountId32;744 readonly to: AccountId32;745 readonly vestingSchedule: OrmlVestingVestingSchedule;746 } & Struct;747 readonly isClaimed: boolean;748 readonly asClaimed: {749 readonly who: AccountId32;750 readonly amount: u128;751 } & Struct;752 readonly isVestingSchedulesUpdated: boolean;753 readonly asVestingSchedulesUpdated: {754 readonly who: AccountId32;755 } & Struct;756 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';757}758759/** @name OrmlVestingVestingSchedule */760export interface OrmlVestingVestingSchedule extends Struct {761 readonly start: u32;762 readonly period: u32;763 readonly periodCount: u32;764 readonly perPeriod: Compact<u128>;765}766767/** @name PalletBalancesAccountData */768export interface PalletBalancesAccountData extends Struct {769 readonly free: u128;770 readonly reserved: u128;771 readonly miscFrozen: u128;772 readonly feeFrozen: u128;773}774775/** @name PalletBalancesBalanceLock */776export interface PalletBalancesBalanceLock extends Struct {777 readonly id: U8aFixed;778 readonly amount: u128;779 readonly reasons: PalletBalancesReasons;780}781782/** @name PalletBalancesCall */783export interface PalletBalancesCall extends Enum {784 readonly isTransfer: boolean;785 readonly asTransfer: {786 readonly dest: MultiAddress;787 readonly value: Compact<u128>;788 } & Struct;789 readonly isSetBalance: boolean;790 readonly asSetBalance: {791 readonly who: MultiAddress;792 readonly newFree: Compact<u128>;793 readonly newReserved: Compact<u128>;794 } & Struct;795 readonly isForceTransfer: boolean;796 readonly asForceTransfer: {797 readonly source: MultiAddress;798 readonly dest: MultiAddress;799 readonly value: Compact<u128>;800 } & Struct;801 readonly isTransferKeepAlive: boolean;802 readonly asTransferKeepAlive: {803 readonly dest: MultiAddress;804 readonly value: Compact<u128>;805 } & Struct;806 readonly isTransferAll: boolean;807 readonly asTransferAll: {808 readonly dest: MultiAddress;809 readonly keepAlive: bool;810 } & Struct;811 readonly isForceUnreserve: boolean;812 readonly asForceUnreserve: {813 readonly who: MultiAddress;814 readonly amount: u128;815 } & Struct;816 readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';817}818819/** @name PalletBalancesError */820export interface PalletBalancesError extends Enum {821 readonly isVestingBalance: boolean;822 readonly isLiquidityRestrictions: boolean;823 readonly isInsufficientBalance: boolean;824 readonly isExistentialDeposit: boolean;825 readonly isKeepAlive: boolean;826 readonly isExistingVestingSchedule: boolean;827 readonly isDeadAccount: boolean;828 readonly isTooManyReserves: boolean;829 readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';830}831832/** @name PalletBalancesEvent */833export interface PalletBalancesEvent extends Enum {834 readonly isEndowed: boolean;835 readonly asEndowed: {836 readonly account: AccountId32;837 readonly freeBalance: u128;838 } & Struct;839 readonly isDustLost: boolean;840 readonly asDustLost: {841 readonly account: AccountId32;842 readonly amount: u128;843 } & Struct;844 readonly isTransfer: boolean;845 readonly asTransfer: {846 readonly from: AccountId32;847 readonly to: AccountId32;848 readonly amount: u128;849 } & Struct;850 readonly isBalanceSet: boolean;851 readonly asBalanceSet: {852 readonly who: AccountId32;853 readonly free: u128;854 readonly reserved: u128;855 } & Struct;856 readonly isReserved: boolean;857 readonly asReserved: {858 readonly who: AccountId32;859 readonly amount: u128;860 } & Struct;861 readonly isUnreserved: boolean;862 readonly asUnreserved: {863 readonly who: AccountId32;864 readonly amount: u128;865 } & Struct;866 readonly isReserveRepatriated: boolean;867 readonly asReserveRepatriated: {868 readonly from: AccountId32;869 readonly to: AccountId32;870 readonly amount: u128;871 readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;872 } & Struct;873 readonly isDeposit: boolean;874 readonly asDeposit: {875 readonly who: AccountId32;876 readonly amount: u128;877 } & Struct;878 readonly isWithdraw: boolean;879 readonly asWithdraw: {880 readonly who: AccountId32;881 readonly amount: u128;882 } & Struct;883 readonly isSlashed: boolean;884 readonly asSlashed: {885 readonly who: AccountId32;886 readonly amount: u128;887 } & Struct;888 readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';889}890891/** @name PalletBalancesReasons */892export interface PalletBalancesReasons extends Enum {893 readonly isFee: boolean;894 readonly isMisc: boolean;895 readonly isAll: boolean;896 readonly type: 'Fee' | 'Misc' | 'All';897}898899/** @name PalletBalancesReleases */900export interface PalletBalancesReleases extends Enum {901 readonly isV100: boolean;902 readonly isV200: boolean;903 readonly type: 'V100' | 'V200';904}905906/** @name PalletBalancesReserveData */907export interface PalletBalancesReserveData extends Struct {908 readonly id: U8aFixed;909 readonly amount: u128;910}911912/** @name PalletCommonError */913export interface PalletCommonError extends Enum {914 readonly isCollectionNotFound: boolean;915 readonly isMustBeTokenOwner: boolean;916 readonly isNoPermission: boolean;917 readonly isCantDestroyNotEmptyCollection: boolean;918 readonly isPublicMintingNotAllowed: boolean;919 readonly isAddressNotInAllowlist: boolean;920 readonly isCollectionNameLimitExceeded: boolean;921 readonly isCollectionDescriptionLimitExceeded: boolean;922 readonly isCollectionTokenPrefixLimitExceeded: boolean;923 readonly isTotalCollectionsLimitExceeded: boolean;924 readonly isCollectionAdminCountExceeded: boolean;925 readonly isCollectionLimitBoundsExceeded: boolean;926 readonly isOwnerPermissionsCantBeReverted: boolean;927 readonly isTransferNotAllowed: boolean;928 readonly isAccountTokenLimitExceeded: boolean;929 readonly isCollectionTokenLimitExceeded: boolean;930 readonly isMetadataFlagFrozen: boolean;931 readonly isTokenNotFound: boolean;932 readonly isTokenValueTooLow: boolean;933 readonly isApprovedValueTooLow: boolean;934 readonly isCantApproveMoreThanOwned: boolean;935 readonly isAddressIsZero: boolean;936 readonly isUnsupportedOperation: boolean;937 readonly isNotSufficientFounds: boolean;938 readonly isUserIsNotAllowedToNest: boolean;939 readonly isSourceCollectionIsNotAllowedToNest: boolean;940 readonly isCollectionFieldSizeExceeded: boolean;941 readonly isNoSpaceForProperty: boolean;942 readonly isPropertyLimitReached: boolean;943 readonly isPropertyKeyIsTooLong: boolean;944 readonly isInvalidCharacterInPropertyKey: boolean;945 readonly isEmptyPropertyKey: boolean;946 readonly isCollectionIsExternal: boolean;947 readonly isCollectionIsInternal: boolean;948 readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';949}950951/** @name PalletCommonEvent */952export interface PalletCommonEvent extends Enum {953 readonly isCollectionCreated: boolean;954 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;955 readonly isCollectionDestroyed: boolean;956 readonly asCollectionDestroyed: u32;957 readonly isItemCreated: boolean;958 readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;959 readonly isItemDestroyed: boolean;960 readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;961 readonly isTransfer: boolean;962 readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;963 readonly isApproved: boolean;964 readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;965 readonly isCollectionPropertySet: boolean;966 readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;967 readonly isCollectionPropertyDeleted: boolean;968 readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;969 readonly isTokenPropertySet: boolean;970 readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;971 readonly isTokenPropertyDeleted: boolean;972 readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;973 readonly isPropertyPermissionSet: boolean;974 readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;975 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';976}977978/** @name PalletEthereumCall */979export interface PalletEthereumCall extends Enum {980 readonly isTransact: boolean;981 readonly asTransact: {982 readonly transaction: EthereumTransactionTransactionV2;983 } & Struct;984 readonly type: 'Transact';985}986987/** @name PalletEthereumError */988export interface PalletEthereumError extends Enum {989 readonly isInvalidSignature: boolean;990 readonly isPreLogExists: boolean;991 readonly type: 'InvalidSignature' | 'PreLogExists';992}993994/** @name PalletEthereumEvent */995export interface PalletEthereumEvent extends Enum {996 readonly isExecuted: boolean;997 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;998 readonly type: 'Executed';999}10001001/** @name PalletEthereumFakeTransactionFinalizer */1002export interface PalletEthereumFakeTransactionFinalizer extends Null {}10031004/** @name PalletEthereumRawOrigin */1005export interface PalletEthereumRawOrigin extends Enum {1006 readonly isEthereumTransaction: boolean;1007 readonly asEthereumTransaction: H160;1008 readonly type: 'EthereumTransaction';1009}10101011/** @name PalletEvmAccountBasicCrossAccountIdRepr */1012export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1013 readonly isSubstrate: boolean;1014 readonly asSubstrate: AccountId32;1015 readonly isEthereum: boolean;1016 readonly asEthereum: H160;1017 readonly type: 'Substrate' | 'Ethereum';1018}10191020/** @name PalletEvmCall */1021export interface PalletEvmCall extends Enum {1022 readonly isWithdraw: boolean;1023 readonly asWithdraw: {1024 readonly address: H160;1025 readonly value: u128;1026 } & Struct;1027 readonly isCall: boolean;1028 readonly asCall: {1029 readonly source: H160;1030 readonly target: H160;1031 readonly input: Bytes;1032 readonly value: U256;1033 readonly gasLimit: u64;1034 readonly maxFeePerGas: U256;1035 readonly maxPriorityFeePerGas: Option<U256>;1036 readonly nonce: Option<U256>;1037 readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1038 } & Struct;1039 readonly isCreate: boolean;1040 readonly asCreate: {1041 readonly source: H160;1042 readonly init: Bytes;1043 readonly value: U256;1044 readonly gasLimit: u64;1045 readonly maxFeePerGas: U256;1046 readonly maxPriorityFeePerGas: Option<U256>;1047 readonly nonce: Option<U256>;1048 readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1049 } & Struct;1050 readonly isCreate2: boolean;1051 readonly asCreate2: {1052 readonly source: H160;1053 readonly init: Bytes;1054 readonly salt: H256;1055 readonly value: U256;1056 readonly gasLimit: u64;1057 readonly maxFeePerGas: U256;1058 readonly maxPriorityFeePerGas: Option<U256>;1059 readonly nonce: Option<U256>;1060 readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1061 } & Struct;1062 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1063}10641065/** @name PalletEvmCoderSubstrateError */1066export interface PalletEvmCoderSubstrateError extends Enum {1067 readonly isOutOfGas: boolean;1068 readonly isOutOfFund: boolean;1069 readonly type: 'OutOfGas' | 'OutOfFund';1070}10711072/** @name PalletEvmContractHelpersError */1073export interface PalletEvmContractHelpersError extends Enum {1074 readonly isNoPermission: boolean;1075 readonly type: 'NoPermission';1076}10771078/** @name PalletEvmContractHelpersSponsoringModeT */1079export interface PalletEvmContractHelpersSponsoringModeT extends Enum {1080 readonly isDisabled: boolean;1081 readonly isAllowlisted: boolean;1082 readonly isGenerous: boolean;1083 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';1084}10851086/** @name PalletEvmError */1087export interface PalletEvmError extends Enum {1088 readonly isBalanceLow: boolean;1089 readonly isFeeOverflow: boolean;1090 readonly isPaymentOverflow: boolean;1091 readonly isWithdrawFailed: boolean;1092 readonly isGasPriceTooLow: boolean;1093 readonly isInvalidNonce: boolean;1094 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';1095}10961097/** @name PalletEvmEvent */1098export interface PalletEvmEvent extends Enum {1099 readonly isLog: boolean;1100 readonly asLog: EthereumLog;1101 readonly isCreated: boolean;1102 readonly asCreated: H160;1103 readonly isCreatedFailed: boolean;1104 readonly asCreatedFailed: H160;1105 readonly isExecuted: boolean;1106 readonly asExecuted: H160;1107 readonly isExecutedFailed: boolean;1108 readonly asExecutedFailed: H160;1109 readonly isBalanceDeposit: boolean;1110 readonly asBalanceDeposit: ITuple<[AccountId32, H160, U256]>;1111 readonly isBalanceWithdraw: boolean;1112 readonly asBalanceWithdraw: ITuple<[AccountId32, H160, U256]>;1113 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';1114}11151116/** @name PalletEvmMigrationCall */1117export interface PalletEvmMigrationCall extends Enum {1118 readonly isBegin: boolean;1119 readonly asBegin: {1120 readonly address: H160;1121 } & Struct;1122 readonly isSetData: boolean;1123 readonly asSetData: {1124 readonly address: H160;1125 readonly data: Vec<ITuple<[H256, H256]>>;1126 } & Struct;1127 readonly isFinish: boolean;1128 readonly asFinish: {1129 readonly address: H160;1130 readonly code: Bytes;1131 } & Struct;1132 readonly type: 'Begin' | 'SetData' | 'Finish';1133}11341135/** @name PalletEvmMigrationError */1136export interface PalletEvmMigrationError extends Enum {1137 readonly isAccountNotEmpty: boolean;1138 readonly isAccountIsNotMigrating: boolean;1139 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';1140}11411142/** @name PalletFungibleError */1143export interface PalletFungibleError extends Enum {1144 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;1145 readonly isFungibleItemsHaveNoId: boolean;1146 readonly isFungibleItemsDontHaveData: boolean;1147 readonly isFungibleDisallowsNesting: boolean;1148 readonly isSettingPropertiesNotAllowed: boolean;1149 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1150}11511152/** @name PalletInflationCall */1153export interface PalletInflationCall extends Enum {1154 readonly isStartInflation: boolean;1155 readonly asStartInflation: {1156 readonly inflationStartRelayBlock: u32;1157 } & Struct;1158 readonly type: 'StartInflation';1159}11601161/** @name PalletNonfungibleError */1162export interface PalletNonfungibleError extends Enum {1163 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;1164 readonly isNonfungibleItemsHaveNoAmount: boolean;1165 readonly isCantBurnNftWithChildren: boolean;1166 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';1167}11681169/** @name PalletNonfungibleItemData */1170export interface PalletNonfungibleItemData extends Struct {1171 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1172}11731174/** @name PalletRefungibleError */1175export interface PalletRefungibleError extends Enum {1176 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;1177 readonly isWrongRefungiblePieces: boolean;1178 readonly isRefungibleDisallowsNesting: boolean;1179 readonly isSettingPropertiesNotAllowed: boolean;1180 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1181}11821183/** @name PalletRefungibleItemData */1184export interface PalletRefungibleItemData extends Struct {1185 readonly constData: Bytes;1186}11871188/** @name PalletRmrkCoreCall */1189export interface PalletRmrkCoreCall extends Enum {1190 readonly isCreateCollection: boolean;1191 readonly asCreateCollection: {1192 readonly metadata: Bytes;1193 readonly max: Option<u32>;1194 readonly symbol: Bytes;1195 } & Struct;1196 readonly isDestroyCollection: boolean;1197 readonly asDestroyCollection: {1198 readonly collectionId: u32;1199 } & Struct;1200 readonly isChangeCollectionIssuer: boolean;1201 readonly asChangeCollectionIssuer: {1202 readonly collectionId: u32;1203 readonly newIssuer: MultiAddress;1204 } & Struct;1205 readonly isLockCollection: boolean;1206 readonly asLockCollection: {1207 readonly collectionId: u32;1208 } & Struct;1209 readonly isMintNft: boolean;1210 readonly asMintNft: {1211 readonly owner: AccountId32;1212 readonly collectionId: u32;1213 readonly recipient: Option<AccountId32>;1214 readonly royaltyAmount: Option<Permill>;1215 readonly metadata: Bytes;1216 readonly transferable: bool;1217 } & Struct;1218 readonly isBurnNft: boolean;1219 readonly asBurnNft: {1220 readonly collectionId: u32;1221 readonly nftId: u32;1222 } & Struct;1223 readonly isSend: boolean;1224 readonly asSend: {1225 readonly rmrkCollectionId: u32;1226 readonly rmrkNftId: u32;1227 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1228 } & Struct;1229 readonly isAcceptNft: boolean;1230 readonly asAcceptNft: {1231 readonly rmrkCollectionId: u32;1232 readonly rmrkNftId: u32;1233 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1234 } & Struct;1235 readonly isRejectNft: boolean;1236 readonly asRejectNft: {1237 readonly rmrkCollectionId: u32;1238 readonly rmrkNftId: u32;1239 } & Struct;1240 readonly isAcceptResource: boolean;1241 readonly asAcceptResource: {1242 readonly rmrkCollectionId: u32;1243 readonly rmrkNftId: u32;1244 readonly rmrkResourceId: u32;1245 } & Struct;1246 readonly isAcceptResourceRemoval: boolean;1247 readonly asAcceptResourceRemoval: {1248 readonly rmrkCollectionId: u32;1249 readonly rmrkNftId: u32;1250 readonly rmrkResourceId: u32;1251 } & Struct;1252 readonly isSetProperty: boolean;1253 readonly asSetProperty: {1254 readonly rmrkCollectionId: Compact<u32>;1255 readonly maybeNftId: Option<u32>;1256 readonly key: Bytes;1257 readonly value: Bytes;1258 } & Struct;1259 readonly isSetPriority: boolean;1260 readonly asSetPriority: {1261 readonly rmrkCollectionId: u32;1262 readonly rmrkNftId: u32;1263 readonly priorities: Vec<u32>;1264 } & Struct;1265 readonly isAddBasicResource: boolean;1266 readonly asAddBasicResource: {1267 readonly rmrkCollectionId: u32;1268 readonly nftId: u32;1269 readonly resource: RmrkTraitsResourceBasicResource;1270 } & Struct;1271 readonly isAddComposableResource: boolean;1272 readonly asAddComposableResource: {1273 readonly rmrkCollectionId: u32;1274 readonly nftId: u32;1275 readonly resourceId: Bytes;1276 readonly resource: RmrkTraitsResourceComposableResource;1277 } & Struct;1278 readonly isAddSlotResource: boolean;1279 readonly asAddSlotResource: {1280 readonly rmrkCollectionId: u32;1281 readonly nftId: u32;1282 readonly resource: RmrkTraitsResourceSlotResource;1283 } & Struct;1284 readonly isRemoveResource: boolean;1285 readonly asRemoveResource: {1286 readonly rmrkCollectionId: u32;1287 readonly nftId: u32;1288 readonly resourceId: u32;1289 } & Struct;1290 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1291}12921293/** @name PalletRmrkCoreError */1294export interface PalletRmrkCoreError extends Enum {1295 readonly isCorruptedCollectionType: boolean;1296 readonly isNftTypeEncodeError: boolean;1297 readonly isRmrkPropertyKeyIsTooLong: boolean;1298 readonly isRmrkPropertyValueIsTooLong: boolean;1299 readonly isCollectionNotEmpty: boolean;1300 readonly isNoAvailableCollectionId: boolean;1301 readonly isNoAvailableNftId: boolean;1302 readonly isCollectionUnknown: boolean;1303 readonly isNoPermission: boolean;1304 readonly isNonTransferable: boolean;1305 readonly isCollectionFullOrLocked: boolean;1306 readonly isResourceDoesntExist: boolean;1307 readonly isCannotSendToDescendentOrSelf: boolean;1308 readonly isCannotAcceptNonOwnedNft: boolean;1309 readonly isCannotRejectNonOwnedNft: boolean;1310 readonly isResourceNotPending: boolean;1311 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';1312}13131314/** @name PalletRmrkCoreEvent */1315export interface PalletRmrkCoreEvent extends Enum {1316 readonly isCollectionCreated: boolean;1317 readonly asCollectionCreated: {1318 readonly issuer: AccountId32;1319 readonly collectionId: u32;1320 } & Struct;1321 readonly isCollectionDestroyed: boolean;1322 readonly asCollectionDestroyed: {1323 readonly issuer: AccountId32;1324 readonly collectionId: u32;1325 } & Struct;1326 readonly isIssuerChanged: boolean;1327 readonly asIssuerChanged: {1328 readonly oldIssuer: AccountId32;1329 readonly newIssuer: AccountId32;1330 readonly collectionId: u32;1331 } & Struct;1332 readonly isCollectionLocked: boolean;1333 readonly asCollectionLocked: {1334 readonly issuer: AccountId32;1335 readonly collectionId: u32;1336 } & Struct;1337 readonly isNftMinted: boolean;1338 readonly asNftMinted: {1339 readonly owner: AccountId32;1340 readonly collectionId: u32;1341 readonly nftId: u32;1342 } & Struct;1343 readonly isNftBurned: boolean;1344 readonly asNftBurned: {1345 readonly owner: AccountId32;1346 readonly nftId: u32;1347 } & Struct;1348 readonly isNftSent: boolean;1349 readonly asNftSent: {1350 readonly sender: AccountId32;1351 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1352 readonly collectionId: u32;1353 readonly nftId: u32;1354 readonly approvalRequired: bool;1355 } & Struct;1356 readonly isNftAccepted: boolean;1357 readonly asNftAccepted: {1358 readonly sender: AccountId32;1359 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1360 readonly collectionId: u32;1361 readonly nftId: u32;1362 } & Struct;1363 readonly isNftRejected: boolean;1364 readonly asNftRejected: {1365 readonly sender: AccountId32;1366 readonly collectionId: u32;1367 readonly nftId: u32;1368 } & Struct;1369 readonly isPropertySet: boolean;1370 readonly asPropertySet: {1371 readonly collectionId: u32;1372 readonly maybeNftId: Option<u32>;1373 readonly key: Bytes;1374 readonly value: Bytes;1375 } & Struct;1376 readonly isResourceAdded: boolean;1377 readonly asResourceAdded: {1378 readonly nftId: u32;1379 readonly resourceId: u32;1380 } & Struct;1381 readonly isResourceRemoval: boolean;1382 readonly asResourceRemoval: {1383 readonly nftId: u32;1384 readonly resourceId: u32;1385 } & Struct;1386 readonly isResourceAccepted: boolean;1387 readonly asResourceAccepted: {1388 readonly nftId: u32;1389 readonly resourceId: u32;1390 } & Struct;1391 readonly isResourceRemovalAccepted: boolean;1392 readonly asResourceRemovalAccepted: {1393 readonly nftId: u32;1394 readonly resourceId: u32;1395 } & Struct;1396 readonly isPrioritySet: boolean;1397 readonly asPrioritySet: {1398 readonly collectionId: u32;1399 readonly nftId: u32;1400 } & Struct;1401 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';1402}14031404/** @name PalletRmrkEquipCall */1405export interface PalletRmrkEquipCall extends Enum {1406 readonly isCreateBase: boolean;1407 readonly asCreateBase: {1408 readonly baseType: Bytes;1409 readonly symbol: Bytes;1410 readonly parts: Vec<RmrkTraitsPartPartType>;1411 } & Struct;1412 readonly isThemeAdd: boolean;1413 readonly asThemeAdd: {1414 readonly baseId: u32;1415 readonly theme: RmrkTraitsTheme;1416 } & Struct;1417 readonly type: 'CreateBase' | 'ThemeAdd';1418}14191420/** @name PalletRmrkEquipError */1421export interface PalletRmrkEquipError extends Enum {1422 readonly isPermissionError: boolean;1423 readonly isNoAvailableBaseId: boolean;1424 readonly isNoAvailablePartId: boolean;1425 readonly isBaseDoesntExist: boolean;1426 readonly isNeedsDefaultThemeFirst: boolean;1427 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';1428}14291430/** @name PalletRmrkEquipEvent */1431export interface PalletRmrkEquipEvent extends Enum {1432 readonly isBaseCreated: boolean;1433 readonly asBaseCreated: {1434 readonly issuer: AccountId32;1435 readonly baseId: u32;1436 } & Struct;1437 readonly type: 'BaseCreated';1438}14391440/** @name PalletStructureCall */1441export interface PalletStructureCall extends Null {}14421443/** @name PalletStructureError */1444export interface PalletStructureError extends Enum {1445 readonly isOuroborosDetected: boolean;1446 readonly isDepthLimit: boolean;1447 readonly isBreadthLimit: boolean;1448 readonly isTokenNotFound: boolean;1449 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';1450}14511452/** @name PalletStructureEvent */1453export interface PalletStructureEvent extends Enum {1454 readonly isExecuted: boolean;1455 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;1456 readonly type: 'Executed';1457}14581459/** @name PalletSudoCall */1460export interface PalletSudoCall extends Enum {1461 readonly isSudo: boolean;1462 readonly asSudo: {1463 readonly call: Call;1464 } & Struct;1465 readonly isSudoUncheckedWeight: boolean;1466 readonly asSudoUncheckedWeight: {1467 readonly call: Call;1468 readonly weight: u64;1469 } & Struct;1470 readonly isSetKey: boolean;1471 readonly asSetKey: {1472 readonly new_: MultiAddress;1473 } & Struct;1474 readonly isSudoAs: boolean;1475 readonly asSudoAs: {1476 readonly who: MultiAddress;1477 readonly call: Call;1478 } & Struct;1479 readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';1480}14811482/** @name PalletSudoError */1483export interface PalletSudoError extends Enum {1484 readonly isRequireSudo: boolean;1485 readonly type: 'RequireSudo';1486}14871488/** @name PalletSudoEvent */1489export interface PalletSudoEvent extends Enum {1490 readonly isSudid: boolean;1491 readonly asSudid: {1492 readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1493 } & Struct;1494 readonly isKeyChanged: boolean;1495 readonly asKeyChanged: {1496 readonly oldSudoer: Option<AccountId32>;1497 } & Struct;1498 readonly isSudoAsDone: boolean;1499 readonly asSudoAsDone: {1500 readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1501 } & Struct;1502 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1503}15041505/** @name PalletTemplateTransactionPaymentCall */1506export interface PalletTemplateTransactionPaymentCall extends Null {}15071508/** @name PalletTemplateTransactionPaymentChargeTransactionPayment */1509export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}15101511/** @name PalletTimestampCall */1512export interface PalletTimestampCall extends Enum {1513 readonly isSet: boolean;1514 readonly asSet: {1515 readonly now: Compact<u64>;1516 } & Struct;1517 readonly type: 'Set';1518}15191520/** @name PalletTransactionPaymentReleases */1521export interface PalletTransactionPaymentReleases extends Enum {1522 readonly isV1Ancient: boolean;1523 readonly isV2: boolean;1524 readonly type: 'V1Ancient' | 'V2';1525}15261527/** @name PalletTreasuryCall */1528export interface PalletTreasuryCall extends Enum {1529 readonly isProposeSpend: boolean;1530 readonly asProposeSpend: {1531 readonly value: Compact<u128>;1532 readonly beneficiary: MultiAddress;1533 } & Struct;1534 readonly isRejectProposal: boolean;1535 readonly asRejectProposal: {1536 readonly proposalId: Compact<u32>;1537 } & Struct;1538 readonly isApproveProposal: boolean;1539 readonly asApproveProposal: {1540 readonly proposalId: Compact<u32>;1541 } & Struct;1542 readonly isRemoveApproval: boolean;1543 readonly asRemoveApproval: {1544 readonly proposalId: Compact<u32>;1545 } & Struct;1546 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'RemoveApproval';1547}15481549/** @name PalletTreasuryError */1550export interface PalletTreasuryError extends Enum {1551 readonly isInsufficientProposersBalance: boolean;1552 readonly isInvalidIndex: boolean;1553 readonly isTooManyApprovals: boolean;1554 readonly isProposalNotApproved: boolean;1555 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'ProposalNotApproved';1556}15571558/** @name PalletTreasuryEvent */1559export interface PalletTreasuryEvent extends Enum {1560 readonly isProposed: boolean;1561 readonly asProposed: {1562 readonly proposalIndex: u32;1563 } & Struct;1564 readonly isSpending: boolean;1565 readonly asSpending: {1566 readonly budgetRemaining: u128;1567 } & Struct;1568 readonly isAwarded: boolean;1569 readonly asAwarded: {1570 readonly proposalIndex: u32;1571 readonly award: u128;1572 readonly account: AccountId32;1573 } & Struct;1574 readonly isRejected: boolean;1575 readonly asRejected: {1576 readonly proposalIndex: u32;1577 readonly slashed: u128;1578 } & Struct;1579 readonly isBurnt: boolean;1580 readonly asBurnt: {1581 readonly burntFunds: u128;1582 } & Struct;1583 readonly isRollover: boolean;1584 readonly asRollover: {1585 readonly rolloverBalance: u128;1586 } & Struct;1587 readonly isDeposit: boolean;1588 readonly asDeposit: {1589 readonly value: u128;1590 } & Struct;1591 readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';1592}15931594/** @name PalletTreasuryProposal */1595export interface PalletTreasuryProposal extends Struct {1596 readonly proposer: AccountId32;1597 readonly value: u128;1598 readonly beneficiary: AccountId32;1599 readonly bond: u128;1600}16011602/** @name PalletUniqueCall */1603export interface PalletUniqueCall extends Enum {1604 readonly isCreateCollection: boolean;1605 readonly asCreateCollection: {1606 readonly collectionName: Vec<u16>;1607 readonly collectionDescription: Vec<u16>;1608 readonly tokenPrefix: Bytes;1609 readonly mode: UpDataStructsCollectionMode;1610 } & Struct;1611 readonly isCreateCollectionEx: boolean;1612 readonly asCreateCollectionEx: {1613 readonly data: UpDataStructsCreateCollectionData;1614 } & Struct;1615 readonly isDestroyCollection: boolean;1616 readonly asDestroyCollection: {1617 readonly collectionId: u32;1618 } & Struct;1619 readonly isAddToAllowList: boolean;1620 readonly asAddToAllowList: {1621 readonly collectionId: u32;1622 readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1623 } & Struct;1624 readonly isRemoveFromAllowList: boolean;1625 readonly asRemoveFromAllowList: {1626 readonly collectionId: u32;1627 readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1628 } & Struct;1629 readonly isChangeCollectionOwner: boolean;1630 readonly asChangeCollectionOwner: {1631 readonly collectionId: u32;1632 readonly newOwner: AccountId32;1633 } & Struct;1634 readonly isAddCollectionAdmin: boolean;1635 readonly asAddCollectionAdmin: {1636 readonly collectionId: u32;1637 readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;1638 } & Struct;1639 readonly isRemoveCollectionAdmin: boolean;1640 readonly asRemoveCollectionAdmin: {1641 readonly collectionId: u32;1642 readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;1643 } & Struct;1644 readonly isSetCollectionSponsor: boolean;1645 readonly asSetCollectionSponsor: {1646 readonly collectionId: u32;1647 readonly newSponsor: AccountId32;1648 } & Struct;1649 readonly isConfirmSponsorship: boolean;1650 readonly asConfirmSponsorship: {1651 readonly collectionId: u32;1652 } & Struct;1653 readonly isRemoveCollectionSponsor: boolean;1654 readonly asRemoveCollectionSponsor: {1655 readonly collectionId: u32;1656 } & Struct;1657 readonly isCreateItem: boolean;1658 readonly asCreateItem: {1659 readonly collectionId: u32;1660 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1661 readonly data: UpDataStructsCreateItemData;1662 } & Struct;1663 readonly isCreateMultipleItems: boolean;1664 readonly asCreateMultipleItems: {1665 readonly collectionId: u32;1666 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1667 readonly itemsData: Vec<UpDataStructsCreateItemData>;1668 } & Struct;1669 readonly isSetCollectionProperties: boolean;1670 readonly asSetCollectionProperties: {1671 readonly collectionId: u32;1672 readonly properties: Vec<UpDataStructsProperty>;1673 } & Struct;1674 readonly isDeleteCollectionProperties: boolean;1675 readonly asDeleteCollectionProperties: {1676 readonly collectionId: u32;1677 readonly propertyKeys: Vec<Bytes>;1678 } & Struct;1679 readonly isSetTokenProperties: boolean;1680 readonly asSetTokenProperties: {1681 readonly collectionId: u32;1682 readonly tokenId: u32;1683 readonly properties: Vec<UpDataStructsProperty>;1684 } & Struct;1685 readonly isDeleteTokenProperties: boolean;1686 readonly asDeleteTokenProperties: {1687 readonly collectionId: u32;1688 readonly tokenId: u32;1689 readonly propertyKeys: Vec<Bytes>;1690 } & Struct;1691 readonly isSetPropertyPermissions: boolean;1692 readonly asSetPropertyPermissions: {1693 readonly collectionId: u32;1694 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1695 } & Struct;1696 readonly isCreateMultipleItemsEx: boolean;1697 readonly asCreateMultipleItemsEx: {1698 readonly collectionId: u32;1699 readonly data: UpDataStructsCreateItemExData;1700 } & Struct;1701 readonly isSetTransfersEnabledFlag: boolean;1702 readonly asSetTransfersEnabledFlag: {1703 readonly collectionId: u32;1704 readonly value: bool;1705 } & Struct;1706 readonly isBurnItem: boolean;1707 readonly asBurnItem: {1708 readonly collectionId: u32;1709 readonly itemId: u32;1710 readonly value: u128;1711 } & Struct;1712 readonly isBurnFrom: boolean;1713 readonly asBurnFrom: {1714 readonly collectionId: u32;1715 readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1716 readonly itemId: u32;1717 readonly value: u128;1718 } & Struct;1719 readonly isTransfer: boolean;1720 readonly asTransfer: {1721 readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1722 readonly collectionId: u32;1723 readonly itemId: u32;1724 readonly value: u128;1725 } & Struct;1726 readonly isApprove: boolean;1727 readonly asApprove: {1728 readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;1729 readonly collectionId: u32;1730 readonly itemId: u32;1731 readonly amount: u128;1732 } & Struct;1733 readonly isTransferFrom: boolean;1734 readonly asTransferFrom: {1735 readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1736 readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1737 readonly collectionId: u32;1738 readonly itemId: u32;1739 readonly value: u128;1740 } & Struct;1741 readonly isSetCollectionLimits: boolean;1742 readonly asSetCollectionLimits: {1743 readonly collectionId: u32;1744 readonly newLimit: UpDataStructsCollectionLimits;1745 } & Struct;1746 readonly isSetCollectionPermissions: boolean;1747 readonly asSetCollectionPermissions: {1748 readonly collectionId: u32;1749 readonly newLimit: UpDataStructsCollectionPermissions;1750 } & Struct;1751 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';1752}17531754/** @name PalletUniqueError */1755export interface PalletUniqueError extends Enum {1756 readonly isCollectionDecimalPointLimitExceeded: boolean;1757 readonly isConfirmUnsetSponsorFail: boolean;1758 readonly isEmptyArgument: boolean;1759 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';1760}17611762/** @name PalletUniqueRawEvent */1763export interface PalletUniqueRawEvent extends Enum {1764 readonly isCollectionSponsorRemoved: boolean;1765 readonly asCollectionSponsorRemoved: u32;1766 readonly isCollectionAdminAdded: boolean;1767 readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1768 readonly isCollectionOwnedChanged: boolean;1769 readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;1770 readonly isCollectionSponsorSet: boolean;1771 readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;1772 readonly isSponsorshipConfirmed: boolean;1773 readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;1774 readonly isCollectionAdminRemoved: boolean;1775 readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1776 readonly isAllowListAddressRemoved: boolean;1777 readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1778 readonly isAllowListAddressAdded: boolean;1779 readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1780 readonly isCollectionLimitSet: boolean;1781 readonly asCollectionLimitSet: u32;1782 readonly isCollectionPermissionSet: boolean;1783 readonly asCollectionPermissionSet: u32;1784 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1785}17861787/** @name PalletUnqSchedulerCall */1788export interface PalletUnqSchedulerCall extends Enum {1789 readonly isScheduleNamed: boolean;1790 readonly asScheduleNamed: {1791 readonly id: U8aFixed;1792 readonly when: u32;1793 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1794 readonly priority: u8;1795 readonly call: FrameSupportScheduleMaybeHashed;1796 } & Struct;1797 readonly isCancelNamed: boolean;1798 readonly asCancelNamed: {1799 readonly id: U8aFixed;1800 } & Struct;1801 readonly isScheduleNamedAfter: boolean;1802 readonly asScheduleNamedAfter: {1803 readonly id: U8aFixed;1804 readonly after: u32;1805 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1806 readonly priority: u8;1807 readonly call: FrameSupportScheduleMaybeHashed;1808 } & Struct;1809 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1810}18111812/** @name PalletUnqSchedulerError */1813export interface PalletUnqSchedulerError extends Enum {1814 readonly isFailedToSchedule: boolean;1815 readonly isNotFound: boolean;1816 readonly isTargetBlockNumberInPast: boolean;1817 readonly isRescheduleNoChange: boolean;1818 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';1819}18201821/** @name PalletUnqSchedulerEvent */1822export interface PalletUnqSchedulerEvent extends Enum {1823 readonly isScheduled: boolean;1824 readonly asScheduled: {1825 readonly when: u32;1826 readonly index: u32;1827 } & Struct;1828 readonly isCanceled: boolean;1829 readonly asCanceled: {1830 readonly when: u32;1831 readonly index: u32;1832 } & Struct;1833 readonly isDispatched: boolean;1834 readonly asDispatched: {1835 readonly task: ITuple<[u32, u32]>;1836 readonly id: Option<U8aFixed>;1837 readonly result: Result<Null, SpRuntimeDispatchError>;1838 } & Struct;1839 readonly isCallLookupFailed: boolean;1840 readonly asCallLookupFailed: {1841 readonly task: ITuple<[u32, u32]>;1842 readonly id: Option<U8aFixed>;1843 readonly error: FrameSupportScheduleLookupError;1844 } & Struct;1845 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1846}18471848/** @name PalletUnqSchedulerScheduledV3 */1849export interface PalletUnqSchedulerScheduledV3 extends Struct {1850 readonly maybeId: Option<U8aFixed>;1851 readonly priority: u8;1852 readonly call: FrameSupportScheduleMaybeHashed;1853 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1854 readonly origin: OpalRuntimeOriginCaller;1855}18561857/** @name PalletXcmCall */1858export interface PalletXcmCall extends Enum {1859 readonly isSend: boolean;1860 readonly asSend: {1861 readonly dest: XcmVersionedMultiLocation;1862 readonly message: XcmVersionedXcm;1863 } & Struct;1864 readonly isTeleportAssets: boolean;1865 readonly asTeleportAssets: {1866 readonly dest: XcmVersionedMultiLocation;1867 readonly beneficiary: XcmVersionedMultiLocation;1868 readonly assets: XcmVersionedMultiAssets;1869 readonly feeAssetItem: u32;1870 } & Struct;1871 readonly isReserveTransferAssets: boolean;1872 readonly asReserveTransferAssets: {1873 readonly dest: XcmVersionedMultiLocation;1874 readonly beneficiary: XcmVersionedMultiLocation;1875 readonly assets: XcmVersionedMultiAssets;1876 readonly feeAssetItem: u32;1877 } & Struct;1878 readonly isExecute: boolean;1879 readonly asExecute: {1880 readonly message: XcmVersionedXcm;1881 readonly maxWeight: u64;1882 } & Struct;1883 readonly isForceXcmVersion: boolean;1884 readonly asForceXcmVersion: {1885 readonly location: XcmV1MultiLocation;1886 readonly xcmVersion: u32;1887 } & Struct;1888 readonly isForceDefaultXcmVersion: boolean;1889 readonly asForceDefaultXcmVersion: {1890 readonly maybeXcmVersion: Option<u32>;1891 } & Struct;1892 readonly isForceSubscribeVersionNotify: boolean;1893 readonly asForceSubscribeVersionNotify: {1894 readonly location: XcmVersionedMultiLocation;1895 } & Struct;1896 readonly isForceUnsubscribeVersionNotify: boolean;1897 readonly asForceUnsubscribeVersionNotify: {1898 readonly location: XcmVersionedMultiLocation;1899 } & Struct;1900 readonly isLimitedReserveTransferAssets: boolean;1901 readonly asLimitedReserveTransferAssets: {1902 readonly dest: XcmVersionedMultiLocation;1903 readonly beneficiary: XcmVersionedMultiLocation;1904 readonly assets: XcmVersionedMultiAssets;1905 readonly feeAssetItem: u32;1906 readonly weightLimit: XcmV2WeightLimit;1907 } & Struct;1908 readonly isLimitedTeleportAssets: boolean;1909 readonly asLimitedTeleportAssets: {1910 readonly dest: XcmVersionedMultiLocation;1911 readonly beneficiary: XcmVersionedMultiLocation;1912 readonly assets: XcmVersionedMultiAssets;1913 readonly feeAssetItem: u32;1914 readonly weightLimit: XcmV2WeightLimit;1915 } & Struct;1916 readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';1917}19181919/** @name PalletXcmError */1920export interface PalletXcmError extends Enum {1921 readonly isUnreachable: boolean;1922 readonly isSendFailure: boolean;1923 readonly isFiltered: boolean;1924 readonly isUnweighableMessage: boolean;1925 readonly isDestinationNotInvertible: boolean;1926 readonly isEmpty: boolean;1927 readonly isCannotReanchor: boolean;1928 readonly isTooManyAssets: boolean;1929 readonly isInvalidOrigin: boolean;1930 readonly isBadVersion: boolean;1931 readonly isBadLocation: boolean;1932 readonly isNoSubscription: boolean;1933 readonly isAlreadySubscribed: boolean;1934 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';1935}19361937/** @name PalletXcmEvent */1938export interface PalletXcmEvent extends Enum {1939 readonly isAttempted: boolean;1940 readonly asAttempted: XcmV2TraitsOutcome;1941 readonly isSent: boolean;1942 readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;1943 readonly isUnexpectedResponse: boolean;1944 readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;1945 readonly isResponseReady: boolean;1946 readonly asResponseReady: ITuple<[u64, XcmV2Response]>;1947 readonly isNotified: boolean;1948 readonly asNotified: ITuple<[u64, u8, u8]>;1949 readonly isNotifyOverweight: boolean;1950 readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;1951 readonly isNotifyDispatchError: boolean;1952 readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;1953 readonly isNotifyDecodeFailed: boolean;1954 readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;1955 readonly isInvalidResponder: boolean;1956 readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;1957 readonly isInvalidResponderVersion: boolean;1958 readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;1959 readonly isResponseTaken: boolean;1960 readonly asResponseTaken: u64;1961 readonly isAssetsTrapped: boolean;1962 readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;1963 readonly isVersionChangeNotified: boolean;1964 readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;1965 readonly isSupportedVersionChanged: boolean;1966 readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;1967 readonly isNotifyTargetSendFail: boolean;1968 readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;1969 readonly isNotifyTargetMigrationFail: boolean;1970 readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;1971 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';1972}19731974/** @name PalletXcmOrigin */1975export interface PalletXcmOrigin extends Enum {1976 readonly isXcm: boolean;1977 readonly asXcm: XcmV1MultiLocation;1978 readonly isResponse: boolean;1979 readonly asResponse: XcmV1MultiLocation;1980 readonly type: 'Xcm' | 'Response';1981}19821983/** @name PhantomTypeUpDataStructs */1984export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}19851986/** @name PolkadotCorePrimitivesInboundDownwardMessage */1987export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {1988 readonly sentAt: u32;1989 readonly msg: Bytes;1990}19911992/** @name PolkadotCorePrimitivesInboundHrmpMessage */1993export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {1994 readonly sentAt: u32;1995 readonly data: Bytes;1996}19971998/** @name PolkadotCorePrimitivesOutboundHrmpMessage */1999export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {2000 readonly recipient: u32;2001 readonly data: Bytes;2002}20032004/** @name PolkadotParachainPrimitivesXcmpMessageFormat */2005export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2006 readonly isConcatenatedVersionedXcm: boolean;2007 readonly isConcatenatedEncodedBlob: boolean;2008 readonly isSignals: boolean;2009 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2010}20112012/** @name PolkadotPrimitivesV2AbridgedHostConfiguration */2013export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {2014 readonly maxCodeSize: u32;2015 readonly maxHeadDataSize: u32;2016 readonly maxUpwardQueueCount: u32;2017 readonly maxUpwardQueueSize: u32;2018 readonly maxUpwardMessageSize: u32;2019 readonly maxUpwardMessageNumPerCandidate: u32;2020 readonly hrmpMaxMessageNumPerCandidate: u32;2021 readonly validationUpgradeCooldown: u32;2022 readonly validationUpgradeDelay: u32;2023}20242025/** @name PolkadotPrimitivesV2AbridgedHrmpChannel */2026export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {2027 readonly maxCapacity: u32;2028 readonly maxTotalSize: u32;2029 readonly maxMessageSize: u32;2030 readonly msgCount: u32;2031 readonly totalSize: u32;2032 readonly mqcHead: Option<H256>;2033}20342035/** @name PolkadotPrimitivesV2PersistedValidationData */2036export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {2037 readonly parentHead: Bytes;2038 readonly relayParentNumber: u32;2039 readonly relayParentStorageRoot: H256;2040 readonly maxPovSize: u32;2041}20422043/** @name PolkadotPrimitivesV2UpgradeRestriction */2044export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {2045 readonly isPresent: boolean;2046 readonly type: 'Present';2047}20482049/** @name RmrkTraitsBaseBaseInfo */2050export interface RmrkTraitsBaseBaseInfo extends Struct {2051 readonly issuer: AccountId32;2052 readonly baseType: Bytes;2053 readonly symbol: Bytes;2054}20552056/** @name RmrkTraitsCollectionCollectionInfo */2057export interface RmrkTraitsCollectionCollectionInfo extends Struct {2058 readonly issuer: AccountId32;2059 readonly metadata: Bytes;2060 readonly max: Option<u32>;2061 readonly symbol: Bytes;2062 readonly nftsCount: u32;2063}20642065/** @name RmrkTraitsNftAccountIdOrCollectionNftTuple */2066export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {2067 readonly isAccountId: boolean;2068 readonly asAccountId: AccountId32;2069 readonly isCollectionAndNftTuple: boolean;2070 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2071 readonly type: 'AccountId' | 'CollectionAndNftTuple';2072}20732074/** @name RmrkTraitsNftNftChild */2075export interface RmrkTraitsNftNftChild extends Struct {2076 readonly collectionId: u32;2077 readonly nftId: u32;2078}20792080/** @name RmrkTraitsNftNftInfo */2081export interface RmrkTraitsNftNftInfo extends Struct {2082 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2083 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2084 readonly metadata: Bytes;2085 readonly equipped: bool;2086 readonly pending: bool;2087}20882089/** @name RmrkTraitsNftRoyaltyInfo */2090export interface RmrkTraitsNftRoyaltyInfo extends Struct {2091 readonly recipient: AccountId32;2092 readonly amount: Permill;2093}20942095/** @name RmrkTraitsPartEquippableList */2096export interface RmrkTraitsPartEquippableList extends Enum {2097 readonly isAll: boolean;2098 readonly isEmpty: boolean;2099 readonly isCustom: boolean;2100 readonly asCustom: Vec<u32>;2101 readonly type: 'All' | 'Empty' | 'Custom';2102}21032104/** @name RmrkTraitsPartFixedPart */2105export interface RmrkTraitsPartFixedPart extends Struct {2106 readonly id: u32;2107 readonly z: u32;2108 readonly src: Bytes;2109}21102111/** @name RmrkTraitsPartPartType */2112export interface RmrkTraitsPartPartType extends Enum {2113 readonly isFixedPart: boolean;2114 readonly asFixedPart: RmrkTraitsPartFixedPart;2115 readonly isSlotPart: boolean;2116 readonly asSlotPart: RmrkTraitsPartSlotPart;2117 readonly type: 'FixedPart' | 'SlotPart';2118}21192120/** @name RmrkTraitsPartSlotPart */2121export interface RmrkTraitsPartSlotPart extends Struct {2122 readonly id: u32;2123 readonly equippable: RmrkTraitsPartEquippableList;2124 readonly src: Bytes;2125 readonly z: u32;2126}21272128/** @name RmrkTraitsPropertyPropertyInfo */2129export interface RmrkTraitsPropertyPropertyInfo extends Struct {2130 readonly key: Bytes;2131 readonly value: Bytes;2132}21332134/** @name RmrkTraitsResourceBasicResource */2135export interface RmrkTraitsResourceBasicResource extends Struct {2136 readonly src: Option<Bytes>;2137 readonly metadata: Option<Bytes>;2138 readonly license: Option<Bytes>;2139 readonly thumb: Option<Bytes>;2140}21412142/** @name RmrkTraitsResourceComposableResource */2143export interface RmrkTraitsResourceComposableResource extends Struct {2144 readonly parts: Vec<u32>;2145 readonly base: u32;2146 readonly src: Option<Bytes>;2147 readonly metadata: Option<Bytes>;2148 readonly license: Option<Bytes>;2149 readonly thumb: Option<Bytes>;2150}21512152/** @name RmrkTraitsResourceResourceInfo */2153export interface RmrkTraitsResourceResourceInfo extends Struct {2154 readonly id: u32;2155 readonly resource: RmrkTraitsResourceResourceTypes;2156 readonly pending: bool;2157 readonly pendingRemoval: bool;2158}21592160/** @name RmrkTraitsResourceResourceTypes */2161export interface RmrkTraitsResourceResourceTypes extends Enum {2162 readonly isBasic: boolean;2163 readonly asBasic: RmrkTraitsResourceBasicResource;2164 readonly isComposable: boolean;2165 readonly asComposable: RmrkTraitsResourceComposableResource;2166 readonly isSlot: boolean;2167 readonly asSlot: RmrkTraitsResourceSlotResource;2168 readonly type: 'Basic' | 'Composable' | 'Slot';2169}21702171/** @name RmrkTraitsResourceSlotResource */2172export interface RmrkTraitsResourceSlotResource extends Struct {2173 readonly base: u32;2174 readonly src: Option<Bytes>;2175 readonly metadata: Option<Bytes>;2176 readonly slot: u32;2177 readonly license: Option<Bytes>;2178 readonly thumb: Option<Bytes>;2179}21802181/** @name RmrkTraitsTheme */2182export interface RmrkTraitsTheme extends Struct {2183 readonly name: Bytes;2184 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;2185 readonly inherit: bool;2186}21872188/** @name RmrkTraitsThemeThemeProperty */2189export interface RmrkTraitsThemeThemeProperty extends Struct {2190 readonly key: Bytes;2191 readonly value: Bytes;2192}21932194/** @name SpCoreEcdsaSignature */2195export interface SpCoreEcdsaSignature extends U8aFixed {}21962197/** @name SpCoreEd25519Signature */2198export interface SpCoreEd25519Signature extends U8aFixed {}21992200/** @name SpCoreSr25519Signature */2201export interface SpCoreSr25519Signature extends U8aFixed {}22022203/** @name SpCoreVoid */2204export interface SpCoreVoid extends Null {}22052206/** @name SpRuntimeArithmeticError */2207export interface SpRuntimeArithmeticError extends Enum {2208 readonly isUnderflow: boolean;2209 readonly isOverflow: boolean;2210 readonly isDivisionByZero: boolean;2211 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2212}22132214/** @name SpRuntimeDigest */2215export interface SpRuntimeDigest extends Struct {2216 readonly logs: Vec<SpRuntimeDigestDigestItem>;2217}22182219/** @name SpRuntimeDigestDigestItem */2220export interface SpRuntimeDigestDigestItem extends Enum {2221 readonly isOther: boolean;2222 readonly asOther: Bytes;2223 readonly isConsensus: boolean;2224 readonly asConsensus: ITuple<[U8aFixed, Bytes]>;2225 readonly isSeal: boolean;2226 readonly asSeal: ITuple<[U8aFixed, Bytes]>;2227 readonly isPreRuntime: boolean;2228 readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;2229 readonly isRuntimeEnvironmentUpdated: boolean;2230 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2231}22322233/** @name SpRuntimeDispatchError */2234export interface SpRuntimeDispatchError extends Enum {2235 readonly isOther: boolean;2236 readonly isCannotLookup: boolean;2237 readonly isBadOrigin: boolean;2238 readonly isModule: boolean;2239 readonly asModule: SpRuntimeModuleError;2240 readonly isConsumerRemaining: boolean;2241 readonly isNoProviders: boolean;2242 readonly isTooManyConsumers: boolean;2243 readonly isToken: boolean;2244 readonly asToken: SpRuntimeTokenError;2245 readonly isArithmetic: boolean;2246 readonly asArithmetic: SpRuntimeArithmeticError;2247 readonly isTransactional: boolean;2248 readonly asTransactional: SpRuntimeTransactionalError;2249 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2250}22512252/** @name SpRuntimeModuleError */2253export interface SpRuntimeModuleError extends Struct {2254 readonly index: u8;2255 readonly error: U8aFixed;2256}22572258/** @name SpRuntimeMultiSignature */2259export interface SpRuntimeMultiSignature extends Enum {2260 readonly isEd25519: boolean;2261 readonly asEd25519: SpCoreEd25519Signature;2262 readonly isSr25519: boolean;2263 readonly asSr25519: SpCoreSr25519Signature;2264 readonly isEcdsa: boolean;2265 readonly asEcdsa: SpCoreEcdsaSignature;2266 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2267}22682269/** @name SpRuntimeTokenError */2270export interface SpRuntimeTokenError extends Enum {2271 readonly isNoFunds: boolean;2272 readonly isWouldDie: boolean;2273 readonly isBelowMinimum: boolean;2274 readonly isCannotCreate: boolean;2275 readonly isUnknownAsset: boolean;2276 readonly isFrozen: boolean;2277 readonly isUnsupported: boolean;2278 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2279}22802281/** @name SpRuntimeTransactionalError */2282export interface SpRuntimeTransactionalError extends Enum {2283 readonly isLimitReached: boolean;2284 readonly isNoLayer: boolean;2285 readonly type: 'LimitReached' | 'NoLayer';2286}22872288/** @name SpTrieStorageProof */2289export interface SpTrieStorageProof extends Struct {2290 readonly trieNodes: BTreeSet<Bytes>;2291}22922293/** @name SpVersionRuntimeVersion */2294export interface SpVersionRuntimeVersion extends Struct {2295 readonly specName: Text;2296 readonly implName: Text;2297 readonly authoringVersion: u32;2298 readonly specVersion: u32;2299 readonly implVersion: u32;2300 readonly apis: Vec<ITuple<[U8aFixed, u32]>>;2301 readonly transactionVersion: u32;2302 readonly stateVersion: u8;2303}23042305/** @name UpDataStructsAccessMode */2306export interface UpDataStructsAccessMode extends Enum {2307 readonly isNormal: boolean;2308 readonly isAllowList: boolean;2309 readonly type: 'Normal' | 'AllowList';2310}23112312/** @name UpDataStructsCollection */2313export interface UpDataStructsCollection extends Struct {2314 readonly owner: AccountId32;2315 readonly mode: UpDataStructsCollectionMode;2316 readonly name: Vec<u16>;2317 readonly description: Vec<u16>;2318 readonly tokenPrefix: Bytes;2319 readonly sponsorship: UpDataStructsSponsorshipState;2320 readonly limits: UpDataStructsCollectionLimits;2321 readonly permissions: UpDataStructsCollectionPermissions;2322 readonly externalCollection: bool;2323}23242325/** @name UpDataStructsCollectionLimits */2326export interface UpDataStructsCollectionLimits extends Struct {2327 readonly accountTokenOwnershipLimit: Option<u32>;2328 readonly sponsoredDataSize: Option<u32>;2329 readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;2330 readonly tokenLimit: Option<u32>;2331 readonly sponsorTransferTimeout: Option<u32>;2332 readonly sponsorApproveTimeout: Option<u32>;2333 readonly ownerCanTransfer: Option<bool>;2334 readonly ownerCanDestroy: Option<bool>;2335 readonly transfersEnabled: Option<bool>;2336}23372338/** @name UpDataStructsCollectionMode */2339export interface UpDataStructsCollectionMode extends Enum {2340 readonly isNft: boolean;2341 readonly isFungible: boolean;2342 readonly asFungible: u8;2343 readonly isReFungible: boolean;2344 readonly type: 'Nft' | 'Fungible' | 'ReFungible';2345}23462347/** @name UpDataStructsCollectionPermissions */2348export interface UpDataStructsCollectionPermissions extends Struct {2349 readonly access: Option<UpDataStructsAccessMode>;2350 readonly mintMode: Option<bool>;2351 readonly nesting: Option<UpDataStructsNestingPermissions>;2352}23532354/** @name UpDataStructsCollectionStats */2355export interface UpDataStructsCollectionStats extends Struct {2356 readonly created: u32;2357 readonly destroyed: u32;2358 readonly alive: u32;2359}23602361/** @name UpDataStructsCreateCollectionData */2362export interface UpDataStructsCreateCollectionData extends Struct {2363 readonly mode: UpDataStructsCollectionMode;2364 readonly access: Option<UpDataStructsAccessMode>;2365 readonly name: Vec<u16>;2366 readonly description: Vec<u16>;2367 readonly tokenPrefix: Bytes;2368 readonly pendingSponsor: Option<AccountId32>;2369 readonly limits: Option<UpDataStructsCollectionLimits>;2370 readonly permissions: Option<UpDataStructsCollectionPermissions>;2371 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2372 readonly properties: Vec<UpDataStructsProperty>;2373}23742375/** @name UpDataStructsCreateFungibleData */2376export interface UpDataStructsCreateFungibleData extends Struct {2377 readonly value: u128;2378}23792380/** @name UpDataStructsCreateItemData */2381export interface UpDataStructsCreateItemData extends Enum {2382 readonly isNft: boolean;2383 readonly asNft: UpDataStructsCreateNftData;2384 readonly isFungible: boolean;2385 readonly asFungible: UpDataStructsCreateFungibleData;2386 readonly isReFungible: boolean;2387 readonly asReFungible: UpDataStructsCreateReFungibleData;2388 readonly type: 'Nft' | 'Fungible' | 'ReFungible';2389}23902391/** @name UpDataStructsCreateItemExData */2392export interface UpDataStructsCreateItemExData extends Enum {2393 readonly isNft: boolean;2394 readonly asNft: Vec<UpDataStructsCreateNftExData>;2395 readonly isFungible: boolean;2396 readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr,u128>;2397 readonly isRefungibleMultipleItems: boolean;2398 readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExData>;2399 readonly isRefungibleMultipleOwners: boolean;2400 readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExData;2401 readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';2402}24032404/** @name UpDataStructsCreateNftData */2405export interface UpDataStructsCreateNftData extends Struct {2406 readonly properties: Vec<UpDataStructsProperty>;2407}24082409/** @name UpDataStructsCreateNftExData */2410export interface UpDataStructsCreateNftExData extends Struct {2411 readonly properties: Vec<UpDataStructsProperty>;2412 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2413}24142415/** @name UpDataStructsCreateReFungibleData */2416export interface UpDataStructsCreateReFungibleData extends Struct {2417 readonly constData: Bytes;2418 readonly pieces: u128;2419}24202421/** @name UpDataStructsCreateRefungibleExData */2422export interface UpDataStructsCreateRefungibleExData extends Struct {2423 readonly constData: Bytes;2424 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;2425}24262427/** @name UpDataStructsNestingPermissions */2428export interface UpDataStructsNestingPermissions extends Struct {2429 readonly tokenOwner: bool;2430 readonly admin: bool;2431 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2432 readonly permissive: bool;2433}24342435/** @name UpDataStructsOwnerRestrictedSet */2436export interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}24372438/** @name UpDataStructsProperties */2439export interface UpDataStructsProperties extends Struct {2440 readonly map: UpDataStructsPropertiesMapBoundedVec;2441 readonly consumedSpace: u32;2442 readonly spaceLimit: u32;2443}24442445/** @name UpDataStructsPropertiesMapBoundedVec */2446export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}24472448/** @name UpDataStructsPropertiesMapPropertyPermission */2449export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}24502451/** @name UpDataStructsProperty */2452export interface UpDataStructsProperty extends Struct {2453 readonly key: Bytes;2454 readonly value: Bytes;2455}24562457/** @name UpDataStructsPropertyKeyPermission */2458export interface UpDataStructsPropertyKeyPermission extends Struct {2459 readonly key: Bytes;2460 readonly permission: UpDataStructsPropertyPermission;2461}24622463/** @name UpDataStructsPropertyPermission */2464export interface UpDataStructsPropertyPermission extends Struct {2465 readonly mutable: bool;2466 readonly collectionAdmin: bool;2467 readonly tokenOwner: bool;2468}24692470/** @name UpDataStructsRpcCollection */2471export interface UpDataStructsRpcCollection extends Struct {2472 readonly owner: AccountId32;2473 readonly mode: UpDataStructsCollectionMode;2474 readonly name: Vec<u16>;2475 readonly description: Vec<u16>;2476 readonly tokenPrefix: Bytes;2477 readonly sponsorship: UpDataStructsSponsorshipState;2478 readonly limits: UpDataStructsCollectionLimits;2479 readonly permissions: UpDataStructsCollectionPermissions;2480 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2481 readonly properties: Vec<UpDataStructsProperty>;2482 readonly readOnly: bool;2483}24842485/** @name UpDataStructsSponsoringRateLimit */2486export interface UpDataStructsSponsoringRateLimit extends Enum {2487 readonly isSponsoringDisabled: boolean;2488 readonly isBlocks: boolean;2489 readonly asBlocks: u32;2490 readonly type: 'SponsoringDisabled' | 'Blocks';2491}24922493/** @name UpDataStructsSponsorshipState */2494export interface UpDataStructsSponsorshipState extends Enum {2495 readonly isDisabled: boolean;2496 readonly isUnconfirmed: boolean;2497 readonly asUnconfirmed: AccountId32;2498 readonly isConfirmed: boolean;2499 readonly asConfirmed: AccountId32;2500 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2501}25022503/** @name UpDataStructsTokenChild */2504export interface UpDataStructsTokenChild extends Struct {2505 readonly token: u32;2506 readonly collection: u32;2507}25082509/** @name UpDataStructsTokenData */2510export interface UpDataStructsTokenData extends Struct {2511 readonly properties: Vec<UpDataStructsProperty>;2512 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2513}25142515/** @name XcmDoubleEncoded */2516export interface XcmDoubleEncoded extends Struct {2517 readonly encoded: Bytes;2518}25192520/** @name XcmV0Junction */2521export interface XcmV0Junction extends Enum {2522 readonly isParent: boolean;2523 readonly isParachain: boolean;2524 readonly asParachain: Compact<u32>;2525 readonly isAccountId32: boolean;2526 readonly asAccountId32: {2527 readonly network: XcmV0JunctionNetworkId;2528 readonly id: U8aFixed;2529 } & Struct;2530 readonly isAccountIndex64: boolean;2531 readonly asAccountIndex64: {2532 readonly network: XcmV0JunctionNetworkId;2533 readonly index: Compact<u64>;2534 } & Struct;2535 readonly isAccountKey20: boolean;2536 readonly asAccountKey20: {2537 readonly network: XcmV0JunctionNetworkId;2538 readonly key: U8aFixed;2539 } & Struct;2540 readonly isPalletInstance: boolean;2541 readonly asPalletInstance: u8;2542 readonly isGeneralIndex: boolean;2543 readonly asGeneralIndex: Compact<u128>;2544 readonly isGeneralKey: boolean;2545 readonly asGeneralKey: Bytes;2546 readonly isOnlyChild: boolean;2547 readonly isPlurality: boolean;2548 readonly asPlurality: {2549 readonly id: XcmV0JunctionBodyId;2550 readonly part: XcmV0JunctionBodyPart;2551 } & Struct;2552 readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';2553}25542555/** @name XcmV0JunctionBodyId */2556export interface XcmV0JunctionBodyId extends Enum {2557 readonly isUnit: boolean;2558 readonly isNamed: boolean;2559 readonly asNamed: Bytes;2560 readonly isIndex: boolean;2561 readonly asIndex: Compact<u32>;2562 readonly isExecutive: boolean;2563 readonly isTechnical: boolean;2564 readonly isLegislative: boolean;2565 readonly isJudicial: boolean;2566 readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';2567}25682569/** @name XcmV0JunctionBodyPart */2570export interface XcmV0JunctionBodyPart extends Enum {2571 readonly isVoice: boolean;2572 readonly isMembers: boolean;2573 readonly asMembers: {2574 readonly count: Compact<u32>;2575 } & Struct;2576 readonly isFraction: boolean;2577 readonly asFraction: {2578 readonly nom: Compact<u32>;2579 readonly denom: Compact<u32>;2580 } & Struct;2581 readonly isAtLeastProportion: boolean;2582 readonly asAtLeastProportion: {2583 readonly nom: Compact<u32>;2584 readonly denom: Compact<u32>;2585 } & Struct;2586 readonly isMoreThanProportion: boolean;2587 readonly asMoreThanProportion: {2588 readonly nom: Compact<u32>;2589 readonly denom: Compact<u32>;2590 } & Struct;2591 readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';2592}25932594/** @name XcmV0JunctionNetworkId */2595export interface XcmV0JunctionNetworkId extends Enum {2596 readonly isAny: boolean;2597 readonly isNamed: boolean;2598 readonly asNamed: Bytes;2599 readonly isPolkadot: boolean;2600 readonly isKusama: boolean;2601 readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';2602}26032604/** @name XcmV0MultiAsset */2605export interface XcmV0MultiAsset extends Enum {2606 readonly isNone: boolean;2607 readonly isAll: boolean;2608 readonly isAllFungible: boolean;2609 readonly isAllNonFungible: boolean;2610 readonly isAllAbstractFungible: boolean;2611 readonly asAllAbstractFungible: {2612 readonly id: Bytes;2613 } & Struct;2614 readonly isAllAbstractNonFungible: boolean;2615 readonly asAllAbstractNonFungible: {2616 readonly class: Bytes;2617 } & Struct;2618 readonly isAllConcreteFungible: boolean;2619 readonly asAllConcreteFungible: {2620 readonly id: XcmV0MultiLocation;2621 } & Struct;2622 readonly isAllConcreteNonFungible: boolean;2623 readonly asAllConcreteNonFungible: {2624 readonly class: XcmV0MultiLocation;2625 } & Struct;2626 readonly isAbstractFungible: boolean;2627 readonly asAbstractFungible: {2628 readonly id: Bytes;2629 readonly amount: Compact<u128>;2630 } & Struct;2631 readonly isAbstractNonFungible: boolean;2632 readonly asAbstractNonFungible: {2633 readonly class: Bytes;2634 readonly instance: XcmV1MultiassetAssetInstance;2635 } & Struct;2636 readonly isConcreteFungible: boolean;2637 readonly asConcreteFungible: {2638 readonly id: XcmV0MultiLocation;2639 readonly amount: Compact<u128>;2640 } & Struct;2641 readonly isConcreteNonFungible: boolean;2642 readonly asConcreteNonFungible: {2643 readonly class: XcmV0MultiLocation;2644 readonly instance: XcmV1MultiassetAssetInstance;2645 } & Struct;2646 readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';2647}26482649/** @name XcmV0MultiLocation */2650export interface XcmV0MultiLocation extends Enum {2651 readonly isNull: boolean;2652 readonly isX1: boolean;2653 readonly asX1: XcmV0Junction;2654 readonly isX2: boolean;2655 readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;2656 readonly isX3: boolean;2657 readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2658 readonly isX4: boolean;2659 readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2660 readonly isX5: boolean;2661 readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2662 readonly isX6: boolean;2663 readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2664 readonly isX7: boolean;2665 readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2666 readonly isX8: boolean;2667 readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2668 readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';2669}26702671/** @name XcmV0Order */2672export interface XcmV0Order extends Enum {2673 readonly isNull: boolean;2674 readonly isDepositAsset: boolean;2675 readonly asDepositAsset: {2676 readonly assets: Vec<XcmV0MultiAsset>;2677 readonly dest: XcmV0MultiLocation;2678 } & Struct;2679 readonly isDepositReserveAsset: boolean;2680 readonly asDepositReserveAsset: {2681 readonly assets: Vec<XcmV0MultiAsset>;2682 readonly dest: XcmV0MultiLocation;2683 readonly effects: Vec<XcmV0Order>;2684 } & Struct;2685 readonly isExchangeAsset: boolean;2686 readonly asExchangeAsset: {2687 readonly give: Vec<XcmV0MultiAsset>;2688 readonly receive: Vec<XcmV0MultiAsset>;2689 } & Struct;2690 readonly isInitiateReserveWithdraw: boolean;2691 readonly asInitiateReserveWithdraw: {2692 readonly assets: Vec<XcmV0MultiAsset>;2693 readonly reserve: XcmV0MultiLocation;2694 readonly effects: Vec<XcmV0Order>;2695 } & Struct;2696 readonly isInitiateTeleport: boolean;2697 readonly asInitiateTeleport: {2698 readonly assets: Vec<XcmV0MultiAsset>;2699 readonly dest: XcmV0MultiLocation;2700 readonly effects: Vec<XcmV0Order>;2701 } & Struct;2702 readonly isQueryHolding: boolean;2703 readonly asQueryHolding: {2704 readonly queryId: Compact<u64>;2705 readonly dest: XcmV0MultiLocation;2706 readonly assets: Vec<XcmV0MultiAsset>;2707 } & Struct;2708 readonly isBuyExecution: boolean;2709 readonly asBuyExecution: {2710 readonly fees: XcmV0MultiAsset;2711 readonly weight: u64;2712 readonly debt: u64;2713 readonly haltOnError: bool;2714 readonly xcm: Vec<XcmV0Xcm>;2715 } & Struct;2716 readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';2717}27182719/** @name XcmV0OriginKind */2720export interface XcmV0OriginKind extends Enum {2721 readonly isNative: boolean;2722 readonly isSovereignAccount: boolean;2723 readonly isSuperuser: boolean;2724 readonly isXcm: boolean;2725 readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';2726}27272728/** @name XcmV0Response */2729export interface XcmV0Response extends Enum {2730 readonly isAssets: boolean;2731 readonly asAssets: Vec<XcmV0MultiAsset>;2732 readonly type: 'Assets';2733}27342735/** @name XcmV0Xcm */2736export interface XcmV0Xcm extends Enum {2737 readonly isWithdrawAsset: boolean;2738 readonly asWithdrawAsset: {2739 readonly assets: Vec<XcmV0MultiAsset>;2740 readonly effects: Vec<XcmV0Order>;2741 } & Struct;2742 readonly isReserveAssetDeposit: boolean;2743 readonly asReserveAssetDeposit: {2744 readonly assets: Vec<XcmV0MultiAsset>;2745 readonly effects: Vec<XcmV0Order>;2746 } & Struct;2747 readonly isTeleportAsset: boolean;2748 readonly asTeleportAsset: {2749 readonly assets: Vec<XcmV0MultiAsset>;2750 readonly effects: Vec<XcmV0Order>;2751 } & Struct;2752 readonly isQueryResponse: boolean;2753 readonly asQueryResponse: {2754 readonly queryId: Compact<u64>;2755 readonly response: XcmV0Response;2756 } & Struct;2757 readonly isTransferAsset: boolean;2758 readonly asTransferAsset: {2759 readonly assets: Vec<XcmV0MultiAsset>;2760 readonly dest: XcmV0MultiLocation;2761 } & Struct;2762 readonly isTransferReserveAsset: boolean;2763 readonly asTransferReserveAsset: {2764 readonly assets: Vec<XcmV0MultiAsset>;2765 readonly dest: XcmV0MultiLocation;2766 readonly effects: Vec<XcmV0Order>;2767 } & Struct;2768 readonly isTransact: boolean;2769 readonly asTransact: {2770 readonly originType: XcmV0OriginKind;2771 readonly requireWeightAtMost: u64;2772 readonly call: XcmDoubleEncoded;2773 } & Struct;2774 readonly isHrmpNewChannelOpenRequest: boolean;2775 readonly asHrmpNewChannelOpenRequest: {2776 readonly sender: Compact<u32>;2777 readonly maxMessageSize: Compact<u32>;2778 readonly maxCapacity: Compact<u32>;2779 } & Struct;2780 readonly isHrmpChannelAccepted: boolean;2781 readonly asHrmpChannelAccepted: {2782 readonly recipient: Compact<u32>;2783 } & Struct;2784 readonly isHrmpChannelClosing: boolean;2785 readonly asHrmpChannelClosing: {2786 readonly initiator: Compact<u32>;2787 readonly sender: Compact<u32>;2788 readonly recipient: Compact<u32>;2789 } & Struct;2790 readonly isRelayedFrom: boolean;2791 readonly asRelayedFrom: {2792 readonly who: XcmV0MultiLocation;2793 readonly message: XcmV0Xcm;2794 } & Struct;2795 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';2796}27972798/** @name XcmV1Junction */2799export interface XcmV1Junction extends Enum {2800 readonly isParachain: boolean;2801 readonly asParachain: Compact<u32>;2802 readonly isAccountId32: boolean;2803 readonly asAccountId32: {2804 readonly network: XcmV0JunctionNetworkId;2805 readonly id: U8aFixed;2806 } & Struct;2807 readonly isAccountIndex64: boolean;2808 readonly asAccountIndex64: {2809 readonly network: XcmV0JunctionNetworkId;2810 readonly index: Compact<u64>;2811 } & Struct;2812 readonly isAccountKey20: boolean;2813 readonly asAccountKey20: {2814 readonly network: XcmV0JunctionNetworkId;2815 readonly key: U8aFixed;2816 } & Struct;2817 readonly isPalletInstance: boolean;2818 readonly asPalletInstance: u8;2819 readonly isGeneralIndex: boolean;2820 readonly asGeneralIndex: Compact<u128>;2821 readonly isGeneralKey: boolean;2822 readonly asGeneralKey: Bytes;2823 readonly isOnlyChild: boolean;2824 readonly isPlurality: boolean;2825 readonly asPlurality: {2826 readonly id: XcmV0JunctionBodyId;2827 readonly part: XcmV0JunctionBodyPart;2828 } & Struct;2829 readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';2830}28312832/** @name XcmV1MultiAsset */2833export interface XcmV1MultiAsset extends Struct {2834 readonly id: XcmV1MultiassetAssetId;2835 readonly fun: XcmV1MultiassetFungibility;2836}28372838/** @name XcmV1MultiassetAssetId */2839export interface XcmV1MultiassetAssetId extends Enum {2840 readonly isConcrete: boolean;2841 readonly asConcrete: XcmV1MultiLocation;2842 readonly isAbstract: boolean;2843 readonly asAbstract: Bytes;2844 readonly type: 'Concrete' | 'Abstract';2845}28462847/** @name XcmV1MultiassetAssetInstance */2848export interface XcmV1MultiassetAssetInstance extends Enum {2849 readonly isUndefined: boolean;2850 readonly isIndex: boolean;2851 readonly asIndex: Compact<u128>;2852 readonly isArray4: boolean;2853 readonly asArray4: U8aFixed;2854 readonly isArray8: boolean;2855 readonly asArray8: U8aFixed;2856 readonly isArray16: boolean;2857 readonly asArray16: U8aFixed;2858 readonly isArray32: boolean;2859 readonly asArray32: U8aFixed;2860 readonly isBlob: boolean;2861 readonly asBlob: Bytes;2862 readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';2863}28642865/** @name XcmV1MultiassetFungibility */2866export interface XcmV1MultiassetFungibility extends Enum {2867 readonly isFungible: boolean;2868 readonly asFungible: Compact<u128>;2869 readonly isNonFungible: boolean;2870 readonly asNonFungible: XcmV1MultiassetAssetInstance;2871 readonly type: 'Fungible' | 'NonFungible';2872}28732874/** @name XcmV1MultiassetMultiAssetFilter */2875export interface XcmV1MultiassetMultiAssetFilter extends Enum {2876 readonly isDefinite: boolean;2877 readonly asDefinite: XcmV1MultiassetMultiAssets;2878 readonly isWild: boolean;2879 readonly asWild: XcmV1MultiassetWildMultiAsset;2880 readonly type: 'Definite' | 'Wild';2881}28822883/** @name XcmV1MultiassetMultiAssets */2884export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}28852886/** @name XcmV1MultiassetWildFungibility */2887export interface XcmV1MultiassetWildFungibility extends Enum {2888 readonly isFungible: boolean;2889 readonly isNonFungible: boolean;2890 readonly type: 'Fungible' | 'NonFungible';2891}28922893/** @name XcmV1MultiassetWildMultiAsset */2894export interface XcmV1MultiassetWildMultiAsset extends Enum {2895 readonly isAll: boolean;2896 readonly isAllOf: boolean;2897 readonly asAllOf: {2898 readonly id: XcmV1MultiassetAssetId;2899 readonly fun: XcmV1MultiassetWildFungibility;2900 } & Struct;2901 readonly type: 'All' | 'AllOf';2902}29032904/** @name XcmV1MultiLocation */2905export interface XcmV1MultiLocation extends Struct {2906 readonly parents: u8;2907 readonly interior: XcmV1MultilocationJunctions;2908}29092910/** @name XcmV1MultilocationJunctions */2911export interface XcmV1MultilocationJunctions extends Enum {2912 readonly isHere: boolean;2913 readonly isX1: boolean;2914 readonly asX1: XcmV1Junction;2915 readonly isX2: boolean;2916 readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;2917 readonly isX3: boolean;2918 readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2919 readonly isX4: boolean;2920 readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2921 readonly isX5: boolean;2922 readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2923 readonly isX6: boolean;2924 readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2925 readonly isX7: boolean;2926 readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2927 readonly isX8: boolean;2928 readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2929 readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';2930}29312932/** @name XcmV1Order */2933export interface XcmV1Order extends Enum {2934 readonly isNoop: boolean;2935 readonly isDepositAsset: boolean;2936 readonly asDepositAsset: {2937 readonly assets: XcmV1MultiassetMultiAssetFilter;2938 readonly maxAssets: u32;2939 readonly beneficiary: XcmV1MultiLocation;2940 } & Struct;2941 readonly isDepositReserveAsset: boolean;2942 readonly asDepositReserveAsset: {2943 readonly assets: XcmV1MultiassetMultiAssetFilter;2944 readonly maxAssets: u32;2945 readonly dest: XcmV1MultiLocation;2946 readonly effects: Vec<XcmV1Order>;2947 } & Struct;2948 readonly isExchangeAsset: boolean;2949 readonly asExchangeAsset: {2950 readonly give: XcmV1MultiassetMultiAssetFilter;2951 readonly receive: XcmV1MultiassetMultiAssets;2952 } & Struct;2953 readonly isInitiateReserveWithdraw: boolean;2954 readonly asInitiateReserveWithdraw: {2955 readonly assets: XcmV1MultiassetMultiAssetFilter;2956 readonly reserve: XcmV1MultiLocation;2957 readonly effects: Vec<XcmV1Order>;2958 } & Struct;2959 readonly isInitiateTeleport: boolean;2960 readonly asInitiateTeleport: {2961 readonly assets: XcmV1MultiassetMultiAssetFilter;2962 readonly dest: XcmV1MultiLocation;2963 readonly effects: Vec<XcmV1Order>;2964 } & Struct;2965 readonly isQueryHolding: boolean;2966 readonly asQueryHolding: {2967 readonly queryId: Compact<u64>;2968 readonly dest: XcmV1MultiLocation;2969 readonly assets: XcmV1MultiassetMultiAssetFilter;2970 } & Struct;2971 readonly isBuyExecution: boolean;2972 readonly asBuyExecution: {2973 readonly fees: XcmV1MultiAsset;2974 readonly weight: u64;2975 readonly debt: u64;2976 readonly haltOnError: bool;2977 readonly instructions: Vec<XcmV1Xcm>;2978 } & Struct;2979 readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';2980}29812982/** @name XcmV1Response */2983export interface XcmV1Response extends Enum {2984 readonly isAssets: boolean;2985 readonly asAssets: XcmV1MultiassetMultiAssets;2986 readonly isVersion: boolean;2987 readonly asVersion: u32;2988 readonly type: 'Assets' | 'Version';2989}29902991/** @name XcmV1Xcm */2992export interface XcmV1Xcm extends Enum {2993 readonly isWithdrawAsset: boolean;2994 readonly asWithdrawAsset: {2995 readonly assets: XcmV1MultiassetMultiAssets;2996 readonly effects: Vec<XcmV1Order>;2997 } & Struct;2998 readonly isReserveAssetDeposited: boolean;2999 readonly asReserveAssetDeposited: {3000 readonly assets: XcmV1MultiassetMultiAssets;3001 readonly effects: Vec<XcmV1Order>;3002 } & Struct;3003 readonly isReceiveTeleportedAsset: boolean;3004 readonly asReceiveTeleportedAsset: {3005 readonly assets: XcmV1MultiassetMultiAssets;3006 readonly effects: Vec<XcmV1Order>;3007 } & Struct;3008 readonly isQueryResponse: boolean;3009 readonly asQueryResponse: {3010 readonly queryId: Compact<u64>;3011 readonly response: XcmV1Response;3012 } & Struct;3013 readonly isTransferAsset: boolean;3014 readonly asTransferAsset: {3015 readonly assets: XcmV1MultiassetMultiAssets;3016 readonly beneficiary: XcmV1MultiLocation;3017 } & Struct;3018 readonly isTransferReserveAsset: boolean;3019 readonly asTransferReserveAsset: {3020 readonly assets: XcmV1MultiassetMultiAssets;3021 readonly dest: XcmV1MultiLocation;3022 readonly effects: Vec<XcmV1Order>;3023 } & Struct;3024 readonly isTransact: boolean;3025 readonly asTransact: {3026 readonly originType: XcmV0OriginKind;3027 readonly requireWeightAtMost: u64;3028 readonly call: XcmDoubleEncoded;3029 } & Struct;3030 readonly isHrmpNewChannelOpenRequest: boolean;3031 readonly asHrmpNewChannelOpenRequest: {3032 readonly sender: Compact<u32>;3033 readonly maxMessageSize: Compact<u32>;3034 readonly maxCapacity: Compact<u32>;3035 } & Struct;3036 readonly isHrmpChannelAccepted: boolean;3037 readonly asHrmpChannelAccepted: {3038 readonly recipient: Compact<u32>;3039 } & Struct;3040 readonly isHrmpChannelClosing: boolean;3041 readonly asHrmpChannelClosing: {3042 readonly initiator: Compact<u32>;3043 readonly sender: Compact<u32>;3044 readonly recipient: Compact<u32>;3045 } & Struct;3046 readonly isRelayedFrom: boolean;3047 readonly asRelayedFrom: {3048 readonly who: XcmV1MultilocationJunctions;3049 readonly message: XcmV1Xcm;3050 } & Struct;3051 readonly isSubscribeVersion: boolean;3052 readonly asSubscribeVersion: {3053 readonly queryId: Compact<u64>;3054 readonly maxResponseWeight: Compact<u64>;3055 } & Struct;3056 readonly isUnsubscribeVersion: boolean;3057 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';3058}30593060/** @name XcmV2Instruction */3061export interface XcmV2Instruction extends Enum {3062 readonly isWithdrawAsset: boolean;3063 readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;3064 readonly isReserveAssetDeposited: boolean;3065 readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;3066 readonly isReceiveTeleportedAsset: boolean;3067 readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;3068 readonly isQueryResponse: boolean;3069 readonly asQueryResponse: {3070 readonly queryId: Compact<u64>;3071 readonly response: XcmV2Response;3072 readonly maxWeight: Compact<u64>;3073 } & Struct;3074 readonly isTransferAsset: boolean;3075 readonly asTransferAsset: {3076 readonly assets: XcmV1MultiassetMultiAssets;3077 readonly beneficiary: XcmV1MultiLocation;3078 } & Struct;3079 readonly isTransferReserveAsset: boolean;3080 readonly asTransferReserveAsset: {3081 readonly assets: XcmV1MultiassetMultiAssets;3082 readonly dest: XcmV1MultiLocation;3083 readonly xcm: XcmV2Xcm;3084 } & Struct;3085 readonly isTransact: boolean;3086 readonly asTransact: {3087 readonly originType: XcmV0OriginKind;3088 readonly requireWeightAtMost: Compact<u64>;3089 readonly call: XcmDoubleEncoded;3090 } & Struct;3091 readonly isHrmpNewChannelOpenRequest: boolean;3092 readonly asHrmpNewChannelOpenRequest: {3093 readonly sender: Compact<u32>;3094 readonly maxMessageSize: Compact<u32>;3095 readonly maxCapacity: Compact<u32>;3096 } & Struct;3097 readonly isHrmpChannelAccepted: boolean;3098 readonly asHrmpChannelAccepted: {3099 readonly recipient: Compact<u32>;3100 } & Struct;3101 readonly isHrmpChannelClosing: boolean;3102 readonly asHrmpChannelClosing: {3103 readonly initiator: Compact<u32>;3104 readonly sender: Compact<u32>;3105 readonly recipient: Compact<u32>;3106 } & Struct;3107 readonly isClearOrigin: boolean;3108 readonly isDescendOrigin: boolean;3109 readonly asDescendOrigin: XcmV1MultilocationJunctions;3110 readonly isReportError: boolean;3111 readonly asReportError: {3112 readonly queryId: Compact<u64>;3113 readonly dest: XcmV1MultiLocation;3114 readonly maxResponseWeight: Compact<u64>;3115 } & Struct;3116 readonly isDepositAsset: boolean;3117 readonly asDepositAsset: {3118 readonly assets: XcmV1MultiassetMultiAssetFilter;3119 readonly maxAssets: Compact<u32>;3120 readonly beneficiary: XcmV1MultiLocation;3121 } & Struct;3122 readonly isDepositReserveAsset: boolean;3123 readonly asDepositReserveAsset: {3124 readonly assets: XcmV1MultiassetMultiAssetFilter;3125 readonly maxAssets: Compact<u32>;3126 readonly dest: XcmV1MultiLocation;3127 readonly xcm: XcmV2Xcm;3128 } & Struct;3129 readonly isExchangeAsset: boolean;3130 readonly asExchangeAsset: {3131 readonly give: XcmV1MultiassetMultiAssetFilter;3132 readonly receive: XcmV1MultiassetMultiAssets;3133 } & Struct;3134 readonly isInitiateReserveWithdraw: boolean;3135 readonly asInitiateReserveWithdraw: {3136 readonly assets: XcmV1MultiassetMultiAssetFilter;3137 readonly reserve: XcmV1MultiLocation;3138 readonly xcm: XcmV2Xcm;3139 } & Struct;3140 readonly isInitiateTeleport: boolean;3141 readonly asInitiateTeleport: {3142 readonly assets: XcmV1MultiassetMultiAssetFilter;3143 readonly dest: XcmV1MultiLocation;3144 readonly xcm: XcmV2Xcm;3145 } & Struct;3146 readonly isQueryHolding: boolean;3147 readonly asQueryHolding: {3148 readonly queryId: Compact<u64>;3149 readonly dest: XcmV1MultiLocation;3150 readonly assets: XcmV1MultiassetMultiAssetFilter;3151 readonly maxResponseWeight: Compact<u64>;3152 } & Struct;3153 readonly isBuyExecution: boolean;3154 readonly asBuyExecution: {3155 readonly fees: XcmV1MultiAsset;3156 readonly weightLimit: XcmV2WeightLimit;3157 } & Struct;3158 readonly isRefundSurplus: boolean;3159 readonly isSetErrorHandler: boolean;3160 readonly asSetErrorHandler: XcmV2Xcm;3161 readonly isSetAppendix: boolean;3162 readonly asSetAppendix: XcmV2Xcm;3163 readonly isClearError: boolean;3164 readonly isClaimAsset: boolean;3165 readonly asClaimAsset: {3166 readonly assets: XcmV1MultiassetMultiAssets;3167 readonly ticket: XcmV1MultiLocation;3168 } & Struct;3169 readonly isTrap: boolean;3170 readonly asTrap: Compact<u64>;3171 readonly isSubscribeVersion: boolean;3172 readonly asSubscribeVersion: {3173 readonly queryId: Compact<u64>;3174 readonly maxResponseWeight: Compact<u64>;3175 } & Struct;3176 readonly isUnsubscribeVersion: boolean;3177 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion';3178}31793180/** @name XcmV2Response */3181export interface XcmV2Response extends Enum {3182 readonly isNull: boolean;3183 readonly isAssets: boolean;3184 readonly asAssets: XcmV1MultiassetMultiAssets;3185 readonly isExecutionResult: boolean;3186 readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;3187 readonly isVersion: boolean;3188 readonly asVersion: u32;3189 readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';3190}31913192/** @name XcmV2TraitsError */3193export interface XcmV2TraitsError extends Enum {3194 readonly isOverflow: boolean;3195 readonly isUnimplemented: boolean;3196 readonly isUntrustedReserveLocation: boolean;3197 readonly isUntrustedTeleportLocation: boolean;3198 readonly isMultiLocationFull: boolean;3199 readonly isMultiLocationNotInvertible: boolean;3200 readonly isBadOrigin: boolean;3201 readonly isInvalidLocation: boolean;3202 readonly isAssetNotFound: boolean;3203 readonly isFailedToTransactAsset: boolean;3204 readonly isNotWithdrawable: boolean;3205 readonly isLocationCannotHold: boolean;3206 readonly isExceedsMaxMessageSize: boolean;3207 readonly isDestinationUnsupported: boolean;3208 readonly isTransport: boolean;3209 readonly isUnroutable: boolean;3210 readonly isUnknownClaim: boolean;3211 readonly isFailedToDecode: boolean;3212 readonly isMaxWeightInvalid: boolean;3213 readonly isNotHoldingFees: boolean;3214 readonly isTooExpensive: boolean;3215 readonly isTrap: boolean;3216 readonly asTrap: u64;3217 readonly isUnhandledXcmVersion: boolean;3218 readonly isWeightLimitReached: boolean;3219 readonly asWeightLimitReached: u64;3220 readonly isBarrier: boolean;3221 readonly isWeightNotComputable: boolean;3222 readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'MultiLocationFull' | 'MultiLocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'WeightNotComputable';3223}32243225/** @name XcmV2TraitsOutcome */3226export interface XcmV2TraitsOutcome extends Enum {3227 readonly isComplete: boolean;3228 readonly asComplete: u64;3229 readonly isIncomplete: boolean;3230 readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;3231 readonly isError: boolean;3232 readonly asError: XcmV2TraitsError;3233 readonly type: 'Complete' | 'Incomplete' | 'Error';3234}32353236/** @name XcmV2WeightLimit */3237export interface XcmV2WeightLimit extends Enum {3238 readonly isUnlimited: boolean;3239 readonly isLimited: boolean;3240 readonly asLimited: Compact<u64>;3241 readonly type: 'Unlimited' | 'Limited';3242}32433244/** @name XcmV2Xcm */3245export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}32463247/** @name XcmVersionedMultiAssets */3248export interface XcmVersionedMultiAssets extends Enum {3249 readonly isV0: boolean;3250 readonly asV0: Vec<XcmV0MultiAsset>;3251 readonly isV1: boolean;3252 readonly asV1: XcmV1MultiassetMultiAssets;3253 readonly type: 'V0' | 'V1';3254}32553256/** @name XcmVersionedMultiLocation */3257export interface XcmVersionedMultiLocation extends Enum {3258 readonly isV0: boolean;3259 readonly asV0: XcmV0MultiLocation;3260 readonly isV1: boolean;3261 readonly asV1: XcmV1MultiLocation;3262 readonly type: 'V0' | 'V1';3263}32643265/** @name XcmVersionedXcm */3266export interface XcmVersionedXcm extends Enum {3267 readonly isV0: boolean;3268 readonly asV0: XcmV0Xcm;3269 readonly isV1: boolean;3270 readonly asV1: XcmV1Xcm;3271 readonly isV2: boolean;3272 readonly asV2: XcmV2Xcm;3273 readonly type: 'V0' | 'V1' | 'V2';3274}32753276export type PHANTOM_DEFAULT = 'default';tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1313,7 +1313,7 @@
tokenId: 'u32',
propertyKeys: 'Vec<Bytes>',
},
- set_property_permissions: {
+ set_token_property_permissions: {
collectionId: 'u32',
propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
},
@@ -1432,7 +1432,7 @@
**/
UpDataStructsNestingPermissions: {
tokenOwner: 'bool',
- admin: 'bool',
+ collectionAdmin: 'bool',
restricted: 'Option<UpDataStructsOwnerRestrictedSet>',
permissive: 'bool'
},
@@ -1526,9 +1526,9 @@
users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'
},
/**
- * Lookup206: pallet_unq_scheduler::pallet::Call<T>
+ * Lookup206: pallet_unique_scheduler::pallet::Call<T>
**/
- PalletUnqSchedulerCall: {
+ PalletUniqueSchedulerCall: {
_enum: {
schedule_named: {
id: '[u8;16]',
@@ -1593,10 +1593,12 @@
royaltyAmount: 'Option<Permill>',
metadata: 'Bytes',
transferable: 'bool',
+ resources: 'Option<Vec<RmrkTraitsResourceResourceTypes>>',
},
burn_nft: {
collectionId: 'u32',
nftId: 'u32',
+ maxBurns: 'u32',
},
send: {
rmrkCollectionId: 'u32',
@@ -1641,7 +1643,6 @@
add_composable_resource: {
rmrkCollectionId: 'u32',
nftId: 'u32',
- resourceId: 'Bytes',
resource: 'RmrkTraitsResourceComposableResource',
},
add_slot_resource: {
@@ -1657,12 +1658,13 @@
}
},
/**
- * Lookup215: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
+ * Lookup217: rmrk_traits::resource::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
- RmrkTraitsNftAccountIdOrCollectionNftTuple: {
+ RmrkTraitsResourceResourceTypes: {
_enum: {
- AccountId: 'AccountId32',
- CollectionAndNftTuple: '(u32,u32)'
+ Basic: 'RmrkTraitsResourceBasicResource',
+ Composable: 'RmrkTraitsResourceComposableResource',
+ Slot: 'RmrkTraitsResourceSlotResource'
}
},
/**
@@ -1675,7 +1677,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup222: rmrk_traits::resource::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup221: rmrk_traits::resource::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceComposableResource: {
parts: 'Vec<u32>',
@@ -1686,7 +1688,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup224: rmrk_traits::resource::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup222: rmrk_traits::resource::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceSlotResource: {
base: 'u32',
@@ -1697,7 +1699,16 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup225: pallet_rmrk_equip::pallet::Call<T>
+ * Lookup224: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
+ **/
+ RmrkTraitsNftAccountIdOrCollectionNftTuple: {
+ _enum: {
+ AccountId: 'AccountId32',
+ CollectionAndNftTuple: '(u32,u32)'
+ }
+ },
+ /**
+ * Lookup228: pallet_rmrk_equip::pallet::Call<T>
**/
PalletRmrkEquipCall: {
_enum: {
@@ -1713,7 +1724,7 @@
}
},
/**
- * Lookup227: rmrk_traits::part::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup230: rmrk_traits::part::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartPartType: {
_enum: {
@@ -1722,7 +1733,7 @@
}
},
/**
- * Lookup229: rmrk_traits::part::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup232: rmrk_traits::part::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartFixedPart: {
id: 'u32',
@@ -1730,7 +1741,7 @@
src: 'Bytes'
},
/**
- * Lookup230: rmrk_traits::part::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup233: rmrk_traits::part::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartSlotPart: {
id: 'u32',
@@ -1739,7 +1750,7 @@
z: 'u32'
},
/**
- * Lookup231: rmrk_traits::part::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup234: rmrk_traits::part::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartEquippableList: {
_enum: {
@@ -1749,7 +1760,7 @@
}
},
/**
- * Lookup233: rmrk_traits::theme::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>
+ * Lookup236: rmrk_traits::theme::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>
**/
RmrkTraitsTheme: {
name: 'Bytes',
@@ -1757,14 +1768,14 @@
inherit: 'bool'
},
/**
- * Lookup235: rmrk_traits::theme::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup238: rmrk_traits::theme::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsThemeThemeProperty: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup236: pallet_evm::pallet::Call<T>
+ * Lookup239: pallet_evm::pallet::Call<T>
**/
PalletEvmCall: {
_enum: {
@@ -1807,7 +1818,7 @@
}
},
/**
- * Lookup242: pallet_ethereum::pallet::Call<T>
+ * Lookup245: pallet_ethereum::pallet::Call<T>
**/
PalletEthereumCall: {
_enum: {
@@ -1817,7 +1828,7 @@
}
},
/**
- * Lookup243: ethereum::transaction::TransactionV2
+ * Lookup246: ethereum::transaction::TransactionV2
**/
EthereumTransactionTransactionV2: {
_enum: {
@@ -1827,7 +1838,7 @@
}
},
/**
- * Lookup244: ethereum::transaction::LegacyTransaction
+ * Lookup247: ethereum::transaction::LegacyTransaction
**/
EthereumTransactionLegacyTransaction: {
nonce: 'U256',
@@ -1839,7 +1850,7 @@
signature: 'EthereumTransactionTransactionSignature'
},
/**
- * Lookup245: ethereum::transaction::TransactionAction
+ * Lookup248: ethereum::transaction::TransactionAction
**/
EthereumTransactionTransactionAction: {
_enum: {
@@ -1848,7 +1859,7 @@
}
},
/**
- * Lookup246: ethereum::transaction::TransactionSignature
+ * Lookup249: ethereum::transaction::TransactionSignature
**/
EthereumTransactionTransactionSignature: {
v: 'u64',
@@ -1856,7 +1867,7 @@
s: 'H256'
},
/**
- * Lookup248: ethereum::transaction::EIP2930Transaction
+ * Lookup251: ethereum::transaction::EIP2930Transaction
**/
EthereumTransactionEip2930Transaction: {
chainId: 'u64',
@@ -1872,14 +1883,14 @@
s: 'H256'
},
/**
- * Lookup250: ethereum::transaction::AccessListItem
+ * Lookup253: ethereum::transaction::AccessListItem
**/
EthereumTransactionAccessListItem: {
address: 'H160',
storageKeys: 'Vec<H256>'
},
/**
- * Lookup251: ethereum::transaction::EIP1559Transaction
+ * Lookup254: ethereum::transaction::EIP1559Transaction
**/
EthereumTransactionEip1559Transaction: {
chainId: 'u64',
@@ -1896,7 +1907,7 @@
s: 'H256'
},
/**
- * Lookup252: pallet_evm_migration::pallet::Call<T>
+ * Lookup255: pallet_evm_migration::pallet::Call<T>
**/
PalletEvmMigrationCall: {
_enum: {
@@ -1914,7 +1925,7 @@
}
},
/**
- * Lookup255: pallet_sudo::pallet::Event<T>
+ * Lookup258: pallet_sudo::pallet::Event<T>
**/
PalletSudoEvent: {
_enum: {
@@ -1930,7 +1941,7 @@
}
},
/**
- * Lookup257: sp_runtime::DispatchError
+ * Lookup260: sp_runtime::DispatchError
**/
SpRuntimeDispatchError: {
_enum: {
@@ -1947,38 +1958,38 @@
}
},
/**
- * Lookup258: sp_runtime::ModuleError
+ * Lookup261: sp_runtime::ModuleError
**/
SpRuntimeModuleError: {
index: 'u8',
error: '[u8;4]'
},
/**
- * Lookup259: sp_runtime::TokenError
+ * Lookup262: sp_runtime::TokenError
**/
SpRuntimeTokenError: {
_enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']
},
/**
- * Lookup260: sp_runtime::ArithmeticError
+ * Lookup263: sp_runtime::ArithmeticError
**/
SpRuntimeArithmeticError: {
_enum: ['Underflow', 'Overflow', 'DivisionByZero']
},
/**
- * Lookup261: sp_runtime::TransactionalError
+ * Lookup264: sp_runtime::TransactionalError
**/
SpRuntimeTransactionalError: {
_enum: ['LimitReached', 'NoLayer']
},
/**
- * Lookup262: pallet_sudo::pallet::Error<T>
+ * Lookup265: pallet_sudo::pallet::Error<T>
**/
PalletSudoError: {
_enum: ['RequireSudo']
},
/**
- * Lookup263: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>
+ * Lookup266: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>
**/
FrameSystemAccountInfo: {
nonce: 'u32',
@@ -1988,7 +1999,7 @@
data: 'PalletBalancesAccountData'
},
/**
- * Lookup264: frame_support::weights::PerDispatchClass<T>
+ * Lookup267: frame_support::weights::PerDispatchClass<T>
**/
FrameSupportWeightsPerDispatchClassU64: {
normal: 'u64',
@@ -1996,13 +2007,13 @@
mandatory: 'u64'
},
/**
- * Lookup265: sp_runtime::generic::digest::Digest
+ * Lookup268: sp_runtime::generic::digest::Digest
**/
SpRuntimeDigest: {
logs: 'Vec<SpRuntimeDigestDigestItem>'
},
/**
- * Lookup267: sp_runtime::generic::digest::DigestItem
+ * Lookup270: sp_runtime::generic::digest::DigestItem
**/
SpRuntimeDigestDigestItem: {
_enum: {
@@ -2018,7 +2029,7 @@
}
},
/**
- * Lookup269: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>
+ * Lookup272: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>
**/
FrameSystemEventRecord: {
phase: 'FrameSystemPhase',
@@ -2026,7 +2037,7 @@
topics: 'Vec<H256>'
},
/**
- * Lookup271: frame_system::pallet::Event<T>
+ * Lookup274: frame_system::pallet::Event<T>
**/
FrameSystemEvent: {
_enum: {
@@ -2054,7 +2065,7 @@
}
},
/**
- * Lookup272: frame_support::weights::DispatchInfo
+ * Lookup275: frame_support::weights::DispatchInfo
**/
FrameSupportWeightsDispatchInfo: {
weight: 'u64',
@@ -2062,19 +2073,19 @@
paysFee: 'FrameSupportWeightsPays'
},
/**
- * Lookup273: frame_support::weights::DispatchClass
+ * Lookup276: frame_support::weights::DispatchClass
**/
FrameSupportWeightsDispatchClass: {
_enum: ['Normal', 'Operational', 'Mandatory']
},
/**
- * Lookup274: frame_support::weights::Pays
+ * Lookup277: frame_support::weights::Pays
**/
FrameSupportWeightsPays: {
_enum: ['Yes', 'No']
},
/**
- * Lookup275: orml_vesting::module::Event<T>
+ * Lookup278: orml_vesting::module::Event<T>
**/
OrmlVestingModuleEvent: {
_enum: {
@@ -2093,7 +2104,7 @@
}
},
/**
- * Lookup276: cumulus_pallet_xcmp_queue::pallet::Event<T>
+ * Lookup279: cumulus_pallet_xcmp_queue::pallet::Event<T>
**/
CumulusPalletXcmpQueueEvent: {
_enum: {
@@ -2108,7 +2119,7 @@
}
},
/**
- * Lookup277: pallet_xcm::pallet::Event<T>
+ * Lookup280: pallet_xcm::pallet::Event<T>
**/
PalletXcmEvent: {
_enum: {
@@ -2131,7 +2142,7 @@
}
},
/**
- * Lookup278: xcm::v2::traits::Outcome
+ * Lookup281: xcm::v2::traits::Outcome
**/
XcmV2TraitsOutcome: {
_enum: {
@@ -2141,7 +2152,7 @@
}
},
/**
- * Lookup280: cumulus_pallet_xcm::pallet::Event<T>
+ * Lookup283: cumulus_pallet_xcm::pallet::Event<T>
**/
CumulusPalletXcmEvent: {
_enum: {
@@ -2151,7 +2162,7 @@
}
},
/**
- * Lookup281: cumulus_pallet_dmp_queue::pallet::Event<T>
+ * Lookup284: cumulus_pallet_dmp_queue::pallet::Event<T>
**/
CumulusPalletDmpQueueEvent: {
_enum: {
@@ -2164,7 +2175,7 @@
}
},
/**
- * Lookup282: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup285: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
PalletUniqueRawEvent: {
_enum: {
@@ -2181,9 +2192,9 @@
}
},
/**
- * Lookup283: pallet_unq_scheduler::pallet::Event<T>
+ * Lookup286: pallet_unique_scheduler::pallet::Event<T>
**/
- PalletUnqSchedulerEvent: {
+ PalletUniqueSchedulerEvent: {
_enum: {
Scheduled: {
when: 'u32',
@@ -2206,13 +2217,13 @@
}
},
/**
- * Lookup285: frame_support::traits::schedule::LookupError
+ * Lookup288: frame_support::traits::schedule::LookupError
**/
FrameSupportScheduleLookupError: {
_enum: ['Unknown', 'BadFormat']
},
/**
- * Lookup286: pallet_common::pallet::Event<T>
+ * Lookup289: pallet_common::pallet::Event<T>
**/
PalletCommonEvent: {
_enum: {
@@ -2230,7 +2241,7 @@
}
},
/**
- * Lookup287: pallet_structure::pallet::Event<T>
+ * Lookup290: pallet_structure::pallet::Event<T>
**/
PalletStructureEvent: {
_enum: {
@@ -2238,7 +2249,7 @@
}
},
/**
- * Lookup288: pallet_rmrk_core::pallet::Event<T>
+ * Lookup291: pallet_rmrk_core::pallet::Event<T>
**/
PalletRmrkCoreEvent: {
_enum: {
@@ -2315,7 +2326,7 @@
}
},
/**
- * Lookup289: pallet_rmrk_equip::pallet::Event<T>
+ * Lookup292: pallet_rmrk_equip::pallet::Event<T>
**/
PalletRmrkEquipEvent: {
_enum: {
@@ -2326,7 +2337,7 @@
}
},
/**
- * Lookup290: pallet_evm::pallet::Event<T>
+ * Lookup293: pallet_evm::pallet::Event<T>
**/
PalletEvmEvent: {
_enum: {
@@ -2340,7 +2351,7 @@
}
},
/**
- * Lookup291: ethereum::log::Log
+ * Lookup294: ethereum::log::Log
**/
EthereumLog: {
address: 'H160',
@@ -2348,7 +2359,7 @@
data: 'Bytes'
},
/**
- * Lookup292: pallet_ethereum::pallet::Event
+ * Lookup295: pallet_ethereum::pallet::Event
**/
PalletEthereumEvent: {
_enum: {
@@ -2356,7 +2367,7 @@
}
},
/**
- * Lookup293: evm_core::error::ExitReason
+ * Lookup296: evm_core::error::ExitReason
**/
EvmCoreErrorExitReason: {
_enum: {
@@ -2367,13 +2378,13 @@
}
},
/**
- * Lookup294: evm_core::error::ExitSucceed
+ * Lookup297: evm_core::error::ExitSucceed
**/
EvmCoreErrorExitSucceed: {
_enum: ['Stopped', 'Returned', 'Suicided']
},
/**
- * Lookup295: evm_core::error::ExitError
+ * Lookup298: evm_core::error::ExitError
**/
EvmCoreErrorExitError: {
_enum: {
@@ -2395,13 +2406,13 @@
}
},
/**
- * Lookup298: evm_core::error::ExitRevert
+ * Lookup301: evm_core::error::ExitRevert
**/
EvmCoreErrorExitRevert: {
_enum: ['Reverted']
},
/**
- * Lookup299: evm_core::error::ExitFatal
+ * Lookup302: evm_core::error::ExitFatal
**/
EvmCoreErrorExitFatal: {
_enum: {
@@ -2412,7 +2423,7 @@
}
},
/**
- * Lookup300: frame_system::Phase
+ * Lookup303: frame_system::Phase
**/
FrameSystemPhase: {
_enum: {
@@ -2422,14 +2433,14 @@
}
},
/**
- * Lookup302: frame_system::LastRuntimeUpgradeInfo
+ * Lookup305: frame_system::LastRuntimeUpgradeInfo
**/
FrameSystemLastRuntimeUpgradeInfo: {
specVersion: 'Compact<u32>',
specName: 'Text'
},
/**
- * Lookup303: frame_system::limits::BlockWeights
+ * Lookup306: frame_system::limits::BlockWeights
**/
FrameSystemLimitsBlockWeights: {
baseBlock: 'u64',
@@ -2437,7 +2448,7 @@
perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'
},
/**
- * Lookup304: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
+ * Lookup307: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
**/
FrameSupportWeightsPerDispatchClassWeightsPerClass: {
normal: 'FrameSystemLimitsWeightsPerClass',
@@ -2445,7 +2456,7 @@
mandatory: 'FrameSystemLimitsWeightsPerClass'
},
/**
- * Lookup305: frame_system::limits::WeightsPerClass
+ * Lookup308: frame_system::limits::WeightsPerClass
**/
FrameSystemLimitsWeightsPerClass: {
baseExtrinsic: 'u64',
@@ -2454,13 +2465,13 @@
reserved: 'Option<u64>'
},
/**
- * Lookup307: frame_system::limits::BlockLength
+ * Lookup310: frame_system::limits::BlockLength
**/
FrameSystemLimitsBlockLength: {
max: 'FrameSupportWeightsPerDispatchClassU32'
},
/**
- * Lookup308: frame_support::weights::PerDispatchClass<T>
+ * Lookup311: frame_support::weights::PerDispatchClass<T>
**/
FrameSupportWeightsPerDispatchClassU32: {
normal: 'u32',
@@ -2468,14 +2479,14 @@
mandatory: 'u32'
},
/**
- * Lookup309: frame_support::weights::RuntimeDbWeight
+ * Lookup312: frame_support::weights::RuntimeDbWeight
**/
FrameSupportWeightsRuntimeDbWeight: {
read: 'u64',
write: 'u64'
},
/**
- * Lookup310: sp_version::RuntimeVersion
+ * Lookup313: sp_version::RuntimeVersion
**/
SpVersionRuntimeVersion: {
specName: 'Text',
@@ -2488,19 +2499,19 @@
stateVersion: 'u8'
},
/**
- * Lookup314: frame_system::pallet::Error<T>
+ * Lookup317: frame_system::pallet::Error<T>
**/
FrameSystemError: {
_enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
},
/**
- * Lookup316: orml_vesting::module::Error<T>
+ * Lookup319: orml_vesting::module::Error<T>
**/
OrmlVestingModuleError: {
_enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
},
/**
- * Lookup318: cumulus_pallet_xcmp_queue::InboundChannelDetails
+ * Lookup321: cumulus_pallet_xcmp_queue::InboundChannelDetails
**/
CumulusPalletXcmpQueueInboundChannelDetails: {
sender: 'u32',
@@ -2508,19 +2519,19 @@
messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
},
/**
- * Lookup319: cumulus_pallet_xcmp_queue::InboundState
+ * Lookup322: cumulus_pallet_xcmp_queue::InboundState
**/
CumulusPalletXcmpQueueInboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup322: polkadot_parachain::primitives::XcmpMessageFormat
+ * Lookup325: polkadot_parachain::primitives::XcmpMessageFormat
**/
PolkadotParachainPrimitivesXcmpMessageFormat: {
_enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
},
/**
- * Lookup325: cumulus_pallet_xcmp_queue::OutboundChannelDetails
+ * Lookup328: cumulus_pallet_xcmp_queue::OutboundChannelDetails
**/
CumulusPalletXcmpQueueOutboundChannelDetails: {
recipient: 'u32',
@@ -2530,13 +2541,13 @@
lastIndex: 'u16'
},
/**
- * Lookup326: cumulus_pallet_xcmp_queue::OutboundState
+ * Lookup329: cumulus_pallet_xcmp_queue::OutboundState
**/
CumulusPalletXcmpQueueOutboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup328: cumulus_pallet_xcmp_queue::QueueConfigData
+ * Lookup331: cumulus_pallet_xcmp_queue::QueueConfigData
**/
CumulusPalletXcmpQueueQueueConfigData: {
suspendThreshold: 'u32',
@@ -2547,29 +2558,29 @@
xcmpMaxIndividualWeight: 'u64'
},
/**
- * Lookup330: cumulus_pallet_xcmp_queue::pallet::Error<T>
+ * Lookup333: cumulus_pallet_xcmp_queue::pallet::Error<T>
**/
CumulusPalletXcmpQueueError: {
_enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
},
/**
- * Lookup331: pallet_xcm::pallet::Error<T>
+ * Lookup334: pallet_xcm::pallet::Error<T>
**/
PalletXcmError: {
_enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
},
/**
- * Lookup332: cumulus_pallet_xcm::pallet::Error<T>
+ * Lookup335: cumulus_pallet_xcm::pallet::Error<T>
**/
CumulusPalletXcmError: 'Null',
/**
- * Lookup333: cumulus_pallet_dmp_queue::ConfigData
+ * Lookup336: cumulus_pallet_dmp_queue::ConfigData
**/
CumulusPalletDmpQueueConfigData: {
maxIndividual: 'u64'
},
/**
- * Lookup334: cumulus_pallet_dmp_queue::PageIndexData
+ * Lookup337: cumulus_pallet_dmp_queue::PageIndexData
**/
CumulusPalletDmpQueuePageIndexData: {
beginUsed: 'u32',
@@ -2577,21 +2588,21 @@
overweightCount: 'u64'
},
/**
- * Lookup337: cumulus_pallet_dmp_queue::pallet::Error<T>
+ * Lookup340: cumulus_pallet_dmp_queue::pallet::Error<T>
**/
CumulusPalletDmpQueueError: {
_enum: ['Unknown', 'OverLimit']
},
/**
- * Lookup341: pallet_unique::Error<T>
+ * Lookup344: pallet_unique::Error<T>
**/
PalletUniqueError: {
_enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']
},
/**
- * Lookup344: pallet_unq_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
+ * Lookup347: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
**/
- PalletUnqSchedulerScheduledV3: {
+ PalletUniqueSchedulerScheduledV3: {
maybeId: 'Option<[u8;16]>',
priority: 'u8',
call: 'FrameSupportScheduleMaybeHashed',
@@ -2599,7 +2610,7 @@
origin: 'OpalRuntimeOriginCaller'
},
/**
- * Lookup345: opal_runtime::OriginCaller
+ * Lookup348: opal_runtime::OriginCaller
**/
OpalRuntimeOriginCaller: {
_enum: {
@@ -2708,7 +2719,7 @@
}
},
/**
- * Lookup346: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
+ * Lookup349: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
**/
FrameSupportDispatchRawOrigin: {
_enum: {
@@ -2718,7 +2729,7 @@
}
},
/**
- * Lookup347: pallet_xcm::pallet::Origin
+ * Lookup350: pallet_xcm::pallet::Origin
**/
PalletXcmOrigin: {
_enum: {
@@ -2727,7 +2738,7 @@
}
},
/**
- * Lookup348: cumulus_pallet_xcm::pallet::Origin
+ * Lookup351: cumulus_pallet_xcm::pallet::Origin
**/
CumulusPalletXcmOrigin: {
_enum: {
@@ -2736,7 +2747,7 @@
}
},
/**
- * Lookup349: pallet_ethereum::RawOrigin
+ * Lookup352: pallet_ethereum::RawOrigin
**/
PalletEthereumRawOrigin: {
_enum: {
@@ -2744,17 +2755,17 @@
}
},
/**
- * Lookup350: sp_core::Void
+ * Lookup353: sp_core::Void
**/
SpCoreVoid: 'Null',
/**
- * Lookup351: pallet_unq_scheduler::pallet::Error<T>
+ * Lookup354: pallet_unique_scheduler::pallet::Error<T>
**/
- PalletUnqSchedulerError: {
+ PalletUniqueSchedulerError: {
_enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']
},
/**
- * Lookup352: up_data_structs::Collection<sp_core::crypto::AccountId32>
+ * Lookup355: up_data_structs::Collection<sp_core::crypto::AccountId32>
**/
UpDataStructsCollection: {
owner: 'AccountId32',
@@ -2768,7 +2779,7 @@
externalCollection: 'bool'
},
/**
- * Lookup353: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
+ * Lookup356: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
**/
UpDataStructsSponsorshipState: {
_enum: {
@@ -2778,7 +2789,7 @@
}
},
/**
- * Lookup354: up_data_structs::Properties
+ * Lookup357: up_data_structs::Properties
**/
UpDataStructsProperties: {
map: 'UpDataStructsPropertiesMapBoundedVec',
@@ -2786,15 +2797,15 @@
spaceLimit: 'u32'
},
/**
- * Lookup355: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup358: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
/**
- * Lookup360: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
+ * Lookup363: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
**/
UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
/**
- * Lookup367: up_data_structs::CollectionStats
+ * Lookup370: up_data_structs::CollectionStats
**/
UpDataStructsCollectionStats: {
created: 'u32',
@@ -2802,25 +2813,25 @@
alive: 'u32'
},
/**
- * Lookup368: up_data_structs::TokenChild
+ * Lookup371: up_data_structs::TokenChild
**/
UpDataStructsTokenChild: {
token: 'u32',
collection: 'u32'
},
/**
- * Lookup369: PhantomType::up_data_structs<T>
+ * Lookup372: PhantomType::up_data_structs<T>
**/
PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',
/**
- * Lookup371: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup374: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsTokenData: {
properties: 'Vec<UpDataStructsProperty>',
owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'
},
/**
- * Lookup373: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+ * Lookup376: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
**/
UpDataStructsRpcCollection: {
owner: 'AccountId32',
@@ -2836,7 +2847,7 @@
readOnly: 'bool'
},
/**
- * Lookup374: rmrk_traits::collection::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
+ * Lookup377: rmrk_traits::collection::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
**/
RmrkTraitsCollectionCollectionInfo: {
issuer: 'AccountId32',
@@ -2846,7 +2857,7 @@
nftsCount: 'u32'
},
/**
- * Lookup375: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup378: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsNftNftInfo: {
owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
@@ -2856,14 +2867,14 @@
pending: 'bool'
},
/**
- * Lookup377: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
+ * Lookup380: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
**/
RmrkTraitsNftRoyaltyInfo: {
recipient: 'AccountId32',
amount: 'Permill'
},
/**
- * Lookup378: rmrk_traits::resource::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup381: rmrk_traits::resource::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceResourceInfo: {
id: 'u32',
@@ -2872,24 +2883,14 @@
pendingRemoval: 'bool'
},
/**
- * Lookup379: rmrk_traits::resource::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
- **/
- RmrkTraitsResourceResourceTypes: {
- _enum: {
- Basic: 'RmrkTraitsResourceBasicResource',
- Composable: 'RmrkTraitsResourceComposableResource',
- Slot: 'RmrkTraitsResourceSlotResource'
- }
- },
- /**
- * Lookup380: rmrk_traits::property::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup382: rmrk_traits::property::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPropertyPropertyInfo: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup381: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ * Lookup383: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsBaseBaseInfo: {
issuer: 'AccountId32',
@@ -2897,74 +2898,74 @@
symbol: 'Bytes'
},
/**
- * Lookup382: rmrk_traits::nft::NftChild
+ * Lookup384: rmrk_traits::nft::NftChild
**/
RmrkTraitsNftNftChild: {
collectionId: 'u32',
nftId: 'u32'
},
/**
- * Lookup384: pallet_common::pallet::Error<T>
+ * Lookup386: pallet_common::pallet::Error<T>
**/
PalletCommonError: {
_enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal']
},
/**
- * Lookup386: pallet_fungible::pallet::Error<T>
+ * Lookup388: pallet_fungible::pallet::Error<T>
**/
PalletFungibleError: {
_enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
},
/**
- * Lookup387: pallet_refungible::ItemData
+ * Lookup389: pallet_refungible::ItemData
**/
PalletRefungibleItemData: {
constData: 'Bytes'
},
/**
- * Lookup391: pallet_refungible::pallet::Error<T>
+ * Lookup393: pallet_refungible::pallet::Error<T>
**/
PalletRefungibleError: {
_enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
},
/**
- * Lookup392: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup394: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
PalletNonfungibleItemData: {
owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup394: pallet_nonfungible::pallet::Error<T>
+ * Lookup396: pallet_nonfungible::pallet::Error<T>
**/
PalletNonfungibleError: {
_enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
},
/**
- * Lookup395: pallet_structure::pallet::Error<T>
+ * Lookup397: pallet_structure::pallet::Error<T>
**/
PalletStructureError: {
_enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
},
/**
- * Lookup396: pallet_rmrk_core::pallet::Error<T>
+ * Lookup398: pallet_rmrk_core::pallet::Error<T>
**/
PalletRmrkCoreError: {
- _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending']
+ _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending']
},
/**
- * Lookup398: pallet_rmrk_equip::pallet::Error<T>
+ * Lookup400: pallet_rmrk_equip::pallet::Error<T>
**/
PalletRmrkEquipError: {
_enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst']
},
/**
- * Lookup401: pallet_evm::pallet::Error<T>
+ * Lookup403: pallet_evm::pallet::Error<T>
**/
PalletEvmError: {
_enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
},
/**
- * Lookup404: fp_rpc::TransactionStatus
+ * Lookup406: fp_rpc::TransactionStatus
**/
FpRpcTransactionStatus: {
transactionHash: 'H256',
@@ -2976,11 +2977,11 @@
logsBloom: 'EthbloomBloom'
},
/**
- * Lookup406: ethbloom::Bloom
+ * Lookup408: ethbloom::Bloom
**/
EthbloomBloom: '[u8;256]',
/**
- * Lookup408: ethereum::receipt::ReceiptV3
+ * Lookup410: ethereum::receipt::ReceiptV3
**/
EthereumReceiptReceiptV3: {
_enum: {
@@ -2990,7 +2991,7 @@
}
},
/**
- * Lookup409: ethereum::receipt::EIP658ReceiptData
+ * Lookup411: ethereum::receipt::EIP658ReceiptData
**/
EthereumReceiptEip658ReceiptData: {
statusCode: 'u8',
@@ -2999,7 +3000,7 @@
logs: 'Vec<EthereumLog>'
},
/**
- * Lookup410: ethereum::block::Block<ethereum::transaction::TransactionV2>
+ * Lookup412: ethereum::block::Block<ethereum::transaction::TransactionV2>
**/
EthereumBlock: {
header: 'EthereumHeader',
@@ -3007,7 +3008,7 @@
ommers: 'Vec<EthereumHeader>'
},
/**
- * Lookup411: ethereum::header::Header
+ * Lookup413: ethereum::header::Header
**/
EthereumHeader: {
parentHash: 'H256',
@@ -3027,41 +3028,41 @@
nonce: 'EthereumTypesHashH64'
},
/**
- * Lookup412: ethereum_types::hash::H64
+ * Lookup414: ethereum_types::hash::H64
**/
EthereumTypesHashH64: '[u8;8]',
/**
- * Lookup417: pallet_ethereum::pallet::Error<T>
+ * Lookup419: pallet_ethereum::pallet::Error<T>
**/
PalletEthereumError: {
_enum: ['InvalidSignature', 'PreLogExists']
},
/**
- * Lookup418: pallet_evm_coder_substrate::pallet::Error<T>
+ * Lookup420: pallet_evm_coder_substrate::pallet::Error<T>
**/
PalletEvmCoderSubstrateError: {
_enum: ['OutOfGas', 'OutOfFund']
},
/**
- * Lookup419: pallet_evm_contract_helpers::SponsoringModeT
+ * Lookup421: pallet_evm_contract_helpers::SponsoringModeT
**/
PalletEvmContractHelpersSponsoringModeT: {
_enum: ['Disabled', 'Allowlisted', 'Generous']
},
/**
- * Lookup421: pallet_evm_contract_helpers::pallet::Error<T>
+ * Lookup423: pallet_evm_contract_helpers::pallet::Error<T>
**/
PalletEvmContractHelpersError: {
_enum: ['NoPermission']
},
/**
- * Lookup422: pallet_evm_migration::pallet::Error<T>
+ * Lookup424: pallet_evm_migration::pallet::Error<T>
**/
PalletEvmMigrationError: {
_enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
},
/**
- * Lookup424: sp_runtime::MultiSignature
+ * Lookup426: sp_runtime::MultiSignature
**/
SpRuntimeMultiSignature: {
_enum: {
@@ -3071,43 +3072,43 @@
}
},
/**
- * Lookup425: sp_core::ed25519::Signature
+ * Lookup427: sp_core::ed25519::Signature
**/
SpCoreEd25519Signature: '[u8;64]',
/**
- * Lookup427: sp_core::sr25519::Signature
+ * Lookup429: sp_core::sr25519::Signature
**/
SpCoreSr25519Signature: '[u8;64]',
/**
- * Lookup428: sp_core::ecdsa::Signature
+ * Lookup430: sp_core::ecdsa::Signature
**/
SpCoreEcdsaSignature: '[u8;65]',
/**
- * Lookup431: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+ * Lookup433: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
**/
FrameSystemExtensionsCheckSpecVersion: 'Null',
/**
- * Lookup432: frame_system::extensions::check_genesis::CheckGenesis<T>
+ * Lookup434: frame_system::extensions::check_genesis::CheckGenesis<T>
**/
FrameSystemExtensionsCheckGenesis: 'Null',
/**
- * Lookup435: frame_system::extensions::check_nonce::CheckNonce<T>
+ * Lookup437: frame_system::extensions::check_nonce::CheckNonce<T>
**/
FrameSystemExtensionsCheckNonce: 'Compact<u32>',
/**
- * Lookup436: frame_system::extensions::check_weight::CheckWeight<T>
+ * Lookup438: frame_system::extensions::check_weight::CheckWeight<T>
**/
FrameSystemExtensionsCheckWeight: 'Null',
/**
- * Lookup437: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+ * Lookup439: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
**/
PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
/**
- * Lookup438: opal_runtime::Runtime
+ * Lookup440: opal_runtime::Runtime
**/
OpalRuntimeRuntime: 'Null',
/**
- * Lookup439: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
+ * Lookup441: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
**/
PalletEthereumFakeTransactionFinalizer: 'Null'
};
tests/src/interfaces/registry.tsdiffbeforeafterboth--- a/tests/src/interfaces/registry.ts
+++ b/tests/src/interfaces/registry.ts
@@ -1,7 +1,7 @@
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
declare module '@polkadot/types/types/registry' {
export interface InterfaceTypes {
@@ -133,10 +133,10 @@
PalletUniqueCall: PalletUniqueCall;
PalletUniqueError: PalletUniqueError;
PalletUniqueRawEvent: PalletUniqueRawEvent;
- PalletUnqSchedulerCall: PalletUnqSchedulerCall;
- PalletUnqSchedulerError: PalletUnqSchedulerError;
- PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;
- PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;
+ PalletUniqueSchedulerCall: PalletUniqueSchedulerCall;
+ PalletUniqueSchedulerError: PalletUniqueSchedulerError;
+ PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent;
+ PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3;
PalletXcmCall: PalletXcmCall;
PalletXcmError: PalletXcmError;
PalletXcmEvent: PalletXcmEvent;
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1438,8 +1438,8 @@
readonly tokenId: u32;
readonly propertyKeys: Vec<Bytes>;
} & Struct;
- readonly isSetPropertyPermissions: boolean;
- readonly asSetPropertyPermissions: {
+ readonly isSetTokenPropertyPermissions: boolean;
+ readonly asSetTokenPropertyPermissions: {
readonly collectionId: u32;
readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
} & Struct;
@@ -1498,7 +1498,7 @@
readonly collectionId: u32;
readonly newLimit: UpDataStructsCollectionPermissions;
} & Struct;
- readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';
+ readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';
}
/** @name UpDataStructsCollectionMode (156) */
@@ -1562,7 +1562,7 @@
/** @name UpDataStructsNestingPermissions (169) */
export interface UpDataStructsNestingPermissions extends Struct {
readonly tokenOwner: bool;
- readonly admin: bool;
+ readonly collectionAdmin: bool;
readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;
readonly permissive: bool;
}
@@ -1650,8 +1650,8 @@
readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
}
- /** @name PalletUnqSchedulerCall (206) */
- export interface PalletUnqSchedulerCall extends Enum {
+ /** @name PalletUniqueSchedulerCall (206) */
+ export interface PalletUniqueSchedulerCall extends Enum {
readonly isScheduleNamed: boolean;
readonly asScheduleNamed: {
readonly id: U8aFixed;
@@ -1719,11 +1719,13 @@
readonly royaltyAmount: Option<Permill>;
readonly metadata: Bytes;
readonly transferable: bool;
+ readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;
} & Struct;
readonly isBurnNft: boolean;
readonly asBurnNft: {
readonly collectionId: u32;
readonly nftId: u32;
+ readonly maxBurns: u32;
} & Struct;
readonly isSend: boolean;
readonly asSend: {
@@ -1777,7 +1779,6 @@
readonly asAddComposableResource: {
readonly rmrkCollectionId: u32;
readonly nftId: u32;
- readonly resourceId: Bytes;
readonly resource: RmrkTraitsResourceComposableResource;
} & Struct;
readonly isAddSlotResource: boolean;
@@ -1795,13 +1796,15 @@
readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';
}
- /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (215) */
- export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
- readonly isAccountId: boolean;
- readonly asAccountId: AccountId32;
- readonly isCollectionAndNftTuple: boolean;
- readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;
- readonly type: 'AccountId' | 'CollectionAndNftTuple';
+ /** @name RmrkTraitsResourceResourceTypes (217) */
+ export interface RmrkTraitsResourceResourceTypes extends Enum {
+ readonly isBasic: boolean;
+ readonly asBasic: RmrkTraitsResourceBasicResource;
+ readonly isComposable: boolean;
+ readonly asComposable: RmrkTraitsResourceComposableResource;
+ readonly isSlot: boolean;
+ readonly asSlot: RmrkTraitsResourceSlotResource;
+ readonly type: 'Basic' | 'Composable' | 'Slot';
}
/** @name RmrkTraitsResourceBasicResource (219) */
@@ -1812,7 +1815,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name RmrkTraitsResourceComposableResource (222) */
+ /** @name RmrkTraitsResourceComposableResource (221) */
export interface RmrkTraitsResourceComposableResource extends Struct {
readonly parts: Vec<u32>;
readonly base: u32;
@@ -1822,7 +1825,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name RmrkTraitsResourceSlotResource (224) */
+ /** @name RmrkTraitsResourceSlotResource (222) */
export interface RmrkTraitsResourceSlotResource extends Struct {
readonly base: u32;
readonly src: Option<Bytes>;
@@ -1832,7 +1835,16 @@
readonly thumb: Option<Bytes>;
}
- /** @name PalletRmrkEquipCall (225) */
+ /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (224) */
+ export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
+ readonly isAccountId: boolean;
+ readonly asAccountId: AccountId32;
+ readonly isCollectionAndNftTuple: boolean;
+ readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;
+ readonly type: 'AccountId' | 'CollectionAndNftTuple';
+ }
+
+ /** @name PalletRmrkEquipCall (228) */
export interface PalletRmrkEquipCall extends Enum {
readonly isCreateBase: boolean;
readonly asCreateBase: {
@@ -1848,7 +1860,7 @@
readonly type: 'CreateBase' | 'ThemeAdd';
}
- /** @name RmrkTraitsPartPartType (227) */
+ /** @name RmrkTraitsPartPartType (230) */
export interface RmrkTraitsPartPartType extends Enum {
readonly isFixedPart: boolean;
readonly asFixedPart: RmrkTraitsPartFixedPart;
@@ -1857,14 +1869,14 @@
readonly type: 'FixedPart' | 'SlotPart';
}
- /** @name RmrkTraitsPartFixedPart (229) */
+ /** @name RmrkTraitsPartFixedPart (232) */
export interface RmrkTraitsPartFixedPart extends Struct {
readonly id: u32;
readonly z: u32;
readonly src: Bytes;
}
- /** @name RmrkTraitsPartSlotPart (230) */
+ /** @name RmrkTraitsPartSlotPart (233) */
export interface RmrkTraitsPartSlotPart extends Struct {
readonly id: u32;
readonly equippable: RmrkTraitsPartEquippableList;
@@ -1872,7 +1884,7 @@
readonly z: u32;
}
- /** @name RmrkTraitsPartEquippableList (231) */
+ /** @name RmrkTraitsPartEquippableList (234) */
export interface RmrkTraitsPartEquippableList extends Enum {
readonly isAll: boolean;
readonly isEmpty: boolean;
@@ -1881,20 +1893,20 @@
readonly type: 'All' | 'Empty' | 'Custom';
}
- /** @name RmrkTraitsTheme (233) */
+ /** @name RmrkTraitsTheme (236) */
export interface RmrkTraitsTheme extends Struct {
readonly name: Bytes;
readonly properties: Vec<RmrkTraitsThemeThemeProperty>;
readonly inherit: bool;
}
- /** @name RmrkTraitsThemeThemeProperty (235) */
+ /** @name RmrkTraitsThemeThemeProperty (238) */
export interface RmrkTraitsThemeThemeProperty extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name PalletEvmCall (236) */
+ /** @name PalletEvmCall (239) */
export interface PalletEvmCall extends Enum {
readonly isWithdraw: boolean;
readonly asWithdraw: {
@@ -1939,7 +1951,7 @@
readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
}
- /** @name PalletEthereumCall (242) */
+ /** @name PalletEthereumCall (245) */
export interface PalletEthereumCall extends Enum {
readonly isTransact: boolean;
readonly asTransact: {
@@ -1948,7 +1960,7 @@
readonly type: 'Transact';
}
- /** @name EthereumTransactionTransactionV2 (243) */
+ /** @name EthereumTransactionTransactionV2 (246) */
export interface EthereumTransactionTransactionV2 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumTransactionLegacyTransaction;
@@ -1959,7 +1971,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumTransactionLegacyTransaction (244) */
+ /** @name EthereumTransactionLegacyTransaction (247) */
export interface EthereumTransactionLegacyTransaction extends Struct {
readonly nonce: U256;
readonly gasPrice: U256;
@@ -1970,7 +1982,7 @@
readonly signature: EthereumTransactionTransactionSignature;
}
- /** @name EthereumTransactionTransactionAction (245) */
+ /** @name EthereumTransactionTransactionAction (248) */
export interface EthereumTransactionTransactionAction extends Enum {
readonly isCall: boolean;
readonly asCall: H160;
@@ -1978,14 +1990,14 @@
readonly type: 'Call' | 'Create';
}
- /** @name EthereumTransactionTransactionSignature (246) */
+ /** @name EthereumTransactionTransactionSignature (249) */
export interface EthereumTransactionTransactionSignature extends Struct {
readonly v: u64;
readonly r: H256;
readonly s: H256;
}
- /** @name EthereumTransactionEip2930Transaction (248) */
+ /** @name EthereumTransactionEip2930Transaction (251) */
export interface EthereumTransactionEip2930Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -2000,13 +2012,13 @@
readonly s: H256;
}
- /** @name EthereumTransactionAccessListItem (250) */
+ /** @name EthereumTransactionAccessListItem (253) */
export interface EthereumTransactionAccessListItem extends Struct {
readonly address: H160;
readonly storageKeys: Vec<H256>;
}
- /** @name EthereumTransactionEip1559Transaction (251) */
+ /** @name EthereumTransactionEip1559Transaction (254) */
export interface EthereumTransactionEip1559Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -2022,7 +2034,7 @@
readonly s: H256;
}
- /** @name PalletEvmMigrationCall (252) */
+ /** @name PalletEvmMigrationCall (255) */
export interface PalletEvmMigrationCall extends Enum {
readonly isBegin: boolean;
readonly asBegin: {
@@ -2041,7 +2053,7 @@
readonly type: 'Begin' | 'SetData' | 'Finish';
}
- /** @name PalletSudoEvent (255) */
+ /** @name PalletSudoEvent (258) */
export interface PalletSudoEvent extends Enum {
readonly isSudid: boolean;
readonly asSudid: {
@@ -2058,7 +2070,7 @@
readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';
}
- /** @name SpRuntimeDispatchError (257) */
+ /** @name SpRuntimeDispatchError (260) */
export interface SpRuntimeDispatchError extends Enum {
readonly isOther: boolean;
readonly isCannotLookup: boolean;
@@ -2077,13 +2089,13 @@
readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';
}
- /** @name SpRuntimeModuleError (258) */
+ /** @name SpRuntimeModuleError (261) */
export interface SpRuntimeModuleError extends Struct {
readonly index: u8;
readonly error: U8aFixed;
}
- /** @name SpRuntimeTokenError (259) */
+ /** @name SpRuntimeTokenError (262) */
export interface SpRuntimeTokenError extends Enum {
readonly isNoFunds: boolean;
readonly isWouldDie: boolean;
@@ -2095,7 +2107,7 @@
readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';
}
- /** @name SpRuntimeArithmeticError (260) */
+ /** @name SpRuntimeArithmeticError (263) */
export interface SpRuntimeArithmeticError extends Enum {
readonly isUnderflow: boolean;
readonly isOverflow: boolean;
@@ -2103,20 +2115,20 @@
readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';
}
- /** @name SpRuntimeTransactionalError (261) */
+ /** @name SpRuntimeTransactionalError (264) */
export interface SpRuntimeTransactionalError extends Enum {
readonly isLimitReached: boolean;
readonly isNoLayer: boolean;
readonly type: 'LimitReached' | 'NoLayer';
}
- /** @name PalletSudoError (262) */
+ /** @name PalletSudoError (265) */
export interface PalletSudoError extends Enum {
readonly isRequireSudo: boolean;
readonly type: 'RequireSudo';
}
- /** @name FrameSystemAccountInfo (263) */
+ /** @name FrameSystemAccountInfo (266) */
export interface FrameSystemAccountInfo extends Struct {
readonly nonce: u32;
readonly consumers: u32;
@@ -2125,19 +2137,19 @@
readonly data: PalletBalancesAccountData;
}
- /** @name FrameSupportWeightsPerDispatchClassU64 (264) */
+ /** @name FrameSupportWeightsPerDispatchClassU64 (267) */
export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {
readonly normal: u64;
readonly operational: u64;
readonly mandatory: u64;
}
- /** @name SpRuntimeDigest (265) */
+ /** @name SpRuntimeDigest (268) */
export interface SpRuntimeDigest extends Struct {
readonly logs: Vec<SpRuntimeDigestDigestItem>;
}
- /** @name SpRuntimeDigestDigestItem (267) */
+ /** @name SpRuntimeDigestDigestItem (270) */
export interface SpRuntimeDigestDigestItem extends Enum {
readonly isOther: boolean;
readonly asOther: Bytes;
@@ -2151,14 +2163,14 @@
readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';
}
- /** @name FrameSystemEventRecord (269) */
+ /** @name FrameSystemEventRecord (272) */
export interface FrameSystemEventRecord extends Struct {
readonly phase: FrameSystemPhase;
readonly event: Event;
readonly topics: Vec<H256>;
}
- /** @name FrameSystemEvent (271) */
+ /** @name FrameSystemEvent (274) */
export interface FrameSystemEvent extends Enum {
readonly isExtrinsicSuccess: boolean;
readonly asExtrinsicSuccess: {
@@ -2186,14 +2198,14 @@
readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';
}
- /** @name FrameSupportWeightsDispatchInfo (272) */
+ /** @name FrameSupportWeightsDispatchInfo (275) */
export interface FrameSupportWeightsDispatchInfo extends Struct {
readonly weight: u64;
readonly class: FrameSupportWeightsDispatchClass;
readonly paysFee: FrameSupportWeightsPays;
}
- /** @name FrameSupportWeightsDispatchClass (273) */
+ /** @name FrameSupportWeightsDispatchClass (276) */
export interface FrameSupportWeightsDispatchClass extends Enum {
readonly isNormal: boolean;
readonly isOperational: boolean;
@@ -2201,14 +2213,14 @@
readonly type: 'Normal' | 'Operational' | 'Mandatory';
}
- /** @name FrameSupportWeightsPays (274) */
+ /** @name FrameSupportWeightsPays (277) */
export interface FrameSupportWeightsPays extends Enum {
readonly isYes: boolean;
readonly isNo: boolean;
readonly type: 'Yes' | 'No';
}
- /** @name OrmlVestingModuleEvent (275) */
+ /** @name OrmlVestingModuleEvent (278) */
export interface OrmlVestingModuleEvent extends Enum {
readonly isVestingScheduleAdded: boolean;
readonly asVestingScheduleAdded: {
@@ -2228,7 +2240,7 @@
readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';
}
- /** @name CumulusPalletXcmpQueueEvent (276) */
+ /** @name CumulusPalletXcmpQueueEvent (279) */
export interface CumulusPalletXcmpQueueEvent extends Enum {
readonly isSuccess: boolean;
readonly asSuccess: Option<H256>;
@@ -2249,7 +2261,7 @@
readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';
}
- /** @name PalletXcmEvent (277) */
+ /** @name PalletXcmEvent (280) */
export interface PalletXcmEvent extends Enum {
readonly isAttempted: boolean;
readonly asAttempted: XcmV2TraitsOutcome;
@@ -2286,7 +2298,7 @@
readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
}
- /** @name XcmV2TraitsOutcome (278) */
+ /** @name XcmV2TraitsOutcome (281) */
export interface XcmV2TraitsOutcome extends Enum {
readonly isComplete: boolean;
readonly asComplete: u64;
@@ -2297,7 +2309,7 @@
readonly type: 'Complete' | 'Incomplete' | 'Error';
}
- /** @name CumulusPalletXcmEvent (280) */
+ /** @name CumulusPalletXcmEvent (283) */
export interface CumulusPalletXcmEvent extends Enum {
readonly isInvalidFormat: boolean;
readonly asInvalidFormat: U8aFixed;
@@ -2308,7 +2320,7 @@
readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';
}
- /** @name CumulusPalletDmpQueueEvent (281) */
+ /** @name CumulusPalletDmpQueueEvent (284) */
export interface CumulusPalletDmpQueueEvent extends Enum {
readonly isInvalidFormat: boolean;
readonly asInvalidFormat: U8aFixed;
@@ -2325,7 +2337,7 @@
readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
}
- /** @name PalletUniqueRawEvent (282) */
+ /** @name PalletUniqueRawEvent (285) */
export interface PalletUniqueRawEvent extends Enum {
readonly isCollectionSponsorRemoved: boolean;
readonly asCollectionSponsorRemoved: u32;
@@ -2350,8 +2362,8 @@
readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';
}
- /** @name PalletUnqSchedulerEvent (283) */
- export interface PalletUnqSchedulerEvent extends Enum {
+ /** @name PalletUniqueSchedulerEvent (286) */
+ export interface PalletUniqueSchedulerEvent extends Enum {
readonly isScheduled: boolean;
readonly asScheduled: {
readonly when: u32;
@@ -2377,14 +2389,14 @@
readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';
}
- /** @name FrameSupportScheduleLookupError (285) */
+ /** @name FrameSupportScheduleLookupError (288) */
export interface FrameSupportScheduleLookupError extends Enum {
readonly isUnknown: boolean;
readonly isBadFormat: boolean;
readonly type: 'Unknown' | 'BadFormat';
}
- /** @name PalletCommonEvent (286) */
+ /** @name PalletCommonEvent (289) */
export interface PalletCommonEvent extends Enum {
readonly isCollectionCreated: boolean;
readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
@@ -2411,14 +2423,14 @@
readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
}
- /** @name PalletStructureEvent (287) */
+ /** @name PalletStructureEvent (290) */
export interface PalletStructureEvent extends Enum {
readonly isExecuted: boolean;
readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
readonly type: 'Executed';
}
- /** @name PalletRmrkCoreEvent (288) */
+ /** @name PalletRmrkCoreEvent (291) */
export interface PalletRmrkCoreEvent extends Enum {
readonly isCollectionCreated: boolean;
readonly asCollectionCreated: {
@@ -2508,7 +2520,7 @@
readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';
}
- /** @name PalletRmrkEquipEvent (289) */
+ /** @name PalletRmrkEquipEvent (292) */
export interface PalletRmrkEquipEvent extends Enum {
readonly isBaseCreated: boolean;
readonly asBaseCreated: {
@@ -2518,7 +2530,7 @@
readonly type: 'BaseCreated';
}
- /** @name PalletEvmEvent (290) */
+ /** @name PalletEvmEvent (293) */
export interface PalletEvmEvent extends Enum {
readonly isLog: boolean;
readonly asLog: EthereumLog;
@@ -2537,21 +2549,21 @@
readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
}
- /** @name EthereumLog (291) */
+ /** @name EthereumLog (294) */
export interface EthereumLog extends Struct {
readonly address: H160;
readonly topics: Vec<H256>;
readonly data: Bytes;
}
- /** @name PalletEthereumEvent (292) */
+ /** @name PalletEthereumEvent (295) */
export interface PalletEthereumEvent extends Enum {
readonly isExecuted: boolean;
readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
readonly type: 'Executed';
}
- /** @name EvmCoreErrorExitReason (293) */
+ /** @name EvmCoreErrorExitReason (296) */
export interface EvmCoreErrorExitReason extends Enum {
readonly isSucceed: boolean;
readonly asSucceed: EvmCoreErrorExitSucceed;
@@ -2564,7 +2576,7 @@
readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
}
- /** @name EvmCoreErrorExitSucceed (294) */
+ /** @name EvmCoreErrorExitSucceed (297) */
export interface EvmCoreErrorExitSucceed extends Enum {
readonly isStopped: boolean;
readonly isReturned: boolean;
@@ -2572,7 +2584,7 @@
readonly type: 'Stopped' | 'Returned' | 'Suicided';
}
- /** @name EvmCoreErrorExitError (295) */
+ /** @name EvmCoreErrorExitError (298) */
export interface EvmCoreErrorExitError extends Enum {
readonly isStackUnderflow: boolean;
readonly isStackOverflow: boolean;
@@ -2593,13 +2605,13 @@
readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
}
- /** @name EvmCoreErrorExitRevert (298) */
+ /** @name EvmCoreErrorExitRevert (301) */
export interface EvmCoreErrorExitRevert extends Enum {
readonly isReverted: boolean;
readonly type: 'Reverted';
}
- /** @name EvmCoreErrorExitFatal (299) */
+ /** @name EvmCoreErrorExitFatal (302) */
export interface EvmCoreErrorExitFatal extends Enum {
readonly isNotSupported: boolean;
readonly isUnhandledInterrupt: boolean;
@@ -2610,7 +2622,7 @@
readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
}
- /** @name FrameSystemPhase (300) */
+ /** @name FrameSystemPhase (303) */
export interface FrameSystemPhase extends Enum {
readonly isApplyExtrinsic: boolean;
readonly asApplyExtrinsic: u32;
@@ -2619,27 +2631,27 @@
readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
}
- /** @name FrameSystemLastRuntimeUpgradeInfo (302) */
+ /** @name FrameSystemLastRuntimeUpgradeInfo (305) */
export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
readonly specVersion: Compact<u32>;
readonly specName: Text;
}
- /** @name FrameSystemLimitsBlockWeights (303) */
+ /** @name FrameSystemLimitsBlockWeights (306) */
export interface FrameSystemLimitsBlockWeights extends Struct {
readonly baseBlock: u64;
readonly maxBlock: u64;
readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
}
- /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (304) */
+ /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (307) */
export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
readonly normal: FrameSystemLimitsWeightsPerClass;
readonly operational: FrameSystemLimitsWeightsPerClass;
readonly mandatory: FrameSystemLimitsWeightsPerClass;
}
- /** @name FrameSystemLimitsWeightsPerClass (305) */
+ /** @name FrameSystemLimitsWeightsPerClass (308) */
export interface FrameSystemLimitsWeightsPerClass extends Struct {
readonly baseExtrinsic: u64;
readonly maxExtrinsic: Option<u64>;
@@ -2647,25 +2659,25 @@
readonly reserved: Option<u64>;
}
- /** @name FrameSystemLimitsBlockLength (307) */
+ /** @name FrameSystemLimitsBlockLength (310) */
export interface FrameSystemLimitsBlockLength extends Struct {
readonly max: FrameSupportWeightsPerDispatchClassU32;
}
- /** @name FrameSupportWeightsPerDispatchClassU32 (308) */
+ /** @name FrameSupportWeightsPerDispatchClassU32 (311) */
export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
readonly normal: u32;
readonly operational: u32;
readonly mandatory: u32;
}
- /** @name FrameSupportWeightsRuntimeDbWeight (309) */
+ /** @name FrameSupportWeightsRuntimeDbWeight (312) */
export interface FrameSupportWeightsRuntimeDbWeight extends Struct {
readonly read: u64;
readonly write: u64;
}
- /** @name SpVersionRuntimeVersion (310) */
+ /** @name SpVersionRuntimeVersion (313) */
export interface SpVersionRuntimeVersion extends Struct {
readonly specName: Text;
readonly implName: Text;
@@ -2677,7 +2689,7 @@
readonly stateVersion: u8;
}
- /** @name FrameSystemError (314) */
+ /** @name FrameSystemError (317) */
export interface FrameSystemError extends Enum {
readonly isInvalidSpecName: boolean;
readonly isSpecVersionNeedsToIncrease: boolean;
@@ -2688,7 +2700,7 @@
readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
}
- /** @name OrmlVestingModuleError (316) */
+ /** @name OrmlVestingModuleError (319) */
export interface OrmlVestingModuleError extends Enum {
readonly isZeroVestingPeriod: boolean;
readonly isZeroVestingPeriodCount: boolean;
@@ -2699,21 +2711,21 @@
readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
}
- /** @name CumulusPalletXcmpQueueInboundChannelDetails (318) */
+ /** @name CumulusPalletXcmpQueueInboundChannelDetails (321) */
export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
readonly sender: u32;
readonly state: CumulusPalletXcmpQueueInboundState;
readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
}
- /** @name CumulusPalletXcmpQueueInboundState (319) */
+ /** @name CumulusPalletXcmpQueueInboundState (322) */
export interface CumulusPalletXcmpQueueInboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name PolkadotParachainPrimitivesXcmpMessageFormat (322) */
+ /** @name PolkadotParachainPrimitivesXcmpMessageFormat (325) */
export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
readonly isConcatenatedVersionedXcm: boolean;
readonly isConcatenatedEncodedBlob: boolean;
@@ -2721,7 +2733,7 @@
readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
}
- /** @name CumulusPalletXcmpQueueOutboundChannelDetails (325) */
+ /** @name CumulusPalletXcmpQueueOutboundChannelDetails (328) */
export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
readonly recipient: u32;
readonly state: CumulusPalletXcmpQueueOutboundState;
@@ -2730,14 +2742,14 @@
readonly lastIndex: u16;
}
- /** @name CumulusPalletXcmpQueueOutboundState (326) */
+ /** @name CumulusPalletXcmpQueueOutboundState (329) */
export interface CumulusPalletXcmpQueueOutboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name CumulusPalletXcmpQueueQueueConfigData (328) */
+ /** @name CumulusPalletXcmpQueueQueueConfigData (331) */
export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
readonly suspendThreshold: u32;
readonly dropThreshold: u32;
@@ -2747,7 +2759,7 @@
readonly xcmpMaxIndividualWeight: u64;
}
- /** @name CumulusPalletXcmpQueueError (330) */
+ /** @name CumulusPalletXcmpQueueError (333) */
export interface CumulusPalletXcmpQueueError extends Enum {
readonly isFailedToSend: boolean;
readonly isBadXcmOrigin: boolean;
@@ -2757,7 +2769,7 @@
readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
}
- /** @name PalletXcmError (331) */
+ /** @name PalletXcmError (334) */
export interface PalletXcmError extends Enum {
readonly isUnreachable: boolean;
readonly isSendFailure: boolean;
@@ -2775,29 +2787,29 @@
readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
}
- /** @name CumulusPalletXcmError (332) */
+ /** @name CumulusPalletXcmError (335) */
export type CumulusPalletXcmError = Null;
- /** @name CumulusPalletDmpQueueConfigData (333) */
+ /** @name CumulusPalletDmpQueueConfigData (336) */
export interface CumulusPalletDmpQueueConfigData extends Struct {
readonly maxIndividual: u64;
}
- /** @name CumulusPalletDmpQueuePageIndexData (334) */
+ /** @name CumulusPalletDmpQueuePageIndexData (337) */
export interface CumulusPalletDmpQueuePageIndexData extends Struct {
readonly beginUsed: u32;
readonly endUsed: u32;
readonly overweightCount: u64;
}
- /** @name CumulusPalletDmpQueueError (337) */
+ /** @name CumulusPalletDmpQueueError (340) */
export interface CumulusPalletDmpQueueError extends Enum {
readonly isUnknown: boolean;
readonly isOverLimit: boolean;
readonly type: 'Unknown' | 'OverLimit';
}
- /** @name PalletUniqueError (341) */
+ /** @name PalletUniqueError (344) */
export interface PalletUniqueError extends Enum {
readonly isCollectionDecimalPointLimitExceeded: boolean;
readonly isConfirmUnsetSponsorFail: boolean;
@@ -2805,8 +2817,8 @@
readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';
}
- /** @name PalletUnqSchedulerScheduledV3 (344) */
- export interface PalletUnqSchedulerScheduledV3 extends Struct {
+ /** @name PalletUniqueSchedulerScheduledV3 (347) */
+ export interface PalletUniqueSchedulerScheduledV3 extends Struct {
readonly maybeId: Option<U8aFixed>;
readonly priority: u8;
readonly call: FrameSupportScheduleMaybeHashed;
@@ -2814,7 +2826,7 @@
readonly origin: OpalRuntimeOriginCaller;
}
- /** @name OpalRuntimeOriginCaller (345) */
+ /** @name OpalRuntimeOriginCaller (348) */
export interface OpalRuntimeOriginCaller extends Enum {
readonly isVoid: boolean;
readonly isSystem: boolean;
@@ -2828,7 +2840,7 @@
readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';
}
- /** @name FrameSupportDispatchRawOrigin (346) */
+ /** @name FrameSupportDispatchRawOrigin (349) */
export interface FrameSupportDispatchRawOrigin extends Enum {
readonly isRoot: boolean;
readonly isSigned: boolean;
@@ -2837,7 +2849,7 @@
readonly type: 'Root' | 'Signed' | 'None';
}
- /** @name PalletXcmOrigin (347) */
+ /** @name PalletXcmOrigin (350) */
export interface PalletXcmOrigin extends Enum {
readonly isXcm: boolean;
readonly asXcm: XcmV1MultiLocation;
@@ -2846,7 +2858,7 @@
readonly type: 'Xcm' | 'Response';
}
- /** @name CumulusPalletXcmOrigin (348) */
+ /** @name CumulusPalletXcmOrigin (351) */
export interface CumulusPalletXcmOrigin extends Enum {
readonly isRelay: boolean;
readonly isSiblingParachain: boolean;
@@ -2854,18 +2866,18 @@
readonly type: 'Relay' | 'SiblingParachain';
}
- /** @name PalletEthereumRawOrigin (349) */
+ /** @name PalletEthereumRawOrigin (352) */
export interface PalletEthereumRawOrigin extends Enum {
readonly isEthereumTransaction: boolean;
readonly asEthereumTransaction: H160;
readonly type: 'EthereumTransaction';
}
- /** @name SpCoreVoid (350) */
+ /** @name SpCoreVoid (353) */
export type SpCoreVoid = Null;
- /** @name PalletUnqSchedulerError (351) */
- export interface PalletUnqSchedulerError extends Enum {
+ /** @name PalletUniqueSchedulerError (354) */
+ export interface PalletUniqueSchedulerError extends Enum {
readonly isFailedToSchedule: boolean;
readonly isNotFound: boolean;
readonly isTargetBlockNumberInPast: boolean;
@@ -2873,7 +2885,7 @@
readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';
}
- /** @name UpDataStructsCollection (352) */
+ /** @name UpDataStructsCollection (355) */
export interface UpDataStructsCollection extends Struct {
readonly owner: AccountId32;
readonly mode: UpDataStructsCollectionMode;
@@ -2886,7 +2898,7 @@
readonly externalCollection: bool;
}
- /** @name UpDataStructsSponsorshipState (353) */
+ /** @name UpDataStructsSponsorshipState (356) */
export interface UpDataStructsSponsorshipState extends Enum {
readonly isDisabled: boolean;
readonly isUnconfirmed: boolean;
@@ -2896,42 +2908,42 @@
readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
}
- /** @name UpDataStructsProperties (354) */
+ /** @name UpDataStructsProperties (357) */
export interface UpDataStructsProperties extends Struct {
readonly map: UpDataStructsPropertiesMapBoundedVec;
readonly consumedSpace: u32;
readonly spaceLimit: u32;
}
- /** @name UpDataStructsPropertiesMapBoundedVec (355) */
+ /** @name UpDataStructsPropertiesMapBoundedVec (358) */
export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
- /** @name UpDataStructsPropertiesMapPropertyPermission (360) */
+ /** @name UpDataStructsPropertiesMapPropertyPermission (363) */
export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
- /** @name UpDataStructsCollectionStats (367) */
+ /** @name UpDataStructsCollectionStats (370) */
export interface UpDataStructsCollectionStats extends Struct {
readonly created: u32;
readonly destroyed: u32;
readonly alive: u32;
}
- /** @name UpDataStructsTokenChild (368) */
+ /** @name UpDataStructsTokenChild (371) */
export interface UpDataStructsTokenChild extends Struct {
readonly token: u32;
readonly collection: u32;
}
- /** @name PhantomTypeUpDataStructs (369) */
+ /** @name PhantomTypeUpDataStructs (372) */
export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
- /** @name UpDataStructsTokenData (371) */
+ /** @name UpDataStructsTokenData (374) */
export interface UpDataStructsTokenData extends Struct {
readonly properties: Vec<UpDataStructsProperty>;
readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
}
- /** @name UpDataStructsRpcCollection (373) */
+ /** @name UpDataStructsRpcCollection (376) */
export interface UpDataStructsRpcCollection extends Struct {
readonly owner: AccountId32;
readonly mode: UpDataStructsCollectionMode;
@@ -2946,7 +2958,7 @@
readonly readOnly: bool;
}
- /** @name RmrkTraitsCollectionCollectionInfo (374) */
+ /** @name RmrkTraitsCollectionCollectionInfo (377) */
export interface RmrkTraitsCollectionCollectionInfo extends Struct {
readonly issuer: AccountId32;
readonly metadata: Bytes;
@@ -2955,7 +2967,7 @@
readonly nftsCount: u32;
}
- /** @name RmrkTraitsNftNftInfo (375) */
+ /** @name RmrkTraitsNftNftInfo (378) */
export interface RmrkTraitsNftNftInfo extends Struct {
readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;
readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;
@@ -2964,13 +2976,13 @@
readonly pending: bool;
}
- /** @name RmrkTraitsNftRoyaltyInfo (377) */
+ /** @name RmrkTraitsNftRoyaltyInfo (380) */
export interface RmrkTraitsNftRoyaltyInfo extends Struct {
readonly recipient: AccountId32;
readonly amount: Permill;
}
- /** @name RmrkTraitsResourceResourceInfo (378) */
+ /** @name RmrkTraitsResourceResourceInfo (381) */
export interface RmrkTraitsResourceResourceInfo extends Struct {
readonly id: u32;
readonly resource: RmrkTraitsResourceResourceTypes;
@@ -2978,37 +2990,26 @@
readonly pendingRemoval: bool;
}
- /** @name RmrkTraitsResourceResourceTypes (379) */
- export interface RmrkTraitsResourceResourceTypes extends Enum {
- readonly isBasic: boolean;
- readonly asBasic: RmrkTraitsResourceBasicResource;
- readonly isComposable: boolean;
- readonly asComposable: RmrkTraitsResourceComposableResource;
- readonly isSlot: boolean;
- readonly asSlot: RmrkTraitsResourceSlotResource;
- readonly type: 'Basic' | 'Composable' | 'Slot';
- }
-
- /** @name RmrkTraitsPropertyPropertyInfo (380) */
+ /** @name RmrkTraitsPropertyPropertyInfo (382) */
export interface RmrkTraitsPropertyPropertyInfo extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name RmrkTraitsBaseBaseInfo (381) */
+ /** @name RmrkTraitsBaseBaseInfo (383) */
export interface RmrkTraitsBaseBaseInfo extends Struct {
readonly issuer: AccountId32;
readonly baseType: Bytes;
readonly symbol: Bytes;
}
- /** @name RmrkTraitsNftNftChild (382) */
+ /** @name RmrkTraitsNftNftChild (384) */
export interface RmrkTraitsNftNftChild extends Struct {
readonly collectionId: u32;
readonly nftId: u32;
}
- /** @name PalletCommonError (384) */
+ /** @name PalletCommonError (386) */
export interface PalletCommonError extends Enum {
readonly isCollectionNotFound: boolean;
readonly isMustBeTokenOwner: boolean;
@@ -3047,7 +3048,7 @@
readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';
}
- /** @name PalletFungibleError (386) */
+ /** @name PalletFungibleError (388) */
export interface PalletFungibleError extends Enum {
readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isFungibleItemsHaveNoId: boolean;
@@ -3057,12 +3058,12 @@
readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
}
- /** @name PalletRefungibleItemData (387) */
+ /** @name PalletRefungibleItemData (389) */
export interface PalletRefungibleItemData extends Struct {
readonly constData: Bytes;
}
- /** @name PalletRefungibleError (391) */
+ /** @name PalletRefungibleError (393) */
export interface PalletRefungibleError extends Enum {
readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isWrongRefungiblePieces: boolean;
@@ -3071,12 +3072,12 @@
readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
}
- /** @name PalletNonfungibleItemData (392) */
+ /** @name PalletNonfungibleItemData (394) */
export interface PalletNonfungibleItemData extends Struct {
readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name PalletNonfungibleError (394) */
+ /** @name PalletNonfungibleError (396) */
export interface PalletNonfungibleError extends Enum {
readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isNonfungibleItemsHaveNoAmount: boolean;
@@ -3084,7 +3085,7 @@
readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';
}
- /** @name PalletStructureError (395) */
+ /** @name PalletStructureError (397) */
export interface PalletStructureError extends Enum {
readonly isOuroborosDetected: boolean;
readonly isDepthLimit: boolean;
@@ -3093,12 +3094,13 @@
readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';
}
- /** @name PalletRmrkCoreError (396) */
+ /** @name PalletRmrkCoreError (398) */
export interface PalletRmrkCoreError extends Enum {
readonly isCorruptedCollectionType: boolean;
readonly isNftTypeEncodeError: boolean;
readonly isRmrkPropertyKeyIsTooLong: boolean;
readonly isRmrkPropertyValueIsTooLong: boolean;
+ readonly isUnableToDecodeRmrkData: boolean;
readonly isCollectionNotEmpty: boolean;
readonly isNoAvailableCollectionId: boolean;
readonly isNoAvailableNftId: boolean;
@@ -3111,10 +3113,10 @@
readonly isCannotAcceptNonOwnedNft: boolean;
readonly isCannotRejectNonOwnedNft: boolean;
readonly isResourceNotPending: boolean;
- readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';
+ readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';
}
- /** @name PalletRmrkEquipError (398) */
+ /** @name PalletRmrkEquipError (400) */
export interface PalletRmrkEquipError extends Enum {
readonly isPermissionError: boolean;
readonly isNoAvailableBaseId: boolean;
@@ -3124,7 +3126,7 @@
readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';
}
- /** @name PalletEvmError (401) */
+ /** @name PalletEvmError (403) */
export interface PalletEvmError extends Enum {
readonly isBalanceLow: boolean;
readonly isFeeOverflow: boolean;
@@ -3135,7 +3137,7 @@
readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
}
- /** @name FpRpcTransactionStatus (404) */
+ /** @name FpRpcTransactionStatus (406) */
export interface FpRpcTransactionStatus extends Struct {
readonly transactionHash: H256;
readonly transactionIndex: u32;
@@ -3146,10 +3148,10 @@
readonly logsBloom: EthbloomBloom;
}
- /** @name EthbloomBloom (406) */
+ /** @name EthbloomBloom (408) */
export interface EthbloomBloom extends U8aFixed {}
- /** @name EthereumReceiptReceiptV3 (408) */
+ /** @name EthereumReceiptReceiptV3 (410) */
export interface EthereumReceiptReceiptV3 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumReceiptEip658ReceiptData;
@@ -3160,7 +3162,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumReceiptEip658ReceiptData (409) */
+ /** @name EthereumReceiptEip658ReceiptData (411) */
export interface EthereumReceiptEip658ReceiptData extends Struct {
readonly statusCode: u8;
readonly usedGas: U256;
@@ -3168,14 +3170,14 @@
readonly logs: Vec<EthereumLog>;
}
- /** @name EthereumBlock (410) */
+ /** @name EthereumBlock (412) */
export interface EthereumBlock extends Struct {
readonly header: EthereumHeader;
readonly transactions: Vec<EthereumTransactionTransactionV2>;
readonly ommers: Vec<EthereumHeader>;
}
- /** @name EthereumHeader (411) */
+ /** @name EthereumHeader (413) */
export interface EthereumHeader extends Struct {
readonly parentHash: H256;
readonly ommersHash: H256;
@@ -3194,24 +3196,24 @@
readonly nonce: EthereumTypesHashH64;
}
- /** @name EthereumTypesHashH64 (412) */
+ /** @name EthereumTypesHashH64 (414) */
export interface EthereumTypesHashH64 extends U8aFixed {}
- /** @name PalletEthereumError (417) */
+ /** @name PalletEthereumError (419) */
export interface PalletEthereumError extends Enum {
readonly isInvalidSignature: boolean;
readonly isPreLogExists: boolean;
readonly type: 'InvalidSignature' | 'PreLogExists';
}
- /** @name PalletEvmCoderSubstrateError (418) */
+ /** @name PalletEvmCoderSubstrateError (420) */
export interface PalletEvmCoderSubstrateError extends Enum {
readonly isOutOfGas: boolean;
readonly isOutOfFund: boolean;
readonly type: 'OutOfGas' | 'OutOfFund';
}
- /** @name PalletEvmContractHelpersSponsoringModeT (419) */
+ /** @name PalletEvmContractHelpersSponsoringModeT (421) */
export interface PalletEvmContractHelpersSponsoringModeT extends Enum {
readonly isDisabled: boolean;
readonly isAllowlisted: boolean;
@@ -3219,20 +3221,20 @@
readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
}
- /** @name PalletEvmContractHelpersError (421) */
+ /** @name PalletEvmContractHelpersError (423) */
export interface PalletEvmContractHelpersError extends Enum {
readonly isNoPermission: boolean;
readonly type: 'NoPermission';
}
- /** @name PalletEvmMigrationError (422) */
+ /** @name PalletEvmMigrationError (424) */
export interface PalletEvmMigrationError extends Enum {
readonly isAccountNotEmpty: boolean;
readonly isAccountIsNotMigrating: boolean;
readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
}
- /** @name SpRuntimeMultiSignature (424) */
+ /** @name SpRuntimeMultiSignature (426) */
export interface SpRuntimeMultiSignature extends Enum {
readonly isEd25519: boolean;
readonly asEd25519: SpCoreEd25519Signature;
@@ -3243,34 +3245,34 @@
readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
}
- /** @name SpCoreEd25519Signature (425) */
+ /** @name SpCoreEd25519Signature (427) */
export interface SpCoreEd25519Signature extends U8aFixed {}
- /** @name SpCoreSr25519Signature (427) */
+ /** @name SpCoreSr25519Signature (429) */
export interface SpCoreSr25519Signature extends U8aFixed {}
- /** @name SpCoreEcdsaSignature (428) */
+ /** @name SpCoreEcdsaSignature (430) */
export interface SpCoreEcdsaSignature extends U8aFixed {}
- /** @name FrameSystemExtensionsCheckSpecVersion (431) */
+ /** @name FrameSystemExtensionsCheckSpecVersion (433) */
export type FrameSystemExtensionsCheckSpecVersion = Null;
- /** @name FrameSystemExtensionsCheckGenesis (432) */
+ /** @name FrameSystemExtensionsCheckGenesis (434) */
export type FrameSystemExtensionsCheckGenesis = Null;
- /** @name FrameSystemExtensionsCheckNonce (435) */
+ /** @name FrameSystemExtensionsCheckNonce (437) */
export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
- /** @name FrameSystemExtensionsCheckWeight (436) */
+ /** @name FrameSystemExtensionsCheckWeight (438) */
export type FrameSystemExtensionsCheckWeight = Null;
- /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (437) */
+ /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (439) */
export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
- /** @name OpalRuntimeRuntime (438) */
+ /** @name OpalRuntimeRuntime (440) */
export type OpalRuntimeRuntime = Null;
- /** @name PalletEthereumFakeTransactionFinalizer (439) */
+ /** @name PalletEthereumFakeTransactionFinalizer (441) */
export type PalletEthereumFakeTransactionFinalizer = Null;
} // declare module
tests/src/limits.test.tsdiffbeforeafterboth--- a/tests/src/limits.test.ts
+++ b/tests/src/limits.test.ts
@@ -406,6 +406,7 @@
it('Effective collection limits', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
{ // Check that limits is undefined
const collection = await api.rpc.unique.collectionById(collectionId);
@@ -419,7 +420,7 @@
expect(limits.tokenLimit.toHuman()).to.be.null;
expect(limits.sponsorTransferTimeout.toHuman()).to.be.null;
expect(limits.sponsorApproveTimeout.toHuman()).to.be.null;
- expect(limits.ownerCanTransfer.toHuman()).to.be.null;
+ expect(limits.ownerCanTransfer.toHuman()).to.be.true;
expect(limits.ownerCanDestroy.toHuman()).to.be.null;
expect(limits.transfersEnabled.toHuman()).to.be.null;
}
tests/src/nesting/graphs.test.tsdiffbeforeafterboth--- a/tests/src/nesting/graphs.test.ts
+++ b/tests/src/nesting/graphs.test.ts
@@ -3,7 +3,7 @@
import {expect} from 'chai';
import {tokenIdToCross} from '../eth/util/helpers';
import usingApi, {executeTransaction} from '../substrate/substrate-api';
-import {getCreateCollectionResult, transferExpectSuccess} from '../util/helpers';
+import {getCreateCollectionResult, transferExpectSuccess, setCollectionLimitsExpectSuccess} from '../util/helpers';
/**
* ```dot
@@ -13,7 +13,7 @@
* ```
*/
async function buildComplexObjectGraph(api: ApiPromise, sender: IKeyringPair): Promise<number> {
- const events = await executeTransaction(api, sender, api.tx.unique.createCollectionEx({mode: 'NFT', permissions: {nesting: 'Owner'}}));
+ const events = await executeTransaction(api, sender, api.tx.unique.createCollectionEx({mode: 'NFT', permissions: {nesting: {tokenOwner: true}}}));
const {collectionId} = getCreateCollectionResult(events);
await executeTransaction(api, sender, api.tx.unique.createMultipleItemsEx(collectionId, {NFT: Array(8).fill({owner: {Substrate: sender.address}})}));
@@ -36,6 +36,7 @@
await usingApi(async (api, privateKeyWrapper) => {
const alice = privateKeyWrapper('//Alice');
const collection = await buildComplexObjectGraph(api, alice);
+ await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
// to self
await expect(
tests/src/nesting/nest.test.tsdiffbeforeafterboth--- a/tests/src/nesting/nest.test.ts
+++ b/tests/src/nesting/nest.test.ts
@@ -2,6 +2,7 @@
import {tokenIdToAddress} from '../eth/util/helpers';
import usingApi, {executeTransaction} from '../substrate/substrate-api';
import {
+ addCollectionAdminExpectSuccess,
addToAllowListExpectSuccess,
createCollectionExpectSuccess,
createItemExpectSuccess,
@@ -15,15 +16,17 @@
transferExpectFailure,
transferExpectSuccess,
transferFromExpectSuccess,
+ setCollectionLimitsExpectSuccess,
} from '../util/helpers';
import {IKeyringPair} from '@polkadot/types/types';
let alice: IKeyringPair;
let bob: IKeyringPair;
+let charlie: IKeyringPair;
-describe('Integration Test: Nesting', () => {
+describe('Integration Test: Composite nesting tests', () => {
before(async () => {
- await usingApi(async (api, privateKeyWrapper) => {
+ await usingApi(async (_, privateKeyWrapper) => {
alice = privateKeyWrapper('//Alice');
bob = privateKeyWrapper('//Bob');
});
@@ -92,6 +95,7 @@
it('Checks token children', async () => {
await usingApi(async api => {
const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionLimitsExpectSuccess(alice, collectionA, {ownerCanTransfer: true});
await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {tokenOwner: true}});
const collectionB = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
@@ -145,7 +149,79 @@
], 'Children contents check at deeper nesting');
});
});
+});
+
+describe('Integration Test: Various token type nesting', async () => {
+ before(async () => {
+ await usingApi(async (_, privateKeyWrapper) => {
+ alice = privateKeyWrapper('//Alice');
+ bob = privateKeyWrapper('//Bob');
+ charlie = privateKeyWrapper('//Charlie');
+ });
+ });
+
+ it('Admin (NFT): allows an Admin to nest a token', async () => {
+ await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);
+
+ // Create a nested token
+ const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)});
+ expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address});
+ expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});
+
+ // Create a token to be nested and nest
+ const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
+ await transferExpectSuccess(collection, newToken, bob, {Ethereum: tokenIdToAddress(collection, targetToken)});
+ expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address});
+ expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});
+ });
+ });
+ it('Admin (NFT): Admin and Token Owner can operate together', async () => {
+ await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true, collectionAdmin: true}});
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);
+
+ // Create a nested token by an administrator
+ const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)});
+ expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address});
+ expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});
+
+ // Create a token and allow the owner to nest too
+ const newToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);
+ await transferExpectSuccess(collection, newToken, charlie, {Ethereum: tokenIdToAddress(collection, nestedToken)});
+ expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address});
+ expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, nestedToken).toLowerCase()});
+ });
+ });
+
+ it('Admin (NFT): allows an Admin to nest a token (Restricted nesting)', async () => {
+ await usingApi(async api => {
+ const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await addCollectionAdminExpectSuccess(alice, collectionA, bob.address);
+ const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await addCollectionAdminExpectSuccess(alice, collectionB, bob.address);
+ await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA, collectionB]}});
+ const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT', charlie.address);
+
+ // Create a nested token
+ const nestedToken = await createItemExpectSuccess(bob, collectionB, 'NFT', {Ethereum: tokenIdToAddress(collectionA, targetToken)});
+ expect(await getTopmostTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Substrate: charlie.address});
+ expect(await getTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()});
+
+ // Create a token to be nested and nest
+ const newToken = await createItemExpectSuccess(bob, collectionB, 'NFT');
+ await transferExpectSuccess(collectionB, newToken, bob, {Ethereum: tokenIdToAddress(collectionA, targetToken)});
+ expect(await getTopmostTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: charlie.address});
+ expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()});
+ });
+ });
+
// ---------- Non-Fungible ----------
it('NFT: allows an Owner to nest/unnest their token', async () => {
@@ -248,7 +324,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collectionRFT,
targetAddress,
- {ReFungible: {const_data: [], pieces: 100}},
+ {ReFungible: {pieces: 100}},
))).to.not.be.rejected;
// Nest a new token
@@ -271,7 +347,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collectionRFT,
targetAddress,
- {ReFungible: {const_data: [], pieces: 100}},
+ {ReFungible: {pieces: 100}},
))).to.not.be.rejected;
// Nest a new token
@@ -283,7 +359,7 @@
describe('Negative Test: Nesting', async() => {
before(async () => {
- await usingApi(async (api, privateKeyWrapper) => {
+ await usingApi(async (_, privateKeyWrapper) => {
alice = privateKeyWrapper('//Alice');
bob = privateKeyWrapper('//Bob');
});
@@ -314,13 +390,122 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collection,
{Ethereum: tokenIdToAddress(collection, prevToken)},
- {nft: {const_data: [], variable_data: []}} as any,
+ {nft: {}} as any,
)), 'while creating nested token').to.be.rejectedWith(/^structure\.DepthLimit$/);
expect(await getTopmostTokenOwner(api, collection, prevToken)).to.be.deep.equal({Substrate: alice.address});
});
});
+ // ---------- Admin ------------
+
+ it('Admin (NFT): disallows an Admin to operate nesting when only TokenOwner is allowed', async () => {
+ await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ const targetToken = await createItemExpectSuccess(alice, collection, 'NFT');
+
+ // Try to create a nested token as collection admin when it's disallowed
+ await expect(executeTransaction(api, bob, api.tx.unique.createItem(
+ collection,
+ {Ethereum: tokenIdToAddress(collection, targetToken)},
+ {nft: {}} as any,
+ )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
+
+ // Try to create and nest a token in the wrong collection
+ const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
+ await expect(executeTransaction(
+ api,
+ bob,
+ api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1),
+ ), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
+ expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});
+ });
+ });
+
+ it('Admin (NFT): disallows a Token Owner to operate nesting when only Admin is allowed', async () => {
+ await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});
+ await addToAllowListExpectSuccess(alice, collection, bob.address);
+ await enableAllowListExpectSuccess(alice, collection);
+ await enablePublicMintingExpectSuccess(alice, collection);
+ const targetToken = await createItemExpectSuccess(alice, collection, 'NFT');
+
+ // Try to create a nested token as collection admin when it's disallowed
+ await expect(executeTransaction(api, bob, api.tx.unique.createItem(
+ collection,
+ {Ethereum: tokenIdToAddress(collection, targetToken)},
+ {nft: {}} as any,
+ )), 'while creating nested token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
+
+ // Try to create and nest a token in the wrong collection
+ const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
+ await expect(executeTransaction(
+ api,
+ bob,
+ api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1),
+ ), 'while nesting new token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
+ expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});
+ });
+ });
+
+ it('Admin (NFT): disallows an Admin to nest and unnest someone else\'s token', async () => {
+ await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});
+
+ await addToAllowListExpectSuccess(alice, collection, bob.address);
+ await enableAllowListExpectSuccess(alice, collection);
+ await enablePublicMintingExpectSuccess(alice, collection);
+
+ // Create a token to attempt to be nested into
+ const targetToken = await createItemExpectSuccess(bob, collection, 'NFT');
+ const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()};
+
+ // Try to nest somebody else's token
+ const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.transfer(targetAddress, collection, newToken, 1),
+ ), 'while nesting another\'s token token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
+ expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});
+
+ // Nest a token as admin and try to unnest it, now belonging to someone else
+ const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', targetAddress);
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.transferFrom(targetAddress, normalizeAccountId(alice), collection, nestedToken, 1),
+ ), 'while unnesting another\'s token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
+ expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal(targetAddress);
+ expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: bob.address});
+ });
+ });
+
+ it('Admin (NFT): disallows an Admin to nest a token from an unlisted collection (Restricted nesting)', async () => {
+ await usingApi(async api => {
+ const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA]}});
+
+ // Create a token to attempt to be nested into
+ const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT');
+
+ // Try to create and nest a token in the wrong collection
+ const newToken = await createItemExpectSuccess(alice, collectionB, 'NFT');
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.transfer({Ethereum: tokenIdToAddress(collectionA, targetToken)}, collectionB, newToken, 1),
+ ), 'while nesting a foreign token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);
+ expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: alice.address});
+ });
+ });
+
// ---------- Non-Fungible ----------
it('NFT: disallows to nest token if nesting is disabled', async () => {
@@ -333,7 +518,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collection,
{Ethereum: tokenIdToAddress(collection, targetToken)},
- {nft: {const_data: [], variable_data: []}} as any,
+ {nft: {}} as any,
)), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
// Create a token to be nested
@@ -361,7 +546,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collection,
{Ethereum: tokenIdToAddress(collection, targetToken)},
- {nft: {const_data: [], variable_data: []}} as any,
+ {nft: {}} as any,
)), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
// Try to create and nest a token in the wrong collection
@@ -387,7 +572,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collection,
{Ethereum: tokenIdToAddress(collection, targetToken)},
- {nft: {const_data: [], variable_data: []}} as any,
+ {nft: {}} as any,
)), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
// Try to create and nest a token in the wrong collection
@@ -409,7 +594,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collection,
{Ethereum: tokenIdToAddress(collection, targetToken)},
- {nft: {const_data: [], variable_data: []}} as any,
+ {nft: {}} as any,
)), 'while creating nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);
// Try to create and nest a token in the wrong collection
@@ -543,7 +728,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collectionRFT,
targetAddress,
- {ReFungible: {const_data: [], pieces: 100}},
+ {ReFungible: {pieces: 100}},
)), 'while creating a nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
// Create a token to be nested
@@ -579,7 +764,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collectionRFT,
targetAddress,
- {ReFungible: {const_data: [], pieces: 100}},
+ {ReFungible: {pieces: 100}},
)), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
// Try to create and nest a token in the wrong collection
@@ -606,7 +791,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collectionRFT,
targetAddress,
- {ReFungible: {const_data: [], pieces: 100}},
+ {ReFungible: {pieces: 100}},
)), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
// Try to create and nest a token in the wrong collection
@@ -630,7 +815,7 @@
await expect(executeTransaction(api, alice, api.tx.unique.createItem(
collectionRFT,
targetAddress,
- {ReFungible: {const_data: [], pieces: 100}},
+ {ReFungible: {pieces: 100}},
)), 'while creating a nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);
// Try to create and nest a token in the wrong collection
tests/src/nesting/properties.test.tsdiffbeforeafterboth--- a/tests/src/nesting/properties.test.ts
+++ b/tests/src/nesting/properties.test.ts
@@ -38,7 +38,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collectionId, propertyPermissions),
+ api.tx.unique.setTokenPropertyPermissions(collectionId, propertyPermissions),
)).to.not.be.rejected;
const collectionProperties = [
@@ -106,6 +106,58 @@
});
});
+ it('Check valid names for collection properties keys', async () => {
+ await usingApi(async api => {
+ const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: 'NFT'}));
+ const {collectionId} = getCreateCollectionResult(events);
+
+ // alpha symbols
+ await expect(executeTransaction(
+ api,
+ bob,
+ api.tx.unique.setCollectionProperties(collectionId, [{key: 'alpha'}]),
+ )).to.not.be.rejected;
+
+ // numeric symbols
+ await expect(executeTransaction(
+ api,
+ bob,
+ api.tx.unique.setCollectionProperties(collectionId, [{key: '123'}]),
+ )).to.not.be.rejected;
+
+ // underscore symbol
+ await expect(executeTransaction(
+ api,
+ bob,
+ api.tx.unique.setCollectionProperties(collectionId, [{key: 'black_hole'}]),
+ )).to.not.be.rejected;
+
+ // dash symbol
+ await expect(executeTransaction(
+ api,
+ bob,
+ api.tx.unique.setCollectionProperties(collectionId, [{key: 'semi-automatic'}]),
+ )).to.not.be.rejected;
+
+ // underscore symbol
+ await expect(executeTransaction(
+ api,
+ bob,
+ api.tx.unique.setCollectionProperties(collectionId, [{key: 'build.rs'}]),
+ )).to.not.be.rejected;
+
+ const propertyKeys = ['alpha', '123', 'black_hole', 'semi-automatic', 'build.rs'];
+ const properties = (await api.rpc.unique.collectionProperties(collectionId, propertyKeys)).toHuman();
+ expect(properties).to.be.deep.equal([
+ {key: 'alpha', value: ''},
+ {key: '123', value: ''},
+ {key: 'black_hole', value: ''},
+ {key: 'semi-automatic', value: ''},
+ {key: 'build.rs', value: ''},
+ ]);
+ });
+ });
+
it('Changes properties of a collection', async () => {
await usingApi(async api => {
const collection = await createCollectionExpectSuccess();
@@ -241,7 +293,7 @@
const invalidProperties = [
[{key: 'electron', value: 'negative'}, {key: 'string theory', value: 'understandable'}],
- [{key: 'Mr.Sandman', value: 'Bring me a gene'}],
+ [{key: 'Mr/Sandman', value: 'Bring me a gene'}],
[{key: 'déjà vu', value: 'hmm...'}],
];
@@ -310,7 +362,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]),
)).to.not.be.rejected;
await addCollectionAdminExpectSuccess(alice, collection, bob.address);
@@ -318,7 +370,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]),
)).to.not.be.rejected;
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toHuman();
@@ -336,13 +388,13 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]),
)).to.not.be.rejected;
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
)).to.not.be.rejected;
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
@@ -368,7 +420,7 @@
await expect(executeTransaction(
api,
bob,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]),
)).to.be.rejectedWith(/common\.NoPermission/);
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();
@@ -391,7 +443,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, constitution),
+ api.tx.unique.setTokenPropertyPermissions(collection, constitution),
)).to.be.rejectedWith(/common\.PropertyLimitReached/);
const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();
@@ -406,13 +458,13 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
)).to.not.be.rejected;
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]),
)).to.be.rejectedWith(/common\.NoPermission/);
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
@@ -436,21 +488,21 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, invalidProperties[i]),
+ api.tx.unique.setTokenPropertyPermissions(collection, invalidProperties[i]),
), `on setting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);
}
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: '', permission: {}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: '', permission: {}}]),
), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);
const correctKey = '--0x03116e387820CA05'; // PolkadotJS would parse this as an already encoded hex-string
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [
+ api.tx.unique.setTokenPropertyPermissions(collection, [
{key: correctKey, permission: {collectionAdmin: true}},
]),
), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;
@@ -524,7 +576,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
await expect(executeTransaction(
@@ -560,7 +612,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
await expect(executeTransaction(
@@ -603,7 +655,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
await expect(executeTransaction(
@@ -669,7 +721,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]),
), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
await expect(executeTransaction(
@@ -746,7 +798,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]),
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]),
), 'on setting a new non-permitted property').to.not.be.rejected;
await expect(executeTransaction(
@@ -766,7 +818,7 @@
await expect(executeTransaction(
api,
alice,
- api.tx.unique.setPropertyPermissions(collection, [
+ api.tx.unique.setTokenPropertyPermissions(collection, [
{key: 'a_holy_book', permission: {collectionAdmin: true, tokenOwner: true}},
{key: 'young_years', permission: {collectionAdmin: true, tokenOwner: true}},
]),
tests/src/nesting/rules-smoke.test.tsdiffbeforeafterboth--- a/tests/src/nesting/rules-smoke.test.ts
+++ b/tests/src/nesting/rules-smoke.test.ts
@@ -27,11 +27,11 @@
await usingApi(async api => {
const collection = await createCollectionExpectSuccess({mode: {type: 'Fungible',decimalPoints:0}});
await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {Fungible: {Value: 1}})))
- .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
+ .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
await createFungibleItemExpectSuccess(alice, collection, {Value:1n}, {Substrate: alice.address});
await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, 0, 1n)))
- .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
+ .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
});
});
@@ -39,11 +39,11 @@
await usingApi(async api => {
const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {NFT: {properties: []}})))
- .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
+ .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
const token = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))
- .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
+ .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
});
});
@@ -51,11 +51,11 @@
await usingApi(async api => {
const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {}})))
- .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
+ .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
const token = await createItemExpectSuccess(alice, collection, 'ReFungible', {Substrate: alice.address});
await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))
- .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
+ .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
});
});
});
tests/src/pallet-presence.test.tsdiffbeforeafterboth--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -50,8 +50,6 @@
'unique',
'nonfungible',
'refungible',
- 'rmrkcore',
- 'rmrkequip',
'scheduler',
'charging',
];
@@ -64,6 +62,16 @@
];
describe('Pallet presence', () => {
+ before(async () => {
+ await usingApi(async api => {
+ const chain = await api.rpc.system.chain();
+
+ if (!chain.eq('UNIQUE')) {
+ requiredPallets.push(...['rmrkcore', 'rmrkequip']);
+ }
+ });
+ });
+
it('Required pallets are present', async () => {
await usingApi(async api => {
for (let i=0; i<requiredPallets.length; i++) {
tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth--- a/tests/src/removeCollectionAdmin.test.ts
+++ b/tests/src/removeCollectionAdmin.test.ts
@@ -118,11 +118,17 @@
const bob = privateKeyWrapper('//Bob');
const charlie = privateKeyWrapper('//Charlie');
+ const addBobAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ await submitTransactionAsync(alice, addBobAdminTx);
+ const addCharlieAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
+ await submitTransactionAsync(alice, addCharlieAdminTx);
+
const adminListAfterAddAdmin = await getAdminList(api, collectionId);
expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
+ expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));
const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
- await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;
+ await expect(submitTransactionExpectFailAsync(charlie, removeAdminTx)).to.be.rejected;
const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
tests/src/rmrk/rmrk.test.tsdiffbeforeafterboth--- a/tests/src/rmrk/rmrk.test.ts
+++ b/tests/src/rmrk/rmrk.test.ts
@@ -11,6 +11,7 @@
} from '../util/helpers';
import {IKeyringPair} from '@polkadot/types/types';
import {ApiPromise} from '@polkadot/api';
+import {it} from 'mocha';
let alice: IKeyringPair;
let bob: IKeyringPair;
@@ -38,6 +39,7 @@
null,
'nft-metadata',
true,
+ null,
);
const events = await executeTransaction(api, sender, tx);
const result = getGenericResult(events, 'rmrkCore', 'NftMinted', (data) => {
@@ -47,14 +49,26 @@
return result.data!;
}
-describe('RMRK External Integration Test', () => {
+async function isUnique(): Promise<boolean> {
+ return usingApi(async api => {
+ const chain = await api.rpc.system.chain();
+
+ return chain.eq('UNIQUE');
+ });
+}
+
+describe('RMRK External Integration Test', async () => {
+ const it_rmrk = (await isUnique() ? it : it.skip);
+
before(async () => {
await usingApi(async (api, privateKeyWrapper) => {
alice = privateKeyWrapper('//Alice');
+
+
});
});
- it('Creates a new RMRK collection that is mapped to a different ID and is tagged as external', async () => {
+ it_rmrk('Creates a new RMRK collection that is mapped to a different ID and is tagged as external', async () => {
await usingApi(async api => {
// throwaway collection to bump last Unique collection ID to test ID mapping
await createCollectionExpectSuccess();
@@ -69,11 +83,13 @@
});
});
-describe('Negative Integration Test: External Collections, Internal Ops', () => {
+describe('Negative Integration Test: External Collections, Internal Ops', async () => {
let uniqueCollectionId: number;
let rmrkCollectionId: number;
let rmrkNftId: number;
+ const it_rmrk = (await isUnique() ? it : it.skip);
+
before(async () => {
await usingApi(async (api, privateKeyWrapper) => {
alice = privateKeyWrapper('//Alice');
@@ -87,7 +103,7 @@
});
});
- it('[Negative] Forbids Unique operations with an external collection, handled by dispatch_call', async () => {
+ it_rmrk('[Negative] Forbids Unique operations with an external collection, handled by dispatch_call', async () => {
await usingApi(async api => {
// Collection item creation
@@ -113,8 +129,8 @@
await expect(executeTransaction(api, alice, txDeleteCollectionProperties), 'deleting collection properties')
.to.be.rejectedWith(/common\.CollectionIsExternal/);
- const txSetPropertyPermissions = api.tx.unique.setPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);
- await expect(executeTransaction(api, alice, txSetPropertyPermissions), 'setting property permissions')
+ const txsetTokenPropertyPermissions = api.tx.unique.setTokenPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);
+ await expect(executeTransaction(api, alice, txsetTokenPropertyPermissions), 'setting property permissions')
.to.be.rejectedWith(/common\.CollectionIsExternal/);
// NFT
@@ -146,7 +162,7 @@
});
});
- it('[Negative] Forbids Unique collection operations with an external collection', async () => {
+ it_rmrk('[Negative] Forbids Unique collection operations with an external collection', async () => {
await usingApi(async api => {
const txDestroyCollection = api.tx.unique.destroyCollection(uniqueCollectionId);
await expect(executeTransaction(api, alice, txDestroyCollection), 'destroying collection')
@@ -205,10 +221,12 @@
});
});
-describe('Negative Integration Test: Internal Collections, External Ops', () => {
+describe('Negative Integration Test: Internal Collections, External Ops', async () => {
let collectionId: number;
let nftId: number;
+ const it_rmrk = (await isUnique() ? it : it.skip);
+
before(async () => {
await usingApi(async (api, privateKeyWrapper) => {
alice = privateKeyWrapper('//Alice');
@@ -219,14 +237,15 @@
});
});
- it('[Negative] Forbids RMRK operations with the internal collection and NFT (due to the lack of mapping)', async () => {
+ it_rmrk('[Negative] Forbids RMRK operations with the internal collection and NFT (due to the lack of mapping)', async () => {
await usingApi(async api => {
const txChangeOwner = api.tx.rmrkCore.changeCollectionIssuer(collectionId, bob.address);
await expect(executeTransaction(api, alice, txChangeOwner), 'changing collection issuer')
.to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);
- const txBurnItem = api.tx.rmrkCore.burnNft(collectionId, nftId);
+ const maxBurns = 10;
+ const txBurnItem = api.tx.rmrkCore.burnNft(collectionId, nftId, maxBurns);
await expect(executeTransaction(api, alice, txBurnItem), 'burning NFT').to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);
});
});
-});
\ No newline at end of file
+});
tests/src/setCollectionLimits.test.tsdiffbeforeafterboth--- a/tests/src/setCollectionLimits.test.ts
+++ b/tests/src/setCollectionLimits.test.ts
@@ -46,6 +46,7 @@
before(async () => {
await usingApi(async (api, privateKeyWrapper) => {
alice = privateKeyWrapper('//Alice');
+ bob = privateKeyWrapper('//Bob');
collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
});
});
@@ -115,6 +116,21 @@
});
});
+ it('execute setCollectionLimits from admin collection', async () => {
+ await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);
+ await usingApi(async (api: ApiPromise) => {
+ tx = api.tx.unique.setCollectionLimits(
+ collectionIdForTesting,
+ {
+ accountTokenOwnershipLimit,
+ sponsoredDataSize,
+ // sponsoredMintSize,
+ tokenLimit,
+ },
+ );
+ await expect(submitTransactionAsync(bob, tx)).to.be.not.rejected;
+ });
+ });
});
describe('setCollectionLimits negative', () => {
@@ -143,21 +159,6 @@
});
});
it('execute setCollectionLimits from user who is not owner of this collection', async () => {
- await usingApi(async (api: ApiPromise) => {
- tx = api.tx.unique.setCollectionLimits(
- collectionIdForTesting,
- {
- accountTokenOwnershipLimit,
- sponsoredDataSize,
- // sponsoredMintSize,
- tokenLimit,
- },
- );
- await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
- });
- });
- it('execute setCollectionLimits from admin collection', async () => {
- await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);
await usingApi(async (api: ApiPromise) => {
tx = api.tx.unique.setCollectionLimits(
collectionIdForTesting,
tests/src/setCollectionSponsor.test.tsdiffbeforeafterboth--- a/tests/src/setCollectionSponsor.test.ts
+++ b/tests/src/setCollectionSponsor.test.ts
@@ -65,6 +65,11 @@
await setCollectionSponsorExpectSuccess(collectionId, bob.address);
await setCollectionSponsorExpectSuccess(collectionId, charlie.address);
});
+ it('Collection admin add sponsor', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+ await setCollectionSponsorExpectSuccess(collectionId, charlie.address, '//Bob');
+ });
});
describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {
@@ -93,10 +98,5 @@
const collectionId = await createCollectionExpectSuccess();
await destroyCollectionExpectSuccess(collectionId);
await setCollectionSponsorExpectFailure(collectionId, bob.address);
- });
- it('(!negative test!) Collection admin add sponsor', async () => {
- const collectionId = await createCollectionExpectSuccess();
- await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- await setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Bob');
});
});
tests/src/setMintPermission.test.tsdiffbeforeafterboth--- a/tests/src/setMintPermission.test.ts
+++ b/tests/src/setMintPermission.test.ts
@@ -67,6 +67,14 @@
await setMintPermissionExpectSuccess(alice, collectionId, false);
});
});
+
+ it('Collection admin success on set', async () => {
+ await usingApi(async () => {
+ const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+ await setMintPermissionExpectSuccess(bob, collectionId, true);
+ });
+ });
});
describe('Negative Integration Test setMintPermission', () => {
@@ -100,14 +108,6 @@
const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
await enableAllowListExpectSuccess(alice, collectionId);
await setMintPermissionExpectFailure(bob, collectionId, true);
- });
-
- it('Collection admin fails on set', async () => {
- await usingApi(async () => {
- const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
- await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- await setMintPermissionExpectFailure(bob, collectionId, true);
- });
});
it('ensure non-allow-listed non-privileged address can\'t mint tokens', async () => {
tests/src/setPublicAccessMode.test.tsdiffbeforeafterboth--- a/tests/src/setPublicAccessMode.test.ts
+++ b/tests/src/setPublicAccessMode.test.ts
@@ -103,22 +103,23 @@
await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
});
});
-});
-describe('Negative Integration Test ext. collection admin setPublicAccessMode(): ', () => {
- before(async () => {
- await usingApi(async (api, privateKeyWrapper) => {
- alice = privateKeyWrapper('//Alice');
- bob = privateKeyWrapper('//Bob');
- });
- });
it('setPublicAccessMode by collection admin', async () => {
await usingApi(async (api: ApiPromise) => {
// tslint:disable-next-line: no-bitwise
const collectionId = await createCollectionExpectSuccess();
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
const tx = api.tx.unique.setCollectionPermissions(collectionId, {access: 'AllowList'});
- await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
+ await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.not.rejected;
+ });
+ });
+});
+
+describe('Negative Integration Test ext. collection admin setPublicAccessMode(): ', () => {
+ before(async () => {
+ await usingApi(async (api, privateKeyWrapper) => {
+ alice = privateKeyWrapper('//Alice');
+ bob = privateKeyWrapper('//Bob');
});
});
});
tests/src/transferFrom.test.tsdiffbeforeafterboth--- a/tests/src/transferFrom.test.ts
+++ b/tests/src/transferFrom.test.ts
@@ -99,6 +99,7 @@
it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {
const collectionId = await createCollectionExpectSuccess();
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
await transferFromExpectSuccess(collectionId, itemId, alice, bob, charlie);
@@ -257,6 +258,7 @@
await usingApi(async () => {
// nft
const nftCollectionId = await createCollectionExpectSuccess();
+ await setCollectionLimitsExpectSuccess(alice, nftCollectionId, {ownerCanTransfer: true});
const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);
await approveExpectFail(nftCollectionId, newNftTokenId, alice, bob);
@@ -266,6 +268,7 @@
it('transferFrom burnt token before approve Fungible', async () => {
await usingApi(async () => {
const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+ await setCollectionLimitsExpectSuccess(alice, fungibleCollectionId, {ownerCanTransfer: true});
const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);
await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);
@@ -276,6 +279,7 @@
it('transferFrom burnt token before approve ReFungible', async () => {
await usingApi(async () => {
const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+ await setCollectionLimitsExpectSuccess(alice, reFungibleCollectionId, {ownerCanTransfer: true});
const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);
await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, alice, bob);
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -921,6 +921,18 @@
});
}
+export async function adminApproveFromExpectFail(
+ collectionId: number,
+ tokenId: number, admin: IKeyringPair, owner: CrossAccountId | string, approved: CrossAccountId | string, amount: number | bigint = 1,
+) {
+ await usingApi(async (api: ApiPromise) => {
+ const approveUniqueTx = api.tx.unique.approve(normalizeAccountId(approved), collectionId, tokenId, amount);
+ const events = await expect(submitTransactionAsync(admin, approveUniqueTx)).to.be.rejected;
+ const result = getGenericResult(events);
+ expect(result.success).to.be.false;
+ });
+}
+
export async function
getFreeBalance(account: IKeyringPair): Promise<bigint> {
let balance = 0n;
tests/update_types.shdiffbeforeafterboth--- a/tests/update_types.sh
+++ b/tests/update_types.sh
@@ -7,7 +7,7 @@
fi
rsync -ar --exclude .gitignore src/interfaces/ unique-types-js
-for file in unique-types-js/augment-* unique-types-js/**/types.ts unique-types-js/**/registry.ts; do
+for file in unique-types-js/augment-* unique-types-js/**/types.ts unique-types-js/registry.ts; do
sed -i '1s;^;//@ts-nocheck\n;' $file
done