difftreelog
createItem* fixes
in: master
43 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -396,7 +396,7 @@
"instant",
"pin-project-lite 0.2.9",
"rand 0.8.5",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
@@ -410,7 +410,7 @@
"cfg-if 1.0.0",
"libc",
"miniz_oxide",
- "object 0.28.3",
+ "object 0.28.4",
"rustc-demangle",
]
@@ -464,7 +464,7 @@
"futures-timer",
"hex",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sc-chain-spec",
"sc-client-api",
@@ -500,7 +500,7 @@
"jsonrpc-derive",
"jsonrpc-pubsub",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sc-rpc",
"sc-utils",
@@ -520,7 +520,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-api",
"sp-application-crypto",
@@ -571,14 +571,26 @@
[[package]]
name = "bitvec"
+version = "0.20.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848"
+dependencies = [
+ "funty 1.1.0",
+ "radium 0.6.2",
+ "tap",
+ "wyz 0.2.0",
+]
+
+[[package]]
+name = "bitvec"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016b"
dependencies = [
- "funty",
- "radium",
+ "funty 2.0.0",
+ "radium 0.7.0",
"tap",
- "wyz",
+ "wyz 0.5.0",
]
[[package]]
@@ -739,7 +751,7 @@
"bp-runtime",
"finality-grandpa",
"frame-support",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -755,7 +767,7 @@
dependencies = [
"bp-runtime",
"frame-support",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-std",
]
@@ -765,12 +777,12 @@
version = "0.1.0"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"bp-runtime",
"frame-support",
"frame-system",
"impl-trait-for-tuples",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -786,7 +798,7 @@
"bp-runtime",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-api",
"sp-core",
@@ -804,7 +816,7 @@
"bp-polkadot-core",
"bp-runtime",
"frame-support",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"smallvec",
"sp-api",
"sp-runtime",
@@ -820,7 +832,7 @@
"frame-support",
"hash-db",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -838,7 +850,7 @@
"bp-header-chain",
"ed25519-dalek",
"finality-grandpa",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-application-crypto",
"sp-finality-grandpa",
"sp-runtime",
@@ -854,7 +866,7 @@
"bp-polkadot-core",
"bp-rococo",
"bp-runtime",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api",
"sp-runtime",
"sp-std",
@@ -875,7 +887,7 @@
"pallet-bridge-grandpa",
"pallet-bridge-messages",
"pallet-transaction-payment",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-api",
"sp-core",
@@ -977,9 +989,9 @@
[[package]]
name = "camino"
-version = "1.0.7"
+version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f3132262930b0522068049f5870a856ab8affc80c70d08b6ecb785771a6fc23"
+checksum = "07fd178c5af4d59e83498ef15cf3f154e1a6f9d091270cb86283c65ef44e9ef0"
dependencies = [
"serde",
]
@@ -1111,9 +1123,9 @@
[[package]]
name = "clang-sys"
-version = "1.3.1"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cc00842eed744b858222c4c9faf7243aafc6d33f92f96935263ef4d8a41ce21"
+checksum = "bf6b561dcf059c85bbe388e0a7b0a1469acb3934cc0cfa148613a830629e3049"
dependencies = [
"glob",
"libc",
@@ -1122,9 +1134,9 @@
[[package]]
name = "clap"
-version = "3.1.16"
+version = "3.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f52d4f8e4a1419219935762e32913b4430f37cb0c0200ad17a89ee18c0188a9f"
+checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
dependencies = [
"atty",
"bitflags",
@@ -1139,9 +1151,9 @@
[[package]]
name = "clap_derive"
-version = "3.1.7"
+version = "3.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1"
+checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c"
dependencies = [
"heck 0.4.0",
"proc-macro-error",
@@ -1524,7 +1536,7 @@
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -1547,7 +1559,7 @@
"cumulus-client-consensus-common",
"cumulus-primitives-core",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-consensus",
"sc-consensus-aura",
@@ -1576,7 +1588,7 @@
"cumulus-relay-chain-interface",
"dyn-clone",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"sc-client-api",
"sc-consensus",
@@ -1598,7 +1610,7 @@
"derive_more",
"futures 0.3.21",
"futures-timer",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"polkadot-node-primitives",
"polkadot-parachain",
@@ -1622,7 +1634,7 @@
"cumulus-relay-chain-interface",
"futures 0.3.21",
"futures-timer",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-overseer",
@@ -1648,7 +1660,7 @@
"cumulus-client-pov-recovery",
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"polkadot-overseer",
"polkadot-primitives",
@@ -1676,7 +1688,7 @@
"frame-support",
"frame-system",
"pallet-aura",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-application-crypto",
@@ -1694,7 +1706,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -1717,7 +1729,7 @@
"impl-trait-for-tuples",
"log",
"pallet-balances",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
"scale-info",
"serde",
@@ -1752,7 +1764,7 @@
"cumulus-primitives-core",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-io",
@@ -1770,7 +1782,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rand_chacha 0.3.1",
"scale-info",
"sp-runtime",
@@ -1785,7 +1797,7 @@
source = "git+https://github.com/uniquenetwork/cumulus?branch=polkadot-v0.9.21#4ce5950ac3efbdbbf6c88c90e2a9ad4c7cb8d334"
dependencies = [
"frame-support",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-core-primitives",
"polkadot-parachain",
"polkadot-primitives",
@@ -1804,7 +1816,7 @@
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
"cumulus-test-relay-sproof-builder",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"scale-info",
"sp-api",
@@ -1825,7 +1837,7 @@
dependencies = [
"cumulus-primitives-core",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-inherents",
"sp-std",
"sp-timestamp",
@@ -1838,7 +1850,7 @@
dependencies = [
"cumulus-primitives-core",
"frame-support",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-core-primitives",
"polkadot-parachain",
"polkadot-primitives",
@@ -1886,7 +1898,7 @@
"derive_more",
"futures 0.3.21",
"jsonrpsee-core",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"polkadot-overseer",
"polkadot-service",
@@ -1912,7 +1924,7 @@
"futures 0.3.21",
"futures-timer",
"jsonrpsee",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"polkadot-service",
"sc-client-api",
@@ -1932,7 +1944,7 @@
source = "git+https://github.com/uniquenetwork/cumulus?branch=polkadot-v0.9.21#4ce5950ac3efbdbbf6c88c90e2a9ad4c7cb8d334"
dependencies = [
"cumulus-primitives-core",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"sp-runtime",
"sp-state-machine",
@@ -2147,7 +2159,7 @@
checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea"
dependencies = [
"byteorder",
- "quick-error 1.2.3",
+ "quick-error",
]
[[package]]
@@ -2202,9 +2214,9 @@
[[package]]
name = "ed25519"
-version = "1.4.1"
+version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d5c4b5e5959dc2c2b89918d8e2cc40fcdd623cef026ed09d2f0ee05199dc8e4"
+checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369"
dependencies = [
"signature",
]
@@ -2361,7 +2373,7 @@
"ethereum-types",
"hash-db",
"hash256-std-hasher",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rlp",
"rlp-derive",
"scale-info",
@@ -2404,7 +2416,7 @@
"evm-gasometer",
"evm-runtime",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"primitive-types",
"rlp",
"scale-info",
@@ -2443,7 +2455,7 @@
version = "0.35.0"
source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.19#1b170dc649f5e16a33134710a9fe2610e580661e"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"primitive-types",
"scale-info",
"serde",
@@ -2578,7 +2590,7 @@
dependencies = [
"fp-storage",
"kvdb-rocksdb",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sp-core",
"sp-database",
@@ -2622,7 +2634,7 @@
"libsecp256k1",
"log",
"lru 0.6.6",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rand 0.8.5",
"rlp",
"sc-client-api",
@@ -2638,7 +2650,7 @@
"sp-io",
"sp-runtime",
"sp-storage",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
@@ -2698,7 +2710,7 @@
"futures-timer",
"log",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.11.2",
"scale-info",
]
@@ -2761,7 +2773,7 @@
version = "3.0.0"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
]
[[package]]
@@ -2780,7 +2792,7 @@
source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.21-logs#79cd4c4cf29106c431facd6779783fc887b21475"
dependencies = [
"ethereum",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-core",
"sp-runtime",
"sp-std",
@@ -2793,7 +2805,7 @@
dependencies = [
"evm",
"impl-trait-for-tuples",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"serde",
"sp-core",
"sp-std",
@@ -2816,7 +2828,7 @@
"ethereum",
"ethereum-types",
"fp-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-api",
"sp-core",
@@ -2832,7 +2844,7 @@
dependencies = [
"ethereum",
"frame-support",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"scale-info",
"serde",
@@ -2846,7 +2858,7 @@
version = "2.0.0"
source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.21-logs#79cd4c4cf29106c431facd6779783fc887b21475"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
]
[[package]]
@@ -2858,7 +2870,7 @@
"frame-system",
"linregress",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"paste",
"scale-info",
"serde",
@@ -2890,7 +2902,7 @@
"linked-hash-map",
"log",
"memory-db",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"prettytable-rs",
"rand 0.8.5",
"rand_pcg 0.3.1",
@@ -2938,7 +2950,7 @@
"frame-election-provider-solution-type",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-arithmetic",
"sp-npos-elections",
@@ -2953,7 +2965,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -2969,7 +2981,7 @@
checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"
dependencies = [
"cfg-if 1.0.0",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
]
@@ -2985,7 +2997,7 @@
"impl-trait-for-tuples",
"log",
"once_cell",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"paste",
"scale-info",
"serde",
@@ -3044,7 +3056,7 @@
dependencies = [
"frame-support",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -3062,7 +3074,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-runtime",
@@ -3074,7 +3086,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api",
]
@@ -3141,6 +3153,12 @@
[[package]]
name = "funty"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
+
+[[package]]
+name = "funty"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
@@ -3394,23 +3412,23 @@
"http",
"indexmap",
"slab",
- "tokio 1.18.1",
- "tokio-util 0.7.1",
+ "tokio 1.18.2",
+ "tokio-util 0.7.2",
"tracing",
]
[[package]]
name = "handlebars"
-version = "4.2.2"
+version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99d6a30320f094710245150395bc763ad23128d6a1ebbad7594dc4164b62c56b"
+checksum = "d113a9853e5accd30f43003560b5563ffbb007e3f325e8b103fa0d0029c6e6df"
dependencies = [
"log",
"pest",
"pest_derive",
- "quick-error 2.0.1",
"serde",
"serde_json",
+ "thiserror",
]
[[package]]
@@ -3538,7 +3556,7 @@
dependencies = [
"bytes 1.1.0",
"fnv",
- "itoa 1.0.1",
+ "itoa 1.0.2",
]
[[package]]
@@ -3585,10 +3603,10 @@
"http-body",
"httparse",
"httpdate",
- "itoa 1.0.1",
+ "itoa 1.0.2",
"pin-project-lite 0.2.9",
"socket2 0.4.4",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tower-service",
"tracing",
"want",
@@ -3606,7 +3624,7 @@
"log",
"rustls 0.19.1",
"rustls-native-certs 0.5.0",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tokio-rustls 0.22.0",
"webpki 0.21.4",
]
@@ -3620,9 +3638,9 @@
"http",
"hyper",
"log",
- "rustls 0.20.4",
+ "rustls 0.20.6",
"rustls-native-certs 0.6.2",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tokio-rustls 0.23.4",
"webpki-roots 0.22.3",
]
@@ -3698,7 +3716,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
]
[[package]]
@@ -3821,9 +3839,9 @@
[[package]]
name = "itoa"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
+checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
[[package]]
name = "jobserver"
@@ -3954,9 +3972,9 @@
"jsonrpc-core",
"lazy_static",
"log",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tokio-stream",
- "tokio-util 0.6.9",
+ "tokio-util 0.6.10",
"unicase",
]
@@ -4002,9 +4020,9 @@
"rustls-native-certs 0.6.2",
"soketto",
"thiserror",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tokio-rustls 0.23.4",
- "tokio-util 0.7.1",
+ "tokio-util 0.7.2",
"tracing",
"webpki-roots 0.22.3",
]
@@ -4028,7 +4046,7 @@
"serde_json",
"soketto",
"thiserror",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tracing",
]
@@ -4047,7 +4065,7 @@
"serde",
"serde_json",
"thiserror",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tracing",
]
@@ -4122,7 +4140,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"beefy-primitives",
- "bitvec",
+ "bitvec 1.0.0",
"frame-benchmarking",
"frame-election-provider-support",
"frame-executive",
@@ -4174,7 +4192,7 @@
"pallet-vesting",
"pallet-xcm",
"pallet-xcm-benchmarks",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"polkadot-runtime-common",
"polkadot-runtime-parachains",
@@ -4281,9 +4299,9 @@
[[package]]
name = "libc"
-version = "0.2.125"
+version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "libloading"
@@ -5126,7 +5144,7 @@
"kernel32-sys",
"libc",
"log",
- "miow 0.2.2",
+ "miow",
"net2",
"slab",
"winapi 0.2.8",
@@ -5134,16 +5152,14 @@
[[package]]
name = "mio"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9"
+checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799"
dependencies = [
"libc",
"log",
- "miow 0.3.7",
- "ntapi",
"wasi 0.11.0+wasi-snapshot-preview1",
- "winapi 0.3.9",
+ "windows-sys",
]
[[package]]
@@ -5168,15 +5184,6 @@
"net2",
"winapi 0.2.8",
"ws2_32-sys",
-]
-
-[[package]]
-name = "miow"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
-dependencies = [
- "winapi 0.3.9",
]
[[package]]
@@ -5353,15 +5360,6 @@
dependencies = [
"memchr",
"minimal-lexical",
-]
-
-[[package]]
-name = "ntapi"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
-dependencies = [
- "winapi 0.3.9",
]
[[package]]
@@ -5460,9 +5458,9 @@
[[package]]
name = "object"
-version = "0.28.3"
+version = "0.28.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40bec70ba014595f99f7aa110b84331ffe1ee9aece7fe6f387cc7e3ecda4d456"
+checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424"
dependencies = [
"memchr",
]
@@ -5525,8 +5523,9 @@
"pallet-unq-scheduler",
"pallet-xcm",
"parachain-info",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
+ "rmrk-rpc",
"scale-info",
"serde",
"smallvec",
@@ -5609,7 +5608,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-io",
@@ -5619,9 +5618,9 @@
[[package]]
name = "os_str_bytes"
-version = "6.0.0"
+version = "6.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64"
+checksum = "029d8d0b2f198229de29dca79676f2738ff952edf3fde542eb8bf94d8c21b435"
[[package]]
name = "owning_ref"
@@ -5640,7 +5639,7 @@
"frame-support",
"frame-system",
"pallet-timestamp",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-application-crypto",
"sp-consensus-aura",
@@ -5656,7 +5655,7 @@
"frame-support",
"frame-system",
"pallet-session",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-application-crypto",
"sp-authority-discovery",
@@ -5672,7 +5671,7 @@
"frame-support",
"frame-system",
"impl-trait-for-tuples",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-authorship",
"sp-runtime",
@@ -5691,7 +5690,7 @@
"pallet-authorship",
"pallet-session",
"pallet-timestamp",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-application-crypto",
"sp-consensus-babe",
@@ -5714,7 +5713,7 @@
"frame-system",
"log",
"pallet-balances",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -5732,7 +5731,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-runtime",
"sp-std",
@@ -5746,7 +5745,7 @@
"fp-evm",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -5762,7 +5761,7 @@
"frame-support",
"frame-system",
"pallet-session",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-runtime",
@@ -5784,7 +5783,7 @@
"pallet-beefy",
"pallet-mmr",
"pallet-session",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -5803,7 +5802,7 @@
"frame-system",
"log",
"pallet-treasury",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -5821,7 +5820,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-runtime",
@@ -5841,7 +5840,7 @@
"frame-system",
"log",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-finality-grandpa",
@@ -5855,7 +5854,7 @@
version = "0.1.0"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"bp-message-dispatch",
"bp-messages",
"bp-runtime",
@@ -5863,7 +5862,7 @@
"frame-system",
"log",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -5882,7 +5881,7 @@
"log",
"pallet-bounties",
"pallet-treasury",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -5899,7 +5898,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -5917,7 +5916,8 @@
"frame-system",
"pallet-evm",
"pallet-evm-coder-substrate",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
+ "rmrk-types",
"scale-info",
"serde",
"sp-core",
@@ -5934,7 +5934,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-io",
@@ -5952,7 +5952,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rand 0.7.3",
"scale-info",
"sp-arithmetic",
@@ -5973,7 +5973,7 @@
"frame-benchmarking",
"frame-election-provider-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-npos-elections",
"sp-runtime",
]
@@ -5987,7 +5987,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6016,7 +6016,7 @@
"pallet-balances",
"pallet-evm",
"pallet-timestamp",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rlp",
"scale-info",
"serde",
@@ -6042,7 +6042,7 @@
"log",
"pallet-balances",
"pallet-timestamp",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"primitive-types",
"rlp",
"scale-info",
@@ -6065,7 +6065,7 @@
"frame-system",
"pallet-ethereum",
"pallet-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-std",
@@ -6083,7 +6083,7 @@
"log",
"pallet-evm",
"pallet-evm-coder-substrate",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-runtime",
@@ -6100,7 +6100,7 @@
"frame-support",
"frame-system",
"pallet-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6118,7 +6118,7 @@
"frame-system",
"pallet-ethereum",
"pallet-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6140,7 +6140,7 @@
"pallet-evm",
"pallet-evm-coder-substrate",
"pallet-structure",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-runtime",
@@ -6156,7 +6156,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-arithmetic",
"sp-runtime",
@@ -6174,7 +6174,7 @@
"log",
"pallet-authorship",
"pallet-session",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-application-crypto",
"sp-core",
@@ -6195,7 +6195,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6212,7 +6212,7 @@
"frame-system",
"log",
"pallet-authorship",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-application-crypto",
"sp-core",
@@ -6230,7 +6230,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6249,7 +6249,7 @@
"pallet-balances",
"pallet-randomness-collective-flip",
"pallet-timestamp",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -6267,7 +6267,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6284,7 +6284,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6301,7 +6301,7 @@
"jsonrpc-core",
"jsonrpc-core-client",
"jsonrpc-derive",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"serde",
"sp-api",
"sp-blockchain",
@@ -6318,7 +6318,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6332,7 +6332,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6346,7 +6346,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-runtime",
@@ -6366,7 +6366,7 @@
"pallet-bags-list",
"pallet-nomination-pools",
"pallet-staking",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-runtime",
"sp-staking",
@@ -6386,11 +6386,12 @@
"pallet-evm",
"pallet-evm-coder-substrate",
"pallet-structure",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-runtime",
"sp-std",
+ "struct-versioning",
"up-data-structs",
]
@@ -6403,7 +6404,7 @@
"frame-system",
"log",
"pallet-balances",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-runtime",
@@ -6427,7 +6428,7 @@
"pallet-offences",
"pallet-session",
"pallet-staking",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-runtime",
"sp-staking",
@@ -6442,7 +6443,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6458,7 +6459,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6472,7 +6473,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"safe-mix",
"scale-info",
"sp-runtime",
@@ -6486,7 +6487,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6503,11 +6504,12 @@
"pallet-common",
"pallet-evm",
"pallet-structure",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-runtime",
"sp-std",
+ "struct-versioning",
"up-data-structs",
]
@@ -6520,7 +6522,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6537,7 +6539,7 @@
"impl-trait-for-tuples",
"log",
"pallet-timestamp",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6571,7 +6573,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rand_chacha 0.2.2",
"scale-info",
"sp-runtime",
@@ -6590,7 +6592,7 @@
"log",
"pallet-authorship",
"pallet-session",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rand_chacha 0.2.2",
"scale-info",
"serde",
@@ -6629,7 +6631,7 @@
"frame-support",
"frame-system",
"pallet-common",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-std",
"up-data-structs",
@@ -6642,7 +6644,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-io",
"sp-runtime",
@@ -6659,7 +6661,7 @@
"frame-system",
"pallet-balances",
"pallet-transaction-payment",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -6678,7 +6680,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-inherents",
"sp-io",
@@ -6697,7 +6699,7 @@
"frame-system",
"log",
"pallet-treasury",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -6713,7 +6715,7 @@
dependencies = [
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"smallvec",
@@ -6732,7 +6734,7 @@
"jsonrpc-core-client",
"jsonrpc-derive",
"pallet-transaction-payment-rpc-runtime-api",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api",
"sp-blockchain",
"sp-core",
@@ -6746,7 +6748,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"pallet-transaction-payment",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api",
"sp-runtime",
]
@@ -6761,7 +6763,7 @@
"frame-system",
"impl-trait-for-tuples",
"pallet-balances",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-runtime",
@@ -6777,7 +6779,7 @@
"frame-system",
"pallet-common",
"pallet-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6794,7 +6796,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -6813,7 +6815,7 @@
"frame-benchmarking",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -6830,7 +6832,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-runtime",
"sp-std",
@@ -6844,7 +6846,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -6863,7 +6865,7 @@
"frame-support",
"frame-system",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-runtime",
"sp-std",
@@ -6879,16 +6881,16 @@
"cumulus-primitives-core",
"frame-support",
"frame-system",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
]
[[package]]
name = "parity-db"
-version = "0.3.12"
+version = "0.3.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e73cd0b0a78045276b19eaae8eaaa20e44a1da9a0217ff934a810d9492ae701"
+checksum = "55a7901b85874402471e131de3332dde0e51f38432c69a3853627c8e25433048"
dependencies = [
"blake2-rfc",
"crc32fast",
@@ -6905,20 +6907,46 @@
[[package]]
name = "parity-scale-codec"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909"
+dependencies = [
+ "arrayvec 0.7.2",
+ "bitvec 0.20.4",
+ "byte-slice-cast",
+ "impl-trait-for-tuples",
+ "parity-scale-codec-derive 2.3.1",
+ "serde",
+]
+
+[[package]]
+name = "parity-scale-codec"
version = "3.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066"
dependencies = [
"arrayvec 0.7.2",
- "bitvec",
+ "bitvec 1.0.0",
"byte-slice-cast",
"impl-trait-for-tuples",
- "parity-scale-codec-derive",
+ "parity-scale-codec-derive 3.1.2",
"serde",
]
[[package]]
name = "parity-scale-codec-derive"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27"
+dependencies = [
+ "proc-macro-crate 1.1.3",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "parity-scale-codec-derive"
version = "3.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8"
@@ -6945,7 +6973,7 @@
"libc",
"log",
"rand 0.7.3",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"winapi 0.3.9",
]
@@ -7278,7 +7306,7 @@
"fatality",
"futures 0.3.21",
"lru 0.7.5",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -7300,7 +7328,7 @@
"fatality",
"futures 0.3.21",
"lru 0.7.5",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -7403,7 +7431,7 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"scale-info",
"sp-core",
@@ -7420,7 +7448,7 @@
"fatality",
"futures 0.3.21",
"lru 0.7.5",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -7439,7 +7467,7 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-primitives",
"polkadot-primitives",
"reed-solomon-novelpoly",
@@ -7475,7 +7503,7 @@
dependencies = [
"async-trait",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"polkadot-node-network-protocol",
"polkadot-node-subsystem",
@@ -7493,7 +7521,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-erasure-coding",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7510,14 +7538,14 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"derive_more",
"futures 0.3.21",
"futures-timer",
"kvdb",
"lru 0.7.5",
"merlin",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-jaeger",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7539,11 +7567,11 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"futures 0.3.21",
"futures-timer",
"kvdb",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-erasure-coding",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7559,7 +7587,7 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"futures 0.3.21",
"polkadot-erasure-coding",
"polkadot-node-primitives",
@@ -7594,7 +7622,7 @@
dependencies = [
"async-trait",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-core-pvf",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7628,7 +7656,7 @@
"futures 0.3.21",
"futures-timer",
"kvdb",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-node-subsystem-util",
@@ -7646,7 +7674,7 @@
"futures 0.3.21",
"kvdb",
"lru 0.7.5",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-node-subsystem-util",
@@ -7678,7 +7706,7 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"futures 0.3.21",
"futures-timer",
"polkadot-node-primitives",
@@ -7701,7 +7729,7 @@
"async-std",
"futures 0.3.21",
"futures-timer",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"pin-project 1.0.10",
"polkadot-core-primitives",
"polkadot-node-subsystem-util",
@@ -7763,7 +7791,7 @@
"lazy_static",
"log",
"mick-jaeger",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"polkadot-node-primitives",
"polkadot-primitives",
@@ -7782,7 +7810,7 @@
"futures-timer",
"log",
"metered-channel",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"sc-cli",
"sc-service",
@@ -7799,7 +7827,7 @@
"async-trait",
"fatality",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-jaeger",
"polkadot-node-primitives",
"polkadot-primitives",
@@ -7816,7 +7844,7 @@
dependencies = [
"bounded-vec",
"futures 0.3.21",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
"polkadot-primitives",
"schnorrkel",
@@ -7874,7 +7902,7 @@
"lru 0.7.5",
"metered-channel",
"parity-db",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"parking_lot 0.11.2",
"pin-project 1.0.10",
@@ -7950,7 +7978,7 @@
dependencies = [
"derive_more",
"frame-support",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"polkadot-core-primitives",
"scale-info",
@@ -7980,10 +8008,10 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"frame-system",
"hex-literal",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"polkadot-core-primitives",
"polkadot-parachain",
@@ -8043,7 +8071,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"beefy-primitives",
- "bitvec",
+ "bitvec 1.0.0",
"frame-benchmarking",
"frame-election-provider-support",
"frame-executive",
@@ -8090,7 +8118,7 @@
"pallet-utility",
"pallet-vesting",
"pallet-xcm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"polkadot-runtime-common",
"polkadot-runtime-constants",
@@ -8129,7 +8157,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"beefy-primitives",
- "bitvec",
+ "bitvec 1.0.0",
"frame-benchmarking",
"frame-election-provider-support",
"frame-support",
@@ -8149,7 +8177,7 @@
"pallet-transaction-payment",
"pallet-treasury",
"pallet-vesting",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"polkadot-runtime-parachains",
"rustc-hex",
@@ -8188,7 +8216,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"bs58",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"sp-std",
"sp-tracing",
@@ -8200,7 +8228,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"bitflags",
- "bitvec",
+ "bitvec 1.0.0",
"derive_more",
"frame-benchmarking",
"frame-support",
@@ -8214,7 +8242,7 @@
"pallet-staking",
"pallet-timestamp",
"pallet-vesting",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"polkadot-runtime-metrics",
"rand 0.8.5",
@@ -8346,7 +8374,7 @@
"fatality",
"futures 0.3.21",
"indexmap",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -8363,7 +8391,7 @@
version = "0.9.21"
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-primitives",
"sp-core",
]
@@ -8374,7 +8402,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"beefy-primitives",
- "bitvec",
+ "bitvec 1.0.0",
"frame-election-provider-support",
"frame-executive",
"frame-support",
@@ -8398,7 +8426,7 @@
"pallet-transaction-payment-rpc-runtime-api",
"pallet-vesting",
"pallet-xcm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
"polkadot-primitives",
"polkadot-runtime-common",
@@ -8480,7 +8508,7 @@
"substrate-test-client",
"tempfile",
"test-runtime-constants",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tracing-gum",
]
@@ -8599,24 +8627,24 @@
[[package]]
name = "proc-macro2"
-version = "1.0.38"
+version = "1.0.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa"
+checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
dependencies = [
- "unicode-xid",
+ "unicode-ident",
]
[[package]]
name = "prometheus"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504"
+checksum = "cface98dfa6d645ea4c789839f176e4b072265d085bfcc48eaa8d137f58d3c39"
dependencies = [
"cfg-if 1.0.0",
"fnv",
"lazy_static",
"memchr",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
"thiserror",
]
@@ -8731,8 +8759,9 @@
"pallet-unq-scheduler",
"pallet-xcm",
"parachain-info",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
+ "rmrk-rpc",
"scale-info",
"serde",
"smallvec",
@@ -8763,12 +8792,6 @@
version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
-
-[[package]]
-name = "quick-error"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]]
name = "quicksink"
@@ -8792,6 +8815,12 @@
[[package]]
name = "radium"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb"
+
+[[package]]
+name = "radium"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
@@ -8904,9 +8933,9 @@
[[package]]
name = "rayon"
-version = "1.5.2"
+version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
dependencies = [
"autocfg",
"crossbeam-deque",
@@ -8916,9 +8945,9 @@
[[package]]
name = "rayon-core"
-version = "1.9.2"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
@@ -9053,7 +9082,7 @@
"env_logger",
"jsonrpsee",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"serde",
"serde_json",
"sp-core",
@@ -9078,7 +9107,7 @@
checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00"
dependencies = [
"hostname",
- "quick-error 1.2.3",
+ "quick-error",
]
[[package]]
@@ -9124,6 +9153,30 @@
]
[[package]]
+name = "rmrk-rpc"
+version = "0.0.1"
+source = "git+https://github.com/UniqueNetwork/rmrk-substrate.git?branch=feature/separate-types-and-traits#01c2995b64c34063a1c9fc4d856635022cea4f78"
+dependencies = [
+ "parity-scale-codec 2.3.1",
+ "rmrk-types",
+ "serde",
+ "sp-api",
+ "sp-core",
+ "sp-runtime",
+ "sp-std",
+]
+
+[[package]]
+name = "rmrk-types"
+version = "0.0.1"
+source = "git+https://github.com/UniqueNetwork/rmrk-substrate.git?branch=feature/separate-types-and-traits#01c2995b64c34063a1c9fc4d856635022cea4f78"
+dependencies = [
+ "parity-scale-codec 3.1.2",
+ "scale-info",
+ "serde",
+]
+
+[[package]]
name = "rocksdb"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -9179,7 +9232,7 @@
"pallet-transaction-payment-rpc-runtime-api",
"pallet-utility",
"pallet-xcm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
"polkadot-primitives",
"polkadot-runtime-common",
@@ -9318,9 +9371,9 @@
[[package]]
name = "rustls"
-version = "0.20.4"
+version = "0.20.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fbfeb8d0ddb84706bc597a5574ab8912817c52a397f819e5b614e2265206921"
+checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033"
dependencies = [
"log",
"ring",
@@ -9380,9 +9433,9 @@
[[package]]
name = "ryu"
-version = "1.0.9"
+version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
+checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
[[package]]
name = "safe-mix"
@@ -9433,7 +9486,7 @@
"ip_network",
"libp2p",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"prost",
"prost-build",
"rand 0.7.3",
@@ -9457,7 +9510,7 @@
"futures 0.3.21",
"futures-timer",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-block-builder",
"sc-client-api",
"sc-proposer-metrics",
@@ -9477,7 +9530,7 @@
version = "0.10.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sp-api",
"sp-block-builder",
@@ -9495,7 +9548,7 @@
dependencies = [
"impl-trait-for-tuples",
"memmap2 0.5.3",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-chain-spec-derive",
"sc-network",
"sc-telemetry",
@@ -9529,7 +9582,7 @@
"libp2p",
"log",
"names",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"rand 0.7.3",
"regex",
"rpassword",
@@ -9551,7 +9604,7 @@
"sp-version",
"thiserror",
"tiny-bip39",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
@@ -9563,7 +9616,7 @@
"futures 0.3.21",
"hash-db",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sc-executor",
"sc-transaction-pool-api",
@@ -9594,7 +9647,7 @@
"linked-hash-map",
"log",
"parity-db",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sc-client-api",
"sc-state-db",
@@ -9639,7 +9692,7 @@
"async-trait",
"futures 0.3.21",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-block-builder",
"sc-client-api",
"sc-consensus",
@@ -9673,7 +9726,7 @@
"num-bigint",
"num-rational 0.2.4",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"rand 0.7.3",
"retain_mut",
@@ -9733,7 +9786,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"fork-tree",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-consensus",
"sp-blockchain",
@@ -9752,7 +9805,7 @@
"jsonrpc-core-client",
"jsonrpc-derive",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-consensus",
"sc-consensus-aura",
@@ -9785,7 +9838,7 @@
"futures 0.3.21",
"futures-timer",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-consensus",
"sc-telemetry",
@@ -9819,7 +9872,7 @@
dependencies = [
"lazy_static",
"lru 0.7.5",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sc-executor-common",
"sc-executor-wasmi",
@@ -9845,7 +9898,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"environmental",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-allocator",
"sp-core",
"sp-maybe-compressed-blob",
@@ -9862,7 +9915,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-allocator",
"sc-executor-common",
"scoped-tls",
@@ -9880,7 +9933,7 @@
"cfg-if 1.0.0",
"libc",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-wasm 0.42.2",
"sc-allocator",
"sc-executor-common",
@@ -9904,7 +9957,7 @@
"futures-timer",
"hex",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"rand 0.8.5",
"sc-block-builder",
@@ -9942,7 +9995,7 @@
"jsonrpc-derive",
"jsonrpc-pubsub",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-finality-grandpa",
"sc-rpc",
@@ -10008,7 +10061,7 @@
"linked_hash_set",
"log",
"lru 0.7.5",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"pin-project 1.0.10",
"prost",
@@ -10066,7 +10119,7 @@
"hyper-rustls 0.22.1",
"num_cpus",
"once_cell",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"rand 0.7.3",
"sc-client-api",
@@ -10112,7 +10165,7 @@
"jsonrpc-core",
"jsonrpc-pubsub",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sc-block-builder",
"sc-chain-spec",
@@ -10144,7 +10197,7 @@
"jsonrpc-derive",
"jsonrpc-pubsub",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sc-chain-spec",
"sc-transaction-pool-api",
@@ -10173,7 +10226,7 @@
"log",
"serde_json",
"substrate-prometheus-endpoint",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
@@ -10190,7 +10243,7 @@
"jsonrpc-core",
"jsonrpc-pubsub",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"parking_lot 0.12.0",
"pin-project 1.0.10",
@@ -10236,7 +10289,7 @@
"substrate-prometheus-endpoint",
"tempfile",
"thiserror",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tracing",
"tracing-futures",
]
@@ -10247,7 +10300,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"parity-util-mem-derive",
"parking_lot 0.12.0",
@@ -10263,7 +10316,7 @@
"jsonrpc-core",
"jsonrpc-core-client",
"jsonrpc-derive",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-chain-spec",
"sc-client-api",
"sc-consensus-babe",
@@ -10364,7 +10417,7 @@
"futures-timer",
"linked-hash-map",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"parking_lot 0.12.0",
"retain_mut",
@@ -10410,23 +10463,23 @@
[[package]]
name = "scale-info"
-version = "2.1.1"
+version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8980cafbe98a7ee7a9cc16b32ebce542c77883f512d83fbf2ddc8f6a85ea74c9"
+checksum = "c46be926081c9f4dd5dd9b6f1d3e3229f2360bc6502dd8836f84a93b7c75e99a"
dependencies = [
- "bitvec",
+ "bitvec 1.0.0",
"cfg-if 1.0.0",
"derive_more",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info-derive",
"serde",
]
[[package]]
name = "scale-info-derive"
-version = "2.1.1"
+version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4260c630e8a8a33429d1688eff2f163f24c65a4e1b1578ef6b565061336e4b6f"
+checksum = "50e334bb10a245e28e5fd755cabcafd96cfcd167c99ae63a46924ca8d8703a3c"
dependencies = [
"proc-macro-crate 1.1.3",
"proc-macro2",
@@ -10436,12 +10489,12 @@
[[package]]
name = "schannel"
-version = "0.1.19"
+version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
+checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
dependencies = [
"lazy_static",
- "winapi 0.3.9",
+ "windows-sys",
]
[[package]]
@@ -10634,7 +10687,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c"
dependencies = [
- "itoa 1.0.1",
+ "itoa 1.0.2",
"ryu",
"serde",
]
@@ -10748,9 +10801,9 @@
[[package]]
name = "signal-hook"
-version = "0.3.13"
+version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d"
+checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d"
dependencies = [
"libc",
"signal-hook-registry",
@@ -10798,7 +10851,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"enumn",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"paste",
"sp-runtime",
"sp-std",
@@ -10887,7 +10940,7 @@
dependencies = [
"hash-db",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api-proc-macro",
"sp-core",
"sp-runtime",
@@ -10914,7 +10967,7 @@
version = "6.0.0"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-core",
@@ -10929,7 +10982,7 @@
dependencies = [
"integer-sqrt",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-debug-derive",
@@ -10942,7 +10995,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-api",
"sp-application-crypto",
@@ -10956,7 +11009,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"async-trait",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-inherents",
"sp-runtime",
"sp-std",
@@ -10967,7 +11020,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api",
"sp-inherents",
"sp-runtime",
@@ -10982,7 +11035,7 @@
"futures 0.3.21",
"log",
"lru 0.7.5",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"sp-api",
"sp-consensus",
@@ -11001,7 +11054,7 @@
"futures 0.3.21",
"futures-timer",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-core",
"sp-inherents",
"sp-runtime",
@@ -11017,7 +11070,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"async-trait",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-api",
"sp-application-crypto",
@@ -11036,7 +11089,7 @@
dependencies = [
"async-trait",
"merlin",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-api",
@@ -11057,7 +11110,7 @@
version = "0.10.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-arithmetic",
@@ -11071,7 +11124,7 @@
version = "0.10.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"schnorrkel",
"sp-core",
"sp-runtime",
@@ -11099,7 +11152,7 @@
"log",
"merlin",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"parking_lot 0.12.0",
"primitive-types",
@@ -11174,7 +11227,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"environmental",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-std",
"sp-storage",
]
@@ -11186,7 +11239,7 @@
dependencies = [
"finality-grandpa",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-api",
@@ -11204,7 +11257,7 @@
dependencies = [
"async-trait",
"impl-trait-for-tuples",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-core",
"sp-runtime",
"sp-std",
@@ -11220,7 +11273,7 @@
"hash-db",
"libsecp256k1",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"secp256k1",
"sp-core",
@@ -11255,7 +11308,7 @@
"async-trait",
"futures 0.3.21",
"merlin",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"schnorrkel",
"serde",
@@ -11279,7 +11332,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"serde",
"sp-api",
"sp-core",
@@ -11293,7 +11346,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"serde",
"sp-arithmetic",
@@ -11341,7 +11394,7 @@
"hash256-std-hasher",
"impl-trait-for-tuples",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-util-mem",
"paste",
"rand 0.7.3",
@@ -11360,7 +11413,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"impl-trait-for-tuples",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"primitive-types",
"sp-externalities",
"sp-runtime-interface-proc-macro",
@@ -11397,7 +11450,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-api",
"sp-core",
@@ -11411,7 +11464,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-runtime",
"sp-std",
@@ -11425,7 +11478,7 @@
"hash-db",
"log",
"num-traits",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.12.0",
"rand 0.7.3",
"smallvec",
@@ -11450,7 +11503,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"impl-serde",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"ref-cast",
"serde",
"sp-debug-derive",
@@ -11478,7 +11531,7 @@
"async-trait",
"futures-timer",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api",
"sp-inherents",
"sp-runtime",
@@ -11491,7 +11544,7 @@
version = "5.0.0"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-std",
"tracing",
"tracing-core",
@@ -11514,7 +11567,7 @@
dependencies = [
"async-trait",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-inherents",
@@ -11530,7 +11583,7 @@
dependencies = [
"hash-db",
"memory-db",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-std",
@@ -11545,7 +11598,7 @@
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
"impl-serde",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parity-wasm 0.42.2",
"scale-info",
"serde",
@@ -11561,7 +11614,7 @@
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.21#563f4820d8f36d256ada7ea3fef46b2e94c4cd5a"
dependencies = [
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"proc-macro2",
"quote",
"syn",
@@ -11574,7 +11627,7 @@
dependencies = [
"impl-trait-for-tuples",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-std",
"wasmi",
"wasmtime",
@@ -11598,9 +11651,9 @@
[[package]]
name = "ss58-registry"
-version = "1.17.0"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b84a70894df7a73666e0694f44b41a9571625e9546fb58a0818a565d2c7e084"
+checksum = "ceb8b72a924ccfe7882d0e26144c114503760a4d1248bb5cd06c8ab2d55404cc"
dependencies = [
"Inflector",
"num-format",
@@ -11751,7 +11804,7 @@
"jsonrpc-core-client",
"jsonrpc-derive",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-rpc-api",
"sc-transaction-pool-api",
@@ -11772,7 +11825,7 @@
"log",
"prometheus",
"thiserror",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
@@ -11784,7 +11837,7 @@
"jsonrpc-core-client",
"jsonrpc-derive",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-rpc-api",
"scale-info",
@@ -11806,7 +11859,7 @@
"async-trait",
"futures 0.3.21",
"hex",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sc-client-api",
"sc-client-db",
"sc-consensus",
@@ -11831,7 +11884,7 @@
dependencies = [
"futures 0.3.21",
"substrate-test-utils-derive",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
@@ -11869,13 +11922,13 @@
[[package]]
name = "syn"
-version = "1.0.92"
+version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52"
+checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942"
dependencies = [
"proc-macro2",
"quote",
- "unicode-xid",
+ "unicode-ident",
]
[[package]]
@@ -11967,7 +12020,7 @@
"pallet-timestamp",
"pallet-transaction-payment",
"pallet-unique",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"sp-core",
"sp-io",
@@ -12119,14 +12172,14 @@
[[package]]
name = "tokio"
-version = "1.18.1"
+version = "1.18.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dce653fb475565de9f6fb0614b28bca8df2c430c0cf84bcd9c843f15de5414cc"
+checksum = "4903bf0427cf68dddd5aa6a93220756f8be0c34fcfa9f5e6191e103e15a31395"
dependencies = [
"bytes 1.1.0",
"libc",
"memchr",
- "mio 0.8.2",
+ "mio 0.8.3",
"num_cpus",
"once_cell",
"parking_lot 0.12.0",
@@ -12166,7 +12219,7 @@
checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6"
dependencies = [
"rustls 0.19.1",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"webpki 0.21.4",
]
@@ -12176,8 +12229,8 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
dependencies = [
- "rustls 0.20.4",
- "tokio 1.18.1",
+ "rustls 0.20.6",
+ "tokio 1.18.2",
"webpki 0.22.0",
]
@@ -12189,35 +12242,35 @@
dependencies = [
"futures-core",
"pin-project-lite 0.2.9",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
name = "tokio-util"
-version = "0.6.9"
+version = "0.6.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0"
+checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507"
dependencies = [
"bytes 1.1.0",
"futures-core",
"futures-sink",
"log",
"pin-project-lite 0.2.9",
- "tokio 1.18.1",
+ "tokio 1.18.2",
]
[[package]]
name = "tokio-util"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764"
+checksum = "f988a1a1adc2fb21f9c12aa96441da33a1728193ae0b95d2be22dbd17fcb4e5c"
dependencies = [
"bytes 1.1.0",
"futures-core",
"futures-io",
"futures-sink",
"pin-project-lite 0.2.9",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"tracing",
]
@@ -12435,7 +12488,7 @@
"clap",
"jsonrpsee",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"remote-externalities",
"sc-chain-spec",
"sc-cli",
@@ -12485,12 +12538,15 @@
"jsonrpc-derive",
"pallet-common",
"pallet-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
+ "rmrk-rpc",
+ "rmrk-types",
"sp-api",
"sp-blockchain",
"sp-core",
"sp-rpc",
"sp-runtime",
+ "unique-runtime-common",
"up-data-structs",
"up-rpc",
]
@@ -12529,6 +12585,12 @@
checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
[[package]]
+name = "unicode-ident"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
+
+[[package]]
name = "unicode-normalization"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -12588,7 +12650,7 @@
"pallet-ethereum",
"pallet-transaction-payment-rpc",
"pallet-transaction-payment-rpc-runtime-api",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"parking_lot 0.11.2",
"polkadot-cli",
"polkadot-parachain",
@@ -12596,6 +12658,7 @@
"polkadot-service",
"polkadot-test-service",
"quartz-runtime",
+ "rmrk-rpc",
"sc-basic-authorship",
"sc-chain-spec",
"sc-cli",
@@ -12633,7 +12696,7 @@
"substrate-build-script-utils",
"substrate-frame-rpc-system",
"substrate-prometheus-endpoint",
- "tokio 1.18.1",
+ "tokio 1.18.2",
"try-runtime-cli",
"unique-rpc",
"unique-runtime",
@@ -12660,6 +12723,7 @@
"pallet-transaction-payment-rpc",
"pallet-transaction-payment-rpc-runtime-api",
"pallet-unique",
+ "rmrk-rpc",
"sc-client-api",
"sc-consensus-aura",
"sc-consensus-epochs",
@@ -12687,6 +12751,7 @@
"tokio 0.2.25",
"uc-rpc",
"unique-runtime-common",
+ "up-data-structs",
"up-rpc",
]
@@ -12742,8 +12807,9 @@
"pallet-unq-scheduler",
"pallet-xcm",
"parachain-info",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
+ "rmrk-rpc",
"scale-info",
"serde",
"smallvec",
@@ -12783,7 +12849,9 @@
"pallet-nonfungible",
"pallet-refungible",
"pallet-unique",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
+ "rmrk-rpc",
+ "rmrk-types",
"scale-info",
"sp-consensus-aura",
"sp-core",
@@ -12847,7 +12915,8 @@
"frame-support",
"frame-system",
"pallet-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
+ "rmrk-types",
"scale-info",
"serde",
"sp-core",
@@ -12862,7 +12931,7 @@
dependencies = [
"pallet-common",
"pallet-evm",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-api",
"sp-core",
"sp-runtime",
@@ -13341,7 +13410,7 @@
source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.21#56cbe45f6c9397b06a99a2d80f4752578ed3637f"
dependencies = [
"beefy-primitives",
- "bitvec",
+ "bitvec 1.0.0",
"frame-benchmarking",
"frame-election-provider-support",
"frame-executive",
@@ -13391,7 +13460,7 @@
"pallet-vesting",
"pallet-xcm",
"pallet-xcm-benchmarks",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
"polkadot-primitives",
"polkadot-runtime-common",
@@ -13560,6 +13629,12 @@
[[package]]
name = "wyz"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
+
+[[package]]
+name = "wyz"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e"
@@ -13586,7 +13661,7 @@
"derivative",
"impl-trait-for-tuples",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"scale-info",
"xcm-procedural",
]
@@ -13600,7 +13675,7 @@
"frame-system",
"log",
"pallet-transaction-payment",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"polkadot-parachain",
"scale-info",
"sp-arithmetic",
@@ -13620,7 +13695,7 @@
"frame-support",
"impl-trait-for-tuples",
"log",
- "parity-scale-codec",
+ "parity-scale-codec 3.1.2",
"sp-arithmetic",
"sp-core",
"sp-io",
@@ -13683,18 +13758,18 @@
[[package]]
name = "zstd"
-version = "0.10.0+zstd.1.5.2"
+version = "0.10.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b1365becbe415f3f0fcd024e2f7b45bacfb5bdd055f0dc113571394114e7bdd"
+checksum = "5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
-version = "4.1.4+zstd.1.5.2"
+version = "4.1.6+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f7cd17c9af1a4d6c24beb1cc54b17e2ef7b593dc92f19e9d9acad8b182bbaee"
+checksum = "94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bb"
dependencies = [
"libc",
"zstd-sys",
client/rpc/Cargo.tomldiffbeforeafterboth--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -5,6 +5,7 @@
edition = "2021"
[dependencies]
+unique-runtime-common = { default-features = false, path = "../../runtime/common" }
pallet-common = { default-features = false, path = '../../pallets/common' }
up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
up-rpc = { path = "../../primitives/rpc" }
@@ -19,3 +20,8 @@
sp-rpc = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+
+# RMRK
+# todo git
+rmrk-rpc = { git = "https://github.com/UniqueNetwork/rmrk-substrate.git", branch = "feature/separate-types-and-traits" }
+rmrk-types = { git = "https://github.com/UniqueNetwork/rmrk-substrate.git", branch = "feature/separate-types-and-traits" }
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -16,7 +16,7 @@
use std::sync::Arc;
-use codec::Decode;
+use codec::{Decode, Encode};
use jsonrpc_core::{Error as RpcError, ErrorCode, Result};
use jsonrpc_derive::rpc;
use up_data_structs::{
@@ -27,6 +27,15 @@
use sp_blockchain::HeaderBackend;
use up_rpc::UniqueApi as UniqueRuntimeApi;
+// RMRK
+use rmrk_rpc::RmrkApi as RmrkRuntimeApi;
+use up_data_structs::{
+ RmrkCollectionId, RmrkNftId, RmrkBaseId, RmrkNftChild, RmrkThemeName, RmrkPropertyKey,
+ RmrkResourceId,
+};
+
+pub use rmrk_unique_rpc::RmrkApi;
+
#[rpc]
pub trait UniqueApi<BlockHash, CrossAccountId, AccountId> {
#[rpc(name = "unique_accountTokens")]
@@ -179,6 +188,124 @@
) -> Result<Option<CollectionLimits>>;
}
+mod rmrk_unique_rpc {
+ use super::*;
+
+ #[rpc(server)]
+ pub trait RmrkApi<
+ BlockHash,
+ AccountId,
+ CollectionInfo,
+ NftInfo,
+ ResourceInfo,
+ PropertyInfo,
+ BaseInfo,
+ PartType,
+ Theme,
+ >
+ {
+ #[rpc(name = "rmrk_lastCollectionIdx")]
+ /// Get the latest created collection id
+ fn last_collection_idx(&self, at: Option<BlockHash>) -> Result<RmrkCollectionId>;
+
+ #[rpc(name = "rmrk_collectionById")]
+ /// Get collection by id
+ fn collection_by_id(
+ &self,
+ id: RmrkCollectionId,
+ at: Option<BlockHash>,
+ ) -> Result<Option<CollectionInfo>>;
+
+ #[rpc(name = "rmrk_nftById")]
+ /// Get NFT by collection id and NFT id
+ fn nft_by_id(
+ &self,
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+ at: Option<BlockHash>,
+ ) -> Result<Option<NftInfo>>;
+
+ #[rpc(name = "rmrk_accountTokens")]
+ /// Get tokens owned by an account in a collection
+ fn account_tokens(
+ &self,
+ account_id: AccountId,
+ collection_id: RmrkCollectionId,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<RmrkNftId>>;
+
+ #[rpc(name = "rmrk_nftChildren")]
+ /// Get NFT children
+ fn nft_children(
+ &self,
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<RmrkNftChild>>;
+
+ #[rpc(name = "rmrk_collectionProperties")]
+ /// Get collection properties
+ fn collection_properties(
+ &self,
+ collection_id: RmrkCollectionId,
+ filter_keys: Option<Vec<RmrkPropertyKey>>, //String
+ at: Option<BlockHash>,
+ ) -> Result<Vec<PropertyInfo>>;
+
+ #[rpc(name = "rmrk_nftProperties")]
+ /// Get NFT properties
+ fn nft_properties(
+ &self,
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+ filter_keys: Option<Vec<RmrkPropertyKey>>,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<PropertyInfo>>;
+
+ #[rpc(name = "rmrk_nftResources")]
+ /// Get NFT resources
+ fn nft_resources(
+ &self,
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<ResourceInfo>>;
+
+ #[rpc(name = "rmrk_nftResourcePriorities")]
+ /// Get NFT resource priorities
+ fn nft_resource_priorities(
+ &self,
+ collection_id: RmrkCollectionId,
+ nft_id: RmrkNftId,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<RmrkResourceId>>;
+
+ #[rpc(name = "rmrk_base")]
+ /// Get base info
+ fn base(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Option<BaseInfo>>;
+
+ #[rpc(name = "rmrk_baseParts")]
+ /// Get all Base's parts
+ fn base_parts(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Vec<PartType>>;
+
+ #[rpc(name = "rmrk_themeNames")]
+ fn theme_names(
+ &self,
+ base_id: RmrkBaseId,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<RmrkThemeName>>;
+
+ #[rpc(name = "rmrk_themes")]
+ fn theme(
+ &self,
+ base_id: RmrkBaseId,
+ theme_name: RmrkThemeName, // String
+ filter_keys: Option<Vec<RmrkPropertyKey>>,
+ at: Option<BlockHash>,
+ ) -> Result<Option<Theme>>;
+ }
+}
+
pub struct Unique<C, P> {
client: Arc<C>,
_marker: std::marker::PhantomData<P>,
@@ -209,7 +336,9 @@
(
$method_name:ident(
$($(#[map(|$map_arg:ident| $map:expr)])? $name:ident: $ty:ty),* $(,)?
- ) -> $result:ty $(=> $mapper:expr)?
+ ) -> $result:ty $(=> $mapper:expr)?,
+ //$runtime_name:ident $(<$($lt: tt),+>)*
+ $runtime_api_macro:ident
$(; changed_in $ver:expr, $changed_method_name:ident ($($changed_name:expr), * $(,)?) => $fixer:expr)*
) => {
fn $method_name(
@@ -222,7 +351,7 @@
let api = self.client.runtime_api();
let at = BlockId::hash(at.unwrap_or_else(|| self.client.info().best_hash));
let _api_version = if let Ok(Some(api_version)) =
- api.api_version::<dyn UniqueRuntimeApi<Block, CrossAccountId, AccountId>>(&at)
+ api.api_version::<$runtime_api_macro!()>(&at)
{
api_version
} else {
@@ -253,6 +382,18 @@
};
}
+macro_rules! unique_api {
+ () => {
+ dyn UniqueRuntimeApi<Block, CrossAccountId, AccountId>
+ };
+}
+
+macro_rules! rmrk_api {
+ () => {
+ dyn RmrkRuntimeApi<Block, AccountId, CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme>
+ };
+}
+
#[allow(deprecated)]
impl<C, Block, CrossAccountId, AccountId>
UniqueApi<<Block as BlockT>::Hash, CrossAccountId, AccountId> for Unique<C, Block>
@@ -263,22 +404,38 @@
C::Api: UniqueRuntimeApi<Block, CrossAccountId, AccountId>,
CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,
{
- pass_method!(account_tokens(collection: CollectionId, account: CrossAccountId) -> Vec<TokenId>);
- pass_method!(collection_tokens(collection: CollectionId) -> Vec<TokenId>);
- pass_method!(token_exists(collection: CollectionId, token: TokenId) -> bool);
pass_method!(
- token_owner(collection: CollectionId, token: TokenId) -> Option<CrossAccountId>;
- changed_in 2, token_owner_before_version_2(collection, token) => |u| Some(u)
+ account_tokens(collection: CollectionId, account: CrossAccountId) -> Vec<TokenId>, unique_api
);
- pass_method!(topmost_token_owner(collection: CollectionId, token: TokenId) -> Option<CrossAccountId>);
- pass_method!(const_metadata(collection: CollectionId, token: TokenId) -> Vec<u8>);
+ pass_method!(
+ collection_tokens(collection: CollectionId) -> Vec<TokenId>, unique_api
+ );
+ pass_method!(
+ token_exists(collection: CollectionId, token: TokenId) -> bool, unique_api
+ );
+ pass_method!(
+ token_owner(collection: CollectionId, token: TokenId) -> Option<CrossAccountId>, unique_api
+ );
+ pass_method!(
+ topmost_token_owner(collection: CollectionId, token: TokenId) -> Option<CrossAccountId>, unique_api
+ );
+ pass_method!(
+ const_metadata(collection: CollectionId, token: TokenId) -> Vec<u8>, unique_api
+ );
+ pass_method!(total_supply(collection: CollectionId) -> u32, unique_api);
+ pass_method!(account_balance(collection: CollectionId, account: CrossAccountId) -> u32, unique_api);
+ pass_method!(balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> String => |v| v.to_string(), unique_api);
+ pass_method!(
+ allowance(collection: CollectionId, sender: CrossAccountId, spender: CrossAccountId, token: TokenId) -> String => |v| v.to_string(),
+ unique_api
+ );
pass_method!(collection_properties(
collection: CollectionId,
#[map(|keys| string_keys_to_bytes_keys(keys))]
keys: Option<Vec<String>>
- ) -> Vec<Property>);
+ ) -> Vec<Property>, unique_api);
pass_method!(token_properties(
collection: CollectionId,
@@ -286,14 +443,14 @@
#[map(|keys| string_keys_to_bytes_keys(keys))]
keys: Option<Vec<String>>
- ) -> Vec<Property>);
+ ) -> Vec<Property>, unique_api);
pass_method!(property_permissions(
collection: CollectionId,
#[map(|keys| string_keys_to_bytes_keys(keys))]
keys: Option<Vec<String>>
- ) -> Vec<PropertyKeyPermission>);
+ ) -> Vec<PropertyKeyPermission>, unique_api);
pass_method!(token_data(
collection: CollectionId,
@@ -301,25 +458,86 @@
#[map(|keys| string_keys_to_bytes_keys(keys))]
keys: Option<Vec<String>>,
- ) -> TokenData<CrossAccountId>);
+ ) -> TokenData<CrossAccountId>, unique_api);
- pass_method!(total_supply(collection: CollectionId) -> u32);
- pass_method!(account_balance(collection: CollectionId, account: CrossAccountId) -> u32);
- pass_method!(balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> String => |v| v.to_string());
- pass_method!(allowance(collection: CollectionId, sender: CrossAccountId, spender: CrossAccountId, token: TokenId) -> String => |v| v.to_string());
+ pass_method!(adminlist(collection: CollectionId) -> Vec<CrossAccountId>, unique_api);
+ pass_method!(allowlist(collection: CollectionId) -> Vec<CrossAccountId>, unique_api);
+ pass_method!(allowed(collection: CollectionId, user: CrossAccountId) -> bool, unique_api);
+ pass_method!(last_token_id(collection: CollectionId) -> TokenId, unique_api);
+ pass_method!(collection_by_id(collection: CollectionId) -> Option<RpcCollection<AccountId>>, unique_api);
+ pass_method!(collection_stats() -> CollectionStats, unique_api);
+ pass_method!(next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Option<u64>, unique_api);
+ pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option<CollectionLimits>, unique_api);
+}
- pass_method!(adminlist(collection: CollectionId) -> Vec<CrossAccountId>);
- pass_method!(allowlist(collection: CollectionId) -> Vec<CrossAccountId>);
- pass_method!(allowed(collection: CollectionId, user: CrossAccountId) -> bool);
- pass_method!(last_token_id(collection: CollectionId) -> TokenId);
- pass_method!(collection_by_id(collection: CollectionId) -> Option<RpcCollection<AccountId>>);
- pass_method!(collection_stats() -> CollectionStats);
- pass_method!(next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Option<u64>);
- pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option<CollectionLimits>);
+#[allow(deprecated)]
+impl<
+ C,
+ Block,
+ AccountId,
+ CollectionInfo,
+ NftInfo,
+ ResourceInfo,
+ PropertyInfo,
+ BaseInfo,
+ PartType,
+ Theme,
+ >
+ rmrk_unique_rpc::RmrkApi<
+ <Block as BlockT>::Hash,
+ AccountId,
+ CollectionInfo,
+ NftInfo,
+ ResourceInfo,
+ PropertyInfo,
+ BaseInfo,
+ PartType,
+ Theme,
+ > for Unique<C, Block>
+where
+ C: Send + Sync + 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
+ C::Api: RmrkRuntimeApi<
+ Block,
+ AccountId,
+ CollectionInfo,
+ NftInfo,
+ ResourceInfo,
+ PropertyInfo,
+ BaseInfo,
+ PartType,
+ Theme,
+ >,
+ AccountId: Decode + Encode,
+ CollectionInfo: Decode,
+ NftInfo: Decode,
+ ResourceInfo: Decode,
+ PropertyInfo: Decode,
+ BaseInfo: Decode,
+ PartType: Decode,
+ Theme: Decode,
+ Block: BlockT,
+{
+ pass_method!(last_collection_idx() -> RmrkCollectionId, rmrk_api);
+ pass_method!(collection_by_id(id: RmrkCollectionId) -> Option<CollectionInfo>, rmrk_api);
+ pass_method!(nft_by_id(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Option<NftInfo>, rmrk_api);
+ pass_method!(account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Vec<RmrkNftId>, rmrk_api);
+ pass_method!(nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<RmrkNftChild>, rmrk_api);
+ pass_method!(
+ collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Vec<PropertyInfo>,
+ rmrk_api
+ );
+ pass_method!(
+ nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Vec<PropertyInfo>,
+ rmrk_api
+ );
+ pass_method!(nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<ResourceInfo>, rmrk_api);
+ pass_method!(nft_resource_priorities(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<RmrkResourceId>, rmrk_api);
+ pass_method!(base(base_id: RmrkBaseId) -> Option<BaseInfo>, rmrk_api);
+ pass_method!(base_parts(base_id: RmrkBaseId) -> Vec<PartType>, rmrk_api);
+ pass_method!(theme_names(base_id: RmrkBaseId) -> Vec<RmrkThemeName>, rmrk_api);
+ pass_method!(theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Option<Theme>, rmrk_api);
}
fn string_keys_to_bytes_keys(keys: Option<Vec<String>>) -> Option<Vec<Vec<u8>>> {
- keys.map(|keys| {
- keys.into_iter().map(|key| key.into_bytes()).collect()
- })
+ keys.map(|keys| keys.into_iter().map(|key| key.into_bytes()).collect())
}
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -276,6 +276,14 @@
branch = "polkadot-v0.9.21"
################################################################################
+# RMRK dependencies
+
+# todo git
+[dependencies.rmrk-rpc]
+git = "https://github.com/UniqueNetwork/rmrk-substrate.git"
+branch = "feature/separate-types-and-traits"
+
+################################################################################
# Package
[package]
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -67,6 +67,12 @@
use unique_runtime_common::types::{AuraId, RuntimeInstance, AccountId, Balance, Index, Hash, Block};
+// RMRK
+use up_data_structs::{
+ RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
+ RmrkPartType, RmrkTheme,
+};
+
/// Unique native executor instance.
#[cfg(feature = "unique-runtime")]
pub struct UniqueRuntimeExecutor;
@@ -347,7 +353,17 @@
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
- + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ + rmrk_rpc::RmrkApi<
+ Block,
+ AccountId,
+ RmrkCollectionInfo<AccountId>,
+ RmrkInstanceInfo<AccountId>,
+ RmrkResourceInfo,
+ RmrkPropertyInfo,
+ RmrkBaseInfo<AccountId>,
+ RmrkPartType,
+ RmrkTheme,
+ > + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block>
+ cumulus_primitives_core::CollectCollationInfo<Block>,
@@ -628,7 +644,17 @@
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
- + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ + rmrk_rpc::RmrkApi<
+ Block,
+ AccountId,
+ RmrkCollectionInfo<AccountId>,
+ RmrkInstanceInfo<AccountId>,
+ RmrkResourceInfo,
+ RmrkPropertyInfo,
+ RmrkBaseInfo<AccountId>,
+ RmrkPartType,
+ RmrkTheme,
+ > + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block>
+ cumulus_primitives_core::CollectCollationInfo<Block>
@@ -761,7 +787,17 @@
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
- + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ + rmrk_rpc::RmrkApi<
+ Block,
+ AccountId,
+ RmrkCollectionInfo<AccountId>,
+ RmrkInstanceInfo<AccountId>,
+ RmrkResourceInfo,
+ RmrkPropertyInfo,
+ RmrkBaseInfo<AccountId>,
+ RmrkPartType,
+ RmrkTheme,
+ > + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block>
+ cumulus_primitives_core::CollectCollationInfo<Block>
node/rpc/Cargo.tomldiffbeforeafterboth--- a/node/rpc/Cargo.toml
+++ b/node/rpc/Cargo.toml
@@ -49,11 +49,16 @@
fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
fc-mapping-sync = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+# RMRK
+# todo git
+rmrk-rpc = { git = "https://github.com/UniqueNetwork/rmrk-substrate.git", branch = "feature/separate-types-and-traits" }
+
pallet-common = { default-features = false, path = "../../pallets/common" }
unique-runtime-common = { default-features = false, path = "../../runtime/common" }
pallet-unique = { path = "../../pallets/unique" }
uc-rpc = { path = "../../client/rpc" }
up-rpc = { path = "../../primitives/rpc" }
+up-data-structs = { default-features = false, path = "../../primitives/data-structs" }
[dependencies.serde]
features = ['derive']
node/rpc/src/lib.rsdiffbeforeafterboth--- a/node/rpc/src/lib.rs
+++ b/node/rpc/src/lib.rs
@@ -43,6 +43,11 @@
use unique_runtime_common::types::{
Hash, AccountId, RuntimeInstance, Index, Block, BlockNumber, Balance,
};
+// RMRK
+use up_data_structs::{
+ RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
+ RmrkPartType, RmrkTheme,
+};
/// Public io handler for exporting into other modules
pub type IoHandler = jsonrpc_core::IoHandler<sc_rpc::Metadata>;
@@ -144,6 +149,17 @@
C::Api: fp_rpc::EthereumRuntimeRPCApi<Block>,
C::Api: fp_rpc::ConvertTransactionRuntimeApi<Block>,
C::Api: up_rpc::UniqueApi<Block, <R as RuntimeInstance>::CrossAccountId, AccountId>,
+ C::Api: rmrk_rpc::RmrkApi<
+ Block,
+ AccountId,
+ RmrkCollectionInfo<AccountId>,
+ RmrkInstanceInfo<AccountId>,
+ RmrkResourceInfo,
+ RmrkPropertyInfo,
+ RmrkBaseInfo<AccountId>,
+ RmrkPartType,
+ RmrkTheme,
+ >,
B: sc_client_api::Backend<Block> + Send + Sync + 'static,
B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,
P: TransactionPool<Block = Block> + 'static,
@@ -157,7 +173,7 @@
EthPubSubApiServer, EthSigner, HexEncodedIdProvider, NetApi, NetApiServer, Web3Api,
Web3ApiServer,
};
- use uc_rpc::{UniqueApi, Unique};
+ use uc_rpc::{UniqueApi, RmrkApi, Unique};
// use pallet_contracts_rpc::{Contracts, ContractsApi};
use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi};
use substrate_frame_rpc_system::{FullSystem, SystemApi};
@@ -213,7 +229,11 @@
fee_history_limit,
fee_history_cache,
)));
+
+ // todo look into
+ //let unique = Unique::new(client.clone());
io.extend_with(UniqueApi::to_delegate(Unique::new(client.clone())));
+ io.extend_with(RmrkApi::to_delegate(Unique::new(client.clone())));
if let Some(filter_pool) = filter_pool {
io.extend_with(EthFilterApiServer::to_delegate(EthFilterApi::new(
pallets/common/Cargo.tomldiffbeforeafterboth--- a/pallets/common/Cargo.toml
+++ b/pallets/common/Cargo.toml
@@ -26,6 +26,10 @@
"derive",
] }
+# RMRK
+# todo git
+rmrk-types = { default-features = false, git = "https://github.com/UniqueNetwork/rmrk-substrate.git", branch = "feature/separate-types-and-traits" }
+
[features]
default = ["std"]
std = [
pallets/common/src/lib.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg_attr(not(feature = "std"), no_std)]1819use core::ops::{Deref, DerefMut};20use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};21use sp_std::vec::Vec;22use pallet_evm::account::CrossAccountId;23use frame_support::{24 dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo, Weight, PostDispatchInfo},25 ensure,26 traits::{Imbalance, Get, Currency, WithdrawReasons, ExistenceRequirement},27 BoundedVec,28 weights::Pays,29 transactional,30};31use pallet_evm::GasWeightMapping;32use up_data_structs::{33 COLLECTION_NUMBER_LIMIT, Collection, RpcCollection, CollectionId, CreateItemData,34 MAX_TOKEN_PREFIX_LENGTH, COLLECTION_ADMINS_LIMIT, TokenId, CollectionStats,35 MAX_TOKEN_OWNERSHIP, CollectionMode, NFT_SPONSOR_TRANSFER_TIMEOUT,36 FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MAX_SPONSOR_TIMEOUT,37 CUSTOM_DATA_LIMIT, CollectionLimits, CreateCollectionData, SponsorshipState, CreateItemExData,38 SponsoringRateLimit, budget::Budget, COLLECTION_FIELD_LIMIT, CollectionField, PhantomType,39 Property, Properties, PropertiesPermissionMap, PropertyKey, PropertyPermission,40 PropertiesError, PropertyKeyPermission, TokenData, TrySetProperty,41};42pub use pallet::*;43use sp_core::H160;44use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};45#[cfg(feature = "runtime-benchmarks")]46pub mod benchmarking;47pub mod dispatch;48pub mod erc;49pub mod eth;5051#[must_use = "Should call submit_logs or save, otherwise some data will be lost for evm side"]52pub struct CollectionHandle<T: Config> {53 pub id: CollectionId,54 collection: Collection<T::AccountId>,55 pub recorder: SubstrateRecorder<T>,56}57impl<T: Config> WithRecorder<T> for CollectionHandle<T> {58 fn recorder(&self) -> &SubstrateRecorder<T> {59 &self.recorder60 }61 fn into_recorder(self) -> SubstrateRecorder<T> {62 self.recorder63 }64}65impl<T: Config> CollectionHandle<T> {66 pub fn new_with_gas_limit(id: CollectionId, gas_limit: u64) -> Option<Self> {67 <CollectionById<T>>::get(id).map(|collection| Self {68 id,69 collection,70 recorder: SubstrateRecorder::new(gas_limit),71 })72 }73 pub fn new(id: CollectionId) -> Option<Self> {74 Self::new_with_gas_limit(id, u64::MAX)75 }76 pub fn try_get(id: CollectionId) -> Result<Self, DispatchError> {77 Ok(Self::new(id).ok_or(<Error<T>>::CollectionNotFound)?)78 }79 pub fn consume_store_reads(&self, reads: u64) -> evm_coder::execution::Result<()> {80 self.recorder81 .consume_gas(T::GasWeightMapping::weight_to_gas(82 <T as frame_system::Config>::DbWeight::get()83 .read84 .saturating_mul(reads),85 ))86 }87 pub fn consume_store_writes(&self, writes: u64) -> evm_coder::execution::Result<()> {88 self.recorder89 .consume_gas(T::GasWeightMapping::weight_to_gas(90 <T as frame_system::Config>::DbWeight::get()91 .write92 .saturating_mul(writes),93 ))94 }95 pub fn save(self) -> DispatchResult {96 <CollectionById<T>>::insert(self.id, self.collection);97 Ok(())98 }99}100impl<T: Config> Deref for CollectionHandle<T> {101 type Target = Collection<T::AccountId>;102103 fn deref(&self) -> &Self::Target {104 &self.collection105 }106}107108impl<T: Config> DerefMut for CollectionHandle<T> {109 fn deref_mut(&mut self) -> &mut Self::Target {110 &mut self.collection111 }112}113114impl<T: Config> CollectionHandle<T> {115 pub fn check_is_owner(&self, subject: &T::CrossAccountId) -> DispatchResult {116 ensure!(*subject.as_sub() == self.owner, <Error<T>>::NoPermission);117 Ok(())118 }119 pub fn is_owner_or_admin(&self, subject: &T::CrossAccountId) -> bool {120 *subject.as_sub() == self.owner || <IsAdmin<T>>::get((self.id, subject))121 }122 pub fn check_is_owner_or_admin(&self, subject: &T::CrossAccountId) -> DispatchResult {123 ensure!(self.is_owner_or_admin(subject), <Error<T>>::NoPermission);124 Ok(())125 }126 pub fn ignores_allowance(&self, user: &T::CrossAccountId) -> bool {127 self.limits.owner_can_transfer() && self.is_owner_or_admin(user)128 }129 pub fn ignores_owned_amount(&self, user: &T::CrossAccountId) -> bool {130 self.limits.owner_can_transfer() && self.is_owner_or_admin(user)131 }132 pub fn check_allowlist(&self, user: &T::CrossAccountId) -> DispatchResult {133 ensure!(134 <Allowlist<T>>::get((self.id, user)),135 <Error<T>>::AddressNotInAllowlist136 );137 Ok(())138 }139}140141#[frame_support::pallet]142pub mod pallet {143 use super::*;144 use pallet_evm::account;145 use dispatch::CollectionDispatch;146 use frame_support::{Blake2_128Concat, pallet_prelude::*, storage::Key, traits::StorageVersion};147 use frame_system::pallet_prelude::*;148 use frame_support::traits::Currency;149 use up_data_structs::{TokenId, mapping::TokenAddressMapping};150 use scale_info::TypeInfo;151152 #[pallet::config]153 pub trait Config:154 frame_system::Config + pallet_evm_coder_substrate::Config + TypeInfo + account::Config155 {156 type Event: IsType<<Self as frame_system::Config>::Event> + From<Event<Self>>;157158 type Currency: Currency<Self::AccountId>;159160 #[pallet::constant]161 type CollectionCreationPrice: Get<162 <<Self as Config>::Currency as Currency<Self::AccountId>>::Balance,163 >;164 type CollectionDispatch: CollectionDispatch<Self>;165166 type TreasuryAccountId: Get<Self::AccountId>;167168 type EvmTokenAddressMapping: TokenAddressMapping<H160>;169 type CrossTokenAddressMapping: TokenAddressMapping<Self::CrossAccountId>;170 }171172 const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);173174 #[pallet::pallet]175 #[pallet::storage_version(STORAGE_VERSION)]176 #[pallet::generate_store(pub(super) trait Store)]177 pub struct Pallet<T>(_);178179 #[pallet::extra_constants]180 impl<T: Config> Pallet<T> {181 pub fn collection_admins_limit() -> u32 {182 COLLECTION_ADMINS_LIMIT183 }184 }185186 #[pallet::event]187 #[pallet::generate_deposit(pub fn deposit_event)]188 pub enum Event<T: Config> {189 /// New collection was created190 ///191 /// # Arguments192 ///193 /// * collection_id: Globally unique identifier of newly created collection.194 ///195 /// * mode: [CollectionMode] converted into u8.196 ///197 /// * account_id: Collection owner.198 CollectionCreated(CollectionId, u8, T::AccountId),199200 /// New collection was destroyed201 ///202 /// # Arguments203 ///204 /// * collection_id: Globally unique identifier of collection.205 CollectionDestroyed(CollectionId),206207 /// New item was created.208 ///209 /// # Arguments210 ///211 /// * collection_id: Id of the collection where item was created.212 ///213 /// * item_id: Id of an item. Unique within the collection.214 ///215 /// * recipient: Owner of newly created item216 ///217 /// * amount: Always 1 for NFT218 ItemCreated(CollectionId, TokenId, T::CrossAccountId, u128),219220 /// Collection item was burned.221 ///222 /// # Arguments223 ///224 /// * collection_id.225 ///226 /// * item_id: Identifier of burned NFT.227 ///228 /// * owner: which user has destroyed its tokens229 ///230 /// * amount: Always 1 for NFT231 ItemDestroyed(CollectionId, TokenId, T::CrossAccountId, u128),232233 /// Item was transferred234 ///235 /// * collection_id: Id of collection to which item is belong236 ///237 /// * item_id: Id of an item238 ///239 /// * sender: Original owner of item240 ///241 /// * recipient: New owner of item242 ///243 /// * amount: Always 1 for NFT244 Transfer(245 CollectionId,246 TokenId,247 T::CrossAccountId,248 T::CrossAccountId,249 u128,250 ),251252 /// * collection_id253 ///254 /// * item_id255 ///256 /// * sender257 ///258 /// * spender259 ///260 /// * amount261 Approved(262 CollectionId,263 TokenId,264 T::CrossAccountId,265 T::CrossAccountId,266 u128,267 ),268269 CollectionPropertySet(CollectionId, PropertyKey),270271 CollectionPropertyDeleted(CollectionId, PropertyKey),272273 TokenPropertySet(CollectionId, TokenId, PropertyKey),274275 TokenPropertyDeleted(CollectionId, TokenId, PropertyKey),276277 PropertyPermissionSet(CollectionId, PropertyKey),278 }279280 #[pallet::error]281 pub enum Error<T> {282 /// This collection does not exist.283 CollectionNotFound,284 /// Sender parameter and item owner must be equal.285 MustBeTokenOwner,286 /// No permission to perform action287 NoPermission,288 /// Collection is not in mint mode.289 PublicMintingNotAllowed,290 /// Address is not in allow list.291 AddressNotInAllowlist,292293 /// Collection name can not be longer than 63 char.294 CollectionNameLimitExceeded,295 /// Collection description can not be longer than 255 char.296 CollectionDescriptionLimitExceeded,297 /// Token prefix can not be longer than 15 char.298 CollectionTokenPrefixLimitExceeded,299 /// Total collections bound exceeded.300 TotalCollectionsLimitExceeded,301 /// Exceeded max admin count302 CollectionAdminCountExceeded,303 /// Collection limit bounds per collection exceeded304 CollectionLimitBoundsExceeded,305 /// Tried to enable permissions which are only permitted to be disabled306 OwnerPermissionsCantBeReverted,307 /// Collection settings not allowing items transferring308 TransferNotAllowed,309 /// Account token limit exceeded per collection310 AccountTokenLimitExceeded,311 /// Collection token limit exceeded312 CollectionTokenLimitExceeded,313 /// Metadata flag frozen314 MetadataFlagFrozen,315316 /// Item not exists.317 TokenNotFound,318 /// Item balance not enough.319 TokenValueTooLow,320 /// Requested value more than approved.321 ApprovedValueTooLow,322 /// Tried to approve more than owned323 CantApproveMoreThanOwned,324325 /// Can't transfer tokens to ethereum zero address326 AddressIsZero,327 /// Target collection doesn't supports this operation328 UnsupportedOperation,329330 /// Not sufficient founds to perform action331 NotSufficientFounds,332333 /// Collection has nesting disabled334 NestingIsDisabled,335 /// Only owner may nest tokens under this collection336 OnlyOwnerAllowedToNest,337 /// Only tokens from specific collections may nest tokens under this338 SourceCollectionIsNotAllowedToNest,339340 /// Tried to store more data than allowed in collection field341 CollectionFieldSizeExceeded,342343 /// Tried to store more property data than allowed344 NoSpaceForProperty,345346 /// Tried to store more property keys than allowed347 PropertyLimitReached,348349 /// Property key is too long350 PropertyKeyIsTooLong,351352 /// Only ASCII letters, digits, and '_', '-' are allowed353 InvalidCharacterInPropertyKey,354355 /// Empty property keys are forbidden356 EmptyPropertyKey,357 }358359 #[pallet::storage]360 pub type CreatedCollectionCount<T> = StorageValue<Value = CollectionId, QueryKind = ValueQuery>;361 #[pallet::storage]362 pub type DestroyedCollectionCount<T> =363 StorageValue<Value = CollectionId, QueryKind = ValueQuery>;364365 /// Collection info366 #[pallet::storage]367 pub type CollectionById<T> = StorageMap<368 Hasher = Blake2_128Concat,369 Key = CollectionId,370 Value = Collection<<T as frame_system::Config>::AccountId>,371 QueryKind = OptionQuery,372 >;373374 /// Collection properties375 #[pallet::storage]376 #[pallet::getter(fn collection_properties)]377 pub type CollectionProperties<T> = StorageMap<378 Hasher = Blake2_128Concat,379 Key = CollectionId,380 Value = Properties,381 QueryKind = ValueQuery,382 OnEmpty = up_data_structs::CollectionProperties,383 >;384385 #[pallet::storage]386 #[pallet::getter(fn property_permissions)]387 pub type CollectionPropertyPermissions<T> = StorageMap<388 Hasher = Blake2_128Concat,389 Key = CollectionId,390 Value = PropertiesPermissionMap,391 QueryKind = ValueQuery,392 >;393394 /// Large variable-size collection fields are extracted here395 #[pallet::storage]396 pub type CollectionData<T> = StorageNMap<397 Key = (398 Key<Twox64Concat, CollectionId>,399 Key<Twox64Concat, CollectionField>,400 ),401 Value = BoundedVec<u8, ConstU32<COLLECTION_FIELD_LIMIT>>,402 QueryKind = ValueQuery,403 >;404405 #[pallet::storage]406 pub type AdminAmount<T> = StorageMap<407 Hasher = Blake2_128Concat,408 Key = CollectionId,409 Value = u32,410 QueryKind = ValueQuery,411 >;412413 /// List of collection admins414 #[pallet::storage]415 pub type IsAdmin<T: Config> = StorageNMap<416 Key = (417 Key<Blake2_128Concat, CollectionId>,418 Key<Blake2_128Concat, T::CrossAccountId>,419 ),420 Value = bool,421 QueryKind = ValueQuery,422 >;423424 /// Allowlisted collection users425 #[pallet::storage]426 pub type Allowlist<T: Config> = StorageNMap<427 Key = (428 Key<Blake2_128Concat, CollectionId>,429 Key<Blake2_128Concat, T::CrossAccountId>,430 ),431 Value = bool,432 QueryKind = ValueQuery,433 >;434435 /// Not used by code, exists only to provide some types to metadata436 #[pallet::storage]437 pub type DummyStorageValue<T: Config> = StorageValue<438 Value = (439 CollectionStats,440 CollectionId,441 TokenId,442 PhantomType<TokenData<T::CrossAccountId>>,443 PhantomType<RpcCollection<T::AccountId>>,444 ),445 QueryKind = OptionQuery,446 >;447448 #[pallet::hooks]449 impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {450 fn on_runtime_upgrade() -> Weight {451 if StorageVersion::get::<Pallet<T>>() < StorageVersion::new(1) {452 use up_data_structs::{CollectionVersion1, CollectionVersion2};453 <CollectionById<T>>::translate::<CollectionVersion1<T::AccountId>, _>(|id, v| {454 Self::set_field_raw(455 id,456 CollectionField::OffchainSchema,457 v.offchain_schema.clone().into_inner(),458 )459 .expect("data has lower bounds than field");460 Self::set_field_raw(461 id,462 CollectionField::ConstOnChainSchema,463 v.const_on_chain_schema.clone().into_inner(),464 )465 .expect("data has lower bounds than field");466467 Some(CollectionVersion2::from(v))468 });469 }470471 0472 }473 }474}475476impl<T: Config> Pallet<T> {477 /// Ethereum receiver 0x0000000000000000000000000000000000000000 is reserved, and shouldn't own tokens478 pub fn ensure_correct_receiver(receiver: &T::CrossAccountId) -> DispatchResult {479 ensure!(480 &T::CrossAccountId::from_eth(H160([0; 20])) != receiver,481 <Error<T>>::AddressIsZero482 );483 Ok(())484 }485 pub fn adminlist(collection: CollectionId) -> Vec<T::CrossAccountId> {486 <IsAdmin<T>>::iter_prefix((collection,))487 .map(|(a, _)| a)488 .collect()489 }490 pub fn allowlist(collection: CollectionId) -> Vec<T::CrossAccountId> {491 <Allowlist<T>>::iter_prefix((collection,))492 .map(|(a, _)| a)493 .collect()494 }495 pub fn allowed(collection: CollectionId, user: T::CrossAccountId) -> bool {496 <Allowlist<T>>::get((collection, user))497 }498 pub fn collection_stats() -> CollectionStats {499 let created = <CreatedCollectionCount<T>>::get();500 let destroyed = <DestroyedCollectionCount<T>>::get();501 CollectionStats {502 created: created.0,503 destroyed: destroyed.0,504 alive: created.0 - destroyed.0,505 }506 }507508 pub fn effective_collection_limits(collection: CollectionId) -> Option<CollectionLimits> {509 let collection = <CollectionById<T>>::get(collection);510 if collection.is_none() {511 return None;512 }513514 let collection = collection.unwrap();515 let limits = collection.limits;516 let effective_limits = CollectionLimits {517 account_token_ownership_limit: Some(limits.account_token_ownership_limit()),518 sponsored_data_size: Some(limits.sponsored_data_size()),519 sponsored_data_rate_limit: Some(520 limits521 .sponsored_data_rate_limit522 .unwrap_or(SponsoringRateLimit::SponsoringDisabled),523 ),524 token_limit: Some(limits.token_limit()),525 sponsor_transfer_timeout: Some(limits.sponsor_transfer_timeout(526 match collection.mode {527 CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,528 CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,529 CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,530 },531 )),532 sponsor_approve_timeout: Some(limits.sponsor_approve_timeout()),533 owner_can_transfer: Some(limits.owner_can_transfer()),534 owner_can_destroy: Some(limits.owner_can_destroy()),535 transfers_enabled: Some(limits.transfers_enabled()),536 nesting_rule: Some(limits.nesting_rule().clone()),537 };538539 Some(effective_limits)540 }541542 pub fn rpc_collection(collection: CollectionId) -> Option<RpcCollection<T::AccountId>> {543 let Collection {544 name,545 description,546 owner,547 mode,548 access,549 token_prefix,550 mint_mode,551 schema_version,552 sponsorship,553 limits,554 } = <CollectionById<T>>::get(collection)?;555556 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)557 .iter()558 .map(|(key, permission)| PropertyKeyPermission {559 key: key.clone(),560 permission: permission.clone(),561 })562 .collect();563564 let properties = <CollectionProperties<T>>::get(collection)565 .iter()566 .map(|(key, value)| Property {567 key: key.clone(),568 value: value.clone(),569 })570 .collect();571572 Some(RpcCollection {573 name: name.into_inner(),574 description: description.into_inner(),575 owner,576 mode,577 access,578 token_prefix: token_prefix.into_inner(),579 mint_mode,580 schema_version,581 sponsorship,582 limits,583 offchain_schema: <CollectionData<T>>::get((584 collection,585 CollectionField::OffchainSchema,586 ))587 .into_inner(),588 const_on_chain_schema: <CollectionData<T>>::get((589 collection,590 CollectionField::ConstOnChainSchema,591 ))592 .into_inner(),593 token_property_permissions,594 properties,595 })596 }597}598599impl<T: Config> Pallet<T> {600 pub fn init_collection(601 owner: T::AccountId,602 data: CreateCollectionData<T::AccountId>,603 ) -> Result<CollectionId, DispatchError> {604 {605 ensure!(606 data.token_prefix.len() <= MAX_TOKEN_PREFIX_LENGTH as usize,607 Error::<T>::CollectionTokenPrefixLimitExceeded608 );609 }610611 let created_count = <CreatedCollectionCount<T>>::get()612 .0613 .checked_add(1)614 .ok_or(ArithmeticError::Overflow)?;615 let destroyed_count = <DestroyedCollectionCount<T>>::get().0;616 let id = CollectionId(created_count);617618 // bound Total number of collections619 ensure!(620 created_count - destroyed_count <= COLLECTION_NUMBER_LIMIT,621 <Error<T>>::TotalCollectionsLimitExceeded622 );623624 // =========625626 let collection = Collection {627 owner: owner.clone(),628 name: data.name,629 mode: data.mode.clone(),630 mint_mode: false,631 access: data.access.unwrap_or_default(),632 description: data.description,633 token_prefix: data.token_prefix,634 schema_version: data.schema_version.unwrap_or_default(),635 sponsorship: data636 .pending_sponsor637 .map(SponsorshipState::Unconfirmed)638 .unwrap_or_default(),639 limits: data640 .limits641 .map(|limits| Self::clamp_limits(data.mode.clone(), &Default::default(), limits))642 .unwrap_or_else(|| Ok(CollectionLimits::default()))?,643 };644645 let mut collection_properties = up_data_structs::CollectionProperties::get();646 collection_properties647 .try_set_from_iter(data.properties.into_iter().map(|p| (p.key, p.value)))648 .map_err(<Error<T>>::from)?;649650 CollectionProperties::<T>::insert(id, collection_properties);651652 let mut token_props_permissions = PropertiesPermissionMap::new();653 token_props_permissions654 .try_set_from_iter(655 data.token_property_permissions656 .into_iter()657 .map(|property| (property.key, property.permission)),658 )659 .map_err(<Error<T>>::from)?;660661 CollectionPropertyPermissions::<T>::insert(id, token_props_permissions);662663 // Take a (non-refundable) deposit of collection creation664 {665 let mut imbalance =666 <<<T as Config>::Currency as Currency<T::AccountId>>::PositiveImbalance>::zero();667 imbalance.subsume(668 <<T as Config>::Currency as Currency<T::AccountId>>::deposit_creating(669 &T::TreasuryAccountId::get(),670 T::CollectionCreationPrice::get(),671 ),672 );673 <T as Config>::Currency::settle(674 &owner,675 imbalance,676 WithdrawReasons::TRANSFER,677 ExistenceRequirement::KeepAlive,678 )679 .map_err(|_| Error::<T>::NotSufficientFounds)?;680 }681682 <CreatedCollectionCount<T>>::put(created_count);683 <Pallet<T>>::deposit_event(Event::CollectionCreated(id, data.mode.id(), owner.clone()));684 <CollectionById<T>>::insert(id, collection);685 Self::set_field_raw(686 id,687 CollectionField::OffchainSchema,688 data.offchain_schema.into_inner(),689 )690 .expect("data has lower bounds than field");691 Self::set_field_raw(692 id,693 CollectionField::ConstOnChainSchema,694 data.const_on_chain_schema.into_inner(),695 )696 .expect("data has lower bounds than field");697 Ok(id)698 }699700 pub fn destroy_collection(701 collection: CollectionHandle<T>,702 sender: &T::CrossAccountId,703 ) -> DispatchResult {704 ensure!(705 collection.limits.owner_can_destroy(),706 <Error<T>>::NoPermission,707 );708 collection.check_is_owner(sender)?;709710 let destroyed_collections = <DestroyedCollectionCount<T>>::get()711 .0712 .checked_add(1)713 .ok_or(ArithmeticError::Overflow)?;714715 // =========716717 <DestroyedCollectionCount<T>>::put(destroyed_collections);718 <CollectionById<T>>::remove(collection.id);719 <CollectionData<T>>::remove_prefix((collection.id,), None);720 <AdminAmount<T>>::remove(collection.id);721 <IsAdmin<T>>::remove_prefix((collection.id,), None);722 <Allowlist<T>>::remove_prefix((collection.id,), None);723724 <Pallet<T>>::deposit_event(Event::CollectionDestroyed(collection.id));725 Ok(())726 }727728 pub fn set_collection_property(729 collection: &CollectionHandle<T>,730 sender: &T::CrossAccountId,731 property: Property,732 ) -> DispatchResult {733 collection.check_is_owner_or_admin(sender)?;734735 CollectionProperties::<T>::try_mutate(collection.id, |properties| {736 let property = property.clone();737 properties.try_set(property.key, property.value)738 })739 .map_err(<Error<T>>::from)?;740741 Self::deposit_event(Event::CollectionPropertySet(collection.id, property.key));742743 Ok(())744 }745746 #[transactional]747 pub fn set_collection_properties(748 collection: &CollectionHandle<T>,749 sender: &T::CrossAccountId,750 properties: Vec<Property>,751 ) -> DispatchResult {752 for property in properties {753 Self::set_collection_property(collection, sender, property)?;754 }755756 Ok(())757 }758759 pub fn delete_collection_property(760 collection: &CollectionHandle<T>,761 sender: &T::CrossAccountId,762 property_key: PropertyKey,763 ) -> DispatchResult {764 collection.check_is_owner_or_admin(sender)?;765766 CollectionProperties::<T>::try_mutate(collection.id, |properties| {767 properties.remove(&property_key)768 })769 .map_err(<Error<T>>::from)?;770771 Self::deposit_event(Event::CollectionPropertyDeleted(772 collection.id,773 property_key,774 ));775776 Ok(())777 }778779 #[transactional]780 pub fn delete_collection_properties(781 collection: &CollectionHandle<T>,782 sender: &T::CrossAccountId,783 property_keys: Vec<PropertyKey>,784 ) -> DispatchResult {785 for key in property_keys {786 Self::delete_collection_property(collection, sender, key)?;787 }788789 Ok(())790 }791792 pub fn set_property_permission(793 collection: &CollectionHandle<T>,794 sender: &T::CrossAccountId,795 property_permission: PropertyKeyPermission,796 ) -> DispatchResult {797 collection.check_is_owner_or_admin(sender)?;798799 let all_permissions = CollectionPropertyPermissions::<T>::get(collection.id);800 let current_permission = all_permissions.get(&property_permission.key);801 if matches![802 current_permission,803 Some(PropertyPermission { mutable: false, .. })804 ] {805 return Err(<Error<T>>::NoPermission.into());806 }807808 CollectionPropertyPermissions::<T>::try_mutate(collection.id, |permissions| {809 let property_permission = property_permission.clone();810 permissions.try_set(property_permission.key, property_permission.permission)811 })812 .map_err(<Error<T>>::from)?;813814 Self::deposit_event(Event::PropertyPermissionSet(815 collection.id,816 property_permission.key,817 ));818819 Ok(())820 }821822 #[transactional]823 pub fn set_property_permissions(824 collection: &CollectionHandle<T>,825 sender: &T::CrossAccountId,826 property_permissions: Vec<PropertyKeyPermission>,827 ) -> DispatchResult {828 for prop_pemission in property_permissions {829 Self::set_property_permission(collection, sender, prop_pemission)?;830 }831832 Ok(())833 }834835 pub fn bytes_keys_to_property_keys(836 keys: Vec<Vec<u8>>,837 ) -> Result<Vec<PropertyKey>, DispatchError> {838 keys.into_iter()839 .map(|key| -> Result<PropertyKey, DispatchError> {840 key.try_into()841 .map_err(|_| <Error<T>>::PropertyKeyIsTooLong.into())842 })843 .collect::<Result<Vec<PropertyKey>, DispatchError>>()844 }845846 pub fn filter_collection_properties(847 collection_id: CollectionId,848 keys: Option<Vec<PropertyKey>>,849 ) -> Result<Vec<Property>, DispatchError> {850 let properties = Self::collection_properties(collection_id);851852 let properties = keys.map(|keys| {853 keys.into_iter()854 .filter_map(|key| {855 properties.get(&key).map(|value| Property {856 key,857 value: value.clone(),858 })859 })860 .collect()861 }).unwrap_or(862 properties.iter()863 .map(|(key, value)| Property {864 key: key.clone(),865 value: value.clone(),866 })867 .collect()868 );869870 Ok(properties)871 }872873 pub fn filter_property_permissions(874 collection_id: CollectionId,875 keys: Option<Vec<PropertyKey>>,876 ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {877 let permissions = Self::property_permissions(collection_id);878879 let key_permissions = keys.map(|keys| {880 keys.into_iter()881 .filter_map(|key| {882 permissions883 .get(&key)884 .map(|permission| PropertyKeyPermission {885 key,886 permission: permission.clone(),887 })888 })889 .collect()890 }).unwrap_or(891 permissions.iter()892 .map(|(key, permission)| PropertyKeyPermission {893 key: key.clone(),894 permission: permission.clone(),895 })896 .collect()897 );898899 Ok(key_permissions)900 }901902 fn set_field_raw(903 collection_id: CollectionId,904 field: CollectionField,905 value: Vec<u8>,906 ) -> DispatchResult {907 if !value.is_empty() {908 <CollectionData<T>>::insert(909 (collection_id, field),910 BoundedVec::try_from(value).map_err(|_| <Error<T>>::CollectionFieldSizeExceeded)?,911 )912 } else {913 <CollectionData<T>>::remove((collection_id, field));914 }915 Ok(())916 }917918 pub fn set_field(919 collection: &CollectionHandle<T>,920 sender: &T::CrossAccountId,921 field: CollectionField,922 value: Vec<u8>,923 ) -> DispatchResult {924 collection.check_is_owner_or_admin(sender)?;925926 // =========927928 Self::set_field_raw(collection.id, field, value)929 }930931 pub fn toggle_allowlist(932 collection: &CollectionHandle<T>,933 sender: &T::CrossAccountId,934 user: &T::CrossAccountId,935 allowed: bool,936 ) -> DispatchResult {937 collection.check_is_owner_or_admin(sender)?;938939 // =========940941 if allowed {942 <Allowlist<T>>::insert((collection.id, user), true);943 } else {944 <Allowlist<T>>::remove((collection.id, user));945 }946947 Ok(())948 }949950 pub fn toggle_admin(951 collection: &CollectionHandle<T>,952 sender: &T::CrossAccountId,953 user: &T::CrossAccountId,954 admin: bool,955 ) -> DispatchResult {956 collection.check_is_owner_or_admin(sender)?;957958 let was_admin = <IsAdmin<T>>::get((collection.id, user));959 if was_admin == admin {960 return Ok(());961 }962 let amount = <AdminAmount<T>>::get(collection.id);963964 if admin {965 let amount = amount966 .checked_add(1)967 .ok_or(<Error<T>>::CollectionAdminCountExceeded)?;968 ensure!(969 amount <= Self::collection_admins_limit(),970 <Error<T>>::CollectionAdminCountExceeded,971 );972973 // =========974975 <AdminAmount<T>>::insert(collection.id, amount);976 <IsAdmin<T>>::insert((collection.id, user), true);977 } else {978 <AdminAmount<T>>::insert(collection.id, amount.saturating_sub(1));979 <IsAdmin<T>>::remove((collection.id, user));980 }981982 Ok(())983 }984985 pub fn clamp_limits(986 mode: CollectionMode,987 old_limit: &CollectionLimits,988 mut new_limit: CollectionLimits,989 ) -> Result<CollectionLimits, DispatchError> {990 macro_rules! limit_default {991 ($old:ident, $new:ident, $($field:ident $(($arg:expr))? => $check:expr),* $(,)?) => {{992 $(993 if let Some($new) = $new.$field {994 let $old = $old.$field($($arg)?);995 let _ = $new;996 let _ = $old;997 $check998 } else {999 $new.$field = $old.$field1000 }1001 )*1002 }};1003 }10041005 limit_default!(old_limit, new_limit,1006 account_token_ownership_limit => ensure!(1007 new_limit <= MAX_TOKEN_OWNERSHIP,1008 <Error<T>>::CollectionLimitBoundsExceeded,1009 ),1010 sponsor_transfer_timeout(match mode {1011 CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,1012 CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,1013 CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,1014 }) => ensure!(1015 new_limit <= MAX_SPONSOR_TIMEOUT,1016 <Error<T>>::CollectionLimitBoundsExceeded,1017 ),1018 sponsored_data_size => ensure!(1019 new_limit <= CUSTOM_DATA_LIMIT,1020 <Error<T>>::CollectionLimitBoundsExceeded,1021 ),1022 token_limit => ensure!(1023 old_limit >= new_limit && new_limit > 0,1024 <Error<T>>::CollectionTokenLimitExceeded1025 ),1026 owner_can_transfer => ensure!(1027 old_limit || !new_limit,1028 <Error<T>>::OwnerPermissionsCantBeReverted,1029 ),1030 owner_can_destroy => ensure!(1031 old_limit || !new_limit,1032 <Error<T>>::OwnerPermissionsCantBeReverted,1033 ),1034 sponsored_data_rate_limit => {},1035 transfers_enabled => {},1036 );1037 Ok(new_limit)1038 }1039}10401041#[macro_export]1042macro_rules! unsupported {1043 () => {1044 Err(<Error<T>>::UnsupportedOperation.into())1045 };1046}10471048/// Worst cases1049pub trait CommonWeightInfo<CrossAccountId> {1050 fn create_item() -> Weight;1051 fn create_multiple_items(amount: u32) -> Weight;1052 fn create_multiple_items_ex(cost: &CreateItemExData<CrossAccountId>) -> Weight;1053 fn burn_item() -> Weight;1054 fn set_collection_properties(amount: u32) -> Weight;1055 fn delete_collection_properties(amount: u32) -> Weight;1056 fn set_token_properties(amount: u32) -> Weight;1057 fn delete_token_properties(amount: u32) -> Weight;1058 fn set_property_permissions(amount: u32) -> Weight;1059 fn transfer() -> Weight;1060 fn approve() -> Weight;1061 fn transfer_from() -> Weight;1062 fn burn_from() -> Weight;1063}10641065pub trait CommonCollectionOperations<T: Config> {1066 fn create_item(1067 &self,1068 sender: T::CrossAccountId,1069 to: T::CrossAccountId,1070 data: CreateItemData,1071 nesting_budget: &dyn Budget,1072 ) -> DispatchResultWithPostInfo;1073 fn create_multiple_items(1074 &self,1075 sender: T::CrossAccountId,1076 to: T::CrossAccountId,1077 data: Vec<CreateItemData>,1078 nesting_budget: &dyn Budget,1079 ) -> DispatchResultWithPostInfo;1080 fn create_multiple_items_ex(1081 &self,1082 sender: T::CrossAccountId,1083 data: CreateItemExData<T::CrossAccountId>,1084 nesting_budget: &dyn Budget,1085 ) -> DispatchResultWithPostInfo;1086 fn burn_item(1087 &self,1088 sender: T::CrossAccountId,1089 token: TokenId,1090 amount: u128,1091 ) -> DispatchResultWithPostInfo;1092 fn set_collection_properties(1093 &self,1094 sender: T::CrossAccountId,1095 properties: Vec<Property>,1096 ) -> DispatchResultWithPostInfo;1097 fn delete_collection_properties(1098 &self,1099 sender: &T::CrossAccountId,1100 property_keys: Vec<PropertyKey>,1101 ) -> DispatchResultWithPostInfo;1102 fn set_token_properties(1103 &self,1104 sender: T::CrossAccountId,1105 token_id: TokenId,1106 property: Vec<Property>,1107 ) -> DispatchResultWithPostInfo;1108 fn delete_token_properties(1109 &self,1110 sender: T::CrossAccountId,1111 token_id: TokenId,1112 property_keys: Vec<PropertyKey>,1113 ) -> DispatchResultWithPostInfo;1114 fn set_property_permissions(1115 &self,1116 sender: &T::CrossAccountId,1117 property_permissions: Vec<PropertyKeyPermission>,1118 ) -> DispatchResultWithPostInfo;1119 fn transfer(1120 &self,1121 sender: T::CrossAccountId,1122 to: T::CrossAccountId,1123 token: TokenId,1124 amount: u128,1125 nesting_budget: &dyn Budget,1126 ) -> DispatchResultWithPostInfo;1127 fn approve(1128 &self,1129 sender: T::CrossAccountId,1130 spender: T::CrossAccountId,1131 token: TokenId,1132 amount: u128,1133 ) -> DispatchResultWithPostInfo;1134 fn transfer_from(1135 &self,1136 sender: T::CrossAccountId,1137 from: T::CrossAccountId,1138 to: T::CrossAccountId,1139 token: TokenId,1140 amount: u128,1141 nesting_budget: &dyn Budget,1142 ) -> DispatchResultWithPostInfo;1143 fn burn_from(1144 &self,1145 sender: T::CrossAccountId,1146 from: T::CrossAccountId,1147 token: TokenId,1148 amount: u128,1149 nesting_budget: &dyn Budget,1150 ) -> DispatchResultWithPostInfo;11511152 fn check_nesting(1153 &self,1154 sender: T::CrossAccountId,1155 from: (CollectionId, TokenId),1156 under: TokenId,1157 budget: &dyn Budget,1158 ) -> DispatchResult;11591160 fn account_tokens(&self, account: T::CrossAccountId) -> Vec<TokenId>;1161 fn collection_tokens(&self) -> Vec<TokenId>;1162 fn token_exists(&self, token: TokenId) -> bool;1163 fn last_token_id(&self) -> TokenId;11641165 fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId>;1166 fn const_metadata(&self, token: TokenId) -> Vec<u8>;1167 fn token_properties(&self, token_id: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property>;1168 /// Amount of unique collection tokens1169 fn total_supply(&self) -> u32;1170 /// Amount of different tokens account has (Applicable to nonfungible/refungible)1171 fn account_balance(&self, account: T::CrossAccountId) -> u32;1172 /// Amount of specific token account have (Applicable to fungible/refungible)1173 fn balance(&self, account: T::CrossAccountId, token: TokenId) -> u128;1174 fn allowance(1175 &self,1176 sender: T::CrossAccountId,1177 spender: T::CrossAccountId,1178 token: TokenId,1179 ) -> u128;1180}11811182// Flexible enough for implementing CommonCollectionOperations1183pub fn with_weight(res: DispatchResult, weight: Weight) -> DispatchResultWithPostInfo {1184 let post_info = PostDispatchInfo {1185 actual_weight: Some(weight),1186 pays_fee: Pays::Yes,1187 };1188 match res {1189 Ok(()) => Ok(post_info),1190 Err(error) => Err(DispatchErrorWithPostInfo { post_info, error }),1191 }1192}11931194impl<T: Config> From<PropertiesError> for Error<T> {1195 fn from(error: PropertiesError) -> Self {1196 match error {1197 PropertiesError::NoSpaceForProperty => Self::NoSpaceForProperty,1198 PropertiesError::PropertyLimitReached => Self::PropertyLimitReached,1199 PropertiesError::InvalidCharacterInPropertyKey => Self::InvalidCharacterInPropertyKey,1200 PropertiesError::PropertyKeyIsTooLong => Self::PropertyKeyIsTooLong,1201 PropertiesError::EmptyPropertyKey => Self::EmptyPropertyKey,1202 }1203 }1204}1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg_attr(not(feature = "std"), no_std)]1819use core::ops::{Deref, DerefMut};20use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};21use sp_std::vec::Vec;22use pallet_evm::account::CrossAccountId;23use frame_support::{24 dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo, Weight, PostDispatchInfo},25 ensure,26 traits::{Imbalance, Get, Currency, WithdrawReasons, ExistenceRequirement},27 BoundedVec,28 weights::Pays,29 transactional,30};31use pallet_evm::GasWeightMapping;32use up_data_structs::{33 COLLECTION_NUMBER_LIMIT,34 Collection,35 RpcCollection,36 CollectionId,37 CreateItemData,38 MAX_TOKEN_PREFIX_LENGTH,39 COLLECTION_ADMINS_LIMIT,40 TokenId,41 CollectionStats,42 MAX_TOKEN_OWNERSHIP,43 CollectionMode,44 NFT_SPONSOR_TRANSFER_TIMEOUT,45 FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,46 REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,47 MAX_SPONSOR_TIMEOUT,48 CUSTOM_DATA_LIMIT,49 CollectionLimits,50 CreateCollectionData,51 SponsorshipState,52 CreateItemExData,53 SponsoringRateLimit,54 budget::Budget,55 COLLECTION_FIELD_LIMIT,56 CollectionField,57 PhantomType,58 Property,59 Properties,60 PropertiesPermissionMap,61 PropertyKey,62 PropertyPermission,63 PropertiesError,64 PropertyKeyPermission,65 TokenData,66 TrySetProperty,67 PropertyScope,68 // RMRK69 RmrkCollectionInfo,70 RmrkInstanceInfo,71 RmrkResourceInfo,72 RmrkPropertyInfo,73 RmrkBaseInfo,74 RmrkPartType,75 RmrkTheme,76 RmrkNftChild,77};7879pub use pallet::*;80use sp_core::H160;81use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};82#[cfg(feature = "runtime-benchmarks")]83pub mod benchmarking;84pub mod dispatch;85pub mod erc;86pub mod eth;8788#[must_use = "Should call submit_logs or save, otherwise some data will be lost for evm side"]89pub struct CollectionHandle<T: Config> {90 pub id: CollectionId,91 collection: Collection<T::AccountId>,92 pub recorder: SubstrateRecorder<T>,93}94impl<T: Config> WithRecorder<T> for CollectionHandle<T> {95 fn recorder(&self) -> &SubstrateRecorder<T> {96 &self.recorder97 }98 fn into_recorder(self) -> SubstrateRecorder<T> {99 self.recorder100 }101}102impl<T: Config> CollectionHandle<T> {103 pub fn new_with_gas_limit(id: CollectionId, gas_limit: u64) -> Option<Self> {104 <CollectionById<T>>::get(id).map(|collection| Self {105 id,106 collection,107 recorder: SubstrateRecorder::new(gas_limit),108 })109 }110 pub fn new(id: CollectionId) -> Option<Self> {111 Self::new_with_gas_limit(id, u64::MAX)112 }113 pub fn try_get(id: CollectionId) -> Result<Self, DispatchError> {114 Ok(Self::new(id).ok_or(<Error<T>>::CollectionNotFound)?)115 }116 pub fn consume_store_reads(&self, reads: u64) -> evm_coder::execution::Result<()> {117 self.recorder118 .consume_gas(T::GasWeightMapping::weight_to_gas(119 <T as frame_system::Config>::DbWeight::get()120 .read121 .saturating_mul(reads),122 ))123 }124 pub fn consume_store_writes(&self, writes: u64) -> evm_coder::execution::Result<()> {125 self.recorder126 .consume_gas(T::GasWeightMapping::weight_to_gas(127 <T as frame_system::Config>::DbWeight::get()128 .write129 .saturating_mul(writes),130 ))131 }132 pub fn save(self) -> DispatchResult {133 <CollectionById<T>>::insert(self.id, self.collection);134 Ok(())135 }136}137impl<T: Config> Deref for CollectionHandle<T> {138 type Target = Collection<T::AccountId>;139140 fn deref(&self) -> &Self::Target {141 &self.collection142 }143}144145impl<T: Config> DerefMut for CollectionHandle<T> {146 fn deref_mut(&mut self) -> &mut Self::Target {147 &mut self.collection148 }149}150151impl<T: Config> CollectionHandle<T> {152 pub fn check_is_owner(&self, subject: &T::CrossAccountId) -> DispatchResult {153 ensure!(*subject.as_sub() == self.owner, <Error<T>>::NoPermission);154 Ok(())155 }156 pub fn is_owner_or_admin(&self, subject: &T::CrossAccountId) -> bool {157 *subject.as_sub() == self.owner || <IsAdmin<T>>::get((self.id, subject))158 }159 pub fn check_is_owner_or_admin(&self, subject: &T::CrossAccountId) -> DispatchResult {160 ensure!(self.is_owner_or_admin(subject), <Error<T>>::NoPermission);161 Ok(())162 }163 pub fn ignores_allowance(&self, user: &T::CrossAccountId) -> bool {164 self.limits.owner_can_transfer() && self.is_owner_or_admin(user)165 }166 pub fn ignores_owned_amount(&self, user: &T::CrossAccountId) -> bool {167 self.limits.owner_can_transfer() && self.is_owner_or_admin(user)168 }169 pub fn check_allowlist(&self, user: &T::CrossAccountId) -> DispatchResult {170 ensure!(171 <Allowlist<T>>::get((self.id, user)),172 <Error<T>>::AddressNotInAllowlist173 );174 Ok(())175 }176}177178#[frame_support::pallet]179pub mod pallet {180 use super::*;181 use pallet_evm::account;182 use dispatch::CollectionDispatch;183 use frame_support::{Blake2_128Concat, pallet_prelude::*, storage::Key, traits::StorageVersion};184 use frame_system::pallet_prelude::*;185 use frame_support::traits::Currency;186 use up_data_structs::{TokenId, mapping::TokenAddressMapping};187 use scale_info::TypeInfo;188189 #[pallet::config]190 pub trait Config:191 frame_system::Config + pallet_evm_coder_substrate::Config + TypeInfo + account::Config192 {193 type Event: IsType<<Self as frame_system::Config>::Event> + From<Event<Self>>;194195 type Currency: Currency<Self::AccountId>;196197 #[pallet::constant]198 type CollectionCreationPrice: Get<199 <<Self as Config>::Currency as Currency<Self::AccountId>>::Balance,200 >;201 type CollectionDispatch: CollectionDispatch<Self>;202203 type TreasuryAccountId: Get<Self::AccountId>;204205 type EvmTokenAddressMapping: TokenAddressMapping<H160>;206 type CrossTokenAddressMapping: TokenAddressMapping<Self::CrossAccountId>;207 }208209 const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);210211 #[pallet::pallet]212 #[pallet::storage_version(STORAGE_VERSION)]213 #[pallet::generate_store(pub(super) trait Store)]214 pub struct Pallet<T>(_);215216 #[pallet::extra_constants]217 impl<T: Config> Pallet<T> {218 pub fn collection_admins_limit() -> u32 {219 COLLECTION_ADMINS_LIMIT220 }221 }222223 #[pallet::event]224 #[pallet::generate_deposit(pub fn deposit_event)]225 pub enum Event<T: Config> {226 /// New collection was created227 ///228 /// # Arguments229 ///230 /// * collection_id: Globally unique identifier of newly created collection.231 ///232 /// * mode: [CollectionMode] converted into u8.233 ///234 /// * account_id: Collection owner.235 CollectionCreated(CollectionId, u8, T::AccountId),236237 /// New collection was destroyed238 ///239 /// # Arguments240 ///241 /// * collection_id: Globally unique identifier of collection.242 CollectionDestroyed(CollectionId),243244 /// New item was created.245 ///246 /// # Arguments247 ///248 /// * collection_id: Id of the collection where item was created.249 ///250 /// * item_id: Id of an item. Unique within the collection.251 ///252 /// * recipient: Owner of newly created item253 ///254 /// * amount: Always 1 for NFT255 ItemCreated(CollectionId, TokenId, T::CrossAccountId, u128),256257 /// Collection item was burned.258 ///259 /// # Arguments260 ///261 /// * collection_id.262 ///263 /// * item_id: Identifier of burned NFT.264 ///265 /// * owner: which user has destroyed its tokens266 ///267 /// * amount: Always 1 for NFT268 ItemDestroyed(CollectionId, TokenId, T::CrossAccountId, u128),269270 /// Item was transferred271 ///272 /// * collection_id: Id of collection to which item is belong273 ///274 /// * item_id: Id of an item275 ///276 /// * sender: Original owner of item277 ///278 /// * recipient: New owner of item279 ///280 /// * amount: Always 1 for NFT281 Transfer(282 CollectionId,283 TokenId,284 T::CrossAccountId,285 T::CrossAccountId,286 u128,287 ),288289 /// * collection_id290 ///291 /// * item_id292 ///293 /// * sender294 ///295 /// * spender296 ///297 /// * amount298 Approved(299 CollectionId,300 TokenId,301 T::CrossAccountId,302 T::CrossAccountId,303 u128,304 ),305306 CollectionPropertySet(CollectionId, PropertyKey),307308 CollectionPropertyDeleted(CollectionId, PropertyKey),309310 TokenPropertySet(CollectionId, TokenId, PropertyKey),311312 TokenPropertyDeleted(CollectionId, TokenId, PropertyKey),313314 PropertyPermissionSet(CollectionId, PropertyKey),315 }316317 #[pallet::error]318 pub enum Error<T> {319 /// This collection does not exist.320 CollectionNotFound,321 /// Sender parameter and item owner must be equal.322 MustBeTokenOwner,323 /// No permission to perform action324 NoPermission,325 /// Collection is not in mint mode.326 PublicMintingNotAllowed,327 /// Address is not in allow list.328 AddressNotInAllowlist,329330 /// Collection name can not be longer than 63 char.331 CollectionNameLimitExceeded,332 /// Collection description can not be longer than 255 char.333 CollectionDescriptionLimitExceeded,334 /// Token prefix can not be longer than 15 char.335 CollectionTokenPrefixLimitExceeded,336 /// Total collections bound exceeded.337 TotalCollectionsLimitExceeded,338 /// Exceeded max admin count339 CollectionAdminCountExceeded,340 /// Collection limit bounds per collection exceeded341 CollectionLimitBoundsExceeded,342 /// Tried to enable permissions which are only permitted to be disabled343 OwnerPermissionsCantBeReverted,344 /// Collection settings not allowing items transferring345 TransferNotAllowed,346 /// Account token limit exceeded per collection347 AccountTokenLimitExceeded,348 /// Collection token limit exceeded349 CollectionTokenLimitExceeded,350 /// Metadata flag frozen351 MetadataFlagFrozen,352353 /// Item not exists.354 TokenNotFound,355 /// Item balance not enough.356 TokenValueTooLow,357 /// Requested value more than approved.358 ApprovedValueTooLow,359 /// Tried to approve more than owned360 CantApproveMoreThanOwned,361362 /// Can't transfer tokens to ethereum zero address363 AddressIsZero,364 /// Target collection doesn't supports this operation365 UnsupportedOperation,366367 /// Not sufficient founds to perform action368 NotSufficientFounds,369370 /// Collection has nesting disabled371 NestingIsDisabled,372 /// Only owner may nest tokens under this collection373 OnlyOwnerAllowedToNest,374 /// Only tokens from specific collections may nest tokens under this375 SourceCollectionIsNotAllowedToNest,376377 /// Tried to store more data than allowed in collection field378 CollectionFieldSizeExceeded,379380 /// Tried to store more property data than allowed381 NoSpaceForProperty,382383 /// Tried to store more property keys than allowed384 PropertyLimitReached,385386 /// Property key is too long387 PropertyKeyIsTooLong,388389 /// Only ASCII letters, digits, and '_', '-' are allowed390 InvalidCharacterInPropertyKey,391392 /// Empty property keys are forbidden393 EmptyPropertyKey,394 }395396 #[pallet::storage]397 pub type CreatedCollectionCount<T> = StorageValue<Value = CollectionId, QueryKind = ValueQuery>;398 #[pallet::storage]399 pub type DestroyedCollectionCount<T> =400 StorageValue<Value = CollectionId, QueryKind = ValueQuery>;401402 /// Collection info403 #[pallet::storage]404 pub type CollectionById<T> = StorageMap<405 Hasher = Blake2_128Concat,406 Key = CollectionId,407 Value = Collection<<T as frame_system::Config>::AccountId>,408 QueryKind = OptionQuery,409 >;410411 /// Collection properties412 #[pallet::storage]413 #[pallet::getter(fn collection_properties)]414 pub type CollectionProperties<T> = StorageMap<415 Hasher = Blake2_128Concat,416 Key = CollectionId,417 Value = Properties,418 QueryKind = ValueQuery,419 OnEmpty = up_data_structs::CollectionProperties,420 >;421422 #[pallet::storage]423 #[pallet::getter(fn property_permissions)]424 pub type CollectionPropertyPermissions<T> = StorageMap<425 Hasher = Blake2_128Concat,426 Key = CollectionId,427 Value = PropertiesPermissionMap,428 QueryKind = ValueQuery,429 >;430431 /// Large variable-size collection fields are extracted here432 #[pallet::storage]433 pub type CollectionData<T> = StorageNMap<434 Key = (435 Key<Twox64Concat, CollectionId>,436 Key<Twox64Concat, CollectionField>,437 ),438 Value = BoundedVec<u8, ConstU32<COLLECTION_FIELD_LIMIT>>,439 QueryKind = ValueQuery,440 >;441442 #[pallet::storage]443 pub type AdminAmount<T> = StorageMap<444 Hasher = Blake2_128Concat,445 Key = CollectionId,446 Value = u32,447 QueryKind = ValueQuery,448 >;449450 /// List of collection admins451 #[pallet::storage]452 pub type IsAdmin<T: Config> = StorageNMap<453 Key = (454 Key<Blake2_128Concat, CollectionId>,455 Key<Blake2_128Concat, T::CrossAccountId>,456 ),457 Value = bool,458 QueryKind = ValueQuery,459 >;460461 /// Allowlisted collection users462 #[pallet::storage]463 pub type Allowlist<T: Config> = StorageNMap<464 Key = (465 Key<Blake2_128Concat, CollectionId>,466 Key<Blake2_128Concat, T::CrossAccountId>,467 ),468 Value = bool,469 QueryKind = ValueQuery,470 >;471472 /// Not used by code, exists only to provide some types to metadata473 #[pallet::storage]474 pub type DummyStorageValue<T: Config> = StorageValue<475 Value = (476 CollectionStats,477 CollectionId,478 TokenId,479 PhantomType<TokenData<T::CrossAccountId>>,480 PhantomType<RpcCollection<T::AccountId>>,481 // RMRK482 PhantomType<RmrkCollectionInfo<T::AccountId>>,483 PhantomType<RmrkInstanceInfo<T::AccountId>>,484 PhantomType<RmrkResourceInfo>,485 PhantomType<RmrkPropertyInfo>,486 PhantomType<RmrkBaseInfo<T::AccountId>>,487 PhantomType<RmrkPartType>,488 PhantomType<RmrkTheme>,489 PhantomType<RmrkNftChild>,490 ),491 QueryKind = OptionQuery,492 >;493494 #[pallet::hooks]495 impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {496 fn on_runtime_upgrade() -> Weight {497 if StorageVersion::get::<Pallet<T>>() < StorageVersion::new(1) {498 use up_data_structs::{CollectionVersion1, CollectionVersion2};499 <CollectionById<T>>::translate::<CollectionVersion1<T::AccountId>, _>(|id, v| {500 Self::set_field_raw(501 id,502 CollectionField::OffchainSchema,503 v.offchain_schema.clone().into_inner(),504 )505 .expect("data has lower bounds than field");506 Self::set_field_raw(507 id,508 CollectionField::ConstOnChainSchema,509 v.const_on_chain_schema.clone().into_inner(),510 )511 .expect("data has lower bounds than field");512513 Some(CollectionVersion2::from(v))514 });515 }516517 0518 }519 }520}521522impl<T: Config> Pallet<T> {523 /// Ethereum receiver 0x0000000000000000000000000000000000000000 is reserved, and shouldn't own tokens524 pub fn ensure_correct_receiver(receiver: &T::CrossAccountId) -> DispatchResult {525 ensure!(526 &T::CrossAccountId::from_eth(H160([0; 20])) != receiver,527 <Error<T>>::AddressIsZero528 );529 Ok(())530 }531 pub fn adminlist(collection: CollectionId) -> Vec<T::CrossAccountId> {532 <IsAdmin<T>>::iter_prefix((collection,))533 .map(|(a, _)| a)534 .collect()535 }536 pub fn allowlist(collection: CollectionId) -> Vec<T::CrossAccountId> {537 <Allowlist<T>>::iter_prefix((collection,))538 .map(|(a, _)| a)539 .collect()540 }541 pub fn allowed(collection: CollectionId, user: T::CrossAccountId) -> bool {542 <Allowlist<T>>::get((collection, user))543 }544 pub fn collection_stats() -> CollectionStats {545 let created = <CreatedCollectionCount<T>>::get();546 let destroyed = <DestroyedCollectionCount<T>>::get();547 CollectionStats {548 created: created.0,549 destroyed: destroyed.0,550 alive: created.0 - destroyed.0,551 }552 }553554 pub fn effective_collection_limits(collection: CollectionId) -> Option<CollectionLimits> {555 let collection = <CollectionById<T>>::get(collection);556 if collection.is_none() {557 return None;558 }559560 let collection = collection.unwrap();561 let limits = collection.limits;562 let effective_limits = CollectionLimits {563 account_token_ownership_limit: Some(limits.account_token_ownership_limit()),564 sponsored_data_size: Some(limits.sponsored_data_size()),565 sponsored_data_rate_limit: Some(566 limits567 .sponsored_data_rate_limit568 .unwrap_or(SponsoringRateLimit::SponsoringDisabled),569 ),570 token_limit: Some(limits.token_limit()),571 sponsor_transfer_timeout: Some(limits.sponsor_transfer_timeout(572 match collection.mode {573 CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,574 CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,575 CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,576 },577 )),578 sponsor_approve_timeout: Some(limits.sponsor_approve_timeout()),579 owner_can_transfer: Some(limits.owner_can_transfer()),580 owner_can_destroy: Some(limits.owner_can_destroy()),581 transfers_enabled: Some(limits.transfers_enabled()),582 nesting_rule: Some(limits.nesting_rule().clone()),583 };584585 Some(effective_limits)586 }587588 pub fn rpc_collection(collection: CollectionId) -> Option<RpcCollection<T::AccountId>> {589 let Collection {590 name,591 description,592 owner,593 mode,594 access,595 token_prefix,596 mint_mode,597 schema_version,598 sponsorship,599 limits,600 } = <CollectionById<T>>::get(collection)?;601602 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)603 .iter()604 .map(|(key, permission)| PropertyKeyPermission {605 key: key.clone(),606 permission: permission.clone(),607 })608 .collect();609610 let properties = <CollectionProperties<T>>::get(collection)611 .iter()612 .map(|(key, value)| Property {613 key: key.clone(),614 value: value.clone(),615 })616 .collect();617618 Some(RpcCollection {619 name: name.into_inner(),620 description: description.into_inner(),621 owner,622 mode,623 access,624 token_prefix: token_prefix.into_inner(),625 mint_mode,626 schema_version,627 sponsorship,628 limits,629 offchain_schema: <CollectionData<T>>::get((630 collection,631 CollectionField::OffchainSchema,632 ))633 .into_inner(),634 const_on_chain_schema: <CollectionData<T>>::get((635 collection,636 CollectionField::ConstOnChainSchema,637 ))638 .into_inner(),639 token_property_permissions,640 properties,641 })642 }643}644645impl<T: Config> Pallet<T> {646 pub fn init_collection(647 owner: T::AccountId,648 data: CreateCollectionData<T::AccountId>,649 ) -> Result<CollectionId, DispatchError> {650 {651 ensure!(652 data.token_prefix.len() <= MAX_TOKEN_PREFIX_LENGTH as usize,653 Error::<T>::CollectionTokenPrefixLimitExceeded654 );655 }656657 let created_count = <CreatedCollectionCount<T>>::get()658 .0659 .checked_add(1)660 .ok_or(ArithmeticError::Overflow)?;661 let destroyed_count = <DestroyedCollectionCount<T>>::get().0;662 let id = CollectionId(created_count);663664 // bound Total number of collections665 ensure!(666 created_count - destroyed_count <= COLLECTION_NUMBER_LIMIT,667 <Error<T>>::TotalCollectionsLimitExceeded668 );669670 // =========671672 let collection = Collection {673 owner: owner.clone(),674 name: data.name,675 mode: data.mode.clone(),676 mint_mode: false,677 access: data.access.unwrap_or_default(),678 description: data.description,679 token_prefix: data.token_prefix,680 schema_version: data.schema_version.unwrap_or_default(),681 sponsorship: data682 .pending_sponsor683 .map(SponsorshipState::Unconfirmed)684 .unwrap_or_default(),685 limits: data686 .limits687 .map(|limits| Self::clamp_limits(data.mode.clone(), &Default::default(), limits))688 .unwrap_or_else(|| Ok(CollectionLimits::default()))?,689 };690691 let mut collection_properties = up_data_structs::CollectionProperties::get();692 collection_properties693 .try_set_from_iter(data.properties.into_iter())694 .map_err(<Error<T>>::from)?;695696 CollectionProperties::<T>::insert(id, collection_properties);697698 let mut token_props_permissions = PropertiesPermissionMap::new();699 token_props_permissions700 .try_set_from_iter(data.token_property_permissions.into_iter())701 .map_err(<Error<T>>::from)?;702703 CollectionPropertyPermissions::<T>::insert(id, token_props_permissions);704705 // Take a (non-refundable) deposit of collection creation706 {707 let mut imbalance =708 <<<T as Config>::Currency as Currency<T::AccountId>>::PositiveImbalance>::zero();709 imbalance.subsume(710 <<T as Config>::Currency as Currency<T::AccountId>>::deposit_creating(711 &T::TreasuryAccountId::get(),712 T::CollectionCreationPrice::get(),713 ),714 );715 <T as Config>::Currency::settle(716 &owner,717 imbalance,718 WithdrawReasons::TRANSFER,719 ExistenceRequirement::KeepAlive,720 )721 .map_err(|_| Error::<T>::NotSufficientFounds)?;722 }723724 <CreatedCollectionCount<T>>::put(created_count);725 <Pallet<T>>::deposit_event(Event::CollectionCreated(id, data.mode.id(), owner.clone()));726 <CollectionById<T>>::insert(id, collection);727 Self::set_field_raw(728 id,729 CollectionField::OffchainSchema,730 data.offchain_schema.into_inner(),731 )732 .expect("data has lower bounds than field");733 Self::set_field_raw(734 id,735 CollectionField::ConstOnChainSchema,736 data.const_on_chain_schema.into_inner(),737 )738 .expect("data has lower bounds than field");739 Ok(id)740 }741742 pub fn destroy_collection(743 collection: CollectionHandle<T>,744 sender: &T::CrossAccountId,745 ) -> DispatchResult {746 ensure!(747 collection.limits.owner_can_destroy(),748 <Error<T>>::NoPermission,749 );750 collection.check_is_owner(sender)?;751752 let destroyed_collections = <DestroyedCollectionCount<T>>::get()753 .0754 .checked_add(1)755 .ok_or(ArithmeticError::Overflow)?;756757 // =========758759 <DestroyedCollectionCount<T>>::put(destroyed_collections);760 <CollectionById<T>>::remove(collection.id);761 <CollectionData<T>>::remove_prefix((collection.id,), None);762 <AdminAmount<T>>::remove(collection.id);763 <IsAdmin<T>>::remove_prefix((collection.id,), None);764 <Allowlist<T>>::remove_prefix((collection.id,), None);765 <CollectionProperties<T>>::remove(collection.id);766767 <Pallet<T>>::deposit_event(Event::CollectionDestroyed(collection.id));768 Ok(())769 }770771 pub fn set_collection_property(772 collection: &CollectionHandle<T>,773 sender: &T::CrossAccountId,774 property: Property,775 ) -> DispatchResult {776 collection.check_is_owner_or_admin(sender)?;777778 CollectionProperties::<T>::try_mutate(collection.id, |properties| {779 let property = property.clone();780 properties.try_set(property.key, property.value)781 })782 .map_err(<Error<T>>::from)?;783784 Self::deposit_event(Event::CollectionPropertySet(collection.id, property.key));785786 Ok(())787 }788789 pub fn set_scoped_collection_property(790 collection: &CollectionHandle<T>,791 scope: PropertyScope,792 property: Property,793 ) -> DispatchResult {794 CollectionProperties::<T>::try_mutate(collection.id, |properties| {795 properties.try_scoped_set(scope, property.key, property.value)796 })797 .map_err(<Error<T>>::from)?;798799 Ok(())800 }801802 #[transactional]803 pub fn set_scoped_collection_properties(804 collection: &CollectionHandle<T>,805 scope: PropertyScope,806 properties: impl Iterator<Item=Property>,807 ) -> DispatchResult {808 CollectionProperties::<T>::try_mutate(collection.id, |stored_properties| {809 stored_properties.try_scoped_set_from_iter(scope, properties)810 })811 .map_err(<Error<T>>::from)?;812813 Ok(())814 }815816 #[transactional]817 pub fn set_collection_properties(818 collection: &CollectionHandle<T>,819 sender: &T::CrossAccountId,820 properties: Vec<Property>,821 ) -> DispatchResult {822 for property in properties {823 Self::set_collection_property(collection, sender, property)?;824 }825826 Ok(())827 }828829 pub fn delete_collection_property(830 collection: &CollectionHandle<T>,831 sender: &T::CrossAccountId,832 property_key: PropertyKey,833 ) -> DispatchResult {834 collection.check_is_owner_or_admin(sender)?;835836 CollectionProperties::<T>::try_mutate(collection.id, |properties| {837 properties.remove(&property_key)838 })839 .map_err(<Error<T>>::from)?;840841 Self::deposit_event(Event::CollectionPropertyDeleted(842 collection.id,843 property_key,844 ));845846 Ok(())847 }848849 #[transactional]850 pub fn delete_collection_properties(851 collection: &CollectionHandle<T>,852 sender: &T::CrossAccountId,853 property_keys: Vec<PropertyKey>,854 ) -> DispatchResult {855 for key in property_keys {856 Self::delete_collection_property(collection, sender, key)?;857 }858859 Ok(())860 }861862 pub fn set_property_permission(863 collection: &CollectionHandle<T>,864 sender: &T::CrossAccountId,865 property_permission: PropertyKeyPermission,866 ) -> DispatchResult {867 collection.check_is_owner_or_admin(sender)?;868869 let all_permissions = CollectionPropertyPermissions::<T>::get(collection.id);870 let current_permission = all_permissions.get(&property_permission.key);871 if matches![872 current_permission,873 Some(PropertyPermission { mutable: false, .. })874 ] {875 return Err(<Error<T>>::NoPermission.into());876 }877878 CollectionPropertyPermissions::<T>::try_mutate(collection.id, |permissions| {879 let property_permission = property_permission.clone();880 permissions.try_set(property_permission.key, property_permission.permission)881 })882 .map_err(<Error<T>>::from)?;883884 Self::deposit_event(Event::PropertyPermissionSet(885 collection.id,886 property_permission.key,887 ));888889 Ok(())890 }891892 #[transactional]893 pub fn set_property_permissions(894 collection: &CollectionHandle<T>,895 sender: &T::CrossAccountId,896 property_permissions: Vec<PropertyKeyPermission>,897 ) -> DispatchResult {898 for prop_pemission in property_permissions {899 Self::set_property_permission(collection, sender, prop_pemission)?;900 }901902 Ok(())903 }904905 pub fn bytes_keys_to_property_keys(906 keys: Vec<Vec<u8>>,907 ) -> Result<Vec<PropertyKey>, DispatchError> {908 keys.into_iter()909 .map(|key| -> Result<PropertyKey, DispatchError> {910 key.try_into()911 .map_err(|_| <Error<T>>::PropertyKeyIsTooLong.into())912 })913 .collect::<Result<Vec<PropertyKey>, DispatchError>>()914 }915916 pub fn filter_collection_properties(917 collection_id: CollectionId,918 keys: Option<Vec<PropertyKey>>,919 ) -> Result<Vec<Property>, DispatchError> {920 let properties = Self::collection_properties(collection_id);921922 let properties = keys923 .map(|keys| {924 keys.into_iter()925 .filter_map(|key| {926 properties.get(&key).map(|value| Property {927 key,928 value: value.clone(),929 })930 })931 .collect()932 })933 .unwrap_or_else(|| {934 properties935 .iter()936 .map(|(key, value)| Property {937 key: key.clone(),938 value: value.clone(),939 })940 .collect()941 });942943 Ok(properties)944 }945946 pub fn filter_property_permissions(947 collection_id: CollectionId,948 keys: Option<Vec<PropertyKey>>,949 ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {950 let permissions = Self::property_permissions(collection_id);951952 let key_permissions = keys953 .map(|keys| {954 keys.into_iter()955 .filter_map(|key| {956 permissions957 .get(&key)958 .map(|permission| PropertyKeyPermission {959 key,960 permission: permission.clone(),961 })962 })963 .collect()964 })965 .unwrap_or_else(|| {966 permissions967 .iter()968 .map(|(key, permission)| PropertyKeyPermission {969 key: key.clone(),970 permission: permission.clone(),971 })972 .collect()973 });974975 Ok(key_permissions)976 }977978 fn set_field_raw(979 collection_id: CollectionId,980 field: CollectionField,981 value: Vec<u8>,982 ) -> DispatchResult {983 if !value.is_empty() {984 <CollectionData<T>>::insert(985 (collection_id, field),986 BoundedVec::try_from(value).map_err(|_| <Error<T>>::CollectionFieldSizeExceeded)?,987 )988 } else {989 <CollectionData<T>>::remove((collection_id, field));990 }991 Ok(())992 }993994 pub fn set_field(995 collection: &CollectionHandle<T>,996 sender: &T::CrossAccountId,997 field: CollectionField,998 value: Vec<u8>,999 ) -> DispatchResult {1000 collection.check_is_owner_or_admin(sender)?;10011002 // =========10031004 Self::set_field_raw(collection.id, field, value)1005 }10061007 pub fn toggle_allowlist(1008 collection: &CollectionHandle<T>,1009 sender: &T::CrossAccountId,1010 user: &T::CrossAccountId,1011 allowed: bool,1012 ) -> DispatchResult {1013 collection.check_is_owner_or_admin(sender)?;10141015 // =========10161017 if allowed {1018 <Allowlist<T>>::insert((collection.id, user), true);1019 } else {1020 <Allowlist<T>>::remove((collection.id, user));1021 }10221023 Ok(())1024 }10251026 pub fn toggle_admin(1027 collection: &CollectionHandle<T>,1028 sender: &T::CrossAccountId,1029 user: &T::CrossAccountId,1030 admin: bool,1031 ) -> DispatchResult {1032 collection.check_is_owner_or_admin(sender)?;10331034 let was_admin = <IsAdmin<T>>::get((collection.id, user));1035 if was_admin == admin {1036 return Ok(());1037 }1038 let amount = <AdminAmount<T>>::get(collection.id);10391040 if admin {1041 let amount = amount1042 .checked_add(1)1043 .ok_or(<Error<T>>::CollectionAdminCountExceeded)?;1044 ensure!(1045 amount <= Self::collection_admins_limit(),1046 <Error<T>>::CollectionAdminCountExceeded,1047 );10481049 // =========10501051 <AdminAmount<T>>::insert(collection.id, amount);1052 <IsAdmin<T>>::insert((collection.id, user), true);1053 } else {1054 <AdminAmount<T>>::insert(collection.id, amount.saturating_sub(1));1055 <IsAdmin<T>>::remove((collection.id, user));1056 }10571058 Ok(())1059 }10601061 pub fn clamp_limits(1062 mode: CollectionMode,1063 old_limit: &CollectionLimits,1064 mut new_limit: CollectionLimits,1065 ) -> Result<CollectionLimits, DispatchError> {1066 macro_rules! limit_default {1067 ($old:ident, $new:ident, $($field:ident $(($arg:expr))? => $check:expr),* $(,)?) => {{1068 $(1069 if let Some($new) = $new.$field {1070 let $old = $old.$field($($arg)?);1071 let _ = $new;1072 let _ = $old;1073 $check1074 } else {1075 $new.$field = $old.$field1076 }1077 )*1078 }};1079 }10801081 limit_default!(old_limit, new_limit,1082 account_token_ownership_limit => ensure!(1083 new_limit <= MAX_TOKEN_OWNERSHIP,1084 <Error<T>>::CollectionLimitBoundsExceeded,1085 ),1086 sponsor_transfer_timeout(match mode {1087 CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,1088 CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,1089 CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,1090 }) => ensure!(1091 new_limit <= MAX_SPONSOR_TIMEOUT,1092 <Error<T>>::CollectionLimitBoundsExceeded,1093 ),1094 sponsored_data_size => ensure!(1095 new_limit <= CUSTOM_DATA_LIMIT,1096 <Error<T>>::CollectionLimitBoundsExceeded,1097 ),1098 token_limit => ensure!(1099 old_limit >= new_limit && new_limit > 0,1100 <Error<T>>::CollectionTokenLimitExceeded1101 ),1102 owner_can_transfer => ensure!(1103 old_limit || !new_limit,1104 <Error<T>>::OwnerPermissionsCantBeReverted,1105 ),1106 owner_can_destroy => ensure!(1107 old_limit || !new_limit,1108 <Error<T>>::OwnerPermissionsCantBeReverted,1109 ),1110 sponsored_data_rate_limit => {},1111 transfers_enabled => {},1112 );1113 Ok(new_limit)1114 }1115}11161117#[macro_export]1118macro_rules! unsupported {1119 () => {1120 Err(<Error<T>>::UnsupportedOperation.into())1121 };1122}11231124/// Worst cases1125pub trait CommonWeightInfo<CrossAccountId> {1126 fn create_item() -> Weight;1127 fn create_multiple_items(amount: u32) -> Weight;1128 fn create_multiple_items_ex(cost: &CreateItemExData<CrossAccountId>) -> Weight;1129 fn burn_item() -> Weight;1130 fn set_collection_properties(amount: u32) -> Weight;1131 fn delete_collection_properties(amount: u32) -> Weight;1132 fn set_token_properties(amount: u32) -> Weight;1133 fn delete_token_properties(amount: u32) -> Weight;1134 fn set_property_permissions(amount: u32) -> Weight;1135 fn transfer() -> Weight;1136 fn approve() -> Weight;1137 fn transfer_from() -> Weight;1138 fn burn_from() -> Weight;1139}11401141pub trait CommonCollectionOperations<T: Config> {1142 fn create_item(1143 &self,1144 sender: T::CrossAccountId,1145 to: T::CrossAccountId,1146 data: CreateItemData,1147 nesting_budget: &dyn Budget,1148 ) -> DispatchResultWithPostInfo;1149 fn create_multiple_items(1150 &self,1151 sender: T::CrossAccountId,1152 to: T::CrossAccountId,1153 data: Vec<CreateItemData>,1154 nesting_budget: &dyn Budget,1155 ) -> DispatchResultWithPostInfo;1156 fn create_multiple_items_ex(1157 &self,1158 sender: T::CrossAccountId,1159 data: CreateItemExData<T::CrossAccountId>,1160 nesting_budget: &dyn Budget,1161 ) -> DispatchResultWithPostInfo;1162 fn burn_item(1163 &self,1164 sender: T::CrossAccountId,1165 token: TokenId,1166 amount: u128,1167 ) -> DispatchResultWithPostInfo;1168 fn set_collection_properties(1169 &self,1170 sender: T::CrossAccountId,1171 properties: Vec<Property>,1172 ) -> DispatchResultWithPostInfo;1173 fn delete_collection_properties(1174 &self,1175 sender: &T::CrossAccountId,1176 property_keys: Vec<PropertyKey>,1177 ) -> DispatchResultWithPostInfo;1178 fn set_token_properties(1179 &self,1180 sender: T::CrossAccountId,1181 token_id: TokenId,1182 property: Vec<Property>,1183 ) -> DispatchResultWithPostInfo;1184 fn delete_token_properties(1185 &self,1186 sender: T::CrossAccountId,1187 token_id: TokenId,1188 property_keys: Vec<PropertyKey>,1189 ) -> DispatchResultWithPostInfo;1190 fn set_property_permissions(1191 &self,1192 sender: &T::CrossAccountId,1193 property_permissions: Vec<PropertyKeyPermission>,1194 ) -> DispatchResultWithPostInfo;1195 fn transfer(1196 &self,1197 sender: T::CrossAccountId,1198 to: T::CrossAccountId,1199 token: TokenId,1200 amount: u128,1201 nesting_budget: &dyn Budget,1202 ) -> DispatchResultWithPostInfo;1203 fn approve(1204 &self,1205 sender: T::CrossAccountId,1206 spender: T::CrossAccountId,1207 token: TokenId,1208 amount: u128,1209 ) -> DispatchResultWithPostInfo;1210 fn transfer_from(1211 &self,1212 sender: T::CrossAccountId,1213 from: T::CrossAccountId,1214 to: T::CrossAccountId,1215 token: TokenId,1216 amount: u128,1217 nesting_budget: &dyn Budget,1218 ) -> DispatchResultWithPostInfo;1219 fn burn_from(1220 &self,1221 sender: T::CrossAccountId,1222 from: T::CrossAccountId,1223 token: TokenId,1224 amount: u128,1225 nesting_budget: &dyn Budget,1226 ) -> DispatchResultWithPostInfo;12271228 fn check_nesting(1229 &self,1230 sender: T::CrossAccountId,1231 from: (CollectionId, TokenId),1232 under: TokenId,1233 budget: &dyn Budget,1234 ) -> DispatchResult;12351236 fn account_tokens(&self, account: T::CrossAccountId) -> Vec<TokenId>;1237 fn collection_tokens(&self) -> Vec<TokenId>;1238 fn token_exists(&self, token: TokenId) -> bool;1239 fn last_token_id(&self) -> TokenId;12401241 fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId>;1242 fn const_metadata(&self, token: TokenId) -> Vec<u8>;1243 fn token_properties(&self, token_id: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property>;1244 /// Amount of unique collection tokens1245 fn total_supply(&self) -> u32;1246 /// Amount of different tokens account has (Applicable to nonfungible/refungible)1247 fn account_balance(&self, account: T::CrossAccountId) -> u32;1248 /// Amount of specific token account have (Applicable to fungible/refungible)1249 fn balance(&self, account: T::CrossAccountId, token: TokenId) -> u128;1250 fn allowance(1251 &self,1252 sender: T::CrossAccountId,1253 spender: T::CrossAccountId,1254 token: TokenId,1255 ) -> u128;1256}12571258// Flexible enough for implementing CommonCollectionOperations1259pub fn with_weight(res: DispatchResult, weight: Weight) -> DispatchResultWithPostInfo {1260 let post_info = PostDispatchInfo {1261 actual_weight: Some(weight),1262 pays_fee: Pays::Yes,1263 };1264 match res {1265 Ok(()) => Ok(post_info),1266 Err(error) => Err(DispatchErrorWithPostInfo { post_info, error }),1267 }1268}12691270impl<T: Config> From<PropertiesError> for Error<T> {1271 fn from(error: PropertiesError) -> Self {1272 match error {1273 PropertiesError::NoSpaceForProperty => Self::NoSpaceForProperty,1274 PropertiesError::PropertyLimitReached => Self::PropertyLimitReached,1275 PropertiesError::InvalidCharacterInPropertyKey => Self::InvalidCharacterInPropertyKey,1276 PropertiesError::PropertyKeyIsTooLong => Self::PropertyKeyIsTooLong,1277 PropertiesError::EmptyPropertyKey => Self::EmptyPropertyKey,1278 }1279 }1280}pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -319,7 +319,11 @@
Vec::new()
}
- fn token_properties(&self, _token_id: TokenId, _keys: Option<Vec<PropertyKey>>) -> Vec<Property> {
+ fn token_properties(
+ &self,
+ _token_id: TokenId,
+ _keys: Option<Vec<PropertyKey>>,
+ ) -> Vec<Property> {
Vec::new()
}
pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -28,10 +28,7 @@
fn create_max_item_data<T: Config>(owner: T::CrossAccountId) -> CreateItemData<T> {
let const_data = create_data::<CUSTOM_DATA_LIMIT>();
- CreateItemData::<T> {
- const_data,
- owner,
- }
+ CreateItemData::<T> { const_data, owner }
}
fn create_max_item<T: Config>(
collection: &NonfungibleHandle<T>,
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -18,8 +18,8 @@
use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight};
use up_data_structs::{
- TokenId, CreateItemExData, CollectionId, budget::Budget, Property,
- PropertyKey, PropertyKeyPermission,
+ TokenId, CreateItemExData, CollectionId, budget::Budget, Property, PropertyKey,
+ PropertyKeyPermission,
};
use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
use sp_runtime::DispatchError;
@@ -179,7 +179,7 @@
let weight = <CommonWeights<T>>::delete_collection_properties(property_keys.len() as u32);
with_weight(
- <Pallet<T>>::delete_collection_properties(self, &sender, property_keys),
+ <Pallet<T>>::delete_collection_properties(self, sender, property_keys),
weight,
)
}
@@ -367,20 +367,23 @@
keys.map(|keys| {
keys.into_iter()
- .filter_map(|key| {
- properties.get(&key).map(|value| Property {
- key,
+ .filter_map(|key| {
+ properties.get(&key).map(|value| Property {
+ key,
+ value: value.clone(),
+ })
+ })
+ .collect()
+ })
+ .unwrap_or_else(|| {
+ properties
+ .iter()
+ .map(|(key, value)| Property {
+ key: key.clone(),
value: value.clone(),
})
- })
- .collect()
- }).unwrap_or(
- properties.iter().map(|(key, value)| Property {
- key: key.clone(),
- value: value.clone(),
- })
- .collect()
- )
+ .collect()
+ })
}
fn total_supply(&self) -> u32 {
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -257,6 +257,7 @@
<Owned<T>>::remove((collection.id, &token_data.owner, token));
<TokensBurnt<T>>::insert(collection.id, burnt);
<TokenData<T>>::remove((collection.id, token));
+ <TokenProperties<T>>::remove((collection.id, token));
let old_spender = <Allowance<T>>::take((collection.id, token));
if let Some(old_spender) = old_spender {
@@ -353,8 +354,8 @@
) -> DispatchResult {
let permission = <PalletCommon<T>>::property_permissions(collection.id)
.get(property_key)
- .map(|p| p.clone())
- .unwrap_or(PropertyPermission::none());
+ .cloned()
+ .unwrap_or_else(PropertyPermission::none);
let token_data = <TokenData<T>>::get((collection.id, token_id))
.ok_or(<CommonError<T>>::TokenNotFound)?;
pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -19,8 +19,8 @@
use sp_std::collections::btree_map::BTreeMap;
use frame_support::{dispatch::DispatchResultWithPostInfo, fail, weights::Weight};
use up_data_structs::{
- CollectionId, TokenId, CreateItemExData, CreateRefungibleExData,
- budget::Budget, Property, PropertyKey, PropertyKeyPermission,
+ CollectionId, TokenId, CreateItemExData, CreateRefungibleExData, budget::Budget, Property,
+ PropertyKey, PropertyKeyPermission,
};
use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
use sp_runtime::DispatchError;
@@ -340,7 +340,11 @@
.into_inner()
}
- fn token_properties(&self, _token_id: TokenId, _keys: Option<Vec<PropertyKey>>) -> Vec<Property> {
+ fn token_properties(
+ &self,
+ _token_id: TokenId,
+ _keys: Option<Vec<PropertyKey>>,
+ ) -> Vec<Property> {
Vec::new()
}
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -53,7 +53,10 @@
#[frame_support::pallet]
pub mod pallet {
use super::*;
- use frame_support::{Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key, traits::StorageVersion};
+ use frame_support::{
+ Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key,
+ traits::StorageVersion,
+ };
use frame_system::pallet_prelude::*;
use up_data_structs::{CollectionId, TokenId};
use super::weights::WeightInfo;
pallets/rmrk-proxy/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/pallets/rmrk-proxy/Cargo.toml
@@ -0,0 +1,49 @@
+[package]
+name = "pallet-rmrk-proxy"
+version = "0.1.0"
+license = "GPLv3"
+edition = "2021"
+
+[dependencies.codec]
+default-features = false
+features = ['derive']
+package = 'parity-scale-codec'
+version = '3.1.2'
+
+[dependencies]
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+pallet-common = { default-features = false, path = '../common' }
+pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
+# pallet-structure = { default-features = false, path = '../structure' }
+up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
+# evm-coder = { default-features = false, path = '../../crates/evm-coder' }
+# pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }
+
+[features]
+default = ["std"]
+std = [
+ "frame-support/std",
+ "frame-system/std",
+ "sp-runtime/std",
+ "sp-std/std",
+ "up-data-structs/std",
+ "pallet-common/std",
+ "pallet-nonfungible/std",
+ "pallet-evm/std",
+ # "pallet-structure/std",
+ # "evm-coder/std",
+ # "pallet-evm-coder-substrate/std",
+ 'frame-benchmarking/std',
+]
+runtime-benchmarks = [
+ 'frame-benchmarking',
+ 'frame-support/runtime-benchmarks',
+ 'frame-system/runtime-benchmarks',
+]
pallets/rmrk-proxy/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/rmrk-proxy/src/lib.rs
@@ -0,0 +1,232 @@
+// 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/>.
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+use frame_support::{pallet_prelude::*, transactional, BoundedVec, traits::ConstU32, dispatch::DispatchResult};
+use frame_system::{pallet_prelude::*, ensure_signed};
+use sp_runtime::DispatchError;
+use up_data_structs::*;
+use pallet_common::{Pallet as PalletCommon, Error as CommonError, CollectionHandle, CommonCollectionOperations};
+use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle};
+use pallet_evm::account::CrossAccountId;
+
+pub use pallet::*;
+
+pub mod misc;
+
+use misc::*;
+
+#[frame_support::pallet]
+pub mod pallet {
+ use super::*;
+ use pallet_evm::account;
+
+ #[pallet::config]
+ pub trait Config: frame_system::Config
+ + pallet_common::Config
+ + pallet_nonfungible::Config
+ + account::Config {
+ type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
+ }
+
+ #[pallet::pallet]
+ #[pallet::generate_store(pub(super) trait Store)]
+ pub struct Pallet<T>(_);
+
+ #[pallet::event]
+ #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ pub enum Event<T: Config> {
+ CollectionCreated {
+ issuer: T::AccountId,
+ collection_id: CollectionId,
+ },
+ CollectionDestroyed {
+ issuer: T::AccountId,
+ collection_id: CollectionId,
+ },
+ CollectionLocked {
+ issuer: T::AccountId,
+ collection_id: CollectionId,
+ },
+ }
+
+ #[pallet::error]
+ pub enum Error<T> {
+ /* Unique-specific events */
+ CorruptedCollectionType,
+ NotRmrkCollection,
+
+ /* RMRK compatible events */
+ CollectionNotEmpty,
+ NoAvailableCollectionId,
+ CollectionUnknown,
+ }
+
+ #[pallet::call]
+ impl<T: Config> Pallet<T> {
+ #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
+ #[transactional]
+ pub fn create_collection(
+ origin: OriginFor<T>,
+ metadata: PropertyValue,
+ max: Option<u32>,
+ symbol: BoundedVec<u8, ConstU32<MAX_TOKEN_PREFIX_LENGTH>>,
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+
+ let limits = max.map(|max| CollectionLimits {
+ token_limit: Some(max),
+ ..Default::default()
+ });
+
+ let data = CreateCollectionData {
+ limits,
+ token_prefix: symbol,
+ ..Default::default()
+ };
+
+ let collection_id_res = <PalletNft<T>>::init_collection(sender.clone(), data);
+
+ if let Err(DispatchError::Arithmetic(_)) = &collection_id_res {
+ return Err(<Error<T>>::NoAvailableCollectionId.into());
+ }
+
+ let collection_id = collection_id_res?;
+
+ let collection = Self::get_nft_collection(collection_id)?.into_inner();
+
+ <PalletCommon<T>>::set_scoped_collection_properties(
+ &collection,
+ PropertyScope::Rmrk,
+ [
+ rmrk_property!(Metadata, metadata),
+ rmrk_property!(CollectionType, CollectionType::Regular),
+ ].into_iter()
+ )?;
+
+ Self::deposit_event(Event::CollectionCreated { issuer: sender, collection_id });
+
+ Ok(())
+ }
+
+ #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
+ #[transactional]
+ pub fn destroy_collection(
+ origin: OriginFor<T>,
+ collection_id: CollectionId,
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ let cross_sender = T::CrossAccountId::from_sub(sender.clone());
+
+ let collection = Self::get_nft_collection(collection_id)?;
+
+ Self::check_collection_type(collection_id, CollectionType::Regular)?;
+
+ ensure!(collection.total_supply() == 0, <Error<T>>::CollectionNotEmpty);
+
+ <PalletNft<T>>::destroy_collection(collection, &cross_sender)?;
+
+ Self::deposit_event(Event::CollectionDestroyed { issuer: sender, collection_id });
+
+ Ok(())
+ }
+
+ #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
+ #[transactional]
+ pub fn change_collection_issuer(
+ origin: OriginFor<T>,
+ collection_id: CollectionId,
+ new_issuer: T::AccountId,
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+
+ Self::change_collection_owner(
+ collection_id,
+ CollectionType::Regular,
+ sender,
+ new_issuer
+ )?;
+
+ Ok(())
+ }
+
+ #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
+ #[transactional]
+ pub fn lock_collection(
+ origin: OriginFor<T>,
+ collection_id: CollectionId,
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ let cross_sender = T::CrossAccountId::from_sub(sender.clone());
+
+ let collection = Self::get_nft_collection(collection_id)?;
+ collection.check_is_owner(&cross_sender)?;
+
+ let token_count = collection.total_supply();
+
+ let mut collection = collection.into_inner();
+ collection.limits.token_limit = Some(token_count);
+ collection.save()?;
+
+ Self::deposit_event(Event::CollectionLocked { issuer: sender, collection_id });
+
+ Ok(())
+ }
+ }
+}
+
+impl<T: Config> Pallet<T> {
+ fn change_collection_owner(
+ collection_id: CollectionId,
+ collection_type: CollectionType,
+ sender: T::AccountId,
+ new_owner: T::AccountId,
+ ) -> DispatchResult {
+ let mut collection = Self::get_nft_collection(collection_id)?.into_inner();
+ collection.check_is_owner(&T::CrossAccountId::from_sub(sender))?;
+
+ Self::check_collection_type(collection_id, collection_type)?;
+
+ collection.owner = new_owner;
+ collection.save()
+ }
+
+ fn get_nft_collection(collection_id: CollectionId) -> Result<NonfungibleHandle<T>, DispatchError> {
+ let collection = <CollectionHandle<T>>::try_get(collection_id)
+ .map_err(|_| <Error<T>>::CollectionUnknown)?
+ .into_nft_collection()?;
+
+ Ok(collection)
+ }
+
+ fn get_collection_type(collection_id: CollectionId) -> Result<CollectionType, DispatchError> {
+ let collection_type: CollectionType = <PalletCommon<T>>::collection_properties(collection_id)
+ .get(&rmrk_property!(CollectionType))
+ .ok_or(<Error<T>>::NotRmrkCollection)?
+ .try_into()
+ .map_err(<Error<T>>::from)?;
+
+ Ok(collection_type)
+ }
+
+ fn check_collection_type(collection_id: CollectionId, collection_type: CollectionType) -> DispatchResult {
+ let actual_type = Self::get_collection_type(collection_id)?;
+ ensure!(actual_type == collection_type, <CommonError<T>>::NoPermission);
+
+ Ok(())
+ }
+}
pallets/rmrk-proxy/src/misc.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/rmrk-proxy/src/misc.rs
@@ -0,0 +1,98 @@
+use super::*;
+use codec::{Encode, Decode};
+use frame_support::dispatch::Vec;
+use pallet_nonfungible::NonfungibleHandle;
+
+#[macro_export]
+macro_rules! rmrk_property {
+ ($key:ident, $value:expr) => {
+ Property {
+ key: rmrk_property!(@raw $key),
+ value: $value.into()
+ }
+ };
+
+ (@raw $key:ident) => {
+ RmrkProperty::$key.to_key()
+ };
+
+ ($key:ident) => {
+ PropertyScope::Rmrk.apply(rmrk_property!(@raw $key)).unwrap()
+ };
+}
+
+macro_rules! impl_rmrk_value {
+ ($enum_name:path, decode_error: $error:ident) => {
+ impl Into<PropertyValue> for $enum_name {
+ fn into(self) -> PropertyValue {
+ self.encode().try_into().unwrap()
+ }
+ }
+
+ impl TryFrom<&PropertyValue> for $enum_name {
+ type Error = MiscError;
+
+ fn try_from(value: &PropertyValue) -> Result<Self, Self::Error> {
+ let mut value = value.as_slice();
+
+ <$enum_name>::decode(&mut value)
+ .map_err(|_| MiscError::$error)
+ }
+ }
+
+ };
+}
+
+pub enum MiscError {
+ CorruptedCollectionType,
+}
+
+impl<T: Config> From<MiscError> for Error<T> {
+ fn from(error: MiscError) -> Self {
+ match error {
+ MiscError::CorruptedCollectionType => Self::CorruptedCollectionType,
+ }
+ }
+}
+
+pub trait IntoNftCollection<T: Config> {
+ fn into_nft_collection(self) -> Result<NonfungibleHandle<T>, Error<T>>;
+}
+
+impl<T: Config> IntoNftCollection<T> for CollectionHandle<T> {
+ fn into_nft_collection(self) -> Result<NonfungibleHandle<T>, Error<T>> {
+ match self.mode {
+ CollectionMode::NFT => Ok(NonfungibleHandle::cast(self)),
+ _ => Err(<Error<T>>::NotRmrkCollection)
+ }
+ }
+}
+
+pub enum RmrkProperty {
+ Metadata,
+ CollectionType,
+}
+
+impl RmrkProperty {
+ pub fn to_key(self) -> PropertyKey {
+ let key = |str_key: &str| {
+ PropertyKey::try_from(
+ str_key.bytes().collect::<Vec<_>>()
+ ).unwrap()
+ };
+
+ match self {
+ Self::Metadata => key("metadata"),
+ Self::CollectionType => key("collection-type"),
+ }
+ }
+}
+
+#[derive(Encode, Decode, PartialEq, Eq)]
+pub enum CollectionType {
+ Regular,
+ Resource,
+ Base,
+}
+
+impl_rmrk_value!(CollectionType, decode_error: CorruptedCollectionType);
pallets/unique/src/lib.rsdiffbeforeafterboth--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -35,16 +35,16 @@
use frame_system::{self as system, ensure_signed};
use sp_runtime::{sp_std::prelude::Vec};
use up_data_structs::{
- CONST_ON_CHAIN_SCHEMA_LIMIT, OFFCHAIN_SCHEMA_LIMIT,
- MAX_COLLECTION_NAME_LENGTH, MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
- AccessMode, CreateItemData, CollectionLimits, CollectionId, CollectionMode, TokenId,
- SchemaVersion, SponsorshipState, CreateCollectionData,
- CreateItemExData, budget, CollectionField, Property, PropertyKey, PropertyKeyPermission,
+ CONST_ON_CHAIN_SCHEMA_LIMIT, OFFCHAIN_SCHEMA_LIMIT, MAX_COLLECTION_NAME_LENGTH,
+ MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH, AccessMode, CreateItemData,
+ CollectionLimits, CollectionId, CollectionMode, TokenId, SchemaVersion, SponsorshipState,
+ CreateCollectionData, CreateItemExData, budget, CollectionField, Property, PropertyKey,
+ PropertyKeyPermission,
};
use pallet_evm::account::CrossAccountId;
use pallet_common::{
- CollectionHandle, Pallet as PalletCommon, CommonWeightInfo,
- dispatch::dispatch_call, dispatch::CollectionDispatch,
+ CollectionHandle, Pallet as PalletCommon, CommonWeightInfo, dispatch::dispatch_call,
+ dispatch::CollectionDispatch,
};
#[cfg(feature = "runtime-benchmarks")]
primitives/data-structs/Cargo.tomldiffbeforeafterboth--- a/primitives/data-structs/Cargo.toml
+++ b/primitives/data-structs/Cargo.toml
@@ -27,6 +27,10 @@
struct-versioning = { path = "../../crates/struct-versioning" }
pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+# RMRK
+# todo git
+rmrk-types = { default-features = false, git = "https://github.com/UniqueNetwork/rmrk-substrate.git", branch = "feature/separate-types-and-traits" }
+
[features]
default = ["std"]
std = [
primitives/data-structs/src/lib.rsdiffbeforeafterboth--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -23,18 +23,31 @@
use frame_support::{
storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},
traits::Get,
+ parameter_types,
};
#[cfg(feature = "serde")]
use serde::{Serialize, Deserialize};
use sp_core::U256;
-use sp_runtime::{ArithmeticError, sp_std::prelude::Vec};
+use sp_runtime::{ArithmeticError, sp_std::prelude::Vec, Permill};
use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
use frame_support::{BoundedVec, traits::ConstU32};
use derivative::Derivative;
use scale_info::TypeInfo;
+// RMRK
+use rmrk_types::{
+ CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,
+};
+pub use rmrk_types::{
+ primitives::{
+ CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,
+ PartId as RmrkPartId, ResourceId as RmrkResourceId,
+ },
+ NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,
+};
+
mod bounded;
pub mod budget;
pub mod mapping;
@@ -96,6 +109,13 @@
pub const MAX_COLLECTION_PROPERTIES_ENCODE_LEN: u32 =
MAX_PROPERTIES_PER_ITEM * MAX_PROPERTY_KEY_LENGTH + MAX_COLLECTION_PROPERTIES_SIZE;
+// 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;
+
pub struct MaxPropertiesPermissionsEncodeLen;
impl Get<u32> for MaxPropertiesPermissionsEncodeLen {
@@ -581,7 +601,8 @@
pub alive: u32,
}
-#[derive(Encode, Decode, PartialEq, Clone, Debug)]
+#[derive(Encode, Decode, Clone, Debug)]
+#[cfg_attr(feature = "std", derive(PartialEq))]
pub struct PhantomType<T>(core::marker::PhantomData<T>);
impl<T: TypeInfo + 'static> TypeInfo for PhantomType<T> {
@@ -636,6 +657,12 @@
pub value: PropertyValue,
}
+impl Into<(PropertyKey, PropertyValue)> for Property {
+ fn into(self) -> (PropertyKey, PropertyValue) {
+ (self.key, self.value)
+ }
+}
+
#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
pub struct PropertyKeyPermission {
@@ -645,6 +672,13 @@
pub permission: PropertyPermission,
}
+impl Into<(PropertyKey, PropertyPermission)> for PropertyKeyPermission {
+ fn into(self) -> (PropertyKey, PropertyPermission) {
+ (self.key, self.permission)
+ }
+}
+
+#[derive(Debug)]
pub enum PropertiesError {
NoSpaceForProperty,
PropertyLimitReached,
@@ -660,7 +694,7 @@
}
impl PropertyScope {
- fn apply(self, key: PropertyKey) -> Result<PropertyKey, PropertiesError> {
+ pub fn apply(self, key: PropertyKey) -> Result<PropertyKey, PropertiesError> {
let scope_str: &[u8] = match self {
Self::None => return Ok(key),
Self::Rmrk => b"rmrk",
@@ -680,18 +714,20 @@
&mut self,
scope: PropertyScope,
key: PropertyKey,
- value: Self::Value
+ value: Self::Value,
) -> Result<(), PropertiesError>;
- fn try_scoped_set_from_iter<I>(
+ fn try_scoped_set_from_iter<I, KV>(
&mut self,
scope: PropertyScope,
- iter: I
+ iter: I,
) -> Result<(), PropertiesError>
where
- I: Iterator<Item=(PropertyKey, Self::Value)>
+ I: Iterator<Item=KV>,
+ KV: Into<(PropertyKey, Self::Value)>
{
- for (key, value) in iter {
+ for kv in iter {
+ let (key, value) = kv.into();
self.try_scoped_set(scope, key, value)?;
}
@@ -702,9 +738,10 @@
self.try_scoped_set(PropertyScope::None, key, value)
}
- fn try_set_from_iter<I>(&mut self, iter: I) -> Result<(), PropertiesError>
+ fn try_set_from_iter<I, KV>(&mut self, iter: I) -> Result<(), PropertiesError>
where
- I: Iterator<Item = (PropertyKey, Self::Value)>,
+ I: Iterator<Item=KV>,
+ KV: Into<(PropertyKey, Self::Value)>
{
self.try_scoped_set_from_iter(PropertyScope::None, iter)
}
@@ -743,10 +780,8 @@
for byte in key.as_slice().iter() {
let byte = *byte;
- if !byte.is_ascii_alphanumeric()
- && byte != b'_'
- && byte != b'-' {
- return Err(PropertiesError::InvalidCharacterInPropertyKey)
+ if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' {
+ return Err(PropertiesError::InvalidCharacterInPropertyKey);
}
}
@@ -761,7 +796,7 @@
&mut self,
scope: PropertyScope,
key: PropertyKey,
- value: Self::Value
+ value: Self::Value,
) -> Result<(), PropertiesError> {
Self::check_property_key(&key)?;
@@ -819,7 +854,7 @@
&mut self,
scope: PropertyScope,
key: PropertyKey,
- value: Self::Value
+ value: Self::Value,
) -> Result<(), PropertiesError> {
let value_len = value.len();
@@ -850,3 +885,43 @@
Properties::new(MAX_TOKEN_PROPERTIES_SIZE)
}
}
+
+// RMRK
+// todo document?
+parameter_types! {
+ #[derive(PartialEq, TypeInfo)]
+ pub const RmrkStringLimit: u32 = 128;
+ #[derive(PartialEq)]
+ pub const RmrkCollectionSymbolLimit: u32 = 100;
+ #[derive(PartialEq)]
+ pub const RmrkResourceSymbolLimit: u32 = 10;
+ #[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 type RmrkCollectionInfo<AccountId> =
+ CollectionInfo<RmrkString, BoundedVec<u8, RmrkCollectionSymbolLimit>, AccountId>;
+pub type RmrkInstanceInfo<AccountId> = NftInfo<AccountId, Permill, RmrkString>;
+pub type RmrkResourceInfo = ResourceInfo<
+ BoundedVec<u8, RmrkResourceSymbolLimit>,
+ RmrkString,
+ BoundedVec<RmrkPartId, RmrkPartsLimit>,
+>;
+pub type RmrkPropertyInfo =
+ PropertyInfo<BoundedVec<u8, RmrkKeyLimit>, BoundedVec<u8, RmrkValueLimit>>;
+pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;
+pub type RmrkPartType =
+ PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;
+pub type RmrkTheme = Theme<RmrkString, Vec<ThemeProperty<RmrkString>>>;
+
+pub type RmrkRpcString = Vec<u8>;
+pub type RmrkThemeName = RmrkRpcString;
+pub type RmrkPropertyKey = RmrkRpcString;
+
+type RmrkString = BoundedVec<u8, RmrkStringLimit>;
runtime/common/Cargo.tomldiffbeforeafterboth--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -106,4 +106,9 @@
[dependencies]
pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
-up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.21' }
+up-sponsorship = { default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring", branch = 'polkadot-v0.9.21' }
+
+# RMRK
+# todo git
+rmrk-rpc = { default-features = false, git = "https://github.com/UniqueNetwork/rmrk-substrate.git", branch = "feature/separate-types-and-traits" }
+rmrk-types = { default-features = false, git = "https://github.com/UniqueNetwork/rmrk-substrate.git", branch = "feature/separate-types-and-traits" }
runtime/common/src/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -130,6 +130,200 @@
}
}
+ 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(<pallet_common::CreatedCollectionCount<Runtime>>::get().0)
+ }
+ fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
+ // TODO decide on displacement to palettes -- does RMRK belong there, spread across common and nonfungible?
+ use frame_support::BoundedVec;
+
+ let collection_id = CollectionId(collection_id);
+ let collection = match <pallet_common::CollectionById<Runtime>>::get(collection_id) {
+ Some(c) => c,
+ None => return Ok(None)
+ };
+ let nfts_count: Result<u32, DispatchError> = dispatch_unique_runtime!(collection_id.total_supply());
+ Ok(Some(RmrkCollectionInfo {
+ issuer: collection.owner,
+ metadata: BoundedVec::default(), // todo property - namespace:metadata
+ max: Some(collection.limits.token_limit()), // must have some effective limits
+ symbol: BoundedVec::try_from(collection.token_prefix.into_inner()).unwrap_or_default() /*{ // todo map_err
+ Ok(s) => s,
+ Err(_) => return Err(pallet_common::Error::<Runtime>::CollectionTokenPrefixLimitExceeded)
+ }*/,
+ nfts_count: nfts_count? // todo? <Runtime>::total_supply(collection_id)
+ }))
+ }
+ fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
+ use frame_support::BoundedVec;
+ use up_data_structs::mapping::TokenAddressMapping;
+
+ let collection_id = CollectionId(collection_id);
+ let nft_id = TokenId(nft_by_id);
+
+ let owner = match (dispatch_unique_runtime!(collection_id.token_owner(nft_id)) as Result<Option<CrossAccountId>, DispatchError>)? {
+ Some(owner) => match <Runtime as pallet_common::Config>::CrossTokenAddressMapping::address_to_token(&owner) {
+ Some((col, tok)) => RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(col.0, tok.0),
+ None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone())
+ },
+ None => return Ok(None)
+ };
+
+ Ok(Some(RmrkInstanceInfo {
+ owner: owner,
+ //recipient: , // prop
+ royalty: None,//Permill::from_percent(0), // prop
+ metadata: BoundedVec::default(), // prop
+ equipped: false, // prop
+ pending: false, // prop
+ }))
+ }
+ fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
+ let cross_account_id = CrossAccountId::from_sub(account_id);
+ let collection_id = CollectionId(collection_id);
+ Ok(
+ (dispatch_unique_runtime!(collection_id.account_tokens(cross_account_id)) as Result<Vec<TokenId>, DispatchError>)?
+ //<Runtime as up_rpc::UniqueApi<Block, CrossAccountId, AccountId>>::account_tokens(collection_id, cross_account_id)?
+ .into_iter()
+ .map(|token| token.0)
+ .collect::<Vec<_>>()
+ )
+ }
+ fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
+ use up_data_structs::mapping::TokenAddressMapping;
+
+ let collection_id = CollectionId(collection_id);
+ let nft_id = TokenId(nft_id);
+ let cross_account_id = CrossAccountId::from_eth(
+ EvmTokenAddressMapping::token_to_address(collection_id, nft_id)
+ );
+
+ Ok(
+ pallet_nonfungible::Owned::<Runtime>::iter_prefix((collection_id, cross_account_id))
+ .map(|(child_id, _)| RmrkNftChild {
+ collection_id: collection_id.0, // todo make sure they're always from this collection
+ nft_id: child_id.0,
+ })
+ .collect()
+ )
+ }
+ fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ use frame_support::BoundedVec;
+
+ let collection_id = CollectionId(collection_id);
+ let properties = pallet_common::Pallet::<Runtime>::collection_properties(collection_id);
+
+ return Ok(match filter_keys {
+ Some(keys) => {
+ let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+ let properties = keys
+ .into_iter()
+ .filter_map(|key| {
+ properties.get(&key).map(|value| RmrkPropertyInfo {
+ key: BoundedVec::try_from(key.into_inner()).unwrap_or_default(),
+ value: BoundedVec::try_from(value.clone().into_inner()).unwrap_or_default(),
+ })
+ })
+ .collect();
+
+ properties
+ }
+ None => {
+ properties
+ .iter()
+ .map(|(key, value)| RmrkPropertyInfo {
+ key: BoundedVec::try_from(key.clone().into_inner()).unwrap_or_default(),
+ value: BoundedVec::try_from(value.clone().into_inner()).unwrap_or_default(),
+ })
+ .collect()
+ }
+ });
+ }
+ fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
+ use frame_support::BoundedVec;
+
+ let collection_id = CollectionId(collection_id);
+ let token_id = TokenId(nft_id);
+
+ let properties = pallet_nonfungible::Pallet::<Runtime>::token_properties((collection_id, token_id)); // todo look into usage of nonfungible
+
+ return Ok(match filter_keys {
+ Some(keys) => {
+ let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+ let properties = keys
+ .into_iter()
+ .filter_map(|key| {
+ properties.get(&key).map(|value| RmrkPropertyInfo {
+ key: BoundedVec::try_from(key.into_inner()).unwrap_or_default(),
+ value: BoundedVec::try_from(value.clone().into_inner()).unwrap_or_default(),
+ })
+ })
+ .collect();
+
+ properties
+ }
+ None => {
+ properties
+ .iter()
+ .map(|(key, value)| RmrkPropertyInfo {
+ key: BoundedVec::try_from(key.clone().into_inner()).unwrap_or_default(),
+ value: BoundedVec::try_from(value.clone().into_inner()).unwrap_or_default(),
+ })
+ .collect()
+ }
+ });
+ }
+ fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
+ todo!()
+ }
+ fn nft_resource_priorities(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceId>, DispatchError> {
+ todo!()
+ }
+ fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
+ use frame_support::{BoundedVec, ensure};
+ use scale_info::prelude::string::String;
+
+ let collection_id = CollectionId(base_id);
+ let collection = match <pallet_common::CollectionById<Runtime>>::get(collection_id) {
+ Some(c) => c,
+ None => return Ok(None)
+ };
+
+ // string_keys_to_bytes_keys
+ let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(
+ Vec::from([String::from("rmrk:base-type").into_bytes()])
+ )?;
+ let properties = pallet_common::Pallet::<Runtime>::filter_collection_properties(collection_id, Some(keys))?;
+ //ensure!(properties.len() == 1); // todo make sure it's fine to have ensure in place // no access to errors from here? displace?
+
+ Ok(Some( RmrkBaseInfo {
+ issuer: collection.owner,
+ base_type: BoundedVec::try_from(properties[0].value.clone().into_inner()).unwrap_or_default(), // todo map_err? no access to errors
+ symbol: BoundedVec::try_from(collection.token_prefix.into_inner()).unwrap_or_default(),
+ }))
+ }
+ fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
+ todo!()
+ }
+ fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
+ todo!()
+ }
+ fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
+ todo!()
+ }
+ }
+
impl sp_api::Core<Block> for Runtime {
fn version() -> RuntimeVersion {
VERSION
runtime/common/src/sponsoring.rsdiffbeforeafterboth--- a/runtime/common/src/sponsoring.rs
+++ b/runtime/common/src/sponsoring.rs
@@ -21,17 +21,16 @@
storage::{StorageMap, StorageDoubleMap, StorageNMap},
};
use up_data_structs::{
- CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- NFT_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId, CollectionMode,
- CreateItemData,
+ CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, NFT_SPONSOR_TRANSFER_TIMEOUT,
+ REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId, CollectionMode, CreateItemData,
};
use sp_runtime::traits::Saturating;
use pallet_common::{CollectionHandle};
use pallet_evm::account::CrossAccountId;
use pallet_unique::{
Call as UniqueCall, Config as UniqueConfig, FungibleApproveBasket, RefungibleApproveBasket,
- NftApproveBasket, CreateItemBasket, ReFungibleTransferBasket,
- FungibleTransferBasket, NftTransferBasket,
+ NftApproveBasket, CreateItemBasket, ReFungibleTransferBasket, FungibleTransferBasket,
+ NftTransferBasket,
};
use pallet_fungible::Config as FungibleConfig;
use pallet_nonfungible::Config as NonfungibleConfig;
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -33,6 +33,7 @@
'pallet-fungible/runtime-benchmarks',
'pallet-refungible/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
+ 'pallet-rmrk-proxy/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
@@ -89,6 +90,7 @@
'pallet-fungible/std',
'pallet-refungible/std',
'pallet-nonfungible/std',
+ 'pallet-rmrk-proxy/std',
'pallet-unique/std',
'pallet-unq-scheduler/std',
'pallet-charge-transaction/std',
@@ -109,6 +111,7 @@
'xcm-builder/std',
'xcm-executor/std',
'unique-runtime-common/std',
+ 'rmrk-rpc/std',
"orml-vesting/std",
]
@@ -386,6 +389,15 @@
default-features = false
################################################################################
+# RMRK dependencies
+
+# todo git
+[dependencies.rmrk-rpc]
+default-features = false
+git = "https://github.com/UniqueNetwork/rmrk-substrate.git"
+branch = "feature/separate-types-and-traits"
+
+################################################################################
# local dependencies
[dependencies]
@@ -405,6 +417,7 @@
pallet-fungible = { default-features = false, path = "../../pallets/fungible" }
pallet-refungible = { default-features = false, path = "../../pallets/refungible" }
pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
+pallet-rmrk-proxy = { default-features = false, path = "../../pallets/rmrk-proxy" }
pallet-unq-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.21", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
runtime/opal/src/lib.rsdiffbeforeafterboth--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -901,6 +901,10 @@
type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;
}
+impl pallet_rmrk_proxy::Config for Runtime {
+ type Event = Event;
+}
+
impl pallet_unique::Config for Runtime {
type Event = Event;
type WeightInfo = pallet_unique::weights::SubstrateWeight<Self>;
@@ -1013,6 +1017,7 @@
Refungible: pallet_refungible::{Pallet, Storage} = 68,
Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,
Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,
+ RmrkProxy: pallet_rmrk_proxy::{Pallet, Call, Storage, Event<T>} = 71,
// Frontier
EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -386,6 +386,15 @@
default-features = false
################################################################################
+# RMRK dependencies
+
+# todo git
+[dependencies.rmrk-rpc]
+default-features = false
+git = "https://github.com/UniqueNetwork/rmrk-substrate.git"
+branch = "feature/separate-types-and-traits"
+
+################################################################################
# local dependencies
[dependencies]
runtime/tests/src/tests.rsdiffbeforeafterboth--- a/runtime/tests/src/tests.rs
+++ b/runtime/tests/src/tests.rs
@@ -18,9 +18,9 @@
use crate::{Test, TestCrossAccountId, CollectionCreationPrice, Origin, Unique, new_test_ext};
use up_data_structs::{
COLLECTION_NUMBER_LIMIT, CollectionId, CreateItemData, CreateFungibleData, CreateNftData,
- CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT,
- TokenId, MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionField, SchemaVersion,
- CollectionMode, AccessMode,
+ CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, TokenId,
+ MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionField, SchemaVersion, CollectionMode,
+ AccessMode,
};
use frame_support::{assert_noop, assert_ok, assert_err};
use sp_std::convert::TryInto;
@@ -47,6 +47,7 @@
fn default_nft_data() -> CreateNftData {
CreateNftData {
const_data: vec![1, 2, 3].try_into().unwrap(),
+ properties: vec![].try_into().unwrap(),
}
}
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -386,6 +386,15 @@
default-features = false
################################################################################
+# RMRK dependencies
+
+# todo git
+[dependencies.rmrk-rpc]
+default-features = false
+git = "https://github.com/UniqueNetwork/rmrk-substrate.git"
+branch = "feature/separate-types-and-traits"
+
+################################################################################
# local dependencies
[dependencies]
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, 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, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission } 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, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftChild, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission } from '@polkadot/types/lookup';
import type { Observable } from '@polkadot/types/types';
declare module '@polkadot/api-base/types/storage' {
@@ -92,7 +92,7 @@
/**
* Not used by code, exists only to provide some types to metadata
**/
- dummyStorageValue: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[UpDataStructsCollectionStats, u32, u32, PhantomTypeUpDataStructsTokenData, PhantomTypeUpDataStructsRpcCollection]>>>, []> & QueryableStorageEntry<ApiType, []>;
+ dummyStorageValue: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[UpDataStructsCollectionStats, u32, u32, PhantomTypeUpDataStructsTokenData, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsNftChild]>>>, []> & QueryableStorageEntry<ApiType, []>;
/**
* List of collection admins
**/
tests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -1,7 +1,7 @@
// Auto-generated via `yarn polkadot-types-from-chain`, do not edit
/* eslint-disable */
-import type { PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenData } from './unique';
+import type { PalletEvmAccountBasicCrossAccountIdRepr, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenData } from './unique';
import type { AugmentedRpc } from '@polkadot/rpc-core/types';
import type { Metadata, StorageKey } from '@polkadot/types';
import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec';
@@ -22,7 +22,7 @@
import type { StorageKind } from '@polkadot/types/interfaces/offchain';
import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';
import type { RpcMethods } from '@polkadot/types/interfaces/rpc';
-import type { AccountId, BlockNumber, H160, H256, H64, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime';
+import type { AccountId, AccountId32, BlockNumber, H160, H256, H64, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime';
import type { MigrationStatusResult, ReadProof, RuntimeVersion, TraceBlockResponse } from '@polkadot/types/interfaces/state';
import type { ApplyExtrinsicResult, ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo, SyncState } from '@polkadot/types/interfaces/system';
import type { IExtrinsic, Observable } from '@polkadot/types/types';
@@ -393,6 +393,60 @@
**/
queryInfo: AugmentedRpc<(extrinsic: Bytes | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<RuntimeDispatchInfo>>;
};
+ rmrk: {
+ /**
+ * Get tokens owned by an account in a collection
+ **/
+ accountTokens: AugmentedRpc<(accountId: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<u32>>>;
+ /**
+ * Get base info
+ **/
+ base: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesBaseInfo>>>;
+ /**
+ * Get all Base's parts
+ **/
+ baseParts: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesPartType>>>;
+ /**
+ * Get collection by id
+ **/
+ collectionById: AugmentedRpc<(id: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesCollectionInfo>>>;
+ /**
+ * Get collection properties
+ **/
+ collectionProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesPropertyInfo>>>;
+ /**
+ * Get the latest created collection id
+ **/
+ lastCollectionIdx: AugmentedRpc<(at?: Hash | string | Uint8Array) => Observable<u32>>;
+ /**
+ * Get NFT by collection id and NFT id
+ **/
+ nftById: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesNftInfo>>>;
+ /**
+ * Get NFT children
+ **/
+ nftChildren: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesNftChild>>>;
+ /**
+ * Get NFT properties
+ **/
+ nftProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesPropertyInfo>>>;
+ /**
+ * Get NFT resource priorities
+ **/
+ nftResourcePriorities: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<Bytes>>>;
+ /**
+ * Get NFT resources
+ **/
+ nftResources: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesResourceInfo>>>;
+ /**
+ * Get Base's theme names
+ **/
+ themeNames: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<Bytes>>>;
+ /**
+ * Get Theme's keys values
+ **/
+ themes: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, themeName: Text | string, keys: Option<Vec<Text>> | null | object | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesTheme>>>;
+ };
rpc: {
/**
* Retrieves the list of RPC methods that are exposed by the node
tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -3,7 +3,7 @@
import type { ApiTypes } from '@polkadot/api-base/types';
import type { Bytes, Compact, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
-import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
+import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';
import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsAccessMode, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsSchemaVersion, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
@@ -378,7 +378,7 @@
* - Weight of derivative `call` execution + 10,000.
* # </weight>
**/
- sudo: AugmentedSubmittable<(call: Call) => SubmittableExtrinsic<ApiType>, [Call]>;
+ sudo: AugmentedSubmittable<(call: Call | IMethod | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call]>;
/**
* Authenticates the sudo key and dispatches a function call with `Signed` origin from
* a given account.
@@ -392,7 +392,7 @@
* - Weight of derivative `call` execution + 10,000.
* # </weight>
**/
- sudoAs: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, call: Call) => SubmittableExtrinsic<ApiType>, [MultiAddress, Call]>;
+ sudoAs: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, call: Call | IMethod | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, Call]>;
/**
* Authenticates the sudo key and dispatches a function call with `Root` origin.
* This function does not check the weight of the call, and instead allows the
@@ -405,7 +405,7 @@
* - The weight of this call is defined by the caller.
* # </weight>
**/
- sudoUncheckedWeight: AugmentedSubmittable<(call: Call, weight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call, u64]>;
+ sudoUncheckedWeight: AugmentedSubmittable<(call: Call | IMethod | string | Uint8Array, weight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call, u64]>;
/**
* Generic tx
**/
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, 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, FrameSupportPalletId, FrameSupportStorageBoundedBTreeSet, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, 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 './unique';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, 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, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftChild, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTypesAccountIdOrCollectionNftTuple, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesEquippableList, RmrkTypesFixedPart, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesRoyaltyInfo, RmrkTypesSlotPart, RmrkTypesTheme, RmrkTypesThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, 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 './unique';
import type { Data, StorageKey } from '@polkadot/types';
import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, 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';
@@ -478,7 +478,6 @@
ForkTreePendingChangeNode: ForkTreePendingChangeNode;
FpRpcTransactionStatus: FpRpcTransactionStatus;
FrameSupportPalletId: FrameSupportPalletId;
- FrameSupportStorageBoundedBTreeSet: FrameSupportStorageBoundedBTreeSet;
FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;
FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;
FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;
@@ -850,7 +849,15 @@
PerU16: PerU16;
Phantom: Phantom;
PhantomData: PhantomData;
+ PhantomTypeUpDataStructsBaseInfo: PhantomTypeUpDataStructsBaseInfo;
+ PhantomTypeUpDataStructsCollectionInfo: PhantomTypeUpDataStructsCollectionInfo;
+ PhantomTypeUpDataStructsNftChild: PhantomTypeUpDataStructsNftChild;
+ PhantomTypeUpDataStructsNftInfo: PhantomTypeUpDataStructsNftInfo;
+ PhantomTypeUpDataStructsPartType: PhantomTypeUpDataStructsPartType;
+ PhantomTypeUpDataStructsPropertyInfo: PhantomTypeUpDataStructsPropertyInfo;
+ PhantomTypeUpDataStructsResourceInfo: PhantomTypeUpDataStructsResourceInfo;
PhantomTypeUpDataStructsRpcCollection: PhantomTypeUpDataStructsRpcCollection;
+ PhantomTypeUpDataStructsTheme: PhantomTypeUpDataStructsTheme;
PhantomTypeUpDataStructsTokenData: PhantomTypeUpDataStructsTokenData;
Phase: Phase;
PhragmenScore: PhragmenScore;
@@ -943,6 +950,20 @@
Retriable: Retriable;
RewardDestination: RewardDestination;
RewardPoint: RewardPoint;
+ RmrkTypesAccountIdOrCollectionNftTuple: RmrkTypesAccountIdOrCollectionNftTuple;
+ RmrkTypesBaseInfo: RmrkTypesBaseInfo;
+ RmrkTypesCollectionInfo: RmrkTypesCollectionInfo;
+ RmrkTypesEquippableList: RmrkTypesEquippableList;
+ RmrkTypesFixedPart: RmrkTypesFixedPart;
+ RmrkTypesNftChild: RmrkTypesNftChild;
+ RmrkTypesNftInfo: RmrkTypesNftInfo;
+ RmrkTypesPartType: RmrkTypesPartType;
+ RmrkTypesPropertyInfo: RmrkTypesPropertyInfo;
+ RmrkTypesResourceInfo: RmrkTypesResourceInfo;
+ RmrkTypesRoyaltyInfo: RmrkTypesRoyaltyInfo;
+ RmrkTypesSlotPart: RmrkTypesSlotPart;
+ RmrkTypesTheme: RmrkTypesTheme;
+ RmrkTypesThemeProperty: RmrkTypesThemeProperty;
RoundSnapshot: RoundSnapshot;
RoundState: RoundState;
RpcMethods: RpcMethods;
tests/src/interfaces/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/definitions.ts
+++ b/tests/src/interfaces/definitions.ts
@@ -15,3 +15,4 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
export {default as unique} from './unique/definitions';
+export {default as rmrk} from './rmrk/definitions';
tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1448,14 +1448,10 @@
_enum: {
Disabled: 'Null',
Owner: 'Null',
- OwnerRestricted: 'FrameSupportStorageBoundedBTreeSet'
+ OwnerRestricted: 'BTreeSet<u32>'
}
},
/**
- * Lookup171: frame_support::storage::bounded_btree_set::BoundedBTreeSet<up_data_structs::CollectionId, S>
- **/
- FrameSupportStorageBoundedBTreeSet: 'BTreeSet<u32>',
- /**
* Lookup177: up_data_structs::PropertyKeyPermission
**/
UpDataStructsPropertyKeyPermission: {
@@ -2351,56 +2347,212 @@
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup333: pallet_common::pallet::Error<T>
+ * Lookup333: PhantomType::up_data_structs<rmrk_types::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>>
+ **/
+ PhantomTypeUpDataStructsCollectionInfo: '[Lookup334;0]',
+ /**
+ * Lookup334: rmrk_types::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
+ **/
+ RmrkTypesCollectionInfo: {
+ issuer: 'AccountId32',
+ metadata: 'Bytes',
+ max: 'Option<u32>',
+ symbol: 'Bytes',
+ nftsCount: 'u32'
+ },
+ /**
+ * Lookup338: PhantomType::up_data_structs<rmrk_types::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+ **/
+ PhantomTypeUpDataStructsNftInfo: '[Lookup339;0]',
+ /**
+ * Lookup339: rmrk_types::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesNftInfo: {
+ owner: 'RmrkTypesAccountIdOrCollectionNftTuple',
+ royalty: 'Option<RmrkTypesRoyaltyInfo>',
+ metadata: 'Bytes',
+ equipped: 'bool',
+ pending: 'bool'
+ },
+ /**
+ * Lookup340: rmrk_types::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
+ **/
+ RmrkTypesAccountIdOrCollectionNftTuple: {
+ _enum: {
+ AccountId: 'AccountId32',
+ CollectionAndNftTuple: '(u32,u32)'
+ }
+ },
+ /**
+ * Lookup342: rmrk_types::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
+ **/
+ RmrkTypesRoyaltyInfo: {
+ recipient: 'AccountId32',
+ amount: 'Permill'
+ },
+ /**
+ * Lookup344: PhantomType::up_data_structs<rmrk_types::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+ **/
+ PhantomTypeUpDataStructsResourceInfo: '[Lookup345;0]',
+ /**
+ * Lookup345: rmrk_types::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesResourceInfo: {
+ id: 'Bytes',
+ pending: 'bool',
+ pendingRemoval: 'bool',
+ parts: 'Option<Vec<u32>>',
+ base: 'Option<u32>',
+ src: 'Option<Bytes>',
+ metadata: 'Option<Bytes>',
+ slot: 'Option<u32>',
+ license: 'Option<Bytes>',
+ thumb: 'Option<Bytes>'
+ },
+ /**
+ * Lookup351: PhantomType::up_data_structs<rmrk_types::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+ **/
+ PhantomTypeUpDataStructsPropertyInfo: '[Lookup352;0]',
+ /**
+ * Lookup352: rmrk_types::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesPropertyInfo: {
+ key: 'Bytes',
+ value: 'Bytes'
+ },
+ /**
+ * Lookup356: PhantomType::up_data_structs<rmrk_types::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+ **/
+ PhantomTypeUpDataStructsBaseInfo: '[Lookup357;0]',
+ /**
+ * Lookup357: rmrk_types::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesBaseInfo: {
+ issuer: 'AccountId32',
+ baseType: 'Bytes',
+ symbol: 'Bytes'
+ },
+ /**
+ * Lookup359: PhantomType::up_data_structs<rmrk_types::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+ **/
+ PhantomTypeUpDataStructsPartType: '[Lookup360;0]',
+ /**
+ * Lookup360: rmrk_types::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesPartType: {
+ _enum: {
+ FixedPart: 'RmrkTypesFixedPart',
+ SlotPart: 'RmrkTypesSlotPart'
+ }
+ },
+ /**
+ * Lookup362: rmrk_types::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesFixedPart: {
+ id: 'u32',
+ z: 'u32',
+ src: 'Bytes'
+ },
+ /**
+ * Lookup363: rmrk_types::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesSlotPart: {
+ id: 'u32',
+ equippable: 'RmrkTypesEquippableList',
+ src: 'Bytes',
+ z: 'u32'
+ },
+ /**
+ * Lookup364: rmrk_types::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesEquippableList: {
+ _enum: {
+ All: 'Null',
+ Empty: 'Null',
+ Custom: 'Vec<u32>'
+ }
+ },
+ /**
+ * Lookup366: PhantomType::up_data_structs<rmrk_types::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, BoundedPropertyList>>
+ **/
+ PhantomTypeUpDataStructsTheme: '[Lookup367;0]',
+ /**
+ * Lookup367: rmrk_types::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, BoundedPropertyList>
+ **/
+ RmrkTypesTheme: {
+ name: 'Bytes',
+ properties: 'Vec<RmrkTypesThemeProperty>',
+ inherit: 'bool'
+ },
+ /**
+ * Lookup369: rmrk_types::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+ **/
+ RmrkTypesThemeProperty: {
+ key: 'Bytes',
+ value: 'Bytes'
+ },
+ /**
+ * Lookup371: PhantomType::up_data_structs<rmrk_types::NftChild>
+ **/
+ PhantomTypeUpDataStructsNftChild: '[Lookup372;0]',
+ /**
+ * Lookup372: rmrk_types::NftChild
+ **/
+ RmrkTypesNftChild: {
+ collectionId: 'u32',
+ nftId: 'u32'
+ },
+ /**
+ * Lookup374: pallet_common::pallet::Error<T>
**/
PalletCommonError: {
_enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey']
},
/**
- * Lookup335: pallet_fungible::pallet::Error<T>
+ * Lookup376: pallet_fungible::pallet::Error<T>
**/
PalletFungibleError: {
_enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
},
/**
- * Lookup336: pallet_refungible::ItemData
+ * Lookup377: pallet_refungible::ItemData
**/
PalletRefungibleItemData: {
constData: 'Bytes'
},
/**
- * Lookup340: pallet_refungible::pallet::Error<T>
+ * Lookup381: pallet_refungible::pallet::Error<T>
**/
PalletRefungibleError: {
_enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
},
/**
- * Lookup341: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup382: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
PalletNonfungibleItemData: {
constData: 'Bytes',
owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup342: pallet_nonfungible::pallet::Error<T>
+ * Lookup383: pallet_nonfungible::pallet::Error<T>
**/
PalletNonfungibleError: {
_enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount']
},
/**
- * Lookup343: pallet_structure::pallet::Error<T>
+ * Lookup384: pallet_structure::pallet::Error<T>
**/
PalletStructureError: {
_enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound']
},
/**
- * Lookup346: pallet_evm::pallet::Error<T>
+ * Lookup387: pallet_evm::pallet::Error<T>
**/
PalletEvmError: {
_enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
},
/**
- * Lookup349: fp_rpc::TransactionStatus
+ * Lookup390: fp_rpc::TransactionStatus
**/
FpRpcTransactionStatus: {
transactionHash: 'H256',
@@ -2412,11 +2564,11 @@
logsBloom: 'EthbloomBloom'
},
/**
- * Lookup351: ethbloom::Bloom
+ * Lookup392: ethbloom::Bloom
**/
EthbloomBloom: '[u8;256]',
/**
- * Lookup353: ethereum::receipt::ReceiptV3
+ * Lookup394: ethereum::receipt::ReceiptV3
**/
EthereumReceiptReceiptV3: {
_enum: {
@@ -2426,7 +2578,7 @@
}
},
/**
- * Lookup354: ethereum::receipt::EIP658ReceiptData
+ * Lookup395: ethereum::receipt::EIP658ReceiptData
**/
EthereumReceiptEip658ReceiptData: {
statusCode: 'u8',
@@ -2435,7 +2587,7 @@
logs: 'Vec<EthereumLog>'
},
/**
- * Lookup355: ethereum::block::Block<ethereum::transaction::TransactionV2>
+ * Lookup396: ethereum::block::Block<ethereum::transaction::TransactionV2>
**/
EthereumBlock: {
header: 'EthereumHeader',
@@ -2443,7 +2595,7 @@
ommers: 'Vec<EthereumHeader>'
},
/**
- * Lookup356: ethereum::header::Header
+ * Lookup397: ethereum::header::Header
**/
EthereumHeader: {
parentHash: 'H256',
@@ -2463,41 +2615,41 @@
nonce: 'EthereumTypesHashH64'
},
/**
- * Lookup357: ethereum_types::hash::H64
+ * Lookup398: ethereum_types::hash::H64
**/
EthereumTypesHashH64: '[u8;8]',
/**
- * Lookup362: pallet_ethereum::pallet::Error<T>
+ * Lookup403: pallet_ethereum::pallet::Error<T>
**/
PalletEthereumError: {
_enum: ['InvalidSignature', 'PreLogExists']
},
/**
- * Lookup363: pallet_evm_coder_substrate::pallet::Error<T>
+ * Lookup404: pallet_evm_coder_substrate::pallet::Error<T>
**/
PalletEvmCoderSubstrateError: {
_enum: ['OutOfGas', 'OutOfFund']
},
/**
- * Lookup364: pallet_evm_contract_helpers::SponsoringModeT
+ * Lookup405: pallet_evm_contract_helpers::SponsoringModeT
**/
PalletEvmContractHelpersSponsoringModeT: {
_enum: ['Disabled', 'Allowlisted', 'Generous']
},
/**
- * Lookup366: pallet_evm_contract_helpers::pallet::Error<T>
+ * Lookup407: pallet_evm_contract_helpers::pallet::Error<T>
**/
PalletEvmContractHelpersError: {
_enum: ['NoPermission']
},
/**
- * Lookup367: pallet_evm_migration::pallet::Error<T>
+ * Lookup408: pallet_evm_migration::pallet::Error<T>
**/
PalletEvmMigrationError: {
_enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
},
/**
- * Lookup369: sp_runtime::MultiSignature
+ * Lookup410: sp_runtime::MultiSignature
**/
SpRuntimeMultiSignature: {
_enum: {
@@ -2507,43 +2659,43 @@
}
},
/**
- * Lookup370: sp_core::ed25519::Signature
+ * Lookup411: sp_core::ed25519::Signature
**/
SpCoreEd25519Signature: '[u8;64]',
/**
- * Lookup372: sp_core::sr25519::Signature
+ * Lookup413: sp_core::sr25519::Signature
**/
SpCoreSr25519Signature: '[u8;64]',
/**
- * Lookup373: sp_core::ecdsa::Signature
+ * Lookup414: sp_core::ecdsa::Signature
**/
SpCoreEcdsaSignature: '[u8;65]',
/**
- * Lookup376: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+ * Lookup417: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
**/
FrameSystemExtensionsCheckSpecVersion: 'Null',
/**
- * Lookup377: frame_system::extensions::check_genesis::CheckGenesis<T>
+ * Lookup418: frame_system::extensions::check_genesis::CheckGenesis<T>
**/
FrameSystemExtensionsCheckGenesis: 'Null',
/**
- * Lookup380: frame_system::extensions::check_nonce::CheckNonce<T>
+ * Lookup421: frame_system::extensions::check_nonce::CheckNonce<T>
**/
FrameSystemExtensionsCheckNonce: 'Compact<u32>',
/**
- * Lookup381: frame_system::extensions::check_weight::CheckWeight<T>
+ * Lookup422: frame_system::extensions::check_weight::CheckWeight<T>
**/
FrameSystemExtensionsCheckWeight: 'Null',
/**
- * Lookup382: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+ * Lookup423: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
**/
PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
/**
- * Lookup383: opal_runtime::Runtime
+ * Lookup424: opal_runtime::Runtime
**/
OpalRuntimeRuntime: 'Null',
/**
- * Lookup384: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
+ * Lookup425: 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, 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, FrameSupportPalletId, FrameSupportStorageBoundedBTreeSet, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, 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, 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, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftChild, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTypesAccountIdOrCollectionNftTuple, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesEquippableList, RmrkTypesFixedPart, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesRoyaltyInfo, RmrkTypesSlotPart, RmrkTypesTheme, RmrkTypesThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, 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 {
@@ -47,7 +47,6 @@
EvmCoreErrorExitSucceed: EvmCoreErrorExitSucceed;
FpRpcTransactionStatus: FpRpcTransactionStatus;
FrameSupportPalletId: FrameSupportPalletId;
- FrameSupportStorageBoundedBTreeSet: FrameSupportStorageBoundedBTreeSet;
FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;
FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;
FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;
@@ -125,7 +124,15 @@
PalletXcmCall: PalletXcmCall;
PalletXcmError: PalletXcmError;
PalletXcmEvent: PalletXcmEvent;
+ PhantomTypeUpDataStructsBaseInfo: PhantomTypeUpDataStructsBaseInfo;
+ PhantomTypeUpDataStructsCollectionInfo: PhantomTypeUpDataStructsCollectionInfo;
+ PhantomTypeUpDataStructsNftChild: PhantomTypeUpDataStructsNftChild;
+ PhantomTypeUpDataStructsNftInfo: PhantomTypeUpDataStructsNftInfo;
+ PhantomTypeUpDataStructsPartType: PhantomTypeUpDataStructsPartType;
+ PhantomTypeUpDataStructsPropertyInfo: PhantomTypeUpDataStructsPropertyInfo;
+ PhantomTypeUpDataStructsResourceInfo: PhantomTypeUpDataStructsResourceInfo;
PhantomTypeUpDataStructsRpcCollection: PhantomTypeUpDataStructsRpcCollection;
+ PhantomTypeUpDataStructsTheme: PhantomTypeUpDataStructsTheme;
PhantomTypeUpDataStructsTokenData: PhantomTypeUpDataStructsTokenData;
PolkadotCorePrimitivesInboundDownwardMessage: PolkadotCorePrimitivesInboundDownwardMessage;
PolkadotCorePrimitivesInboundHrmpMessage: PolkadotCorePrimitivesInboundHrmpMessage;
@@ -135,6 +142,20 @@
PolkadotPrimitivesV2AbridgedHrmpChannel: PolkadotPrimitivesV2AbridgedHrmpChannel;
PolkadotPrimitivesV2PersistedValidationData: PolkadotPrimitivesV2PersistedValidationData;
PolkadotPrimitivesV2UpgradeRestriction: PolkadotPrimitivesV2UpgradeRestriction;
+ RmrkTypesAccountIdOrCollectionNftTuple: RmrkTypesAccountIdOrCollectionNftTuple;
+ RmrkTypesBaseInfo: RmrkTypesBaseInfo;
+ RmrkTypesCollectionInfo: RmrkTypesCollectionInfo;
+ RmrkTypesEquippableList: RmrkTypesEquippableList;
+ RmrkTypesFixedPart: RmrkTypesFixedPart;
+ RmrkTypesNftChild: RmrkTypesNftChild;
+ RmrkTypesNftInfo: RmrkTypesNftInfo;
+ RmrkTypesPartType: RmrkTypesPartType;
+ RmrkTypesPropertyInfo: RmrkTypesPropertyInfo;
+ RmrkTypesResourceInfo: RmrkTypesResourceInfo;
+ RmrkTypesRoyaltyInfo: RmrkTypesRoyaltyInfo;
+ RmrkTypesSlotPart: RmrkTypesSlotPart;
+ RmrkTypesTheme: RmrkTypesTheme;
+ RmrkTypesThemeProperty: RmrkTypesThemeProperty;
SpCoreEcdsaSignature: SpCoreEcdsaSignature;
SpCoreEd25519Signature: SpCoreEd25519Signature;
SpCoreSr25519Signature: SpCoreSr25519Signature;
tests/src/interfaces/rmrk/definitions.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/rmrk/definitions.ts
@@ -0,0 +1,115 @@
+// 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 types from '../lookup';
+
+type RpcParam = {
+ name: string;
+ type: string;
+ isOptional?: true;
+};
+
+const atParam = {name: 'at', type: 'Hash', isOptional: true};
+const fn = (description: string, params: RpcParam[], type: string) => ({
+ description,
+ params: [...params, atParam],
+ type,
+});
+
+export default {
+ types,
+ rpc: {
+ lastCollectionIdx: fn('Get the latest created collection id', [], 'u32'),
+ collectionById: fn('Get collection by id', [{name: 'id', type: 'u32'}], 'Option<RmrkTypesCollectionInfo>'),
+ nftById: fn(
+ 'Get NFT by collection id and NFT id',
+ [
+ {name: 'collectionId', type: 'u32'},
+ {name: 'nftId', type: 'u32'},
+ ],
+ 'Option<RmrkTypesNftInfo>'
+ ),
+ accountTokens: fn(
+ 'Get tokens owned by an account in a collection',
+ [
+ {name: 'accountId', type: 'AccountId32'},
+ {name: 'collectionId', type: 'u32'}
+ ],
+ 'Vec<u32>'
+ ),
+ nftChildren: fn(
+ 'Get NFT children',
+ [
+ {name: 'collectionId', type: 'u32'},
+ {name: 'nftId', type: 'u32'},
+ ],
+ 'Vec<RmrkTypesNftChild>'
+ ),
+ collectionProperties: fn(
+ 'Get collection properties',
+ [{name: 'collectionId', type: 'u32'}],
+ 'Vec<RmrkTypesPropertyInfo>'
+ ),
+ nftProperties: fn(
+ 'Get NFT properties',
+ [
+ {name: 'collectionId', type: 'u32'},
+ {name: 'nftId', type: 'u32'}
+ ],
+ 'Vec<RmrkTypesPropertyInfo>'
+ ),
+ nftResources: fn(
+ 'Get NFT resources',
+ [
+ {name: 'collectionId', type: 'u32'},
+ {name: 'nftId', type: 'u32'}
+ ],
+ 'Vec<RmrkTypesResourceInfo>'
+ ),
+ nftResourcePriorities: fn(
+ 'Get NFT resource priorities',
+ [
+ {name: 'collectionId', type: 'u32'},
+ {name: 'nftId', type: 'u32'}
+ ],
+ 'Vec<Bytes>'
+ ),
+ base: fn(
+ 'Get base info',
+ [{name: 'baseId', type: 'u32'}],
+ 'Option<RmrkTypesBaseInfo>'
+ ),
+ baseParts: fn(
+ 'Get all Base\'s parts',
+ [{name: 'baseId', type: 'u32'}],
+ 'Vec<RmrkTypesPartType>'
+ ),
+ themeNames: fn(
+ 'Get Base\'s theme names',
+ [{name: 'baseId', type: 'u32'}],
+ 'Vec<Bytes>'
+ ),
+ themes: fn(
+ 'Get Theme\'s keys values',
+ [
+ {name: 'baseId', type: 'u32'},
+ {name: 'themeName', type: 'String'},
+ {name: 'keys', type: 'Option<Vec<String>>'}
+ ],
+ 'Option<RmrkTypesTheme>'
+ )
+ }
+};
tests/src/interfaces/rmrk/index.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/rmrk/index.ts
@@ -0,0 +1,4 @@
+// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
+/* eslint-disable */
+
+export * from './types';
tests/src/interfaces/rmrk/types.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/rmrk/types.ts
@@ -0,0 +1,2910 @@
+// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
+/* eslint-disable */
+
+import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
+import type { ITuple } from '@polkadot/types-codec/types';
+import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
+import type { Event } from '@polkadot/types/interfaces/system';
+
+/** @name CumulusPalletDmpQueueCall */
+export interface CumulusPalletDmpQueueCall extends Enum {
+ readonly isServiceOverweight: boolean;
+ readonly asServiceOverweight: {
+ readonly index: u64;
+ readonly weightLimit: u64;
+ } & Struct;
+ readonly type: 'ServiceOverweight';
+}
+
+/** @name CumulusPalletDmpQueueConfigData */
+export interface CumulusPalletDmpQueueConfigData extends Struct {
+ readonly maxIndividual: u64;
+}
+
+/** @name CumulusPalletDmpQueueError */
+export interface CumulusPalletDmpQueueError extends Enum {
+ readonly isUnknown: boolean;
+ readonly isOverLimit: boolean;
+ readonly type: 'Unknown' | 'OverLimit';
+}
+
+/** @name CumulusPalletDmpQueueEvent */
+export interface CumulusPalletDmpQueueEvent extends Enum {
+ readonly isInvalidFormat: boolean;
+ readonly asInvalidFormat: U8aFixed;
+ readonly isUnsupportedVersion: boolean;
+ readonly asUnsupportedVersion: U8aFixed;
+ readonly isExecutedDownward: boolean;
+ readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;
+ readonly isWeightExhausted: boolean;
+ readonly asWeightExhausted: ITuple<[U8aFixed, u64, u64]>;
+ readonly isOverweightEnqueued: boolean;
+ readonly asOverweightEnqueued: ITuple<[U8aFixed, u64, u64]>;
+ readonly isOverweightServiced: boolean;
+ readonly asOverweightServiced: ITuple<[u64, u64]>;
+ readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
+}
+
+/** @name CumulusPalletDmpQueuePageIndexData */
+export interface CumulusPalletDmpQueuePageIndexData extends Struct {
+ readonly beginUsed: u32;
+ readonly endUsed: u32;
+ readonly overweightCount: u64;
+}
+
+/** @name CumulusPalletParachainSystemCall */
+export interface CumulusPalletParachainSystemCall extends Enum {
+ readonly isSetValidationData: boolean;
+ readonly asSetValidationData: {
+ readonly data: CumulusPrimitivesParachainInherentParachainInherentData;
+ } & Struct;
+ readonly isSudoSendUpwardMessage: boolean;
+ readonly asSudoSendUpwardMessage: {
+ readonly message: Bytes;
+ } & Struct;
+ readonly isAuthorizeUpgrade: boolean;
+ readonly asAuthorizeUpgrade: {
+ readonly codeHash: H256;
+ } & Struct;
+ readonly isEnactAuthorizedUpgrade: boolean;
+ readonly asEnactAuthorizedUpgrade: {
+ readonly code: Bytes;
+ } & Struct;
+ readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';
+}
+
+/** @name CumulusPalletParachainSystemError */
+export interface CumulusPalletParachainSystemError extends Enum {
+ readonly isOverlappingUpgrades: boolean;
+ readonly isProhibitedByPolkadot: boolean;
+ readonly isTooBig: boolean;
+ readonly isValidationDataNotAvailable: boolean;
+ readonly isHostConfigurationNotAvailable: boolean;
+ readonly isNotScheduled: boolean;
+ readonly isNothingAuthorized: boolean;
+ readonly isUnauthorized: boolean;
+ readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';
+}
+
+/** @name CumulusPalletParachainSystemEvent */
+export interface CumulusPalletParachainSystemEvent extends Enum {
+ readonly isValidationFunctionStored: boolean;
+ readonly isValidationFunctionApplied: boolean;
+ readonly asValidationFunctionApplied: u32;
+ readonly isValidationFunctionDiscarded: boolean;
+ readonly isUpgradeAuthorized: boolean;
+ readonly asUpgradeAuthorized: H256;
+ readonly isDownwardMessagesReceived: boolean;
+ readonly asDownwardMessagesReceived: u32;
+ readonly isDownwardMessagesProcessed: boolean;
+ readonly asDownwardMessagesProcessed: ITuple<[u64, H256]>;
+ readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';
+}
+
+/** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot */
+export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {
+ readonly dmqMqcHead: H256;
+ readonly relayDispatchQueueSize: ITuple<[u32, u32]>;
+ readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
+ readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
+}
+
+/** @name CumulusPalletXcmCall */
+export interface CumulusPalletXcmCall extends Null {}
+
+/** @name CumulusPalletXcmError */
+export interface CumulusPalletXcmError extends Null {}
+
+/** @name CumulusPalletXcmEvent */
+export interface CumulusPalletXcmEvent extends Enum {
+ readonly isInvalidFormat: boolean;
+ readonly asInvalidFormat: U8aFixed;
+ readonly isUnsupportedVersion: boolean;
+ readonly asUnsupportedVersion: U8aFixed;
+ readonly isExecutedDownward: boolean;
+ readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;
+ readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';
+}
+
+/** @name CumulusPalletXcmpQueueCall */
+export interface CumulusPalletXcmpQueueCall extends Enum {
+ readonly isServiceOverweight: boolean;
+ readonly asServiceOverweight: {
+ readonly index: u64;
+ readonly weightLimit: u64;
+ } & Struct;
+ readonly isSuspendXcmExecution: boolean;
+ readonly isResumeXcmExecution: boolean;
+ readonly isUpdateSuspendThreshold: boolean;
+ readonly asUpdateSuspendThreshold: {
+ readonly new_: u32;
+ } & Struct;
+ readonly isUpdateDropThreshold: boolean;
+ readonly asUpdateDropThreshold: {
+ readonly new_: u32;
+ } & Struct;
+ readonly isUpdateResumeThreshold: boolean;
+ readonly asUpdateResumeThreshold: {
+ readonly new_: u32;
+ } & Struct;
+ readonly isUpdateThresholdWeight: boolean;
+ readonly asUpdateThresholdWeight: {
+ readonly new_: u64;
+ } & Struct;
+ readonly isUpdateWeightRestrictDecay: boolean;
+ readonly asUpdateWeightRestrictDecay: {
+ readonly new_: u64;
+ } & Struct;
+ readonly isUpdateXcmpMaxIndividualWeight: boolean;
+ readonly asUpdateXcmpMaxIndividualWeight: {
+ readonly new_: u64;
+ } & Struct;
+ readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';
+}
+
+/** @name CumulusPalletXcmpQueueError */
+export interface CumulusPalletXcmpQueueError extends Enum {
+ readonly isFailedToSend: boolean;
+ readonly isBadXcmOrigin: boolean;
+ readonly isBadXcm: boolean;
+ readonly isBadOverweightIndex: boolean;
+ readonly isWeightOverLimit: boolean;
+ readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
+}
+
+/** @name CumulusPalletXcmpQueueEvent */
+export interface CumulusPalletXcmpQueueEvent extends Enum {
+ readonly isSuccess: boolean;
+ readonly asSuccess: Option<H256>;
+ readonly isFail: boolean;
+ readonly asFail: ITuple<[Option<H256>, XcmV2TraitsError]>;
+ readonly isBadVersion: boolean;
+ readonly asBadVersion: Option<H256>;
+ readonly isBadFormat: boolean;
+ readonly asBadFormat: Option<H256>;
+ readonly isUpwardMessageSent: boolean;
+ readonly asUpwardMessageSent: Option<H256>;
+ readonly isXcmpMessageSent: boolean;
+ readonly asXcmpMessageSent: Option<H256>;
+ readonly isOverweightEnqueued: boolean;
+ readonly asOverweightEnqueued: ITuple<[u32, u32, u64, u64]>;
+ readonly isOverweightServiced: boolean;
+ readonly asOverweightServiced: ITuple<[u64, u64]>;
+ readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';
+}
+
+/** @name CumulusPalletXcmpQueueInboundChannelDetails */
+export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
+ readonly sender: u32;
+ readonly state: CumulusPalletXcmpQueueInboundState;
+ readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
+}
+
+/** @name CumulusPalletXcmpQueueInboundState */
+export interface CumulusPalletXcmpQueueInboundState extends Enum {
+ readonly isOk: boolean;
+ readonly isSuspended: boolean;
+ readonly type: 'Ok' | 'Suspended';
+}
+
+/** @name CumulusPalletXcmpQueueOutboundChannelDetails */
+export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
+ readonly recipient: u32;
+ readonly state: CumulusPalletXcmpQueueOutboundState;
+ readonly signalsExist: bool;
+ readonly firstIndex: u16;
+ readonly lastIndex: u16;
+}
+
+/** @name CumulusPalletXcmpQueueOutboundState */
+export interface CumulusPalletXcmpQueueOutboundState extends Enum {
+ readonly isOk: boolean;
+ readonly isSuspended: boolean;
+ readonly type: 'Ok' | 'Suspended';
+}
+
+/** @name CumulusPalletXcmpQueueQueueConfigData */
+export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
+ readonly suspendThreshold: u32;
+ readonly dropThreshold: u32;
+ readonly resumeThreshold: u32;
+ readonly thresholdWeight: u64;
+ readonly weightRestrictDecay: u64;
+ readonly xcmpMaxIndividualWeight: u64;
+}
+
+/** @name CumulusPrimitivesParachainInherentParachainInherentData */
+export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {
+ readonly validationData: PolkadotPrimitivesV2PersistedValidationData;
+ readonly relayChainState: SpTrieStorageProof;
+ readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;
+ readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;
+}
+
+/** @name EthbloomBloom */
+export interface EthbloomBloom extends U8aFixed {}
+
+/** @name EthereumBlock */
+export interface EthereumBlock extends Struct {
+ readonly header: EthereumHeader;
+ readonly transactions: Vec<EthereumTransactionTransactionV2>;
+ readonly ommers: Vec<EthereumHeader>;
+}
+
+/** @name EthereumHeader */
+export interface EthereumHeader extends Struct {
+ readonly parentHash: H256;
+ readonly ommersHash: H256;
+ readonly beneficiary: H160;
+ readonly stateRoot: H256;
+ readonly transactionsRoot: H256;
+ readonly receiptsRoot: H256;
+ readonly logsBloom: EthbloomBloom;
+ readonly difficulty: U256;
+ readonly number: U256;
+ readonly gasLimit: U256;
+ readonly gasUsed: U256;
+ readonly timestamp: u64;
+ readonly extraData: Bytes;
+ readonly mixHash: H256;
+ readonly nonce: EthereumTypesHashH64;
+}
+
+/** @name EthereumLog */
+export interface EthereumLog extends Struct {
+ readonly address: H160;
+ readonly topics: Vec<H256>;
+ readonly data: Bytes;
+}
+
+/** @name EthereumReceiptEip658ReceiptData */
+export interface EthereumReceiptEip658ReceiptData extends Struct {
+ readonly statusCode: u8;
+ readonly usedGas: U256;
+ readonly logsBloom: EthbloomBloom;
+ readonly logs: Vec<EthereumLog>;
+}
+
+/** @name EthereumReceiptReceiptV3 */
+export interface EthereumReceiptReceiptV3 extends Enum {
+ readonly isLegacy: boolean;
+ readonly asLegacy: EthereumReceiptEip658ReceiptData;
+ readonly isEip2930: boolean;
+ readonly asEip2930: EthereumReceiptEip658ReceiptData;
+ readonly isEip1559: boolean;
+ readonly asEip1559: EthereumReceiptEip658ReceiptData;
+ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
+}
+
+/** @name EthereumTransactionAccessListItem */
+export interface EthereumTransactionAccessListItem extends Struct {
+ readonly address: H160;
+ readonly storageKeys: Vec<H256>;
+}
+
+/** @name EthereumTransactionEip1559Transaction */
+export interface EthereumTransactionEip1559Transaction extends Struct {
+ readonly chainId: u64;
+ readonly nonce: U256;
+ readonly maxPriorityFeePerGas: U256;
+ readonly maxFeePerGas: U256;
+ readonly gasLimit: U256;
+ readonly action: EthereumTransactionTransactionAction;
+ readonly value: U256;
+ readonly input: Bytes;
+ readonly accessList: Vec<EthereumTransactionAccessListItem>;
+ readonly oddYParity: bool;
+ readonly r: H256;
+ readonly s: H256;
+}
+
+/** @name EthereumTransactionEip2930Transaction */
+export interface EthereumTransactionEip2930Transaction extends Struct {
+ readonly chainId: u64;
+ readonly nonce: U256;
+ readonly gasPrice: U256;
+ readonly gasLimit: U256;
+ readonly action: EthereumTransactionTransactionAction;
+ readonly value: U256;
+ readonly input: Bytes;
+ readonly accessList: Vec<EthereumTransactionAccessListItem>;
+ readonly oddYParity: bool;
+ readonly r: H256;
+ readonly s: H256;
+}
+
+/** @name EthereumTransactionLegacyTransaction */
+export interface EthereumTransactionLegacyTransaction extends Struct {
+ readonly nonce: U256;
+ readonly gasPrice: U256;
+ readonly gasLimit: U256;
+ readonly action: EthereumTransactionTransactionAction;
+ readonly value: U256;
+ readonly input: Bytes;
+ readonly signature: EthereumTransactionTransactionSignature;
+}
+
+/** @name EthereumTransactionTransactionAction */
+export interface EthereumTransactionTransactionAction extends Enum {
+ readonly isCall: boolean;
+ readonly asCall: H160;
+ readonly isCreate: boolean;
+ readonly type: 'Call' | 'Create';
+}
+
+/** @name EthereumTransactionTransactionSignature */
+export interface EthereumTransactionTransactionSignature extends Struct {
+ readonly v: u64;
+ readonly r: H256;
+ readonly s: H256;
+}
+
+/** @name EthereumTransactionTransactionV2 */
+export interface EthereumTransactionTransactionV2 extends Enum {
+ readonly isLegacy: boolean;
+ readonly asLegacy: EthereumTransactionLegacyTransaction;
+ readonly isEip2930: boolean;
+ readonly asEip2930: EthereumTransactionEip2930Transaction;
+ readonly isEip1559: boolean;
+ readonly asEip1559: EthereumTransactionEip1559Transaction;
+ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
+}
+
+/** @name EthereumTypesHashH64 */
+export interface EthereumTypesHashH64 extends U8aFixed {}
+
+/** @name EvmCoreErrorExitError */
+export interface EvmCoreErrorExitError extends Enum {
+ readonly isStackUnderflow: boolean;
+ readonly isStackOverflow: boolean;
+ readonly isInvalidJump: boolean;
+ readonly isInvalidRange: boolean;
+ readonly isDesignatedInvalid: boolean;
+ readonly isCallTooDeep: boolean;
+ readonly isCreateCollision: boolean;
+ readonly isCreateContractLimit: boolean;
+ readonly isOutOfOffset: boolean;
+ readonly isOutOfGas: boolean;
+ readonly isOutOfFund: boolean;
+ readonly isPcUnderflow: boolean;
+ readonly isCreateEmpty: boolean;
+ readonly isOther: boolean;
+ readonly asOther: Text;
+ readonly isInvalidCode: boolean;
+ readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
+}
+
+/** @name EvmCoreErrorExitFatal */
+export interface EvmCoreErrorExitFatal extends Enum {
+ readonly isNotSupported: boolean;
+ readonly isUnhandledInterrupt: boolean;
+ readonly isCallErrorAsFatal: boolean;
+ readonly asCallErrorAsFatal: EvmCoreErrorExitError;
+ readonly isOther: boolean;
+ readonly asOther: Text;
+ readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
+}
+
+/** @name EvmCoreErrorExitReason */
+export interface EvmCoreErrorExitReason extends Enum {
+ readonly isSucceed: boolean;
+ readonly asSucceed: EvmCoreErrorExitSucceed;
+ readonly isError: boolean;
+ readonly asError: EvmCoreErrorExitError;
+ readonly isRevert: boolean;
+ readonly asRevert: EvmCoreErrorExitRevert;
+ readonly isFatal: boolean;
+ readonly asFatal: EvmCoreErrorExitFatal;
+ readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
+}
+
+/** @name EvmCoreErrorExitRevert */
+export interface EvmCoreErrorExitRevert extends Enum {
+ readonly isReverted: boolean;
+ readonly type: 'Reverted';
+}
+
+/** @name EvmCoreErrorExitSucceed */
+export interface EvmCoreErrorExitSucceed extends Enum {
+ readonly isStopped: boolean;
+ readonly isReturned: boolean;
+ readonly isSuicided: boolean;
+ readonly type: 'Stopped' | 'Returned' | 'Suicided';
+}
+
+/** @name FpRpcTransactionStatus */
+export interface FpRpcTransactionStatus extends Struct {
+ readonly transactionHash: H256;
+ readonly transactionIndex: u32;
+ readonly from: H160;
+ readonly to: Option<H160>;
+ readonly contractAddress: Option<H160>;
+ readonly logs: Vec<EthereumLog>;
+ readonly logsBloom: EthbloomBloom;
+}
+
+/** @name FrameSupportPalletId */
+export interface FrameSupportPalletId extends U8aFixed {}
+
+/** @name FrameSupportTokensMiscBalanceStatus */
+export interface FrameSupportTokensMiscBalanceStatus extends Enum {
+ readonly isFree: boolean;
+ readonly isReserved: boolean;
+ readonly type: 'Free' | 'Reserved';
+}
+
+/** @name FrameSupportWeightsDispatchClass */
+export interface FrameSupportWeightsDispatchClass extends Enum {
+ readonly isNormal: boolean;
+ readonly isOperational: boolean;
+ readonly isMandatory: boolean;
+ readonly type: 'Normal' | 'Operational' | 'Mandatory';
+}
+
+/** @name FrameSupportWeightsDispatchInfo */
+export interface FrameSupportWeightsDispatchInfo extends Struct {
+ readonly weight: u64;
+ readonly class: FrameSupportWeightsDispatchClass;
+ readonly paysFee: FrameSupportWeightsPays;
+}
+
+/** @name FrameSupportWeightsPays */
+export interface FrameSupportWeightsPays extends Enum {
+ readonly isYes: boolean;
+ readonly isNo: boolean;
+ readonly type: 'Yes' | 'No';
+}
+
+/** @name FrameSupportWeightsPerDispatchClassU32 */
+export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
+ readonly normal: u32;
+ readonly operational: u32;
+ readonly mandatory: u32;
+}
+
+/** @name FrameSupportWeightsPerDispatchClassU64 */
+export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {
+ readonly normal: u64;
+ readonly operational: u64;
+ readonly mandatory: u64;
+}
+
+/** @name FrameSupportWeightsPerDispatchClassWeightsPerClass */
+export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
+ readonly normal: FrameSystemLimitsWeightsPerClass;
+ readonly operational: FrameSystemLimitsWeightsPerClass;
+ readonly mandatory: FrameSystemLimitsWeightsPerClass;
+}
+
+/** @name FrameSupportWeightsRuntimeDbWeight */
+export interface FrameSupportWeightsRuntimeDbWeight extends Struct {
+ readonly read: u64;
+ readonly write: u64;
+}
+
+/** @name FrameSupportWeightsWeightToFeeCoefficient */
+export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct {
+ readonly coeffInteger: u128;
+ readonly coeffFrac: Perbill;
+ readonly negative: bool;
+ readonly degree: u8;
+}
+
+/** @name FrameSystemAccountInfo */
+export interface FrameSystemAccountInfo extends Struct {
+ readonly nonce: u32;
+ readonly consumers: u32;
+ readonly providers: u32;
+ readonly sufficients: u32;
+ readonly data: PalletBalancesAccountData;
+}
+
+/** @name FrameSystemCall */
+export interface FrameSystemCall extends Enum {
+ readonly isFillBlock: boolean;
+ readonly asFillBlock: {
+ readonly ratio: Perbill;
+ } & Struct;
+ readonly isRemark: boolean;
+ readonly asRemark: {
+ readonly remark: Bytes;
+ } & Struct;
+ readonly isSetHeapPages: boolean;
+ readonly asSetHeapPages: {
+ readonly pages: u64;
+ } & Struct;
+ readonly isSetCode: boolean;
+ readonly asSetCode: {
+ readonly code: Bytes;
+ } & Struct;
+ readonly isSetCodeWithoutChecks: boolean;
+ readonly asSetCodeWithoutChecks: {
+ readonly code: Bytes;
+ } & Struct;
+ readonly isSetStorage: boolean;
+ readonly asSetStorage: {
+ readonly items: Vec<ITuple<[Bytes, Bytes]>>;
+ } & Struct;
+ readonly isKillStorage: boolean;
+ readonly asKillStorage: {
+ readonly keys_: Vec<Bytes>;
+ } & Struct;
+ readonly isKillPrefix: boolean;
+ readonly asKillPrefix: {
+ readonly prefix: Bytes;
+ readonly subkeys: u32;
+ } & Struct;
+ readonly isRemarkWithEvent: boolean;
+ readonly asRemarkWithEvent: {
+ readonly remark: Bytes;
+ } & Struct;
+ readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';
+}
+
+/** @name FrameSystemError */
+export interface FrameSystemError extends Enum {
+ readonly isInvalidSpecName: boolean;
+ readonly isSpecVersionNeedsToIncrease: boolean;
+ readonly isFailedToExtractRuntimeVersion: boolean;
+ readonly isNonDefaultComposite: boolean;
+ readonly isNonZeroRefCount: boolean;
+ readonly isCallFiltered: boolean;
+ readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
+}
+
+/** @name FrameSystemEvent */
+export interface FrameSystemEvent extends Enum {
+ readonly isExtrinsicSuccess: boolean;
+ readonly asExtrinsicSuccess: {
+ readonly dispatchInfo: FrameSupportWeightsDispatchInfo;
+ } & Struct;
+ readonly isExtrinsicFailed: boolean;
+ readonly asExtrinsicFailed: {
+ readonly dispatchError: SpRuntimeDispatchError;
+ readonly dispatchInfo: FrameSupportWeightsDispatchInfo;
+ } & Struct;
+ readonly isCodeUpdated: boolean;
+ readonly isNewAccount: boolean;
+ readonly asNewAccount: {
+ readonly account: AccountId32;
+ } & Struct;
+ readonly isKilledAccount: boolean;
+ readonly asKilledAccount: {
+ readonly account: AccountId32;
+ } & Struct;
+ readonly isRemarked: boolean;
+ readonly asRemarked: {
+ readonly sender: AccountId32;
+ readonly hash_: H256;
+ } & Struct;
+ readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';
+}
+
+/** @name FrameSystemEventRecord */
+export interface FrameSystemEventRecord extends Struct {
+ readonly phase: FrameSystemPhase;
+ readonly event: Event;
+ readonly topics: Vec<H256>;
+}
+
+/** @name FrameSystemExtensionsCheckGenesis */
+export interface FrameSystemExtensionsCheckGenesis extends Null {}
+
+/** @name FrameSystemExtensionsCheckNonce */
+export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
+
+/** @name FrameSystemExtensionsCheckSpecVersion */
+export interface FrameSystemExtensionsCheckSpecVersion extends Null {}
+
+/** @name FrameSystemExtensionsCheckWeight */
+export interface FrameSystemExtensionsCheckWeight extends Null {}
+
+/** @name FrameSystemLastRuntimeUpgradeInfo */
+export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
+ readonly specVersion: Compact<u32>;
+ readonly specName: Text;
+}
+
+/** @name FrameSystemLimitsBlockLength */
+export interface FrameSystemLimitsBlockLength extends Struct {
+ readonly max: FrameSupportWeightsPerDispatchClassU32;
+}
+
+/** @name FrameSystemLimitsBlockWeights */
+export interface FrameSystemLimitsBlockWeights extends Struct {
+ readonly baseBlock: u64;
+ readonly maxBlock: u64;
+ readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
+}
+
+/** @name FrameSystemLimitsWeightsPerClass */
+export interface FrameSystemLimitsWeightsPerClass extends Struct {
+ readonly baseExtrinsic: u64;
+ readonly maxExtrinsic: Option<u64>;
+ readonly maxTotal: Option<u64>;
+ readonly reserved: Option<u64>;
+}
+
+/** @name FrameSystemPhase */
+export interface FrameSystemPhase extends Enum {
+ readonly isApplyExtrinsic: boolean;
+ readonly asApplyExtrinsic: u32;
+ readonly isFinalization: boolean;
+ readonly isInitialization: boolean;
+ readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
+}
+
+/** @name OpalRuntimeRuntime */
+export interface OpalRuntimeRuntime extends Null {}
+
+/** @name OrmlVestingModuleCall */
+export interface OrmlVestingModuleCall extends Enum {
+ readonly isClaim: boolean;
+ readonly isVestedTransfer: boolean;
+ readonly asVestedTransfer: {
+ readonly dest: MultiAddress;
+ readonly schedule: OrmlVestingVestingSchedule;
+ } & Struct;
+ readonly isUpdateVestingSchedules: boolean;
+ readonly asUpdateVestingSchedules: {
+ readonly who: MultiAddress;
+ readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;
+ } & Struct;
+ readonly isClaimFor: boolean;
+ readonly asClaimFor: {
+ readonly dest: MultiAddress;
+ } & Struct;
+ readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';
+}
+
+/** @name OrmlVestingModuleError */
+export interface OrmlVestingModuleError extends Enum {
+ readonly isZeroVestingPeriod: boolean;
+ readonly isZeroVestingPeriodCount: boolean;
+ readonly isInsufficientBalanceToLock: boolean;
+ readonly isTooManyVestingSchedules: boolean;
+ readonly isAmountLow: boolean;
+ readonly isMaxVestingSchedulesExceeded: boolean;
+ readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
+}
+
+/** @name OrmlVestingModuleEvent */
+export interface OrmlVestingModuleEvent extends Enum {
+ readonly isVestingScheduleAdded: boolean;
+ readonly asVestingScheduleAdded: {
+ readonly from: AccountId32;
+ readonly to: AccountId32;
+ readonly vestingSchedule: OrmlVestingVestingSchedule;
+ } & Struct;
+ readonly isClaimed: boolean;
+ readonly asClaimed: {
+ readonly who: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isVestingSchedulesUpdated: boolean;
+ readonly asVestingSchedulesUpdated: {
+ readonly who: AccountId32;
+ } & Struct;
+ readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';
+}
+
+/** @name OrmlVestingVestingSchedule */
+export interface OrmlVestingVestingSchedule extends Struct {
+ readonly start: u32;
+ readonly period: u32;
+ readonly periodCount: u32;
+ readonly perPeriod: Compact<u128>;
+}
+
+/** @name PalletBalancesAccountData */
+export interface PalletBalancesAccountData extends Struct {
+ readonly free: u128;
+ readonly reserved: u128;
+ readonly miscFrozen: u128;
+ readonly feeFrozen: u128;
+}
+
+/** @name PalletBalancesBalanceLock */
+export interface PalletBalancesBalanceLock extends Struct {
+ readonly id: U8aFixed;
+ readonly amount: u128;
+ readonly reasons: PalletBalancesReasons;
+}
+
+/** @name PalletBalancesCall */
+export interface PalletBalancesCall extends Enum {
+ readonly isTransfer: boolean;
+ readonly asTransfer: {
+ readonly dest: MultiAddress;
+ readonly value: Compact<u128>;
+ } & Struct;
+ readonly isSetBalance: boolean;
+ readonly asSetBalance: {
+ readonly who: MultiAddress;
+ readonly newFree: Compact<u128>;
+ readonly newReserved: Compact<u128>;
+ } & Struct;
+ readonly isForceTransfer: boolean;
+ readonly asForceTransfer: {
+ readonly source: MultiAddress;
+ readonly dest: MultiAddress;
+ readonly value: Compact<u128>;
+ } & Struct;
+ readonly isTransferKeepAlive: boolean;
+ readonly asTransferKeepAlive: {
+ readonly dest: MultiAddress;
+ readonly value: Compact<u128>;
+ } & Struct;
+ readonly isTransferAll: boolean;
+ readonly asTransferAll: {
+ readonly dest: MultiAddress;
+ readonly keepAlive: bool;
+ } & Struct;
+ readonly isForceUnreserve: boolean;
+ readonly asForceUnreserve: {
+ readonly who: MultiAddress;
+ readonly amount: u128;
+ } & Struct;
+ readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';
+}
+
+/** @name PalletBalancesError */
+export interface PalletBalancesError extends Enum {
+ readonly isVestingBalance: boolean;
+ readonly isLiquidityRestrictions: boolean;
+ readonly isInsufficientBalance: boolean;
+ readonly isExistentialDeposit: boolean;
+ readonly isKeepAlive: boolean;
+ readonly isExistingVestingSchedule: boolean;
+ readonly isDeadAccount: boolean;
+ readonly isTooManyReserves: boolean;
+ readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';
+}
+
+/** @name PalletBalancesEvent */
+export interface PalletBalancesEvent extends Enum {
+ readonly isEndowed: boolean;
+ readonly asEndowed: {
+ readonly account: AccountId32;
+ readonly freeBalance: u128;
+ } & Struct;
+ readonly isDustLost: boolean;
+ readonly asDustLost: {
+ readonly account: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isTransfer: boolean;
+ readonly asTransfer: {
+ readonly from: AccountId32;
+ readonly to: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isBalanceSet: boolean;
+ readonly asBalanceSet: {
+ readonly who: AccountId32;
+ readonly free: u128;
+ readonly reserved: u128;
+ } & Struct;
+ readonly isReserved: boolean;
+ readonly asReserved: {
+ readonly who: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isUnreserved: boolean;
+ readonly asUnreserved: {
+ readonly who: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isReserveRepatriated: boolean;
+ readonly asReserveRepatriated: {
+ readonly from: AccountId32;
+ readonly to: AccountId32;
+ readonly amount: u128;
+ readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;
+ } & Struct;
+ readonly isDeposit: boolean;
+ readonly asDeposit: {
+ readonly who: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isWithdraw: boolean;
+ readonly asWithdraw: {
+ readonly who: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isSlashed: boolean;
+ readonly asSlashed: {
+ readonly who: AccountId32;
+ readonly amount: u128;
+ } & Struct;
+ readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';
+}
+
+/** @name PalletBalancesReasons */
+export interface PalletBalancesReasons extends Enum {
+ readonly isFee: boolean;
+ readonly isMisc: boolean;
+ readonly isAll: boolean;
+ readonly type: 'Fee' | 'Misc' | 'All';
+}
+
+/** @name PalletBalancesReleases */
+export interface PalletBalancesReleases extends Enum {
+ readonly isV100: boolean;
+ readonly isV200: boolean;
+ readonly type: 'V100' | 'V200';
+}
+
+/** @name PalletBalancesReserveData */
+export interface PalletBalancesReserveData extends Struct {
+ readonly id: U8aFixed;
+ readonly amount: u128;
+}
+
+/** @name PalletCommonError */
+export interface PalletCommonError extends Enum {
+ readonly isCollectionNotFound: boolean;
+ readonly isMustBeTokenOwner: boolean;
+ readonly isNoPermission: boolean;
+ readonly isPublicMintingNotAllowed: boolean;
+ readonly isAddressNotInAllowlist: boolean;
+ readonly isCollectionNameLimitExceeded: boolean;
+ readonly isCollectionDescriptionLimitExceeded: boolean;
+ readonly isCollectionTokenPrefixLimitExceeded: boolean;
+ readonly isTotalCollectionsLimitExceeded: boolean;
+ readonly isCollectionAdminCountExceeded: boolean;
+ readonly isCollectionLimitBoundsExceeded: boolean;
+ readonly isOwnerPermissionsCantBeReverted: boolean;
+ readonly isTransferNotAllowed: boolean;
+ readonly isAccountTokenLimitExceeded: boolean;
+ readonly isCollectionTokenLimitExceeded: boolean;
+ readonly isMetadataFlagFrozen: boolean;
+ readonly isTokenNotFound: boolean;
+ readonly isTokenValueTooLow: boolean;
+ readonly isApprovedValueTooLow: boolean;
+ readonly isCantApproveMoreThanOwned: boolean;
+ readonly isAddressIsZero: boolean;
+ readonly isUnsupportedOperation: boolean;
+ readonly isNotSufficientFounds: boolean;
+ readonly isNestingIsDisabled: boolean;
+ readonly isOnlyOwnerAllowedToNest: boolean;
+ readonly isSourceCollectionIsNotAllowedToNest: boolean;
+ readonly isCollectionFieldSizeExceeded: boolean;
+ readonly isNoSpaceForProperty: boolean;
+ readonly isPropertyLimitReached: boolean;
+ readonly isPropertyKeyIsTooLong: boolean;
+ readonly isInvalidCharacterInPropertyKey: boolean;
+ readonly isEmptyPropertyKey: boolean;
+ readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';
+}
+
+/** @name PalletCommonEvent */
+export interface PalletCommonEvent extends Enum {
+ readonly isCollectionCreated: boolean;
+ readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
+ readonly isCollectionDestroyed: boolean;
+ readonly asCollectionDestroyed: u32;
+ readonly isItemCreated: boolean;
+ readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
+ readonly isItemDestroyed: boolean;
+ readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
+ readonly isTransfer: boolean;
+ readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
+ readonly isApproved: boolean;
+ readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
+ readonly isCollectionPropertySet: boolean;
+ readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;
+ readonly isCollectionPropertyDeleted: boolean;
+ readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;
+ readonly isTokenPropertySet: boolean;
+ readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;
+ readonly isTokenPropertyDeleted: boolean;
+ readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;
+ readonly isPropertyPermissionSet: boolean;
+ readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;
+ readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
+}
+
+/** @name PalletEthereumCall */
+export interface PalletEthereumCall extends Enum {
+ readonly isTransact: boolean;
+ readonly asTransact: {
+ readonly transaction: EthereumTransactionTransactionV2;
+ } & Struct;
+ readonly type: 'Transact';
+}
+
+/** @name PalletEthereumError */
+export interface PalletEthereumError extends Enum {
+ readonly isInvalidSignature: boolean;
+ readonly isPreLogExists: boolean;
+ readonly type: 'InvalidSignature' | 'PreLogExists';
+}
+
+/** @name PalletEthereumEvent */
+export interface PalletEthereumEvent extends Enum {
+ readonly isExecuted: boolean;
+ readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
+ readonly type: 'Executed';
+}
+
+/** @name PalletEthereumFakeTransactionFinalizer */
+export interface PalletEthereumFakeTransactionFinalizer extends Null {}
+
+/** @name PalletEvmAccountBasicCrossAccountIdRepr */
+export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {
+ readonly isSubstrate: boolean;
+ readonly asSubstrate: AccountId32;
+ readonly isEthereum: boolean;
+ readonly asEthereum: H160;
+ readonly type: 'Substrate' | 'Ethereum';
+}
+
+/** @name PalletEvmCall */
+export interface PalletEvmCall extends Enum {
+ readonly isWithdraw: boolean;
+ readonly asWithdraw: {
+ readonly address: H160;
+ readonly value: u128;
+ } & Struct;
+ readonly isCall: boolean;
+ readonly asCall: {
+ readonly source: H160;
+ readonly target: H160;
+ readonly input: Bytes;
+ readonly value: U256;
+ readonly gasLimit: u64;
+ readonly maxFeePerGas: U256;
+ readonly maxPriorityFeePerGas: Option<U256>;
+ readonly nonce: Option<U256>;
+ readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;
+ } & Struct;
+ readonly isCreate: boolean;
+ readonly asCreate: {
+ readonly source: H160;
+ readonly init: Bytes;
+ readonly value: U256;
+ readonly gasLimit: u64;
+ readonly maxFeePerGas: U256;
+ readonly maxPriorityFeePerGas: Option<U256>;
+ readonly nonce: Option<U256>;
+ readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;
+ } & Struct;
+ readonly isCreate2: boolean;
+ readonly asCreate2: {
+ readonly source: H160;
+ readonly init: Bytes;
+ readonly salt: H256;
+ readonly value: U256;
+ readonly gasLimit: u64;
+ readonly maxFeePerGas: U256;
+ readonly maxPriorityFeePerGas: Option<U256>;
+ readonly nonce: Option<U256>;
+ readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;
+ } & Struct;
+ readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
+}
+
+/** @name PalletEvmCoderSubstrateError */
+export interface PalletEvmCoderSubstrateError extends Enum {
+ readonly isOutOfGas: boolean;
+ readonly isOutOfFund: boolean;
+ readonly type: 'OutOfGas' | 'OutOfFund';
+}
+
+/** @name PalletEvmContractHelpersError */
+export interface PalletEvmContractHelpersError extends Enum {
+ readonly isNoPermission: boolean;
+ readonly type: 'NoPermission';
+}
+
+/** @name PalletEvmContractHelpersSponsoringModeT */
+export interface PalletEvmContractHelpersSponsoringModeT extends Enum {
+ readonly isDisabled: boolean;
+ readonly isAllowlisted: boolean;
+ readonly isGenerous: boolean;
+ readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
+}
+
+/** @name PalletEvmError */
+export interface PalletEvmError extends Enum {
+ readonly isBalanceLow: boolean;
+ readonly isFeeOverflow: boolean;
+ readonly isPaymentOverflow: boolean;
+ readonly isWithdrawFailed: boolean;
+ readonly isGasPriceTooLow: boolean;
+ readonly isInvalidNonce: boolean;
+ readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
+}
+
+/** @name PalletEvmEvent */
+export interface PalletEvmEvent extends Enum {
+ readonly isLog: boolean;
+ readonly asLog: EthereumLog;
+ readonly isCreated: boolean;
+ readonly asCreated: H160;
+ readonly isCreatedFailed: boolean;
+ readonly asCreatedFailed: H160;
+ readonly isExecuted: boolean;
+ readonly asExecuted: H160;
+ readonly isExecutedFailed: boolean;
+ readonly asExecutedFailed: H160;
+ readonly isBalanceDeposit: boolean;
+ readonly asBalanceDeposit: ITuple<[AccountId32, H160, U256]>;
+ readonly isBalanceWithdraw: boolean;
+ readonly asBalanceWithdraw: ITuple<[AccountId32, H160, U256]>;
+ readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
+}
+
+/** @name PalletEvmMigrationCall */
+export interface PalletEvmMigrationCall extends Enum {
+ readonly isBegin: boolean;
+ readonly asBegin: {
+ readonly address: H160;
+ } & Struct;
+ readonly isSetData: boolean;
+ readonly asSetData: {
+ readonly address: H160;
+ readonly data: Vec<ITuple<[H256, H256]>>;
+ } & Struct;
+ readonly isFinish: boolean;
+ readonly asFinish: {
+ readonly address: H160;
+ readonly code: Bytes;
+ } & Struct;
+ readonly type: 'Begin' | 'SetData' | 'Finish';
+}
+
+/** @name PalletEvmMigrationError */
+export interface PalletEvmMigrationError extends Enum {
+ readonly isAccountNotEmpty: boolean;
+ readonly isAccountIsNotMigrating: boolean;
+ readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
+}
+
+/** @name PalletFungibleError */
+export interface PalletFungibleError extends Enum {
+ readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
+ readonly isFungibleItemsHaveNoId: boolean;
+ readonly isFungibleItemsDontHaveData: boolean;
+ readonly isFungibleDisallowsNesting: boolean;
+ readonly isSettingPropertiesNotAllowed: boolean;
+ readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
+}
+
+/** @name PalletInflationCall */
+export interface PalletInflationCall extends Enum {
+ readonly isStartInflation: boolean;
+ readonly asStartInflation: {
+ readonly inflationStartRelayBlock: u32;
+ } & Struct;
+ readonly type: 'StartInflation';
+}
+
+/** @name PalletNonfungibleError */
+export interface PalletNonfungibleError extends Enum {
+ readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
+ readonly isNonfungibleItemsHaveNoAmount: boolean;
+ readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount';
+}
+
+/** @name PalletNonfungibleItemData */
+export interface PalletNonfungibleItemData extends Struct {
+ readonly constData: Bytes;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
+}
+
+/** @name PalletRefungibleError */
+export interface PalletRefungibleError extends Enum {
+ readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
+ readonly isWrongRefungiblePieces: boolean;
+ readonly isRefungibleDisallowsNesting: boolean;
+ readonly isSettingPropertiesNotAllowed: boolean;
+ readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
+}
+
+/** @name PalletRefungibleItemData */
+export interface PalletRefungibleItemData extends Struct {
+ readonly constData: Bytes;
+}
+
+/** @name PalletStructureCall */
+export interface PalletStructureCall extends Null {}
+
+/** @name PalletStructureError */
+export interface PalletStructureError extends Enum {
+ readonly isOuroborosDetected: boolean;
+ readonly isDepthLimit: boolean;
+ readonly isTokenNotFound: boolean;
+ readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound';
+}
+
+/** @name PalletStructureEvent */
+export interface PalletStructureEvent extends Enum {
+ readonly isExecuted: boolean;
+ readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
+ readonly type: 'Executed';
+}
+
+/** @name PalletSudoCall */
+export interface PalletSudoCall extends Enum {
+ readonly isSudo: boolean;
+ readonly asSudo: {
+ readonly call: Call;
+ } & Struct;
+ readonly isSudoUncheckedWeight: boolean;
+ readonly asSudoUncheckedWeight: {
+ readonly call: Call;
+ readonly weight: u64;
+ } & Struct;
+ readonly isSetKey: boolean;
+ readonly asSetKey: {
+ readonly new_: MultiAddress;
+ } & Struct;
+ readonly isSudoAs: boolean;
+ readonly asSudoAs: {
+ readonly who: MultiAddress;
+ readonly call: Call;
+ } & Struct;
+ readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';
+}
+
+/** @name PalletSudoError */
+export interface PalletSudoError extends Enum {
+ readonly isRequireSudo: boolean;
+ readonly type: 'RequireSudo';
+}
+
+/** @name PalletSudoEvent */
+export interface PalletSudoEvent extends Enum {
+ readonly isSudid: boolean;
+ readonly asSudid: {
+ readonly sudoResult: Result<Null, SpRuntimeDispatchError>;
+ } & Struct;
+ readonly isKeyChanged: boolean;
+ readonly asKeyChanged: {
+ readonly oldSudoer: Option<AccountId32>;
+ } & Struct;
+ readonly isSudoAsDone: boolean;
+ readonly asSudoAsDone: {
+ readonly sudoResult: Result<Null, SpRuntimeDispatchError>;
+ } & Struct;
+ readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';
+}
+
+/** @name PalletTemplateTransactionPaymentCall */
+export interface PalletTemplateTransactionPaymentCall extends Null {}
+
+/** @name PalletTemplateTransactionPaymentChargeTransactionPayment */
+export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
+
+/** @name PalletTimestampCall */
+export interface PalletTimestampCall extends Enum {
+ readonly isSet: boolean;
+ readonly asSet: {
+ readonly now: Compact<u64>;
+ } & Struct;
+ readonly type: 'Set';
+}
+
+/** @name PalletTransactionPaymentReleases */
+export interface PalletTransactionPaymentReleases extends Enum {
+ readonly isV1Ancient: boolean;
+ readonly isV2: boolean;
+ readonly type: 'V1Ancient' | 'V2';
+}
+
+/** @name PalletTreasuryCall */
+export interface PalletTreasuryCall extends Enum {
+ readonly isProposeSpend: boolean;
+ readonly asProposeSpend: {
+ readonly value: Compact<u128>;
+ readonly beneficiary: MultiAddress;
+ } & Struct;
+ readonly isRejectProposal: boolean;
+ readonly asRejectProposal: {
+ readonly proposalId: Compact<u32>;
+ } & Struct;
+ readonly isApproveProposal: boolean;
+ readonly asApproveProposal: {
+ readonly proposalId: Compact<u32>;
+ } & Struct;
+ readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal';
+}
+
+/** @name PalletTreasuryError */
+export interface PalletTreasuryError extends Enum {
+ readonly isInsufficientProposersBalance: boolean;
+ readonly isInvalidIndex: boolean;
+ readonly isTooManyApprovals: boolean;
+ readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals';
+}
+
+/** @name PalletTreasuryEvent */
+export interface PalletTreasuryEvent extends Enum {
+ readonly isProposed: boolean;
+ readonly asProposed: {
+ readonly proposalIndex: u32;
+ } & Struct;
+ readonly isSpending: boolean;
+ readonly asSpending: {
+ readonly budgetRemaining: u128;
+ } & Struct;
+ readonly isAwarded: boolean;
+ readonly asAwarded: {
+ readonly proposalIndex: u32;
+ readonly award: u128;
+ readonly account: AccountId32;
+ } & Struct;
+ readonly isRejected: boolean;
+ readonly asRejected: {
+ readonly proposalIndex: u32;
+ readonly slashed: u128;
+ } & Struct;
+ readonly isBurnt: boolean;
+ readonly asBurnt: {
+ readonly burntFunds: u128;
+ } & Struct;
+ readonly isRollover: boolean;
+ readonly asRollover: {
+ readonly rolloverBalance: u128;
+ } & Struct;
+ readonly isDeposit: boolean;
+ readonly asDeposit: {
+ readonly value: u128;
+ } & Struct;
+ readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';
+}
+
+/** @name PalletTreasuryProposal */
+export interface PalletTreasuryProposal extends Struct {
+ readonly proposer: AccountId32;
+ readonly value: u128;
+ readonly beneficiary: AccountId32;
+ readonly bond: u128;
+}
+
+/** @name PalletUniqueCall */
+export interface PalletUniqueCall extends Enum {
+ readonly isCreateCollection: boolean;
+ readonly asCreateCollection: {
+ readonly collectionName: Vec<u16>;
+ readonly collectionDescription: Vec<u16>;
+ readonly tokenPrefix: Bytes;
+ readonly mode: UpDataStructsCollectionMode;
+ } & Struct;
+ readonly isCreateCollectionEx: boolean;
+ readonly asCreateCollectionEx: {
+ readonly data: UpDataStructsCreateCollectionData;
+ } & Struct;
+ readonly isDestroyCollection: boolean;
+ readonly asDestroyCollection: {
+ readonly collectionId: u32;
+ } & Struct;
+ readonly isAddToAllowList: boolean;
+ readonly asAddToAllowList: {
+ readonly collectionId: u32;
+ readonly address: PalletEvmAccountBasicCrossAccountIdRepr;
+ } & Struct;
+ readonly isRemoveFromAllowList: boolean;
+ readonly asRemoveFromAllowList: {
+ readonly collectionId: u32;
+ readonly address: PalletEvmAccountBasicCrossAccountIdRepr;
+ } & Struct;
+ readonly isSetPublicAccessMode: boolean;
+ readonly asSetPublicAccessMode: {
+ readonly collectionId: u32;
+ readonly mode: UpDataStructsAccessMode;
+ } & Struct;
+ readonly isSetMintPermission: boolean;
+ readonly asSetMintPermission: {
+ readonly collectionId: u32;
+ readonly mintPermission: bool;
+ } & Struct;
+ readonly isChangeCollectionOwner: boolean;
+ readonly asChangeCollectionOwner: {
+ readonly collectionId: u32;
+ readonly newOwner: AccountId32;
+ } & Struct;
+ readonly isAddCollectionAdmin: boolean;
+ readonly asAddCollectionAdmin: {
+ readonly collectionId: u32;
+ readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;
+ } & Struct;
+ readonly isRemoveCollectionAdmin: boolean;
+ readonly asRemoveCollectionAdmin: {
+ readonly collectionId: u32;
+ readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;
+ } & Struct;
+ readonly isSetCollectionSponsor: boolean;
+ readonly asSetCollectionSponsor: {
+ readonly collectionId: u32;
+ readonly newSponsor: AccountId32;
+ } & Struct;
+ readonly isConfirmSponsorship: boolean;
+ readonly asConfirmSponsorship: {
+ readonly collectionId: u32;
+ } & Struct;
+ readonly isRemoveCollectionSponsor: boolean;
+ readonly asRemoveCollectionSponsor: {
+ readonly collectionId: u32;
+ } & Struct;
+ readonly isCreateItem: boolean;
+ readonly asCreateItem: {
+ readonly collectionId: u32;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly data: UpDataStructsCreateItemData;
+ } & Struct;
+ readonly isCreateMultipleItems: boolean;
+ readonly asCreateMultipleItems: {
+ readonly collectionId: u32;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly itemsData: Vec<UpDataStructsCreateItemData>;
+ } & Struct;
+ readonly isSetCollectionProperties: boolean;
+ readonly asSetCollectionProperties: {
+ readonly collectionId: u32;
+ readonly properties: Vec<UpDataStructsProperty>;
+ } & Struct;
+ readonly isDeleteCollectionProperties: boolean;
+ readonly asDeleteCollectionProperties: {
+ readonly collectionId: u32;
+ readonly propertyKeys: Vec<Bytes>;
+ } & Struct;
+ readonly isSetTokenProperties: boolean;
+ readonly asSetTokenProperties: {
+ readonly collectionId: u32;
+ readonly tokenId: u32;
+ readonly properties: Vec<UpDataStructsProperty>;
+ } & Struct;
+ readonly isDeleteTokenProperties: boolean;
+ readonly asDeleteTokenProperties: {
+ readonly collectionId: u32;
+ readonly tokenId: u32;
+ readonly propertyKeys: Vec<Bytes>;
+ } & Struct;
+ readonly isSetPropertyPermissions: boolean;
+ readonly asSetPropertyPermissions: {
+ readonly collectionId: u32;
+ readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
+ } & Struct;
+ readonly isCreateMultipleItemsEx: boolean;
+ readonly asCreateMultipleItemsEx: {
+ readonly collectionId: u32;
+ readonly data: UpDataStructsCreateItemExData;
+ } & Struct;
+ readonly isSetTransfersEnabledFlag: boolean;
+ readonly asSetTransfersEnabledFlag: {
+ readonly collectionId: u32;
+ readonly value: bool;
+ } & Struct;
+ readonly isBurnItem: boolean;
+ readonly asBurnItem: {
+ readonly collectionId: u32;
+ readonly itemId: u32;
+ readonly value: u128;
+ } & Struct;
+ readonly isBurnFrom: boolean;
+ readonly asBurnFrom: {
+ readonly collectionId: u32;
+ readonly from: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly itemId: u32;
+ readonly value: u128;
+ } & Struct;
+ readonly isTransfer: boolean;
+ readonly asTransfer: {
+ readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly collectionId: u32;
+ readonly itemId: u32;
+ readonly value: u128;
+ } & Struct;
+ readonly isApprove: boolean;
+ readonly asApprove: {
+ readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly collectionId: u32;
+ readonly itemId: u32;
+ readonly amount: u128;
+ } & Struct;
+ readonly isTransferFrom: boolean;
+ readonly asTransferFrom: {
+ readonly from: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly collectionId: u32;
+ readonly itemId: u32;
+ readonly value: u128;
+ } & Struct;
+ readonly isSetSchemaVersion: boolean;
+ readonly asSetSchemaVersion: {
+ readonly collectionId: u32;
+ readonly version: UpDataStructsSchemaVersion;
+ } & Struct;
+ readonly isSetOffchainSchema: boolean;
+ readonly asSetOffchainSchema: {
+ readonly collectionId: u32;
+ readonly schema: Bytes;
+ } & Struct;
+ readonly isSetConstOnChainSchema: boolean;
+ readonly asSetConstOnChainSchema: {
+ readonly collectionId: u32;
+ readonly schema: Bytes;
+ } & Struct;
+ readonly isSetCollectionLimits: boolean;
+ readonly asSetCollectionLimits: {
+ readonly collectionId: u32;
+ readonly newLimit: UpDataStructsCollectionLimits;
+ } & Struct;
+ readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetCollectionLimits';
+}
+
+/** @name PalletUniqueError */
+export interface PalletUniqueError extends Enum {
+ readonly isCollectionDecimalPointLimitExceeded: boolean;
+ readonly isConfirmUnsetSponsorFail: boolean;
+ readonly isEmptyArgument: boolean;
+ readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';
+}
+
+/** @name PalletUniqueRawEvent */
+export interface PalletUniqueRawEvent extends Enum {
+ readonly isCollectionSponsorRemoved: boolean;
+ readonly asCollectionSponsorRemoved: u32;
+ readonly isCollectionAdminAdded: boolean;
+ readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ readonly isCollectionOwnedChanged: boolean;
+ readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;
+ readonly isCollectionSponsorSet: boolean;
+ readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;
+ readonly isConstOnChainSchemaSet: boolean;
+ readonly asConstOnChainSchemaSet: u32;
+ readonly isSponsorshipConfirmed: boolean;
+ readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;
+ readonly isCollectionAdminRemoved: boolean;
+ readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ readonly isAllowListAddressRemoved: boolean;
+ readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ readonly isAllowListAddressAdded: boolean;
+ readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ readonly isCollectionLimitSet: boolean;
+ readonly asCollectionLimitSet: u32;
+ readonly isMintPermissionSet: boolean;
+ readonly asMintPermissionSet: u32;
+ readonly isOffchainSchemaSet: boolean;
+ readonly asOffchainSchemaSet: u32;
+ readonly isPublicAccessModeSet: boolean;
+ readonly asPublicAccessModeSet: ITuple<[u32, UpDataStructsAccessMode]>;
+ readonly isSchemaVersionSet: boolean;
+ readonly asSchemaVersionSet: u32;
+ readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'ConstOnChainSchemaSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'MintPermissionSet' | 'OffchainSchemaSet' | 'PublicAccessModeSet' | 'SchemaVersionSet';
+}
+
+/** @name PalletXcmCall */
+export interface PalletXcmCall extends Enum {
+ readonly isSend: boolean;
+ readonly asSend: {
+ readonly dest: XcmVersionedMultiLocation;
+ readonly message: XcmVersionedXcm;
+ } & Struct;
+ readonly isTeleportAssets: boolean;
+ readonly asTeleportAssets: {
+ readonly dest: XcmVersionedMultiLocation;
+ readonly beneficiary: XcmVersionedMultiLocation;
+ readonly assets: XcmVersionedMultiAssets;
+ readonly feeAssetItem: u32;
+ } & Struct;
+ readonly isReserveTransferAssets: boolean;
+ readonly asReserveTransferAssets: {
+ readonly dest: XcmVersionedMultiLocation;
+ readonly beneficiary: XcmVersionedMultiLocation;
+ readonly assets: XcmVersionedMultiAssets;
+ readonly feeAssetItem: u32;
+ } & Struct;
+ readonly isExecute: boolean;
+ readonly asExecute: {
+ readonly message: XcmVersionedXcm;
+ readonly maxWeight: u64;
+ } & Struct;
+ readonly isForceXcmVersion: boolean;
+ readonly asForceXcmVersion: {
+ readonly location: XcmV1MultiLocation;
+ readonly xcmVersion: u32;
+ } & Struct;
+ readonly isForceDefaultXcmVersion: boolean;
+ readonly asForceDefaultXcmVersion: {
+ readonly maybeXcmVersion: Option<u32>;
+ } & Struct;
+ readonly isForceSubscribeVersionNotify: boolean;
+ readonly asForceSubscribeVersionNotify: {
+ readonly location: XcmVersionedMultiLocation;
+ } & Struct;
+ readonly isForceUnsubscribeVersionNotify: boolean;
+ readonly asForceUnsubscribeVersionNotify: {
+ readonly location: XcmVersionedMultiLocation;
+ } & Struct;
+ readonly isLimitedReserveTransferAssets: boolean;
+ readonly asLimitedReserveTransferAssets: {
+ readonly dest: XcmVersionedMultiLocation;
+ readonly beneficiary: XcmVersionedMultiLocation;
+ readonly assets: XcmVersionedMultiAssets;
+ readonly feeAssetItem: u32;
+ readonly weightLimit: XcmV2WeightLimit;
+ } & Struct;
+ readonly isLimitedTeleportAssets: boolean;
+ readonly asLimitedTeleportAssets: {
+ readonly dest: XcmVersionedMultiLocation;
+ readonly beneficiary: XcmVersionedMultiLocation;
+ readonly assets: XcmVersionedMultiAssets;
+ readonly feeAssetItem: u32;
+ readonly weightLimit: XcmV2WeightLimit;
+ } & Struct;
+ readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';
+}
+
+/** @name PalletXcmError */
+export interface PalletXcmError extends Enum {
+ readonly isUnreachable: boolean;
+ readonly isSendFailure: boolean;
+ readonly isFiltered: boolean;
+ readonly isUnweighableMessage: boolean;
+ readonly isDestinationNotInvertible: boolean;
+ readonly isEmpty: boolean;
+ readonly isCannotReanchor: boolean;
+ readonly isTooManyAssets: boolean;
+ readonly isInvalidOrigin: boolean;
+ readonly isBadVersion: boolean;
+ readonly isBadLocation: boolean;
+ readonly isNoSubscription: boolean;
+ readonly isAlreadySubscribed: boolean;
+ readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
+}
+
+/** @name PalletXcmEvent */
+export interface PalletXcmEvent extends Enum {
+ readonly isAttempted: boolean;
+ readonly asAttempted: XcmV2TraitsOutcome;
+ readonly isSent: boolean;
+ readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;
+ readonly isUnexpectedResponse: boolean;
+ readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;
+ readonly isResponseReady: boolean;
+ readonly asResponseReady: ITuple<[u64, XcmV2Response]>;
+ readonly isNotified: boolean;
+ readonly asNotified: ITuple<[u64, u8, u8]>;
+ readonly isNotifyOverweight: boolean;
+ readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;
+ readonly isNotifyDispatchError: boolean;
+ readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;
+ readonly isNotifyDecodeFailed: boolean;
+ readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;
+ readonly isInvalidResponder: boolean;
+ readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;
+ readonly isInvalidResponderVersion: boolean;
+ readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;
+ readonly isResponseTaken: boolean;
+ readonly asResponseTaken: u64;
+ readonly isAssetsTrapped: boolean;
+ readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;
+ readonly isVersionChangeNotified: boolean;
+ readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;
+ readonly isSupportedVersionChanged: boolean;
+ readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;
+ readonly isNotifyTargetSendFail: boolean;
+ readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;
+ readonly isNotifyTargetMigrationFail: boolean;
+ readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;
+ readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
+}
+
+/** @name PhantomTypeUpDataStructsBaseInfo */
+export interface PhantomTypeUpDataStructsBaseInfo extends Vec<Lookup357> {}
+
+/** @name PhantomTypeUpDataStructsCollectionInfo */
+export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<Lookup334> {}
+
+/** @name PhantomTypeUpDataStructsNftChild */
+export interface PhantomTypeUpDataStructsNftChild extends Vec<Lookup372> {}
+
+/** @name PhantomTypeUpDataStructsNftInfo */
+export interface PhantomTypeUpDataStructsNftInfo extends Vec<Lookup339> {}
+
+/** @name PhantomTypeUpDataStructsPartType */
+export interface PhantomTypeUpDataStructsPartType extends Vec<Lookup360> {}
+
+/** @name PhantomTypeUpDataStructsPropertyInfo */
+export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<Lookup352> {}
+
+/** @name PhantomTypeUpDataStructsResourceInfo */
+export interface PhantomTypeUpDataStructsResourceInfo extends Vec<Lookup345> {}
+
+/** @name PhantomTypeUpDataStructsRpcCollection */
+export interface PhantomTypeUpDataStructsRpcCollection extends Vec<Lookup331> {}
+
+/** @name PhantomTypeUpDataStructsTheme */
+export interface PhantomTypeUpDataStructsTheme extends Vec<Lookup367> {}
+
+/** @name PhantomTypeUpDataStructsTokenData */
+export interface PhantomTypeUpDataStructsTokenData extends Vec<Lookup327> {}
+
+/** @name PolkadotCorePrimitivesInboundDownwardMessage */
+export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
+ readonly sentAt: u32;
+ readonly msg: Bytes;
+}
+
+/** @name PolkadotCorePrimitivesInboundHrmpMessage */
+export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {
+ readonly sentAt: u32;
+ readonly data: Bytes;
+}
+
+/** @name PolkadotCorePrimitivesOutboundHrmpMessage */
+export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {
+ readonly recipient: u32;
+ readonly data: Bytes;
+}
+
+/** @name PolkadotParachainPrimitivesXcmpMessageFormat */
+export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
+ readonly isConcatenatedVersionedXcm: boolean;
+ readonly isConcatenatedEncodedBlob: boolean;
+ readonly isSignals: boolean;
+ readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
+}
+
+/** @name PolkadotPrimitivesV2AbridgedHostConfiguration */
+export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {
+ readonly maxCodeSize: u32;
+ readonly maxHeadDataSize: u32;
+ readonly maxUpwardQueueCount: u32;
+ readonly maxUpwardQueueSize: u32;
+ readonly maxUpwardMessageSize: u32;
+ readonly maxUpwardMessageNumPerCandidate: u32;
+ readonly hrmpMaxMessageNumPerCandidate: u32;
+ readonly validationUpgradeCooldown: u32;
+ readonly validationUpgradeDelay: u32;
+}
+
+/** @name PolkadotPrimitivesV2AbridgedHrmpChannel */
+export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {
+ readonly maxCapacity: u32;
+ readonly maxTotalSize: u32;
+ readonly maxMessageSize: u32;
+ readonly msgCount: u32;
+ readonly totalSize: u32;
+ readonly mqcHead: Option<H256>;
+}
+
+/** @name PolkadotPrimitivesV2PersistedValidationData */
+export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {
+ readonly parentHead: Bytes;
+ readonly relayParentNumber: u32;
+ readonly relayParentStorageRoot: H256;
+ readonly maxPovSize: u32;
+}
+
+/** @name PolkadotPrimitivesV2UpgradeRestriction */
+export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {
+ readonly isPresent: boolean;
+ readonly type: 'Present';
+}
+
+/** @name RmrkTypesAccountIdOrCollectionNftTuple */
+export interface RmrkTypesAccountIdOrCollectionNftTuple extends Enum {
+ readonly isAccountId: boolean;
+ readonly asAccountId: AccountId32;
+ readonly isCollectionAndNftTuple: boolean;
+ readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;
+ readonly type: 'AccountId' | 'CollectionAndNftTuple';
+}
+
+/** @name RmrkTypesBaseInfo */
+export interface RmrkTypesBaseInfo extends Struct {
+ readonly issuer: AccountId32;
+ readonly baseType: Bytes;
+ readonly symbol: Bytes;
+}
+
+/** @name RmrkTypesCollectionInfo */
+export interface RmrkTypesCollectionInfo extends Struct {
+ readonly issuer: AccountId32;
+ readonly metadata: Bytes;
+ readonly max: Option<u32>;
+ readonly symbol: Bytes;
+ readonly nftsCount: u32;
+}
+
+/** @name RmrkTypesEquippableList */
+export interface RmrkTypesEquippableList extends Enum {
+ readonly isAll: boolean;
+ readonly isEmpty: boolean;
+ readonly isCustom: boolean;
+ readonly asCustom: Vec<u32>;
+ readonly type: 'All' | 'Empty' | 'Custom';
+}
+
+/** @name RmrkTypesFixedPart */
+export interface RmrkTypesFixedPart extends Struct {
+ readonly id: u32;
+ readonly z: u32;
+ readonly src: Bytes;
+}
+
+/** @name RmrkTypesNftChild */
+export interface RmrkTypesNftChild extends Struct {
+ readonly collectionId: u32;
+ readonly nftId: u32;
+}
+
+/** @name RmrkTypesNftInfo */
+export interface RmrkTypesNftInfo extends Struct {
+ readonly owner: RmrkTypesAccountIdOrCollectionNftTuple;
+ readonly royalty: Option<RmrkTypesRoyaltyInfo>;
+ readonly metadata: Bytes;
+ readonly equipped: bool;
+ readonly pending: bool;
+}
+
+/** @name RmrkTypesPartType */
+export interface RmrkTypesPartType extends Enum {
+ readonly isFixedPart: boolean;
+ readonly asFixedPart: RmrkTypesFixedPart;
+ readonly isSlotPart: boolean;
+ readonly asSlotPart: RmrkTypesSlotPart;
+ readonly type: 'FixedPart' | 'SlotPart';
+}
+
+/** @name RmrkTypesPropertyInfo */
+export interface RmrkTypesPropertyInfo extends Struct {
+ readonly key: Bytes;
+ readonly value: Bytes;
+}
+
+/** @name RmrkTypesResourceInfo */
+export interface RmrkTypesResourceInfo extends Struct {
+ readonly id: Bytes;
+ readonly pending: bool;
+ readonly pendingRemoval: bool;
+ readonly parts: Option<Vec<u32>>;
+ readonly base: Option<u32>;
+ readonly src: Option<Bytes>;
+ readonly metadata: Option<Bytes>;
+ readonly slot: Option<u32>;
+ readonly license: Option<Bytes>;
+ readonly thumb: Option<Bytes>;
+}
+
+/** @name RmrkTypesRoyaltyInfo */
+export interface RmrkTypesRoyaltyInfo extends Struct {
+ readonly recipient: AccountId32;
+ readonly amount: Permill;
+}
+
+/** @name RmrkTypesSlotPart */
+export interface RmrkTypesSlotPart extends Struct {
+ readonly id: u32;
+ readonly equippable: RmrkTypesEquippableList;
+ readonly src: Bytes;
+ readonly z: u32;
+}
+
+/** @name RmrkTypesTheme */
+export interface RmrkTypesTheme extends Struct {
+ readonly name: Bytes;
+ readonly properties: Vec<RmrkTypesThemeProperty>;
+ readonly inherit: bool;
+}
+
+/** @name RmrkTypesThemeProperty */
+export interface RmrkTypesThemeProperty extends Struct {
+ readonly key: Bytes;
+ readonly value: Bytes;
+}
+
+/** @name SpCoreEcdsaSignature */
+export interface SpCoreEcdsaSignature extends U8aFixed {}
+
+/** @name SpCoreEd25519Signature */
+export interface SpCoreEd25519Signature extends U8aFixed {}
+
+/** @name SpCoreSr25519Signature */
+export interface SpCoreSr25519Signature extends U8aFixed {}
+
+/** @name SpRuntimeArithmeticError */
+export interface SpRuntimeArithmeticError extends Enum {
+ readonly isUnderflow: boolean;
+ readonly isOverflow: boolean;
+ readonly isDivisionByZero: boolean;
+ readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';
+}
+
+/** @name SpRuntimeDigest */
+export interface SpRuntimeDigest extends Struct {
+ readonly logs: Vec<SpRuntimeDigestDigestItem>;
+}
+
+/** @name SpRuntimeDigestDigestItem */
+export interface SpRuntimeDigestDigestItem extends Enum {
+ readonly isOther: boolean;
+ readonly asOther: Bytes;
+ readonly isConsensus: boolean;
+ readonly asConsensus: ITuple<[U8aFixed, Bytes]>;
+ readonly isSeal: boolean;
+ readonly asSeal: ITuple<[U8aFixed, Bytes]>;
+ readonly isPreRuntime: boolean;
+ readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;
+ readonly isRuntimeEnvironmentUpdated: boolean;
+ readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';
+}
+
+/** @name SpRuntimeDispatchError */
+export interface SpRuntimeDispatchError extends Enum {
+ readonly isOther: boolean;
+ readonly isCannotLookup: boolean;
+ readonly isBadOrigin: boolean;
+ readonly isModule: boolean;
+ readonly asModule: SpRuntimeModuleError;
+ readonly isConsumerRemaining: boolean;
+ readonly isNoProviders: boolean;
+ readonly isTooManyConsumers: boolean;
+ readonly isToken: boolean;
+ readonly asToken: SpRuntimeTokenError;
+ readonly isArithmetic: boolean;
+ readonly asArithmetic: SpRuntimeArithmeticError;
+ readonly isTransactional: boolean;
+ readonly asTransactional: SpRuntimeTransactionalError;
+ readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';
+}
+
+/** @name SpRuntimeModuleError */
+export interface SpRuntimeModuleError extends Struct {
+ readonly index: u8;
+ readonly error: U8aFixed;
+}
+
+/** @name SpRuntimeMultiSignature */
+export interface SpRuntimeMultiSignature extends Enum {
+ readonly isEd25519: boolean;
+ readonly asEd25519: SpCoreEd25519Signature;
+ readonly isSr25519: boolean;
+ readonly asSr25519: SpCoreSr25519Signature;
+ readonly isEcdsa: boolean;
+ readonly asEcdsa: SpCoreEcdsaSignature;
+ readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
+}
+
+/** @name SpRuntimeTokenError */
+export interface SpRuntimeTokenError extends Enum {
+ readonly isNoFunds: boolean;
+ readonly isWouldDie: boolean;
+ readonly isBelowMinimum: boolean;
+ readonly isCannotCreate: boolean;
+ readonly isUnknownAsset: boolean;
+ readonly isFrozen: boolean;
+ readonly isUnsupported: boolean;
+ readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';
+}
+
+/** @name SpRuntimeTransactionalError */
+export interface SpRuntimeTransactionalError extends Enum {
+ readonly isLimitReached: boolean;
+ readonly isNoLayer: boolean;
+ readonly type: 'LimitReached' | 'NoLayer';
+}
+
+/** @name SpTrieStorageProof */
+export interface SpTrieStorageProof extends Struct {
+ readonly trieNodes: BTreeSet<Bytes>;
+}
+
+/** @name SpVersionRuntimeVersion */
+export interface SpVersionRuntimeVersion extends Struct {
+ readonly specName: Text;
+ readonly implName: Text;
+ readonly authoringVersion: u32;
+ readonly specVersion: u32;
+ readonly implVersion: u32;
+ readonly apis: Vec<ITuple<[U8aFixed, u32]>>;
+ readonly transactionVersion: u32;
+ readonly stateVersion: u8;
+}
+
+/** @name UpDataStructsAccessMode */
+export interface UpDataStructsAccessMode extends Enum {
+ readonly isNormal: boolean;
+ readonly isAllowList: boolean;
+ readonly type: 'Normal' | 'AllowList';
+}
+
+/** @name UpDataStructsCollection */
+export interface UpDataStructsCollection extends Struct {
+ readonly owner: AccountId32;
+ readonly mode: UpDataStructsCollectionMode;
+ readonly access: UpDataStructsAccessMode;
+ readonly name: Vec<u16>;
+ readonly description: Vec<u16>;
+ readonly tokenPrefix: Bytes;
+ readonly mintMode: bool;
+ readonly schemaVersion: UpDataStructsSchemaVersion;
+ readonly sponsorship: UpDataStructsSponsorshipState;
+ readonly limits: UpDataStructsCollectionLimits;
+}
+
+/** @name UpDataStructsCollectionField */
+export interface UpDataStructsCollectionField extends Enum {
+ readonly isConstOnChainSchema: boolean;
+ readonly isOffchainSchema: boolean;
+ readonly type: 'ConstOnChainSchema' | 'OffchainSchema';
+}
+
+/** @name UpDataStructsCollectionLimits */
+export interface UpDataStructsCollectionLimits extends Struct {
+ readonly accountTokenOwnershipLimit: Option<u32>;
+ readonly sponsoredDataSize: Option<u32>;
+ readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;
+ readonly tokenLimit: Option<u32>;
+ readonly sponsorTransferTimeout: Option<u32>;
+ readonly sponsorApproveTimeout: Option<u32>;
+ readonly ownerCanTransfer: Option<bool>;
+ readonly ownerCanDestroy: Option<bool>;
+ readonly transfersEnabled: Option<bool>;
+ readonly nestingRule: Option<UpDataStructsNestingRule>;
+}
+
+/** @name UpDataStructsCollectionMode */
+export interface UpDataStructsCollectionMode extends Enum {
+ readonly isNft: boolean;
+ readonly isFungible: boolean;
+ readonly asFungible: u8;
+ readonly isReFungible: boolean;
+ readonly type: 'Nft' | 'Fungible' | 'ReFungible';
+}
+
+/** @name UpDataStructsCollectionStats */
+export interface UpDataStructsCollectionStats extends Struct {
+ readonly created: u32;
+ readonly destroyed: u32;
+ readonly alive: u32;
+}
+
+/** @name UpDataStructsCreateCollectionData */
+export interface UpDataStructsCreateCollectionData extends Struct {
+ readonly mode: UpDataStructsCollectionMode;
+ readonly access: Option<UpDataStructsAccessMode>;
+ readonly name: Vec<u16>;
+ readonly description: Vec<u16>;
+ readonly tokenPrefix: Bytes;
+ readonly offchainSchema: Bytes;
+ readonly schemaVersion: Option<UpDataStructsSchemaVersion>;
+ readonly pendingSponsor: Option<AccountId32>;
+ readonly limits: Option<UpDataStructsCollectionLimits>;
+ readonly constOnChainSchema: Bytes;
+ readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
+ readonly properties: Vec<UpDataStructsProperty>;
+}
+
+/** @name UpDataStructsCreateFungibleData */
+export interface UpDataStructsCreateFungibleData extends Struct {
+ readonly value: u128;
+}
+
+/** @name UpDataStructsCreateItemData */
+export interface UpDataStructsCreateItemData extends Enum {
+ readonly isNft: boolean;
+ readonly asNft: UpDataStructsCreateNftData;
+ readonly isFungible: boolean;
+ readonly asFungible: UpDataStructsCreateFungibleData;
+ readonly isReFungible: boolean;
+ readonly asReFungible: UpDataStructsCreateReFungibleData;
+ readonly type: 'Nft' | 'Fungible' | 'ReFungible';
+}
+
+/** @name UpDataStructsCreateItemExData */
+export interface UpDataStructsCreateItemExData extends Enum {
+ readonly isNft: boolean;
+ readonly asNft: Vec<UpDataStructsCreateNftExData>;
+ readonly isFungible: boolean;
+ readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr,u128>;
+ readonly isRefungibleMultipleItems: boolean;
+ readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExData>;
+ readonly isRefungibleMultipleOwners: boolean;
+ readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExData;
+ readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';
+}
+
+/** @name UpDataStructsCreateNftData */
+export interface UpDataStructsCreateNftData extends Struct {
+ readonly constData: Bytes;
+ readonly properties: Vec<UpDataStructsProperty>;
+}
+
+/** @name UpDataStructsCreateNftExData */
+export interface UpDataStructsCreateNftExData extends Struct {
+ readonly constData: Bytes;
+ readonly properties: Vec<UpDataStructsProperty>;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
+}
+
+/** @name UpDataStructsCreateReFungibleData */
+export interface UpDataStructsCreateReFungibleData extends Struct {
+ readonly constData: Bytes;
+ readonly pieces: u128;
+}
+
+/** @name UpDataStructsCreateRefungibleExData */
+export interface UpDataStructsCreateRefungibleExData extends Struct {
+ readonly constData: Bytes;
+ readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
+}
+
+/** @name UpDataStructsNestingRule */
+export interface UpDataStructsNestingRule extends Enum {
+ readonly isDisabled: boolean;
+ readonly isOwner: boolean;
+ readonly isOwnerRestricted: boolean;
+ readonly asOwnerRestricted: BTreeSet<u32>;
+ readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted';
+}
+
+/** @name UpDataStructsProperties */
+export interface UpDataStructsProperties extends Struct {
+ readonly map: UpDataStructsPropertiesMapBoundedVec;
+ readonly consumedSpace: u32;
+ readonly spaceLimit: u32;
+}
+
+/** @name UpDataStructsPropertiesMapBoundedVec */
+export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
+
+/** @name UpDataStructsPropertiesMapPropertyPermission */
+export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
+
+/** @name UpDataStructsProperty */
+export interface UpDataStructsProperty extends Struct {
+ readonly key: Bytes;
+ readonly value: Bytes;
+}
+
+/** @name UpDataStructsPropertyKeyPermission */
+export interface UpDataStructsPropertyKeyPermission extends Struct {
+ readonly key: Bytes;
+ readonly permission: UpDataStructsPropertyPermission;
+}
+
+/** @name UpDataStructsPropertyPermission */
+export interface UpDataStructsPropertyPermission extends Struct {
+ readonly mutable: bool;
+ readonly collectionAdmin: bool;
+ readonly tokenOwner: bool;
+}
+
+/** @name UpDataStructsRpcCollection */
+export interface UpDataStructsRpcCollection extends Struct {
+ readonly owner: AccountId32;
+ readonly mode: UpDataStructsCollectionMode;
+ readonly access: UpDataStructsAccessMode;
+ readonly name: Vec<u16>;
+ readonly description: Vec<u16>;
+ readonly tokenPrefix: Bytes;
+ readonly mintMode: bool;
+ readonly offchainSchema: Bytes;
+ readonly schemaVersion: UpDataStructsSchemaVersion;
+ readonly sponsorship: UpDataStructsSponsorshipState;
+ readonly limits: UpDataStructsCollectionLimits;
+ readonly constOnChainSchema: Bytes;
+ readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
+ readonly properties: Vec<UpDataStructsProperty>;
+}
+
+/** @name UpDataStructsSchemaVersion */
+export interface UpDataStructsSchemaVersion extends Enum {
+ readonly isImageURL: boolean;
+ readonly isUnique: boolean;
+ readonly type: 'ImageURL' | 'Unique';
+}
+
+/** @name UpDataStructsSponsoringRateLimit */
+export interface UpDataStructsSponsoringRateLimit extends Enum {
+ readonly isSponsoringDisabled: boolean;
+ readonly isBlocks: boolean;
+ readonly asBlocks: u32;
+ readonly type: 'SponsoringDisabled' | 'Blocks';
+}
+
+/** @name UpDataStructsSponsorshipState */
+export interface UpDataStructsSponsorshipState extends Enum {
+ readonly isDisabled: boolean;
+ readonly isUnconfirmed: boolean;
+ readonly asUnconfirmed: AccountId32;
+ readonly isConfirmed: boolean;
+ readonly asConfirmed: AccountId32;
+ readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
+}
+
+/** @name UpDataStructsTokenData */
+export interface UpDataStructsTokenData extends Struct {
+ readonly constData: Bytes;
+ readonly properties: Vec<UpDataStructsProperty>;
+ readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
+}
+
+/** @name XcmDoubleEncoded */
+export interface XcmDoubleEncoded extends Struct {
+ readonly encoded: Bytes;
+}
+
+/** @name XcmV0Junction */
+export interface XcmV0Junction extends Enum {
+ readonly isParent: boolean;
+ readonly isParachain: boolean;
+ readonly asParachain: Compact<u32>;
+ readonly isAccountId32: boolean;
+ readonly asAccountId32: {
+ readonly network: XcmV0JunctionNetworkId;
+ readonly id: U8aFixed;
+ } & Struct;
+ readonly isAccountIndex64: boolean;
+ readonly asAccountIndex64: {
+ readonly network: XcmV0JunctionNetworkId;
+ readonly index: Compact<u64>;
+ } & Struct;
+ readonly isAccountKey20: boolean;
+ readonly asAccountKey20: {
+ readonly network: XcmV0JunctionNetworkId;
+ readonly key: U8aFixed;
+ } & Struct;
+ readonly isPalletInstance: boolean;
+ readonly asPalletInstance: u8;
+ readonly isGeneralIndex: boolean;
+ readonly asGeneralIndex: Compact<u128>;
+ readonly isGeneralKey: boolean;
+ readonly asGeneralKey: Bytes;
+ readonly isOnlyChild: boolean;
+ readonly isPlurality: boolean;
+ readonly asPlurality: {
+ readonly id: XcmV0JunctionBodyId;
+ readonly part: XcmV0JunctionBodyPart;
+ } & Struct;
+ readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
+}
+
+/** @name XcmV0JunctionBodyId */
+export interface XcmV0JunctionBodyId extends Enum {
+ readonly isUnit: boolean;
+ readonly isNamed: boolean;
+ readonly asNamed: Bytes;
+ readonly isIndex: boolean;
+ readonly asIndex: Compact<u32>;
+ readonly isExecutive: boolean;
+ readonly isTechnical: boolean;
+ readonly isLegislative: boolean;
+ readonly isJudicial: boolean;
+ readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';
+}
+
+/** @name XcmV0JunctionBodyPart */
+export interface XcmV0JunctionBodyPart extends Enum {
+ readonly isVoice: boolean;
+ readonly isMembers: boolean;
+ readonly asMembers: {
+ readonly count: Compact<u32>;
+ } & Struct;
+ readonly isFraction: boolean;
+ readonly asFraction: {
+ readonly nom: Compact<u32>;
+ readonly denom: Compact<u32>;
+ } & Struct;
+ readonly isAtLeastProportion: boolean;
+ readonly asAtLeastProportion: {
+ readonly nom: Compact<u32>;
+ readonly denom: Compact<u32>;
+ } & Struct;
+ readonly isMoreThanProportion: boolean;
+ readonly asMoreThanProportion: {
+ readonly nom: Compact<u32>;
+ readonly denom: Compact<u32>;
+ } & Struct;
+ readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
+}
+
+/** @name XcmV0JunctionNetworkId */
+export interface XcmV0JunctionNetworkId extends Enum {
+ readonly isAny: boolean;
+ readonly isNamed: boolean;
+ readonly asNamed: Bytes;
+ readonly isPolkadot: boolean;
+ readonly isKusama: boolean;
+ readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';
+}
+
+/** @name XcmV0MultiAsset */
+export interface XcmV0MultiAsset extends Enum {
+ readonly isNone: boolean;
+ readonly isAll: boolean;
+ readonly isAllFungible: boolean;
+ readonly isAllNonFungible: boolean;
+ readonly isAllAbstractFungible: boolean;
+ readonly asAllAbstractFungible: {
+ readonly id: Bytes;
+ } & Struct;
+ readonly isAllAbstractNonFungible: boolean;
+ readonly asAllAbstractNonFungible: {
+ readonly class: Bytes;
+ } & Struct;
+ readonly isAllConcreteFungible: boolean;
+ readonly asAllConcreteFungible: {
+ readonly id: XcmV0MultiLocation;
+ } & Struct;
+ readonly isAllConcreteNonFungible: boolean;
+ readonly asAllConcreteNonFungible: {
+ readonly class: XcmV0MultiLocation;
+ } & Struct;
+ readonly isAbstractFungible: boolean;
+ readonly asAbstractFungible: {
+ readonly id: Bytes;
+ readonly amount: Compact<u128>;
+ } & Struct;
+ readonly isAbstractNonFungible: boolean;
+ readonly asAbstractNonFungible: {
+ readonly class: Bytes;
+ readonly instance: XcmV1MultiassetAssetInstance;
+ } & Struct;
+ readonly isConcreteFungible: boolean;
+ readonly asConcreteFungible: {
+ readonly id: XcmV0MultiLocation;
+ readonly amount: Compact<u128>;
+ } & Struct;
+ readonly isConcreteNonFungible: boolean;
+ readonly asConcreteNonFungible: {
+ readonly class: XcmV0MultiLocation;
+ readonly instance: XcmV1MultiassetAssetInstance;
+ } & Struct;
+ readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';
+}
+
+/** @name XcmV0MultiLocation */
+export interface XcmV0MultiLocation extends Enum {
+ readonly isNull: boolean;
+ readonly isX1: boolean;
+ readonly asX1: XcmV0Junction;
+ readonly isX2: boolean;
+ readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;
+ readonly isX3: boolean;
+ readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;
+ readonly isX4: boolean;
+ readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;
+ readonly isX5: boolean;
+ readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;
+ readonly isX6: boolean;
+ readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;
+ readonly isX7: boolean;
+ readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;
+ readonly isX8: boolean;
+ readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;
+ readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
+}
+
+/** @name XcmV0Order */
+export interface XcmV0Order extends Enum {
+ readonly isNull: boolean;
+ readonly isDepositAsset: boolean;
+ readonly asDepositAsset: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly dest: XcmV0MultiLocation;
+ } & Struct;
+ readonly isDepositReserveAsset: boolean;
+ readonly asDepositReserveAsset: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly dest: XcmV0MultiLocation;
+ readonly effects: Vec<XcmV0Order>;
+ } & Struct;
+ readonly isExchangeAsset: boolean;
+ readonly asExchangeAsset: {
+ readonly give: Vec<XcmV0MultiAsset>;
+ readonly receive: Vec<XcmV0MultiAsset>;
+ } & Struct;
+ readonly isInitiateReserveWithdraw: boolean;
+ readonly asInitiateReserveWithdraw: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly reserve: XcmV0MultiLocation;
+ readonly effects: Vec<XcmV0Order>;
+ } & Struct;
+ readonly isInitiateTeleport: boolean;
+ readonly asInitiateTeleport: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly dest: XcmV0MultiLocation;
+ readonly effects: Vec<XcmV0Order>;
+ } & Struct;
+ readonly isQueryHolding: boolean;
+ readonly asQueryHolding: {
+ readonly queryId: Compact<u64>;
+ readonly dest: XcmV0MultiLocation;
+ readonly assets: Vec<XcmV0MultiAsset>;
+ } & Struct;
+ readonly isBuyExecution: boolean;
+ readonly asBuyExecution: {
+ readonly fees: XcmV0MultiAsset;
+ readonly weight: u64;
+ readonly debt: u64;
+ readonly haltOnError: bool;
+ readonly xcm: Vec<XcmV0Xcm>;
+ } & Struct;
+ readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
+}
+
+/** @name XcmV0OriginKind */
+export interface XcmV0OriginKind extends Enum {
+ readonly isNative: boolean;
+ readonly isSovereignAccount: boolean;
+ readonly isSuperuser: boolean;
+ readonly isXcm: boolean;
+ readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';
+}
+
+/** @name XcmV0Response */
+export interface XcmV0Response extends Enum {
+ readonly isAssets: boolean;
+ readonly asAssets: Vec<XcmV0MultiAsset>;
+ readonly type: 'Assets';
+}
+
+/** @name XcmV0Xcm */
+export interface XcmV0Xcm extends Enum {
+ readonly isWithdrawAsset: boolean;
+ readonly asWithdrawAsset: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly effects: Vec<XcmV0Order>;
+ } & Struct;
+ readonly isReserveAssetDeposit: boolean;
+ readonly asReserveAssetDeposit: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly effects: Vec<XcmV0Order>;
+ } & Struct;
+ readonly isTeleportAsset: boolean;
+ readonly asTeleportAsset: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly effects: Vec<XcmV0Order>;
+ } & Struct;
+ readonly isQueryResponse: boolean;
+ readonly asQueryResponse: {
+ readonly queryId: Compact<u64>;
+ readonly response: XcmV0Response;
+ } & Struct;
+ readonly isTransferAsset: boolean;
+ readonly asTransferAsset: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly dest: XcmV0MultiLocation;
+ } & Struct;
+ readonly isTransferReserveAsset: boolean;
+ readonly asTransferReserveAsset: {
+ readonly assets: Vec<XcmV0MultiAsset>;
+ readonly dest: XcmV0MultiLocation;
+ readonly effects: Vec<XcmV0Order>;
+ } & Struct;
+ readonly isTransact: boolean;
+ readonly asTransact: {
+ readonly originType: XcmV0OriginKind;
+ readonly requireWeightAtMost: u64;
+ readonly call: XcmDoubleEncoded;
+ } & Struct;
+ readonly isHrmpNewChannelOpenRequest: boolean;
+ readonly asHrmpNewChannelOpenRequest: {
+ readonly sender: Compact<u32>;
+ readonly maxMessageSize: Compact<u32>;
+ readonly maxCapacity: Compact<u32>;
+ } & Struct;
+ readonly isHrmpChannelAccepted: boolean;
+ readonly asHrmpChannelAccepted: {
+ readonly recipient: Compact<u32>;
+ } & Struct;
+ readonly isHrmpChannelClosing: boolean;
+ readonly asHrmpChannelClosing: {
+ readonly initiator: Compact<u32>;
+ readonly sender: Compact<u32>;
+ readonly recipient: Compact<u32>;
+ } & Struct;
+ readonly isRelayedFrom: boolean;
+ readonly asRelayedFrom: {
+ readonly who: XcmV0MultiLocation;
+ readonly message: XcmV0Xcm;
+ } & Struct;
+ readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
+}
+
+/** @name XcmV1Junction */
+export interface XcmV1Junction extends Enum {
+ readonly isParachain: boolean;
+ readonly asParachain: Compact<u32>;
+ readonly isAccountId32: boolean;
+ readonly asAccountId32: {
+ readonly network: XcmV0JunctionNetworkId;
+ readonly id: U8aFixed;
+ } & Struct;
+ readonly isAccountIndex64: boolean;
+ readonly asAccountIndex64: {
+ readonly network: XcmV0JunctionNetworkId;
+ readonly index: Compact<u64>;
+ } & Struct;
+ readonly isAccountKey20: boolean;
+ readonly asAccountKey20: {
+ readonly network: XcmV0JunctionNetworkId;
+ readonly key: U8aFixed;
+ } & Struct;
+ readonly isPalletInstance: boolean;
+ readonly asPalletInstance: u8;
+ readonly isGeneralIndex: boolean;
+ readonly asGeneralIndex: Compact<u128>;
+ readonly isGeneralKey: boolean;
+ readonly asGeneralKey: Bytes;
+ readonly isOnlyChild: boolean;
+ readonly isPlurality: boolean;
+ readonly asPlurality: {
+ readonly id: XcmV0JunctionBodyId;
+ readonly part: XcmV0JunctionBodyPart;
+ } & Struct;
+ readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
+}
+
+/** @name XcmV1MultiAsset */
+export interface XcmV1MultiAsset extends Struct {
+ readonly id: XcmV1MultiassetAssetId;
+ readonly fun: XcmV1MultiassetFungibility;
+}
+
+/** @name XcmV1MultiassetAssetId */
+export interface XcmV1MultiassetAssetId extends Enum {
+ readonly isConcrete: boolean;
+ readonly asConcrete: XcmV1MultiLocation;
+ readonly isAbstract: boolean;
+ readonly asAbstract: Bytes;
+ readonly type: 'Concrete' | 'Abstract';
+}
+
+/** @name XcmV1MultiassetAssetInstance */
+export interface XcmV1MultiassetAssetInstance extends Enum {
+ readonly isUndefined: boolean;
+ readonly isIndex: boolean;
+ readonly asIndex: Compact<u128>;
+ readonly isArray4: boolean;
+ readonly asArray4: U8aFixed;
+ readonly isArray8: boolean;
+ readonly asArray8: U8aFixed;
+ readonly isArray16: boolean;
+ readonly asArray16: U8aFixed;
+ readonly isArray32: boolean;
+ readonly asArray32: U8aFixed;
+ readonly isBlob: boolean;
+ readonly asBlob: Bytes;
+ readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
+}
+
+/** @name XcmV1MultiassetFungibility */
+export interface XcmV1MultiassetFungibility extends Enum {
+ readonly isFungible: boolean;
+ readonly asFungible: Compact<u128>;
+ readonly isNonFungible: boolean;
+ readonly asNonFungible: XcmV1MultiassetAssetInstance;
+ readonly type: 'Fungible' | 'NonFungible';
+}
+
+/** @name XcmV1MultiassetMultiAssetFilter */
+export interface XcmV1MultiassetMultiAssetFilter extends Enum {
+ readonly isDefinite: boolean;
+ readonly asDefinite: XcmV1MultiassetMultiAssets;
+ readonly isWild: boolean;
+ readonly asWild: XcmV1MultiassetWildMultiAsset;
+ readonly type: 'Definite' | 'Wild';
+}
+
+/** @name XcmV1MultiassetMultiAssets */
+export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}
+
+/** @name XcmV1MultiassetWildFungibility */
+export interface XcmV1MultiassetWildFungibility extends Enum {
+ readonly isFungible: boolean;
+ readonly isNonFungible: boolean;
+ readonly type: 'Fungible' | 'NonFungible';
+}
+
+/** @name XcmV1MultiassetWildMultiAsset */
+export interface XcmV1MultiassetWildMultiAsset extends Enum {
+ readonly isAll: boolean;
+ readonly isAllOf: boolean;
+ readonly asAllOf: {
+ readonly id: XcmV1MultiassetAssetId;
+ readonly fun: XcmV1MultiassetWildFungibility;
+ } & Struct;
+ readonly type: 'All' | 'AllOf';
+}
+
+/** @name XcmV1MultiLocation */
+export interface XcmV1MultiLocation extends Struct {
+ readonly parents: u8;
+ readonly interior: XcmV1MultilocationJunctions;
+}
+
+/** @name XcmV1MultilocationJunctions */
+export interface XcmV1MultilocationJunctions extends Enum {
+ readonly isHere: boolean;
+ readonly isX1: boolean;
+ readonly asX1: XcmV1Junction;
+ readonly isX2: boolean;
+ readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;
+ readonly isX3: boolean;
+ readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+ readonly isX4: boolean;
+ readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+ readonly isX5: boolean;
+ readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+ readonly isX6: boolean;
+ readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+ readonly isX7: boolean;
+ readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+ readonly isX8: boolean;
+ readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+ readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
+}
+
+/** @name XcmV1Order */
+export interface XcmV1Order extends Enum {
+ readonly isNoop: boolean;
+ readonly isDepositAsset: boolean;
+ readonly asDepositAsset: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly maxAssets: u32;
+ readonly beneficiary: XcmV1MultiLocation;
+ } & Struct;
+ readonly isDepositReserveAsset: boolean;
+ readonly asDepositReserveAsset: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly maxAssets: u32;
+ readonly dest: XcmV1MultiLocation;
+ readonly effects: Vec<XcmV1Order>;
+ } & Struct;
+ readonly isExchangeAsset: boolean;
+ readonly asExchangeAsset: {
+ readonly give: XcmV1MultiassetMultiAssetFilter;
+ readonly receive: XcmV1MultiassetMultiAssets;
+ } & Struct;
+ readonly isInitiateReserveWithdraw: boolean;
+ readonly asInitiateReserveWithdraw: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly reserve: XcmV1MultiLocation;
+ readonly effects: Vec<XcmV1Order>;
+ } & Struct;
+ readonly isInitiateTeleport: boolean;
+ readonly asInitiateTeleport: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly dest: XcmV1MultiLocation;
+ readonly effects: Vec<XcmV1Order>;
+ } & Struct;
+ readonly isQueryHolding: boolean;
+ readonly asQueryHolding: {
+ readonly queryId: Compact<u64>;
+ readonly dest: XcmV1MultiLocation;
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ } & Struct;
+ readonly isBuyExecution: boolean;
+ readonly asBuyExecution: {
+ readonly fees: XcmV1MultiAsset;
+ readonly weight: u64;
+ readonly debt: u64;
+ readonly haltOnError: bool;
+ readonly instructions: Vec<XcmV1Xcm>;
+ } & Struct;
+ readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
+}
+
+/** @name XcmV1Response */
+export interface XcmV1Response extends Enum {
+ readonly isAssets: boolean;
+ readonly asAssets: XcmV1MultiassetMultiAssets;
+ readonly isVersion: boolean;
+ readonly asVersion: u32;
+ readonly type: 'Assets' | 'Version';
+}
+
+/** @name XcmV1Xcm */
+export interface XcmV1Xcm extends Enum {
+ readonly isWithdrawAsset: boolean;
+ readonly asWithdrawAsset: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly effects: Vec<XcmV1Order>;
+ } & Struct;
+ readonly isReserveAssetDeposited: boolean;
+ readonly asReserveAssetDeposited: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly effects: Vec<XcmV1Order>;
+ } & Struct;
+ readonly isReceiveTeleportedAsset: boolean;
+ readonly asReceiveTeleportedAsset: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly effects: Vec<XcmV1Order>;
+ } & Struct;
+ readonly isQueryResponse: boolean;
+ readonly asQueryResponse: {
+ readonly queryId: Compact<u64>;
+ readonly response: XcmV1Response;
+ } & Struct;
+ readonly isTransferAsset: boolean;
+ readonly asTransferAsset: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly beneficiary: XcmV1MultiLocation;
+ } & Struct;
+ readonly isTransferReserveAsset: boolean;
+ readonly asTransferReserveAsset: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly dest: XcmV1MultiLocation;
+ readonly effects: Vec<XcmV1Order>;
+ } & Struct;
+ readonly isTransact: boolean;
+ readonly asTransact: {
+ readonly originType: XcmV0OriginKind;
+ readonly requireWeightAtMost: u64;
+ readonly call: XcmDoubleEncoded;
+ } & Struct;
+ readonly isHrmpNewChannelOpenRequest: boolean;
+ readonly asHrmpNewChannelOpenRequest: {
+ readonly sender: Compact<u32>;
+ readonly maxMessageSize: Compact<u32>;
+ readonly maxCapacity: Compact<u32>;
+ } & Struct;
+ readonly isHrmpChannelAccepted: boolean;
+ readonly asHrmpChannelAccepted: {
+ readonly recipient: Compact<u32>;
+ } & Struct;
+ readonly isHrmpChannelClosing: boolean;
+ readonly asHrmpChannelClosing: {
+ readonly initiator: Compact<u32>;
+ readonly sender: Compact<u32>;
+ readonly recipient: Compact<u32>;
+ } & Struct;
+ readonly isRelayedFrom: boolean;
+ readonly asRelayedFrom: {
+ readonly who: XcmV1MultilocationJunctions;
+ readonly message: XcmV1Xcm;
+ } & Struct;
+ readonly isSubscribeVersion: boolean;
+ readonly asSubscribeVersion: {
+ readonly queryId: Compact<u64>;
+ readonly maxResponseWeight: Compact<u64>;
+ } & Struct;
+ readonly isUnsubscribeVersion: boolean;
+ readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';
+}
+
+/** @name XcmV2Instruction */
+export interface XcmV2Instruction extends Enum {
+ readonly isWithdrawAsset: boolean;
+ readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;
+ readonly isReserveAssetDeposited: boolean;
+ readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;
+ readonly isReceiveTeleportedAsset: boolean;
+ readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;
+ readonly isQueryResponse: boolean;
+ readonly asQueryResponse: {
+ readonly queryId: Compact<u64>;
+ readonly response: XcmV2Response;
+ readonly maxWeight: Compact<u64>;
+ } & Struct;
+ readonly isTransferAsset: boolean;
+ readonly asTransferAsset: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly beneficiary: XcmV1MultiLocation;
+ } & Struct;
+ readonly isTransferReserveAsset: boolean;
+ readonly asTransferReserveAsset: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly dest: XcmV1MultiLocation;
+ readonly xcm: XcmV2Xcm;
+ } & Struct;
+ readonly isTransact: boolean;
+ readonly asTransact: {
+ readonly originType: XcmV0OriginKind;
+ readonly requireWeightAtMost: Compact<u64>;
+ readonly call: XcmDoubleEncoded;
+ } & Struct;
+ readonly isHrmpNewChannelOpenRequest: boolean;
+ readonly asHrmpNewChannelOpenRequest: {
+ readonly sender: Compact<u32>;
+ readonly maxMessageSize: Compact<u32>;
+ readonly maxCapacity: Compact<u32>;
+ } & Struct;
+ readonly isHrmpChannelAccepted: boolean;
+ readonly asHrmpChannelAccepted: {
+ readonly recipient: Compact<u32>;
+ } & Struct;
+ readonly isHrmpChannelClosing: boolean;
+ readonly asHrmpChannelClosing: {
+ readonly initiator: Compact<u32>;
+ readonly sender: Compact<u32>;
+ readonly recipient: Compact<u32>;
+ } & Struct;
+ readonly isClearOrigin: boolean;
+ readonly isDescendOrigin: boolean;
+ readonly asDescendOrigin: XcmV1MultilocationJunctions;
+ readonly isReportError: boolean;
+ readonly asReportError: {
+ readonly queryId: Compact<u64>;
+ readonly dest: XcmV1MultiLocation;
+ readonly maxResponseWeight: Compact<u64>;
+ } & Struct;
+ readonly isDepositAsset: boolean;
+ readonly asDepositAsset: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly maxAssets: Compact<u32>;
+ readonly beneficiary: XcmV1MultiLocation;
+ } & Struct;
+ readonly isDepositReserveAsset: boolean;
+ readonly asDepositReserveAsset: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly maxAssets: Compact<u32>;
+ readonly dest: XcmV1MultiLocation;
+ readonly xcm: XcmV2Xcm;
+ } & Struct;
+ readonly isExchangeAsset: boolean;
+ readonly asExchangeAsset: {
+ readonly give: XcmV1MultiassetMultiAssetFilter;
+ readonly receive: XcmV1MultiassetMultiAssets;
+ } & Struct;
+ readonly isInitiateReserveWithdraw: boolean;
+ readonly asInitiateReserveWithdraw: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly reserve: XcmV1MultiLocation;
+ readonly xcm: XcmV2Xcm;
+ } & Struct;
+ readonly isInitiateTeleport: boolean;
+ readonly asInitiateTeleport: {
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly dest: XcmV1MultiLocation;
+ readonly xcm: XcmV2Xcm;
+ } & Struct;
+ readonly isQueryHolding: boolean;
+ readonly asQueryHolding: {
+ readonly queryId: Compact<u64>;
+ readonly dest: XcmV1MultiLocation;
+ readonly assets: XcmV1MultiassetMultiAssetFilter;
+ readonly maxResponseWeight: Compact<u64>;
+ } & Struct;
+ readonly isBuyExecution: boolean;
+ readonly asBuyExecution: {
+ readonly fees: XcmV1MultiAsset;
+ readonly weightLimit: XcmV2WeightLimit;
+ } & Struct;
+ readonly isRefundSurplus: boolean;
+ readonly isSetErrorHandler: boolean;
+ readonly asSetErrorHandler: XcmV2Xcm;
+ readonly isSetAppendix: boolean;
+ readonly asSetAppendix: XcmV2Xcm;
+ readonly isClearError: boolean;
+ readonly isClaimAsset: boolean;
+ readonly asClaimAsset: {
+ readonly assets: XcmV1MultiassetMultiAssets;
+ readonly ticket: XcmV1MultiLocation;
+ } & Struct;
+ readonly isTrap: boolean;
+ readonly asTrap: Compact<u64>;
+ readonly isSubscribeVersion: boolean;
+ readonly asSubscribeVersion: {
+ readonly queryId: Compact<u64>;
+ readonly maxResponseWeight: Compact<u64>;
+ } & Struct;
+ readonly isUnsubscribeVersion: boolean;
+ 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';
+}
+
+/** @name XcmV2Response */
+export interface XcmV2Response extends Enum {
+ readonly isNull: boolean;
+ readonly isAssets: boolean;
+ readonly asAssets: XcmV1MultiassetMultiAssets;
+ readonly isExecutionResult: boolean;
+ readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;
+ readonly isVersion: boolean;
+ readonly asVersion: u32;
+ readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';
+}
+
+/** @name XcmV2TraitsError */
+export interface XcmV2TraitsError extends Enum {
+ readonly isOverflow: boolean;
+ readonly isUnimplemented: boolean;
+ readonly isUntrustedReserveLocation: boolean;
+ readonly isUntrustedTeleportLocation: boolean;
+ readonly isMultiLocationFull: boolean;
+ readonly isMultiLocationNotInvertible: boolean;
+ readonly isBadOrigin: boolean;
+ readonly isInvalidLocation: boolean;
+ readonly isAssetNotFound: boolean;
+ readonly isFailedToTransactAsset: boolean;
+ readonly isNotWithdrawable: boolean;
+ readonly isLocationCannotHold: boolean;
+ readonly isExceedsMaxMessageSize: boolean;
+ readonly isDestinationUnsupported: boolean;
+ readonly isTransport: boolean;
+ readonly isUnroutable: boolean;
+ readonly isUnknownClaim: boolean;
+ readonly isFailedToDecode: boolean;
+ readonly isMaxWeightInvalid: boolean;
+ readonly isNotHoldingFees: boolean;
+ readonly isTooExpensive: boolean;
+ readonly isTrap: boolean;
+ readonly asTrap: u64;
+ readonly isUnhandledXcmVersion: boolean;
+ readonly isWeightLimitReached: boolean;
+ readonly asWeightLimitReached: u64;
+ readonly isBarrier: boolean;
+ readonly isWeightNotComputable: boolean;
+ 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';
+}
+
+/** @name XcmV2TraitsOutcome */
+export interface XcmV2TraitsOutcome extends Enum {
+ readonly isComplete: boolean;
+ readonly asComplete: u64;
+ readonly isIncomplete: boolean;
+ readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;
+ readonly isError: boolean;
+ readonly asError: XcmV2TraitsError;
+ readonly type: 'Complete' | 'Incomplete' | 'Error';
+}
+
+/** @name XcmV2WeightLimit */
+export interface XcmV2WeightLimit extends Enum {
+ readonly isUnlimited: boolean;
+ readonly isLimited: boolean;
+ readonly asLimited: Compact<u64>;
+ readonly type: 'Unlimited' | 'Limited';
+}
+
+/** @name XcmV2Xcm */
+export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}
+
+/** @name XcmVersionedMultiAssets */
+export interface XcmVersionedMultiAssets extends Enum {
+ readonly isV0: boolean;
+ readonly asV0: Vec<XcmV0MultiAsset>;
+ readonly isV1: boolean;
+ readonly asV1: XcmV1MultiassetMultiAssets;
+ readonly type: 'V0' | 'V1';
+}
+
+/** @name XcmVersionedMultiLocation */
+export interface XcmVersionedMultiLocation extends Enum {
+ readonly isV0: boolean;
+ readonly asV0: XcmV0MultiLocation;
+ readonly isV1: boolean;
+ readonly asV1: XcmV1MultiLocation;
+ readonly type: 'V0' | 'V1';
+}
+
+/** @name XcmVersionedXcm */
+export interface XcmVersionedXcm extends Enum {
+ readonly isV0: boolean;
+ readonly asV0: XcmV0Xcm;
+ readonly isV1: boolean;
+ readonly asV1: XcmV1Xcm;
+ readonly isV2: boolean;
+ readonly asV2: XcmV2Xcm;
+ readonly type: 'V0' | 'V1' | 'V2';
+}
+
+export type PHANTOM_RMRK = 'rmrk';
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -4,7 +4,7 @@
declare module '@polkadot/types/lookup' {
import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
import type { ITuple } from '@polkadot/types-codec/types';
- import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
+ import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
import type { Event } from '@polkadot/types/interfaces/system';
/** @name PolkadotPrimitivesV2PersistedValidationData (2) */
@@ -1582,12 +1582,9 @@
readonly isDisabled: boolean;
readonly isOwner: boolean;
readonly isOwnerRestricted: boolean;
- readonly asOwnerRestricted: FrameSupportStorageBoundedBTreeSet;
+ readonly asOwnerRestricted: BTreeSet<u32>;
readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted';
}
-
- /** @name FrameSupportStorageBoundedBTreeSet (171) */
- export interface FrameSupportStorageBoundedBTreeSet extends BTreeSet<u32> {}
/** @name UpDataStructsPropertyKeyPermission (177) */
export interface UpDataStructsPropertyKeyPermission extends Struct {
@@ -2544,7 +2541,143 @@
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name PalletCommonError (333) */
+ /** @name PhantomTypeUpDataStructsCollectionInfo (333) */
+ export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<RmrkTypesCollectionInfo> {}
+
+ /** @name RmrkTypesCollectionInfo (334) */
+ export interface RmrkTypesCollectionInfo extends Struct {
+ readonly issuer: AccountId32;
+ readonly metadata: Bytes;
+ readonly max: Option<u32>;
+ readonly symbol: Bytes;
+ readonly nftsCount: u32;
+ }
+
+ /** @name PhantomTypeUpDataStructsNftInfo (338) */
+ export interface PhantomTypeUpDataStructsNftInfo extends Vec<RmrkTypesNftInfo> {}
+
+ /** @name RmrkTypesNftInfo (339) */
+ export interface RmrkTypesNftInfo extends Struct {
+ readonly owner: RmrkTypesAccountIdOrCollectionNftTuple;
+ readonly royalty: Option<RmrkTypesRoyaltyInfo>;
+ readonly metadata: Bytes;
+ readonly equipped: bool;
+ readonly pending: bool;
+ }
+
+ /** @name RmrkTypesAccountIdOrCollectionNftTuple (340) */
+ export interface RmrkTypesAccountIdOrCollectionNftTuple extends Enum {
+ readonly isAccountId: boolean;
+ readonly asAccountId: AccountId32;
+ readonly isCollectionAndNftTuple: boolean;
+ readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;
+ readonly type: 'AccountId' | 'CollectionAndNftTuple';
+ }
+
+ /** @name RmrkTypesRoyaltyInfo (342) */
+ export interface RmrkTypesRoyaltyInfo extends Struct {
+ readonly recipient: AccountId32;
+ readonly amount: Permill;
+ }
+
+ /** @name PhantomTypeUpDataStructsResourceInfo (344) */
+ export interface PhantomTypeUpDataStructsResourceInfo extends Vec<RmrkTypesResourceInfo> {}
+
+ /** @name RmrkTypesResourceInfo (345) */
+ export interface RmrkTypesResourceInfo extends Struct {
+ readonly id: Bytes;
+ readonly pending: bool;
+ readonly pendingRemoval: bool;
+ readonly parts: Option<Vec<u32>>;
+ readonly base: Option<u32>;
+ readonly src: Option<Bytes>;
+ readonly metadata: Option<Bytes>;
+ readonly slot: Option<u32>;
+ readonly license: Option<Bytes>;
+ readonly thumb: Option<Bytes>;
+ }
+
+ /** @name PhantomTypeUpDataStructsPropertyInfo (351) */
+ export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<RmrkTypesPropertyInfo> {}
+
+ /** @name RmrkTypesPropertyInfo (352) */
+ export interface RmrkTypesPropertyInfo extends Struct {
+ readonly key: Bytes;
+ readonly value: Bytes;
+ }
+
+ /** @name PhantomTypeUpDataStructsBaseInfo (356) */
+ export interface PhantomTypeUpDataStructsBaseInfo extends Vec<RmrkTypesBaseInfo> {}
+
+ /** @name RmrkTypesBaseInfo (357) */
+ export interface RmrkTypesBaseInfo extends Struct {
+ readonly issuer: AccountId32;
+ readonly baseType: Bytes;
+ readonly symbol: Bytes;
+ }
+
+ /** @name PhantomTypeUpDataStructsPartType (359) */
+ export interface PhantomTypeUpDataStructsPartType extends Vec<RmrkTypesPartType> {}
+
+ /** @name RmrkTypesPartType (360) */
+ export interface RmrkTypesPartType extends Enum {
+ readonly isFixedPart: boolean;
+ readonly asFixedPart: RmrkTypesFixedPart;
+ readonly isSlotPart: boolean;
+ readonly asSlotPart: RmrkTypesSlotPart;
+ readonly type: 'FixedPart' | 'SlotPart';
+ }
+
+ /** @name RmrkTypesFixedPart (362) */
+ export interface RmrkTypesFixedPart extends Struct {
+ readonly id: u32;
+ readonly z: u32;
+ readonly src: Bytes;
+ }
+
+ /** @name RmrkTypesSlotPart (363) */
+ export interface RmrkTypesSlotPart extends Struct {
+ readonly id: u32;
+ readonly equippable: RmrkTypesEquippableList;
+ readonly src: Bytes;
+ readonly z: u32;
+ }
+
+ /** @name RmrkTypesEquippableList (364) */
+ export interface RmrkTypesEquippableList extends Enum {
+ readonly isAll: boolean;
+ readonly isEmpty: boolean;
+ readonly isCustom: boolean;
+ readonly asCustom: Vec<u32>;
+ readonly type: 'All' | 'Empty' | 'Custom';
+ }
+
+ /** @name PhantomTypeUpDataStructsTheme (366) */
+ export interface PhantomTypeUpDataStructsTheme extends Vec<RmrkTypesTheme> {}
+
+ /** @name RmrkTypesTheme (367) */
+ export interface RmrkTypesTheme extends Struct {
+ readonly name: Bytes;
+ readonly properties: Vec<RmrkTypesThemeProperty>;
+ readonly inherit: bool;
+ }
+
+ /** @name RmrkTypesThemeProperty (369) */
+ export interface RmrkTypesThemeProperty extends Struct {
+ readonly key: Bytes;
+ readonly value: Bytes;
+ }
+
+ /** @name PhantomTypeUpDataStructsNftChild (371) */
+ export interface PhantomTypeUpDataStructsNftChild extends Vec<RmrkTypesNftChild> {}
+
+ /** @name RmrkTypesNftChild (372) */
+ export interface RmrkTypesNftChild extends Struct {
+ readonly collectionId: u32;
+ readonly nftId: u32;
+ }
+
+ /** @name PalletCommonError (374) */
export interface PalletCommonError extends Enum {
readonly isCollectionNotFound: boolean;
readonly isMustBeTokenOwner: boolean;
@@ -2581,7 +2714,7 @@
readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';
}
- /** @name PalletFungibleError (335) */
+ /** @name PalletFungibleError (376) */
export interface PalletFungibleError extends Enum {
readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isFungibleItemsHaveNoId: boolean;
@@ -2591,12 +2724,12 @@
readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
}
- /** @name PalletRefungibleItemData (336) */
+ /** @name PalletRefungibleItemData (377) */
export interface PalletRefungibleItemData extends Struct {
readonly constData: Bytes;
}
- /** @name PalletRefungibleError (340) */
+ /** @name PalletRefungibleError (381) */
export interface PalletRefungibleError extends Enum {
readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isWrongRefungiblePieces: boolean;
@@ -2605,20 +2738,20 @@
readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
}
- /** @name PalletNonfungibleItemData (341) */
+ /** @name PalletNonfungibleItemData (382) */
export interface PalletNonfungibleItemData extends Struct {
readonly constData: Bytes;
readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name PalletNonfungibleError (342) */
+ /** @name PalletNonfungibleError (383) */
export interface PalletNonfungibleError extends Enum {
readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isNonfungibleItemsHaveNoAmount: boolean;
readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount';
}
- /** @name PalletStructureError (343) */
+ /** @name PalletStructureError (384) */
export interface PalletStructureError extends Enum {
readonly isOuroborosDetected: boolean;
readonly isDepthLimit: boolean;
@@ -2626,7 +2759,7 @@
readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound';
}
- /** @name PalletEvmError (346) */
+ /** @name PalletEvmError (387) */
export interface PalletEvmError extends Enum {
readonly isBalanceLow: boolean;
readonly isFeeOverflow: boolean;
@@ -2637,7 +2770,7 @@
readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
}
- /** @name FpRpcTransactionStatus (349) */
+ /** @name FpRpcTransactionStatus (390) */
export interface FpRpcTransactionStatus extends Struct {
readonly transactionHash: H256;
readonly transactionIndex: u32;
@@ -2648,10 +2781,10 @@
readonly logsBloom: EthbloomBloom;
}
- /** @name EthbloomBloom (351) */
+ /** @name EthbloomBloom (392) */
export interface EthbloomBloom extends U8aFixed {}
- /** @name EthereumReceiptReceiptV3 (353) */
+ /** @name EthereumReceiptReceiptV3 (394) */
export interface EthereumReceiptReceiptV3 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumReceiptEip658ReceiptData;
@@ -2662,7 +2795,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumReceiptEip658ReceiptData (354) */
+ /** @name EthereumReceiptEip658ReceiptData (395) */
export interface EthereumReceiptEip658ReceiptData extends Struct {
readonly statusCode: u8;
readonly usedGas: U256;
@@ -2670,14 +2803,14 @@
readonly logs: Vec<EthereumLog>;
}
- /** @name EthereumBlock (355) */
+ /** @name EthereumBlock (396) */
export interface EthereumBlock extends Struct {
readonly header: EthereumHeader;
readonly transactions: Vec<EthereumTransactionTransactionV2>;
readonly ommers: Vec<EthereumHeader>;
}
- /** @name EthereumHeader (356) */
+ /** @name EthereumHeader (397) */
export interface EthereumHeader extends Struct {
readonly parentHash: H256;
readonly ommersHash: H256;
@@ -2696,24 +2829,24 @@
readonly nonce: EthereumTypesHashH64;
}
- /** @name EthereumTypesHashH64 (357) */
+ /** @name EthereumTypesHashH64 (398) */
export interface EthereumTypesHashH64 extends U8aFixed {}
- /** @name PalletEthereumError (362) */
+ /** @name PalletEthereumError (403) */
export interface PalletEthereumError extends Enum {
readonly isInvalidSignature: boolean;
readonly isPreLogExists: boolean;
readonly type: 'InvalidSignature' | 'PreLogExists';
}
- /** @name PalletEvmCoderSubstrateError (363) */
+ /** @name PalletEvmCoderSubstrateError (404) */
export interface PalletEvmCoderSubstrateError extends Enum {
readonly isOutOfGas: boolean;
readonly isOutOfFund: boolean;
readonly type: 'OutOfGas' | 'OutOfFund';
}
- /** @name PalletEvmContractHelpersSponsoringModeT (364) */
+ /** @name PalletEvmContractHelpersSponsoringModeT (405) */
export interface PalletEvmContractHelpersSponsoringModeT extends Enum {
readonly isDisabled: boolean;
readonly isAllowlisted: boolean;
@@ -2721,20 +2854,20 @@
readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
}
- /** @name PalletEvmContractHelpersError (366) */
+ /** @name PalletEvmContractHelpersError (407) */
export interface PalletEvmContractHelpersError extends Enum {
readonly isNoPermission: boolean;
readonly type: 'NoPermission';
}
- /** @name PalletEvmMigrationError (367) */
+ /** @name PalletEvmMigrationError (408) */
export interface PalletEvmMigrationError extends Enum {
readonly isAccountNotEmpty: boolean;
readonly isAccountIsNotMigrating: boolean;
readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
}
- /** @name SpRuntimeMultiSignature (369) */
+ /** @name SpRuntimeMultiSignature (410) */
export interface SpRuntimeMultiSignature extends Enum {
readonly isEd25519: boolean;
readonly asEd25519: SpCoreEd25519Signature;
@@ -2745,34 +2878,34 @@
readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
}
- /** @name SpCoreEd25519Signature (370) */
+ /** @name SpCoreEd25519Signature (411) */
export interface SpCoreEd25519Signature extends U8aFixed {}
- /** @name SpCoreSr25519Signature (372) */
+ /** @name SpCoreSr25519Signature (413) */
export interface SpCoreSr25519Signature extends U8aFixed {}
- /** @name SpCoreEcdsaSignature (373) */
+ /** @name SpCoreEcdsaSignature (414) */
export interface SpCoreEcdsaSignature extends U8aFixed {}
- /** @name FrameSystemExtensionsCheckSpecVersion (376) */
+ /** @name FrameSystemExtensionsCheckSpecVersion (417) */
export type FrameSystemExtensionsCheckSpecVersion = Null;
- /** @name FrameSystemExtensionsCheckGenesis (377) */
+ /** @name FrameSystemExtensionsCheckGenesis (418) */
export type FrameSystemExtensionsCheckGenesis = Null;
- /** @name FrameSystemExtensionsCheckNonce (380) */
+ /** @name FrameSystemExtensionsCheckNonce (421) */
export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
- /** @name FrameSystemExtensionsCheckWeight (381) */
+ /** @name FrameSystemExtensionsCheckWeight (422) */
export type FrameSystemExtensionsCheckWeight = Null;
- /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (382) */
+ /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (423) */
export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
- /** @name OpalRuntimeRuntime (383) */
+ /** @name OpalRuntimeRuntime (424) */
export type OpalRuntimeRuntime = Null;
- /** @name PalletEthereumFakeTransactionFinalizer (384) */
+ /** @name PalletEthereumFakeTransactionFinalizer (425) */
export type PalletEthereumFakeTransactionFinalizer = Null;
} // declare module
tests/src/interfaces/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/types.ts
+++ b/tests/src/interfaces/types.ts
@@ -2,3 +2,4 @@
/* eslint-disable */
export * from './unique/types';
+export * from './rmrk/types';
tests/src/interfaces/unique/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/unique/types.ts
+++ b/tests/src/interfaces/unique/types.ts
@@ -3,7 +3,7 @@
import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
import type { ITuple } from '@polkadot/types-codec/types';
-import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
+import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
import type { Event } from '@polkadot/types/interfaces/system';
/** @name CumulusPalletDmpQueueCall */
@@ -445,9 +445,6 @@
/** @name FrameSupportPalletId */
export interface FrameSupportPalletId extends U8aFixed {}
-
-/** @name FrameSupportStorageBoundedBTreeSet */
-export interface FrameSupportStorageBoundedBTreeSet extends BTreeSet<u32> {}
/** @name FrameSupportTokensMiscBalanceStatus */
export interface FrameSupportTokensMiscBalanceStatus extends Enum {
@@ -1617,9 +1614,33 @@
readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
}
+/** @name PhantomTypeUpDataStructsBaseInfo */
+export interface PhantomTypeUpDataStructsBaseInfo extends Vec<Lookup357> {}
+
+/** @name PhantomTypeUpDataStructsCollectionInfo */
+export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<Lookup334> {}
+
+/** @name PhantomTypeUpDataStructsNftChild */
+export interface PhantomTypeUpDataStructsNftChild extends Vec<Lookup372> {}
+
+/** @name PhantomTypeUpDataStructsNftInfo */
+export interface PhantomTypeUpDataStructsNftInfo extends Vec<Lookup339> {}
+
+/** @name PhantomTypeUpDataStructsPartType */
+export interface PhantomTypeUpDataStructsPartType extends Vec<Lookup360> {}
+
+/** @name PhantomTypeUpDataStructsPropertyInfo */
+export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<Lookup352> {}
+
+/** @name PhantomTypeUpDataStructsResourceInfo */
+export interface PhantomTypeUpDataStructsResourceInfo extends Vec<Lookup345> {}
+
/** @name PhantomTypeUpDataStructsRpcCollection */
export interface PhantomTypeUpDataStructsRpcCollection extends Vec<Lookup331> {}
+/** @name PhantomTypeUpDataStructsTheme */
+export interface PhantomTypeUpDataStructsTheme extends Vec<Lookup367> {}
+
/** @name PhantomTypeUpDataStructsTokenData */
export interface PhantomTypeUpDataStructsTokenData extends Vec<Lookup327> {}
@@ -1686,6 +1707,118 @@
readonly type: 'Present';
}
+/** @name RmrkTypesAccountIdOrCollectionNftTuple */
+export interface RmrkTypesAccountIdOrCollectionNftTuple extends Enum {
+ readonly isAccountId: boolean;
+ readonly asAccountId: AccountId32;
+ readonly isCollectionAndNftTuple: boolean;
+ readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;
+ readonly type: 'AccountId' | 'CollectionAndNftTuple';
+}
+
+/** @name RmrkTypesBaseInfo */
+export interface RmrkTypesBaseInfo extends Struct {
+ readonly issuer: AccountId32;
+ readonly baseType: Bytes;
+ readonly symbol: Bytes;
+}
+
+/** @name RmrkTypesCollectionInfo */
+export interface RmrkTypesCollectionInfo extends Struct {
+ readonly issuer: AccountId32;
+ readonly metadata: Bytes;
+ readonly max: Option<u32>;
+ readonly symbol: Bytes;
+ readonly nftsCount: u32;
+}
+
+/** @name RmrkTypesEquippableList */
+export interface RmrkTypesEquippableList extends Enum {
+ readonly isAll: boolean;
+ readonly isEmpty: boolean;
+ readonly isCustom: boolean;
+ readonly asCustom: Vec<u32>;
+ readonly type: 'All' | 'Empty' | 'Custom';
+}
+
+/** @name RmrkTypesFixedPart */
+export interface RmrkTypesFixedPart extends Struct {
+ readonly id: u32;
+ readonly z: u32;
+ readonly src: Bytes;
+}
+
+/** @name RmrkTypesNftChild */
+export interface RmrkTypesNftChild extends Struct {
+ readonly collectionId: u32;
+ readonly nftId: u32;
+}
+
+/** @name RmrkTypesNftInfo */
+export interface RmrkTypesNftInfo extends Struct {
+ readonly owner: RmrkTypesAccountIdOrCollectionNftTuple;
+ readonly royalty: Option<RmrkTypesRoyaltyInfo>;
+ readonly metadata: Bytes;
+ readonly equipped: bool;
+ readonly pending: bool;
+}
+
+/** @name RmrkTypesPartType */
+export interface RmrkTypesPartType extends Enum {
+ readonly isFixedPart: boolean;
+ readonly asFixedPart: RmrkTypesFixedPart;
+ readonly isSlotPart: boolean;
+ readonly asSlotPart: RmrkTypesSlotPart;
+ readonly type: 'FixedPart' | 'SlotPart';
+}
+
+/** @name RmrkTypesPropertyInfo */
+export interface RmrkTypesPropertyInfo extends Struct {
+ readonly key: Bytes;
+ readonly value: Bytes;
+}
+
+/** @name RmrkTypesResourceInfo */
+export interface RmrkTypesResourceInfo extends Struct {
+ readonly id: Bytes;
+ readonly pending: bool;
+ readonly pendingRemoval: bool;
+ readonly parts: Option<Vec<u32>>;
+ readonly base: Option<u32>;
+ readonly src: Option<Bytes>;
+ readonly metadata: Option<Bytes>;
+ readonly slot: Option<u32>;
+ readonly license: Option<Bytes>;
+ readonly thumb: Option<Bytes>;
+}
+
+/** @name RmrkTypesRoyaltyInfo */
+export interface RmrkTypesRoyaltyInfo extends Struct {
+ readonly recipient: AccountId32;
+ readonly amount: Permill;
+}
+
+/** @name RmrkTypesSlotPart */
+export interface RmrkTypesSlotPart extends Struct {
+ readonly id: u32;
+ readonly equippable: RmrkTypesEquippableList;
+ readonly src: Bytes;
+ readonly z: u32;
+}
+
+/** @name RmrkTypesTheme */
+export interface RmrkTypesTheme extends Struct {
+ readonly name: Bytes;
+ readonly properties: Vec<RmrkTypesThemeProperty>;
+ readonly inherit: bool;
+}
+
+/** @name RmrkTypesThemeProperty */
+export interface RmrkTypesThemeProperty extends Struct {
+ readonly key: Bytes;
+ readonly value: Bytes;
+}
+
/** @name SpCoreEcdsaSignature */
export interface SpCoreEcdsaSignature extends U8aFixed {}
@@ -1927,7 +2060,7 @@
readonly isDisabled: boolean;
readonly isOwner: boolean;
readonly isOwnerRestricted: boolean;
- readonly asOwnerRestricted: FrameSupportStorageBoundedBTreeSet;
+ readonly asOwnerRestricted: BTreeSet<u32>;
readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted';
}
tests/src/substrate/substrate-api.tsdiffbeforeafterboth--- a/tests/src/substrate/substrate-api.ts
+++ b/tests/src/substrate/substrate-api.ts
@@ -41,6 +41,7 @@
},
rpc: {
unique: defs.unique.rpc,
+ rmrk: defs.rmrk.rpc,
eth: {
feeHistory: {
description: 'Dummy',