difftreelog
merge develop
in: master
91 files changed
.envdiffbeforeafterboth1RUST_TOOLCHAIN=nightly-2022-05-111RUST_TOOLCHAIN=nightly-2022-05-112RUST_C=1.62.0-nightly2RUST_C=1.62.0-nightly3POLKA_VERSION=release-v0.9.223POLKA_VERSION=release-v0.9.234UNIQUE_BRANCH=develop4UNIQUE_BRANCH=develop5USER=***5USER=***6PASS=***6PASS=***Cargo.lockdiffbeforeafterboth68source = "registry+https://github.com/rust-lang/crates.io-index"68source = "registry+https://github.com/rust-lang/crates.io-index"69checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"69checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"70dependencies = [70dependencies = [71 "getrandom 0.2.6",71 "getrandom 0.2.7",72 "once_cell",72 "once_cell",73 "version_check",73 "version_check",74]74]9999100[[package]]100[[package]]101name = "anyhow"101name = "anyhow"102version = "1.0.57"102version = "1.0.58"103source = "registry+https://github.com/rust-lang/crates.io-index"103source = "registry+https://github.com/rust-lang/crates.io-index"104checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"104checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"105105106[[package]]106[[package]]107name = "approx"107name = "approx"188188189[[package]]189[[package]]190name = "async-global-executor"190name = "async-global-executor"191version = "2.1.0"191version = "2.2.0"192source = "registry+https://github.com/rust-lang/crates.io-index"192source = "registry+https://github.com/rust-lang/crates.io-index"193checksum = "fd8b508d585e01084059b60f06ade4cb7415cd2e4084b71dd1cb44e7d3fb9880"193checksum = "5262ed948da60dd8956c6c5aca4d4163593dddb7b32d73267c93dab7b2e98940"194dependencies = [194dependencies = [195 "async-channel",195 "async-channel",196 "async-executor",196 "async-executor",197 "async-io",197 "async-io",198 "async-lock",198 "async-lock",199 "blocking",199 "blocking",200 "futures-lite",200 "futures-lite",201 "num_cpus",201 "once_cell",202 "once_cell",202]203]203204248249249[[package]]250[[package]]250name = "async-std"251name = "async-std"251version = "1.11.0"252version = "1.12.0"252source = "registry+https://github.com/rust-lang/crates.io-index"253source = "registry+https://github.com/rust-lang/crates.io-index"253checksum = "52580991739c5cdb36cde8b2a516371c0a3b70dda36d916cc08b82372916808c"254checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"254dependencies = [255dependencies = [255 "async-attributes",256 "async-attributes",256 "async-channel",257 "async-channel",267 "kv-log-macro",268 "kv-log-macro",268 "log",269 "log",269 "memchr",270 "memchr",270 "num_cpus",271 "once_cell",271 "once_cell",272 "pin-project-lite 0.2.9",272 "pin-project-lite 0.2.9",273 "pin-utils",273 "pin-utils",371checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"371checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"372dependencies = [372dependencies = [373 "futures-core",373 "futures-core",374 "getrandom 0.2.6",374 "getrandom 0.2.7",375 "instant",375 "instant",376 "pin-project-lite 0.2.9",376 "pin-project-lite 0.2.9",377 "rand 0.8.5",377 "rand 0.8.5",429[[package]]429[[package]]430name = "beefy-gadget"430name = "beefy-gadget"431version = "4.0.0-dev"431version = "4.0.0-dev"432source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"432source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"433dependencies = [433dependencies = [434 "beefy-primitives",434 "beefy-primitives",435 "fnv",435 "fnv",436 "futures 0.3.21",436 "futures 0.3.21",437 "futures-timer",437 "futures-timer",438 "hex",438 "hex",439 "log",439 "log",440 "parity-scale-codec 3.1.2",440 "parity-scale-codec 3.1.5",441 "parking_lot 0.12.1",441 "parking_lot 0.12.1",442 "sc-chain-spec",442 "sc-chain-spec",443 "sc-client-api",443 "sc-client-api",463[[package]]463[[package]]464name = "beefy-gadget-rpc"464name = "beefy-gadget-rpc"465version = "4.0.0-dev"465version = "4.0.0-dev"466source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"466source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"467dependencies = [467dependencies = [468 "beefy-gadget",468 "beefy-gadget",469 "beefy-primitives",469 "beefy-primitives",470 "futures 0.3.21",470 "futures 0.3.21",471 "jsonrpsee",471 "jsonrpsee",472 "log",472 "log",473 "parity-scale-codec 3.1.2",473 "parity-scale-codec 3.1.5",474 "parking_lot 0.12.1",474 "parking_lot 0.12.1",475 "sc-rpc",475 "sc-rpc",476 "sc-utils",476 "sc-utils",483[[package]]483[[package]]484name = "beefy-merkle-tree"484name = "beefy-merkle-tree"485version = "4.0.0-dev"485version = "4.0.0-dev"486source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"486source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"487487488[[package]]488[[package]]489name = "beefy-primitives"489name = "beefy-primitives"490version = "4.0.0-dev"490version = "4.0.0-dev"491source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"491source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"492dependencies = [492dependencies = [493 "parity-scale-codec 3.1.2",493 "parity-scale-codec 3.1.5",494 "scale-info",494 "scale-info",495 "sp-api",495 "sp-api",496 "sp-application-crypto",496 "sp-application-crypto",695 "bp-runtime",695 "bp-runtime",696 "finality-grandpa",696 "finality-grandpa",697 "frame-support",697 "frame-support",698 "parity-scale-codec 3.1.2",698 "parity-scale-codec 3.1.5",699 "scale-info",699 "scale-info",700 "serde",700 "serde",701 "sp-core",701 "sp-core",711dependencies = [711dependencies = [712 "bp-runtime",712 "bp-runtime",713 "frame-support",713 "frame-support",714 "parity-scale-codec 3.1.2",714 "parity-scale-codec 3.1.5",715 "scale-info",715 "scale-info",716 "sp-std",716 "sp-std",717]717]726 "frame-support",726 "frame-support",727 "frame-system",727 "frame-system",728 "impl-trait-for-tuples",728 "impl-trait-for-tuples",729 "parity-scale-codec 3.1.2",729 "parity-scale-codec 3.1.5",730 "scale-info",730 "scale-info",731 "serde",731 "serde",732 "sp-core",732 "sp-core",742 "bp-runtime",742 "bp-runtime",743 "frame-support",743 "frame-support",744 "frame-system",744 "frame-system",745 "parity-scale-codec 3.1.2",745 "parity-scale-codec 3.1.5",746 "scale-info",746 "scale-info",747 "sp-api",747 "sp-api",748 "sp-core",748 "sp-core",760 "bp-polkadot-core",760 "bp-polkadot-core",761 "bp-runtime",761 "bp-runtime",762 "frame-support",762 "frame-support",763 "parity-scale-codec 3.1.2",763 "parity-scale-codec 3.1.5",764 "smallvec",764 "smallvec",765 "sp-api",765 "sp-api",766 "sp-runtime",766 "sp-runtime",776 "frame-support",776 "frame-support",777 "hash-db",777 "hash-db",778 "num-traits",778 "num-traits",779 "parity-scale-codec 3.1.2",779 "parity-scale-codec 3.1.5",780 "scale-info",780 "scale-info",781 "sp-core",781 "sp-core",782 "sp-io",782 "sp-io",794 "bp-header-chain",794 "bp-header-chain",795 "ed25519-dalek",795 "ed25519-dalek",796 "finality-grandpa",796 "finality-grandpa",797 "parity-scale-codec 3.1.2",797 "parity-scale-codec 3.1.5",798 "sp-application-crypto",798 "sp-application-crypto",799 "sp-finality-grandpa",799 "sp-finality-grandpa",800 "sp-runtime",800 "sp-runtime",810 "bp-polkadot-core",810 "bp-polkadot-core",811 "bp-rococo",811 "bp-rococo",812 "bp-runtime",812 "bp-runtime",813 "parity-scale-codec 3.1.2",813 "parity-scale-codec 3.1.5",814 "sp-api",814 "sp-api",815 "sp-runtime",815 "sp-runtime",816 "sp-std",816 "sp-std",831 "pallet-bridge-grandpa",831 "pallet-bridge-grandpa",832 "pallet-bridge-messages",832 "pallet-bridge-messages",833 "pallet-transaction-payment",833 "pallet-transaction-payment",834 "parity-scale-codec 3.1.2",834 "parity-scale-codec 3.1.5",835 "scale-info",835 "scale-info",836 "sp-api",836 "sp-api",837 "sp-core",837 "sp-core",106710671068[[package]]1068[[package]]1069name = "clap"1069name = "clap"1070version = "3.1.18"1070version = "3.2.5"1071source = "registry+https://github.com/rust-lang/crates.io-index"1071source = "registry+https://github.com/rust-lang/crates.io-index"1072checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"1072checksum = "d53da17d37dba964b9b3ecb5c5a1f193a2762c700e6829201e645b9381c99dc7"1073dependencies = [1073dependencies = [1074 "atty",1074 "atty",1075 "bitflags",1075 "bitflags",1076 "clap_derive",1076 "clap_derive",1077 "clap_lex",1077 "clap_lex",1078 "indexmap",1078 "indexmap",1079 "lazy_static",1079 "once_cell",1080 "strsim",1080 "strsim",1081 "termcolor",1081 "termcolor",1082 "textwrap",1082 "textwrap",1083]1083]108410841085[[package]]1085[[package]]1086name = "clap_derive"1086name = "clap_derive"1087version = "3.1.18"1087version = "3.2.5"1088source = "registry+https://github.com/rust-lang/crates.io-index"1088source = "registry+https://github.com/rust-lang/crates.io-index"1089checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c"1089checksum = "c11d40217d16aee8508cc8e5fde8b4ff24639758608e5374e731b53f85749fb9"1090dependencies = [1090dependencies = [1091 "heck 0.4.0",1091 "heck 0.4.0",1092 "proc-macro-error",1092 "proc-macro-error",109710971098[[package]]1098[[package]]1099name = "clap_lex"1099name = "clap_lex"1100version = "0.2.0"1100version = "0.2.2"1101source = "registry+https://github.com/rust-lang/crates.io-index"1101source = "registry+https://github.com/rust-lang/crates.io-index"1102checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"1102checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613"1103dependencies = [1103dependencies = [1104 "os_str_bytes",1104 "os_str_bytes",1105]1105]129712971298[[package]]1298[[package]]1299name = "crossbeam-channel"1299name = "crossbeam-channel"1300version = "0.5.4"1300version = "0.5.5"1301source = "registry+https://github.com/rust-lang/crates.io-index"1301source = "registry+https://github.com/rust-lang/crates.io-index"1302checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"1302checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"1303dependencies = [1303dependencies = [1304 "cfg-if 1.0.0",1304 "cfg-if 1.0.0",1305 "crossbeam-utils",1305 "crossbeam-utils",131813181319[[package]]1319[[package]]1320name = "crossbeam-epoch"1320name = "crossbeam-epoch"1321version = "0.9.8"1321version = "0.9.9"1322source = "registry+https://github.com/rust-lang/crates.io-index"1322source = "registry+https://github.com/rust-lang/crates.io-index"1323checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"1323checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"1324dependencies = [1324dependencies = [1325 "autocfg",1325 "autocfg",1326 "cfg-if 1.0.0",1326 "cfg-if 1.0.0",1327 "crossbeam-utils",1327 "crossbeam-utils",1328 "lazy_static",1329 "memoffset",1328 "memoffset",1329 "once_cell",1330 "scopeguard",1330 "scopeguard",1331]1331]13321332134213421343[[package]]1343[[package]]1344name = "crossbeam-utils"1344name = "crossbeam-utils"1345version = "0.8.8"1345version = "0.8.9"1346source = "registry+https://github.com/rust-lang/crates.io-index"1346source = "registry+https://github.com/rust-lang/crates.io-index"1347checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"1347checksum = "8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978"1348dependencies = [1348dependencies = [1349 "cfg-if 1.0.0",1349 "cfg-if 1.0.0",1350 "lazy_static",1350 "once_cell",1351]1351]135213521353[[package]]1353[[package]]1431[[package]]1431[[package]]1432name = "cumulus-client-cli"1432name = "cumulus-client-cli"1433version = "0.1.0"1433version = "0.1.0"1434source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1434source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1435dependencies = [1435dependencies = [1436 "clap",1436 "clap",1437 "sc-cli",1437 "sc-cli",1442[[package]]1442[[package]]1443name = "cumulus-client-collator"1443name = "cumulus-client-collator"1444version = "0.1.0"1444version = "0.1.0"1445source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1445source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1446dependencies = [1446dependencies = [1447 "cumulus-client-consensus-common",1447 "cumulus-client-consensus-common",1448 "cumulus-client-network",1448 "cumulus-client-network",1449 "cumulus-primitives-core",1449 "cumulus-primitives-core",1450 "cumulus-relay-chain-interface",1450 "cumulus-relay-chain-interface",1451 "futures 0.3.21",1451 "futures 0.3.21",1452 "parity-scale-codec 3.1.2",1452 "parity-scale-codec 3.1.5",1453 "parking_lot 0.12.1",1453 "parking_lot 0.12.1",1454 "polkadot-node-primitives",1454 "polkadot-node-primitives",1455 "polkadot-node-subsystem",1455 "polkadot-node-subsystem",1466[[package]]1466[[package]]1467name = "cumulus-client-consensus-aura"1467name = "cumulus-client-consensus-aura"1468version = "0.1.0"1468version = "0.1.0"1469source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1469source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1470dependencies = [1470dependencies = [1471 "async-trait",1471 "async-trait",1472 "cumulus-client-consensus-common",1472 "cumulus-client-consensus-common",1473 "cumulus-primitives-core",1473 "cumulus-primitives-core",1474 "futures 0.3.21",1474 "futures 0.3.21",1475 "parity-scale-codec 3.1.2",1475 "parity-scale-codec 3.1.5",1476 "sc-client-api",1476 "sc-client-api",1477 "sc-consensus",1477 "sc-consensus",1478 "sc-consensus-aura",1478 "sc-consensus-aura",1495[[package]]1495[[package]]1496name = "cumulus-client-consensus-common"1496name = "cumulus-client-consensus-common"1497version = "0.1.0"1497version = "0.1.0"1498source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1498source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1499dependencies = [1499dependencies = [1500 "async-trait",1500 "async-trait",1501 "cumulus-relay-chain-interface",1501 "cumulus-relay-chain-interface",1502 "dyn-clone",1502 "dyn-clone",1503 "futures 0.3.21",1503 "futures 0.3.21",1504 "parity-scale-codec 3.1.2",1504 "parity-scale-codec 3.1.5",1505 "polkadot-primitives",1505 "polkadot-primitives",1506 "sc-client-api",1506 "sc-client-api",1507 "sc-consensus",1507 "sc-consensus",1516[[package]]1516[[package]]1517name = "cumulus-client-network"1517name = "cumulus-client-network"1518version = "0.1.0"1518version = "0.1.0"1519source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1519source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1520dependencies = [1520dependencies = [1521 "async-trait",1521 "async-trait",1522 "cumulus-relay-chain-interface",1522 "cumulus-relay-chain-interface",1523 "derive_more",1523 "derive_more",1524 "futures 0.3.21",1524 "futures 0.3.21",1525 "futures-timer",1525 "futures-timer",1526 "parity-scale-codec 3.1.2",1526 "parity-scale-codec 3.1.5",1527 "parking_lot 0.12.1",1527 "parking_lot 0.12.1",1528 "polkadot-node-primitives",1528 "polkadot-node-primitives",1529 "polkadot-parachain",1529 "polkadot-parachain",1541[[package]]1541[[package]]1542name = "cumulus-client-pov-recovery"1542name = "cumulus-client-pov-recovery"1543version = "0.1.0"1543version = "0.1.0"1544source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1544source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1545dependencies = [1545dependencies = [1546 "cumulus-primitives-core",1546 "cumulus-primitives-core",1547 "cumulus-relay-chain-interface",1547 "cumulus-relay-chain-interface",1548 "futures 0.3.21",1548 "futures 0.3.21",1549 "futures-timer",1549 "futures-timer",1550 "parity-scale-codec 3.1.2",1550 "parity-scale-codec 3.1.5",1551 "polkadot-node-primitives",1551 "polkadot-node-primitives",1552 "polkadot-node-subsystem",1552 "polkadot-node-subsystem",1553 "polkadot-overseer",1553 "polkadot-overseer",1565[[package]]1565[[package]]1566name = "cumulus-client-service"1566name = "cumulus-client-service"1567version = "0.1.0"1567version = "0.1.0"1568source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1568source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1569dependencies = [1569dependencies = [1570 "cumulus-client-cli",1570 "cumulus-client-cli",1571 "cumulus-client-collator",1571 "cumulus-client-collator",1572 "cumulus-client-consensus-common",1572 "cumulus-client-consensus-common",1573 "cumulus-client-pov-recovery",1573 "cumulus-client-pov-recovery",1574 "cumulus-primitives-core",1574 "cumulus-primitives-core",1575 "cumulus-relay-chain-interface",1575 "cumulus-relay-chain-interface",1576 "parity-scale-codec 3.1.2",1576 "parity-scale-codec 3.1.5",1577 "parking_lot 0.12.1",1577 "parking_lot 0.12.1",1578 "polkadot-overseer",1578 "polkadot-overseer",1579 "polkadot-primitives",1579 "polkadot-primitives",1595[[package]]1595[[package]]1596name = "cumulus-pallet-aura-ext"1596name = "cumulus-pallet-aura-ext"1597version = "0.1.0"1597version = "0.1.0"1598source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1598source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1599dependencies = [1599dependencies = [1600 "frame-executive",1600 "frame-executive",1601 "frame-support",1601 "frame-support",1602 "frame-system",1602 "frame-system",1603 "pallet-aura",1603 "pallet-aura",1604 "parity-scale-codec 3.1.2",1604 "parity-scale-codec 3.1.5",1605 "scale-info",1605 "scale-info",1606 "serde",1606 "serde",1607 "sp-application-crypto",1607 "sp-application-crypto",1613[[package]]1613[[package]]1614name = "cumulus-pallet-dmp-queue"1614name = "cumulus-pallet-dmp-queue"1615version = "0.1.0"1615version = "0.1.0"1616source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1616source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1617dependencies = [1617dependencies = [1618 "cumulus-primitives-core",1618 "cumulus-primitives-core",1619 "frame-support",1619 "frame-support",1620 "frame-system",1620 "frame-system",1621 "log",1621 "log",1622 "parity-scale-codec 3.1.2",1622 "parity-scale-codec 3.1.5",1623 "scale-info",1623 "scale-info",1624 "sp-io",1624 "sp-io",1625 "sp-runtime",1625 "sp-runtime",1631[[package]]1631[[package]]1632name = "cumulus-pallet-parachain-system"1632name = "cumulus-pallet-parachain-system"1633version = "0.1.0"1633version = "0.1.0"1634source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1634source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1635dependencies = [1635dependencies = [1636 "cumulus-pallet-parachain-system-proc-macro",1636 "cumulus-pallet-parachain-system-proc-macro",1637 "cumulus-primitives-core",1637 "cumulus-primitives-core",1642 "impl-trait-for-tuples",1642 "impl-trait-for-tuples",1643 "log",1643 "log",1644 "pallet-balances",1644 "pallet-balances",1645 "parity-scale-codec 3.1.2",1645 "parity-scale-codec 3.1.5",1646 "polkadot-parachain",1646 "polkadot-parachain",1647 "scale-info",1647 "scale-info",1648 "serde",1648 "serde",1661[[package]]1661[[package]]1662name = "cumulus-pallet-parachain-system-proc-macro"1662name = "cumulus-pallet-parachain-system-proc-macro"1663version = "0.1.0"1663version = "0.1.0"1664source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1664source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1665dependencies = [1665dependencies = [1666 "proc-macro-crate",1666 "proc-macro-crate",1667 "proc-macro2",1667 "proc-macro2",1672[[package]]1672[[package]]1673name = "cumulus-pallet-xcm"1673name = "cumulus-pallet-xcm"1674version = "0.1.0"1674version = "0.1.0"1675source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1675source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1676dependencies = [1676dependencies = [1677 "cumulus-primitives-core",1677 "cumulus-primitives-core",1678 "frame-support",1678 "frame-support",1679 "frame-system",1679 "frame-system",1680 "parity-scale-codec 3.1.2",1680 "parity-scale-codec 3.1.5",1681 "scale-info",1681 "scale-info",1682 "serde",1682 "serde",1683 "sp-io",1683 "sp-io",1689[[package]]1689[[package]]1690name = "cumulus-pallet-xcmp-queue"1690name = "cumulus-pallet-xcmp-queue"1691version = "0.1.0"1691version = "0.1.0"1692source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1692source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1693dependencies = [1693dependencies = [1694 "cumulus-primitives-core",1694 "cumulus-primitives-core",1695 "frame-support",1695 "frame-support",1696 "frame-system",1696 "frame-system",1697 "log",1697 "log",1698 "parity-scale-codec 3.1.2",1698 "parity-scale-codec 3.1.5",1699 "rand_chacha 0.3.1",1699 "rand_chacha 0.3.1",1700 "scale-info",1700 "scale-info",1701 "sp-runtime",1701 "sp-runtime",1707[[package]]1707[[package]]1708name = "cumulus-primitives-core"1708name = "cumulus-primitives-core"1709version = "0.1.0"1709version = "0.1.0"1710source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1710source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1711dependencies = [1711dependencies = [1712 "frame-support",1712 "frame-support",1713 "parity-scale-codec 3.1.2",1713 "parity-scale-codec 3.1.5",1714 "polkadot-core-primitives",1714 "polkadot-core-primitives",1715 "polkadot-parachain",1715 "polkadot-parachain",1716 "polkadot-primitives",1716 "polkadot-primitives",1723[[package]]1723[[package]]1724name = "cumulus-primitives-parachain-inherent"1724name = "cumulus-primitives-parachain-inherent"1725version = "0.1.0"1725version = "0.1.0"1726source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1726source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1727dependencies = [1727dependencies = [1728 "async-trait",1728 "async-trait",1729 "cumulus-primitives-core",1729 "cumulus-primitives-core",1730 "cumulus-relay-chain-interface",1730 "cumulus-relay-chain-interface",1731 "cumulus-test-relay-sproof-builder",1731 "cumulus-test-relay-sproof-builder",1732 "parity-scale-codec 3.1.2",1732 "parity-scale-codec 3.1.5",1733 "sc-client-api",1733 "sc-client-api",1734 "scale-info",1734 "scale-info",1735 "sp-api",1735 "sp-api",1746[[package]]1746[[package]]1747name = "cumulus-primitives-timestamp"1747name = "cumulus-primitives-timestamp"1748version = "0.1.0"1748version = "0.1.0"1749source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1749source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1750dependencies = [1750dependencies = [1751 "cumulus-primitives-core",1751 "cumulus-primitives-core",1752 "futures 0.3.21",1752 "futures 0.3.21",1753 "parity-scale-codec 3.1.2",1753 "parity-scale-codec 3.1.5",1754 "sp-inherents",1754 "sp-inherents",1755 "sp-std",1755 "sp-std",1756 "sp-timestamp",1756 "sp-timestamp",1759[[package]]1759[[package]]1760name = "cumulus-primitives-utility"1760name = "cumulus-primitives-utility"1761version = "0.1.0"1761version = "0.1.0"1762source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1762source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1763dependencies = [1763dependencies = [1764 "cumulus-primitives-core",1764 "cumulus-primitives-core",1765 "frame-support",1765 "frame-support",1766 "parity-scale-codec 3.1.2",1766 "parity-scale-codec 3.1.5",1767 "polkadot-core-primitives",1767 "polkadot-core-primitives",1768 "polkadot-parachain",1768 "polkadot-parachain",1769 "polkadot-primitives",1769 "polkadot-primitives",1776[[package]]1776[[package]]1777name = "cumulus-relay-chain-inprocess-interface"1777name = "cumulus-relay-chain-inprocess-interface"1778version = "0.1.0"1778version = "0.1.0"1779source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1779source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1780dependencies = [1780dependencies = [1781 "async-trait",1781 "async-trait",1782 "cumulus-primitives-core",1782 "cumulus-primitives-core",1807[[package]]1807[[package]]1808name = "cumulus-relay-chain-interface"1808name = "cumulus-relay-chain-interface"1809version = "0.1.0"1809version = "0.1.0"1810source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1810source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1811dependencies = [1811dependencies = [1812 "async-trait",1812 "async-trait",1813 "cumulus-primitives-core",1813 "cumulus-primitives-core",1814 "derive_more",1814 "derive_more",1815 "futures 0.3.21",1815 "futures 0.3.21",1816 "jsonrpsee-core",1816 "jsonrpsee-core",1817 "parity-scale-codec 3.1.2",1817 "parity-scale-codec 3.1.5",1818 "parking_lot 0.12.1",1818 "parking_lot 0.12.1",1819 "polkadot-overseer",1819 "polkadot-overseer",1820 "polkadot-service",1820 "polkadot-service",1831[[package]]1831[[package]]1832name = "cumulus-relay-chain-rpc-interface"1832name = "cumulus-relay-chain-rpc-interface"1833version = "0.1.0"1833version = "0.1.0"1834source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1834source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1835dependencies = [1835dependencies = [1836 "async-trait",1836 "async-trait",1837 "backoff",1837 "backoff",1840 "futures 0.3.21",1840 "futures 0.3.21",1841 "futures-timer",1841 "futures-timer",1842 "jsonrpsee",1842 "jsonrpsee",1843 "parity-scale-codec 3.1.2",1843 "parity-scale-codec 3.1.5",1844 "parking_lot 0.12.1",1844 "parking_lot 0.12.1",1845 "polkadot-service",1845 "polkadot-service",1846 "sc-client-api",1846 "sc-client-api",1857[[package]]1857[[package]]1858name = "cumulus-test-relay-sproof-builder"1858name = "cumulus-test-relay-sproof-builder"1859version = "0.1.0"1859version = "0.1.0"1860source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1860source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"1861dependencies = [1861dependencies = [1862 "cumulus-primitives-core",1862 "cumulus-primitives-core",1863 "parity-scale-codec 3.1.2",1863 "parity-scale-codec 3.1.5",1864 "polkadot-primitives",1864 "polkadot-primitives",1865 "sp-runtime",1865 "sp-runtime",1866 "sp-state-machine",1866 "sp-state-machine",211521152116[[package]]2116[[package]]2117name = "dyn-clone"2117name = "dyn-clone"2118version = "1.0.5"2118version = "1.0.6"2119source = "registry+https://github.com/rust-lang/crates.io-index"2119source = "registry+https://github.com/rust-lang/crates.io-index"2120checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28"2120checksum = "140206b78fb2bc3edbcfc9b5ccbd0b30699cfe8d348b8b31b330e47df5291a5a"212121212122[[package]]2122[[package]]2123name = "ecdsa"2123name = "ecdsa"2286 "ethereum-types",2286 "ethereum-types",2287 "hash-db",2287 "hash-db",2288 "hash256-std-hasher",2288 "hash256-std-hasher",2289 "parity-scale-codec 3.1.2",2289 "parity-scale-codec 3.1.5",2290 "rlp",2290 "rlp",2291 "rlp-derive",2291 "rlp-derive",2292 "scale-info",2292 "scale-info",2329 "evm-gasometer",2329 "evm-gasometer",2330 "evm-runtime",2330 "evm-runtime",2331 "log",2331 "log",2332 "parity-scale-codec 3.1.2",2332 "parity-scale-codec 3.1.5",2333 "primitive-types",2333 "primitive-types",2334 "rlp",2334 "rlp",2335 "scale-info",2335 "scale-info",2368version = "0.35.0"2368version = "0.35.0"2369source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.23#e9252ed42dc26fc85b6703b1ba50660a08209e55"2369source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.23#e9252ed42dc26fc85b6703b1ba50660a08209e55"2370dependencies = [2370dependencies = [2371 "parity-scale-codec 3.1.2",2371 "parity-scale-codec 3.1.5",2372 "primitive-types",2372 "primitive-types",2373 "scale-info",2373 "scale-info",2374 "serde",2374 "serde",2504 "fp-storage",2504 "fp-storage",2505 "kvdb-rocksdb",2505 "kvdb-rocksdb",2506 "parity-db",2506 "parity-db",2507 "parity-scale-codec 3.1.2",2507 "parity-scale-codec 3.1.5",2508 "parking_lot 0.12.1",2508 "parking_lot 0.12.1",2509 "sc-client-db",2509 "sc-client-db",2510 "sp-core",2510 "sp-core",2546 "jsonrpsee",2546 "jsonrpsee",2547 "libsecp256k1",2547 "libsecp256k1",2548 "log",2548 "log",2549 "lru 0.7.6",2549 "lru 0.7.7",2550 "parity-scale-codec 3.1.2",2550 "parity-scale-codec 3.1.5",2551 "prometheus",2551 "prometheus",2552 "rand 0.8.5",2552 "rand 0.8.5",2553 "rlp",2553 "rlp",2623 "futures-timer",2623 "futures-timer",2624 "log",2624 "log",2625 "num-traits",2625 "num-traits",2626 "parity-scale-codec 3.1.2",2626 "parity-scale-codec 3.1.5",2627 "parking_lot 0.11.2",2627 "parking_lot 0.11.2",2628 "scale-info",2628 "scale-info",2629]2629]2682[[package]]2682[[package]]2683name = "fork-tree"2683name = "fork-tree"2684version = "3.0.0"2684version = "3.0.0"2685source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2685source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2686dependencies = [2686dependencies = [2687 "parity-scale-codec 3.1.2",2687 "parity-scale-codec 3.1.5",2688]2688]268926892690[[package]]2690[[package]]2703source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"2703source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"2704dependencies = [2704dependencies = [2705 "ethereum",2705 "ethereum",2706 "parity-scale-codec 3.1.2",2706 "parity-scale-codec 3.1.5",2707 "sp-core",2707 "sp-core",2708 "sp-runtime",2708 "sp-runtime",2709 "sp-std",2709 "sp-std",2717 "evm",2717 "evm",2718 "frame-support",2718 "frame-support",2719 "impl-trait-for-tuples",2719 "impl-trait-for-tuples",2720 "parity-scale-codec 3.1.2",2720 "parity-scale-codec 3.1.5",2721 "serde",2721 "serde",2722 "sp-core",2722 "sp-core",2723 "sp-std",2723 "sp-std",2740 "ethereum",2740 "ethereum",2741 "ethereum-types",2741 "ethereum-types",2742 "fp-evm",2742 "fp-evm",2743 "parity-scale-codec 3.1.2",2743 "parity-scale-codec 3.1.5",2744 "scale-info",2744 "scale-info",2745 "sp-api",2745 "sp-api",2746 "sp-core",2746 "sp-core",2756dependencies = [2756dependencies = [2757 "ethereum",2757 "ethereum",2758 "frame-support",2758 "frame-support",2759 "parity-scale-codec 3.1.2",2759 "parity-scale-codec 3.1.5",2760 "parity-util-mem",2760 "parity-util-mem",2761 "scale-info",2761 "scale-info",2762 "serde",2762 "serde",2770version = "2.0.0"2770version = "2.0.0"2771source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"2771source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"2772dependencies = [2772dependencies = [2773 "parity-scale-codec 3.1.2",2773 "parity-scale-codec 3.1.5",2774]2774]277527752776[[package]]2776[[package]]2777name = "frame-benchmarking"2777name = "frame-benchmarking"2778version = "4.0.0-dev"2778version = "4.0.0-dev"2779source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2779source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2780dependencies = [2780dependencies = [2781 "frame-support",2781 "frame-support",2782 "frame-system",2782 "frame-system",2783 "linregress",2783 "linregress",2784 "log",2784 "log",2785 "parity-scale-codec 3.1.2",2785 "parity-scale-codec 3.1.5",2786 "paste",2786 "paste",2787 "scale-info",2787 "scale-info",2788 "serde",2788 "serde",2798[[package]]2798[[package]]2799name = "frame-benchmarking-cli"2799name = "frame-benchmarking-cli"2800version = "4.0.0-dev"2800version = "4.0.0-dev"2801source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2801source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2802dependencies = [2802dependencies = [2803 "Inflector",2803 "Inflector",2804 "chrono",2804 "chrono",2816 "linked-hash-map",2816 "linked-hash-map",2817 "log",2817 "log",2818 "memory-db",2818 "memory-db",2819 "parity-scale-codec 3.1.2",2819 "parity-scale-codec 3.1.5",2820 "rand 0.8.5",2820 "rand 0.8.5",2821 "rand_pcg 0.3.1",2821 "rand_pcg 0.3.1",2822 "sc-block-builder",2822 "sc-block-builder",2848[[package]]2848[[package]]2849name = "frame-election-provider-solution-type"2849name = "frame-election-provider-solution-type"2850version = "4.0.0-dev"2850version = "4.0.0-dev"2851source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2851source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2852dependencies = [2852dependencies = [2853 "proc-macro-crate",2853 "proc-macro-crate",2854 "proc-macro2",2854 "proc-macro2",2859[[package]]2859[[package]]2860name = "frame-election-provider-support"2860name = "frame-election-provider-support"2861version = "4.0.0-dev"2861version = "4.0.0-dev"2862source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2862source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2863dependencies = [2863dependencies = [2864 "frame-election-provider-solution-type",2864 "frame-election-provider-solution-type",2865 "frame-support",2865 "frame-support",2866 "frame-system",2866 "frame-system",2867 "parity-scale-codec 3.1.2",2867 "parity-scale-codec 3.1.5",2868 "scale-info",2868 "scale-info",2869 "sp-arithmetic",2869 "sp-arithmetic",2870 "sp-npos-elections",2870 "sp-npos-elections",2875[[package]]2875[[package]]2876name = "frame-executive"2876name = "frame-executive"2877version = "4.0.0-dev"2877version = "4.0.0-dev"2878source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2878source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2879dependencies = [2879dependencies = [2880 "frame-support",2880 "frame-support",2881 "frame-system",2881 "frame-system",2882 "parity-scale-codec 3.1.2",2882 "parity-scale-codec 3.1.5",2883 "scale-info",2883 "scale-info",2884 "sp-core",2884 "sp-core",2885 "sp-io",2885 "sp-io",2895checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"2895checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"2896dependencies = [2896dependencies = [2897 "cfg-if 1.0.0",2897 "cfg-if 1.0.0",2898 "parity-scale-codec 3.1.2",2898 "parity-scale-codec 3.1.5",2899 "scale-info",2899 "scale-info",2900 "serde",2900 "serde",2901]2901]290229022903[[package]]2903[[package]]2904name = "frame-support"2904name = "frame-support"2905version = "4.0.0-dev"2905version = "4.0.0-dev"2906source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2906source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2907dependencies = [2907dependencies = [2908 "bitflags",2908 "bitflags",2909 "frame-metadata",2909 "frame-metadata",2912 "k256",2912 "k256",2913 "log",2913 "log",2914 "once_cell",2914 "once_cell",2915 "parity-scale-codec 3.1.2",2915 "parity-scale-codec 3.1.5",2916 "paste",2916 "paste",2917 "scale-info",2917 "scale-info",2918 "serde",2918 "serde",2933[[package]]2933[[package]]2934name = "frame-support-procedural"2934name = "frame-support-procedural"2935version = "4.0.0-dev"2935version = "4.0.0-dev"2936source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2936source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2937dependencies = [2937dependencies = [2938 "Inflector",2938 "Inflector",2939 "frame-support-procedural-tools",2939 "frame-support-procedural-tools",2945[[package]]2945[[package]]2946name = "frame-support-procedural-tools"2946name = "frame-support-procedural-tools"2947version = "4.0.0-dev"2947version = "4.0.0-dev"2948source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2948source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2949dependencies = [2949dependencies = [2950 "frame-support-procedural-tools-derive",2950 "frame-support-procedural-tools-derive",2951 "proc-macro-crate",2951 "proc-macro-crate",2957[[package]]2957[[package]]2958name = "frame-support-procedural-tools-derive"2958name = "frame-support-procedural-tools-derive"2959version = "3.0.0"2959version = "3.0.0"2960source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2960source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2961dependencies = [2961dependencies = [2962 "proc-macro2",2962 "proc-macro2",2963 "quote",2963 "quote",2967[[package]]2967[[package]]2968name = "frame-system"2968name = "frame-system"2969version = "4.0.0-dev"2969version = "4.0.0-dev"2970source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2970source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2971dependencies = [2971dependencies = [2972 "frame-support",2972 "frame-support",2973 "log",2973 "log",2974 "parity-scale-codec 3.1.2",2974 "parity-scale-codec 3.1.5",2975 "scale-info",2975 "scale-info",2976 "serde",2976 "serde",2977 "sp-core",2977 "sp-core",2984[[package]]2984[[package]]2985name = "frame-system-benchmarking"2985name = "frame-system-benchmarking"2986version = "4.0.0-dev"2986version = "4.0.0-dev"2987source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2987source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"2988dependencies = [2988dependencies = [2989 "frame-benchmarking",2989 "frame-benchmarking",2990 "frame-support",2990 "frame-support",2991 "frame-system",2991 "frame-system",2992 "parity-scale-codec 3.1.2",2992 "parity-scale-codec 3.1.5",2993 "scale-info",2993 "scale-info",2994 "sp-core",2994 "sp-core",2995 "sp-runtime",2995 "sp-runtime",2999[[package]]2999[[package]]3000name = "frame-system-rpc-runtime-api"3000name = "frame-system-rpc-runtime-api"3001version = "4.0.0-dev"3001version = "4.0.0-dev"3002source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"3002source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"3003dependencies = [3003dependencies = [3004 "parity-scale-codec 3.1.2",3004 "parity-scale-codec 3.1.5",3005 "sp-api",3005 "sp-api",3006]3006]300730073008[[package]]3008[[package]]3009name = "frame-try-runtime"3009name = "frame-try-runtime"3010version = "0.10.0-dev"3010version = "0.10.0-dev"3011source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"3011source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"3012dependencies = [3012dependencies = [3013 "frame-support",3013 "frame-support",3014 "sp-api",3014 "sp-api",322532253226[[package]]3226[[package]]3227name = "getrandom"3227name = "getrandom"3228version = "0.2.6"3228version = "0.2.7"3229source = "registry+https://github.com/rust-lang/crates.io-index"3229source = "registry+https://github.com/rust-lang/crates.io-index"3230checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"3230checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"3231dependencies = [3231dependencies = [3232 "cfg-if 1.0.0",3232 "cfg-if 1.0.0",3233 "libc",3233 "libc",3234 "wasi 0.10.0+wasi-snapshot-preview1",3234 "wasi 0.11.0+wasi-snapshot-preview1",3235]3235]323632363237[[package]]3237[[package]]326332633264[[package]]3264[[package]]3265name = "globset"3265name = "globset"3266version = "0.4.8"3266version = "0.4.9"3267source = "registry+https://github.com/rust-lang/crates.io-index"3267source = "registry+https://github.com/rust-lang/crates.io-index"3268checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd"3268checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"3269dependencies = [3269dependencies = [3270 "aho-corasick",3270 "aho-corasick",3271 "bstr",3271 "bstr",355535553556[[package]]3556[[package]]3557name = "if-watch"3557name = "if-watch"3558version = "1.0.0"3558version = "1.1.0"3559source = "registry+https://github.com/rust-lang/crates.io-index"3559source = "registry+https://github.com/rust-lang/crates.io-index"3560checksum = "ae8f4a3c3d4c89351ca83e120c1c00b27df945d38e05695668c9d4b4f7bc52f3"3560checksum = "774d59367a3d26965d21ac70a86fcb697d83405d1c4312d1d8a6855296af0cf7"3561dependencies = [3561dependencies = [3562 "async-io",3562 "async-io",3563 "core-foundation",3563 "core-foundation",3577source = "registry+https://github.com/rust-lang/crates.io-index"3577source = "registry+https://github.com/rust-lang/crates.io-index"3578checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"3578checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"3579dependencies = [3579dependencies = [3580 "parity-scale-codec 3.1.2",3580 "parity-scale-codec 3.1.5",3581]3581]358235823583[[package]]3583[[package]]361136113612[[package]]3612[[package]]3613name = "indexmap"3613name = "indexmap"3614version = "1.8.2"3614version = "1.9.0"3615source = "registry+https://github.com/rust-lang/crates.io-index"3615source = "registry+https://github.com/rust-lang/crates.io-index"3616checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"3616checksum = "6c6392766afd7964e2531940894cffe4bd8d7d17dbc3c1c4857040fd4b33bdb3"3617dependencies = [3617dependencies = [3618 "autocfg",3618 "autocfg",3619 "hashbrown 0.11.2",3619 "hashbrown 0.12.1",3620 "serde",3620 "serde",3621]3621]36223622370637063707[[package]]3707[[package]]3708name = "js-sys"3708name = "js-sys"3709version = "0.3.57"3709version = "0.3.58"3710source = "registry+https://github.com/rust-lang/crates.io-index"3710source = "registry+https://github.com/rust-lang/crates.io-index"3711checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"3711checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"3712dependencies = [3712dependencies = [3713 "wasm-bindgen",3713 "wasm-bindgen",3714]3714]3927 "pallet-vesting",3927 "pallet-vesting",3928 "pallet-xcm",3928 "pallet-xcm",3929 "pallet-xcm-benchmarks",3929 "pallet-xcm-benchmarks",3930 "parity-scale-codec 3.1.2",3930 "parity-scale-codec 3.1.5",3931 "polkadot-primitives",3931 "polkadot-primitives",3932 "polkadot-runtime-common",3932 "polkadot-runtime-common",3933 "polkadot-runtime-parachains",3933 "polkadot-runtime-parachains",4074 "bytes 1.1.0",4074 "bytes 1.1.0",4075 "futures 0.3.21",4075 "futures 0.3.21",4076 "futures-timer",4076 "futures-timer",4077 "getrandom 0.2.6",4077 "getrandom 0.2.7",4078 "instant",4078 "instant",4079 "lazy_static",4079 "lazy_static",4080 "libp2p-autonat",4080 "libp2p-autonat",4245 "libp2p-core",4245 "libp2p-core",4246 "libp2p-swarm",4246 "libp2p-swarm",4247 "log",4247 "log",4248 "lru 0.7.6",4248 "lru 0.7.7",4249 "prost 0.9.0",4249 "prost 0.9.0",4250 "prost-build",4250 "prost-build",4251 "smallvec",4251 "smallvec",471047104711[[package]]4711[[package]]4712name = "lru"4712name = "lru"4713version = "0.7.6"4713version = "0.7.7"4714source = "registry+https://github.com/rust-lang/crates.io-index"4714source = "registry+https://github.com/rust-lang/crates.io-index"4715checksum = "8015d95cb7b2ddd3c0d32ca38283ceb1eea09b4713ee380bceb942d85a244228"4715checksum = "c84e6fe5655adc6ce00787cf7dcaf8dc4f998a0565d23eafc207a8b08ca3349a"4716dependencies = [4716dependencies = [4717 "hashbrown 0.11.2",4717 "hashbrown 0.11.2",4718]4718]489948994900[[package]]4900[[package]]4901name = "mio"4901name = "mio"4902version = "0.8.3"4902version = "0.8.4"4903source = "registry+https://github.com/rust-lang/crates.io-index"4903source = "registry+https://github.com/rust-lang/crates.io-index"4904checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799"4904checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"4905dependencies = [4905dependencies = [4906 "libc",4906 "libc",4907 "log",4907 "log",515251525153[[package]]5153[[package]]5154name = "num-complex"5154name = "num-complex"5155version = "0.4.1"5155version = "0.4.2"5156source = "registry+https://github.com/rust-lang/crates.io-index"5156source = "registry+https://github.com/rust-lang/crates.io-index"5157checksum = "97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790"5157checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19"5158dependencies = [5158dependencies = [5159 "num-traits",5159 "num-traits",5160]5160]525052505251[[package]]5251[[package]]5252name = "opal-runtime"5252name = "opal-runtime"5253version = "0.9.22"5253version = "0.9.23"5254dependencies = [5254dependencies = [5255 "cumulus-pallet-aura-ext",5255 "cumulus-pallet-aura-ext",5256 "cumulus-pallet-dmp-queue",5256 "cumulus-pallet-dmp-queue",5299 "pallet-transaction-payment-rpc-runtime-api",5299 "pallet-transaction-payment-rpc-runtime-api",5300 "pallet-treasury",5300 "pallet-treasury",5301 "pallet-unique",5301 "pallet-unique",5302 "pallet-unq-scheduler",5302 "pallet-unique-scheduler",5303 "pallet-xcm",5303 "pallet-xcm",5304 "parachain-info",5304 "parachain-info",5305 "parity-scale-codec 3.1.2",5305 "parity-scale-codec 3.1.5",5306 "polkadot-parachain",5306 "polkadot-parachain",5307 "rmrk-rpc",5307 "rmrk-rpc",5308 "scale-info",5308 "scale-info",5393dependencies = [5393dependencies = [5394 "frame-support",5394 "frame-support",5395 "frame-system",5395 "frame-system",5396 "parity-scale-codec 3.1.2",5396 "parity-scale-codec 3.1.5",5397 "scale-info",5397 "scale-info",5398 "serde",5398 "serde",5399 "sp-io",5399 "sp-io",5419[[package]]5419[[package]]5420name = "pallet-aura"5420name = "pallet-aura"5421version = "4.0.0-dev"5421version = "4.0.0-dev"5422source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5422source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5423dependencies = [5423dependencies = [5424 "frame-support",5424 "frame-support",5425 "frame-system",5425 "frame-system",5426 "pallet-timestamp",5426 "pallet-timestamp",5427 "parity-scale-codec 3.1.2",5427 "parity-scale-codec 3.1.5",5428 "scale-info",5428 "scale-info",5429 "sp-application-crypto",5429 "sp-application-crypto",5430 "sp-consensus-aura",5430 "sp-consensus-aura",5435[[package]]5435[[package]]5436name = "pallet-authority-discovery"5436name = "pallet-authority-discovery"5437version = "4.0.0-dev"5437version = "4.0.0-dev"5438source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5438source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5439dependencies = [5439dependencies = [5440 "frame-support",5440 "frame-support",5441 "frame-system",5441 "frame-system",5442 "pallet-session",5442 "pallet-session",5443 "parity-scale-codec 3.1.2",5443 "parity-scale-codec 3.1.5",5444 "scale-info",5444 "scale-info",5445 "sp-application-crypto",5445 "sp-application-crypto",5446 "sp-authority-discovery",5446 "sp-authority-discovery",5451[[package]]5451[[package]]5452name = "pallet-authorship"5452name = "pallet-authorship"5453version = "4.0.0-dev"5453version = "4.0.0-dev"5454source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5454source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5455dependencies = [5455dependencies = [5456 "frame-support",5456 "frame-support",5457 "frame-system",5457 "frame-system",5458 "impl-trait-for-tuples",5458 "impl-trait-for-tuples",5459 "parity-scale-codec 3.1.2",5459 "parity-scale-codec 3.1.5",5460 "scale-info",5460 "scale-info",5461 "sp-authorship",5461 "sp-authorship",5462 "sp-runtime",5462 "sp-runtime",5466[[package]]5466[[package]]5467name = "pallet-babe"5467name = "pallet-babe"5468version = "4.0.0-dev"5468version = "4.0.0-dev"5469source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5469source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5470dependencies = [5470dependencies = [5471 "frame-benchmarking",5471 "frame-benchmarking",5472 "frame-support",5472 "frame-support",5475 "pallet-authorship",5475 "pallet-authorship",5476 "pallet-session",5476 "pallet-session",5477 "pallet-timestamp",5477 "pallet-timestamp",5478 "parity-scale-codec 3.1.2",5478 "parity-scale-codec 3.1.5",5479 "scale-info",5479 "scale-info",5480 "sp-application-crypto",5480 "sp-application-crypto",5481 "sp-consensus-babe",5481 "sp-consensus-babe",5490[[package]]5490[[package]]5491name = "pallet-bags-list"5491name = "pallet-bags-list"5492version = "4.0.0-dev"5492version = "4.0.0-dev"5493source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5493source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5494dependencies = [5494dependencies = [5495 "frame-benchmarking",5495 "frame-benchmarking",5496 "frame-election-provider-support",5496 "frame-election-provider-support",5497 "frame-support",5497 "frame-support",5498 "frame-system",5498 "frame-system",5499 "log",5499 "log",5500 "pallet-balances",5500 "pallet-balances",5501 "parity-scale-codec 3.1.2",5501 "parity-scale-codec 3.1.5",5502 "scale-info",5502 "scale-info",5503 "sp-core",5503 "sp-core",5504 "sp-io",5504 "sp-io",5510[[package]]5510[[package]]5511name = "pallet-balances"5511name = "pallet-balances"5512version = "4.0.0-dev"5512version = "4.0.0-dev"5513source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5513source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5514dependencies = [5514dependencies = [5515 "frame-benchmarking",5515 "frame-benchmarking",5516 "frame-support",5516 "frame-support",5517 "frame-system",5517 "frame-system",5518 "log",5518 "log",5519 "parity-scale-codec 3.1.2",5519 "parity-scale-codec 3.1.5",5520 "scale-info",5520 "scale-info",5521 "sp-runtime",5521 "sp-runtime",5522 "sp-std",5522 "sp-std",5530 "fp-evm",5530 "fp-evm",5531 "frame-support",5531 "frame-support",5532 "frame-system",5532 "frame-system",5533 "parity-scale-codec 3.1.2",5533 "parity-scale-codec 3.1.5",5534 "scale-info",5534 "scale-info",5535 "serde",5535 "serde",5536 "sp-core",5536 "sp-core",5540[[package]]5540[[package]]5541name = "pallet-beefy"5541name = "pallet-beefy"5542version = "4.0.0-dev"5542version = "4.0.0-dev"5543source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5543source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5544dependencies = [5544dependencies = [5545 "beefy-primitives",5545 "beefy-primitives",5546 "frame-support",5546 "frame-support",5547 "frame-system",5547 "frame-system",5548 "pallet-session",5548 "pallet-session",5549 "parity-scale-codec 3.1.2",5549 "parity-scale-codec 3.1.5",5550 "scale-info",5550 "scale-info",5551 "serde",5551 "serde",5552 "sp-runtime",5552 "sp-runtime",5556[[package]]5556[[package]]5557name = "pallet-beefy-mmr"5557name = "pallet-beefy-mmr"5558version = "4.0.0-dev"5558version = "4.0.0-dev"5559source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5559source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5560dependencies = [5560dependencies = [5561 "beefy-merkle-tree",5561 "beefy-merkle-tree",5562 "beefy-primitives",5562 "beefy-primitives",5567 "pallet-beefy",5567 "pallet-beefy",5568 "pallet-mmr",5568 "pallet-mmr",5569 "pallet-session",5569 "pallet-session",5570 "parity-scale-codec 3.1.2",5570 "parity-scale-codec 3.1.5",5571 "scale-info",5571 "scale-info",5572 "serde",5572 "serde",5573 "sp-core",5573 "sp-core",5579[[package]]5579[[package]]5580name = "pallet-bounties"5580name = "pallet-bounties"5581version = "4.0.0-dev"5581version = "4.0.0-dev"5582source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5582source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5583dependencies = [5583dependencies = [5584 "frame-benchmarking",5584 "frame-benchmarking",5585 "frame-support",5585 "frame-support",5586 "frame-system",5586 "frame-system",5587 "log",5587 "log",5588 "pallet-treasury",5588 "pallet-treasury",5589 "parity-scale-codec 3.1.2",5589 "parity-scale-codec 3.1.5",5590 "scale-info",5590 "scale-info",5591 "sp-core",5591 "sp-core",5592 "sp-io",5592 "sp-io",5604 "frame-support",5604 "frame-support",5605 "frame-system",5605 "frame-system",5606 "log",5606 "log",5607 "parity-scale-codec 3.1.2",5607 "parity-scale-codec 3.1.5",5608 "scale-info",5608 "scale-info",5609 "sp-core",5609 "sp-core",5610 "sp-runtime",5610 "sp-runtime",5624 "frame-system",5624 "frame-system",5625 "log",5625 "log",5626 "num-traits",5626 "num-traits",5627 "parity-scale-codec 3.1.2",5627 "parity-scale-codec 3.1.5",5628 "scale-info",5628 "scale-info",5629 "serde",5629 "serde",5630 "sp-finality-grandpa",5630 "sp-finality-grandpa",5646 "frame-system",5646 "frame-system",5647 "log",5647 "log",5648 "num-traits",5648 "num-traits",5649 "parity-scale-codec 3.1.2",5649 "parity-scale-codec 3.1.5",5650 "scale-info",5650 "scale-info",5651 "serde",5651 "serde",5652 "sp-core",5652 "sp-core",5657[[package]]5657[[package]]5658name = "pallet-child-bounties"5658name = "pallet-child-bounties"5659version = "4.0.0-dev"5659version = "4.0.0-dev"5660source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5660source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5661dependencies = [5661dependencies = [5662 "frame-benchmarking",5662 "frame-benchmarking",5663 "frame-support",5663 "frame-support",5664 "frame-system",5664 "frame-system",5665 "log",5665 "log",5666 "pallet-bounties",5666 "pallet-bounties",5667 "pallet-treasury",5667 "pallet-treasury",5668 "parity-scale-codec 3.1.2",5668 "parity-scale-codec 3.1.5",5669 "scale-info",5669 "scale-info",5670 "sp-core",5670 "sp-core",5671 "sp-io",5671 "sp-io",5676[[package]]5676[[package]]5677name = "pallet-collective"5677name = "pallet-collective"5678version = "4.0.0-dev"5678version = "4.0.0-dev"5679source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5679source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5680dependencies = [5680dependencies = [5681 "frame-benchmarking",5681 "frame-benchmarking",5682 "frame-support",5682 "frame-support",5683 "frame-system",5683 "frame-system",5684 "log",5684 "log",5685 "parity-scale-codec 3.1.2",5685 "parity-scale-codec 3.1.5",5686 "scale-info",5686 "scale-info",5687 "sp-core",5687 "sp-core",5688 "sp-io",5688 "sp-io",5702 "frame-system",5702 "frame-system",5703 "pallet-evm",5703 "pallet-evm",5704 "pallet-evm-coder-substrate",5704 "pallet-evm-coder-substrate",5705 "parity-scale-codec 3.1.2",5705 "parity-scale-codec 3.1.5",5706 "scale-info",5706 "scale-info",5707 "serde",5707 "serde",5708 "sp-core",5708 "sp-core",5714[[package]]5714[[package]]5715name = "pallet-democracy"5715name = "pallet-democracy"5716version = "4.0.0-dev"5716version = "4.0.0-dev"5717source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5717source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5718dependencies = [5718dependencies = [5719 "frame-benchmarking",5719 "frame-benchmarking",5720 "frame-support",5720 "frame-support",5721 "frame-system",5721 "frame-system",5722 "parity-scale-codec 3.1.2",5722 "parity-scale-codec 3.1.5",5723 "scale-info",5723 "scale-info",5724 "serde",5724 "serde",5725 "sp-io",5725 "sp-io",5730[[package]]5730[[package]]5731name = "pallet-election-provider-multi-phase"5731name = "pallet-election-provider-multi-phase"5732version = "4.0.0-dev"5732version = "4.0.0-dev"5733source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5733source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5734dependencies = [5734dependencies = [5735 "frame-benchmarking",5735 "frame-benchmarking",5736 "frame-election-provider-support",5736 "frame-election-provider-support",5737 "frame-support",5737 "frame-support",5738 "frame-system",5738 "frame-system",5739 "log",5739 "log",5740 "parity-scale-codec 3.1.2",5740 "parity-scale-codec 3.1.5",5741 "rand 0.7.3",5741 "rand 0.7.3",5742 "scale-info",5742 "scale-info",5743 "sp-arithmetic",5743 "sp-arithmetic",5753[[package]]5753[[package]]5754name = "pallet-election-provider-support-benchmarking"5754name = "pallet-election-provider-support-benchmarking"5755version = "4.0.0-dev"5755version = "4.0.0-dev"5756source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5756source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5757dependencies = [5757dependencies = [5758 "frame-benchmarking",5758 "frame-benchmarking",5759 "frame-election-provider-support",5759 "frame-election-provider-support",5760 "frame-system",5760 "frame-system",5761 "parity-scale-codec 3.1.2",5761 "parity-scale-codec 3.1.5",5762 "sp-npos-elections",5762 "sp-npos-elections",5763 "sp-runtime",5763 "sp-runtime",5764]5764]576557655766[[package]]5766[[package]]5767name = "pallet-elections-phragmen"5767name = "pallet-elections-phragmen"5768version = "5.0.0-dev"5768version = "5.0.0-dev"5769source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5769source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5770dependencies = [5770dependencies = [5771 "frame-benchmarking",5771 "frame-benchmarking",5772 "frame-support",5772 "frame-support",5773 "frame-system",5773 "frame-system",5774 "log",5774 "log",5775 "parity-scale-codec 3.1.2",5775 "parity-scale-codec 3.1.5",5776 "scale-info",5776 "scale-info",5777 "sp-core",5777 "sp-core",5778 "sp-io",5778 "sp-io",5800 "log",5800 "log",5801 "pallet-evm",5801 "pallet-evm",5802 "pallet-timestamp",5802 "pallet-timestamp",5803 "parity-scale-codec 3.1.2",5803 "parity-scale-codec 3.1.5",5804 "rlp",5804 "rlp",5805 "scale-info",5805 "scale-info",5806 "serde",5806 "serde",5825 "impl-trait-for-tuples",5825 "impl-trait-for-tuples",5826 "log",5826 "log",5827 "pallet-timestamp",5827 "pallet-timestamp",5828 "parity-scale-codec 3.1.2",5828 "parity-scale-codec 3.1.5",5829 "primitive-types",5829 "primitive-types",5830 "rlp",5830 "rlp",5831 "scale-info",5831 "scale-info",5848 "frame-system",5848 "frame-system",5849 "pallet-ethereum",5849 "pallet-ethereum",5850 "pallet-evm",5850 "pallet-evm",5851 "parity-scale-codec 3.1.2",5851 "parity-scale-codec 3.1.5",5852 "scale-info",5852 "scale-info",5853 "sp-core",5853 "sp-core",5854 "sp-std",5854 "sp-std",5867 "pallet-common",5867 "pallet-common",5868 "pallet-evm",5868 "pallet-evm",5869 "pallet-evm-coder-substrate",5869 "pallet-evm-coder-substrate",5870 "parity-scale-codec 3.1.2",5870 "parity-scale-codec 3.1.5",5871 "scale-info",5871 "scale-info",5872 "sp-core",5872 "sp-core",5873 "sp-runtime",5873 "sp-runtime",5885 "frame-support",5885 "frame-support",5886 "frame-system",5886 "frame-system",5887 "pallet-evm",5887 "pallet-evm",5888 "parity-scale-codec 3.1.2",5888 "parity-scale-codec 3.1.5",5889 "scale-info",5889 "scale-info",5890 "sp-core",5890 "sp-core",5891 "sp-io",5891 "sp-io",5903 "frame-system",5903 "frame-system",5904 "pallet-ethereum",5904 "pallet-ethereum",5905 "pallet-evm",5905 "pallet-evm",5906 "parity-scale-codec 3.1.2",5906 "parity-scale-codec 3.1.5",5907 "scale-info",5907 "scale-info",5908 "sp-core",5908 "sp-core",5909 "sp-io",5909 "sp-io",5925 "pallet-evm",5925 "pallet-evm",5926 "pallet-evm-coder-substrate",5926 "pallet-evm-coder-substrate",5927 "pallet-structure",5927 "pallet-structure",5928 "parity-scale-codec 3.1.2",5928 "parity-scale-codec 3.1.5",5929 "scale-info",5929 "scale-info",5930 "sp-core",5930 "sp-core",5931 "sp-runtime",5931 "sp-runtime",5936[[package]]5936[[package]]5937name = "pallet-gilt"5937name = "pallet-gilt"5938version = "4.0.0-dev"5938version = "4.0.0-dev"5939source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5939source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5940dependencies = [5940dependencies = [5941 "frame-benchmarking",5941 "frame-benchmarking",5942 "frame-support",5942 "frame-support",5943 "frame-system",5943 "frame-system",5944 "parity-scale-codec 3.1.2",5944 "parity-scale-codec 3.1.5",5945 "scale-info",5945 "scale-info",5946 "sp-arithmetic",5946 "sp-arithmetic",5947 "sp-runtime",5947 "sp-runtime",5951[[package]]5951[[package]]5952name = "pallet-grandpa"5952name = "pallet-grandpa"5953version = "4.0.0-dev"5953version = "4.0.0-dev"5954source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5954source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5955dependencies = [5955dependencies = [5956 "frame-benchmarking",5956 "frame-benchmarking",5957 "frame-support",5957 "frame-support",5958 "frame-system",5958 "frame-system",5959 "log",5959 "log",5960 "pallet-authorship",5960 "pallet-authorship",5961 "pallet-session",5961 "pallet-session",5962 "parity-scale-codec 3.1.2",5962 "parity-scale-codec 3.1.5",5963 "scale-info",5963 "scale-info",5964 "sp-application-crypto",5964 "sp-application-crypto",5965 "sp-core",5965 "sp-core",5974[[package]]5974[[package]]5975name = "pallet-identity"5975name = "pallet-identity"5976version = "4.0.0-dev"5976version = "4.0.0-dev"5977source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5977source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5978dependencies = [5978dependencies = [5979 "enumflags2",5979 "enumflags2",5980 "frame-benchmarking",5980 "frame-benchmarking",5981 "frame-support",5981 "frame-support",5982 "frame-system",5982 "frame-system",5983 "parity-scale-codec 3.1.2",5983 "parity-scale-codec 3.1.5",5984 "scale-info",5984 "scale-info",5985 "sp-io",5985 "sp-io",5986 "sp-runtime",5986 "sp-runtime",5990[[package]]5990[[package]]5991name = "pallet-im-online"5991name = "pallet-im-online"5992version = "4.0.0-dev"5992version = "4.0.0-dev"5993source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5993source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"5994dependencies = [5994dependencies = [5995 "frame-benchmarking",5995 "frame-benchmarking",5996 "frame-support",5996 "frame-support",5997 "frame-system",5997 "frame-system",5998 "log",5998 "log",5999 "pallet-authorship",5999 "pallet-authorship",6000 "parity-scale-codec 3.1.2",6000 "parity-scale-codec 3.1.5",6001 "scale-info",6001 "scale-info",6002 "sp-application-crypto",6002 "sp-application-crypto",6003 "sp-core",6003 "sp-core",6010[[package]]6010[[package]]6011name = "pallet-indices"6011name = "pallet-indices"6012version = "4.0.0-dev"6012version = "4.0.0-dev"6013source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6013source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6014dependencies = [6014dependencies = [6015 "frame-benchmarking",6015 "frame-benchmarking",6016 "frame-support",6016 "frame-support",6017 "frame-system",6017 "frame-system",6018 "parity-scale-codec 3.1.2",6018 "parity-scale-codec 3.1.5",6019 "scale-info",6019 "scale-info",6020 "sp-core",6020 "sp-core",6021 "sp-io",6021 "sp-io",6034 "pallet-balances",6034 "pallet-balances",6035 "pallet-randomness-collective-flip",6035 "pallet-randomness-collective-flip",6036 "pallet-timestamp",6036 "pallet-timestamp",6037 "parity-scale-codec 3.1.2",6037 "parity-scale-codec 3.1.5",6038 "scale-info",6038 "scale-info",6039 "serde",6039 "serde",6040 "sp-core",6040 "sp-core",6046[[package]]6046[[package]]6047name = "pallet-membership"6047name = "pallet-membership"6048version = "4.0.0-dev"6048version = "4.0.0-dev"6049source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6049source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6050dependencies = [6050dependencies = [6051 "frame-benchmarking",6051 "frame-benchmarking",6052 "frame-support",6052 "frame-support",6053 "frame-system",6053 "frame-system",6054 "log",6054 "log",6055 "parity-scale-codec 3.1.2",6055 "parity-scale-codec 3.1.5",6056 "scale-info",6056 "scale-info",6057 "sp-core",6057 "sp-core",6058 "sp-io",6058 "sp-io",6063[[package]]6063[[package]]6064name = "pallet-mmr"6064name = "pallet-mmr"6065version = "4.0.0-dev"6065version = "4.0.0-dev"6066source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6066source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6067dependencies = [6067dependencies = [6068 "ckb-merkle-mountain-range",6068 "ckb-merkle-mountain-range",6069 "frame-benchmarking",6069 "frame-benchmarking",6070 "frame-support",6070 "frame-support",6071 "frame-system",6071 "frame-system",6072 "parity-scale-codec 3.1.2",6072 "parity-scale-codec 3.1.5",6073 "scale-info",6073 "scale-info",6074 "sp-core",6074 "sp-core",6075 "sp-io",6075 "sp-io",6081[[package]]6081[[package]]6082name = "pallet-mmr-rpc"6082name = "pallet-mmr-rpc"6083version = "3.0.0"6083version = "3.0.0"6084source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6084source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6085dependencies = [6085dependencies = [6086 "jsonrpsee",6086 "jsonrpsee",6087 "parity-scale-codec 3.1.2",6087 "parity-scale-codec 3.1.5",6088 "serde",6088 "serde",6089 "sp-api",6089 "sp-api",6090 "sp-blockchain",6090 "sp-blockchain",6096[[package]]6096[[package]]6097name = "pallet-multisig"6097name = "pallet-multisig"6098version = "4.0.0-dev"6098version = "4.0.0-dev"6099source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6099source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6100dependencies = [6100dependencies = [6101 "frame-benchmarking",6101 "frame-benchmarking",6102 "frame-support",6102 "frame-support",6103 "frame-system",6103 "frame-system",6104 "parity-scale-codec 3.1.2",6104 "parity-scale-codec 3.1.5",6105 "scale-info",6105 "scale-info",6106 "sp-io",6106 "sp-io",6107 "sp-runtime",6107 "sp-runtime",6111[[package]]6111[[package]]6112name = "pallet-nicks"6112name = "pallet-nicks"6113version = "4.0.0-dev"6113version = "4.0.0-dev"6114source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6114source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6115dependencies = [6115dependencies = [6116 "frame-support",6116 "frame-support",6117 "frame-system",6117 "frame-system",6118 "parity-scale-codec 3.1.2",6118 "parity-scale-codec 3.1.5",6119 "scale-info",6119 "scale-info",6120 "sp-io",6120 "sp-io",6121 "sp-runtime",6121 "sp-runtime",6125[[package]]6125[[package]]6126name = "pallet-nomination-pools"6126name = "pallet-nomination-pools"6127version = "1.0.0"6127version = "1.0.0"6128source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6128source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6129dependencies = [6129dependencies = [6130 "frame-support",6130 "frame-support",6131 "frame-system",6131 "frame-system",6132 "log",6132 "log",6133 "parity-scale-codec 3.1.2",6133 "parity-scale-codec 3.1.5",6134 "scale-info",6134 "scale-info",6135 "sp-core",6135 "sp-core",6136 "sp-runtime",6136 "sp-runtime",6141[[package]]6141[[package]]6142name = "pallet-nomination-pools-benchmarking"6142name = "pallet-nomination-pools-benchmarking"6143version = "1.0.0"6143version = "1.0.0"6144source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6144source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6145dependencies = [6145dependencies = [6146 "frame-benchmarking",6146 "frame-benchmarking",6147 "frame-election-provider-support",6147 "frame-election-provider-support",6150 "pallet-bags-list",6150 "pallet-bags-list",6151 "pallet-nomination-pools",6151 "pallet-nomination-pools",6152 "pallet-staking",6152 "pallet-staking",6153 "parity-scale-codec 3.1.2",6153 "parity-scale-codec 3.1.5",6154 "scale-info",6154 "scale-info",6155 "sp-runtime",6155 "sp-runtime",6156 "sp-staking",6156 "sp-staking",6170 "pallet-evm",6170 "pallet-evm",6171 "pallet-evm-coder-substrate",6171 "pallet-evm-coder-substrate",6172 "pallet-structure",6172 "pallet-structure",6173 "parity-scale-codec 3.1.2",6173 "parity-scale-codec 3.1.5",6174 "scale-info",6174 "scale-info",6175 "sp-core",6175 "sp-core",6176 "sp-runtime",6176 "sp-runtime",6182[[package]]6182[[package]]6183name = "pallet-offences"6183name = "pallet-offences"6184version = "4.0.0-dev"6184version = "4.0.0-dev"6185source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6185source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6186dependencies = [6186dependencies = [6187 "frame-support",6187 "frame-support",6188 "frame-system",6188 "frame-system",6189 "log",6189 "log",6190 "pallet-balances",6190 "pallet-balances",6191 "parity-scale-codec 3.1.2",6191 "parity-scale-codec 3.1.5",6192 "scale-info",6192 "scale-info",6193 "serde",6193 "serde",6194 "sp-runtime",6194 "sp-runtime",6199[[package]]6199[[package]]6200name = "pallet-offences-benchmarking"6200name = "pallet-offences-benchmarking"6201version = "4.0.0-dev"6201version = "4.0.0-dev"6202source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6202source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6203dependencies = [6203dependencies = [6204 "frame-benchmarking",6204 "frame-benchmarking",6205 "frame-election-provider-support",6205 "frame-election-provider-support",6212 "pallet-offences",6212 "pallet-offences",6213 "pallet-session",6213 "pallet-session",6214 "pallet-staking",6214 "pallet-staking",6215 "parity-scale-codec 3.1.2",6215 "parity-scale-codec 3.1.5",6216 "scale-info",6216 "scale-info",6217 "sp-runtime",6217 "sp-runtime",6218 "sp-staking",6218 "sp-staking",6222[[package]]6222[[package]]6223name = "pallet-preimage"6223name = "pallet-preimage"6224version = "4.0.0-dev"6224version = "4.0.0-dev"6225source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6225source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6226dependencies = [6226dependencies = [6227 "frame-benchmarking",6227 "frame-benchmarking",6228 "frame-support",6228 "frame-support",6229 "frame-system",6229 "frame-system",6230 "parity-scale-codec 3.1.2",6230 "parity-scale-codec 3.1.5",6231 "scale-info",6231 "scale-info",6232 "sp-core",6232 "sp-core",6233 "sp-io",6233 "sp-io",6238[[package]]6238[[package]]6239name = "pallet-proxy"6239name = "pallet-proxy"6240version = "4.0.0-dev"6240version = "4.0.0-dev"6241source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6241source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6242dependencies = [6242dependencies = [6243 "frame-benchmarking",6243 "frame-benchmarking",6244 "frame-support",6244 "frame-support",6245 "frame-system",6245 "frame-system",6246 "parity-scale-codec 3.1.2",6246 "parity-scale-codec 3.1.5",6247 "scale-info",6247 "scale-info",6248 "sp-io",6248 "sp-io",6249 "sp-runtime",6249 "sp-runtime",6253[[package]]6253[[package]]6254name = "pallet-randomness-collective-flip"6254name = "pallet-randomness-collective-flip"6255version = "4.0.0-dev"6255version = "4.0.0-dev"6256source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6256source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6257dependencies = [6257dependencies = [6258 "frame-support",6258 "frame-support",6259 "frame-system",6259 "frame-system",6260 "parity-scale-codec 3.1.2",6260 "parity-scale-codec 3.1.5",6261 "safe-mix",6261 "safe-mix",6262 "scale-info",6262 "scale-info",6263 "sp-runtime",6263 "sp-runtime",6267[[package]]6267[[package]]6268name = "pallet-recovery"6268name = "pallet-recovery"6269version = "4.0.0-dev"6269version = "4.0.0-dev"6270source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6270source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6271dependencies = [6271dependencies = [6272 "frame-benchmarking",6272 "frame-benchmarking",6273 "frame-support",6273 "frame-support",6274 "frame-system",6274 "frame-system",6275 "parity-scale-codec 3.1.2",6275 "parity-scale-codec 3.1.5",6276 "scale-info",6276 "scale-info",6277 "sp-io",6277 "sp-io",6278 "sp-runtime",6278 "sp-runtime",6289 "pallet-common",6289 "pallet-common",6290 "pallet-evm",6290 "pallet-evm",6291 "pallet-structure",6291 "pallet-structure",6292 "parity-scale-codec 3.1.2",6292 "parity-scale-codec 3.1.5",6293 "scale-info",6293 "scale-info",6294 "sp-core",6294 "sp-core",6295 "sp-runtime",6295 "sp-runtime",6310 "pallet-evm",6310 "pallet-evm",6311 "pallet-nonfungible",6311 "pallet-nonfungible",6312 "pallet-structure",6312 "pallet-structure",6313 "parity-scale-codec 3.1.2",6313 "parity-scale-codec 3.1.5",6314 "rmrk-traits",6314 "rmrk-traits",6315 "scale-info",6315 "scale-info",6316 "sp-core",6316 "sp-core",6330 "pallet-evm",6330 "pallet-evm",6331 "pallet-nonfungible",6331 "pallet-nonfungible",6332 "pallet-rmrk-core",6332 "pallet-rmrk-core",6333 "parity-scale-codec 3.1.2",6333 "parity-scale-codec 3.1.5",6334 "rmrk-traits",6334 "rmrk-traits",6335 "scale-info",6335 "scale-info",6336 "sp-core",6336 "sp-core",6342[[package]]6342[[package]]6343name = "pallet-scheduler"6343name = "pallet-scheduler"6344version = "4.0.0-dev"6344version = "4.0.0-dev"6345source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6345source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6346dependencies = [6346dependencies = [6347 "frame-benchmarking",6347 "frame-benchmarking",6348 "frame-support",6348 "frame-support",6349 "frame-system",6349 "frame-system",6350 "log",6350 "log",6351 "parity-scale-codec 3.1.2",6351 "parity-scale-codec 3.1.5",6352 "scale-info",6352 "scale-info",6353 "sp-io",6353 "sp-io",6354 "sp-runtime",6354 "sp-runtime",6358[[package]]6358[[package]]6359name = "pallet-session"6359name = "pallet-session"6360version = "4.0.0-dev"6360version = "4.0.0-dev"6361source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6361source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6362dependencies = [6362dependencies = [6363 "frame-support",6363 "frame-support",6364 "frame-system",6364 "frame-system",6365 "impl-trait-for-tuples",6365 "impl-trait-for-tuples",6366 "log",6366 "log",6367 "pallet-timestamp",6367 "pallet-timestamp",6368 "parity-scale-codec 3.1.2",6368 "parity-scale-codec 3.1.5",6369 "scale-info",6369 "scale-info",6370 "sp-core",6370 "sp-core",6371 "sp-io",6371 "sp-io",6379[[package]]6379[[package]]6380name = "pallet-session-benchmarking"6380name = "pallet-session-benchmarking"6381version = "4.0.0-dev"6381version = "4.0.0-dev"6382source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6382source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6383dependencies = [6383dependencies = [6384 "frame-benchmarking",6384 "frame-benchmarking",6385 "frame-support",6385 "frame-support",6395[[package]]6395[[package]]6396name = "pallet-society"6396name = "pallet-society"6397version = "4.0.0-dev"6397version = "4.0.0-dev"6398source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6398source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6399dependencies = [6399dependencies = [6400 "frame-support",6400 "frame-support",6401 "frame-system",6401 "frame-system",6402 "parity-scale-codec 3.1.2",6402 "parity-scale-codec 3.1.5",6403 "rand_chacha 0.2.2",6403 "rand_chacha 0.2.2",6404 "scale-info",6404 "scale-info",6405 "sp-runtime",6405 "sp-runtime",6409[[package]]6409[[package]]6410name = "pallet-staking"6410name = "pallet-staking"6411version = "4.0.0-dev"6411version = "4.0.0-dev"6412source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6412source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6413dependencies = [6413dependencies = [6414 "frame-benchmarking",6414 "frame-benchmarking",6415 "frame-election-provider-support",6415 "frame-election-provider-support",6418 "log",6418 "log",6419 "pallet-authorship",6419 "pallet-authorship",6420 "pallet-session",6420 "pallet-session",6421 "parity-scale-codec 3.1.2",6421 "parity-scale-codec 3.1.5",6422 "rand_chacha 0.2.2",6422 "rand_chacha 0.2.2",6423 "scale-info",6423 "scale-info",6424 "serde",6424 "serde",6432[[package]]6432[[package]]6433name = "pallet-staking-reward-curve"6433name = "pallet-staking-reward-curve"6434version = "4.0.0-dev"6434version = "4.0.0-dev"6435source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6435source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6436dependencies = [6436dependencies = [6437 "proc-macro-crate",6437 "proc-macro-crate",6438 "proc-macro2",6438 "proc-macro2",6443[[package]]6443[[package]]6444name = "pallet-staking-reward-fn"6444name = "pallet-staking-reward-fn"6445version = "4.0.0-dev"6445version = "4.0.0-dev"6446source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6446source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6447dependencies = [6447dependencies = [6448 "log",6448 "log",6449 "sp-arithmetic",6449 "sp-arithmetic",6458 "frame-system",6458 "frame-system",6459 "pallet-common",6459 "pallet-common",6460 "pallet-evm",6460 "pallet-evm",6461 "parity-scale-codec 3.1.2",6461 "parity-scale-codec 3.1.5",6462 "scale-info",6462 "scale-info",6463 "sp-std",6463 "sp-std",6464 "up-data-structs",6464 "up-data-structs",6467[[package]]6467[[package]]6468name = "pallet-sudo"6468name = "pallet-sudo"6469version = "4.0.0-dev"6469version = "4.0.0-dev"6470source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6470source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6471dependencies = [6471dependencies = [6472 "frame-support",6472 "frame-support",6473 "frame-system",6473 "frame-system",6474 "parity-scale-codec 3.1.2",6474 "parity-scale-codec 3.1.5",6475 "scale-info",6475 "scale-info",6476 "sp-io",6476 "sp-io",6477 "sp-runtime",6477 "sp-runtime",6488 "frame-system",6488 "frame-system",6489 "pallet-balances",6489 "pallet-balances",6490 "pallet-transaction-payment",6490 "pallet-transaction-payment",6491 "parity-scale-codec 3.1.2",6491 "parity-scale-codec 3.1.5",6492 "scale-info",6492 "scale-info",6493 "serde",6493 "serde",6494 "sp-core",6494 "sp-core",6501[[package]]6501[[package]]6502name = "pallet-timestamp"6502name = "pallet-timestamp"6503version = "4.0.0-dev"6503version = "4.0.0-dev"6504source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6504source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6505dependencies = [6505dependencies = [6506 "frame-benchmarking",6506 "frame-benchmarking",6507 "frame-support",6507 "frame-support",6508 "frame-system",6508 "frame-system",6509 "log",6509 "log",6510 "parity-scale-codec 3.1.2",6510 "parity-scale-codec 3.1.5",6511 "scale-info",6511 "scale-info",6512 "sp-inherents",6512 "sp-inherents",6513 "sp-io",6513 "sp-io",6519[[package]]6519[[package]]6520name = "pallet-tips"6520name = "pallet-tips"6521version = "4.0.0-dev"6521version = "4.0.0-dev"6522source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6522source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6523dependencies = [6523dependencies = [6524 "frame-benchmarking",6524 "frame-benchmarking",6525 "frame-support",6525 "frame-support",6526 "frame-system",6526 "frame-system",6527 "log",6527 "log",6528 "pallet-treasury",6528 "pallet-treasury",6529 "parity-scale-codec 3.1.2",6529 "parity-scale-codec 3.1.5",6530 "scale-info",6530 "scale-info",6531 "serde",6531 "serde",6532 "sp-core",6532 "sp-core",6538[[package]]6538[[package]]6539name = "pallet-transaction-payment"6539name = "pallet-transaction-payment"6540version = "4.0.0-dev"6540version = "4.0.0-dev"6541source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6541source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6542dependencies = [6542dependencies = [6543 "frame-support",6543 "frame-support",6544 "frame-system",6544 "frame-system",6545 "parity-scale-codec 3.1.2",6545 "parity-scale-codec 3.1.5",6546 "scale-info",6546 "scale-info",6547 "serde",6547 "serde",6548 "sp-core",6548 "sp-core",6554[[package]]6554[[package]]6555name = "pallet-transaction-payment-rpc"6555name = "pallet-transaction-payment-rpc"6556version = "4.0.0-dev"6556version = "4.0.0-dev"6557source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6557source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6558dependencies = [6558dependencies = [6559 "jsonrpsee",6559 "jsonrpsee",6560 "pallet-transaction-payment-rpc-runtime-api",6560 "pallet-transaction-payment-rpc-runtime-api",6561 "parity-scale-codec 3.1.2",6561 "parity-scale-codec 3.1.5",6562 "sp-api",6562 "sp-api",6563 "sp-blockchain",6563 "sp-blockchain",6564 "sp-core",6564 "sp-core",6569[[package]]6569[[package]]6570name = "pallet-transaction-payment-rpc-runtime-api"6570name = "pallet-transaction-payment-rpc-runtime-api"6571version = "4.0.0-dev"6571version = "4.0.0-dev"6572source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6572source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6573dependencies = [6573dependencies = [6574 "pallet-transaction-payment",6574 "pallet-transaction-payment",6575 "parity-scale-codec 3.1.2",6575 "parity-scale-codec 3.1.5",6576 "sp-api",6576 "sp-api",6577 "sp-runtime",6577 "sp-runtime",6578]6578]657965796580[[package]]6580[[package]]6581name = "pallet-treasury"6581name = "pallet-treasury"6582version = "4.0.0-dev"6582version = "4.0.0-dev"6583source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6583source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6584dependencies = [6584dependencies = [6585 "frame-benchmarking",6585 "frame-benchmarking",6586 "frame-support",6586 "frame-support",6587 "frame-system",6587 "frame-system",6588 "impl-trait-for-tuples",6588 "impl-trait-for-tuples",6589 "pallet-balances",6589 "pallet-balances",6590 "parity-scale-codec 3.1.2",6590 "parity-scale-codec 3.1.5",6591 "scale-info",6591 "scale-info",6592 "serde",6592 "serde",6593 "sp-runtime",6593 "sp-runtime",6607 "pallet-evm",6607 "pallet-evm",6608 "pallet-evm-coder-substrate",6608 "pallet-evm-coder-substrate",6609 "pallet-nonfungible",6609 "pallet-nonfungible",6610 "parity-scale-codec 3.1.2",6610 "parity-scale-codec 3.1.5",6611 "scale-info",6611 "scale-info",6612 "serde",6612 "serde",6613 "sp-core",6613 "sp-core",6618]6618]661966196620[[package]]6620[[package]]6621name = "pallet-unq-scheduler"6621name = "pallet-unique-scheduler"6622version = "0.1.0"6622version = "0.1.0"6623dependencies = [6623dependencies = [6624 "frame-benchmarking",6624 "frame-benchmarking",6625 "frame-support",6625 "frame-support",6626 "frame-system",6626 "frame-system",6627 "log",6627 "log",6628 "parity-scale-codec 3.1.2",6628 "parity-scale-codec 3.1.5",6629 "scale-info",6629 "scale-info",6630 "serde",6630 "serde",6631 "sp-core",6631 "sp-core",6639[[package]]6639[[package]]6640name = "pallet-utility"6640name = "pallet-utility"6641version = "4.0.0-dev"6641version = "4.0.0-dev"6642source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6642source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6643dependencies = [6643dependencies = [6644 "frame-benchmarking",6644 "frame-benchmarking",6645 "frame-support",6645 "frame-support",6646 "frame-system",6646 "frame-system",6647 "parity-scale-codec 3.1.2",6647 "parity-scale-codec 3.1.5",6648 "scale-info",6648 "scale-info",6649 "sp-core",6649 "sp-core",6650 "sp-io",6650 "sp-io",6655[[package]]6655[[package]]6656name = "pallet-vesting"6656name = "pallet-vesting"6657version = "4.0.0-dev"6657version = "4.0.0-dev"6658source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6658source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"6659dependencies = [6659dependencies = [6660 "frame-benchmarking",6660 "frame-benchmarking",6661 "frame-support",6661 "frame-support",6662 "frame-system",6662 "frame-system",6663 "log",6663 "log",6664 "parity-scale-codec 3.1.2",6664 "parity-scale-codec 3.1.5",6665 "scale-info",6665 "scale-info",6666 "sp-runtime",6666 "sp-runtime",6667 "sp-std",6667 "sp-std",6675 "frame-support",6675 "frame-support",6676 "frame-system",6676 "frame-system",6677 "log",6677 "log",6678 "parity-scale-codec 3.1.2",6678 "parity-scale-codec 3.1.5",6679 "scale-info",6679 "scale-info",6680 "serde",6680 "serde",6681 "sp-core",6681 "sp-core",6694 "frame-support",6694 "frame-support",6695 "frame-system",6695 "frame-system",6696 "log",6696 "log",6697 "parity-scale-codec 3.1.2",6697 "parity-scale-codec 3.1.5",6698 "scale-info",6698 "scale-info",6699 "sp-runtime",6699 "sp-runtime",6700 "sp-std",6700 "sp-std",6705[[package]]6705[[package]]6706name = "parachain-info"6706name = "parachain-info"6707version = "0.1.0"6707version = "0.1.0"6708source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"6708source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"6709dependencies = [6709dependencies = [6710 "cumulus-primitives-core",6710 "cumulus-primitives-core",6711 "frame-support",6711 "frame-support",6712 "frame-system",6712 "frame-system",6713 "parity-scale-codec 3.1.2",6713 "parity-scale-codec 3.1.5",6714 "scale-info",6714 "scale-info",6715 "serde",6715 "serde",6716]6716]675067506751[[package]]6751[[package]]6752name = "parity-scale-codec"6752name = "parity-scale-codec"6753version = "3.1.2"6753version = "3.1.5"6754source = "registry+https://github.com/rust-lang/crates.io-index"6754source = "registry+https://github.com/rust-lang/crates.io-index"6755checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066"6755checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0"6756dependencies = [6756dependencies = [6757 "arrayvec 0.7.2",6757 "arrayvec 0.7.2",6758 "bitvec 1.0.0",6758 "bitvec 1.0.0",6759 "byte-slice-cast",6759 "byte-slice-cast",6760 "impl-trait-for-tuples",6760 "impl-trait-for-tuples",6761 "parity-scale-codec-derive 3.1.2",6761 "parity-scale-codec-derive 3.1.3",6762 "serde",6762 "serde",6763]6763]67646764677667766777[[package]]6777[[package]]6778name = "parity-scale-codec-derive"6778name = "parity-scale-codec-derive"6779version = "3.1.2"6779version = "3.1.3"6780source = "registry+https://github.com/rust-lang/crates.io-index"6780source = "registry+https://github.com/rust-lang/crates.io-index"6781checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8"6781checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd"6782dependencies = [6782dependencies = [6783 "proc-macro-crate",6783 "proc-macro-crate",6784 "proc-macro2",6784 "proc-macro2",6802 "ethereum-types",6802 "ethereum-types",6803 "hashbrown 0.12.1",6803 "hashbrown 0.12.1",6804 "impl-trait-for-tuples",6804 "impl-trait-for-tuples",6805 "lru 0.7.6",6805 "lru 0.7.7",6806 "parity-util-mem-derive",6806 "parity-util-mem-derive",6807 "parking_lot 0.12.1",6807 "parking_lot 0.12.1",6808 "primitive-types",6808 "primitive-types",7086 "derive_more",7086 "derive_more",7087 "fatality",7087 "fatality",7088 "futures 0.3.21",7088 "futures 0.3.21",7089 "lru 0.7.6",7089 "lru 0.7.7",7090 "parity-scale-codec 3.1.2",7090 "parity-scale-codec 3.1.5",7091 "polkadot-erasure-coding",7091 "polkadot-erasure-coding",7092 "polkadot-node-network-protocol",7092 "polkadot-node-network-protocol",7093 "polkadot-node-primitives",7093 "polkadot-node-primitives",7108dependencies = [7108dependencies = [7109 "fatality",7109 "fatality",7110 "futures 0.3.21",7110 "futures 0.3.21",7111 "lru 0.7.6",7111 "lru 0.7.7",7112 "parity-scale-codec 3.1.2",7112 "parity-scale-codec 3.1.5",7113 "polkadot-erasure-coding",7113 "polkadot-erasure-coding",7114 "polkadot-node-network-protocol",7114 "polkadot-node-network-protocol",7115 "polkadot-node-primitives",7115 "polkadot-node-primitives",7213version = "0.9.23"7213version = "0.9.23"7214source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7214source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7215dependencies = [7215dependencies = [7216 "parity-scale-codec 3.1.2",7216 "parity-scale-codec 3.1.5",7217 "parity-util-mem",7217 "parity-util-mem",7218 "scale-info",7218 "scale-info",7219 "sp-core",7219 "sp-core",7229 "derive_more",7229 "derive_more",7230 "fatality",7230 "fatality",7231 "futures 0.3.21",7231 "futures 0.3.21",7232 "lru 0.7.6",7232 "lru 0.7.7",7233 "parity-scale-codec 3.1.2",7233 "parity-scale-codec 3.1.5",7234 "polkadot-erasure-coding",7234 "polkadot-erasure-coding",7235 "polkadot-node-network-protocol",7235 "polkadot-node-network-protocol",7236 "polkadot-node-primitives",7236 "polkadot-node-primitives",7249version = "0.9.23"7249version = "0.9.23"7250source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7250source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7251dependencies = [7251dependencies = [7252 "parity-scale-codec 3.1.2",7252 "parity-scale-codec 3.1.5",7253 "polkadot-node-primitives",7253 "polkadot-node-primitives",7254 "polkadot-primitives",7254 "polkadot-primitives",7255 "reed-solomon-novelpoly",7255 "reed-solomon-novelpoly",7287 "async-trait",7287 "async-trait",7288 "bytes 1.1.0",7288 "bytes 1.1.0",7289 "futures 0.3.21",7289 "futures 0.3.21",7290 "parity-scale-codec 3.1.2",7290 "parity-scale-codec 3.1.5",7291 "parking_lot 0.12.1",7291 "parking_lot 0.12.1",7292 "polkadot-node-network-protocol",7292 "polkadot-node-network-protocol",7293 "polkadot-node-subsystem",7293 "polkadot-node-subsystem",7305source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7305source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7306dependencies = [7306dependencies = [7307 "futures 0.3.21",7307 "futures 0.3.21",7308 "parity-scale-codec 3.1.2",7308 "parity-scale-codec 3.1.5",7309 "polkadot-erasure-coding",7309 "polkadot-erasure-coding",7310 "polkadot-node-primitives",7310 "polkadot-node-primitives",7311 "polkadot-node-subsystem",7311 "polkadot-node-subsystem",7327 "futures 0.3.21",7327 "futures 0.3.21",7328 "futures-timer",7328 "futures-timer",7329 "kvdb",7329 "kvdb",7330 "lru 0.7.6",7330 "lru 0.7.7",7331 "merlin",7331 "merlin",7332 "parity-scale-codec 3.1.2",7332 "parity-scale-codec 3.1.5",7333 "polkadot-node-jaeger",7333 "polkadot-node-jaeger",7334 "polkadot-node-primitives",7334 "polkadot-node-primitives",7335 "polkadot-node-subsystem",7335 "polkadot-node-subsystem",7355 "futures 0.3.21",7355 "futures 0.3.21",7356 "futures-timer",7356 "futures-timer",7357 "kvdb",7357 "kvdb",7358 "parity-scale-codec 3.1.2",7358 "parity-scale-codec 3.1.5",7359 "polkadot-erasure-coding",7359 "polkadot-erasure-coding",7360 "polkadot-node-primitives",7360 "polkadot-node-primitives",7361 "polkadot-node-subsystem",7361 "polkadot-node-subsystem",7407dependencies = [7407dependencies = [7408 "async-trait",7408 "async-trait",7409 "futures 0.3.21",7409 "futures 0.3.21",7410 "parity-scale-codec 3.1.2",7410 "parity-scale-codec 3.1.5",7411 "polkadot-node-core-pvf",7411 "polkadot-node-core-pvf",7412 "polkadot-node-primitives",7412 "polkadot-node-primitives",7413 "polkadot-node-subsystem",7413 "polkadot-node-subsystem",7441 "futures 0.3.21",7441 "futures 0.3.21",7442 "futures-timer",7442 "futures-timer",7443 "kvdb",7443 "kvdb",7444 "parity-scale-codec 3.1.2",7444 "parity-scale-codec 3.1.5",7445 "polkadot-node-primitives",7445 "polkadot-node-primitives",7446 "polkadot-node-subsystem",7446 "polkadot-node-subsystem",7447 "polkadot-node-subsystem-util",7447 "polkadot-node-subsystem-util",7458 "fatality",7458 "fatality",7459 "futures 0.3.21",7459 "futures 0.3.21",7460 "kvdb",7460 "kvdb",7461 "lru 0.7.6",7461 "lru 0.7.7",7462 "parity-scale-codec 3.1.2",7462 "parity-scale-codec 3.1.5",7463 "polkadot-node-primitives",7463 "polkadot-node-primitives",7464 "polkadot-node-subsystem",7464 "polkadot-node-subsystem",7465 "polkadot-node-subsystem-util",7465 "polkadot-node-subsystem-util",7515 "async-std",7515 "async-std",7516 "futures 0.3.21",7516 "futures 0.3.21",7517 "futures-timer",7517 "futures-timer",7518 "parity-scale-codec 3.1.2",7518 "parity-scale-codec 3.1.5",7519 "pin-project 1.0.10",7519 "pin-project 1.0.10",7520 "polkadot-core-primitives",7520 "polkadot-core-primitives",7521 "polkadot-node-subsystem-util",7521 "polkadot-node-subsystem-util",7577 "lazy_static",7577 "lazy_static",7578 "log",7578 "log",7579 "mick-jaeger",7579 "mick-jaeger",7580 "parity-scale-codec 3.1.2",7580 "parity-scale-codec 3.1.5",7581 "parking_lot 0.12.1",7581 "parking_lot 0.12.1",7582 "polkadot-node-primitives",7582 "polkadot-node-primitives",7583 "polkadot-primitives",7583 "polkadot-primitives",7595 "futures 0.3.21",7595 "futures 0.3.21",7596 "futures-timer",7596 "futures-timer",7597 "log",7597 "log",7598 "parity-scale-codec 3.1.2",7598 "parity-scale-codec 3.1.5",7599 "polkadot-primitives",7599 "polkadot-primitives",7600 "prioritized-metered-channel",7600 "prioritized-metered-channel",7601 "sc-cli",7601 "sc-cli",7614 "derive_more",7614 "derive_more",7615 "fatality",7615 "fatality",7616 "futures 0.3.21",7616 "futures 0.3.21",7617 "parity-scale-codec 3.1.2",7617 "parity-scale-codec 3.1.5",7618 "polkadot-node-jaeger",7618 "polkadot-node-jaeger",7619 "polkadot-node-primitives",7619 "polkadot-node-primitives",7620 "polkadot-primitives",7620 "polkadot-primitives",7621 "rand 0.8.5",7621 "rand 0.8.5",7622 "sc-authority-discovery",7622 "sc-authority-discovery",7623 "sc-network",7623 "sc-network",7624 "strum 0.24.0",7624 "strum 0.24.1",7625 "thiserror",7625 "thiserror",7626 "tracing-gum",7626 "tracing-gum",7627]7627]7633dependencies = [7633dependencies = [7634 "bounded-vec",7634 "bounded-vec",7635 "futures 0.3.21",7635 "futures 0.3.21",7636 "parity-scale-codec 3.1.2",7636 "parity-scale-codec 3.1.5",7637 "polkadot-parachain",7637 "polkadot-parachain",7638 "polkadot-primitives",7638 "polkadot-primitives",7639 "schnorrkel",7639 "schnorrkel",7688 "futures 0.3.21",7688 "futures 0.3.21",7689 "itertools",7689 "itertools",7690 "kvdb",7690 "kvdb",7691 "lru 0.7.6",7691 "lru 0.7.7",7692 "parity-db",7692 "parity-db",7693 "parity-scale-codec 3.1.2",7693 "parity-scale-codec 3.1.5",7694 "parity-util-mem",7694 "parity-util-mem",7695 "parking_lot 0.11.2",7695 "parking_lot 0.11.2",7696 "pin-project 1.0.10",7696 "pin-project 1.0.10",7717dependencies = [7717dependencies = [7718 "futures 0.3.21",7718 "futures 0.3.21",7719 "futures-timer",7719 "futures-timer",7720 "lru 0.7.6",7720 "lru 0.7.7",7721 "orchestra",7721 "orchestra",7722 "parity-util-mem",7722 "parity-util-mem",7723 "parking_lot 0.12.1",7723 "parking_lot 0.12.1",7739dependencies = [7739dependencies = [7740 "derive_more",7740 "derive_more",7741 "frame-support",7741 "frame-support",7742 "parity-scale-codec 3.1.2",7742 "parity-scale-codec 3.1.5",7743 "parity-util-mem",7743 "parity-util-mem",7744 "polkadot-core-primitives",7744 "polkadot-core-primitives",7745 "scale-info",7745 "scale-info",7772 "bitvec 1.0.0",7772 "bitvec 1.0.0",7773 "frame-system",7773 "frame-system",7774 "hex-literal",7774 "hex-literal",7775 "parity-scale-codec 3.1.2",7775 "parity-scale-codec 3.1.5",7776 "parity-util-mem",7776 "parity-util-mem",7777 "polkadot-core-primitives",7777 "polkadot-core-primitives",7778 "polkadot-parachain",7778 "polkadot-parachain",7879 "pallet-utility",7879 "pallet-utility",7880 "pallet-vesting",7880 "pallet-vesting",7881 "pallet-xcm",7881 "pallet-xcm",7882 "parity-scale-codec 3.1.2",7882 "parity-scale-codec 3.1.5",7883 "polkadot-primitives",7883 "polkadot-primitives",7884 "polkadot-runtime-common",7884 "polkadot-runtime-common",7885 "polkadot-runtime-constants",7885 "polkadot-runtime-constants",7938 "pallet-transaction-payment",7938 "pallet-transaction-payment",7939 "pallet-treasury",7939 "pallet-treasury",7940 "pallet-vesting",7940 "pallet-vesting",7941 "parity-scale-codec 3.1.2",7941 "parity-scale-codec 3.1.5",7942 "polkadot-primitives",7942 "polkadot-primitives",7943 "polkadot-runtime-parachains",7943 "polkadot-runtime-parachains",7944 "rustc-hex",7944 "rustc-hex",7977source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7977source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7978dependencies = [7978dependencies = [7979 "bs58",7979 "bs58",7980 "parity-scale-codec 3.1.2",7980 "parity-scale-codec 3.1.5",7981 "polkadot-primitives",7981 "polkadot-primitives",7982 "sp-std",7982 "sp-std",7983 "sp-tracing",7983 "sp-tracing",8003 "pallet-staking",8003 "pallet-staking",8004 "pallet-timestamp",8004 "pallet-timestamp",8005 "pallet-vesting",8005 "pallet-vesting",8006 "parity-scale-codec 3.1.2",8006 "parity-scale-codec 3.1.5",8007 "polkadot-primitives",8007 "polkadot-primitives",8008 "polkadot-runtime-metrics",8008 "polkadot-runtime-metrics",8009 "rand 0.8.5",8009 "rand 0.8.5",8040 "kusama-runtime",8040 "kusama-runtime",8041 "kvdb",8041 "kvdb",8042 "kvdb-rocksdb",8042 "kvdb-rocksdb",8043 "lru 0.7.6",8043 "lru 0.7.7",8044 "pallet-babe",8044 "pallet-babe",8045 "pallet-im-online",8045 "pallet-im-online",8046 "pallet-staking",8046 "pallet-staking",8138 "fatality",8138 "fatality",8139 "futures 0.3.21",8139 "futures 0.3.21",8140 "indexmap",8140 "indexmap",8141 "parity-scale-codec 3.1.2",8141 "parity-scale-codec 3.1.5",8142 "polkadot-node-network-protocol",8142 "polkadot-node-network-protocol",8143 "polkadot-node-primitives",8143 "polkadot-node-primitives",8144 "polkadot-node-subsystem",8144 "polkadot-node-subsystem",8155version = "0.9.23"8155version = "0.9.23"8156source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"8156source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"8157dependencies = [8157dependencies = [8158 "parity-scale-codec 3.1.2",8158 "parity-scale-codec 3.1.5",8159 "polkadot-primitives",8159 "polkadot-primitives",8160 "sp-core",8160 "sp-core",8161]8161]8190 "pallet-transaction-payment-rpc-runtime-api",8190 "pallet-transaction-payment-rpc-runtime-api",8191 "pallet-vesting",8191 "pallet-vesting",8192 "pallet-xcm",8192 "pallet-xcm",8193 "parity-scale-codec 3.1.2",8193 "parity-scale-codec 3.1.5",8194 "polkadot-parachain",8194 "polkadot-parachain",8195 "polkadot-primitives",8195 "polkadot-primitives",8196 "polkadot-runtime-common",8196 "polkadot-runtime-common",838383838384[[package]]8384[[package]]8385name = "proc-macro2"8385name = "proc-macro2"8386version = "1.0.39"8386version = "1.0.40"8387source = "registry+https://github.com/rust-lang/crates.io-index"8387source = "registry+https://github.com/rust-lang/crates.io-index"8388checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"8388checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"8389dependencies = [8389dependencies = [8390 "unicode-ident",8390 "unicode-ident",8391]8391]851485148515[[package]]8515[[package]]8516name = "quartz-runtime"8516name = "quartz-runtime"8517version = "0.9.22"8517version = "0.9.23"8518dependencies = [8518dependencies = [8519 "cumulus-pallet-aura-ext",8519 "cumulus-pallet-aura-ext",8520 "cumulus-pallet-dmp-queue",8520 "cumulus-pallet-dmp-queue",8528 "fp-evm-mapping",8528 "fp-evm-mapping",8529 "fp-rpc",8529 "fp-rpc",8530 "fp-self-contained",8530 "fp-self-contained",8531 "frame-benchmarking",8531 "frame-executive",8532 "frame-executive",8532 "frame-support",8533 "frame-support",8533 "frame-system",8534 "frame-system",8535 "frame-system-benchmarking",8534 "frame-system-rpc-runtime-api",8536 "frame-system-rpc-runtime-api",8535 "frame-try-runtime",8537 "frame-try-runtime",8538 "hex-literal",8536 "log",8539 "log",8537 "orml-vesting",8540 "orml-vesting",8538 "pallet-aura",8541 "pallet-aura",8560 "pallet-transaction-payment-rpc-runtime-api",8563 "pallet-transaction-payment-rpc-runtime-api",8561 "pallet-treasury",8564 "pallet-treasury",8562 "pallet-unique",8565 "pallet-unique",8563 "pallet-unq-scheduler",8566 "pallet-unique-scheduler",8564 "pallet-xcm",8567 "pallet-xcm",8565 "parachain-info",8568 "parachain-info",8566 "parity-scale-codec 3.1.2",8569 "parity-scale-codec 3.1.5",8567 "polkadot-parachain",8570 "polkadot-parachain",8568 "rmrk-rpc",8571 "rmrk-rpc",8569 "scale-info",8572 "scale-info",861086138611[[package]]8614[[package]]8612name = "quote"8615name = "quote"8613version = "1.0.18"8616version = "1.0.20"8614source = "registry+https://github.com/rust-lang/crates.io-index"8617source = "registry+https://github.com/rust-lang/crates.io-index"8615checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"8618checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"8616dependencies = [8619dependencies = [8617 "proc-macro2",8620 "proc-macro2",8618]8621]8689source = "registry+https://github.com/rust-lang/crates.io-index"8692source = "registry+https://github.com/rust-lang/crates.io-index"8690checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"8693checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"8691dependencies = [8694dependencies = [8692 "getrandom 0.2.6",8695 "getrandom 0.2.7",8693]8696]869486978695[[package]]8698[[package]]8774source = "registry+https://github.com/rust-lang/crates.io-index"8777source = "registry+https://github.com/rust-lang/crates.io-index"8775checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"8778checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"8776dependencies = [8779dependencies = [8777 "getrandom 0.2.6",8780 "getrandom 0.2.7",8778 "redox_syscall",8781 "redox_syscall",8779 "thiserror",8782 "thiserror",8780]8783]8864[[package]]8867[[package]]8865name = "remote-externalities"8868name = "remote-externalities"8866version = "0.10.0-dev"8869version = "0.10.0-dev"8867source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"8870source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"8868dependencies = [8871dependencies = [8869 "env_logger",8872 "env_logger",8870 "jsonrpsee",8873 "jsonrpsee",8871 "log",8874 "log",8872 "parity-scale-codec 3.1.2",8875 "parity-scale-codec 3.1.5",8873 "serde",8876 "serde",8874 "serde_json",8877 "serde_json",8875 "sp-core",8878 "sp-core",8967name = "rmrk-traits"8970name = "rmrk-traits"8968version = "0.1.0"8971version = "0.1.0"8969dependencies = [8972dependencies = [8970 "parity-scale-codec 3.1.2",8973 "parity-scale-codec 3.1.5",8971 "scale-info",8974 "scale-info",8972 "serde",8975 "serde",8973]8976]9028 "pallet-transaction-payment-rpc-runtime-api",9031 "pallet-transaction-payment-rpc-runtime-api",9029 "pallet-utility",9032 "pallet-utility",9030 "pallet-xcm",9033 "pallet-xcm",9031 "parity-scale-codec 3.1.2",9034 "parity-scale-codec 3.1.5",9032 "polkadot-parachain",9035 "polkadot-parachain",9033 "polkadot-primitives",9036 "polkadot-primitives",9034 "polkadot-runtime-common",9037 "polkadot-runtime-common",918191849182[[package]]9185[[package]]9183name = "rustversion"9186name = "rustversion"9184version = "1.0.6"9187version = "1.0.7"9185source = "registry+https://github.com/rust-lang/crates.io-index"9188source = "registry+https://github.com/rust-lang/crates.io-index"9186checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"9189checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf"918791909188[[package]]9191[[package]]9189name = "rw-stream-sink"9192name = "rw-stream-sink"9232[[package]]9235[[package]]9233name = "sc-allocator"9236name = "sc-allocator"9234version = "4.1.0-dev"9237version = "4.1.0-dev"9235source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9238source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9236dependencies = [9239dependencies = [9237 "log",9240 "log",9238 "sp-core",9241 "sp-core",9243[[package]]9246[[package]]9244name = "sc-authority-discovery"9247name = "sc-authority-discovery"9245version = "0.10.0-dev"9248version = "0.10.0-dev"9246source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9249source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9247dependencies = [9250dependencies = [9248 "async-trait",9251 "async-trait",9249 "futures 0.3.21",9252 "futures 0.3.21",9250 "futures-timer",9253 "futures-timer",9251 "ip_network",9254 "ip_network",9252 "libp2p",9255 "libp2p",9253 "log",9256 "log",9254 "parity-scale-codec 3.1.2",9257 "parity-scale-codec 3.1.5",9255 "prost 0.10.4",9258 "prost 0.10.4",9256 "prost-build",9259 "prost-build",9257 "rand 0.7.3",9260 "rand 0.7.3",9270[[package]]9273[[package]]9271name = "sc-basic-authorship"9274name = "sc-basic-authorship"9272version = "0.10.0-dev"9275version = "0.10.0-dev"9273source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9276source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9274dependencies = [9277dependencies = [9275 "futures 0.3.21",9278 "futures 0.3.21",9276 "futures-timer",9279 "futures-timer",9277 "log",9280 "log",9278 "parity-scale-codec 3.1.2",9281 "parity-scale-codec 3.1.5",9279 "sc-block-builder",9282 "sc-block-builder",9280 "sc-client-api",9283 "sc-client-api",9281 "sc-proposer-metrics",9284 "sc-proposer-metrics",9293[[package]]9296[[package]]9294name = "sc-block-builder"9297name = "sc-block-builder"9295version = "0.10.0-dev"9298version = "0.10.0-dev"9296source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9299source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9297dependencies = [9300dependencies = [9298 "parity-scale-codec 3.1.2",9301 "parity-scale-codec 3.1.5",9299 "sc-client-api",9302 "sc-client-api",9300 "sp-api",9303 "sp-api",9301 "sp-block-builder",9304 "sp-block-builder",9309[[package]]9312[[package]]9310name = "sc-chain-spec"9313name = "sc-chain-spec"9311version = "4.0.0-dev"9314version = "4.0.0-dev"9312source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9315source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9313dependencies = [9316dependencies = [9314 "impl-trait-for-tuples",9317 "impl-trait-for-tuples",9315 "memmap2 0.5.4",9318 "memmap2 0.5.4",9316 "parity-scale-codec 3.1.2",9319 "parity-scale-codec 3.1.5",9317 "sc-chain-spec-derive",9320 "sc-chain-spec-derive",9318 "sc-network",9321 "sc-network",9319 "sc-telemetry",9322 "sc-telemetry",9326[[package]]9329[[package]]9327name = "sc-chain-spec-derive"9330name = "sc-chain-spec-derive"9328version = "4.0.0-dev"9331version = "4.0.0-dev"9329source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9332source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9330dependencies = [9333dependencies = [9331 "proc-macro-crate",9334 "proc-macro-crate",9332 "proc-macro2",9335 "proc-macro2",9337[[package]]9340[[package]]9338name = "sc-cli"9341name = "sc-cli"9339version = "0.10.0-dev"9342version = "0.10.0-dev"9340source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9343source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9341dependencies = [9344dependencies = [9342 "chrono",9345 "chrono",9343 "clap",9346 "clap",9347 "libp2p",9350 "libp2p",9348 "log",9351 "log",9349 "names",9352 "names",9350 "parity-scale-codec 3.1.2",9353 "parity-scale-codec 3.1.5",9351 "rand 0.7.3",9354 "rand 0.7.3",9352 "regex",9355 "regex",9353 "rpassword",9356 "rpassword",9376[[package]]9379[[package]]9377name = "sc-client-api"9380name = "sc-client-api"9378version = "4.0.0-dev"9381version = "4.0.0-dev"9379source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9382source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9380dependencies = [9383dependencies = [9381 "fnv",9384 "fnv",9382 "futures 0.3.21",9385 "futures 0.3.21",9383 "hash-db",9386 "hash-db",9384 "log",9387 "log",9385 "parity-scale-codec 3.1.2",9388 "parity-scale-codec 3.1.5",9386 "parking_lot 0.12.1",9389 "parking_lot 0.12.1",9387 "sc-executor",9390 "sc-executor",9388 "sc-transaction-pool-api",9391 "sc-transaction-pool-api",9404[[package]]9407[[package]]9405name = "sc-client-db"9408name = "sc-client-db"9406version = "0.10.0-dev"9409version = "0.10.0-dev"9407source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9410source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9408dependencies = [9411dependencies = [9409 "hash-db",9412 "hash-db",9410 "kvdb",9413 "kvdb",9413 "linked-hash-map",9416 "linked-hash-map",9414 "log",9417 "log",9415 "parity-db",9418 "parity-db",9416 "parity-scale-codec 3.1.2",9419 "parity-scale-codec 3.1.5",9417 "parking_lot 0.12.1",9420 "parking_lot 0.12.1",9418 "sc-client-api",9421 "sc-client-api",9419 "sc-state-db",9422 "sc-state-db",9429[[package]]9432[[package]]9430name = "sc-consensus"9433name = "sc-consensus"9431version = "0.10.0-dev"9434version = "0.10.0-dev"9432source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9435source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9433dependencies = [9436dependencies = [9434 "async-trait",9437 "async-trait",9435 "futures 0.3.21",9438 "futures 0.3.21",9453[[package]]9456[[package]]9454name = "sc-consensus-aura"9457name = "sc-consensus-aura"9455version = "0.10.0-dev"9458version = "0.10.0-dev"9456source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9459source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9457dependencies = [9460dependencies = [9458 "async-trait",9461 "async-trait",9459 "futures 0.3.21",9462 "futures 0.3.21",9460 "log",9463 "log",9461 "parity-scale-codec 3.1.2",9464 "parity-scale-codec 3.1.5",9462 "sc-block-builder",9465 "sc-block-builder",9463 "sc-client-api",9466 "sc-client-api",9464 "sc-consensus",9467 "sc-consensus",9482[[package]]9485[[package]]9483name = "sc-consensus-babe"9486name = "sc-consensus-babe"9484version = "0.10.0-dev"9487version = "0.10.0-dev"9485source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9488source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9486dependencies = [9489dependencies = [9487 "async-trait",9490 "async-trait",9488 "fork-tree",9491 "fork-tree",9492 "num-bigint",9495 "num-bigint",9493 "num-rational 0.2.4",9496 "num-rational 0.2.4",9494 "num-traits",9497 "num-traits",9495 "parity-scale-codec 3.1.2",9498 "parity-scale-codec 3.1.5",9496 "parking_lot 0.12.1",9499 "parking_lot 0.12.1",9497 "rand 0.7.3",9500 "rand 0.7.3",9498 "retain_mut",9501 "retain_mut",9525[[package]]9528[[package]]9526name = "sc-consensus-babe-rpc"9529name = "sc-consensus-babe-rpc"9527version = "0.10.0-dev"9530version = "0.10.0-dev"9528source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9531source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9529dependencies = [9532dependencies = [9530 "futures 0.3.21",9533 "futures 0.3.21",9531 "jsonrpsee",9534 "jsonrpsee",9547[[package]]9550[[package]]9548name = "sc-consensus-epochs"9551name = "sc-consensus-epochs"9549version = "0.10.0-dev"9552version = "0.10.0-dev"9550source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9553source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9551dependencies = [9554dependencies = [9552 "fork-tree",9555 "fork-tree",9553 "parity-scale-codec 3.1.2",9556 "parity-scale-codec 3.1.5",9554 "sc-client-api",9557 "sc-client-api",9555 "sc-consensus",9558 "sc-consensus",9556 "sp-blockchain",9559 "sp-blockchain",9560[[package]]9563[[package]]9561name = "sc-consensus-manual-seal"9564name = "sc-consensus-manual-seal"9562version = "0.10.0-dev"9565version = "0.10.0-dev"9563source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9566source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9564dependencies = [9567dependencies = [9565 "assert_matches",9568 "assert_matches",9566 "async-trait",9569 "async-trait",9567 "futures 0.3.21",9570 "futures 0.3.21",9568 "jsonrpsee",9571 "jsonrpsee",9569 "log",9572 "log",9570 "parity-scale-codec 3.1.2",9573 "parity-scale-codec 3.1.5",9571 "sc-client-api",9574 "sc-client-api",9572 "sc-consensus",9575 "sc-consensus",9573 "sc-consensus-aura",9576 "sc-consensus-aura",9594[[package]]9597[[package]]9595name = "sc-consensus-slots"9598name = "sc-consensus-slots"9596version = "0.10.0-dev"9599version = "0.10.0-dev"9597source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9600source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9598dependencies = [9601dependencies = [9599 "async-trait",9602 "async-trait",9600 "futures 0.3.21",9603 "futures 0.3.21",9601 "futures-timer",9604 "futures-timer",9602 "log",9605 "log",9603 "parity-scale-codec 3.1.2",9606 "parity-scale-codec 3.1.5",9604 "sc-client-api",9607 "sc-client-api",9605 "sc-consensus",9608 "sc-consensus",9606 "sc-telemetry",9609 "sc-telemetry",9619[[package]]9622[[package]]9620name = "sc-consensus-uncles"9623name = "sc-consensus-uncles"9621version = "0.10.0-dev"9624version = "0.10.0-dev"9622source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9625source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9623dependencies = [9626dependencies = [9624 "sc-client-api",9627 "sc-client-api",9625 "sp-authorship",9628 "sp-authorship",9630[[package]]9633[[package]]9631name = "sc-executor"9634name = "sc-executor"9632version = "0.10.0-dev"9635version = "0.10.0-dev"9633source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9636source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9634dependencies = [9637dependencies = [9635 "lazy_static",9638 "lazy_static",9636 "lru 0.7.6",9639 "lru 0.7.7",9637 "parity-scale-codec 3.1.2",9640 "parity-scale-codec 3.1.5",9638 "parking_lot 0.12.1",9641 "parking_lot 0.12.1",9639 "sc-executor-common",9642 "sc-executor-common",9640 "sc-executor-wasmi",9643 "sc-executor-wasmi",9657[[package]]9660[[package]]9658name = "sc-executor-common"9661name = "sc-executor-common"9659version = "0.10.0-dev"9662version = "0.10.0-dev"9660source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9663source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9661dependencies = [9664dependencies = [9662 "environmental",9665 "environmental",9663 "parity-scale-codec 3.1.2",9666 "parity-scale-codec 3.1.5",9664 "sc-allocator",9667 "sc-allocator",9665 "sp-maybe-compressed-blob",9668 "sp-maybe-compressed-blob",9666 "sp-sandbox",9669 "sp-sandbox",9674[[package]]9677[[package]]9675name = "sc-executor-wasmi"9678name = "sc-executor-wasmi"9676version = "0.10.0-dev"9679version = "0.10.0-dev"9677source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9680source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9678dependencies = [9681dependencies = [9679 "log",9682 "log",9680 "parity-scale-codec 3.1.2",9683 "parity-scale-codec 3.1.5",9681 "sc-allocator",9684 "sc-allocator",9682 "sc-executor-common",9685 "sc-executor-common",9683 "sp-runtime-interface",9686 "sp-runtime-interface",9689[[package]]9692[[package]]9690name = "sc-executor-wasmtime"9693name = "sc-executor-wasmtime"9691version = "0.10.0-dev"9694version = "0.10.0-dev"9692source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9695source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9693dependencies = [9696dependencies = [9694 "cfg-if 1.0.0",9697 "cfg-if 1.0.0",9695 "libc",9698 "libc",9696 "log",9699 "log",9697 "parity-scale-codec 3.1.2",9700 "parity-scale-codec 3.1.5",9698 "parity-wasm 0.42.2",9701 "parity-wasm 0.42.2",9699 "sc-allocator",9702 "sc-allocator",9700 "sc-executor-common",9703 "sc-executor-common",9707[[package]]9710[[package]]9708name = "sc-finality-grandpa"9711name = "sc-finality-grandpa"9709version = "0.10.0-dev"9712version = "0.10.0-dev"9710source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9713source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9711dependencies = [9714dependencies = [9712 "ahash",9715 "ahash",9713 "async-trait",9716 "async-trait",9718 "futures-timer",9721 "futures-timer",9719 "hex",9722 "hex",9720 "log",9723 "log",9721 "parity-scale-codec 3.1.2",9724 "parity-scale-codec 3.1.5",9722 "parking_lot 0.12.1",9725 "parking_lot 0.12.1",9723 "rand 0.8.5",9726 "rand 0.8.5",9724 "sc-block-builder",9727 "sc-block-builder",9747[[package]]9750[[package]]9748name = "sc-finality-grandpa-rpc"9751name = "sc-finality-grandpa-rpc"9749version = "0.10.0-dev"9752version = "0.10.0-dev"9750source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9753source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9751dependencies = [9754dependencies = [9752 "finality-grandpa",9755 "finality-grandpa",9753 "futures 0.3.21",9756 "futures 0.3.21",9754 "jsonrpsee",9757 "jsonrpsee",9755 "log",9758 "log",9756 "parity-scale-codec 3.1.2",9759 "parity-scale-codec 3.1.5",9757 "sc-client-api",9760 "sc-client-api",9758 "sc-finality-grandpa",9761 "sc-finality-grandpa",9759 "sc-rpc",9762 "sc-rpc",9768[[package]]9771[[package]]9769name = "sc-informant"9772name = "sc-informant"9770version = "0.10.0-dev"9773version = "0.10.0-dev"9771source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9774source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9772dependencies = [9775dependencies = [9773 "ansi_term",9776 "ansi_term",9774 "futures 0.3.21",9777 "futures 0.3.21",9785[[package]]9788[[package]]9786name = "sc-keystore"9789name = "sc-keystore"9787version = "4.0.0-dev"9790version = "4.0.0-dev"9788source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9791source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9789dependencies = [9792dependencies = [9790 "async-trait",9793 "async-trait",9791 "hex",9794 "hex",9800[[package]]9803[[package]]9801name = "sc-network"9804name = "sc-network"9802version = "0.10.0-dev"9805version = "0.10.0-dev"9803source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9806source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9804dependencies = [9807dependencies = [9805 "async-trait",9808 "async-trait",9806 "asynchronous-codec",9809 "asynchronous-codec",9818 "linked-hash-map",9821 "linked-hash-map",9819 "linked_hash_set",9822 "linked_hash_set",9820 "log",9823 "log",9821 "lru 0.7.6",9824 "lru 0.7.7",9822 "parity-scale-codec 3.1.2",9825 "parity-scale-codec 3.1.5",9823 "parking_lot 0.12.1",9826 "parking_lot 0.12.1",9824 "pin-project 1.0.10",9827 "pin-project 1.0.10",9825 "prost 0.10.4",9828 "prost 0.10.4",9852[[package]]9855[[package]]9853name = "sc-network-common"9856name = "sc-network-common"9854version = "0.10.0-dev"9857version = "0.10.0-dev"9855source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9858source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9856dependencies = [9859dependencies = [9857 "futures 0.3.21",9860 "futures 0.3.21",9858 "libp2p",9861 "libp2p",9859 "parity-scale-codec 3.1.2",9862 "parity-scale-codec 3.1.5",9860 "prost-build",9863 "prost-build",9861 "sc-peerset",9864 "sc-peerset",9862 "smallvec",9865 "smallvec",9865[[package]]9868[[package]]9866name = "sc-network-gossip"9869name = "sc-network-gossip"9867version = "0.10.0-dev"9870version = "0.10.0-dev"9868source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9871source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9869dependencies = [9872dependencies = [9870 "ahash",9873 "ahash",9871 "futures 0.3.21",9874 "futures 0.3.21",9872 "futures-timer",9875 "futures-timer",9873 "libp2p",9876 "libp2p",9874 "log",9877 "log",9875 "lru 0.7.6",9878 "lru 0.7.7",9876 "sc-network",9879 "sc-network",9877 "sp-runtime",9880 "sp-runtime",9878 "substrate-prometheus-endpoint",9881 "substrate-prometheus-endpoint",9882[[package]]9885[[package]]9883name = "sc-network-light"9886name = "sc-network-light"9884version = "0.10.0-dev"9887version = "0.10.0-dev"9885source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9888source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9886dependencies = [9889dependencies = [9887 "futures 0.3.21",9890 "futures 0.3.21",9888 "libp2p",9891 "libp2p",9889 "log",9892 "log",9890 "parity-scale-codec 3.1.2",9893 "parity-scale-codec 3.1.5",9891 "prost 0.10.4",9894 "prost 0.10.4",9892 "prost-build",9895 "prost-build",9893 "sc-client-api",9896 "sc-client-api",9902[[package]]9905[[package]]9903name = "sc-network-sync"9906name = "sc-network-sync"9904version = "0.10.0-dev"9907version = "0.10.0-dev"9905source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9908source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9906dependencies = [9909dependencies = [9907 "bitflags",9910 "bitflags",9908 "either",9911 "either",9909 "fork-tree",9912 "fork-tree",9910 "futures 0.3.21",9913 "futures 0.3.21",9911 "libp2p",9914 "libp2p",9912 "log",9915 "log",9913 "lru 0.7.6",9916 "lru 0.7.7",9914 "parity-scale-codec 3.1.2",9917 "parity-scale-codec 3.1.5",9915 "prost 0.10.4",9918 "prost 0.10.4",9916 "prost-build",9919 "prost-build",9917 "sc-client-api",9920 "sc-client-api",9931[[package]]9934[[package]]9932name = "sc-offchain"9935name = "sc-offchain"9933version = "4.0.0-dev"9936version = "4.0.0-dev"9934source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9937source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9935dependencies = [9938dependencies = [9936 "bytes 1.1.0",9939 "bytes 1.1.0",9937 "fnv",9940 "fnv",9942 "hyper-rustls",9945 "hyper-rustls",9943 "num_cpus",9946 "num_cpus",9944 "once_cell",9947 "once_cell",9945 "parity-scale-codec 3.1.2",9948 "parity-scale-codec 3.1.5",9946 "parking_lot 0.12.1",9949 "parking_lot 0.12.1",9947 "rand 0.7.3",9950 "rand 0.7.3",9948 "sc-client-api",9951 "sc-client-api",9959[[package]]9962[[package]]9960name = "sc-peerset"9963name = "sc-peerset"9961version = "4.0.0-dev"9964version = "4.0.0-dev"9962source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9965source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9963dependencies = [9966dependencies = [9964 "futures 0.3.21",9967 "futures 0.3.21",9965 "libp2p",9968 "libp2p",9972[[package]]9975[[package]]9973name = "sc-proposer-metrics"9976name = "sc-proposer-metrics"9974version = "0.10.0-dev"9977version = "0.10.0-dev"9975source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9978source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9976dependencies = [9979dependencies = [9977 "log",9980 "log",9978 "substrate-prometheus-endpoint",9981 "substrate-prometheus-endpoint",9981[[package]]9984[[package]]9982name = "sc-rpc"9985name = "sc-rpc"9983version = "4.0.0-dev"9986version = "4.0.0-dev"9984source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9987source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"9985dependencies = [9988dependencies = [9986 "futures 0.3.21",9989 "futures 0.3.21",9987 "hash-db",9990 "hash-db",9988 "jsonrpsee",9991 "jsonrpsee",9989 "log",9992 "log",9990 "parity-scale-codec 3.1.2",9993 "parity-scale-codec 3.1.5",9991 "parking_lot 0.12.1",9994 "parking_lot 0.12.1",9992 "sc-block-builder",9995 "sc-block-builder",9993 "sc-chain-spec",9996 "sc-chain-spec",10011[[package]]10014[[package]]10012name = "sc-rpc-api"10015name = "sc-rpc-api"10013version = "0.10.0-dev"10016version = "0.10.0-dev"10014source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10017source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10015dependencies = [10018dependencies = [10016 "futures 0.3.21",10019 "futures 0.3.21",10017 "jsonrpsee",10020 "jsonrpsee",10018 "log",10021 "log",10019 "parity-scale-codec 3.1.2",10022 "parity-scale-codec 3.1.5",10020 "parking_lot 0.12.1",10023 "parking_lot 0.12.1",10021 "sc-chain-spec",10024 "sc-chain-spec",10022 "sc-transaction-pool-api",10025 "sc-transaction-pool-api",10034[[package]]10037[[package]]10035name = "sc-rpc-server"10038name = "sc-rpc-server"10036version = "4.0.0-dev"10039version = "4.0.0-dev"10037source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10040source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10038dependencies = [10041dependencies = [10039 "futures 0.3.21",10042 "futures 0.3.21",10040 "jsonrpsee",10043 "jsonrpsee",10047[[package]]10050[[package]]10048name = "sc-service"10051name = "sc-service"10049version = "0.10.0-dev"10052version = "0.10.0-dev"10050source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10053source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10051dependencies = [10054dependencies = [10052 "async-trait",10055 "async-trait",10053 "directories",10056 "directories",10057 "hash-db",10060 "hash-db",10058 "jsonrpsee",10061 "jsonrpsee",10059 "log",10062 "log",10060 "parity-scale-codec 3.1.2",10063 "parity-scale-codec 3.1.5",10061 "parity-util-mem",10064 "parity-util-mem",10062 "parking_lot 0.12.1",10065 "parking_lot 0.12.1",10063 "pin-project 1.0.10",10066 "pin-project 1.0.10",10112[[package]]10115[[package]]10113name = "sc-state-db"10116name = "sc-state-db"10114version = "0.10.0-dev"10117version = "0.10.0-dev"10115source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10118source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10116dependencies = [10119dependencies = [10117 "log",10120 "log",10118 "parity-scale-codec 3.1.2",10121 "parity-scale-codec 3.1.5",10119 "parity-util-mem",10122 "parity-util-mem",10120 "parity-util-mem-derive",10123 "parity-util-mem-derive",10121 "parking_lot 0.12.1",10124 "parking_lot 0.12.1",10126[[package]]10129[[package]]10127name = "sc-sync-state-rpc"10130name = "sc-sync-state-rpc"10128version = "0.10.0-dev"10131version = "0.10.0-dev"10129source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10132source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10130dependencies = [10133dependencies = [10131 "jsonrpsee",10134 "jsonrpsee",10132 "parity-scale-codec 3.1.2",10135 "parity-scale-codec 3.1.5",10133 "sc-chain-spec",10136 "sc-chain-spec",10134 "sc-client-api",10137 "sc-client-api",10135 "sc-consensus-babe",10138 "sc-consensus-babe",10145[[package]]10148[[package]]10146name = "sc-sysinfo"10149name = "sc-sysinfo"10147version = "6.0.0-dev"10150version = "6.0.0-dev"10148source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10151source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10149dependencies = [10152dependencies = [10150 "futures 0.3.21",10153 "futures 0.3.21",10151 "libc",10154 "libc",10164[[package]]10167[[package]]10165name = "sc-telemetry"10168name = "sc-telemetry"10166version = "4.0.0-dev"10169version = "4.0.0-dev"10167source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10170source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10168dependencies = [10171dependencies = [10169 "chrono",10172 "chrono",10170 "futures 0.3.21",10173 "futures 0.3.21",10182[[package]]10185[[package]]10183name = "sc-tracing"10186name = "sc-tracing"10184version = "4.0.0-dev"10187version = "4.0.0-dev"10185source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10188source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10186dependencies = [10189dependencies = [10187 "ansi_term",10190 "ansi_term",10188 "atty",10191 "atty",10213[[package]]10216[[package]]10214name = "sc-tracing-proc-macro"10217name = "sc-tracing-proc-macro"10215version = "4.0.0-dev"10218version = "4.0.0-dev"10216source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10219source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10217dependencies = [10220dependencies = [10218 "proc-macro-crate",10221 "proc-macro-crate",10219 "proc-macro2",10222 "proc-macro2",10224[[package]]10227[[package]]10225name = "sc-transaction-pool"10228name = "sc-transaction-pool"10226version = "4.0.0-dev"10229version = "4.0.0-dev"10227source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10230source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10228dependencies = [10231dependencies = [10229 "futures 0.3.21",10232 "futures 0.3.21",10230 "futures-timer",10233 "futures-timer",10231 "linked-hash-map",10234 "linked-hash-map",10232 "log",10235 "log",10233 "parity-scale-codec 3.1.2",10236 "parity-scale-codec 3.1.5",10234 "parity-util-mem",10237 "parity-util-mem",10235 "parking_lot 0.12.1",10238 "parking_lot 0.12.1",10236 "retain_mut",10239 "retain_mut",10251[[package]]10254[[package]]10252name = "sc-transaction-pool-api"10255name = "sc-transaction-pool-api"10253version = "4.0.0-dev"10256version = "4.0.0-dev"10254source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10257source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10255dependencies = [10258dependencies = [10256 "futures 0.3.21",10259 "futures 0.3.21",10257 "log",10260 "log",10264[[package]]10267[[package]]10265name = "sc-utils"10268name = "sc-utils"10266version = "4.0.0-dev"10269version = "4.0.0-dev"10267source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10270source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10268dependencies = [10271dependencies = [10269 "futures 0.3.21",10272 "futures 0.3.21",10270 "futures-timer",10273 "futures-timer",10283 "bitvec 1.0.0",10286 "bitvec 1.0.0",10284 "cfg-if 1.0.0",10287 "cfg-if 1.0.0",10285 "derive_more",10288 "derive_more",10286 "parity-scale-codec 3.1.2",10289 "parity-scale-codec 3.1.5",10287 "scale-info-derive",10290 "scale-info-derive",10288 "serde",10291 "serde",10289]10292]10630source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"10633source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"10631dependencies = [10634dependencies = [10632 "enumn",10635 "enumn",10633 "parity-scale-codec 3.1.2",10636 "parity-scale-codec 3.1.5",10634 "paste",10637 "paste",10635 "sp-runtime",10638 "sp-runtime",10636 "sp-std",10639 "sp-std",10703[[package]]10706[[package]]10704name = "sp-api"10707name = "sp-api"10705version = "4.0.0-dev"10708version = "4.0.0-dev"10706source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10709source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10707dependencies = [10710dependencies = [10708 "hash-db",10711 "hash-db",10709 "log",10712 "log",10710 "parity-scale-codec 3.1.2",10713 "parity-scale-codec 3.1.5",10711 "sp-api-proc-macro",10714 "sp-api-proc-macro",10712 "sp-core",10715 "sp-core",10713 "sp-runtime",10716 "sp-runtime",10720[[package]]10723[[package]]10721name = "sp-api-proc-macro"10724name = "sp-api-proc-macro"10722version = "4.0.0-dev"10725version = "4.0.0-dev"10723source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10726source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10724dependencies = [10727dependencies = [10725 "blake2",10728 "blake2",10726 "proc-macro-crate",10729 "proc-macro-crate",10732[[package]]10735[[package]]10733name = "sp-application-crypto"10736name = "sp-application-crypto"10734version = "6.0.0"10737version = "6.0.0"10735source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10738source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10736dependencies = [10739dependencies = [10737 "parity-scale-codec 3.1.2",10740 "parity-scale-codec 3.1.5",10738 "scale-info",10741 "scale-info",10739 "serde",10742 "serde",10740 "sp-core",10743 "sp-core",10745[[package]]10748[[package]]10746name = "sp-arithmetic"10749name = "sp-arithmetic"10747version = "5.0.0"10750version = "5.0.0"10748source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10751source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10749dependencies = [10752dependencies = [10750 "integer-sqrt",10753 "integer-sqrt",10751 "num-traits",10754 "num-traits",10752 "parity-scale-codec 3.1.2",10755 "parity-scale-codec 3.1.5",10753 "scale-info",10756 "scale-info",10754 "serde",10757 "serde",10755 "sp-debug-derive",10758 "sp-debug-derive",10760[[package]]10763[[package]]10761name = "sp-authority-discovery"10764name = "sp-authority-discovery"10762version = "4.0.0-dev"10765version = "4.0.0-dev"10763source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10766source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10764dependencies = [10767dependencies = [10765 "parity-scale-codec 3.1.2",10768 "parity-scale-codec 3.1.5",10766 "scale-info",10769 "scale-info",10767 "sp-api",10770 "sp-api",10768 "sp-application-crypto",10771 "sp-application-crypto",10773[[package]]10776[[package]]10774name = "sp-authorship"10777name = "sp-authorship"10775version = "4.0.0-dev"10778version = "4.0.0-dev"10776source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10779source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10777dependencies = [10780dependencies = [10778 "async-trait",10781 "async-trait",10779 "parity-scale-codec 3.1.2",10782 "parity-scale-codec 3.1.5",10780 "sp-inherents",10783 "sp-inherents",10781 "sp-runtime",10784 "sp-runtime",10782 "sp-std",10785 "sp-std",10785[[package]]10788[[package]]10786name = "sp-block-builder"10789name = "sp-block-builder"10787version = "4.0.0-dev"10790version = "4.0.0-dev"10788source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10791source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10789dependencies = [10792dependencies = [10790 "parity-scale-codec 3.1.2",10793 "parity-scale-codec 3.1.5",10791 "sp-api",10794 "sp-api",10792 "sp-inherents",10795 "sp-inherents",10793 "sp-runtime",10796 "sp-runtime",10797[[package]]10800[[package]]10798name = "sp-blockchain"10801name = "sp-blockchain"10799version = "4.0.0-dev"10802version = "4.0.0-dev"10800source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10803source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10801dependencies = [10804dependencies = [10802 "futures 0.3.21",10805 "futures 0.3.21",10803 "log",10806 "log",10804 "lru 0.7.6",10807 "lru 0.7.7",10805 "parity-scale-codec 3.1.2",10808 "parity-scale-codec 3.1.5",10806 "parking_lot 0.12.1",10809 "parking_lot 0.12.1",10807 "sp-api",10810 "sp-api",10808 "sp-consensus",10811 "sp-consensus",10815[[package]]10818[[package]]10816name = "sp-consensus"10819name = "sp-consensus"10817version = "0.10.0-dev"10820version = "0.10.0-dev"10818source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10821source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10819dependencies = [10822dependencies = [10820 "async-trait",10823 "async-trait",10821 "futures 0.3.21",10824 "futures 0.3.21",10822 "futures-timer",10825 "futures-timer",10823 "log",10826 "log",10824 "parity-scale-codec 3.1.2",10827 "parity-scale-codec 3.1.5",10825 "sp-core",10828 "sp-core",10826 "sp-inherents",10829 "sp-inherents",10827 "sp-runtime",10830 "sp-runtime",10834[[package]]10837[[package]]10835name = "sp-consensus-aura"10838name = "sp-consensus-aura"10836version = "0.10.0-dev"10839version = "0.10.0-dev"10837source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10840source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10838dependencies = [10841dependencies = [10839 "async-trait",10842 "async-trait",10840 "parity-scale-codec 3.1.2",10843 "parity-scale-codec 3.1.5",10841 "scale-info",10844 "scale-info",10842 "sp-api",10845 "sp-api",10843 "sp-application-crypto",10846 "sp-application-crypto",10852[[package]]10855[[package]]10853name = "sp-consensus-babe"10856name = "sp-consensus-babe"10854version = "0.10.0-dev"10857version = "0.10.0-dev"10855source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10858source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10856dependencies = [10859dependencies = [10857 "async-trait",10860 "async-trait",10858 "merlin",10861 "merlin",10859 "parity-scale-codec 3.1.2",10862 "parity-scale-codec 3.1.5",10860 "scale-info",10863 "scale-info",10861 "serde",10864 "serde",10862 "sp-api",10865 "sp-api",10875[[package]]10878[[package]]10876name = "sp-consensus-slots"10879name = "sp-consensus-slots"10877version = "0.10.0-dev"10880version = "0.10.0-dev"10878source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10881source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10879dependencies = [10882dependencies = [10880 "parity-scale-codec 3.1.2",10883 "parity-scale-codec 3.1.5",10881 "scale-info",10884 "scale-info",10882 "serde",10885 "serde",10883 "sp-arithmetic",10886 "sp-arithmetic",10889[[package]]10892[[package]]10890name = "sp-consensus-vrf"10893name = "sp-consensus-vrf"10891version = "0.10.0-dev"10894version = "0.10.0-dev"10892source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10895source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10893dependencies = [10896dependencies = [10894 "parity-scale-codec 3.1.2",10897 "parity-scale-codec 3.1.5",10895 "scale-info",10898 "scale-info",10896 "schnorrkel",10899 "schnorrkel",10897 "sp-core",10900 "sp-core",10902[[package]]10905[[package]]10903name = "sp-core"10906name = "sp-core"10904version = "6.0.0"10907version = "6.0.0"10905source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10908source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10906dependencies = [10909dependencies = [10907 "base58",10910 "base58",10908 "bitflags",10911 "bitflags",10920 "log",10923 "log",10921 "merlin",10924 "merlin",10922 "num-traits",10925 "num-traits",10923 "parity-scale-codec 3.1.2",10926 "parity-scale-codec 3.1.5",10924 "parity-util-mem",10927 "parity-util-mem",10925 "parking_lot 0.12.1",10928 "parking_lot 0.12.1",10926 "primitive-types",10929 "primitive-types",10948[[package]]10951[[package]]10949name = "sp-core-hashing"10952name = "sp-core-hashing"10950version = "4.0.0"10953version = "4.0.0"10951source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10954source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10952dependencies = [10955dependencies = [10953 "blake2",10956 "blake2",10954 "byteorder",10957 "byteorder",10962[[package]]10965[[package]]10963name = "sp-core-hashing-proc-macro"10966name = "sp-core-hashing-proc-macro"10964version = "5.0.0"10967version = "5.0.0"10965source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10968source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10966dependencies = [10969dependencies = [10967 "proc-macro2",10970 "proc-macro2",10968 "quote",10971 "quote",10973[[package]]10976[[package]]10974name = "sp-database"10977name = "sp-database"10975version = "4.0.0-dev"10978version = "4.0.0-dev"10976source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10979source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10977dependencies = [10980dependencies = [10978 "kvdb",10981 "kvdb",10979 "parking_lot 0.12.1",10982 "parking_lot 0.12.1",10982[[package]]10985[[package]]10983name = "sp-debug-derive"10986name = "sp-debug-derive"10984version = "4.0.0"10987version = "4.0.0"10985source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10988source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10986dependencies = [10989dependencies = [10987 "proc-macro2",10990 "proc-macro2",10988 "quote",10991 "quote",10992[[package]]10995[[package]]10993name = "sp-externalities"10996name = "sp-externalities"10994version = "0.12.0"10997version = "0.12.0"10995source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10998source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"10996dependencies = [10999dependencies = [10997 "environmental",11000 "environmental",10998 "parity-scale-codec 3.1.2",11001 "parity-scale-codec 3.1.5",10999 "sp-std",11002 "sp-std",11000 "sp-storage",11003 "sp-storage",11001]11004]110021100511003[[package]]11006[[package]]11004name = "sp-finality-grandpa"11007name = "sp-finality-grandpa"11005version = "4.0.0-dev"11008version = "4.0.0-dev"11006source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11009source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11007dependencies = [11010dependencies = [11008 "finality-grandpa",11011 "finality-grandpa",11009 "log",11012 "log",11010 "parity-scale-codec 3.1.2",11013 "parity-scale-codec 3.1.5",11011 "scale-info",11014 "scale-info",11012 "serde",11015 "serde",11013 "sp-api",11016 "sp-api",11021[[package]]11024[[package]]11022name = "sp-inherents"11025name = "sp-inherents"11023version = "4.0.0-dev"11026version = "4.0.0-dev"11024source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11027source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11025dependencies = [11028dependencies = [11026 "async-trait",11029 "async-trait",11027 "impl-trait-for-tuples",11030 "impl-trait-for-tuples",11028 "parity-scale-codec 3.1.2",11031 "parity-scale-codec 3.1.5",11029 "sp-core",11032 "sp-core",11030 "sp-runtime",11033 "sp-runtime",11031 "sp-std",11034 "sp-std",11035[[package]]11038[[package]]11036name = "sp-io"11039name = "sp-io"11037version = "6.0.0"11040version = "6.0.0"11038source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11041source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11039dependencies = [11042dependencies = [11040 "futures 0.3.21",11043 "futures 0.3.21",11041 "hash-db",11044 "hash-db",11042 "libsecp256k1",11045 "libsecp256k1",11043 "log",11046 "log",11044 "parity-scale-codec 3.1.2",11047 "parity-scale-codec 3.1.5",11045 "parking_lot 0.12.1",11048 "parking_lot 0.12.1",11046 "secp256k1",11049 "secp256k1",11047 "sp-core",11050 "sp-core",11060[[package]]11063[[package]]11061name = "sp-keyring"11064name = "sp-keyring"11062version = "6.0.0"11065version = "6.0.0"11063source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11066source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11064dependencies = [11067dependencies = [11065 "lazy_static",11068 "lazy_static",11066 "sp-core",11069 "sp-core",11071[[package]]11074[[package]]11072name = "sp-keystore"11075name = "sp-keystore"11073version = "0.12.0"11076version = "0.12.0"11074source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11077source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11075dependencies = [11078dependencies = [11076 "async-trait",11079 "async-trait",11077 "futures 0.3.21",11080 "futures 0.3.21",11078 "merlin",11081 "merlin",11079 "parity-scale-codec 3.1.2",11082 "parity-scale-codec 3.1.5",11080 "parking_lot 0.12.1",11083 "parking_lot 0.12.1",11081 "schnorrkel",11084 "schnorrkel",11082 "serde",11085 "serde",11088[[package]]11091[[package]]11089name = "sp-maybe-compressed-blob"11092name = "sp-maybe-compressed-blob"11090version = "4.1.0-dev"11093version = "4.1.0-dev"11091source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11094source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11092dependencies = [11095dependencies = [11093 "thiserror",11096 "thiserror",11094 "zstd",11097 "zstd",11097[[package]]11100[[package]]11098name = "sp-mmr-primitives"11101name = "sp-mmr-primitives"11099version = "4.0.0-dev"11102version = "4.0.0-dev"11100source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11103source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11101dependencies = [11104dependencies = [11102 "log",11105 "log",11103 "parity-scale-codec 3.1.2",11106 "parity-scale-codec 3.1.5",11104 "serde",11107 "serde",11105 "sp-api",11108 "sp-api",11106 "sp-core",11109 "sp-core",11112[[package]]11115[[package]]11113name = "sp-npos-elections"11116name = "sp-npos-elections"11114version = "4.0.0-dev"11117version = "4.0.0-dev"11115source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11118source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11116dependencies = [11119dependencies = [11117 "parity-scale-codec 3.1.2",11120 "parity-scale-codec 3.1.5",11118 "scale-info",11121 "scale-info",11119 "serde",11122 "serde",11120 "sp-arithmetic",11123 "sp-arithmetic",11126[[package]]11129[[package]]11127name = "sp-offchain"11130name = "sp-offchain"11128version = "4.0.0-dev"11131version = "4.0.0-dev"11129source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11132source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11130dependencies = [11133dependencies = [11131 "sp-api",11134 "sp-api",11132 "sp-core",11135 "sp-core",11136[[package]]11139[[package]]11137name = "sp-panic-handler"11140name = "sp-panic-handler"11138version = "4.0.0"11141version = "4.0.0"11139source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11142source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11140dependencies = [11143dependencies = [11141 "backtrace",11144 "backtrace",11142 "lazy_static",11145 "lazy_static",11146[[package]]11149[[package]]11147name = "sp-rpc"11150name = "sp-rpc"11148version = "6.0.0"11151version = "6.0.0"11149source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11152source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11150dependencies = [11153dependencies = [11151 "rustc-hash",11154 "rustc-hash",11152 "serde",11155 "serde",11156[[package]]11159[[package]]11157name = "sp-runtime"11160name = "sp-runtime"11158version = "6.0.0"11161version = "6.0.0"11159source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11162source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11160dependencies = [11163dependencies = [11161 "either",11164 "either",11162 "hash256-std-hasher",11165 "hash256-std-hasher",11163 "impl-trait-for-tuples",11166 "impl-trait-for-tuples",11164 "log",11167 "log",11165 "parity-scale-codec 3.1.2",11168 "parity-scale-codec 3.1.5",11166 "parity-util-mem",11169 "parity-util-mem",11167 "paste",11170 "paste",11168 "rand 0.7.3",11171 "rand 0.7.3",11178[[package]]11181[[package]]11179name = "sp-runtime-interface"11182name = "sp-runtime-interface"11180version = "6.0.0"11183version = "6.0.0"11181source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11184source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11182dependencies = [11185dependencies = [11183 "impl-trait-for-tuples",11186 "impl-trait-for-tuples",11184 "parity-scale-codec 3.1.2",11187 "parity-scale-codec 3.1.5",11185 "primitive-types",11188 "primitive-types",11186 "sp-externalities",11189 "sp-externalities",11187 "sp-runtime-interface-proc-macro",11190 "sp-runtime-interface-proc-macro",11195[[package]]11198[[package]]11196name = "sp-runtime-interface-proc-macro"11199name = "sp-runtime-interface-proc-macro"11197version = "5.0.0"11200version = "5.0.0"11198source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11201source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11199dependencies = [11202dependencies = [11200 "Inflector",11203 "Inflector",11201 "proc-macro-crate",11204 "proc-macro-crate",11207[[package]]11210[[package]]11208name = "sp-sandbox"11211name = "sp-sandbox"11209version = "0.10.0-dev"11212version = "0.10.0-dev"11210source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11213source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11211dependencies = [11214dependencies = [11212 "log",11215 "log",11213 "parity-scale-codec 3.1.2",11216 "parity-scale-codec 3.1.5",11214 "sp-core",11217 "sp-core",11215 "sp-io",11218 "sp-io",11216 "sp-std",11219 "sp-std",11221[[package]]11224[[package]]11222name = "sp-serializer"11225name = "sp-serializer"11223version = "4.0.0-dev"11226version = "4.0.0-dev"11224source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11227source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11225dependencies = [11228dependencies = [11226 "serde",11229 "serde",11227 "serde_json",11230 "serde_json",11230[[package]]11233[[package]]11231name = "sp-session"11234name = "sp-session"11232version = "4.0.0-dev"11235version = "4.0.0-dev"11233source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11236source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11234dependencies = [11237dependencies = [11235 "parity-scale-codec 3.1.2",11238 "parity-scale-codec 3.1.5",11236 "scale-info",11239 "scale-info",11237 "sp-api",11240 "sp-api",11238 "sp-core",11241 "sp-core",11244[[package]]11247[[package]]11245name = "sp-staking"11248name = "sp-staking"11246version = "4.0.0-dev"11249version = "4.0.0-dev"11247source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11250source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11248dependencies = [11251dependencies = [11249 "parity-scale-codec 3.1.2",11252 "parity-scale-codec 3.1.5",11250 "scale-info",11253 "scale-info",11251 "sp-runtime",11254 "sp-runtime",11252 "sp-std",11255 "sp-std",11255[[package]]11258[[package]]11256name = "sp-state-machine"11259name = "sp-state-machine"11257version = "0.12.0"11260version = "0.12.0"11258source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11261source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11259dependencies = [11262dependencies = [11260 "hash-db",11263 "hash-db",11261 "log",11264 "log",11262 "num-traits",11265 "num-traits",11263 "parity-scale-codec 3.1.2",11266 "parity-scale-codec 3.1.5",11264 "parking_lot 0.12.1",11267 "parking_lot 0.12.1",11265 "rand 0.7.3",11268 "rand 0.7.3",11266 "smallvec",11269 "smallvec",11277[[package]]11280[[package]]11278name = "sp-std"11281name = "sp-std"11279version = "4.0.0"11282version = "4.0.0"11280source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11283source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"112811128411282[[package]]11285[[package]]11283name = "sp-storage"11286name = "sp-storage"11284version = "6.0.0"11287version = "6.0.0"11285source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11288source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11286dependencies = [11289dependencies = [11287 "impl-serde",11290 "impl-serde",11288 "parity-scale-codec 3.1.2",11291 "parity-scale-codec 3.1.5",11289 "ref-cast",11292 "ref-cast",11290 "serde",11293 "serde",11291 "sp-debug-derive",11294 "sp-debug-derive",11295[[package]]11298[[package]]11296name = "sp-tasks"11299name = "sp-tasks"11297version = "4.0.0-dev"11300version = "4.0.0-dev"11298source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11301source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11299dependencies = [11302dependencies = [11300 "log",11303 "log",11301 "sp-core",11304 "sp-core",11308[[package]]11311[[package]]11309name = "sp-timestamp"11312name = "sp-timestamp"11310version = "4.0.0-dev"11313version = "4.0.0-dev"11311source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11314source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11312dependencies = [11315dependencies = [11313 "async-trait",11316 "async-trait",11314 "futures-timer",11317 "futures-timer",11315 "log",11318 "log",11316 "parity-scale-codec 3.1.2",11319 "parity-scale-codec 3.1.5",11317 "sp-api",11320 "sp-api",11318 "sp-inherents",11321 "sp-inherents",11319 "sp-runtime",11322 "sp-runtime",11324[[package]]11327[[package]]11325name = "sp-tracing"11328name = "sp-tracing"11326version = "5.0.0"11329version = "5.0.0"11327source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11330source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11328dependencies = [11331dependencies = [11329 "parity-scale-codec 3.1.2",11332 "parity-scale-codec 3.1.5",11330 "sp-std",11333 "sp-std",11331 "tracing",11334 "tracing",11332 "tracing-core",11335 "tracing-core",11336[[package]]11339[[package]]11337name = "sp-transaction-pool"11340name = "sp-transaction-pool"11338version = "4.0.0-dev"11341version = "4.0.0-dev"11339source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11342source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11340dependencies = [11343dependencies = [11341 "sp-api",11344 "sp-api",11342 "sp-runtime",11345 "sp-runtime",11345[[package]]11348[[package]]11346name = "sp-transaction-storage-proof"11349name = "sp-transaction-storage-proof"11347version = "4.0.0-dev"11350version = "4.0.0-dev"11348source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11351source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11349dependencies = [11352dependencies = [11350 "async-trait",11353 "async-trait",11351 "log",11354 "log",11352 "parity-scale-codec 3.1.2",11355 "parity-scale-codec 3.1.5",11353 "scale-info",11356 "scale-info",11354 "sp-core",11357 "sp-core",11355 "sp-inherents",11358 "sp-inherents",11361[[package]]11364[[package]]11362name = "sp-trie"11365name = "sp-trie"11363version = "6.0.0"11366version = "6.0.0"11364source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11367source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11365dependencies = [11368dependencies = [11366 "hash-db",11369 "hash-db",11367 "memory-db",11370 "memory-db",11368 "parity-scale-codec 3.1.2",11371 "parity-scale-codec 3.1.5",11369 "scale-info",11372 "scale-info",11370 "sp-core",11373 "sp-core",11371 "sp-std",11374 "sp-std",11377[[package]]11380[[package]]11378name = "sp-version"11381name = "sp-version"11379version = "5.0.0"11382version = "5.0.0"11380source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11383source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11381dependencies = [11384dependencies = [11382 "impl-serde",11385 "impl-serde",11383 "parity-scale-codec 3.1.2",11386 "parity-scale-codec 3.1.5",11384 "parity-wasm 0.42.2",11387 "parity-wasm 0.42.2",11385 "scale-info",11388 "scale-info",11386 "serde",11389 "serde",11394[[package]]11397[[package]]11395name = "sp-version-proc-macro"11398name = "sp-version-proc-macro"11396version = "4.0.0-dev"11399version = "4.0.0-dev"11397source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11400source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11398dependencies = [11401dependencies = [11399 "parity-scale-codec 3.1.2",11402 "parity-scale-codec 3.1.5",11400 "proc-macro2",11403 "proc-macro2",11401 "quote",11404 "quote",11402 "syn",11405 "syn",11405[[package]]11408[[package]]11406name = "sp-wasm-interface"11409name = "sp-wasm-interface"11407version = "6.0.0"11410version = "6.0.0"11408source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11411source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11409dependencies = [11412dependencies = [11410 "impl-trait-for-tuples",11413 "impl-trait-for-tuples",11411 "log",11414 "log",11412 "parity-scale-codec 3.1.2",11415 "parity-scale-codec 3.1.5",11413 "sp-std",11416 "sp-std",11414 "wasmi",11417 "wasmi",11415 "wasmtime",11418 "wasmtime",115111151411512[[package]]11515[[package]]11513name = "strum"11516name = "strum"11514version = "0.24.0"11517version = "0.24.1"11515source = "registry+https://github.com/rust-lang/crates.io-index"11518source = "registry+https://github.com/rust-lang/crates.io-index"11516checksum = "e96acfc1b70604b8b2f1ffa4c57e59176c7dbb05d556c71ecd2f5498a1dee7f8"11519checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"11517dependencies = [11520dependencies = [11518 "strum_macros 0.24.0",11521 "strum_macros 0.24.0",11519]11522]11560[[package]]11563[[package]]11561name = "substrate-build-script-utils"11564name = "substrate-build-script-utils"11562version = "3.0.0"11565version = "3.0.0"11563source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11566source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11564dependencies = [11567dependencies = [11565 "platforms",11568 "platforms",11566]11569]115671157011568[[package]]11571[[package]]11569name = "substrate-frame-rpc-system"11572name = "substrate-frame-rpc-system"11570version = "4.0.0-dev"11573version = "4.0.0-dev"11571source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11574source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11572dependencies = [11575dependencies = [11573 "frame-system-rpc-runtime-api",11576 "frame-system-rpc-runtime-api",11574 "futures 0.3.21",11577 "futures 0.3.21",11575 "jsonrpsee",11578 "jsonrpsee",11576 "log",11579 "log",11577 "parity-scale-codec 3.1.2",11580 "parity-scale-codec 3.1.5",11578 "sc-client-api",11581 "sc-client-api",11579 "sc-rpc-api",11582 "sc-rpc-api",11580 "sc-transaction-pool-api",11583 "sc-transaction-pool-api",11589[[package]]11592[[package]]11590name = "substrate-prometheus-endpoint"11593name = "substrate-prometheus-endpoint"11591version = "0.10.0-dev"11594version = "0.10.0-dev"11592source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11595source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11593dependencies = [11596dependencies = [11594 "futures-util",11597 "futures-util",11595 "hyper",11598 "hyper",11602[[package]]11605[[package]]11603name = "substrate-state-trie-migration-rpc"11606name = "substrate-state-trie-migration-rpc"11604version = "4.0.0-dev"11607version = "4.0.0-dev"11605source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11608source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11606dependencies = [11609dependencies = [11607 "jsonrpsee",11610 "jsonrpsee",11608 "log",11611 "log",11609 "parity-scale-codec 3.1.2",11612 "parity-scale-codec 3.1.5",11610 "sc-client-api",11613 "sc-client-api",11611 "sc-rpc-api",11614 "sc-rpc-api",11612 "scale-info",11615 "scale-info",11623[[package]]11626[[package]]11624name = "substrate-test-client"11627name = "substrate-test-client"11625version = "2.0.1"11628version = "2.0.1"11626source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11629source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11627dependencies = [11630dependencies = [11628 "async-trait",11631 "async-trait",11629 "futures 0.3.21",11632 "futures 0.3.21",11630 "hex",11633 "hex",11631 "parity-scale-codec 3.1.2",11634 "parity-scale-codec 3.1.5",11632 "sc-client-api",11635 "sc-client-api",11633 "sc-client-db",11636 "sc-client-db",11634 "sc-consensus",11637 "sc-consensus",11649[[package]]11652[[package]]11650name = "substrate-test-utils"11653name = "substrate-test-utils"11651version = "4.0.0-dev"11654version = "4.0.0-dev"11652source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11655source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11653dependencies = [11656dependencies = [11654 "futures 0.3.21",11657 "futures 0.3.21",11655 "substrate-test-utils-derive",11658 "substrate-test-utils-derive",11659[[package]]11662[[package]]11660name = "substrate-test-utils-derive"11663name = "substrate-test-utils-derive"11661version = "0.10.0-dev"11664version = "0.10.0-dev"11662source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11665source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11663dependencies = [11666dependencies = [11664 "proc-macro-crate",11667 "proc-macro-crate",11665 "proc-macro2",11668 "proc-macro2",11670[[package]]11673[[package]]11671name = "substrate-wasm-builder"11674name = "substrate-wasm-builder"11672version = "5.0.0-dev"11675version = "5.0.0-dev"11673source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11676source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"11674dependencies = [11677dependencies = [11675 "ansi_term",11678 "ansi_term",11676 "build-helper",11679 "build-helper",116911169411692[[package]]11695[[package]]11693name = "syn"11696name = "syn"11694version = "1.0.96"11697version = "1.0.98"11695source = "registry+https://github.com/rust-lang/crates.io-index"11698source = "registry+https://github.com/rust-lang/crates.io-index"11696checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf"11699checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"11697dependencies = [11700dependencies = [11698 "proc-macro2",11701 "proc-macro2",11699 "quote",11702 "quote",11799 "pallet-timestamp",11802 "pallet-timestamp",11800 "pallet-transaction-payment",11803 "pallet-transaction-payment",11801 "pallet-unique",11804 "pallet-unique",11802 "parity-scale-codec 3.1.2",11805 "parity-scale-codec 3.1.5",11803 "scale-info",11806 "scale-info",11804 "sp-core",11807 "sp-core",11805 "sp-io",11808 "sp-io",120281203112029[[package]]12032[[package]]12030name = "tower-service"12033name = "tower-service"12031version = "0.3.1"12034version = "0.3.2"12032source = "registry+https://github.com/rust-lang/crates.io-index"12035source = "registry+https://github.com/rust-lang/crates.io-index"12033checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"12036checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"120341203712035[[package]]12038[[package]]12036name = "tracing"12039name = "tracing"12107 "ahash",12110 "ahash",12108 "lazy_static",12111 "lazy_static",12109 "log",12112 "log",12110 "lru 0.7.6",12113 "lru 0.7.7",12111 "tracing-core",12114 "tracing-core",12112]12115]121131211612228[[package]]12231[[package]]12229name = "try-runtime-cli"12232name = "try-runtime-cli"12230version = "0.10.0-dev"12233version = "0.10.0-dev"12231source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"12234source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"12232dependencies = [12235dependencies = [12233 "clap",12236 "clap",12234 "jsonrpsee",12237 "jsonrpsee",12235 "log",12238 "log",12236 "parity-scale-codec 3.1.2",12239 "parity-scale-codec 3.1.5",12237 "remote-externalities",12240 "remote-externalities",12238 "sc-chain-spec",12241 "sc-chain-spec",12239 "sc-cli",12242 "sc-cli",12282 "jsonrpsee",12285 "jsonrpsee",12283 "pallet-common",12286 "pallet-common",12284 "pallet-evm",12287 "pallet-evm",12285 "parity-scale-codec 3.1.2",12288 "parity-scale-codec 3.1.5",12286 "rmrk-rpc",12289 "rmrk-rpc",12287 "sp-api",12290 "sp-api",12288 "sp-blockchain",12291 "sp-blockchain",123291233212330[[package]]12333[[package]]12331name = "unicode-ident"12334name = "unicode-ident"12332version = "1.0.0"12335version = "1.0.1"12333source = "registry+https://github.com/rust-lang/crates.io-index"12336source = "registry+https://github.com/rust-lang/crates.io-index"12334checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"12337checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"123351233812336[[package]]12339[[package]]12337name = "unicode-normalization"12340name = "unicode-normalization"123621236512363[[package]]12366[[package]]12364name = "unique-node"12367name = "unique-node"12365version = "0.9.22"12368version = "0.9.23"12366dependencies = [12369dependencies = [12367 "clap",12370 "clap",12368 "cumulus-client-cli",12371 "cumulus-client-cli",12392 "pallet-ethereum",12395 "pallet-ethereum",12393 "pallet-transaction-payment-rpc",12396 "pallet-transaction-payment-rpc",12394 "pallet-transaction-payment-rpc-runtime-api",12397 "pallet-transaction-payment-rpc-runtime-api",12395 "parity-scale-codec 3.1.2",12398 "parity-scale-codec 3.1.5",12396 "parking_lot 0.11.2",12399 "parking_lot 0.11.2",12397 "polkadot-cli",12400 "polkadot-cli",12398 "polkadot-parachain",12401 "polkadot-parachain",124991250212500[[package]]12503[[package]]12501name = "unique-runtime"12504name = "unique-runtime"12502version = "0.9.22"12505version = "0.9.23"12503dependencies = [12506dependencies = [12504 "cumulus-pallet-aura-ext",12507 "cumulus-pallet-aura-ext",12505 "cumulus-pallet-dmp-queue",12508 "cumulus-pallet-dmp-queue",12548 "pallet-transaction-payment-rpc-runtime-api",12551 "pallet-transaction-payment-rpc-runtime-api",12549 "pallet-treasury",12552 "pallet-treasury",12550 "pallet-unique",12553 "pallet-unique",12551 "pallet-unq-scheduler",12554 "pallet-unique-scheduler",12552 "pallet-xcm",12555 "pallet-xcm",12553 "parachain-info",12556 "parachain-info",12554 "parity-scale-codec 3.1.2",12557 "parity-scale-codec 3.1.5",12555 "polkadot-parachain",12558 "polkadot-parachain",12556 "rmrk-rpc",12559 "rmrk-rpc",12557 "scale-info",12560 "scale-info",125811258412582[[package]]12585[[package]]12583name = "unique-runtime-common"12586name = "unique-runtime-common"12584version = "0.9.22"12587version = "0.9.23"12585dependencies = [12588dependencies = [12586 "evm-coder",12589 "evm-coder",12587 "fp-rpc",12590 "fp-rpc",12593 "pallet-nonfungible",12596 "pallet-nonfungible",12594 "pallet-refungible",12597 "pallet-refungible",12595 "pallet-unique",12598 "pallet-unique",12596 "parity-scale-codec 3.1.2",12599 "pallet-unique-scheduler",12600 "parity-scale-codec 3.1.5",12597 "rmrk-rpc",12601 "rmrk-rpc",12598 "scale-info",12602 "scale-info",12599 "sp-consensus-aura",12603 "sp-consensus-aura",12640 "frame-support",12644 "frame-support",12641 "frame-system",12645 "frame-system",12642 "pallet-evm",12646 "pallet-evm",12643 "parity-scale-codec 3.1.2",12647 "parity-scale-codec 3.1.5",12644 "rmrk-traits",12648 "rmrk-traits",12645 "scale-info",12649 "scale-info",12646 "serde",12650 "serde",12656dependencies = [12660dependencies = [12657 "pallet-common",12661 "pallet-common",12658 "pallet-evm",12662 "pallet-evm",12659 "parity-scale-codec 3.1.2",12663 "parity-scale-codec 3.1.5",12660 "sp-api",12664 "sp-api",12661 "sp-core",12665 "sp-core",12662 "sp-runtime",12666 "sp-runtime",127651276912766[[package]]12770[[package]]12767name = "wasm-bindgen"12771name = "wasm-bindgen"12768version = "0.2.80"12772version = "0.2.81"12769source = "registry+https://github.com/rust-lang/crates.io-index"12773source = "registry+https://github.com/rust-lang/crates.io-index"12770checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"12774checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"12771dependencies = [12775dependencies = [12772 "cfg-if 1.0.0",12776 "cfg-if 1.0.0",12773 "wasm-bindgen-macro",12777 "wasm-bindgen-macro",12774]12778]127751277912776[[package]]12780[[package]]12777name = "wasm-bindgen-backend"12781name = "wasm-bindgen-backend"12778version = "0.2.80"12782version = "0.2.81"12779source = "registry+https://github.com/rust-lang/crates.io-index"12783source = "registry+https://github.com/rust-lang/crates.io-index"12780checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"12784checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"12781dependencies = [12785dependencies = [12782 "bumpalo",12786 "bumpalo",12783 "lazy_static",12787 "lazy_static",127901279412791[[package]]12795[[package]]12792name = "wasm-bindgen-futures"12796name = "wasm-bindgen-futures"12793version = "0.4.30"12797version = "0.4.31"12794source = "registry+https://github.com/rust-lang/crates.io-index"12798source = "registry+https://github.com/rust-lang/crates.io-index"12795checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2"12799checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f"12796dependencies = [12800dependencies = [12797 "cfg-if 1.0.0",12801 "cfg-if 1.0.0",12798 "js-sys",12802 "js-sys",128021280612803[[package]]12807[[package]]12804name = "wasm-bindgen-macro"12808name = "wasm-bindgen-macro"12805version = "0.2.80"12809version = "0.2.81"12806source = "registry+https://github.com/rust-lang/crates.io-index"12810source = "registry+https://github.com/rust-lang/crates.io-index"12807checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"12811checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"12808dependencies = [12812dependencies = [12809 "quote",12813 "quote",12810 "wasm-bindgen-macro-support",12814 "wasm-bindgen-macro-support",12811]12815]128121281612813[[package]]12817[[package]]12814name = "wasm-bindgen-macro-support"12818name = "wasm-bindgen-macro-support"12815version = "0.2.80"12819version = "0.2.81"12816source = "registry+https://github.com/rust-lang/crates.io-index"12820source = "registry+https://github.com/rust-lang/crates.io-index"12817checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"12821checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"12818dependencies = [12822dependencies = [12819 "proc-macro2",12823 "proc-macro2",12820 "quote",12824 "quote",128251282912826[[package]]12830[[package]]12827name = "wasm-bindgen-shared"12831name = "wasm-bindgen-shared"12828version = "0.2.80"12832version = "0.2.81"12829source = "registry+https://github.com/rust-lang/crates.io-index"12833source = "registry+https://github.com/rust-lang/crates.io-index"12830checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"12834checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"128311283512832[[package]]12836[[package]]12833name = "wasm-gc-api"12837name = "wasm-gc-api"130651306913066[[package]]13070[[package]]13067name = "web-sys"13071name = "web-sys"13068version = "0.3.57"13072version = "0.3.58"13069source = "registry+https://github.com/rust-lang/crates.io-index"13073source = "registry+https://github.com/rust-lang/crates.io-index"13070checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"13074checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90"13071dependencies = [13075dependencies = [13072 "js-sys",13076 "js-sys",13073 "wasm-bindgen",13077 "wasm-bindgen",13157 "pallet-vesting",13161 "pallet-vesting",13158 "pallet-xcm",13162 "pallet-xcm",13159 "pallet-xcm-benchmarks",13163 "pallet-xcm-benchmarks",13160 "parity-scale-codec 3.1.2",13164 "parity-scale-codec 3.1.5",13161 "polkadot-parachain",13165 "polkadot-parachain",13162 "polkadot-primitives",13166 "polkadot-primitives",13163 "polkadot-runtime-common",13167 "polkadot-runtime-common",132521325613253[[package]]13257[[package]]13254name = "windows"13258name = "windows"13255version = "0.29.0"13259version = "0.34.0"13256source = "registry+https://github.com/rust-lang/crates.io-index"13260source = "registry+https://github.com/rust-lang/crates.io-index"13257checksum = "aac7fef12f4b59cd0a29339406cc9203ab44e440ddff6b3f5a41455349fa9cf3"13261checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f"13258dependencies = [13262dependencies = [13259 "windows_aarch64_msvc 0.29.0",13263 "windows_aarch64_msvc 0.34.0",13260 "windows_i686_gnu 0.29.0",13264 "windows_i686_gnu 0.34.0",13261 "windows_i686_msvc 0.29.0",13265 "windows_i686_msvc 0.34.0",13262 "windows_x86_64_gnu 0.29.0",13266 "windows_x86_64_gnu 0.34.0",13263 "windows_x86_64_msvc 0.29.0",13267 "windows_x86_64_msvc 0.34.0",13264]13268]132651326913266[[package]]13270[[package]]132781328213279[[package]]13283[[package]]13280name = "windows_aarch64_msvc"13284name = "windows_aarch64_msvc"13281version = "0.29.0"13285version = "0.34.0"13282source = "registry+https://github.com/rust-lang/crates.io-index"13286source = "registry+https://github.com/rust-lang/crates.io-index"13283checksum = "c3d027175d00b01e0cbeb97d6ab6ebe03b12330a35786cbaca5252b1c4bf5d9b"13287checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d"132841328813285[[package]]13289[[package]]13286name = "windows_aarch64_msvc"13290name = "windows_aarch64_msvc"132901329413291[[package]]13295[[package]]13292name = "windows_i686_gnu"13296name = "windows_i686_gnu"13293version = "0.29.0"13297version = "0.34.0"13294source = "registry+https://github.com/rust-lang/crates.io-index"13298source = "registry+https://github.com/rust-lang/crates.io-index"13295checksum = "8793f59f7b8e8b01eda1a652b2697d87b93097198ae85f823b969ca5b89bba58"13299checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed"132961330013297[[package]]13301[[package]]13298name = "windows_i686_gnu"13302name = "windows_i686_gnu"133021330613303[[package]]13307[[package]]13304name = "windows_i686_msvc"13308name = "windows_i686_msvc"13305version = "0.29.0"13309version = "0.34.0"13306source = "registry+https://github.com/rust-lang/crates.io-index"13310source = "registry+https://github.com/rust-lang/crates.io-index"13307checksum = "8602f6c418b67024be2996c512f5f995de3ba417f4c75af68401ab8756796ae4"13311checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956"133081331213309[[package]]13313[[package]]13310name = "windows_i686_msvc"13314name = "windows_i686_msvc"133141331813315[[package]]13319[[package]]13316name = "windows_x86_64_gnu"13320name = "windows_x86_64_gnu"13317version = "0.29.0"13321version = "0.34.0"13318source = "registry+https://github.com/rust-lang/crates.io-index"13322source = "registry+https://github.com/rust-lang/crates.io-index"13319checksum = "f3d615f419543e0bd7d2b3323af0d86ff19cbc4f816e6453f36a2c2ce889c354"13323checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4"133201332413321[[package]]13325[[package]]13322name = "windows_x86_64_gnu"13326name = "windows_x86_64_gnu"133261333013327[[package]]13331[[package]]13328name = "windows_x86_64_msvc"13332name = "windows_x86_64_msvc"13329version = "0.29.0"13333version = "0.34.0"13330source = "registry+https://github.com/rust-lang/crates.io-index"13334source = "registry+https://github.com/rust-lang/crates.io-index"13331checksum = "11d95421d9ed3672c280884da53201a5c46b7b2765ca6faf34b0d71cf34a3561"13335checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9"133321333613333[[package]]13337[[package]]13334name = "windows_x86_64_msvc"13338name = "windows_x86_64_msvc"13379 "derivative",13383 "derivative",13380 "impl-trait-for-tuples",13384 "impl-trait-for-tuples",13381 "log",13385 "log",13382 "parity-scale-codec 3.1.2",13386 "parity-scale-codec 3.1.5",13383 "scale-info",13387 "scale-info",13384 "xcm-procedural",13388 "xcm-procedural",13385]13389]13393 "frame-system",13397 "frame-system",13394 "log",13398 "log",13395 "pallet-transaction-payment",13399 "pallet-transaction-payment",13396 "parity-scale-codec 3.1.2",13400 "parity-scale-codec 3.1.5",13397 "polkadot-parachain",13401 "polkadot-parachain",13398 "scale-info",13402 "scale-info",13399 "sp-arithmetic",13403 "sp-arithmetic",13413 "frame-support",13417 "frame-support",13414 "impl-trait-for-tuples",13418 "impl-trait-for-tuples",13415 "log",13419 "log",13416 "parity-scale-codec 3.1.2",13420 "parity-scale-codec 3.1.5",13417 "sp-arithmetic",13421 "sp-arithmetic",13418 "sp-core",13422 "sp-core",13419 "sp-io",13423 "sp-io",Makefilediffbeforeafterboth595960.PHONY: _bench60.PHONY: _bench61_bench:61_bench:62 cargo run --release --features runtime-benchmarks,unique-runtime -- \62 cargo run --release --features runtime-benchmarks,$(RUNTIME) -- \63 benchmark pallet --pallet pallet-$(PALLET) \63 benchmark pallet --pallet pallet-$(if $(PALLET),$(PALLET),$(error Must set PALLET)) \64 --wasm-execution compiled --extrinsic '*' \64 --wasm-execution compiled --extrinsic '*' \65 --template .maintain/frame-weight-template.hbs --steps=50 --repeat=200 --heap-pages=4096 \65 --template .maintain/frame-weight-template.hbs --steps=50 --repeat=80 --heap-pages=4096 \66 --output=./pallets/$(PALLET)/src/weights.rs66 --output=./pallets/$(if $(PALLET_DIR),$(PALLET_DIR),$(PALLET))/src/weights.rs676768.PHONY: bench-evm-migration68.PHONY: bench-evm-migration69bench-evm-migration:69bench-evm-migration:93bench-structure:93bench-structure:94 make _bench PALLET=structure94 make _bench PALLET=structure9596.PHONY: bench-scheduler97bench-scheduler:98 make _bench PALLET=unique-scheduler PALLET_DIR=scheduler959996.PHONY: bench-rmrk-core100.PHONY: bench-rmrk-core97bench-rmrk-core:101bench-rmrk-core:98 make _bench PALLET=proxy-rmrk-core102 make _bench PALLET=proxy-rmrk-core103104.PHONY: bench-rmrk-equip105bench-rmrk-equip:106 make _bench PALLET=proxy-rmrk-equip99107100.PHONY: bench108.PHONY: bench101bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-rmrk-core109bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip102110node/cli/Cargo.tomldiffbeforeafterboth291license = 'GPLv3'291license = 'GPLv3'292name = 'unique-node'292name = 'unique-node'293repository = 'https://github.com/UniqueNetwork/unique-chain'293repository = 'https://github.com/UniqueNetwork/unique-chain'294version = '0.9.22'294version = '0.9.23'295295296[[bin]]296[[bin]]297name = 'unique-collator'297name = 'unique-collator'323[features]323[features]324default = []324default = []325runtime-benchmarks = [325runtime-benchmarks = [326 'unique-runtime/runtime-benchmarks',326 'unique-runtime?/runtime-benchmarks',327 'quartz-runtime?/runtime-benchmarks',328 'opal-runtime/runtime-benchmarks',327 'polkadot-service/runtime-benchmarks',329 'polkadot-service/runtime-benchmarks',328]330]329try-runtime = []331try-runtime = []node/cli/src/chain_spec.rsdiffbeforeafterboth26use unique_runtime_common::types::*;26use unique_runtime_common::types::*;272728#[cfg(feature = "unique-runtime")]28#[cfg(feature = "unique-runtime")]29use unique_runtime as default_runtime;29pub use unique_runtime as default_runtime;303031#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]31#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]32use quartz_runtime as default_runtime;32pub use quartz_runtime as default_runtime;333334#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]34#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]35use opal_runtime as default_runtime;35pub use opal_runtime as default_runtime;363637/// The `ChainSpec` parameterized for the unique runtime.37/// The `ChainSpec` parameterized for the unique runtime.38#[cfg(feature = "unique-runtime")]38#[cfg(feature = "unique-runtime")]node/cli/src/command.rsdiffbeforeafterboth343435use crate::{35use crate::{36 chain_spec::{self, RuntimeId, RuntimeIdentification, ServiceId, ServiceIdentification},36 chain_spec::{37 self, RuntimeId, RuntimeIdentification, ServiceId, ServiceIdentification, default_runtime,38 },37 cli::{Cli, RelayChainCli, Subcommand},39 cli::{Cli, RelayChainCli, Subcommand},38 service::{new_partial, start_node, start_dev_node},40 service::{new_partial, start_node, start_dev_node},44#[cfg(feature = "quartz-runtime")]46#[cfg(feature = "quartz-runtime")]45use crate::service::QuartzRuntimeExecutor;47use crate::service::QuartzRuntimeExecutor;464847use crate::service::OpalRuntimeExecutor;49use crate::service::{OpalRuntimeExecutor, DefaultRuntimeExecutor};485049use codec::Encode;51use codec::Encode;50use cumulus_primitives_core::ParaId;52use cumulus_primitives_core::ParaId;371373372 Ok(())374 Ok(())373 }375 }374 #[cfg(feature = "unique-runtime")]375 Some(Subcommand::Benchmark(cmd)) => {376 Some(Subcommand::Benchmark(cmd)) => {376 use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};377 use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};377 let runner = cli.create_runner(cmd)?;378 let runner = cli.create_runner(cmd)?;378 // Switch on the concrete benchmark sub-command-379 // Switch on the concrete benchmark sub-command-379 match cmd {380 match cmd {380 BenchmarkCmd::Pallet(cmd) => {381 BenchmarkCmd::Pallet(cmd) => {381 if cfg!(feature = "runtime-benchmarks") {382 if cfg!(feature = "runtime-benchmarks") {382 runner.sync_run(|config| cmd.run::<Block, UniqueRuntimeExecutor>(config))383 runner.sync_run(|config| cmd.run::<Block, DefaultRuntimeExecutor>(config))383 } else {384 } else {384 Err("Benchmarking wasn't enabled when building the node. \385 Err("Benchmarking wasn't enabled when building the node. \385 You can enable it with `--features runtime-benchmarks`."386 You can enable it with `--features runtime-benchmarks`."388 }389 }389 BenchmarkCmd::Block(cmd) => runner.sync_run(|config| {390 BenchmarkCmd::Block(cmd) => runner.sync_run(|config| {390 let partials = new_partial::<391 let partials = new_partial::<391 unique_runtime::RuntimeApi,392 default_runtime::RuntimeApi,392 UniqueRuntimeExecutor,393 DefaultRuntimeExecutor,393 _,394 _,394 >(&config, crate::service::parachain_build_import_queue)?;395 >(&config, crate::service::parachain_build_import_queue)?;395 cmd.run(partials.client)396 cmd.run(partials.client)396 }),397 }),397 BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| {398 BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| {398 let partials = new_partial::<399 let partials = new_partial::<399 unique_runtime::RuntimeApi,400 default_runtime::RuntimeApi,400 UniqueRuntimeExecutor,401 DefaultRuntimeExecutor,401 _,402 _,402 >(&config, crate::service::parachain_build_import_queue)?;403 >(&config, crate::service::parachain_build_import_queue)?;403 let db = partials.backend.expose_db();404 let db = partials.backend.expose_db();411 BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()),412 BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()),412 }413 }413 }414 }414 #[cfg(not(feature = "unique-runtime"))]415 Some(Subcommand::Benchmark(..)) => {416 Err("benchmarking is only available with unique runtime enabled".into())417 }418 Some(Subcommand::TryRuntime(cmd)) => {415 Some(Subcommand::TryRuntime(cmd)) => {419 if cfg!(feature = "try-runtime") {416 if cfg!(feature = "try-runtime") {420 let runner = cli.create_runner(cmd)?;417 let runner = cli.create_runner(cmd)?;node/cli/src/service.rsdiffbeforeafterboth83/// Opal native executor instance.82/// Opal native executor instance.84pub struct OpalRuntimeExecutor;83pub struct OpalRuntimeExecutor;8485#[cfg(feature = "unique-runtime")]86pub type DefaultRuntimeExecutor = UniqueRuntimeExecutor;8788#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]89pub type DefaultRuntimeExecutor = QuartzRuntimeExecutor;9091#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]92pub type DefaultRuntimeExecutor = OpalRuntimeExecutor;859386#[cfg(feature = "unique-runtime")]94#[cfg(feature = "unique-runtime")]87impl NativeExecutionDispatch for UniqueRuntimeExecutor {95impl NativeExecutionDispatch for UniqueRuntimeExecutor {node/rpc/Cargo.tomldiffbeforeafterboth63[features]63[features]64default = []64default = []65std = []65std = []66unique-runtime = []6667node/rpc/src/lib.rsdiffbeforeafterboth169 Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,169 Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,170 EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,170 EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,171 };171 };172 use uc_rpc::{UniqueApiServer, Unique, RmrkApiServer, Rmrk};172 use uc_rpc::{UniqueApiServer, Unique};173174 #[cfg(not(feature = "unique-runtime"))]175 use uc_rpc::{RmrkApiServer, Rmrk};176173 // use pallet_contracts_rpc::{Contracts, ContractsApi};177 // use pallet_contracts_rpc::{Contracts, ContractsApi};174 use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};178 use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};224228225 io.merge(Unique::new(client.clone()).into_rpc())?;229 io.merge(Unique::new(client.clone()).into_rpc())?;230231 #[cfg(not(feature = "unique-runtime"))]226 io.merge(Rmrk::new(client.clone()).into_rpc())?;232 io.merge(Rmrk::new(client.clone()).into_rpc())?;227233228 if let Some(filter_pool) = filter_pool {234 if let Some(filter_pool) = filter_pool {pallets/common/src/benchmarking.rsdiffbeforeafterboth96 permissions: Some(CollectionPermissions {96 permissions: Some(CollectionPermissions {97 nesting: Some(NestingPermissions {97 nesting: Some(NestingPermissions {98 token_owner: false,98 token_owner: false,99 admin: false,99 collection_admin: false,100 restricted: None,100 restricted: None,101 permissive: true,101 permissive: true,102 }),102 }),103 mint_mode: Some(true),103 ..Default::default()104 ..Default::default()104 }),105 }),105 ..Default::default()106 ..Default::default()pallets/common/src/erc.rsdiffbeforeafterboth22pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};22pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};23use pallet_evm_coder_substrate::dispatch_to_evm;23use pallet_evm_coder_substrate::dispatch_to_evm;24use sp_std::vec::Vec;24use sp_std::vec::Vec;25use up_data_structs::{Property, SponsoringRateLimit, OwnerRestrictedSet, AccessMode};25use up_data_structs::{26 Property, SponsoringRateLimit, OwnerRestrictedSet, AccessMode, CollectionPermissions,27};26use alloc::format;28use alloc::format;272928use crate::{Pallet, CollectionHandle, Config, CollectionProperties};30use crate::{Pallet, CollectionHandle, Config, CollectionProperties};474948#[solidity_interface(name = "Collection")]50#[solidity_interface(name = "Collection")]49impl<T: Config> CollectionHandle<T>51impl<T: Config> CollectionHandle<T>50// where52where51// T::AccountId: From<H256>53 T::AccountId: From<[u8; 32]>,52{54{53 fn set_collection_property(&mut self, caller: caller, key: string, value: bytes) -> Result<()> {55 fn set_collection_property(56 &mut self,57 caller: caller,58 key: string,59 value: bytes,60 ) -> Result<void> {54 let caller = T::CrossAccountId::from_eth(caller);61 let caller = T::CrossAccountId::from_eth(caller);55 let key = <Vec<u8>>::from(key)62 let key = <Vec<u8>>::from(key)56 .try_into()63 .try_into()83 }90 }849185 fn set_collection_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {92 fn set_collection_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {86 check_is_owner(caller, self)?;93 check_is_owner_or_admin(caller, self)?;879488 let sponsor = T::CrossAccountId::from_eth(sponsor);95 let sponsor = T::CrossAccountId::from_eth(sponsor);89 self.set_sponsor(sponsor.as_sub().clone())96 self.set_sponsor(sponsor.as_sub().clone())97 .confirm_sponsorship(caller.as_sub())104 .confirm_sponsorship(caller.as_sub())98 .map_err(dispatch_to_evm::<T>)?105 .map_err(dispatch_to_evm::<T>)?99 {106 {100 return Err(Error::Revert("Caller is not set as sponsor".into()));107 return Err("caller is not set as sponsor".into());101 }108 }102 save(self)109 save(self)103 }110 }104111105 #[solidity(rename_selector = "setCollectionLimit")]112 #[solidity(rename_selector = "setCollectionLimit")]106 fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {113 fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {107 check_is_owner(caller, self)?;114 check_is_owner_or_admin(caller, self)?;108 let mut limits = self.limits.clone();115 let mut limits = self.limits.clone();109116110 match limit.as_str() {117 match limit.as_str() {128 }135 }129 _ => {136 _ => {130 return Err(Error::Revert(format!(137 return Err(Error::Revert(format!(131 "Unknown integer limit \"{}\"",138 "unknown integer limit \"{}\"",132 limit139 limit133 )))140 )))134 }141 }140147141 #[solidity(rename_selector = "setCollectionLimit")]148 #[solidity(rename_selector = "setCollectionLimit")]142 fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {149 fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {143 check_is_owner(caller, self)?;150 check_is_owner_or_admin(caller, self)?;144 let mut limits = self.limits.clone();151 let mut limits = self.limits.clone();145152146 match limit.as_str() {153 match limit.as_str() {155 }162 }156 _ => {163 _ => {157 return Err(Error::Revert(format!(164 return Err(Error::Revert(format!(158 "Unknown boolean limit \"{}\"",165 "unknown boolean limit \"{}\"",159 limit166 limit160 )))167 )))161 }168 }169 Ok(crate::eth::collection_id_to_address(self.id))176 Ok(crate::eth::collection_id_to_address(self.id))170 }177 }171178172 // fn add_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {179 fn add_collection_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {173 // let mut new_admin_h256 = H256::default();180 let caller = T::CrossAccountId::from_eth(caller);181 let mut new_admin_arr: [u8; 32] = Default::default();174 // new_admin.to_little_endian(&mut new_admin_h256.0);182 new_admin.to_big_endian(&mut new_admin_arr);175 // let account_id = T::AccountId::from(new_admin_h256);183 let account_id = T::AccountId::from(new_admin_arr);176 // let caller = T::CrossAccountId::from_eth(caller);184 let new_admin = T::CrossAccountId::from_sub(account_id);177 // let new_admin = T::CrossAccountId::from_sub(account_id);178 // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)185 <Pallet<T>>::toggle_admin(self, &caller, &new_admin, true).map_err(dispatch_to_evm::<T>)?;179 // .map_err(dispatch_to_evm::<T>)?;180 // Ok(())186 Ok(())181 // }187 }182188183 // fn remove_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {189 fn remove_collection_admin_substrate(190 &self,191 caller: caller,192 new_admin: uint256,193 ) -> Result<void> {184 // let mut new_admin_h256 = H256::default();194 let caller = T::CrossAccountId::from_eth(caller);195 let mut new_admin_arr: [u8; 32] = Default::default();185 // new_admin.to_little_endian(&mut new_admin_h256.0);196 new_admin.to_big_endian(&mut new_admin_arr);186 // let account_id = T::AccountId::from(new_admin_h256);197 let account_id = T::AccountId::from(new_admin_arr);187 // let caller = T::CrossAccountId::from_eth(caller);198 let new_admin = T::CrossAccountId::from_sub(account_id);188 // let new_admin = T::CrossAccountId::from_sub(account_id);189 // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, false)199 <Pallet<T>>::toggle_admin(self, &caller, &new_admin, false)190 // .map_err(dispatch_to_evm::<T>)?;200 .map_err(dispatch_to_evm::<T>)?;191 // Ok(())201 Ok(())192 // }202 }193203194 fn add_collection_admin(&self, caller: caller, new_admin: address) -> Result<void> {204 fn add_collection_admin(&self, caller: caller, new_admin: address) -> Result<void> {195 let caller = T::CrossAccountId::from_eth(caller);205 let caller = T::CrossAccountId::from_eth(caller);196 self.check_is_owner_or_admin(&caller)197 .map_err(dispatch_to_evm::<T>)?;198 let new_admin = T::CrossAccountId::from_eth(new_admin);206 let new_admin = T::CrossAccountId::from_eth(new_admin);199 <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)207 <Pallet<T>>::toggle_admin(self, &caller, &new_admin, true).map_err(dispatch_to_evm::<T>)?;200 .map_err(dispatch_to_evm::<T>)?;201 Ok(())208 Ok(())202 }209 }203210204 fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {211 fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {205 let caller = T::CrossAccountId::from_eth(caller);212 let caller = T::CrossAccountId::from_eth(caller);206 self.check_is_owner_or_admin(&caller)207 .map_err(dispatch_to_evm::<T>)?;208 let admin = T::CrossAccountId::from_eth(admin);213 let admin = T::CrossAccountId::from_eth(admin);209 <Pallet<T>>::toggle_admin(&self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;214 <Pallet<T>>::toggle_admin(self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;210 Ok(())215 Ok(())211 }216 }212217213 #[solidity(rename_selector = "setCollectionNesting")]218 #[solidity(rename_selector = "setCollectionNesting")]214 fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {219 fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {215 let caller = T::CrossAccountId::from_eth(caller);220 check_is_owner_or_admin(caller, self)?;216 self.check_is_owner_or_admin(&caller)217 .map_err(dispatch_to_evm::<T>)?;218221219 let mut permissions = self.collection.permissions.clone();222 let mut permissions = self.collection.permissions.clone();220 let mut nesting = permissions.nesting().clone();223 let mut nesting = permissions.nesting().clone();240 collections: Vec<address>,243 collections: Vec<address>,241 ) -> Result<void> {244 ) -> Result<void> {242 if collections.is_empty() {245 if collections.is_empty() {243 return Err("No addresses provided".into());246 return Err("no addresses provided".into());244 }247 }245 let caller = T::CrossAccountId::from_eth(caller);248 check_is_owner_or_admin(caller, self)?;246 self.check_is_owner_or_admin(&caller)247 .map_err(dispatch_to_evm::<T>)?;248249249 let mut permissions = self.collection.permissions.clone();250 let mut permissions = self.collection.permissions.clone();250 match enable {251 match enable {280 }281 }281282282 fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result<void> {283 fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result<void> {283 let caller = T::CrossAccountId::from_eth(caller);284 check_is_owner_or_admin(caller, self)?;284 self.check_is_owner_or_admin(&caller)285 let permissions = CollectionPermissions {285 .map_err(dispatch_to_evm::<T>)?;286 access: Some(match mode {286 self.collection.permissions.access = Some(match mode {287 0 => AccessMode::Normal,287 0 => AccessMode::Normal,288 1 => AccessMode::AllowList,288 1 => AccessMode::AllowList,289 _ => return Err("Not supported access mode".into()),289 _ => return Err("not supported access mode".into()),290 });290 }),291 ..Default::default()292 };291 save(self)?;293 self.collection.permissions = <Pallet<T>>::clamp_permissions(294 self.collection.mode.clone(),295 &self.collection.permissions,296 permissions,297 )298 .map_err(dispatch_to_evm::<T>)?;299292 Ok(())300 save(self)293 }301 }294302295 fn add_to_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {303 fn add_to_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {296 let caller = check_is_owner_or_admin(caller, self)?;304 let caller = T::CrossAccountId::from_eth(caller);297 let user = T::CrossAccountId::from_eth(user);305 let user = T::CrossAccountId::from_eth(user);298 <Pallet<T>>::toggle_allowlist(self, &caller, &user, true).map_err(dispatch_to_evm::<T>)?;306 <Pallet<T>>::toggle_allowlist(self, &caller, &user, true).map_err(dispatch_to_evm::<T>)?;299 Ok(())307 Ok(())300 }308 }301309302 fn remove_from_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {310 fn remove_from_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {303 let caller = check_is_owner_or_admin(caller, self)?;311 let caller = T::CrossAccountId::from_eth(caller);304 let user = T::CrossAccountId::from_eth(user);312 let user = T::CrossAccountId::from_eth(user);305 <Pallet<T>>::toggle_allowlist(self, &caller, &user, false).map_err(dispatch_to_evm::<T>)?;313 <Pallet<T>>::toggle_allowlist(self, &caller, &user, false).map_err(dispatch_to_evm::<T>)?;306 Ok(())314 Ok(())307 }315 }308316309 fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {317 fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {310 check_is_owner_or_admin(caller, self)?;318 check_is_owner_or_admin(caller, self)?;311 self.collection.permissions.mint_mode = Some(mode);319 let permissions = CollectionPermissions {320 mint_mode: Some(mode),321 ..Default::default()322 };323 self.collection.permissions = <Pallet<T>>::clamp_permissions(324 self.collection.mode.clone(),312 save(self)?;325 &self.collection.permissions,326 permissions,327 )328 .map_err(dispatch_to_evm::<T>)?;329313 Ok(())330 save(self)314 }331 }315}316317fn check_is_owner<T: Config>(caller: caller, collection: &CollectionHandle<T>) -> Result<void> {318 let caller = T::CrossAccountId::from_eth(caller);319 collection320 .check_is_owner(&caller)321 .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;322 Ok(())323}332}324333325fn check_is_owner_or_admin<T: Config>(334fn check_is_owner_or_admin<T: Config>(pallets/common/src/lib.rsdiffbeforeafterboth74 RmrkPropertyInfo,74 RmrkPropertyInfo,75 RmrkBaseInfo,75 RmrkBaseInfo,76 RmrkPartType,76 RmrkPartType,77 RmrkTheme,77 RmrkBoundedTheme,78 RmrkNftChild,78 RmrkNftChild,79 CollectionPermissions,79 CollectionPermissions,80 SchemaVersion,80 SchemaVersion,148 .saturating_mul(writes),148 .saturating_mul(writes),149 ))149 ))150 }150 }151 pub fn save(self) -> Result<(), DispatchError> {151 pub fn save(self) -> DispatchResult {152 <CollectionById<T>>::insert(self.id, self.collection);152 <CollectionById<T>>::insert(self.id, self.collection);153 Ok(())153 Ok(())154 }154 }543 RmrkPropertyInfo,543 RmrkPropertyInfo,544 RmrkBaseInfo<T::AccountId>,544 RmrkBaseInfo<T::AccountId>,545 RmrkPartType,545 RmrkPartType,546 RmrkTheme,546 RmrkBoundedTheme,547 RmrkNftChild,547 RmrkNftChild,548 )>,548 )>,549 ),549 ),1019 }1019 }102010201021 #[transactional]1021 #[transactional]1022 pub fn set_property_permissions(1022 pub fn set_token_property_permissions(1023 collection: &CollectionHandle<T>,1023 collection: &CollectionHandle<T>,1024 sender: &T::CrossAccountId,1024 sender: &T::CrossAccountId,1025 property_permissions: Vec<PropertyKeyPermission>,1025 property_permissions: Vec<PropertyKeyPermission>,1164 old_limit: &CollectionLimits,1164 old_limit: &CollectionLimits,1165 mut new_limit: CollectionLimits,1165 mut new_limit: CollectionLimits,1166 ) -> Result<CollectionLimits, DispatchError> {1166 ) -> Result<CollectionLimits, DispatchError> {1167 let limits = old_limit;1167 limit_default!(old_limit, new_limit,1168 limit_default!(old_limit, new_limit,1168 account_token_ownership_limit => ensure!(1169 account_token_ownership_limit => ensure!(1169 new_limit <= MAX_TOKEN_OWNERSHIP,1170 new_limit <= MAX_TOKEN_OWNERSHIP,1190 ),1191 ),1191 sponsor_approve_timeout => {},1192 sponsor_approve_timeout => {},1192 owner_can_transfer => ensure!(1193 owner_can_transfer => ensure!(1194 !limits.owner_can_transfer_instaled() ||1193 old_limit || !new_limit,1195 old_limit || !new_limit,1194 <Error<T>>::OwnerPermissionsCantBeReverted,1196 <Error<T>>::OwnerPermissionsCantBeReverted,1195 ),1197 ),1210 limit_default_clone!(old_limit, new_limit,1212 limit_default_clone!(old_limit, new_limit,1211 access => {},1213 access => {},1212 mint_mode => {},1214 mint_mode => {},1213 nesting => ensure!(1215 nesting => {1216 #[cfg(not(feature = "runtime-benchmarks"))]1217 ensure!(1214 // Permissive is only allowed for tests and internal usage of chain for now1218 // Permissive is only allowed for tests and internal usage of chain for now1215 old_limit.permissive || !new_limit.permissive,1219 old_limit.permissive || !new_limit.permissive,1216 <Error<T>>::NoPermission,1220 <Error<T>>::NoPermission,1217 ),1221 )1222 },1218 );1223 );1219 Ok(new_limit)1224 Ok(new_limit)1220 }1225 }1237 fn delete_collection_properties(amount: u32) -> Weight;1242 fn delete_collection_properties(amount: u32) -> Weight;1238 fn set_token_properties(amount: u32) -> Weight;1243 fn set_token_properties(amount: u32) -> Weight;1239 fn delete_token_properties(amount: u32) -> Weight;1244 fn delete_token_properties(amount: u32) -> Weight;1240 fn set_property_permissions(amount: u32) -> Weight;1245 fn set_token_property_permissions(amount: u32) -> Weight;1241 fn transfer() -> Weight;1246 fn transfer() -> Weight;1242 fn approve() -> Weight;1247 fn approve() -> Weight;1243 fn transfer_from() -> Weight;1248 fn transfer_from() -> Weight;1316 token_id: TokenId,1321 token_id: TokenId,1317 property_keys: Vec<PropertyKey>,1322 property_keys: Vec<PropertyKey>,1318 ) -> DispatchResultWithPostInfo;1323 ) -> DispatchResultWithPostInfo;1319 fn set_property_permissions(1324 fn set_token_property_permissions(1320 &self,1325 &self,1321 sender: &T::CrossAccountId,1326 sender: &T::CrossAccountId,1322 property_permissions: Vec<PropertyKeyPermission>,1327 property_permissions: Vec<PropertyKeyPermission>,pallets/evm-migration/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_evm_migration3//! Autogenerated weights for pallet_evm_migration4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:10// target/release/unique-collator10// target/release/unique-collator11// benchmark11// benchmark12// pallet12// --pallet13// --pallet13// pallet-evm-migration14// pallet-evm-migration14// --wasm-execution15// --wasm-execution44 // Storage: System Account (r:1 w:0)45 // Storage: System Account (r:1 w:0)45 // Storage: EVM AccountCodes (r:1 w:0)46 // Storage: EVM AccountCodes (r:1 w:0)46 fn begin() -> Weight {47 fn begin() -> Weight {47 (6_441_000 as Weight)48 (6_914_000 as Weight)48 .saturating_add(T::DbWeight::get().reads(3 as Weight))49 .saturating_add(T::DbWeight::get().reads(3 as Weight))49 .saturating_add(T::DbWeight::get().writes(1 as Weight))50 .saturating_add(T::DbWeight::get().writes(1 as Weight))50 }51 }51 // Storage: EvmMigration MigrationPending (r:1 w:0)52 // Storage: EvmMigration MigrationPending (r:1 w:0)52 // Storage: EVM AccountStorages (r:0 w:1)53 // Storage: EVM AccountStorages (r:0 w:1)53 fn set_data(b: u32, ) -> Weight {54 fn set_data(b: u32, ) -> Weight {54 (3_424_000 as Weight)55 (2_875_000 as Weight)55 // Standard Error: 056 // Standard Error: 056 .saturating_add((973_000 as Weight).saturating_mul(b as Weight))57 .saturating_add((794_000 as Weight).saturating_mul(b as Weight))57 .saturating_add(T::DbWeight::get().reads(1 as Weight))58 .saturating_add(T::DbWeight::get().reads(1 as Weight))58 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))59 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))59 }60 }60 // Storage: EvmMigration MigrationPending (r:1 w:1)61 // Storage: EvmMigration MigrationPending (r:1 w:1)61 // Storage: EVM AccountCodes (r:0 w:1)62 // Storage: EVM AccountCodes (r:0 w:1)62 fn finish(b: u32, ) -> Weight {63 fn finish(b: u32, ) -> Weight {63 (4_702_000 as Weight)64 (6_320_000 as Weight)64 // Standard Error: 065 // Standard Error: 065 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))66 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))66 .saturating_add(T::DbWeight::get().reads(1 as Weight))67 .saturating_add(T::DbWeight::get().reads(1 as Weight))74 // Storage: System Account (r:1 w:0)75 // Storage: System Account (r:1 w:0)75 // Storage: EVM AccountCodes (r:1 w:0)76 // Storage: EVM AccountCodes (r:1 w:0)76 fn begin() -> Weight {77 fn begin() -> Weight {77 (6_441_000 as Weight)78 (6_914_000 as Weight)78 .saturating_add(RocksDbWeight::get().reads(3 as Weight))79 .saturating_add(RocksDbWeight::get().reads(3 as Weight))79 .saturating_add(RocksDbWeight::get().writes(1 as Weight))80 .saturating_add(RocksDbWeight::get().writes(1 as Weight))80 }81 }81 // Storage: EvmMigration MigrationPending (r:1 w:0)82 // Storage: EvmMigration MigrationPending (r:1 w:0)82 // Storage: EVM AccountStorages (r:0 w:1)83 // Storage: EVM AccountStorages (r:0 w:1)83 fn set_data(b: u32, ) -> Weight {84 fn set_data(b: u32, ) -> Weight {84 (3_424_000 as Weight)85 (2_875_000 as Weight)85 // Standard Error: 086 // Standard Error: 086 .saturating_add((973_000 as Weight).saturating_mul(b as Weight))87 .saturating_add((794_000 as Weight).saturating_mul(b as Weight))87 .saturating_add(RocksDbWeight::get().reads(1 as Weight))88 .saturating_add(RocksDbWeight::get().reads(1 as Weight))88 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))89 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))89 }90 }90 // Storage: EvmMigration MigrationPending (r:1 w:1)91 // Storage: EvmMigration MigrationPending (r:1 w:1)91 // Storage: EVM AccountCodes (r:0 w:1)92 // Storage: EVM AccountCodes (r:0 w:1)92 fn finish(b: u32, ) -> Weight {93 fn finish(b: u32, ) -> Weight {93 (4_702_000 as Weight)94 (6_320_000 as Weight)94 // Standard Error: 095 // Standard Error: 095 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))96 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))96 .saturating_add(RocksDbWeight::get().reads(1 as Weight))97 .saturating_add(RocksDbWeight::get().reads(1 as Weight))pallets/fungible/src/common.rsdiffbeforeafterboth72 072 073 }73 }747475 fn set_property_permissions(_amount: u32) -> Weight {75 fn set_token_property_permissions(_amount: u32) -> Weight {76 // Error76 // Error77 077 078 }78 }302 fail!(<Error<T>>::SettingPropertiesNotAllowed)302 fail!(<Error<T>>::SettingPropertiesNotAllowed)303 }303 }304304305 fn set_property_permissions(305 fn set_token_property_permissions(306 &self,306 &self,307 _sender: &T::CrossAccountId,307 _sender: &T::CrossAccountId,308 _property_permissions: Vec<PropertyKeyPermission>,308 _property_permissions: Vec<PropertyKeyPermission>,pallets/fungible/src/erc.rsdiffbeforeafterboth152 via("CollectionHandle<T>", common_mut, Collection)152 via("CollectionHandle<T>", common_mut, Collection)153 )153 )154)]154)]155impl<T: Config> FungibleHandle<T> {}155impl<T: Config> FungibleHandle<T> where T::AccountId: From<[u8; 32]> {}156156157generate_stubgen!(gen_impl, UniqueFungibleCall<()>, true);157generate_stubgen!(gen_impl, UniqueFungibleCall<()>, true);158generate_stubgen!(gen_iface, UniqueFungibleCall<()>, false);158generate_stubgen!(gen_iface, UniqueFungibleCall<()>, false);159159160impl<T: Config> CommonEvmHandler for FungibleHandle<T> {160impl<T: Config> CommonEvmHandler for FungibleHandle<T>161where162 T::AccountId: From<[u8; 32]>,163{161 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueFungible.raw");164 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueFungible.raw");162165pallets/fungible/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_fungible3//! Autogenerated weights for pallet_fungible4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:10// target/release/unique-collator10// target/release/unique-collator11// benchmark11// benchmark12// pallet12// --pallet13// --pallet13// pallet-fungible14// pallet-fungible14// --wasm-execution15// --wasm-execution18// --template19// --template19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs20// --steps=5021// --steps=5021// --repeat=20022// --repeat=8022// --heap-pages=409623// --heap-pages=409623// --output=./pallets/fungible/src/weights.rs24// --output=./pallets/fungible/src/weights.rs242547 // Storage: Fungible TotalSupply (r:1 w:1)48 // Storage: Fungible TotalSupply (r:1 w:1)48 // Storage: Fungible Balance (r:1 w:1)49 // Storage: Fungible Balance (r:1 w:1)49 fn create_item() -> Weight {50 fn create_item() -> Weight {50 (14_407_000 as Weight)51 (17_828_000 as Weight)51 .saturating_add(T::DbWeight::get().reads(2 as Weight))52 .saturating_add(T::DbWeight::get().reads(2 as Weight))52 .saturating_add(T::DbWeight::get().writes(2 as Weight))53 .saturating_add(T::DbWeight::get().writes(2 as Weight))53 }54 }54 // Storage: Fungible TotalSupply (r:1 w:1)55 // Storage: Fungible TotalSupply (r:1 w:1)55 // Storage: Fungible Balance (r:4 w:4)56 // Storage: Fungible Balance (r:4 w:4)56 fn create_multiple_items_ex(b: u32, ) -> Weight {57 fn create_multiple_items_ex(b: u32, ) -> Weight {57 (13_030_000 as Weight)58 (17_574_000 as Weight)58 // Standard Error: 1_00059 // Standard Error: 3_00059 .saturating_add((3_779_000 as Weight).saturating_mul(b as Weight))60 .saturating_add((4_288_000 as Weight).saturating_mul(b as Weight))60 .saturating_add(T::DbWeight::get().reads(1 as Weight))61 .saturating_add(T::DbWeight::get().reads(1 as Weight))61 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))62 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))62 .saturating_add(T::DbWeight::get().writes(1 as Weight))63 .saturating_add(T::DbWeight::get().writes(1 as Weight))65 // Storage: Fungible TotalSupply (r:1 w:1)66 // Storage: Fungible TotalSupply (r:1 w:1)66 // Storage: Fungible Balance (r:1 w:1)67 // Storage: Fungible Balance (r:1 w:1)67 fn burn_item() -> Weight {68 fn burn_item() -> Weight {68 (15_565_000 as Weight)69 (18_417_000 as Weight)69 .saturating_add(T::DbWeight::get().reads(2 as Weight))70 .saturating_add(T::DbWeight::get().reads(2 as Weight))70 .saturating_add(T::DbWeight::get().writes(2 as Weight))71 .saturating_add(T::DbWeight::get().writes(2 as Weight))71 }72 }7273 // Storage: Fungible Balance (r:2 w:2)73 // Storage: Fungible Balance (r:2 w:2)74 fn transfer() -> Weight {74 fn transfer() -> Weight {75 (17_713_000 as Weight)75 (20_090_000 as Weight)76 .saturating_add(T::DbWeight::get().reads(2 as Weight))76 .saturating_add(T::DbWeight::get().reads(2 as Weight))77 .saturating_add(T::DbWeight::get().writes(2 as Weight))77 .saturating_add(T::DbWeight::get().writes(2 as Weight))78 }78 }79 // Storage: Fungible Balance (r:1 w:0)79 // Storage: Fungible Balance (r:1 w:0)80 // Storage: Fungible Allowance (r:0 w:1)80 // Storage: Fungible Allowance (r:0 w:1)81 fn approve() -> Weight {81 fn approve() -> Weight {82 (14_834_000 as Weight)82 (17_532_000 as Weight)83 .saturating_add(T::DbWeight::get().reads(1 as Weight))83 .saturating_add(T::DbWeight::get().reads(1 as Weight))84 .saturating_add(T::DbWeight::get().writes(1 as Weight))84 .saturating_add(T::DbWeight::get().writes(1 as Weight))85 }85 }86 // Storage: Fungible Allowance (r:1 w:1)86 // Storage: Fungible Allowance (r:1 w:1)87 // Storage: Fungible Balance (r:2 w:2)87 // Storage: Fungible Balance (r:2 w:2)88 fn transfer_from() -> Weight {88 fn transfer_from() -> Weight {89 (25_189_000 as Weight)89 (29_869_000 as Weight)90 .saturating_add(T::DbWeight::get().reads(3 as Weight))90 .saturating_add(T::DbWeight::get().reads(3 as Weight))91 .saturating_add(T::DbWeight::get().writes(3 as Weight))91 .saturating_add(T::DbWeight::get().writes(3 as Weight))92 }92 }93 // Storage: Fungible Allowance (r:1 w:1)93 // Storage: Fungible Allowance (r:1 w:1)94 // Storage: Fungible TotalSupply (r:1 w:1)94 // Storage: Fungible TotalSupply (r:1 w:1)95 // Storage: Fungible Balance (r:1 w:1)95 // Storage: Fungible Balance (r:1 w:1)96 fn burn_from() -> Weight {96 fn burn_from() -> Weight {97 (24_065_000 as Weight)97 (27_835_000 as Weight)98 .saturating_add(T::DbWeight::get().reads(3 as Weight))98 .saturating_add(T::DbWeight::get().reads(3 as Weight))99 .saturating_add(T::DbWeight::get().writes(3 as Weight))99 .saturating_add(T::DbWeight::get().writes(3 as Weight))100 }100 }105 // Storage: Fungible TotalSupply (r:1 w:1)105 // Storage: Fungible TotalSupply (r:1 w:1)106 // Storage: Fungible Balance (r:1 w:1)106 // Storage: Fungible Balance (r:1 w:1)107 fn create_item() -> Weight {107 fn create_item() -> Weight {108 (14_407_000 as Weight)108 (17_828_000 as Weight)109 .saturating_add(RocksDbWeight::get().reads(2 as Weight))109 .saturating_add(RocksDbWeight::get().reads(2 as Weight))110 .saturating_add(RocksDbWeight::get().writes(2 as Weight))110 .saturating_add(RocksDbWeight::get().writes(2 as Weight))111 }111 }112 // Storage: Fungible TotalSupply (r:1 w:1)112 // Storage: Fungible TotalSupply (r:1 w:1)113 // Storage: Fungible Balance (r:4 w:4)113 // Storage: Fungible Balance (r:4 w:4)114 fn create_multiple_items_ex(b: u32, ) -> Weight {114 fn create_multiple_items_ex(b: u32, ) -> Weight {115 (13_030_000 as Weight)115 (17_574_000 as Weight)116 // Standard Error: 1_000116 // Standard Error: 3_000117 .saturating_add((3_779_000 as Weight).saturating_mul(b as Weight))117 .saturating_add((4_288_000 as Weight).saturating_mul(b as Weight))118 .saturating_add(RocksDbWeight::get().reads(1 as Weight))118 .saturating_add(RocksDbWeight::get().reads(1 as Weight))119 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))119 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))120 .saturating_add(RocksDbWeight::get().writes(1 as Weight))120 .saturating_add(RocksDbWeight::get().writes(1 as Weight))123 // Storage: Fungible TotalSupply (r:1 w:1)123 // Storage: Fungible TotalSupply (r:1 w:1)124 // Storage: Fungible Balance (r:1 w:1)124 // Storage: Fungible Balance (r:1 w:1)125 fn burn_item() -> Weight {125 fn burn_item() -> Weight {126 (15_565_000 as Weight)126 (18_417_000 as Weight)127 .saturating_add(RocksDbWeight::get().reads(2 as Weight))127 .saturating_add(RocksDbWeight::get().reads(2 as Weight))128 .saturating_add(RocksDbWeight::get().writes(2 as Weight))128 .saturating_add(RocksDbWeight::get().writes(2 as Weight))129 }129 }130131 // Storage: Fungible Balance (r:2 w:2)130 // Storage: Fungible Balance (r:2 w:2)132 fn transfer() -> Weight {131 fn transfer() -> Weight {133 (17_713_000 as Weight)132 (20_090_000 as Weight)134 .saturating_add(RocksDbWeight::get().reads(2 as Weight))133 .saturating_add(RocksDbWeight::get().reads(2 as Weight))135 .saturating_add(RocksDbWeight::get().writes(2 as Weight))134 .saturating_add(RocksDbWeight::get().writes(2 as Weight))136 }135 }137 // Storage: Fungible Balance (r:1 w:0)136 // Storage: Fungible Balance (r:1 w:0)138 // Storage: Fungible Allowance (r:0 w:1)137 // Storage: Fungible Allowance (r:0 w:1)139 fn approve() -> Weight {138 fn approve() -> Weight {140 (14_834_000 as Weight)139 (17_532_000 as Weight)141 .saturating_add(RocksDbWeight::get().reads(1 as Weight))140 .saturating_add(RocksDbWeight::get().reads(1 as Weight))142 .saturating_add(RocksDbWeight::get().writes(1 as Weight))141 .saturating_add(RocksDbWeight::get().writes(1 as Weight))143 }142 }144 // Storage: Fungible Allowance (r:1 w:1)143 // Storage: Fungible Allowance (r:1 w:1)145 // Storage: Fungible Balance (r:2 w:2)144 // Storage: Fungible Balance (r:2 w:2)146 fn transfer_from() -> Weight {145 fn transfer_from() -> Weight {147 (25_189_000 as Weight)146 (29_869_000 as Weight)148 .saturating_add(RocksDbWeight::get().reads(3 as Weight))147 .saturating_add(RocksDbWeight::get().reads(3 as Weight))149 .saturating_add(RocksDbWeight::get().writes(3 as Weight))148 .saturating_add(RocksDbWeight::get().writes(3 as Weight))150 }149 }151 // Storage: Fungible Allowance (r:1 w:1)150 // Storage: Fungible Allowance (r:1 w:1)152 // Storage: Fungible TotalSupply (r:1 w:1)151 // Storage: Fungible TotalSupply (r:1 w:1)153 // Storage: Fungible Balance (r:1 w:1)152 // Storage: Fungible Balance (r:1 w:1)154 fn burn_from() -> Weight {153 fn burn_from() -> Weight {155 (24_065_000 as Weight)154 (27_835_000 as Weight)156 .saturating_add(RocksDbWeight::get().reads(3 as Weight))155 .saturating_add(RocksDbWeight::get().reads(3 as Weight))157 .saturating_add(RocksDbWeight::get().writes(3 as Weight))156 .saturating_add(RocksDbWeight::get().writes(3 as Weight))158 }157 }pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth147 <Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;147 <Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;148 }: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}148 }: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}149149150 set_property_permissions {150 set_token_property_permissions {151 let b in 0..MAX_PROPERTIES_PER_ITEM;151 let b in 0..MAX_PROPERTIES_PER_ITEM;152 bench_init!{152 bench_init!{153 owner: sub; collection: collection(owner);153 owner: sub; collection: collection(owner);161 token_owner: false,161 token_owner: false,162 },162 },163 }).collect::<Vec<_>>();163 }).collect::<Vec<_>>();164 }: {<Pallet<T>>::set_property_permissions(&collection, &owner, perms)?}164 }: {<Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?}165165166 set_token_properties {166 set_token_properties {167 let b in 0..MAX_PROPERTIES_PER_ITEM;167 let b in 0..MAX_PROPERTIES_PER_ITEM;177 token_owner: true,177 token_owner: true,178 },178 },179 }).collect::<Vec<_>>();179 }).collect::<Vec<_>>();180 <Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;180 <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;181 let props = (0..b).map(|k| Property {181 let props = (0..b).map(|k| Property {182 key: property_key(k as usize),182 key: property_key(k as usize),183 value: property_value(),183 value: property_value(),199 token_owner: true,199 token_owner: true,200 },200 },201 }).collect::<Vec<_>>();201 }).collect::<Vec<_>>();202 <Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;202 <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;203 let props = (0..b).map(|k| Property {203 let props = (0..b).map(|k| Property {204 key: property_key(k as usize),204 key: property_key(k as usize),205 value: property_value(),205 value: property_value(),pallets/nonfungible/src/common.rsdiffbeforeafterboth89 <SelfWeightOf<T>>::delete_token_properties(amount)89 <SelfWeightOf<T>>::delete_token_properties(amount)90 }90 }919192 fn set_property_permissions(amount: u32) -> Weight {92 fn set_token_property_permissions(amount: u32) -> Weight {93 <SelfWeightOf<T>>::set_property_permissions(amount)93 <SelfWeightOf<T>>::set_token_property_permissions(amount)94 }94 }959596 fn transfer() -> Weight {96 fn transfer() -> Weight {242 )242 )243 }243 }244244245 fn set_property_permissions(245 fn set_token_property_permissions(246 &self,246 &self,247 sender: &T::CrossAccountId,247 sender: &T::CrossAccountId,248 property_permissions: Vec<PropertyKeyPermission>,248 property_permissions: Vec<PropertyKeyPermission>,249 ) -> DispatchResultWithPostInfo {249 ) -> DispatchResultWithPostInfo {250 let weight =250 let weight =251 <CommonWeights<T>>::set_property_permissions(property_permissions.len() as u32);251 <CommonWeights<T>>::set_token_property_permissions(property_permissions.len() as u32);252252253 with_weight(253 with_weight(254 <Pallet<T>>::set_property_permissions(self, sender, property_permissions),254 <Pallet<T>>::set_token_property_permissions(self, sender, property_permissions),255 weight,255 weight,256 )256 )257 }257 }pallets/nonfungible/src/erc.rsdiffbeforeafterboth583 TokenProperties,583 TokenProperties,584 )584 )585)]585)]586impl<T: Config> NonfungibleHandle<T> {}586impl<T: Config> NonfungibleHandle<T> where T::AccountId: From<[u8; 32]> {}587587588// Not a tests, but code generators588// Not a tests, but code generators589generate_stubgen!(gen_impl, UniqueNFTCall<()>, true);589generate_stubgen!(gen_impl, UniqueNFTCall<()>, true);590generate_stubgen!(gen_iface, UniqueNFTCall<()>, false);590generate_stubgen!(gen_iface, UniqueNFTCall<()>, false);591591592impl<T: Config> CommonEvmHandler for NonfungibleHandle<T> {592impl<T: Config> CommonEvmHandler for NonfungibleHandle<T>593where594 T::AccountId: From<[u8; 32]>,595{593 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueNFT.raw");596 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueNFT.raw");594597pallets/nonfungible/src/lib.rsdiffbeforeafterboth28use up_data_structs::{28use up_data_structs::{29 AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,29 AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,30 mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission, PropertyKey,30 mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission, PropertyKey,31 PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild,31 PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild, AuxPropertyValue,32};32};33use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};33use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};34use pallet_common::{34use pallet_common::{124 OnEmpty = up_data_structs::TokenProperties,124 OnEmpty = up_data_structs::TokenProperties,125 >;125 >;126127 #[pallet::storage]128 #[pallet::getter(fn token_aux_property)]129 pub type TokenAuxProperties<T: Config> = StorageNMap<130 Key = (131 Key<Twox64Concat, CollectionId>,132 Key<Twox64Concat, TokenId>,133 Key<Twox64Concat, PropertyScope>,134 Key<Twox64Concat, PropertyKey>,135 ),136 Value = AuxPropertyValue,137 QueryKind = OptionQuery,138 >;126139127 /// Used to enumerate tokens owned by account140 /// Used to enumerate tokens owned by account128 #[pallet::storage]141 #[pallet::storage]294 Ok(())307 Ok(())295 }308 }309310 pub fn try_mutate_token_aux_property<R, E>(311 collection_id: CollectionId,312 token_id: TokenId,313 scope: PropertyScope,314 key: PropertyKey,315 f: impl FnOnce(&mut Option<AuxPropertyValue>) -> Result<R, E>,316 ) -> Result<R, E> {317 <TokenAuxProperties<T>>::try_mutate((collection_id, token_id, scope, key), f)318 }319320 pub fn remove_token_aux_property(321 collection_id: CollectionId,322 token_id: TokenId,323 scope: PropertyScope,324 key: PropertyKey,325 ) {326 <TokenAuxProperties<T>>::remove((collection_id, token_id, scope, key));327 }328329 pub fn iterate_token_aux_properties(330 collection_id: CollectionId,331 token_id: TokenId,332 scope: PropertyScope,333 ) -> impl Iterator<Item = (PropertyKey, AuxPropertyValue)> {334 <TokenAuxProperties<T>>::iter_prefix((collection_id, token_id, scope))335 }296336297 pub fn current_token_id(collection_id: CollectionId) -> TokenId {337 pub fn current_token_id(collection_id: CollectionId) -> TokenId {298 TokenId(<TokensMinted<T>>::get(collection_id))338 TokenId(<TokensMinted<T>>::get(collection_id))375 <TokensBurnt<T>>::insert(collection.id, burnt);415 <TokensBurnt<T>>::insert(collection.id, burnt);376 <TokenData<T>>::remove((collection.id, token));416 <TokenData<T>>::remove((collection.id, token));377 <TokenProperties<T>>::remove((collection.id, token));417 <TokenProperties<T>>::remove((collection.id, token));418 <TokenAuxProperties<T>>::remove_prefix((collection.id, token), None);378 let old_spender = <Allowance<T>>::take((collection.id, token));419 let old_spender = <Allowance<T>>::take((collection.id, token));379420380 if let Some(old_spender) = old_spender {421 if let Some(old_spender) = old_spender {594 <PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)635 <PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)595 }636 }596637597 pub fn set_property_permissions(638 pub fn set_token_property_permissions(598 collection: &CollectionHandle<T>,639 collection: &CollectionHandle<T>,599 sender: &T::CrossAccountId,640 sender: &T::CrossAccountId,600 property_permissions: Vec<PropertyKeyPermission>,641 property_permissions: Vec<PropertyKeyPermission>,601 ) -> DispatchResult {642 ) -> DispatchResult {602 <PalletCommon<T>>::set_property_permissions(collection, sender, property_permissions)643 <PalletCommon<T>>::set_token_property_permissions(collection, sender, property_permissions)603 }644 }604645605 pub fn set_property_permission(646 pub fn set_property_permission(1008 nesting_budget,1049 nesting_budget,1009 )? {1050 )? {1010 // Pass1051 // Pass1011 } else if nesting.admin && handle.is_owner_or_admin(&sender) {1052 } else if nesting.collection_admin && handle.is_owner_or_admin(&sender) {1012 // Pass1053 // Pass1013 } else {1054 } else {1014 fail!(<CommonError<T>>::UserIsNotAllowedToNest);1055 fail!(<CommonError<T>>::UserIsNotAllowedToNest);pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth297 }297 }298}298}299300// Selector: 6aea9834301contract Collection is Dummy, ERC165 {302 // Selector: setCollectionProperty(string,bytes) 2f073f66303 function setCollectionProperty(string memory key, bytes memory value)304 public305 {306 require(false, stub_error);307 key;308 value;309 dummy = 0;310 }311312 // Selector: deleteCollectionProperty(string) 7b7debce313 function deleteCollectionProperty(string memory key) public {314 require(false, stub_error);315 key;316 dummy = 0;317 }318319 // Throws error if key not found320 //321 // Selector: collectionProperty(string) cf24fd6d322 function collectionProperty(string memory key)323 public324 view325 returns (bytes memory)326 {327 require(false, stub_error);328 key;329 dummy;330 return hex"";331 }332333 // Selector: setCollectionSponsor(address) 7623402e334 function setCollectionSponsor(address sponsor) public {335 require(false, stub_error);336 sponsor;337 dummy = 0;338 }339340 // Selector: confirmCollectionSponsorship() 3c50e97a341 function confirmCollectionSponsorship() public {342 require(false, stub_error);343 dummy = 0;344 }345346 // Selector: setCollectionLimit(string,uint32) 6a3841db347 function setCollectionLimit(string memory limit, uint32 value) public {348 require(false, stub_error);349 limit;350 value;351 dummy = 0;352 }353354 // Selector: setCollectionLimit(string,bool) 993b7fba355 function setCollectionLimit(string memory limit, bool value) public {356 require(false, stub_error);357 limit;358 value;359 dummy = 0;360 }361362 // Selector: contractAddress() f6b4dfb4363 function contractAddress() public view returns (address) {364 require(false, stub_error);365 dummy;366 return 0x0000000000000000000000000000000000000000;367 }368369 // Selector: addCollectionAdmin(address) 92e462c7370 function addCollectionAdmin(address newAdmin) public view {371 require(false, stub_error);372 newAdmin;373 dummy;374 }375376 // Selector: removeCollectionAdmin(address) fafd7b42377 function removeCollectionAdmin(address admin) public view {378 require(false, stub_error);379 admin;380 dummy;381 }382383 // Selector: setCollectionNesting(bool) 112d4586384 function setCollectionNesting(bool enable) public {385 require(false, stub_error);386 enable;387 dummy = 0;388 }389390 // Selector: setCollectionNesting(bool,address[]) 64872396391 function setCollectionNesting(bool enable, address[] memory collections)392 public393 {394 require(false, stub_error);395 enable;396 collections;397 dummy = 0;398 }399400 // Selector: setCollectionAccess(uint8) 41835d4c401 function setCollectionAccess(uint8 mode) public {402 require(false, stub_error);403 mode;404 dummy = 0;405 }406407 // Selector: addToCollectionAllowList(address) 67844fe6408 function addToCollectionAllowList(address user) public view {409 require(false, stub_error);410 user;411 dummy;412 }413414 // Selector: removeFromCollectionAllowList(address) 85c51acb415 function removeFromCollectionAllowList(address user) public view {416 require(false, stub_error);417 user;418 dummy;419 }420421 // Selector: setCollectionMintMode(bool) 00018e84422 function setCollectionMintMode(bool mode) public {423 require(false, stub_error);424 mode;425 dummy = 0;426 }427}428299429// Selector: 780e9d63300// Selector: 780e9d63430contract ERC721Enumerable is Dummy, ERC165 {301contract ERC721Enumerable is Dummy, ERC165 {459 }330 }460}331}332333// Selector: 7d9262e6334contract Collection is Dummy, ERC165 {335 // Selector: setCollectionProperty(string,bytes) 2f073f66336 function setCollectionProperty(string memory key, bytes memory value)337 public338 {339 require(false, stub_error);340 key;341 value;342 dummy = 0;343 }344345 // Selector: deleteCollectionProperty(string) 7b7debce346 function deleteCollectionProperty(string memory key) public {347 require(false, stub_error);348 key;349 dummy = 0;350 }351352 // Throws error if key not found353 //354 // Selector: collectionProperty(string) cf24fd6d355 function collectionProperty(string memory key)356 public357 view358 returns (bytes memory)359 {360 require(false, stub_error);361 key;362 dummy;363 return hex"";364 }365366 // Selector: setCollectionSponsor(address) 7623402e367 function setCollectionSponsor(address sponsor) public {368 require(false, stub_error);369 sponsor;370 dummy = 0;371 }372373 // Selector: confirmCollectionSponsorship() 3c50e97a374 function confirmCollectionSponsorship() public {375 require(false, stub_error);376 dummy = 0;377 }378379 // Selector: setCollectionLimit(string,uint32) 6a3841db380 function setCollectionLimit(string memory limit, uint32 value) public {381 require(false, stub_error);382 limit;383 value;384 dummy = 0;385 }386387 // Selector: setCollectionLimit(string,bool) 993b7fba388 function setCollectionLimit(string memory limit, bool value) public {389 require(false, stub_error);390 limit;391 value;392 dummy = 0;393 }394395 // Selector: contractAddress() f6b4dfb4396 function contractAddress() public view returns (address) {397 require(false, stub_error);398 dummy;399 return 0x0000000000000000000000000000000000000000;400 }401402 // Selector: addCollectionAdminSubstrate(uint256) 5730062b403 function addCollectionAdminSubstrate(uint256 newAdmin) public view {404 require(false, stub_error);405 newAdmin;406 dummy;407 }408409 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9410 function removeCollectionAdminSubstrate(uint256 newAdmin) public view {411 require(false, stub_error);412 newAdmin;413 dummy;414 }415416 // Selector: addCollectionAdmin(address) 92e462c7417 function addCollectionAdmin(address newAdmin) public view {418 require(false, stub_error);419 newAdmin;420 dummy;421 }422423 // Selector: removeCollectionAdmin(address) fafd7b42424 function removeCollectionAdmin(address admin) public view {425 require(false, stub_error);426 admin;427 dummy;428 }429430 // Selector: setCollectionNesting(bool) 112d4586431 function setCollectionNesting(bool enable) public {432 require(false, stub_error);433 enable;434 dummy = 0;435 }436437 // Selector: setCollectionNesting(bool,address[]) 64872396438 function setCollectionNesting(bool enable, address[] memory collections)439 public440 {441 require(false, stub_error);442 enable;443 collections;444 dummy = 0;445 }446447 // Selector: setCollectionAccess(uint8) 41835d4c448 function setCollectionAccess(uint8 mode) public {449 require(false, stub_error);450 mode;451 dummy = 0;452 }453454 // Selector: addToCollectionAllowList(address) 67844fe6455 function addToCollectionAllowList(address user) public view {456 require(false, stub_error);457 user;458 dummy;459 }460461 // Selector: removeFromCollectionAllowList(address) 85c51acb462 function removeFromCollectionAllowList(address user) public view {463 require(false, stub_error);464 user;465 dummy;466 }467468 // Selector: setCollectionMintMode(bool) 00018e84469 function setCollectionMintMode(bool mode) public {470 require(false, stub_error);471 mode;472 dummy = 0;473 }474}461475462// Selector: d74d154f476// Selector: d74d154f463contract ERC721UniqueExtensions is Dummy, ERC165 {477contract ERC721UniqueExtensions is Dummy, ERC165 {pallets/nonfungible/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_nonfungible3//! Autogenerated weights for pallet_nonfungible4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:10// target/release/unique-collator10// target/release/unique-collator11// benchmark11// benchmark12// pallet12// --pallet13// --pallet13// pallet-nonfungible14// pallet-nonfungible14// --wasm-execution15// --wasm-execution18// --template19// --template19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs20// --steps=5021// --steps=5021// --repeat=20022// --repeat=8022// --heap-pages=409623// --heap-pages=409623// --output=./pallets/nonfungible/src/weights.rs24// --output=./pallets/nonfungible/src/weights.rs242542 fn approve() -> Weight;43 fn approve() -> Weight;43 fn transfer_from() -> Weight;44 fn transfer_from() -> Weight;44 fn burn_from() -> Weight;45 fn burn_from() -> Weight;45 fn set_property_permissions(b: u32) -> Weight;46 fn set_token_property_permissions(b: u32, ) -> Weight;46 fn set_token_properties(b: u32) -> Weight;47 fn set_token_properties(b: u32, ) -> Weight;47 fn delete_token_properties(b: u32) -> Weight;48 fn delete_token_properties(b: u32, ) -> Weight;48}49}55 // Storage: Nonfungible TokenData (r:0 w:1)56 // Storage: Nonfungible TokenData (r:0 w:1)56 // Storage: Nonfungible Owned (r:0 w:1)57 // Storage: Nonfungible Owned (r:0 w:1)57 fn create_item() -> Weight {58 fn create_item() -> Weight {58 (18_450_000 as Weight)59 (24_135_000 as Weight)59 .saturating_add(T::DbWeight::get().reads(2 as Weight))60 .saturating_add(T::DbWeight::get().reads(2 as Weight))60 .saturating_add(T::DbWeight::get().writes(4 as Weight))61 .saturating_add(T::DbWeight::get().writes(4 as Weight))61 }62 }64 // Storage: Nonfungible TokenData (r:0 w:4)65 // Storage: Nonfungible TokenData (r:0 w:4)65 // Storage: Nonfungible Owned (r:0 w:4)66 // Storage: Nonfungible Owned (r:0 w:4)66 fn create_multiple_items(b: u32, ) -> Weight {67 fn create_multiple_items(b: u32, ) -> Weight {67 (10_228_000 as Weight)68 (21_952_000 as Weight)68 // Standard Error: 1_00069 // Standard Error: 5_00069 .saturating_add((4_392_000 as Weight).saturating_mul(b as Weight))70 .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))70 .saturating_add(T::DbWeight::get().reads(2 as Weight))71 .saturating_add(T::DbWeight::get().reads(2 as Weight))71 .saturating_add(T::DbWeight::get().writes(2 as Weight))72 .saturating_add(T::DbWeight::get().writes(2 as Weight))72 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))73 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))76 // Storage: Nonfungible TokenData (r:0 w:4)77 // Storage: Nonfungible TokenData (r:0 w:4)77 // Storage: Nonfungible Owned (r:0 w:4)78 // Storage: Nonfungible Owned (r:0 w:4)78 fn create_multiple_items_ex(b: u32, ) -> Weight {79 fn create_multiple_items_ex(b: u32, ) -> Weight {79 (6_543_000 as Weight)80 (10_432_000 as Weight)80 // Standard Error: 2_00081 // Standard Error: 6_00081 .saturating_add((7_175_000 as Weight).saturating_mul(b as Weight))82 .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))82 .saturating_add(T::DbWeight::get().reads(1 as Weight))83 .saturating_add(T::DbWeight::get().reads(1 as Weight))83 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))84 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))84 .saturating_add(T::DbWeight::get().writes(1 as Weight))85 .saturating_add(T::DbWeight::get().writes(1 as Weight))85 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))86 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))86 }87 }87 // Storage: Nonfungible TokenData (r:1 w:1)88 // Storage: Nonfungible TokenData (r:1 w:1)89 // Storage: Nonfungible TokenChildren (r:1 w:0)88 // Storage: Nonfungible TokensBurnt (r:1 w:1)90 // Storage: Nonfungible TokensBurnt (r:1 w:1)89 // Storage: Nonfungible AccountBalance (r:1 w:1)91 // Storage: Nonfungible AccountBalance (r:1 w:1)90 // Storage: Nonfungible Allowance (r:1 w:0)92 // Storage: Nonfungible Allowance (r:1 w:0)91 // Storage: Nonfungible Owned (r:0 w:1)93 // Storage: Nonfungible Owned (r:0 w:1)94 // Storage: Nonfungible TokenProperties (r:0 w:1)92 fn burn_item() -> Weight {95 fn burn_item() -> Weight {93 (24_554_000 as Weight)96 (29_798_000 as Weight)94 .saturating_add(T::DbWeight::get().reads(4 as Weight))97 .saturating_add(T::DbWeight::get().reads(5 as Weight))95 .saturating_add(T::DbWeight::get().writes(4 as Weight))98 .saturating_add(T::DbWeight::get().writes(5 as Weight))96 }99 }97 // Storage: Nonfungible TokenChildren (r:1 w:0)100 // Storage: Nonfungible TokenChildren (r:1 w:0)98 // Storage: Nonfungible TokenData (r:1 w:1)101 // Storage: Nonfungible TokenData (r:1 w:1)102 // Storage: Nonfungible Owned (r:0 w:1)105 // Storage: Nonfungible Owned (r:0 w:1)103 // Storage: Nonfungible TokenProperties (r:0 w:1)106 // Storage: Nonfungible TokenProperties (r:0 w:1)104 fn burn_recursively_self_raw() -> Weight {107 fn burn_recursively_self_raw() -> Weight {105 (86_136_000 as Weight)108 (37_955_000 as Weight)106 .saturating_add(T::DbWeight::get().reads(5 as Weight))109 .saturating_add(T::DbWeight::get().reads(5 as Weight))107 .saturating_add(T::DbWeight::get().writes(5 as Weight))110 .saturating_add(T::DbWeight::get().writes(5 as Weight))108 }111 }116 // Storage: Common CollectionById (r:1 w:0)119 // Storage: Common CollectionById (r:1 w:0)117 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {120 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {118 (0 as Weight)121 (0 as Weight)119 // Standard Error: 42_828_000122 // Standard Error: 1_349_000120 .saturating_add((381_478_000 as Weight).saturating_mul(b as Weight))123 .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))121 .saturating_add(T::DbWeight::get().reads(6 as Weight))124 .saturating_add(T::DbWeight::get().reads(7 as Weight))122 .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))125 .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))123 .saturating_add(T::DbWeight::get().writes(5 as Weight))126 .saturating_add(T::DbWeight::get().writes(6 as Weight))124 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))127 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))125 }128 }126 // Storage: Nonfungible TokenData (r:1 w:1)129 // Storage: Nonfungible TokenData (r:1 w:1)127 // Storage: Nonfungible AccountBalance (r:2 w:2)130 // Storage: Nonfungible AccountBalance (r:2 w:2)128 // Storage: Nonfungible Allowance (r:1 w:0)131 // Storage: Nonfungible Allowance (r:1 w:0)129 // Storage: Nonfungible Owned (r:0 w:2)132 // Storage: Nonfungible Owned (r:0 w:2)130 fn transfer() -> Weight {133 fn transfer() -> Weight {131 (28_339_000 as Weight)134 (27_867_000 as Weight)132 .saturating_add(T::DbWeight::get().reads(4 as Weight))135 .saturating_add(T::DbWeight::get().reads(4 as Weight))133 .saturating_add(T::DbWeight::get().writes(5 as Weight))136 .saturating_add(T::DbWeight::get().writes(5 as Weight))134 }137 }135 // Storage: Nonfungible TokenData (r:1 w:0)138 // Storage: Nonfungible TokenData (r:1 w:0)136 // Storage: Nonfungible Allowance (r:1 w:1)139 // Storage: Nonfungible Allowance (r:1 w:1)137 fn approve() -> Weight {140 fn approve() -> Weight {138 (17_616_000 as Weight)141 (18_824_000 as Weight)139 .saturating_add(T::DbWeight::get().reads(2 as Weight))142 .saturating_add(T::DbWeight::get().reads(2 as Weight))140 .saturating_add(T::DbWeight::get().writes(1 as Weight))143 .saturating_add(T::DbWeight::get().writes(1 as Weight))141 }144 }144 // Storage: Nonfungible AccountBalance (r:2 w:2)147 // Storage: Nonfungible AccountBalance (r:2 w:2)145 // Storage: Nonfungible Owned (r:0 w:2)148 // Storage: Nonfungible Owned (r:0 w:2)146 fn transfer_from() -> Weight {149 fn transfer_from() -> Weight {147 (32_196_000 as Weight)150 (32_879_000 as Weight)148 .saturating_add(T::DbWeight::get().reads(4 as Weight))151 .saturating_add(T::DbWeight::get().reads(4 as Weight))149 .saturating_add(T::DbWeight::get().writes(6 as Weight))152 .saturating_add(T::DbWeight::get().writes(6 as Weight))150 }153 }151 // Storage: Nonfungible Allowance (r:1 w:1)154 // Storage: Nonfungible Allowance (r:1 w:1)152 // Storage: Nonfungible TokenData (r:1 w:1)155 // Storage: Nonfungible TokenData (r:1 w:1)156 // Storage: Nonfungible TokenChildren (r:1 w:0)153 // Storage: Nonfungible TokensBurnt (r:1 w:1)157 // Storage: Nonfungible TokensBurnt (r:1 w:1)154 // Storage: Nonfungible AccountBalance (r:1 w:1)158 // Storage: Nonfungible AccountBalance (r:1 w:1)155 // Storage: Nonfungible Owned (r:0 w:1)159 // Storage: Nonfungible Owned (r:0 w:1)160 // Storage: Nonfungible TokenProperties (r:0 w:1)156 fn burn_from() -> Weight {161 fn burn_from() -> Weight {157 (27_580_000 as Weight)162 (37_061_000 as Weight)158 .saturating_add(T::DbWeight::get().reads(4 as Weight))163 .saturating_add(T::DbWeight::get().reads(5 as Weight))159 .saturating_add(T::DbWeight::get().writes(5 as Weight))164 .saturating_add(T::DbWeight::get().writes(6 as Weight))160 }165 }161 // Storage: Common CollectionPropertyPermissions (r:1 w:1)166 // Storage: Common CollectionPropertyPermissions (r:1 w:1)162 fn set_property_permissions(b: u32, ) -> Weight {167 fn set_token_property_permissions(b: u32, ) -> Weight {163 (0 as Weight)168 (0 as Weight)164 // Standard Error: 3_432_000169 // Standard Error: 57_000165 .saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))170 .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))166 .saturating_add(T::DbWeight::get().reads(1 as Weight))171 .saturating_add(T::DbWeight::get().reads(1 as Weight))167 .saturating_add(T::DbWeight::get().writes(1 as Weight))172 .saturating_add(T::DbWeight::get().writes(1 as Weight))168 }173 }171 // Storage: Nonfungible TokenProperties (r:1 w:1)176 // Storage: Nonfungible TokenProperties (r:1 w:1)172 fn set_token_properties(b: u32, ) -> Weight {177 fn set_token_properties(b: u32, ) -> Weight {173 (0 as Weight)178 (0 as Weight)174 // Standard Error: 158_583_000179 // Standard Error: 2_278_000175 .saturating_add((4_707_700_000 as Weight).saturating_mul(b as Weight))180 .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))176 .saturating_add(T::DbWeight::get().reads(3 as Weight))181 .saturating_add(T::DbWeight::get().reads(3 as Weight))177 .saturating_add(T::DbWeight::get().writes(1 as Weight))182 .saturating_add(T::DbWeight::get().writes(1 as Weight))178 }183 }181 // Storage: Nonfungible TokenProperties (r:1 w:1)186 // Storage: Nonfungible TokenProperties (r:1 w:1)182 fn delete_token_properties(b: u32, ) -> Weight {187 fn delete_token_properties(b: u32, ) -> Weight {183 (0 as Weight)188 (0 as Weight)184 // Standard Error: 169_018_000189 // Standard Error: 2_234_000185 .saturating_add((4_783_967_000 as Weight).saturating_mul(b as Weight))190 .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))186 .saturating_add(T::DbWeight::get().reads(3 as Weight))191 .saturating_add(T::DbWeight::get().reads(3 as Weight))187 .saturating_add(T::DbWeight::get().writes(1 as Weight))192 .saturating_add(T::DbWeight::get().writes(1 as Weight))188 }193 }195 // Storage: Nonfungible TokenData (r:0 w:1)200 // Storage: Nonfungible TokenData (r:0 w:1)196 // Storage: Nonfungible Owned (r:0 w:1)201 // Storage: Nonfungible Owned (r:0 w:1)197 fn create_item() -> Weight {202 fn create_item() -> Weight {198 (18_450_000 as Weight)203 (24_135_000 as Weight)199 .saturating_add(RocksDbWeight::get().reads(2 as Weight))204 .saturating_add(RocksDbWeight::get().reads(2 as Weight))200 .saturating_add(RocksDbWeight::get().writes(4 as Weight))205 .saturating_add(RocksDbWeight::get().writes(4 as Weight))201 }206 }204 // Storage: Nonfungible TokenData (r:0 w:4)209 // Storage: Nonfungible TokenData (r:0 w:4)205 // Storage: Nonfungible Owned (r:0 w:4)210 // Storage: Nonfungible Owned (r:0 w:4)206 fn create_multiple_items(b: u32, ) -> Weight {211 fn create_multiple_items(b: u32, ) -> Weight {207 (10_228_000 as Weight)212 (21_952_000 as Weight)208 // Standard Error: 1_000213 // Standard Error: 5_000209 .saturating_add((4_392_000 as Weight).saturating_mul(b as Weight))214 .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))210 .saturating_add(RocksDbWeight::get().reads(2 as Weight))215 .saturating_add(RocksDbWeight::get().reads(2 as Weight))211 .saturating_add(RocksDbWeight::get().writes(2 as Weight))216 .saturating_add(RocksDbWeight::get().writes(2 as Weight))212 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))217 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))216 // Storage: Nonfungible TokenData (r:0 w:4)221 // Storage: Nonfungible TokenData (r:0 w:4)217 // Storage: Nonfungible Owned (r:0 w:4)222 // Storage: Nonfungible Owned (r:0 w:4)218 fn create_multiple_items_ex(b: u32, ) -> Weight {223 fn create_multiple_items_ex(b: u32, ) -> Weight {219 (6_543_000 as Weight)224 (10_432_000 as Weight)220 // Standard Error: 2_000225 // Standard Error: 6_000221 .saturating_add((7_175_000 as Weight).saturating_mul(b as Weight))226 .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))222 .saturating_add(RocksDbWeight::get().reads(1 as Weight))227 .saturating_add(RocksDbWeight::get().reads(1 as Weight))223 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))228 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))224 .saturating_add(RocksDbWeight::get().writes(1 as Weight))229 .saturating_add(RocksDbWeight::get().writes(1 as Weight))225 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))230 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))226 }231 }227 // Storage: Nonfungible TokenData (r:1 w:1)232 // Storage: Nonfungible TokenData (r:1 w:1)233 // Storage: Nonfungible TokenChildren (r:1 w:0)228 // Storage: Nonfungible TokensBurnt (r:1 w:1)234 // Storage: Nonfungible TokensBurnt (r:1 w:1)229 // Storage: Nonfungible AccountBalance (r:1 w:1)235 // Storage: Nonfungible AccountBalance (r:1 w:1)230 // Storage: Nonfungible Allowance (r:1 w:0)236 // Storage: Nonfungible Allowance (r:1 w:0)231 // Storage: Nonfungible Owned (r:0 w:1)237 // Storage: Nonfungible Owned (r:0 w:1)238 // Storage: Nonfungible TokenProperties (r:0 w:1)232 fn burn_item() -> Weight {239 fn burn_item() -> Weight {233 (24_554_000 as Weight)240 (29_798_000 as Weight)234 .saturating_add(RocksDbWeight::get().reads(4 as Weight))241 .saturating_add(RocksDbWeight::get().reads(5 as Weight))235 .saturating_add(RocksDbWeight::get().writes(4 as Weight))242 .saturating_add(RocksDbWeight::get().writes(5 as Weight))236 }243 }237 // Storage: Nonfungible TokenChildren (r:1 w:0)244 // Storage: Nonfungible TokenChildren (r:1 w:0)238 // Storage: Nonfungible TokenData (r:1 w:1)245 // Storage: Nonfungible TokenData (r:1 w:1)242 // Storage: Nonfungible Owned (r:0 w:1)249 // Storage: Nonfungible Owned (r:0 w:1)243 // Storage: Nonfungible TokenProperties (r:0 w:1)250 // Storage: Nonfungible TokenProperties (r:0 w:1)244 fn burn_recursively_self_raw() -> Weight {251 fn burn_recursively_self_raw() -> Weight {245 (86_136_000 as Weight)252 (37_955_000 as Weight)246 .saturating_add(RocksDbWeight::get().reads(5 as Weight))253 .saturating_add(RocksDbWeight::get().reads(5 as Weight))247 .saturating_add(RocksDbWeight::get().writes(5 as Weight))254 .saturating_add(RocksDbWeight::get().writes(5 as Weight))248 }255 }256 // Storage: Common CollectionById (r:1 w:0)263 // Storage: Common CollectionById (r:1 w:0)257 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {264 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {258 (0 as Weight)265 (0 as Weight)259 // Standard Error: 42_828_000266 // Standard Error: 1_349_000260 .saturating_add((381_478_000 as Weight).saturating_mul(b as Weight))267 .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))261 .saturating_add(RocksDbWeight::get().reads(6 as Weight))268 .saturating_add(RocksDbWeight::get().reads(7 as Weight))262 .saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))269 .saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))263 .saturating_add(RocksDbWeight::get().writes(5 as Weight))270 .saturating_add(RocksDbWeight::get().writes(6 as Weight))264 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))271 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))265 }272 }266 // Storage: Nonfungible TokenData (r:1 w:1)273 // Storage: Nonfungible TokenData (r:1 w:1)267 // Storage: Nonfungible AccountBalance (r:2 w:2)274 // Storage: Nonfungible AccountBalance (r:2 w:2)268 // Storage: Nonfungible Allowance (r:1 w:0)275 // Storage: Nonfungible Allowance (r:1 w:0)269 // Storage: Nonfungible Owned (r:0 w:2)276 // Storage: Nonfungible Owned (r:0 w:2)270 fn transfer() -> Weight {277 fn transfer() -> Weight {271 (28_339_000 as Weight)278 (27_867_000 as Weight)272 .saturating_add(RocksDbWeight::get().reads(4 as Weight))279 .saturating_add(RocksDbWeight::get().reads(4 as Weight))273 .saturating_add(RocksDbWeight::get().writes(5 as Weight))280 .saturating_add(RocksDbWeight::get().writes(5 as Weight))274 }281 }275 // Storage: Nonfungible TokenData (r:1 w:0)282 // Storage: Nonfungible TokenData (r:1 w:0)276 // Storage: Nonfungible Allowance (r:1 w:1)283 // Storage: Nonfungible Allowance (r:1 w:1)277 fn approve() -> Weight {284 fn approve() -> Weight {278 (17_616_000 as Weight)285 (18_824_000 as Weight)279 .saturating_add(RocksDbWeight::get().reads(2 as Weight))286 .saturating_add(RocksDbWeight::get().reads(2 as Weight))280 .saturating_add(RocksDbWeight::get().writes(1 as Weight))287 .saturating_add(RocksDbWeight::get().writes(1 as Weight))281 }288 }284 // Storage: Nonfungible AccountBalance (r:2 w:2)291 // Storage: Nonfungible AccountBalance (r:2 w:2)285 // Storage: Nonfungible Owned (r:0 w:2)292 // Storage: Nonfungible Owned (r:0 w:2)286 fn transfer_from() -> Weight {293 fn transfer_from() -> Weight {287 (32_196_000 as Weight)294 (32_879_000 as Weight)288 .saturating_add(RocksDbWeight::get().reads(4 as Weight))295 .saturating_add(RocksDbWeight::get().reads(4 as Weight))289 .saturating_add(RocksDbWeight::get().writes(6 as Weight))296 .saturating_add(RocksDbWeight::get().writes(6 as Weight))290 }297 }291 // Storage: Nonfungible Allowance (r:1 w:1)298 // Storage: Nonfungible Allowance (r:1 w:1)292 // Storage: Nonfungible TokenData (r:1 w:1)299 // Storage: Nonfungible TokenData (r:1 w:1)300 // Storage: Nonfungible TokenChildren (r:1 w:0)293 // Storage: Nonfungible TokensBurnt (r:1 w:1)301 // Storage: Nonfungible TokensBurnt (r:1 w:1)294 // Storage: Nonfungible AccountBalance (r:1 w:1)302 // Storage: Nonfungible AccountBalance (r:1 w:1)295 // Storage: Nonfungible Owned (r:0 w:1)303 // Storage: Nonfungible Owned (r:0 w:1)304 // Storage: Nonfungible TokenProperties (r:0 w:1)296 fn burn_from() -> Weight {305 fn burn_from() -> Weight {297 (27_580_000 as Weight)306 (37_061_000 as Weight)298 .saturating_add(RocksDbWeight::get().reads(4 as Weight))307 .saturating_add(RocksDbWeight::get().reads(5 as Weight))299 .saturating_add(RocksDbWeight::get().writes(5 as Weight))308 .saturating_add(RocksDbWeight::get().writes(6 as Weight))300 }309 }301 // Storage: Common CollectionPropertyPermissions (r:1 w:1)310 // Storage: Common CollectionPropertyPermissions (r:1 w:1)302 fn set_property_permissions(b: u32, ) -> Weight {311 fn set_token_property_permissions(b: u32, ) -> Weight {303 (0 as Weight)312 (0 as Weight)304 // Standard Error: 3_432_000313 // Standard Error: 57_000305 .saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))314 .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))306 .saturating_add(RocksDbWeight::get().reads(1 as Weight))315 .saturating_add(RocksDbWeight::get().reads(1 as Weight))307 .saturating_add(RocksDbWeight::get().writes(1 as Weight))316 .saturating_add(RocksDbWeight::get().writes(1 as Weight))308 }317 }311 // Storage: Nonfungible TokenProperties (r:1 w:1)320 // Storage: Nonfungible TokenProperties (r:1 w:1)312 fn set_token_properties(b: u32, ) -> Weight {321 fn set_token_properties(b: u32, ) -> Weight {313 (0 as Weight)322 (0 as Weight)314 // Standard Error: 158_583_000323 // Standard Error: 2_278_000315 .saturating_add((4_707_700_000 as Weight).saturating_mul(b as Weight))324 .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))316 .saturating_add(RocksDbWeight::get().reads(3 as Weight))325 .saturating_add(RocksDbWeight::get().reads(3 as Weight))317 .saturating_add(RocksDbWeight::get().writes(1 as Weight))326 .saturating_add(RocksDbWeight::get().writes(1 as Weight))318 }327 }321 // Storage: Nonfungible TokenProperties (r:1 w:1)330 // Storage: Nonfungible TokenProperties (r:1 w:1)322 fn delete_token_properties(b: u32, ) -> Weight {331 fn delete_token_properties(b: u32, ) -> Weight {323 (0 as Weight)332 (0 as Weight)324 // Standard Error: 169_018_000333 // Standard Error: 2_234_000325 .saturating_add((4_783_967_000 as Weight).saturating_mul(b as Weight))334 .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))326 .saturating_add(RocksDbWeight::get().reads(3 as Weight))335 .saturating_add(RocksDbWeight::get().reads(3 as Weight))327 .saturating_add(RocksDbWeight::get().writes(1 as Weight))336 .saturating_add(RocksDbWeight::get().writes(1 as Weight))328 }337 }pallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth7 BoundedVec,7 BoundedVec,8};8};910use crate::{Config, Pallet, Call};9use sp_runtime::Permill;1011use up_data_structs::*;1213use super::*;111412const SEED: u32 = 1;15const SEED: u32 = 1;131614fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {17fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {18 vec![b'A'; S::get() as usize].try_into().expect("size == S")19}2021fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {15 vec![0; S::get() as usize].try_into().expect("size == S")22 vec![0; S::get() as usize].try_into().expect("size == S")16}23}2425fn create_basic_resource() -> RmrkBasicResource {26 RmrkBasicResource {27 src: Some(create_data()),28 metadata: Some(create_data()),29 license: Some(create_data()),30 thumb: Some(create_data()),31 }32}3334fn create_composable_resource() -> RmrkComposableResource {35 RmrkComposableResource {36 parts: create_u32_array(),37 base: 100,38 src: Some(create_data()),39 metadata: Some(create_data()),40 license: Some(create_data()),41 thumb: Some(create_data()),42 }43}4445fn create_slot_resource() -> RmrkSlotResource {46 RmrkSlotResource {47 base: 100,48 slot: 200,49 src: Some(create_data()),50 metadata: Some(create_data()),51 license: Some(create_data()),52 thumb: Some(create_data()),53 }54}5556fn create_max_resource_types_array<S: Get<u32>>(num: usize) -> BoundedVec<RmrkResourceTypes, S> {57 vec![RmrkResourceTypes::Composable(create_composable_resource()); num]58 .try_into()59 .expect("num <= S")60}6162fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {63 <T as pallet_common::Config>::Currency::deposit_creating(64 owner,65 T::CollectionCreationPrice::get(),66 );6768 let metadata = create_data();69 let max = None;70 let symbol = create_data();7172 <Pallet<T>>::create_collection(73 RawOrigin::Signed(owner.clone()).into(),74 metadata,75 max,76 symbol,77 )78}7980fn create_nft<T: Config>(owner: &T::AccountId, collection_id: RmrkCollectionId) -> DispatchResult {81 let royalty_recipient = Some(owner.clone());82 let royalty_amount = Some(Permill::from_percent(25));83 let metadata = create_data();84 let transferable = true;8586 <Pallet<T>>::mint_nft(87 RawOrigin::Signed(owner.clone()).into(),88 None,89 collection_id,90 royalty_recipient,91 royalty_amount,92 metadata,93 transferable,94 None,95 )96}9798struct NftBuilder {99 collection_id: RmrkCollectionId,100 current_nft_id: RmrkNftId,101}102103impl NftBuilder {104 fn new(collection_id: RmrkCollectionId) -> Self {105 Self {106 collection_id,107 current_nft_id: 0,108 }109 }110111 fn build<T: Config>(&mut self, owner: &T::AccountId) -> Result<RmrkNftId, DispatchError> {112 create_nft::<T>(owner, self.collection_id)?;113 self.current_nft_id += 1;114115 Ok(self.current_nft_id)116 }117118 fn build_tower<T: Config>(119 &mut self,120 owner: &T::AccountId,121 height: u32,122 ) -> Result<(RmrkNftId, RmrkNftId), DispatchError> {123 self.build::<T>(owner)?;124125 let root_nft_id = self.current_nft_id;126 let mut prev_nft_id = root_nft_id;127128 for _ in 0..height {129 self.build::<T>(owner)?;130131 let new_owner =132 <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(133 self.collection_id,134 prev_nft_id,135 );136137 <Pallet<T>>::send(138 RawOrigin::Signed(owner.clone()).into(),139 self.collection_id,140 self.current_nft_id,141 new_owner,142 )?;143144 prev_nft_id = self.current_nft_id;145 }146147 let deepest_nft_id = self.current_nft_id;148149 Ok((root_nft_id, deepest_nft_id))150 }151152 fn build_wide_tree<T: Config>(153 &mut self,154 owner: &T::AccountId,155 width: u32,156 ) -> Result<RmrkNftId, DispatchError> {157 self.build::<T>(owner)?;158159 let root_nft_id = self.current_nft_id;160161 let root_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(162 self.collection_id,163 root_nft_id,164 );165166 for _ in 0..width {167 self.build::<T>(owner)?;168169 <Pallet<T>>::send(170 RawOrigin::Signed(owner.clone()).into(),171 self.collection_id,172 self.current_nft_id,173 root_owner.clone(),174 )?;175 }176177 Ok(root_nft_id)178 }179}1718018benchmarks! {181benchmarks! {19 create_collection {182 create_collection {20 let caller = account("caller", 0, SEED);183 let caller = account("caller", 0, SEED);21 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());184 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());22 let metadata = create_data();185 let metadata = create_data();23 // TODO: Fix CollectionTokenPrefixLimitExceeded with create_data186 let max = None;24 let symbol = vec![].try_into().expect("0 <= x");187 let symbol = create_data();188 }: _(RawOrigin::Signed(caller), metadata, max, symbol)189190 destroy_collection {191 let caller = account("caller", 0, SEED);192193 create_max_collection::<T>(&caller)?;194 let collection_id = 0;195 }: _(RawOrigin::Signed(caller), collection_id)196197 change_collection_issuer {198 let caller: T::AccountId = account("caller", 0, SEED);199200 create_max_collection::<T>(&caller)?;201 let collection_id = 0;202203 let new_owner: T::AccountId = account("new_owner", 0, SEED);204205 let new_owner_source = T::Lookup::unlookup(new_owner);206 }: _(RawOrigin::Signed(caller), collection_id, new_owner_source)207208 lock_collection {209 let caller: T::AccountId = account("caller", 0, SEED);210211 create_max_collection::<T>(&caller)?;212 let collection_id = 0;213 }: _(RawOrigin::Signed(caller), collection_id)214215 mint_nft {216 let b in 0..100;217218 let caller: T::AccountId = account("caller", 0, SEED);219220 create_max_collection::<T>(&caller)?;221 let collection_id = 0;222 let owner = caller.clone();223224 let royalty_recipient = Some(caller.clone());225 let royalty_amount = Some(Permill::from_percent(25));226 let metadata = create_data();227 let transferable = true;25 }: _(RawOrigin::Signed(caller), metadata, None, symbol)228 }: _(229 RawOrigin::Signed(caller),230 None,231 collection_id,232 royalty_recipient,233 royalty_amount,234 metadata,235 transferable,236 Some(create_max_resource_types_array(b as usize))237 )238239 burn_nft {240 let b in 0..200;241242 let caller: T::AccountId = account("caller", 0, SEED);243 create_max_collection::<T>(&caller)?;244 let collection_id = 0;245246 let mut nft_builder = NftBuilder::new(collection_id);247 let root_nft_id = nft_builder.build_wide_tree::<T>(&caller, b)?;248 let max_burns = b + 1;249 }: _(250 RawOrigin::Signed(caller),251 collection_id,252 root_nft_id,253 max_burns254 )255256 send {257 let caller: T::AccountId = account("caller", 0, SEED);258 create_max_collection::<T>(&caller)?;259 let collection_id = 0;260261 let mut nft_builder = NftBuilder::new(collection_id);262 let src_nft_id = nft_builder.build::<T>(&caller)?;263 let (_, target_nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;264 }: _(265 RawOrigin::Signed(caller),266 collection_id,267 src_nft_id,268 <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)269 )270271 accept_nft {272 let caller: T::AccountId = account("caller", 0, SEED);273 let sender: T::AccountId = account("sender", 0, SEED);274275 create_max_collection::<T>(&sender)?;276 let src_collection_id = 0;277278 create_max_collection::<T>(&caller)?;279 let target_collection_id = 1;280281 let mut src_nft_builder = NftBuilder::new(src_collection_id);282 let src_nft_id = src_nft_builder.build::<T>(&sender)?;283284 let mut target_nft_builder = NftBuilder::new(target_collection_id);285 let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;286 let (_, target_nft_id) = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;287288 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(289 target_collection_id,290 fake_target_nft_id291 );292293 let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(294 target_collection_id,295 target_nft_id296 );297298 <Pallet<T>>::send(299 RawOrigin::Signed(sender.clone()).into(),300 src_collection_id,301 src_nft_id,302 new_owner,303 )?;304 }: _(305 RawOrigin::Signed(caller),306 src_collection_id,307 src_nft_id,308 actual_new_owner309 )310311 reject_nft {312 let caller: T::AccountId = account("caller", 0, SEED);313 let sender: T::AccountId = account("sender", 0, SEED);314315 create_max_collection::<T>(&sender)?;316 let src_collection_id = 0;317318 create_max_collection::<T>(&caller)?;319 let target_collection_id = 1;320321 let mut src_nft_builder = NftBuilder::new(src_collection_id);322 let (src_root_nft_id, _) = src_nft_builder.build_tower::<T>(&sender, NESTING_BUDGET - 1)?;323324 let mut target_nft_builder = NftBuilder::new(target_collection_id);325 let target_nft_id = target_nft_builder.build::<T>(&caller)?;326327 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(328 target_collection_id,329 target_nft_id330 );331332 <Pallet<T>>::send(333 RawOrigin::Signed(sender.clone()).into(),334 src_collection_id,335 src_root_nft_id,336 new_owner,337 )?;338 }: _(339 RawOrigin::Signed(caller),340 src_collection_id,341 src_root_nft_id342 )343344 set_property {345 let caller: T::AccountId = account("caller", 0, SEED);346 create_max_collection::<T>(&caller)?;347 let collection_id = 0;348349 let mut nft_builder = NftBuilder::new(collection_id);350 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;351352 let key = create_data();353 let value = create_data();354 }: _(355 RawOrigin::Signed(caller),356 collection_id,357 Some(nft_id),358 key,359 value360 )361362 set_priority {363 let caller: T::AccountId = account("caller", 0, SEED);364 create_max_collection::<T>(&caller)?;365 let collection_id = 0;366367 let mut nft_builder = NftBuilder::new(collection_id);368 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;369 let priorities = create_u32_array();370 }: _(371 RawOrigin::Signed(caller),372 collection_id,373 nft_id,374 priorities375 )376377 add_basic_resource {378 let caller: T::AccountId = account("caller", 0, SEED);379380 create_max_collection::<T>(&caller)?;381 let collection_id = 0;382383 let mut nft_builder = NftBuilder::new(collection_id);384 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;385 let resource = create_basic_resource();386 }: _(387 RawOrigin::Signed(caller),388 collection_id,389 nft_id,390 resource391 )392393 add_composable_resource {394 let caller: T::AccountId = account("caller", 0, SEED);395396 create_max_collection::<T>(&caller)?;397 let collection_id = 0;398399 let mut nft_builder = NftBuilder::new(collection_id);400 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;401 let resource = create_composable_resource();402 }: _(403 RawOrigin::Signed(caller),404 collection_id,405 nft_id,406 resource407 )408409 add_slot_resource {410 let caller: T::AccountId = account("caller", 0, SEED);411412 create_max_collection::<T>(&caller)?;413 let collection_id = 0;414415 let mut nft_builder = NftBuilder::new(collection_id);416 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;417 let resource = create_slot_resource();418 }: _(419 RawOrigin::Signed(caller),420 collection_id,421 nft_id,422 resource423 )424425 remove_resource {426 let caller: T::AccountId = account("caller", 0, SEED);427428 create_max_collection::<T>(&caller)?;429 let collection_id = 0;430431 let mut nft_builder = NftBuilder::new(collection_id);432 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;433 let resource = create_basic_resource();434435 <Pallet<T>>::add_basic_resource(436 RawOrigin::Signed(caller.clone()).into(),437 collection_id,438 nft_id,439 resource440 )?;441442 let resource_id = 0;443 }: _(444 RawOrigin::Signed(caller),445 collection_id,446 nft_id,447 resource_id448 )449450 accept_resource {451 let caller: T::AccountId = account("caller", 0, SEED);452 let admin: T::AccountId = account("admin", 0, SEED);453454 create_max_collection::<T>(&admin)?;455 let collection_id = 0;456457 let mut nft_builder = NftBuilder::new(collection_id);458 let root_nft_id = 1;459 let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;460 let resource = create_basic_resource();461462 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());463464 <Pallet<T>>::send(465 RawOrigin::Signed(admin.clone()).into(),466 collection_id,467 root_nft_id,468 new_owner,469 )?;470471 <Pallet<T>>::add_basic_resource(472 RawOrigin::Signed(admin.clone()).into(),473 collection_id,474 nested_nft_id,475 resource476 )?;477478 let resource_id = 0;479 }: _(480 RawOrigin::Signed(caller),481 collection_id,482 nested_nft_id,483 resource_id484 )485486 accept_resource_removal {487 let caller: T::AccountId = account("caller", 0, SEED);488 let admin: T::AccountId = account("admin", 0, SEED);489490 create_max_collection::<T>(&admin)?;491 let collection_id = 0;492493 let mut nft_builder = NftBuilder::new(collection_id);494 let root_nft_id = 1;495 let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;496 let resource = create_basic_resource();497498 <Pallet<T>>::add_basic_resource(499 RawOrigin::Signed(admin.clone()).into(),500 collection_id,501 nested_nft_id,502 resource503 )?;504505 let resource_id = 0;506507 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());508509 <Pallet<T>>::send(510 RawOrigin::Signed(admin.clone()).into(),511 collection_id,512 root_nft_id,513 new_owner,514 )?;515516 <Pallet<T>>::remove_resource(517 RawOrigin::Signed(admin).into(),518 collection_id,519 nested_nft_id,520 resource_id521 )?;522 }: _(523 RawOrigin::Signed(caller),524 collection_id,525 nested_nft_id,526 resource_id527 )26}528}27529pallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth35pub mod benchmarking;35pub mod benchmarking;36pub mod misc;36pub mod misc;37pub mod property;37pub mod property;38pub mod rpc;38pub mod weights;39pub mod weights;394040pub type SelfWeightOf<T> = <T as Config>::WeightInfo;41pub type SelfWeightOf<T> = <T as Config>::WeightInfo;454646use RmrkProperty::*;47use RmrkProperty::*;474848const NESTING_BUDGET: u32 = 5;49pub const NESTING_BUDGET: u32 = 5;495050#[frame_support::pallet]51#[frame_support::pallet]51pub mod pallet {52pub mod pallet {68 pub type UniqueCollectionId<T: Config> =69 pub type UniqueCollectionId<T: Config> =69 StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;70 StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;707171 #[pallet::storage]72 pub type RmrkInernalCollectionId<T: Config> =73 StorageMap<_, Twox64Concat, CollectionId, RmrkCollectionId, ValueQuery>;7475 #[pallet::pallet]72 #[pallet::pallet]76 #[pallet::generate_store(pub(super) trait Store)]73 #[pallet::generate_store(pub(super) trait Store)]77 pub struct Pallet<T>(_);74 pub struct Pallet<T>(_);158 NftTypeEncodeError,155 NftTypeEncodeError,159 RmrkPropertyKeyIsTooLong,156 RmrkPropertyKeyIsTooLong,160 RmrkPropertyValueIsTooLong,157 RmrkPropertyValueIsTooLong,158 RmrkPropertyIsNotFound,159 UnableToDecodeRmrkData,161160162 /* RMRK compatible events */161 /* RMRK compatible events */163 CollectionNotEmpty,162 CollectionNotEmpty,171 CannotSendToDescendentOrSelf,170 CannotSendToDescendentOrSelf,172 CannotAcceptNonOwnedNft,171 CannotAcceptNonOwnedNft,173 CannotRejectNonOwnedNft,172 CannotRejectNonOwnedNft,173 CannotRejectNonPendingNft,174 ResourceNotPending,174 ResourceNotPending,175 NoAvailableResourceId,175 }176 }176177177 #[pallet::call]178 #[pallet::call]202 permissions: Some(CollectionPermissions {203 permissions: Some(CollectionPermissions {203 nesting: Some(NestingPermissions {204 nesting: Some(NestingPermissions {204 token_owner: true,205 token_owner: true,205 admin: false,206 collection_admin: false,206 restricted: None,207 restricted: None,207208208 permissive: false,209 permissive: false,224 let rmrk_collection_id = <CollectionIndex<T>>::get();225 let rmrk_collection_id = <CollectionIndex<T>>::get();225226226 <UniqueCollectionId<T>>::insert(rmrk_collection_id, unique_collection_id);227 <UniqueCollectionId<T>>::insert(rmrk_collection_id, unique_collection_id);227 <RmrkInernalCollectionId<T>>::insert(unique_collection_id, rmrk_collection_id);228228229 <PalletCommon<T>>::set_scoped_collection_property(230 unique_collection_id,231 PropertyScope::Rmrk,232 Self::rmrk_property(RmrkInternalCollectionId, &rmrk_collection_id)?,233 )?;234229 <CollectionIndex<T>>::mutate(|n| *n += 1);235 <CollectionIndex<T>>::mutate(|n| *n += 1);230236231 Self::deposit_event(Event::CollectionCreated {237 Self::deposit_event(Event::CollectionCreated {237 }243 }238244239 /// destroy collection245 /// destroy collection240 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]241 #[transactional]246 #[transactional]247 #[pallet::weight(<SelfWeightOf<T>>::destroy_collection())]242 pub fn destroy_collection(248 pub fn destroy_collection(243 origin: OriginFor<T>,249 origin: OriginFor<T>,244 collection_id: RmrkCollectionId,250 collection_id: RmrkCollectionId,269 /// - `origin`: sender of the transaction275 /// - `origin`: sender of the transaction270 /// - `collection_id`: collection id of the nft to change issuer of276 /// - `collection_id`: collection id of the nft to change issuer of271 /// - `new_issuer`: Collection's new issuer277 /// - `new_issuer`: Collection's new issuer272 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]273 #[transactional]278 #[transactional]279 #[pallet::weight(<SelfWeightOf<T>>::change_collection_issuer())]274 pub fn change_collection_issuer(280 pub fn change_collection_issuer(275 origin: OriginFor<T>,281 origin: OriginFor<T>,276 collection_id: RmrkCollectionId,282 collection_id: RmrkCollectionId,300 }306 }301307302 /// lock collection308 /// lock collection303 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]304 #[transactional]309 #[transactional]310 #[pallet::weight(<SelfWeightOf<T>>::lock_collection())]305 pub fn lock_collection(311 pub fn lock_collection(306 origin: OriginFor<T>,312 origin: OriginFor<T>,307 collection_id: RmrkCollectionId,313 collection_id: RmrkCollectionId,341 /// - `royalty`: Permillage reward from each trade for the Recipient347 /// - `royalty`: Permillage reward from each trade for the Recipient342 /// - `metadata`: Arbitrary data about an nft, e.g. IPFS hash348 /// - `metadata`: Arbitrary data about an nft, e.g. IPFS hash343 /// - `transferable`: Ability to transfer this NFT349 /// - `transferable`: Ability to transfer this NFT344 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]345 #[transactional]350 #[transactional]351 #[pallet::weight(<SelfWeightOf<T>>::mint_nft(resources.as_ref().map(|r| r.len() as u32).unwrap_or(0)))]346 pub fn mint_nft(352 pub fn mint_nft(347 origin: OriginFor<T>,353 origin: OriginFor<T>,348 owner: T::AccountId,354 owner: Option<T::AccountId>,349 collection_id: RmrkCollectionId,355 collection_id: RmrkCollectionId,350 recipient: Option<T::AccountId>,356 recipient: Option<T::AccountId>,351 royalty_amount: Option<Permill>,357 royalty_amount: Option<Permill>,352 metadata: RmrkString,358 metadata: RmrkString,353 transferable: bool,359 transferable: bool,360 resources: Option<BoundedVec<RmrkResourceTypes, MaxResourcesOnMint>>,354 ) -> DispatchResult {361 ) -> DispatchResult {355 let sender = ensure_signed(origin)?;362 let sender = ensure_signed(origin)?;356 let sender = T::CrossAccountId::from_sub(sender);363 let cross_sender = T::CrossAccountId::from_sub(sender.clone());364365 let owner = owner.unwrap_or(sender.clone());357 let cross_owner = T::CrossAccountId::from_sub(owner.clone());366 let cross_owner = T::CrossAccountId::from_sub(owner.clone());358367359 let collection = Self::get_typed_nft_collection(368 let collection = Self::get_typed_nft_collection(368 });377 });369378370 let nft_id = Self::create_nft(379 let nft_id = Self::create_nft(371 &sender,380 &cross_sender,372 &cross_owner,381 &cross_owner,373 &collection,382 &collection,374 [383 [378 Self::rmrk_property(RoyaltyInfo, &royalty_info)?,387 Self::rmrk_property(RoyaltyInfo, &royalty_info)?,379 Self::rmrk_property(Metadata, &metadata)?,388 Self::rmrk_property(Metadata, &metadata)?,380 Self::rmrk_property(Equipped, &false)?,389 Self::rmrk_property(Equipped, &false)?,381 Self::rmrk_property(382 ResourceCollection,383 &Self::init_collection(384 sender.clone(),385 CreateCollectionData {386 ..Default::default()387 },388 [Self::rmrk_property(389 CollectionType,390 &misc::CollectionType::Resource,391 )?]392 .into_iter(),393 )?,394 )?, // todo possibly add limits to the collection if rmrk warrants them395 Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,390 Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,391 Self::rmrk_property(NextResourceId, &(0 as RmrkResourceId))?,396 ]392 ]397 .into_iter(),393 .into_iter(),398 )394 )401 err => Self::map_unique_err_to_proxy(err),397 err => Self::map_unique_err_to_proxy(err),402 })?;398 })?;403399400 if let Some(resources) = resources {401 for resource in resources {402 Self::resource_add(sender.clone(), collection.id, nft_id, resource)?;403 }404 }405404 Self::deposit_event(Event::NftMinted {406 Self::deposit_event(Event::NftMinted {405 owner,407 owner,406 collection_id,408 collection_id,411 }413 }412414413 /// burn nft415 /// burn nft414 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]415 #[transactional]416 #[transactional]417 #[pallet::weight(<SelfWeightOf<T>>::burn_nft(*max_burns))]416 pub fn burn_nft(418 pub fn burn_nft(417 origin: OriginFor<T>,419 origin: OriginFor<T>,418 collection_id: RmrkCollectionId,420 collection_id: RmrkCollectionId,419 nft_id: RmrkNftId,421 nft_id: RmrkNftId,422 max_burns: u32,420 ) -> DispatchResult {423 ) -> DispatchResult {421 let sender = ensure_signed(origin)?;424 let sender = ensure_signed(origin)?;422 let cross_sender = T::CrossAccountId::from_sub(sender.clone());425 let cross_sender = T::CrossAccountId::from_sub(sender.clone());431 cross_sender,434 cross_sender,432 Self::unique_collection_id(collection_id)?,435 Self::unique_collection_id(collection_id)?,433 nft_id.into(),436 nft_id.into(),437 max_burns,438 <Error<T>>::NoPermission,434 )439 )435 .map_err(Self::map_unique_err_to_proxy)?;440 .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;436441437 Self::deposit_event(Event::NFTBurned {442 Self::deposit_event(Event::NFTBurned {438 owner: sender,443 owner: sender,449 /// - `rmrk_collection_id`: collection id of the nft to be transferred454 /// - `rmrk_collection_id`: collection id of the nft to be transferred450 /// - `rmrk_nft_id`: nft id of the nft to be transferred455 /// - `rmrk_nft_id`: nft id of the nft to be transferred451 /// - `new_owner`: new owner of the nft which can be either an account or a NFT456 /// - `new_owner`: new owner of the nft which can be either an account or a NFT452 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]453 #[transactional]457 #[transactional]458 #[pallet::weight(<SelfWeightOf<T>>::send())]454 pub fn send(459 pub fn send(455 origin: OriginFor<T>,460 origin: OriginFor<T>,456 rmrk_collection_id: RmrkCollectionId,461 rmrk_collection_id: RmrkCollectionId,561 /// - `rmrk_nft_id`: nft id of the nft to be accepted566 /// - `rmrk_nft_id`: nft id of the nft to be accepted562 /// - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was567 /// - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was563 /// sent to568 /// sent to564 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]565 #[transactional]569 #[transactional]570 #[pallet::weight(<SelfWeightOf<T>>::accept_nft())]566 pub fn accept_nft(571 pub fn accept_nft(567 origin: OriginFor<T>,572 origin: OriginFor<T>,568 rmrk_collection_id: RmrkCollectionId,573 rmrk_collection_id: RmrkCollectionId,636 /// - `origin`: sender of the transaction641 /// - `origin`: sender of the transaction637 /// - `rmrk_collection_id`: collection id of the nft to be accepted642 /// - `rmrk_collection_id`: collection id of the nft to be accepted638 /// - `rmrk_nft_id`: nft id of the nft to be accepted643 /// - `rmrk_nft_id`: nft id of the nft to be accepted639 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]640 #[transactional]644 #[transactional]645 #[pallet::weight(<SelfWeightOf<T>>::reject_nft())]641 pub fn reject_nft(646 pub fn reject_nft(642 origin: OriginFor<T>,647 origin: OriginFor<T>,643 rmrk_collection_id: RmrkCollectionId,648 rmrk_collection_id: RmrkCollectionId,653 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;658 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;654 collection.check_is_external()?;659 collection.check_is_external()?;655660656 Self::destroy_nft(cross_sender, collection_id, nft_id).map_err(|err| {661 ensure!(657 if err == <CommonError<T>>::NoPermission.into()662 <TokenData<T>>::get((collection_id, nft_id)).is_some(),658 || err == <CommonError<T>>::ApprovedValueTooLow.into()659 {663 <Error<T>>::NoAvailableNftId660 <Error<T>>::CannotRejectNonOwnedNft.into()661 } else {662 Self::map_unique_err_to_proxy(err)663 }664 })?;664 );665665666 ensure!(667 Self::get_nft_property_decoded(668 collection_id,669 nft_id,670 RmrkProperty::PendingNftAccept671 )?,672 <Error<T>>::CannotRejectNonPendingNft673 );674675 Self::destroy_nft(676 cross_sender,677 collection_id,678 nft_id,679 NESTING_BUDGET,680 <Error<T>>::CannotRejectNonOwnedNft,681 )682 .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;683666 Self::deposit_event(Event::NFTRejected {684 Self::deposit_event(Event::NFTRejected {667 sender,685 sender,668 collection_id: rmrk_collection_id,686 collection_id: rmrk_collection_id,673 }691 }674692675 /// accept the addition of a new resource to an existing NFT693 /// accept the addition of a new resource to an existing NFT676 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]677 #[transactional]694 #[transactional]695 #[pallet::weight(<SelfWeightOf<T>>::accept_resource())]678 pub fn accept_resource(696 pub fn accept_resource(679 origin: OriginFor<T>,697 origin: OriginFor<T>,680 rmrk_collection_id: RmrkCollectionId,698 rmrk_collection_id: RmrkCollectionId,681 rmrk_nft_id: RmrkNftId,699 rmrk_nft_id: RmrkNftId,682 rmrk_resource_id: RmrkResourceId,700 resource_id: RmrkResourceId,683 ) -> DispatchResult {701 ) -> DispatchResult {684 let sender = ensure_signed(origin)?;702 let sender = ensure_signed(origin)?;685 let cross_sender = T::CrossAccountId::from_sub(sender);703 let cross_sender = T::CrossAccountId::from_sub(sender);691 collection.check_is_external()?;709 collection.check_is_external()?;692710693 let nft_id = rmrk_nft_id.into();711 let nft_id = rmrk_nft_id.into();694 let resource_id = rmrk_resource_id.into();695712696 let budget = budget::Value::new(NESTING_BUDGET);713 let budget = budget::Value::new(NESTING_BUDGET);697714698 let nft_owner =715 let nft_owner =699 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)716 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)700 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;717 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;701718702 let resource_collection_id: CollectionId =719 Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {703 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)720 ensure!(res.pending, <Error<T>>::ResourceNotPending);704 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;721 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);705722706 let is_pending: bool = Self::get_nft_property_decoded(723 res.pending = false;707 resource_collection_id,708 resource_id,709 PendingResourceAccept,710 )711 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;712724713 ensure!(is_pending, <Error<T>>::ResourceNotPending);725 Ok(())726 })?;714727715 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);716717 <PalletNft<T>>::set_scoped_token_property(718 resource_collection_id,719 rmrk_resource_id.into(),720 PropertyScope::Rmrk,721 Self::rmrk_property(PendingResourceAccept, &false)?,722 )?;723724 Self::deposit_event(Event::<T>::ResourceAccepted {728 Self::deposit_event(Event::<T>::ResourceAccepted {725 nft_id: rmrk_nft_id,729 nft_id: rmrk_nft_id,726 resource_id: rmrk_resource_id,730 resource_id,727 });731 });728732729 Ok(())733 Ok(())730 }734 }731735732 /// accept the removal of a resource of an existing NFT736 /// accept the removal of a resource of an existing NFT733 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]734 #[transactional]737 #[transactional]738 #[pallet::weight(<SelfWeightOf<T>>::accept_resource_removal())]735 pub fn accept_resource_removal(739 pub fn accept_resource_removal(736 origin: OriginFor<T>,740 origin: OriginFor<T>,737 rmrk_collection_id: RmrkCollectionId,741 rmrk_collection_id: RmrkCollectionId,738 rmrk_nft_id: RmrkNftId,742 rmrk_nft_id: RmrkNftId,739 rmrk_resource_id: RmrkResourceId,743 resource_id: RmrkResourceId,740 ) -> DispatchResult {744 ) -> DispatchResult {741 let sender = ensure_signed(origin)?;745 let sender = ensure_signed(origin)?;742 let cross_sender = T::CrossAccountId::from_sub(sender);746 let cross_sender = T::CrossAccountId::from_sub(sender);748 collection.check_is_external()?;752 collection.check_is_external()?;749753750 let nft_id = rmrk_nft_id.into();754 let nft_id = rmrk_nft_id.into();751 let resource_id = rmrk_resource_id.into();752755753 let budget = budget::Value::new(NESTING_BUDGET);756 let budget = budget::Value::new(NESTING_BUDGET);754757758761759 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);762 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);760763761 let resource_collection_id: CollectionId =764 let resource_id_key = Self::rmrk_property_key(ResourceId(resource_id))?;762 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)763 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;764765765 let is_pending: bool = Self::get_nft_property_decoded(766 let resource_info = <PalletNft<T>>::token_aux_property((766 resource_collection_id,767 collection_id,767 resource_id,768 nft_id,768 PendingResourceRemoval,769 PropertyScope::Rmrk,769 )770 resource_id_key.clone(),770 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;771 ))772 .ok_or(<Error<T>>::ResourceDoesntExist)?;771773772 ensure!(is_pending, <Error<T>>::ResourceNotPending);774 let resource_info: RmrkResourceInfo = Self::decode_property(&resource_info)?;773775774 let resource_collection = Self::get_typed_nft_collection(776 ensure!(775 resource_collection_id,777 resource_info.pending_removal,776 misc::CollectionType::Resource,778 <Error<T>>::ResourceNotPending777 )?;779 );778780779 <PalletNft<T>>::burn(&resource_collection, &cross_sender, rmrk_resource_id.into())781 <PalletNft<T>>::remove_token_aux_property(782 collection_id,783 nft_id,780 .map_err(Self::map_unique_err_to_proxy)?;784 PropertyScope::Rmrk,785 resource_id_key,786 );781787782 Self::deposit_event(Event::<T>::ResourceRemovalAccepted {788 Self::deposit_event(Event::<T>::ResourceRemovalAccepted {783 nft_id: rmrk_nft_id,789 nft_id: rmrk_nft_id,784 resource_id: rmrk_resource_id,790 resource_id,785 });791 });786792787 Ok(())793 Ok(())788 }794 }789795790 /// set a custom value on an NFT796 /// set a custom value on an NFT791 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]792 #[transactional]797 #[transactional]798 #[pallet::weight(<SelfWeightOf<T>>::set_property())]793 pub fn set_property(799 pub fn set_property(794 origin: OriginFor<T>,800 origin: OriginFor<T>,795 #[pallet::compact] rmrk_collection_id: RmrkCollectionId,801 #[pallet::compact] rmrk_collection_id: RmrkCollectionId,848 }854 }849855850 /// set a different order of resource priority856 /// set a different order of resource priority851 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]852 #[transactional]857 #[transactional]858 #[pallet::weight(<SelfWeightOf<T>>::set_priority())]853 pub fn set_priority(859 pub fn set_priority(854 origin: OriginFor<T>,860 origin: OriginFor<T>,855 rmrk_collection_id: RmrkCollectionId,861 rmrk_collection_id: RmrkCollectionId,887 }893 }888894889 /// Create basic resource895 /// Create basic resource890 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]891 #[transactional]896 #[transactional]897 #[pallet::weight(<SelfWeightOf<T>>::add_basic_resource())]892 pub fn add_basic_resource(898 pub fn add_basic_resource(893 origin: OriginFor<T>,899 origin: OriginFor<T>,894 rmrk_collection_id: RmrkCollectionId,900 rmrk_collection_id: RmrkCollectionId,906 sender,912 sender,907 collection_id,913 collection_id,908 nft_id.into(),914 nft_id.into(),909 [915 RmrkResourceTypes::Basic(resource),910 Self::rmrk_property(TokenType, &NftType::Resource)?,911 Self::rmrk_property(ResourceType, &misc::ResourceType::Basic)?,912 Self::rmrk_property(Src, &resource.src)?,913 Self::rmrk_property(Metadata, &resource.metadata)?,914 Self::rmrk_property(License, &resource.license)?,915 Self::rmrk_property(Thumb, &resource.thumb)?,916 ]917 .into_iter(),918 )?;916 )?;919917920 Self::deposit_event(Event::ResourceAdded {918 Self::deposit_event(Event::ResourceAdded {925 }923 }926924927 /// Create composable resource925 /// Create composable resource928 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]929 #[transactional]926 #[transactional]927 #[pallet::weight(<SelfWeightOf<T>>::add_composable_resource())]930 pub fn add_composable_resource(928 pub fn add_composable_resource(931 origin: OriginFor<T>,929 origin: OriginFor<T>,932 rmrk_collection_id: RmrkCollectionId,930 rmrk_collection_id: RmrkCollectionId,933 nft_id: RmrkNftId,931 nft_id: RmrkNftId,934 _resource_id: RmrkBoundedResource,935 resource: RmrkComposableResource,932 resource: RmrkComposableResource,936 ) -> DispatchResult {933 ) -> DispatchResult {937 let sender = ensure_signed(origin.clone())?;934 let sender = ensure_signed(origin.clone())?;945 sender,942 sender,946 collection_id,943 collection_id,947 nft_id.into(),944 nft_id.into(),948 [945 RmrkResourceTypes::Composable(resource),949 Self::rmrk_property(TokenType, &NftType::Resource)?,950 Self::rmrk_property(ResourceType, &misc::ResourceType::Composable)?,951 Self::rmrk_property(Parts, &resource.parts)?,952 Self::rmrk_property(Base, &resource.base)?,953 Self::rmrk_property(Src, &resource.src)?,954 Self::rmrk_property(Metadata, &resource.metadata)?,955 Self::rmrk_property(License, &resource.license)?,956 Self::rmrk_property(Thumb, &resource.thumb)?,957 ]958 .into_iter(),959 )?;946 )?;960947961 Self::deposit_event(Event::ResourceAdded {948 Self::deposit_event(Event::ResourceAdded {966 }953 }967954968 /// Create slot resource955 /// Create slot resource969 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]970 #[transactional]956 #[transactional]957 #[pallet::weight(<SelfWeightOf<T>>::add_slot_resource())]971 pub fn add_slot_resource(958 pub fn add_slot_resource(972 origin: OriginFor<T>,959 origin: OriginFor<T>,973 rmrk_collection_id: RmrkCollectionId,960 rmrk_collection_id: RmrkCollectionId,985 sender,972 sender,986 collection_id,973 collection_id,987 nft_id.into(),974 nft_id.into(),988 [975 RmrkResourceTypes::Slot(resource),989 Self::rmrk_property(TokenType, &NftType::Resource)?,990 Self::rmrk_property(ResourceType, &misc::ResourceType::Slot)?,991 Self::rmrk_property(Base, &resource.base)?,992 Self::rmrk_property(Src, &resource.src)?,993 Self::rmrk_property(Metadata, &resource.metadata)?,994 Self::rmrk_property(Slot, &resource.slot)?,995 Self::rmrk_property(License, &resource.license)?,996 Self::rmrk_property(Thumb, &resource.thumb)?,997 ]998 .into_iter(),999 )?;976 )?;10009771001 Self::deposit_event(Event::ResourceAdded {978 Self::deposit_event(Event::ResourceAdded {1006 }983 }10079841008 /// remove resource985 /// remove resource1009 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]1010 #[transactional]986 #[transactional]987 #[pallet::weight(<SelfWeightOf<T>>::remove_resource())]1011 pub fn remove_resource(988 pub fn remove_resource(1012 origin: OriginFor<T>,989 origin: OriginFor<T>,1013 rmrk_collection_id: RmrkCollectionId,990 rmrk_collection_id: RmrkCollectionId,1021 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;998 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1022 collection.check_is_external()?;999 collection.check_is_external()?;102310001024 Self::resource_remove(sender, collection_id, nft_id.into(), resource_id.into())?;1001 Self::resource_remove(sender, collection_id, nft_id.into(), resource_id)?;102510021026 Self::deposit_event(Event::ResourceRemoval {1003 Self::deposit_event(Event::ResourceRemoval {1027 nft_id,1004 nft_id,1050 ) -> Result<Property, DispatchError> {1027 ) -> Result<Property, DispatchError> {1051 let key = rmrk_key.to_key::<T>()?;1028 let key = rmrk_key.to_key::<T>()?;105210291030 let value = Self::encode_property(value)?;10311032 let property = Property { key, value };10331034 Ok(property)1035 }10361037 pub fn encode_property<E: Encode, S: Get<u32>>(1038 value: &E,1039 ) -> Result<BoundedBytes<S>, DispatchError> {1053 let value = value1040 let value = value1054 .encode()1041 .encode()1055 .try_into()1042 .try_into()1056 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong)?;1043 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong)?;105710441058 let property = Property { key, value };1045 Ok(value)10591060 Ok(property)1061 }1046 }106210471063 pub fn decode_property<D: Decode>(vec: PropertyValue) -> Result<D, DispatchError> {1048 pub fn decode_property<D: Decode, S: Get<u32>>(1049 vec: &BoundedBytes<S>,1050 ) -> Result<D, DispatchError> {1064 vec.decode()1051 vec.decode()1065 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong.into())1052 .map_err(|_| <Error<T>>::UnableToDecodeRmrkData.into())1066 }1053 }106710541068 pub fn rebind<L, S>(vec: &BoundedVec<u8, L>) -> Result<BoundedVec<u8, S>, DispatchError>1055 pub fn rebind<L, S>(vec: &BoundedVec<u8, L>) -> Result<BoundedVec<u8, S>, DispatchError>1124 sender: T::CrossAccountId,1111 sender: T::CrossAccountId,1125 collection_id: CollectionId,1112 collection_id: CollectionId,1126 token_id: TokenId,1113 token_id: TokenId,1127 ) -> DispatchResult {1114 max_burns: u32,1115 error_if_not_owned: Error<T>,1116 ) -> DispatchResultWithPostInfo {1128 let collection =1117 let collection =1129 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1118 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;11301119113311221134 let from = token_data.owner;1123 let from = token_data.owner;113511241136 let budget = budget::Value::new(NESTING_BUDGET);1125 let owner_check_budget = budget::Value::new(NESTING_BUDGET);113711261138 <PalletNft<T>>::burn_from(&collection, &sender, &from, token_id, &budget)1127 ensure!(1128 <PalletStructure<T>>::check_indirectly_owned(1129 sender.clone(),1130 collection_id,1131 token_id,1132 None,1133 &owner_check_budget1134 )?,1135 error_if_not_owned,1136 );11371138 let burns_budget = budget::Value::new(max_burns);1139 let breadth_budget = budget::Value::new(max_burns);11401141 <PalletNft<T>>::burn_recursively(1142 &collection,1143 &from,1144 token_id,1145 &burns_budget,1146 &breadth_budget,1147 )1139 }1148 }114011491150 fn acquire_next_resource_id(1151 collection_id: CollectionId,1152 nft_id: TokenId,1153 ) -> Result<RmrkResourceId, DispatchError> {1154 let resource_id: RmrkResourceId =1155 Self::get_nft_property_decoded(collection_id, nft_id, NextResourceId)?;11561157 let next_id = resource_id1158 .checked_add(1)1159 .ok_or(<Error<T>>::NoAvailableResourceId)?;11601161 <PalletNft<T>>::set_scoped_token_property(1162 collection_id,1163 nft_id,1164 PropertyScope::Rmrk,1165 Self::rmrk_property(NextResourceId, &next_id)?,1166 )?;11671168 Ok(resource_id)1169 }11701141 fn resource_add(1171 fn resource_add(1142 sender: T::AccountId,1172 sender: T::AccountId,1143 collection_id: CollectionId,1173 collection_id: CollectionId,1144 token_id: TokenId,1174 nft_id: TokenId,1145 resource_properties: impl Iterator<Item = Property>,1175 resource: RmrkResourceTypes,1146 ) -> Result<RmrkResourceId, DispatchError> {1176 ) -> Result<RmrkResourceId, DispatchError> {1147 let collection =1177 let collection =1148 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1178 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1151 let sender = T::CrossAccountId::from_sub(sender);1181 let sender = T::CrossAccountId::from_sub(sender);1152 let budget = budget::Value::new(NESTING_BUDGET);1182 let budget = budget::Value::new(NESTING_BUDGET);115311831154 let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, token_id, &budget)1184 let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)1155 .map_err(Self::map_unique_err_to_proxy)?;1185 .map_err(Self::map_unique_err_to_proxy)?;115611861157 let pending = sender != nft_owner;1187 let pending = sender != nft_owner;115811881159 let resource_collection_id: CollectionId =1189 let id = Self::acquire_next_resource_id(collection_id, nft_id)?;1160 Self::get_nft_property_decoded(collection_id, token_id, ResourceCollection)?;1161 let resource_collection =1162 Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;116311901164 // todo probably add extra connections to bases, slots, etc., when RMRK starts to use them1191 let resource_info = RmrkResourceInfo {1192 id,1193 resource,1194 pending,1195 pending_removal: false,1196 };116511971166 let resource_id = Self::create_nft(1198 <PalletNft<T>>::try_mutate_token_aux_property(1167 &sender,1199 collection_id,1168 &nft_owner,1200 nft_id,1169 &resource_collection,1201 PropertyScope::Rmrk,1170 resource_properties.chain(1171 [1172 Self::rmrk_property(PendingResourceAccept, &pending)?,1173 Self::rmrk_property(PendingResourceRemoval, &false)?,1202 Self::rmrk_property_key(ResourceId(id))?,1174 ]1175 .into_iter(),1176 ),1177 )1203 |value| -> DispatchResult {1178 .map_err(|err| match err {1179 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),1204 *value = Some(Self::encode_property(&resource_info)?);1180 err => Self::map_unique_err_to_proxy(err),1181 })?;118212051183 Ok(resource_id.0)1206 Ok(())1207 },1208 )?;12091210 Ok(id)1184 }1211 }118512121186 fn resource_remove(1213 fn resource_remove(1187 sender: T::AccountId,1214 sender: T::AccountId,1188 collection_id: CollectionId,1215 collection_id: CollectionId,1189 nft_id: TokenId,1216 nft_id: TokenId,1190 resource_id: TokenId,1217 resource_id: RmrkResourceId,1191 ) -> DispatchResult {1218 ) -> DispatchResult {1192 let collection =1219 let collection =1193 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1220 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1194 ensure!(collection.owner == sender, Error::<T>::NoPermission);1221 ensure!(collection.owner == sender, Error::<T>::NoPermission);119512221196 let resource_collection_id: CollectionId =1223 let resource_id_key = Self::rmrk_property_key(ResourceId(resource_id))?;1197 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)?;1198 let resource_collection =1224 let scope = PropertyScope::Rmrk;1199 Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;12251200 ensure!(1226 ensure!(1201 <PalletNft<T>>::token_exists(&resource_collection, resource_id),1227 <PalletNft<T>>::token_aux_property((1228 collection_id,1229 nft_id,1230 scope,1231 resource_id_key.clone()1232 ))1233 .is_some(),1202 Error::<T>::ResourceDoesntExist1234 <Error<T>>::ResourceDoesntExist1203 );1235 );120412361205 let budget = up_data_structs::budget::Value::new(10);1237 let budget = up_data_structs::budget::Value::new(NESTING_BUDGET);1206 let topmost_owner =1238 let topmost_owner =1207 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?;1239 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?;120812401209 let sender = T::CrossAccountId::from_sub(sender);1241 let sender = T::CrossAccountId::from_sub(sender);1210 if topmost_owner == sender {1242 if topmost_owner == sender {1211 <PalletNft<T>>::burn(&resource_collection, &sender, resource_id)1243 <PalletNft<T>>::remove_token_aux_property(1244 collection_id,1245 nft_id,1212 .map_err(Self::map_unique_err_to_proxy)?;1246 PropertyScope::Rmrk,1247 Self::rmrk_property_key(ResourceId(resource_id))?,1248 );1213 } else {1249 } else {1214 <PalletNft<T>>::set_scoped_token_property(1250 Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {1215 resource_collection_id,1216 resource_id,1217 PropertyScope::Rmrk,1251 res.pending_removal = true;12521218 Self::rmrk_property(PendingResourceRemoval, &true)?,1253 Ok(())1219 )?;1254 })?;1220 }1255 }122112561222 Ok(())1257 Ok(())1223 }1258 }122412591260 fn try_mutate_resource_info(1261 collection_id: CollectionId,1262 nft_id: TokenId,1263 resource_id: RmrkResourceId,1264 f: impl FnOnce(&mut RmrkResourceInfo) -> DispatchResult,1265 ) -> DispatchResult {1266 <PalletNft<T>>::try_mutate_token_aux_property(1267 collection_id,1268 nft_id,1269 PropertyScope::Rmrk,1270 Self::rmrk_property_key(ResourceId(resource_id))?,1271 |value| match value {1272 Some(value) => {1273 let mut resource_info: RmrkResourceInfo = Self::decode_property(value)?;12741275 f(&mut resource_info)?;12761277 *value = Self::encode_property(&resource_info)?;12781279 Ok(())1280 }1281 None => Err(<Error<T>>::ResourceDoesntExist.into()),1282 },1283 )1284 }12851225 fn change_collection_owner(1286 fn change_collection_owner(1226 collection_id: CollectionId,1287 collection_id: CollectionId,1227 collection_type: misc::CollectionType,1288 collection_type: misc::CollectionType,1237 collection.save()1298 collection.save()1238 }1299 }123913001240 fn check_collection_owner(1301 pub fn check_collection_owner(1241 collection: &NonfungibleHandle<T>,1302 collection: &NonfungibleHandle<T>,1242 account: &T::CrossAccountId,1303 account: &T::CrossAccountId,1243 ) -> DispatchResult {1304 ) -> DispatchResult {1260 pub fn rmrk_collection_id(1321 pub fn rmrk_collection_id(1261 unique_collection_id: CollectionId,1322 unique_collection_id: CollectionId,1262 ) -> Result<RmrkCollectionId, DispatchError> {1323 ) -> Result<RmrkCollectionId, DispatchError> {1263 <RmrkInernalCollectionId<T>>::try_get(unique_collection_id)1324 Self::get_collection_property_decoded(unique_collection_id, RmrkInternalCollectionId)1264 .map_err(|_| <Error<T>>::CollectionUnknown.into())1265 }1325 }126613261267 pub fn get_nft_collection(1327 pub fn get_nft_collection(1296 collection_id: CollectionId,1356 collection_id: CollectionId,1297 key: RmrkProperty,1357 key: RmrkProperty,1298 ) -> Result<V, DispatchError> {1358 ) -> Result<V, DispatchError> {1299 Self::decode_property(Self::get_collection_property(collection_id, key)?)1359 Self::decode_property(&Self::get_collection_property(collection_id, key)?)1300 }1360 }130113611302 pub fn get_collection_type(1362 pub fn get_collection_type(1303 collection_id: CollectionId,1363 collection_id: CollectionId,1304 ) -> Result<misc::CollectionType, DispatchError> {1364 ) -> Result<misc::CollectionType, DispatchError> {1305 Self::get_collection_property_decoded(collection_id, CollectionType)1365 Self::get_collection_property_decoded(collection_id, CollectionType).map_err(|err| {1306 .map_err(|_| <Error<T>>::CorruptedCollectionType.into())1366 if err != <Error<T>>::CollectionUnknown.into() {1367 <Error<T>>::CorruptedCollectionType.into()1368 } else {1369 err1370 }1371 })1307 }1372 }130813731309 pub fn ensure_collection_type(1374 pub fn ensure_collection_type(1349 ) -> Result<PropertyValue, DispatchError> {1414 ) -> Result<PropertyValue, DispatchError> {1350 let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))1415 let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))1351 .get(&Self::rmrk_property_key(key)?)1416 .get(&Self::rmrk_property_key(key)?)1352 .ok_or(<Error<T>>::NoAvailableNftId)? // todo replace with better error?1417 .ok_or(<Error<T>>::RmrkPropertyIsNotFound)?1353 .clone();1418 .clone();135414191355 Ok(nft_property)1420 Ok(nft_property)1360 nft_id: TokenId,1425 nft_id: TokenId,1361 key: RmrkProperty,1426 key: RmrkProperty,1362 ) -> Result<V, DispatchError> {1427 ) -> Result<V, DispatchError> {1363 Self::decode_property(Self::get_nft_property(collection_id, nft_id, key)?)1428 Self::decode_property(&Self::get_nft_property(collection_id, nft_id, key)?)1364 }1429 }136514301366 pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {1431 pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {pallets/proxy-rmrk-core/src/misc.rsdiffbeforeafterboth61#[derive(Encode, Decode, PartialEq, Eq)]61#[derive(Encode, Decode, PartialEq, Eq)]62pub enum CollectionType {62pub enum CollectionType {63 Regular,63 Regular,64 Resource,65 Base,64 Base,66}65}676668#[derive(Encode, Decode, PartialEq, Eq)]67#[derive(Encode, Decode, PartialEq, Eq)]69pub enum NftType {68pub enum NftType {70 Regular,69 Regular,71 Resource,72 FixedPart,70 FixedPart,73 SlotPart,71 SlotPart,74 Theme,72 Theme,75}73}7677#[derive(Encode, Decode, PartialEq, Eq)]78pub enum ResourceType {79 Basic,80 Composable,81 Slot,82}8374pallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth17use super::*;17use super::*;18use core::convert::AsRef;18use core::convert::AsRef;1920const RESOURCE_ID_PREFIX: &str = "rsid-";192120pub enum RmrkProperty<'r> {22pub enum RmrkProperty<'r> {21 Metadata,23 Metadata,22 CollectionType,24 CollectionType,25 RmrkInternalCollectionId,23 TokenType,26 TokenType,24 Transferable,27 Transferable,25 RoyaltyInfo,28 RoyaltyInfo,26 Equipped,29 Equipped,27 ResourceCollection,28 ResourcePriorities,30 ResourcePriorities,29 ResourceType,31 NextResourceId,32 ResourceId(RmrkResourceId),30 PendingNftAccept,33 PendingNftAccept,31 PendingResourceAccept,32 PendingResourceRemoval,33 Parts,34 Parts,34 Base,35 Base,35 Src,36 Src,36 Slot,37 License,38 Thumb,39 EquippedNft,37 EquippedNft,40 BaseType,38 BaseType,41 ExternalPartId,39 ExternalPartId,66 match self {64 match self {67 Self::Metadata => key!("metadata"),65 Self::Metadata => key!("metadata"),68 Self::CollectionType => key!("collection-type"),66 Self::CollectionType => key!("collection-type"),67 Self::RmrkInternalCollectionId => key!("internal-id"),69 Self::TokenType => key!("token-type"),68 Self::TokenType => key!("token-type"),70 Self::Transferable => key!("transferable"),69 Self::Transferable => key!("transferable"),71 Self::RoyaltyInfo => key!("royalty-info"),70 Self::RoyaltyInfo => key!("royalty-info"),72 Self::Equipped => key!("equipped"),71 Self::Equipped => key!("equipped"),73 Self::ResourceCollection => key!("resource-collection"),74 Self::ResourcePriorities => key!("resource-priorities"),72 Self::ResourcePriorities => key!("resource-priorities"),75 Self::ResourceType => key!("resource-type"),73 Self::NextResourceId => key!("next-resource-id"),74 Self::ResourceId(id) => key!(RESOURCE_ID_PREFIX, id.to_le_bytes()),76 Self::PendingNftAccept => key!("pending-nft-accept"),75 Self::PendingNftAccept => key!("pending-nft-accept"),77 Self::PendingResourceAccept => key!("pending-resource-accept"),78 Self::PendingResourceRemoval => key!("pending-resource-removal"),79 Self::Parts => key!("parts"),76 Self::Parts => key!("parts"),80 Self::Base => key!("base"),77 Self::Base => key!("base"),81 Self::Src => key!("src"),78 Self::Src => key!("src"),82 Self::Slot => key!("slot"),83 Self::License => key!("license"),84 Self::Thumb => key!("thumb"),85 Self::EquippedNft => key!("equipped-nft"),79 Self::EquippedNft => key!("equipped-nft"),86 Self::BaseType => key!("base-type"),80 Self::BaseType => key!("base-type"),87 Self::ExternalPartId => key!("ext-part-id"),81 Self::ExternalPartId => key!("ext-part-id"),pallets/proxy-rmrk-core/src/rpc.rsdiffbeforeafterbothno changes
pallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_proxy_rmrk_core3//! Autogenerated weights for pallet_proxy_rmrk_core4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-06-09, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-17, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:19// --template19// --template20// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs21// --steps=5021// --steps=5022// --repeat=20022// --repeat=8023// --heap-pages=409623// --heap-pages=409624// --output=./pallets/proxy-rmrk-core/src/weights.rs24// --output=./pallets/proxy-rmrk-core/src/weights.rs252534/// Weight functions needed for pallet_proxy_rmrk_core.34/// Weight functions needed for pallet_proxy_rmrk_core.35pub trait WeightInfo {35pub trait WeightInfo {36 fn create_collection() -> Weight;36 fn create_collection() -> Weight;37 fn destroy_collection() -> Weight;38 fn change_collection_issuer() -> Weight;39 fn lock_collection() -> Weight;40 fn mint_nft(b: u32, ) -> Weight;41 fn burn_nft(b: u32, ) -> Weight;42 fn send() -> Weight;43 fn accept_nft() -> Weight;44 fn reject_nft() -> Weight;45 fn set_property() -> Weight;46 fn set_priority() -> Weight;47 fn add_basic_resource() -> Weight;48 fn add_composable_resource() -> Weight;49 fn add_slot_resource() -> Weight;50 fn remove_resource() -> Weight;51 fn accept_resource() -> Weight;52 fn accept_resource_removal() -> Weight;37}53}385439/// Weights for pallet_proxy_rmrk_core using the Substrate node and recommended hardware.55/// Weights for pallet_proxy_rmrk_core using the Substrate node and recommended hardware.47 // Storage: Common CollectionProperties (r:0 w:1)63 // Storage: Common CollectionProperties (r:0 w:1)48 // Storage: Common CollectionById (r:0 w:1)64 // Storage: Common CollectionById (r:0 w:1)49 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)65 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)50 // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)51 fn create_collection() -> Weight {66 fn create_collection() -> Weight {52 (76_647_000 as Weight)67 (42_359_000 as Weight)53 .saturating_add(T::DbWeight::get().reads(5 as Weight))68 .saturating_add(T::DbWeight::get().reads(5 as Weight))54 .saturating_add(T::DbWeight::get().writes(9 as Weight))69 .saturating_add(T::DbWeight::get().writes(8 as Weight))55 }70 }71 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)72 // Storage: Common CollectionProperties (r:1 w:1)73 // Storage: Common CollectionById (r:1 w:1)74 // Storage: Nonfungible TokenData (r:1 w:0)75 // Storage: Common DestroyedCollectionCount (r:1 w:1)76 // Storage: Nonfungible TokensMinted (r:0 w:1)77 // Storage: Nonfungible TokensBurnt (r:0 w:1)78 // Storage: Common AdminAmount (r:0 w:1)79 fn destroy_collection() -> Weight {80 (45_375_000 as Weight)81 .saturating_add(T::DbWeight::get().reads(5 as Weight))82 .saturating_add(T::DbWeight::get().writes(6 as Weight))83 }84 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)85 // Storage: Common CollectionById (r:1 w:1)86 // Storage: Common CollectionProperties (r:1 w:0)87 fn change_collection_issuer() -> Weight {88 (22_753_000 as Weight)89 .saturating_add(T::DbWeight::get().reads(3 as Weight))90 .saturating_add(T::DbWeight::get().writes(1 as Weight))91 }92 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)93 // Storage: Common CollectionProperties (r:1 w:0)94 // Storage: Common CollectionById (r:1 w:1)95 // Storage: Nonfungible TokensMinted (r:1 w:0)96 // Storage: Nonfungible TokensBurnt (r:1 w:0)97 fn lock_collection() -> Weight {98 (24_356_000 as Weight)99 .saturating_add(T::DbWeight::get().reads(5 as Weight))100 .saturating_add(T::DbWeight::get().writes(1 as Weight))101 }102 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)103 // Storage: Common CollectionProperties (r:1 w:0)104 // Storage: Common CollectionById (r:1 w:0)105 // Storage: Nonfungible TokensMinted (r:1 w:1)106 // Storage: Nonfungible AccountBalance (r:1 w:1)107 // Storage: Nonfungible TokenProperties (r:1 w:1)108 // Storage: Nonfungible TokenData (r:0 w:1)109 // Storage: Nonfungible Owned (r:0 w:1)110 // Storage: Nonfungible TokenAuxProperties (r:2 w:2)111 fn mint_nft(b: u32, ) -> Weight {112 (44_853_000 as Weight)113 // Standard Error: 2_000114 .saturating_add((10_721_000 as Weight).saturating_mul(b as Weight))115 .saturating_add(T::DbWeight::get().reads(6 as Weight))116 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))117 .saturating_add(T::DbWeight::get().writes(5 as Weight))118 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))119 }120 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)121 // Storage: Common CollectionProperties (r:1 w:0)122 // Storage: Common CollectionById (r:1 w:0)123 // Storage: Nonfungible TokenData (r:1 w:1)124 // Storage: Nonfungible TokenChildren (r:1 w:0)125 // Storage: Nonfungible TokensBurnt (r:1 w:1)126 // Storage: Nonfungible AccountBalance (r:1 w:1)127 // Storage: Nonfungible Allowance (r:1 w:0)128 // Storage: Nonfungible Owned (r:0 w:1)129 // Storage: Nonfungible TokenProperties (r:0 w:1)130 fn burn_nft(b: u32, ) -> Weight {131 (0 as Weight)132 // Standard Error: 1_590_000133 .saturating_add((319_825_000 as Weight).saturating_mul(b as Weight))134 .saturating_add(T::DbWeight::get().reads(9 as Weight))135 .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))136 .saturating_add(T::DbWeight::get().writes(6 as Weight))137 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))138 }139 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)140 // Storage: Common CollectionProperties (r:1 w:0)141 // Storage: Common CollectionById (r:1 w:0)142 // Storage: Nonfungible TokenData (r:5 w:1)143 // Storage: Nonfungible TokenProperties (r:1 w:0)144 // Storage: Nonfungible AccountBalance (r:2 w:2)145 // Storage: Nonfungible Allowance (r:1 w:0)146 // Storage: Nonfungible TokenChildren (r:0 w:1)147 // Storage: Nonfungible Owned (r:0 w:2)148 fn send() -> Weight {149 (72_576_000 as Weight)150 .saturating_add(T::DbWeight::get().reads(12 as Weight))151 .saturating_add(T::DbWeight::get().writes(6 as Weight))152 }153 // Storage: RmrkCore UniqueCollectionId (r:2 w:0)154 // Storage: Common CollectionProperties (r:1 w:0)155 // Storage: Common CollectionById (r:2 w:0)156 // Storage: Nonfungible TokenData (r:6 w:1)157 // Storage: Nonfungible AccountBalance (r:2 w:2)158 // Storage: Nonfungible Allowance (r:1 w:0)159 // Storage: Nonfungible TokenProperties (r:1 w:1)160 // Storage: Nonfungible TokenChildren (r:0 w:1)161 // Storage: Nonfungible Owned (r:0 w:2)162 fn accept_nft() -> Weight {163 (79_670_000 as Weight)164 .saturating_add(T::DbWeight::get().reads(15 as Weight))165 .saturating_add(T::DbWeight::get().writes(7 as Weight))166 }167 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)168 // Storage: Common CollectionProperties (r:1 w:0)169 // Storage: Common CollectionById (r:1 w:0)170 // Storage: Nonfungible TokenData (r:5 w:5)171 // Storage: Nonfungible TokenProperties (r:1 w:5)172 // Storage: Nonfungible TokenChildren (r:9 w:4)173 // Storage: Nonfungible TokensBurnt (r:1 w:1)174 // Storage: Nonfungible AccountBalance (r:5 w:5)175 // Storage: Nonfungible Allowance (r:5 w:0)176 // Storage: Nonfungible Owned (r:0 w:5)177 fn reject_nft() -> Weight {178 (254_989_000 as Weight)179 .saturating_add(T::DbWeight::get().reads(29 as Weight))180 .saturating_add(T::DbWeight::get().writes(25 as Weight))181 }182 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)183 // Storage: Common CollectionProperties (r:1 w:0)184 // Storage: Common CollectionById (r:1 w:0)185 // Storage: Nonfungible TokenProperties (r:1 w:1)186 // Storage: Nonfungible TokenData (r:5 w:0)187 fn set_property() -> Weight {188 (48_651_000 as Weight)189 .saturating_add(T::DbWeight::get().reads(9 as Weight))190 .saturating_add(T::DbWeight::get().writes(1 as Weight))191 }192 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)193 // Storage: Common CollectionProperties (r:1 w:0)194 // Storage: Common CollectionById (r:1 w:0)195 // Storage: Nonfungible TokenProperties (r:1 w:1)196 // Storage: Nonfungible TokenData (r:5 w:0)197 fn set_priority() -> Weight {198 (47_579_000 as Weight)199 .saturating_add(T::DbWeight::get().reads(9 as Weight))200 .saturating_add(T::DbWeight::get().writes(1 as Weight))201 }202 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)203 // Storage: Common CollectionProperties (r:1 w:0)204 // Storage: Common CollectionById (r:1 w:0)205 // Storage: Nonfungible TokenData (r:5 w:0)206 // Storage: Nonfungible TokenProperties (r:1 w:1)207 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)208 fn add_basic_resource() -> Weight {209 (55_013_000 as Weight)210 .saturating_add(T::DbWeight::get().reads(10 as Weight))211 .saturating_add(T::DbWeight::get().writes(2 as Weight))212 }213 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)214 // Storage: Common CollectionProperties (r:1 w:0)215 // Storage: Common CollectionById (r:1 w:0)216 // Storage: Nonfungible TokenData (r:5 w:0)217 // Storage: Nonfungible TokenProperties (r:1 w:1)218 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)219 fn add_composable_resource() -> Weight {220 (55_184_000 as Weight)221 .saturating_add(T::DbWeight::get().reads(10 as Weight))222 .saturating_add(T::DbWeight::get().writes(2 as Weight))223 }224 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)225 // Storage: Common CollectionProperties (r:1 w:0)226 // Storage: Common CollectionById (r:1 w:0)227 // Storage: Nonfungible TokenData (r:5 w:0)228 // Storage: Nonfungible TokenProperties (r:1 w:1)229 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)230 fn add_slot_resource() -> Weight {231 (54_792_000 as Weight)232 .saturating_add(T::DbWeight::get().reads(10 as Weight))233 .saturating_add(T::DbWeight::get().writes(2 as Weight))234 }235 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)236 // Storage: Common CollectionProperties (r:1 w:0)237 // Storage: Common CollectionById (r:1 w:0)238 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)239 // Storage: Nonfungible TokenData (r:5 w:0)240 fn remove_resource() -> Weight {241 (46_447_000 as Weight)242 .saturating_add(T::DbWeight::get().reads(9 as Weight))243 .saturating_add(T::DbWeight::get().writes(1 as Weight))244 }245 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)246 // Storage: Common CollectionProperties (r:1 w:0)247 // Storage: Common CollectionById (r:1 w:0)248 // Storage: Nonfungible TokenData (r:5 w:0)249 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)250 fn accept_resource() -> Weight {251 (45_096_000 as Weight)252 .saturating_add(T::DbWeight::get().reads(9 as Weight))253 .saturating_add(T::DbWeight::get().writes(1 as Weight))254 }255 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)256 // Storage: Common CollectionProperties (r:1 w:0)257 // Storage: Common CollectionById (r:1 w:0)258 // Storage: Nonfungible TokenData (r:5 w:0)259 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)260 fn accept_resource_removal() -> Weight {261 (45_445_000 as Weight)262 .saturating_add(T::DbWeight::get().reads(9 as Weight))263 .saturating_add(T::DbWeight::get().writes(1 as Weight))264 }56}265}5726658// For backwards compatibility and tests267// For backwards compatibility and tests65 // Storage: Common CollectionProperties (r:0 w:1)274 // Storage: Common CollectionProperties (r:0 w:1)66 // Storage: Common CollectionById (r:0 w:1)275 // Storage: Common CollectionById (r:0 w:1)67 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)276 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)68 // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)69 fn create_collection() -> Weight {277 fn create_collection() -> Weight {70 (76_647_000 as Weight)278 (42_359_000 as Weight)71 .saturating_add(RocksDbWeight::get().reads(5 as Weight))279 .saturating_add(RocksDbWeight::get().reads(5 as Weight))72 .saturating_add(RocksDbWeight::get().writes(9 as Weight))280 .saturating_add(RocksDbWeight::get().writes(8 as Weight))73 }281 }282 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)283 // Storage: Common CollectionProperties (r:1 w:1)284 // Storage: Common CollectionById (r:1 w:1)285 // Storage: Nonfungible TokenData (r:1 w:0)286 // Storage: Common DestroyedCollectionCount (r:1 w:1)287 // Storage: Nonfungible TokensMinted (r:0 w:1)288 // Storage: Nonfungible TokensBurnt (r:0 w:1)289 // Storage: Common AdminAmount (r:0 w:1)290 fn destroy_collection() -> Weight {291 (45_375_000 as Weight)292 .saturating_add(RocksDbWeight::get().reads(5 as Weight))293 .saturating_add(RocksDbWeight::get().writes(6 as Weight))294 }295 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)296 // Storage: Common CollectionById (r:1 w:1)297 // Storage: Common CollectionProperties (r:1 w:0)298 fn change_collection_issuer() -> Weight {299 (22_753_000 as Weight)300 .saturating_add(RocksDbWeight::get().reads(3 as Weight))301 .saturating_add(RocksDbWeight::get().writes(1 as Weight))302 }303 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)304 // Storage: Common CollectionProperties (r:1 w:0)305 // Storage: Common CollectionById (r:1 w:1)306 // Storage: Nonfungible TokensMinted (r:1 w:0)307 // Storage: Nonfungible TokensBurnt (r:1 w:0)308 fn lock_collection() -> Weight {309 (24_356_000 as Weight)310 .saturating_add(RocksDbWeight::get().reads(5 as Weight))311 .saturating_add(RocksDbWeight::get().writes(1 as Weight))312 }313 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)314 // Storage: Common CollectionProperties (r:1 w:0)315 // Storage: Common CollectionById (r:1 w:0)316 // Storage: Nonfungible TokensMinted (r:1 w:1)317 // Storage: Nonfungible AccountBalance (r:1 w:1)318 // Storage: Nonfungible TokenProperties (r:1 w:1)319 // Storage: Nonfungible TokenData (r:0 w:1)320 // Storage: Nonfungible Owned (r:0 w:1)321 // Storage: Nonfungible TokenAuxProperties (r:2 w:2)322 fn mint_nft(b: u32, ) -> Weight {323 (44_853_000 as Weight)324 // Standard Error: 2_000325 .saturating_add((10_721_000 as Weight).saturating_mul(b as Weight))326 .saturating_add(RocksDbWeight::get().reads(6 as Weight))327 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))328 .saturating_add(RocksDbWeight::get().writes(5 as Weight))329 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))330 }331 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)332 // Storage: Common CollectionProperties (r:1 w:0)333 // Storage: Common CollectionById (r:1 w:0)334 // Storage: Nonfungible TokenData (r:1 w:1)335 // Storage: Nonfungible TokenChildren (r:1 w:0)336 // Storage: Nonfungible TokensBurnt (r:1 w:1)337 // Storage: Nonfungible AccountBalance (r:1 w:1)338 // Storage: Nonfungible Allowance (r:1 w:0)339 // Storage: Nonfungible Owned (r:0 w:1)340 // Storage: Nonfungible TokenProperties (r:0 w:1)341 fn burn_nft(b: u32, ) -> Weight {342 (0 as Weight)343 // Standard Error: 1_590_000344 .saturating_add((319_825_000 as Weight).saturating_mul(b as Weight))345 .saturating_add(RocksDbWeight::get().reads(9 as Weight))346 .saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))347 .saturating_add(RocksDbWeight::get().writes(6 as Weight))348 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))349 }350 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)351 // Storage: Common CollectionProperties (r:1 w:0)352 // Storage: Common CollectionById (r:1 w:0)353 // Storage: Nonfungible TokenData (r:5 w:1)354 // Storage: Nonfungible TokenProperties (r:1 w:0)355 // Storage: Nonfungible AccountBalance (r:2 w:2)356 // Storage: Nonfungible Allowance (r:1 w:0)357 // Storage: Nonfungible TokenChildren (r:0 w:1)358 // Storage: Nonfungible Owned (r:0 w:2)359 fn send() -> Weight {360 (72_576_000 as Weight)361 .saturating_add(RocksDbWeight::get().reads(12 as Weight))362 .saturating_add(RocksDbWeight::get().writes(6 as Weight))363 }364 // Storage: RmrkCore UniqueCollectionId (r:2 w:0)365 // Storage: Common CollectionProperties (r:1 w:0)366 // Storage: Common CollectionById (r:2 w:0)367 // Storage: Nonfungible TokenData (r:6 w:1)368 // Storage: Nonfungible AccountBalance (r:2 w:2)369 // Storage: Nonfungible Allowance (r:1 w:0)370 // Storage: Nonfungible TokenProperties (r:1 w:1)371 // Storage: Nonfungible TokenChildren (r:0 w:1)372 // Storage: Nonfungible Owned (r:0 w:2)373 fn accept_nft() -> Weight {374 (79_670_000 as Weight)375 .saturating_add(RocksDbWeight::get().reads(15 as Weight))376 .saturating_add(RocksDbWeight::get().writes(7 as Weight))377 }378 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)379 // Storage: Common CollectionProperties (r:1 w:0)380 // Storage: Common CollectionById (r:1 w:0)381 // Storage: Nonfungible TokenData (r:5 w:5)382 // Storage: Nonfungible TokenProperties (r:1 w:5)383 // Storage: Nonfungible TokenChildren (r:9 w:4)384 // Storage: Nonfungible TokensBurnt (r:1 w:1)385 // Storage: Nonfungible AccountBalance (r:5 w:5)386 // Storage: Nonfungible Allowance (r:5 w:0)387 // Storage: Nonfungible Owned (r:0 w:5)388 fn reject_nft() -> Weight {389 (254_989_000 as Weight)390 .saturating_add(RocksDbWeight::get().reads(29 as Weight))391 .saturating_add(RocksDbWeight::get().writes(25 as Weight))392 }393 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)394 // Storage: Common CollectionProperties (r:1 w:0)395 // Storage: Common CollectionById (r:1 w:0)396 // Storage: Nonfungible TokenProperties (r:1 w:1)397 // Storage: Nonfungible TokenData (r:5 w:0)398 fn set_property() -> Weight {399 (48_651_000 as Weight)400 .saturating_add(RocksDbWeight::get().reads(9 as Weight))401 .saturating_add(RocksDbWeight::get().writes(1 as Weight))402 }403 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)404 // Storage: Common CollectionProperties (r:1 w:0)405 // Storage: Common CollectionById (r:1 w:0)406 // Storage: Nonfungible TokenProperties (r:1 w:1)407 // Storage: Nonfungible TokenData (r:5 w:0)408 fn set_priority() -> Weight {409 (47_579_000 as Weight)410 .saturating_add(RocksDbWeight::get().reads(9 as Weight))411 .saturating_add(RocksDbWeight::get().writes(1 as Weight))412 }413 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)414 // Storage: Common CollectionProperties (r:1 w:0)415 // Storage: Common CollectionById (r:1 w:0)416 // Storage: Nonfungible TokenData (r:5 w:0)417 // Storage: Nonfungible TokenProperties (r:1 w:1)418 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)419 fn add_basic_resource() -> Weight {420 (55_013_000 as Weight)421 .saturating_add(RocksDbWeight::get().reads(10 as Weight))422 .saturating_add(RocksDbWeight::get().writes(2 as Weight))423 }424 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)425 // Storage: Common CollectionProperties (r:1 w:0)426 // Storage: Common CollectionById (r:1 w:0)427 // Storage: Nonfungible TokenData (r:5 w:0)428 // Storage: Nonfungible TokenProperties (r:1 w:1)429 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)430 fn add_composable_resource() -> Weight {431 (55_184_000 as Weight)432 .saturating_add(RocksDbWeight::get().reads(10 as Weight))433 .saturating_add(RocksDbWeight::get().writes(2 as Weight))434 }435 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)436 // Storage: Common CollectionProperties (r:1 w:0)437 // Storage: Common CollectionById (r:1 w:0)438 // Storage: Nonfungible TokenData (r:5 w:0)439 // Storage: Nonfungible TokenProperties (r:1 w:1)440 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)441 fn add_slot_resource() -> Weight {442 (54_792_000 as Weight)443 .saturating_add(RocksDbWeight::get().reads(10 as Weight))444 .saturating_add(RocksDbWeight::get().writes(2 as Weight))445 }446 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)447 // Storage: Common CollectionProperties (r:1 w:0)448 // Storage: Common CollectionById (r:1 w:0)449 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)450 // Storage: Nonfungible TokenData (r:5 w:0)451 fn remove_resource() -> Weight {452 (46_447_000 as Weight)453 .saturating_add(RocksDbWeight::get().reads(9 as Weight))454 .saturating_add(RocksDbWeight::get().writes(1 as Weight))455 }456 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)457 // Storage: Common CollectionProperties (r:1 w:0)458 // Storage: Common CollectionById (r:1 w:0)459 // Storage: Nonfungible TokenData (r:5 w:0)460 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)461 fn accept_resource() -> Weight {462 (45_096_000 as Weight)463 .saturating_add(RocksDbWeight::get().reads(9 as Weight))464 .saturating_add(RocksDbWeight::get().writes(1 as Weight))465 }466 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)467 // Storage: Common CollectionProperties (r:1 w:0)468 // Storage: Common CollectionById (r:1 w:0)469 // Storage: Nonfungible TokenData (r:5 w:0)470 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)471 fn accept_resource_removal() -> Weight {472 (45_445_000 as Weight)473 .saturating_add(RocksDbWeight::get().reads(9 as Weight))474 .saturating_add(RocksDbWeight::get().writes(1 as Weight))475 }74}476}75477pallets/proxy-rmrk-equip/src/benchmarking.rsdiffbeforeafterbothno changes
pallets/proxy-rmrk-equip/src/lib.rsdiffbeforeafterboth22use up_data_structs::*;22use up_data_structs::*;23use pallet_common::{Pallet as PalletCommon, Error as CommonError};23use pallet_common::{Pallet as PalletCommon, Error as CommonError};24use pallet_rmrk_core::{24use pallet_rmrk_core::{25 Pallet as PalletCore,25 Pallet as PalletCore, Error as CoreError,26 misc::{self, *},26 misc::{self, *},27 property::RmrkProperty::*,27 property::RmrkProperty::*,28};28};29use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle};29use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle};30use pallet_evm::account::CrossAccountId;30use pallet_evm::account::CrossAccountId;31use weights::WeightInfo;313232pub use pallet::*;33pub use pallet::*;3435#[cfg(feature = "runtime-benchmarks")]36pub mod benchmarking;37pub mod rpc;38pub mod weights;3940pub type SelfWeightOf<T> = <T as Config>::WeightInfo;334134#[frame_support::pallet]42#[frame_support::pallet]35pub mod pallet {43pub mod pallet {38 #[pallet::config]46 #[pallet::config]39 pub trait Config: frame_system::Config + pallet_rmrk_core::Config {47 pub trait Config: frame_system::Config + pallet_rmrk_core::Config {40 type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;48 type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;49 type WeightInfo: WeightInfo;41 }50 }425143 #[pallet::storage]52 #[pallet::storage]61 issuer: T::AccountId,70 issuer: T::AccountId,62 base_id: RmrkBaseId,71 base_id: RmrkBaseId,63 },72 },73 EquippablesUpdated {74 base_id: RmrkBaseId,75 slot_id: RmrkSlotId,76 },64 }77 }657866 #[pallet::error]79 #[pallet::error]70 NoAvailablePartId,83 NoAvailablePartId,71 BaseDoesntExist,84 BaseDoesntExist,72 NeedsDefaultThemeFirst,85 NeedsDefaultThemeFirst,86 PartDoesntExist,87 NoEquippableOnFixedPart,73 }88 }748975 #[pallet::call]90 #[pallet::call]83 /// - symbol: arbitrary client-chosen symbol98 /// - symbol: arbitrary client-chosen symbol84 /// - parts: array of Fixed and Slot parts composing the base, confined in length by99 /// - parts: array of Fixed and Slot parts composing the base, confined in length by85 /// RmrkPartsLimit100 /// RmrkPartsLimit101 #[transactional]86 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]102 #[pallet::weight(<SelfWeightOf<T>>::create_base(parts.len() as u32))]87 #[transactional]88 pub fn create_base(103 pub fn create_base(89 origin: OriginFor<T>,104 origin: OriginFor<T>,90 base_type: RmrkString,105 base_type: RmrkString,91 symbol: RmrkString,106 symbol: RmrkBaseSymbol,92 parts: BoundedVec<RmrkPartType, RmrkPartsLimit>,107 parts: BoundedVec<RmrkPartType, RmrkPartsLimit>,93 ) -> DispatchResult {108 ) -> DispatchResult {94 let sender = ensure_signed(origin)?;109 let sender = ensure_signed(origin)?;125 let collection = <PalletCore<T>>::get_nft_collection(collection_id)?;140 let collection = <PalletCore<T>>::get_nft_collection(collection_id)?;126141127 for part in parts {142 for part in parts {128 let part_id = part.id();129 let part_token_id = Self::create_part(&cross_sender, &collection, part)?;143 Self::create_part(&cross_sender, &collection, part)?;130131 <InernalPartId<T>>::insert(collection_id, part_id, part_token_id);132133 <PalletNft<T>>::set_scoped_token_property(134 collection_id,135 part_token_id,136 PropertyScope::Rmrk,137 <PalletCore<T>>::rmrk_property(ExternalPartId, &part_id)?,138 )?;139 }144 }140145141 Self::deposit_event(Event::BaseCreated {146 Self::deposit_event(Event::BaseCreated {159 /// - key: arbitrary BoundedString, defined by client164 /// - key: arbitrary BoundedString, defined by client160 /// - value: arbitrary BoundedString, defined by client165 /// - value: arbitrary BoundedString, defined by client161 /// - inherit: optional bool166 /// - inherit: optional bool167 #[transactional]162 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]168 #[pallet::weight(<SelfWeightOf<T>>::theme_add(theme.properties.len() as u32))]163 #[transactional]164 pub fn theme_add(169 pub fn theme_add(165 origin: OriginFor<T>,170 origin: OriginFor<T>,166 base_id: RmrkBaseId,171 base_id: RmrkBaseId,167 theme: RmrkTheme,172 theme: RmrkBoundedTheme,168 ) -> DispatchResult {173 ) -> DispatchResult {169 let sender = ensure_signed(origin)?;174 let sender = ensure_signed(origin)?;170175173178174 let collection_id: CollectionId = base_id.into();179 let collection_id: CollectionId = base_id.into();175180176 let collection = <PalletCore<T>>::get_typed_nft_collection(181 let collection = Self::get_base(collection_id)?;177 collection_id,178 misc::CollectionType::Base,179 )180 .map_err(|_| <Error<T>>::BaseDoesntExist)?;181 collection.check_is_external()?;182182183 if theme.name.as_slice() == b"default" {183 if theme.name.as_slice() == b"default" {184 <BaseHasDefaultTheme<T>>::insert(collection_id, true);184 <BaseHasDefaultTheme<T>>::insert(collection_id, true);214 Ok(())214 Ok(())215 }215 }216217 #[transactional]218 #[pallet::weight(<SelfWeightOf<T>>::equippable())]219 pub fn equippable(220 origin: OriginFor<T>,221 base_id: RmrkBaseId,222 slot_id: RmrkSlotId,223 equippables: RmrkEquippableList,224 ) -> DispatchResult {225 let sender = ensure_signed(origin)?;226227 let base_collection_id = base_id.into();228 let collection = Self::get_base(base_collection_id)?;229230 <PalletCore<T>>::check_collection_owner(231 &collection,232 &T::CrossAccountId::from_sub(sender),233 )234 .map_err(|err| {235 if err == <CoreError<T>>::NoPermission.into() {236 <Error<T>>::PermissionError.into()237 } else {238 err239 }240 })?;241242 let part_id = Self::internal_part_id(base_collection_id, slot_id)243 .ok_or(<Error<T>>::PartDoesntExist)?;244245 let nft_type = <PalletCore<T>>::get_nft_type(base_collection_id, part_id)246 .map_err(|_| <Error<T>>::PartDoesntExist)?;247248 match nft_type {249 NftType::Regular | NftType::Theme => return Err(<Error<T>>::PermissionError.into()),250 NftType::FixedPart => return Err(<Error<T>>::NoEquippableOnFixedPart.into()),251 NftType::SlotPart => {252 <PalletNft<T>>::set_scoped_token_property(253 base_collection_id,254 part_id,255 PropertyScope::Rmrk,256 <PalletCore<T>>::rmrk_property(EquippableList, &equippables)?,257 )?;258 }259 }260261 Self::deposit_event(Event::EquippablesUpdated { base_id, slot_id });262263 Ok(())264 }216 }265 }217}266}218267221 sender: &T::CrossAccountId,270 sender: &T::CrossAccountId,222 collection: &NonfungibleHandle<T>,271 collection: &NonfungibleHandle<T>,223 part: RmrkPartType,272 part: RmrkPartType,224 ) -> Result<TokenId, DispatchError> {273 ) -> DispatchResult {225 let owner = sender;274 let owner = sender;226275276 let part_id = part.id();227 let src = part.src();277 let src = part.src();228 let z_index = part.z_index();278 let z_index = part.z_index();229279232 RmrkPartType::SlotPart(_) => NftType::SlotPart,282 RmrkPartType::SlotPart(_) => NftType::SlotPart,233 };283 };234284235 let token_id = <PalletCore<T>>::create_nft(285 let token_id = match Self::internal_part_id(collection.id, part_id) {286 Some(token_id) => token_id,287 None => {288 let token_id =289 <PalletCore<T>>::create_nft(sender, owner, collection, [].into_iter())290 .map_err(|err| match err {291 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailablePartId.into(),292 err => err,293 })?;294295 <InernalPartId<T>>::insert(collection.id, part_id, token_id);296297 <PalletNft<T>>::set_scoped_token_property(298 collection.id,299 token_id,300 PropertyScope::Rmrk,301 <PalletCore<T>>::rmrk_property(ExternalPartId, &part_id)?,302 )?;303304 token_id305 }306 };307308 <PalletNft<T>>::set_scoped_token_properties(236 sender,309 collection.id,237 owner,310 token_id,238 collection,311 PropertyScope::Rmrk,239 [312 [240 <PalletCore<T>>::rmrk_property(TokenType, &nft_type)?,313 <PalletCore<T>>::rmrk_property(TokenType, &nft_type)?,241 <PalletCore<T>>::rmrk_property(Src, &src)?,314 <PalletCore<T>>::rmrk_property(Src, &src)?,242 <PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,315 <PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,243 ]316 ]244 .into_iter(),317 .into_iter(),245 )246 .map_err(|err| match err {247 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailablePartId.into(),248 err => err,249 })?;318 )?;250319251 if let RmrkPartType::SlotPart(part) = part {320 if let RmrkPartType::SlotPart(part) = part {252 <PalletNft<T>>::set_scoped_token_property(321 <PalletNft<T>>::set_scoped_token_property(257 )?;326 )?;258 }327 }259328260 Ok(token_id)329 Ok(())261 }330 }331332 fn get_base(base_id: CollectionId) -> Result<NonfungibleHandle<T>, DispatchError> {333 let collection =334 <PalletCore<T>>::get_typed_nft_collection(base_id, misc::CollectionType::Base)335 .map_err(|err| {336 if err == <CoreError<T>>::CollectionUnknown.into() {337 <Error<T>>::BaseDoesntExist.into()338 } else {339 err340 }341 })?;342 collection.check_is_external()?;343344 Ok(collection)345 }262}346}263347pallets/proxy-rmrk-equip/src/rpc.rsdiffbeforeafterbothno changes
pallets/proxy-rmrk-equip/src/weights.rsdiffbeforeafterbothno changes
pallets/refungible/src/common.rsdiffbeforeafterboth77 077 078 }78 }797980 fn set_token_properties(amount: u32) -> Weight {80 fn set_token_properties(_amount: u32) -> Weight {81 <SelfWeightOf<T>>::set_token_properties(amount)81 // Error82 082 }83 }838484 fn delete_token_properties(amount: u32) -> Weight {85 fn delete_token_properties(_amount: u32) -> Weight {85 <SelfWeightOf<T>>::delete_token_properties(amount)86 // Error87 086 }88 }878988 fn set_property_permissions(amount: u32) -> Weight {90 fn set_token_property_permissions(_amount: u32) -> Weight {89 <SelfWeightOf<T>>::set_property_permissions(amount)91 // Error92 090 }93 }919492 fn transfer() -> Weight {95 fn transfer() -> Weight {315 fail!(<Error<T>>::SettingPropertiesNotAllowed)318 fail!(<Error<T>>::SettingPropertiesNotAllowed)316 }319 }317320318 fn set_property_permissions(321 fn set_token_property_permissions(319 &self,322 &self,320 _sender: &T::CrossAccountId,323 _sender: &T::CrossAccountId,321 _property_permissions: Vec<PropertyKeyPermission>,324 _property_permissions: Vec<PropertyKeyPermission>,pallets/refungible/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_refungible3//! Autogenerated weights for pallet_refungible4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:10// target/release/unique-collator10// target/release/unique-collator11// benchmark11// benchmark12// pallet12// --pallet13// --pallet13// pallet-refungible14// pallet-refungible14// --wasm-execution15// --wasm-execution18// --template19// --template19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs20// --steps=5021// --steps=5021// --repeat=20022// --repeat=8022// --heap-pages=409623// --heap-pages=409623// --output=./pallets/refungible/src/weights.rs24// --output=./pallets/refungible/src/weights.rs242538 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight;39 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight;39 fn burn_item_partial() -> Weight;40 fn burn_item_partial() -> Weight;40 fn burn_item_fully() -> Weight;41 fn burn_item_fully() -> Weight;41 fn set_token_properties(amount: u32) -> Weight;42 fn delete_token_properties(amount: u32) -> Weight;43 fn set_property_permissions(amount: u32) -> Weight;44 fn transfer_normal() -> Weight;42 fn transfer_normal() -> Weight;45 fn transfer_creating() -> Weight;43 fn transfer_creating() -> Weight;46 fn transfer_removing() -> Weight;44 fn transfer_removing() -> Weight;63 // Storage: Refungible TokenData (r:0 w:1)61 // Storage: Refungible TokenData (r:0 w:1)64 // Storage: Refungible Owned (r:0 w:1)62 // Storage: Refungible Owned (r:0 w:1)65 fn create_item() -> Weight {63 fn create_item() -> Weight {66 (21_255_000 as Weight)64 (21_321_000 as Weight)67 .saturating_add(T::DbWeight::get().reads(2 as Weight))65 .saturating_add(T::DbWeight::get().reads(2 as Weight))68 .saturating_add(T::DbWeight::get().writes(6 as Weight))66 .saturating_add(T::DbWeight::get().writes(6 as Weight))69 }67 }74 // Storage: Refungible TokenData (r:0 w:4)72 // Storage: Refungible TokenData (r:0 w:4)75 // Storage: Refungible Owned (r:0 w:4)73 // Storage: Refungible Owned (r:0 w:4)76 fn create_multiple_items(b: u32, ) -> Weight {74 fn create_multiple_items(b: u32, ) -> Weight {77 (18_052_000 as Weight)75 (16_313_000 as Weight)78 // Standard Error: 1_00076 // Standard Error: 4_00079 .saturating_add((5_549_000 as Weight).saturating_mul(b as Weight))77 .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight))80 .saturating_add(T::DbWeight::get().reads(2 as Weight))78 .saturating_add(T::DbWeight::get().reads(2 as Weight))81 .saturating_add(T::DbWeight::get().writes(2 as Weight))79 .saturating_add(T::DbWeight::get().writes(2 as Weight))82 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))80 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))88 // Storage: Refungible TokenData (r:0 w:4)86 // Storage: Refungible TokenData (r:0 w:4)89 // Storage: Refungible Owned (r:0 w:4)87 // Storage: Refungible Owned (r:0 w:4)90 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {88 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {91 (15_766_000 as Weight)89 (15_631_000 as Weight)92 // Standard Error: 2_00090 // Standard Error: 5_00093 .saturating_add((8_187_000 as Weight).saturating_mul(b as Weight))91 .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight))94 .saturating_add(T::DbWeight::get().reads(1 as Weight))92 .saturating_add(T::DbWeight::get().reads(1 as Weight))95 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))93 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))96 .saturating_add(T::DbWeight::get().writes(1 as Weight))94 .saturating_add(T::DbWeight::get().writes(1 as Weight))103 // Storage: Refungible Balance (r:0 w:4)101 // Storage: Refungible Balance (r:0 w:4)104 // Storage: Refungible Owned (r:0 w:4)102 // Storage: Refungible Owned (r:0 w:4)105 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {103 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {106 (5_675_000 as Weight)104 (11_191_000 as Weight)107 // Standard Error: 2_000105 // Standard Error: 4_000108 .saturating_add((6_315_000 as Weight).saturating_mul(b as Weight))106 .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight))109 .saturating_add(T::DbWeight::get().reads(1 as Weight))107 .saturating_add(T::DbWeight::get().reads(1 as Weight))110 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))108 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))111 .saturating_add(T::DbWeight::get().writes(3 as Weight))109 .saturating_add(T::DbWeight::get().writes(3 as Weight))116 // Storage: Refungible AccountBalance (r:1 w:1)114 // Storage: Refungible AccountBalance (r:1 w:1)117 // Storage: Refungible Owned (r:0 w:1)115 // Storage: Refungible Owned (r:0 w:1)118 fn burn_item_partial() -> Weight {116 fn burn_item_partial() -> Weight {119 (23_518_000 as Weight)117 (24_421_000 as Weight)120 .saturating_add(T::DbWeight::get().reads(3 as Weight))118 .saturating_add(T::DbWeight::get().reads(3 as Weight))121 .saturating_add(T::DbWeight::get().writes(4 as Weight))119 .saturating_add(T::DbWeight::get().writes(4 as Weight))122 }120 }127 // Storage: Refungible TokenData (r:0 w:1)125 // Storage: Refungible TokenData (r:0 w:1)128 // Storage: Refungible Owned (r:0 w:1)126 // Storage: Refungible Owned (r:0 w:1)129 fn burn_item_fully() -> Weight {127 fn burn_item_fully() -> Weight {130 (32_489_000 as Weight)128 (32_900_000 as Weight)131 .saturating_add(T::DbWeight::get().reads(4 as Weight))129 .saturating_add(T::DbWeight::get().reads(4 as Weight))132 .saturating_add(T::DbWeight::get().writes(6 as Weight))130 .saturating_add(T::DbWeight::get().writes(6 as Weight))133 }131 }134135 fn set_token_properties(_amount: u32) -> Weight {136 // Error137 0138 }139140 fn delete_token_properties(_amount: u32) -> Weight {141 // Error142 0143 }144145 fn set_property_permissions(_amount: u32) -> Weight {146 // Error147 0148 }149150 // Storage: Refungible Balance (r:2 w:2)132 // Storage: Refungible Balance (r:2 w:2)151 fn transfer_normal() -> Weight {133 fn transfer_normal() -> Weight {152 (19_766_000 as Weight)134 (20_215_000 as Weight)153 .saturating_add(T::DbWeight::get().reads(2 as Weight))135 .saturating_add(T::DbWeight::get().reads(2 as Weight))154 .saturating_add(T::DbWeight::get().writes(2 as Weight))136 .saturating_add(T::DbWeight::get().writes(2 as Weight))155 }137 }156 // Storage: Refungible Balance (r:2 w:2)138 // Storage: Refungible Balance (r:2 w:2)157 // Storage: Refungible AccountBalance (r:1 w:1)139 // Storage: Refungible AccountBalance (r:1 w:1)158 // Storage: Refungible Owned (r:0 w:1)140 // Storage: Refungible Owned (r:0 w:1)159 fn transfer_creating() -> Weight {141 fn transfer_creating() -> Weight {160 (23_360_000 as Weight)142 (24_809_000 as Weight)161 .saturating_add(T::DbWeight::get().reads(3 as Weight))143 .saturating_add(T::DbWeight::get().reads(3 as Weight))162 .saturating_add(T::DbWeight::get().writes(4 as Weight))144 .saturating_add(T::DbWeight::get().writes(4 as Weight))163 }145 }164 // Storage: Refungible Balance (r:2 w:2)146 // Storage: Refungible Balance (r:2 w:2)165 // Storage: Refungible AccountBalance (r:1 w:1)147 // Storage: Refungible AccountBalance (r:1 w:1)166 // Storage: Refungible Owned (r:0 w:1)148 // Storage: Refungible Owned (r:0 w:1)167 fn transfer_removing() -> Weight {149 fn transfer_removing() -> Weight {168 (25_344_000 as Weight)150 (26_704_000 as Weight)169 .saturating_add(T::DbWeight::get().reads(3 as Weight))151 .saturating_add(T::DbWeight::get().reads(3 as Weight))170 .saturating_add(T::DbWeight::get().writes(4 as Weight))152 .saturating_add(T::DbWeight::get().writes(4 as Weight))171 }153 }172 // Storage: Refungible Balance (r:2 w:2)154 // Storage: Refungible Balance (r:2 w:2)173 // Storage: Refungible AccountBalance (r:2 w:2)155 // Storage: Refungible AccountBalance (r:2 w:2)174 // Storage: Refungible Owned (r:0 w:2)156 // Storage: Refungible Owned (r:0 w:2)175 fn transfer_creating_removing() -> Weight {157 fn transfer_creating_removing() -> Weight {176 (28_553_000 as Weight)158 (28_728_000 as Weight)177 .saturating_add(T::DbWeight::get().reads(4 as Weight))159 .saturating_add(T::DbWeight::get().reads(4 as Weight))178 .saturating_add(T::DbWeight::get().writes(6 as Weight))160 .saturating_add(T::DbWeight::get().writes(6 as Weight))179 }161 }180 // Storage: Refungible Balance (r:1 w:0)162 // Storage: Refungible Balance (r:1 w:0)181 // Storage: Refungible Allowance (r:0 w:1)163 // Storage: Refungible Allowance (r:0 w:1)182 fn approve() -> Weight {164 fn approve() -> Weight {183 (15_356_000 as Weight)165 (16_107_000 as Weight)184 .saturating_add(T::DbWeight::get().reads(1 as Weight))166 .saturating_add(T::DbWeight::get().reads(1 as Weight))185 .saturating_add(T::DbWeight::get().writes(1 as Weight))167 .saturating_add(T::DbWeight::get().writes(1 as Weight))186 }168 }187 // Storage: Refungible Allowance (r:1 w:1)169 // Storage: Refungible Allowance (r:1 w:1)188 // Storage: Refungible Balance (r:2 w:2)170 // Storage: Refungible Balance (r:2 w:2)189 fn transfer_from_normal() -> Weight {171 fn transfer_from_normal() -> Weight {190 (28_832_000 as Weight)172 (28_765_000 as Weight)191 .saturating_add(T::DbWeight::get().reads(3 as Weight))173 .saturating_add(T::DbWeight::get().reads(3 as Weight))192 .saturating_add(T::DbWeight::get().writes(3 as Weight))174 .saturating_add(T::DbWeight::get().writes(3 as Weight))193 }175 }196 // Storage: Refungible AccountBalance (r:1 w:1)178 // Storage: Refungible AccountBalance (r:1 w:1)197 // Storage: Refungible Owned (r:0 w:1)179 // Storage: Refungible Owned (r:0 w:1)198 fn transfer_from_creating() -> Weight {180 fn transfer_from_creating() -> Weight {199 (32_132_000 as Weight)181 (32_788_000 as Weight)200 .saturating_add(T::DbWeight::get().reads(4 as Weight))182 .saturating_add(T::DbWeight::get().reads(4 as Weight))201 .saturating_add(T::DbWeight::get().writes(5 as Weight))183 .saturating_add(T::DbWeight::get().writes(5 as Weight))202 }184 }205 // Storage: Refungible AccountBalance (r:1 w:1)187 // Storage: Refungible AccountBalance (r:1 w:1)206 // Storage: Refungible Owned (r:0 w:1)188 // Storage: Refungible Owned (r:0 w:1)207 fn transfer_from_removing() -> Weight {189 fn transfer_from_removing() -> Weight {208 (33_237_000 as Weight)190 (34_523_000 as Weight)209 .saturating_add(T::DbWeight::get().reads(4 as Weight))191 .saturating_add(T::DbWeight::get().reads(4 as Weight))210 .saturating_add(T::DbWeight::get().writes(5 as Weight))192 .saturating_add(T::DbWeight::get().writes(5 as Weight))211 }193 }214 // Storage: Refungible AccountBalance (r:2 w:2)196 // Storage: Refungible AccountBalance (r:2 w:2)215 // Storage: Refungible Owned (r:0 w:2)197 // Storage: Refungible Owned (r:0 w:2)216 fn transfer_from_creating_removing() -> Weight {198 fn transfer_from_creating_removing() -> Weight {217 (36_399_000 as Weight)199 (36_749_000 as Weight)218 .saturating_add(T::DbWeight::get().reads(5 as Weight))200 .saturating_add(T::DbWeight::get().reads(5 as Weight))219 .saturating_add(T::DbWeight::get().writes(7 as Weight))201 .saturating_add(T::DbWeight::get().writes(7 as Weight))220 }202 }226 // Storage: Refungible TokenData (r:0 w:1)208 // Storage: Refungible TokenData (r:0 w:1)227 // Storage: Refungible Owned (r:0 w:1)209 // Storage: Refungible Owned (r:0 w:1)228 fn burn_from() -> Weight {210 fn burn_from() -> Weight {229 (42_043_000 as Weight)211 (42_259_000 as Weight)230 .saturating_add(T::DbWeight::get().reads(5 as Weight))212 .saturating_add(T::DbWeight::get().reads(5 as Weight))231 .saturating_add(T::DbWeight::get().writes(7 as Weight))213 .saturating_add(T::DbWeight::get().writes(7 as Weight))232 }214 }241 // Storage: Refungible TokenData (r:0 w:1)223 // Storage: Refungible TokenData (r:0 w:1)242 // Storage: Refungible Owned (r:0 w:1)224 // Storage: Refungible Owned (r:0 w:1)243 fn create_item() -> Weight {225 fn create_item() -> Weight {244 (21_255_000 as Weight)226 (21_321_000 as Weight)245 .saturating_add(RocksDbWeight::get().reads(2 as Weight))227 .saturating_add(RocksDbWeight::get().reads(2 as Weight))246 .saturating_add(RocksDbWeight::get().writes(6 as Weight))228 .saturating_add(RocksDbWeight::get().writes(6 as Weight))247 }229 }252 // Storage: Refungible TokenData (r:0 w:4)234 // Storage: Refungible TokenData (r:0 w:4)253 // Storage: Refungible Owned (r:0 w:4)235 // Storage: Refungible Owned (r:0 w:4)254 fn create_multiple_items(b: u32, ) -> Weight {236 fn create_multiple_items(b: u32, ) -> Weight {255 (18_052_000 as Weight)237 (16_313_000 as Weight)256 // Standard Error: 1_000238 // Standard Error: 4_000257 .saturating_add((5_549_000 as Weight).saturating_mul(b as Weight))239 .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight))258 .saturating_add(RocksDbWeight::get().reads(2 as Weight))240 .saturating_add(RocksDbWeight::get().reads(2 as Weight))259 .saturating_add(RocksDbWeight::get().writes(2 as Weight))241 .saturating_add(RocksDbWeight::get().writes(2 as Weight))260 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))242 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))266 // Storage: Refungible TokenData (r:0 w:4)248 // Storage: Refungible TokenData (r:0 w:4)267 // Storage: Refungible Owned (r:0 w:4)249 // Storage: Refungible Owned (r:0 w:4)268 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {250 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {269 (15_766_000 as Weight)251 (15_631_000 as Weight)270 // Standard Error: 2_000252 // Standard Error: 5_000271 .saturating_add((8_187_000 as Weight).saturating_mul(b as Weight))253 .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight))272 .saturating_add(RocksDbWeight::get().reads(1 as Weight))254 .saturating_add(RocksDbWeight::get().reads(1 as Weight))273 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))255 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))274 .saturating_add(RocksDbWeight::get().writes(1 as Weight))256 .saturating_add(RocksDbWeight::get().writes(1 as Weight))281 // Storage: Refungible Balance (r:0 w:4)263 // Storage: Refungible Balance (r:0 w:4)282 // Storage: Refungible Owned (r:0 w:4)264 // Storage: Refungible Owned (r:0 w:4)283 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {265 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {284 (5_675_000 as Weight)266 (11_191_000 as Weight)285 // Standard Error: 2_000267 // Standard Error: 4_000286 .saturating_add((6_315_000 as Weight).saturating_mul(b as Weight))268 .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight))287 .saturating_add(RocksDbWeight::get().reads(1 as Weight))269 .saturating_add(RocksDbWeight::get().reads(1 as Weight))288 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))270 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))289 .saturating_add(RocksDbWeight::get().writes(3 as Weight))271 .saturating_add(RocksDbWeight::get().writes(3 as Weight))294 // Storage: Refungible AccountBalance (r:1 w:1)276 // Storage: Refungible AccountBalance (r:1 w:1)295 // Storage: Refungible Owned (r:0 w:1)277 // Storage: Refungible Owned (r:0 w:1)296 fn burn_item_partial() -> Weight {278 fn burn_item_partial() -> Weight {297 (23_518_000 as Weight)279 (24_421_000 as Weight)298 .saturating_add(RocksDbWeight::get().reads(3 as Weight))280 .saturating_add(RocksDbWeight::get().reads(3 as Weight))299 .saturating_add(RocksDbWeight::get().writes(4 as Weight))281 .saturating_add(RocksDbWeight::get().writes(4 as Weight))300 }282 }305 // Storage: Refungible TokenData (r:0 w:1)287 // Storage: Refungible TokenData (r:0 w:1)306 // Storage: Refungible Owned (r:0 w:1)288 // Storage: Refungible Owned (r:0 w:1)307 fn burn_item_fully() -> Weight {289 fn burn_item_fully() -> Weight {308 (32_489_000 as Weight)290 (32_900_000 as Weight)309 .saturating_add(RocksDbWeight::get().reads(4 as Weight))291 .saturating_add(RocksDbWeight::get().reads(4 as Weight))310 .saturating_add(RocksDbWeight::get().writes(6 as Weight))292 .saturating_add(RocksDbWeight::get().writes(6 as Weight))311 }293 }312313 fn set_token_properties(_amount: u32) -> Weight {314 // Error315 0316 }317318 fn delete_token_properties(_amount: u32) -> Weight {319 // Error320 0321 }322323 fn set_property_permissions(_amount: u32) -> Weight {324 // Error325 0326 }327328 // Storage: Refungible Balance (r:2 w:2)294 // Storage: Refungible Balance (r:2 w:2)329 fn transfer_normal() -> Weight {295 fn transfer_normal() -> Weight {330 (19_766_000 as Weight)296 (20_215_000 as Weight)331 .saturating_add(RocksDbWeight::get().reads(2 as Weight))297 .saturating_add(RocksDbWeight::get().reads(2 as Weight))332 .saturating_add(RocksDbWeight::get().writes(2 as Weight))298 .saturating_add(RocksDbWeight::get().writes(2 as Weight))333 }299 }334 // Storage: Refungible Balance (r:2 w:2)300 // Storage: Refungible Balance (r:2 w:2)335 // Storage: Refungible AccountBalance (r:1 w:1)301 // Storage: Refungible AccountBalance (r:1 w:1)336 // Storage: Refungible Owned (r:0 w:1)302 // Storage: Refungible Owned (r:0 w:1)337 fn transfer_creating() -> Weight {303 fn transfer_creating() -> Weight {338 (23_360_000 as Weight)304 (24_809_000 as Weight)339 .saturating_add(RocksDbWeight::get().reads(3 as Weight))305 .saturating_add(RocksDbWeight::get().reads(3 as Weight))340 .saturating_add(RocksDbWeight::get().writes(4 as Weight))306 .saturating_add(RocksDbWeight::get().writes(4 as Weight))341 }307 }342 // Storage: Refungible Balance (r:2 w:2)308 // Storage: Refungible Balance (r:2 w:2)343 // Storage: Refungible AccountBalance (r:1 w:1)309 // Storage: Refungible AccountBalance (r:1 w:1)344 // Storage: Refungible Owned (r:0 w:1)310 // Storage: Refungible Owned (r:0 w:1)345 fn transfer_removing() -> Weight {311 fn transfer_removing() -> Weight {346 (25_344_000 as Weight)312 (26_704_000 as Weight)347 .saturating_add(RocksDbWeight::get().reads(3 as Weight))313 .saturating_add(RocksDbWeight::get().reads(3 as Weight))348 .saturating_add(RocksDbWeight::get().writes(4 as Weight))314 .saturating_add(RocksDbWeight::get().writes(4 as Weight))349 }315 }350 // Storage: Refungible Balance (r:2 w:2)316 // Storage: Refungible Balance (r:2 w:2)351 // Storage: Refungible AccountBalance (r:2 w:2)317 // Storage: Refungible AccountBalance (r:2 w:2)352 // Storage: Refungible Owned (r:0 w:2)318 // Storage: Refungible Owned (r:0 w:2)353 fn transfer_creating_removing() -> Weight {319 fn transfer_creating_removing() -> Weight {354 (28_553_000 as Weight)320 (28_728_000 as Weight)355 .saturating_add(RocksDbWeight::get().reads(4 as Weight))321 .saturating_add(RocksDbWeight::get().reads(4 as Weight))356 .saturating_add(RocksDbWeight::get().writes(6 as Weight))322 .saturating_add(RocksDbWeight::get().writes(6 as Weight))357 }323 }358 // Storage: Refungible Balance (r:1 w:0)324 // Storage: Refungible Balance (r:1 w:0)359 // Storage: Refungible Allowance (r:0 w:1)325 // Storage: Refungible Allowance (r:0 w:1)360 fn approve() -> Weight {326 fn approve() -> Weight {361 (15_356_000 as Weight)327 (16_107_000 as Weight)362 .saturating_add(RocksDbWeight::get().reads(1 as Weight))328 .saturating_add(RocksDbWeight::get().reads(1 as Weight))363 .saturating_add(RocksDbWeight::get().writes(1 as Weight))329 .saturating_add(RocksDbWeight::get().writes(1 as Weight))364 }330 }365 // Storage: Refungible Allowance (r:1 w:1)331 // Storage: Refungible Allowance (r:1 w:1)366 // Storage: Refungible Balance (r:2 w:2)332 // Storage: Refungible Balance (r:2 w:2)367 fn transfer_from_normal() -> Weight {333 fn transfer_from_normal() -> Weight {368 (28_832_000 as Weight)334 (28_765_000 as Weight)369 .saturating_add(RocksDbWeight::get().reads(3 as Weight))335 .saturating_add(RocksDbWeight::get().reads(3 as Weight))370 .saturating_add(RocksDbWeight::get().writes(3 as Weight))336 .saturating_add(RocksDbWeight::get().writes(3 as Weight))371 }337 }374 // Storage: Refungible AccountBalance (r:1 w:1)340 // Storage: Refungible AccountBalance (r:1 w:1)375 // Storage: Refungible Owned (r:0 w:1)341 // Storage: Refungible Owned (r:0 w:1)376 fn transfer_from_creating() -> Weight {342 fn transfer_from_creating() -> Weight {377 (32_132_000 as Weight)343 (32_788_000 as Weight)378 .saturating_add(RocksDbWeight::get().reads(4 as Weight))344 .saturating_add(RocksDbWeight::get().reads(4 as Weight))379 .saturating_add(RocksDbWeight::get().writes(5 as Weight))345 .saturating_add(RocksDbWeight::get().writes(5 as Weight))380 }346 }383 // Storage: Refungible AccountBalance (r:1 w:1)349 // Storage: Refungible AccountBalance (r:1 w:1)384 // Storage: Refungible Owned (r:0 w:1)350 // Storage: Refungible Owned (r:0 w:1)385 fn transfer_from_removing() -> Weight {351 fn transfer_from_removing() -> Weight {386 (33_237_000 as Weight)352 (34_523_000 as Weight)387 .saturating_add(RocksDbWeight::get().reads(4 as Weight))353 .saturating_add(RocksDbWeight::get().reads(4 as Weight))388 .saturating_add(RocksDbWeight::get().writes(5 as Weight))354 .saturating_add(RocksDbWeight::get().writes(5 as Weight))389 }355 }392 // Storage: Refungible AccountBalance (r:2 w:2)358 // Storage: Refungible AccountBalance (r:2 w:2)393 // Storage: Refungible Owned (r:0 w:2)359 // Storage: Refungible Owned (r:0 w:2)394 fn transfer_from_creating_removing() -> Weight {360 fn transfer_from_creating_removing() -> Weight {395 (36_399_000 as Weight)361 (36_749_000 as Weight)396 .saturating_add(RocksDbWeight::get().reads(5 as Weight))362 .saturating_add(RocksDbWeight::get().reads(5 as Weight))397 .saturating_add(RocksDbWeight::get().writes(7 as Weight))363 .saturating_add(RocksDbWeight::get().writes(7 as Weight))398 }364 }404 // Storage: Refungible TokenData (r:0 w:1)370 // Storage: Refungible TokenData (r:0 w:1)405 // Storage: Refungible Owned (r:0 w:1)371 // Storage: Refungible Owned (r:0 w:1)406 fn burn_from() -> Weight {372 fn burn_from() -> Weight {407 (42_043_000 as Weight)373 (42_259_000 as Weight)408 .saturating_add(RocksDbWeight::get().reads(5 as Weight))374 .saturating_add(RocksDbWeight::get().reads(5 as Weight))409 .saturating_add(RocksDbWeight::get().writes(7 as Weight))375 .saturating_add(RocksDbWeight::get().writes(7 as Weight))410 }376 }pallets/scheduler/Cargo.tomldiffbeforeafterboth1[package]1[package]2name = "pallet-unq-scheduler"2name = "pallet-unique-scheduler"3version = "0.1.0"3version = "0.1.0"4authors = ["Unique Network <support@uniquenetwork.io>"]4authors = ["Unique Network <support@uniquenetwork.io>"]5edition = "2021"5edition = "2021"pallets/scheduler/src/benchmarking.rsdiffbeforeafterboth343435//! Scheduler pallet benchmarking.35//! Scheduler pallet benchmarking.3637#![cfg(feature = "runtime-benchmarks")]383639use super::*;37use super::*;38use frame_benchmarking::{benchmarks, account};40use sp_std::{vec, prelude::*};39use frame_support::{40 ensure,41 traits::{OnInitialize},42};41use frame_system::RawOrigin;43use frame_system::RawOrigin;42use frame_support::{ensure, traits::OnInitialize};44use sp_runtime::traits::Hash;43use frame_benchmarking::{benchmarks, impl_benchmark_test_suite};45use sp_std::{prelude::*, vec};444645use crate::Module as Scheduler;47use crate::Pallet as Scheduler;46use frame_system::Pallet as System;48use frame_system::Pallet as System;49use frame_support::traits::Currency;475048const BLOCK_NUMBER: u32 = 2;51const BLOCK_NUMBER: u32 = 2;495250// Add `n` named items to the schedule53/// Add `n` named items to the schedule.54///55/// For `resolved`:56/// - `None`: aborted (hash without preimage)57/// - `Some(true)`: hash resolves into call if possible, plain call otherwise58/// - `Some(false)`: plain call51fn fill_schedule<T: Config>(when: T::BlockNumber, n: u32) -> Result<(), &'static str> {59fn fill_schedule<T: Config>(52 // Essentially a no-op call.60 when: T::BlockNumber,61 n: u32,62 periodic: bool,63 resolved: Option<bool>,64) -> Result<(), &'static str> {65 let t = DispatchTime::At(when);66 let caller = account("user", 0, 1);6768 // Give the sender account max funds for transfer (their account will never reasonably be killed).53 let call = frame_system::Call::set_storage { items: vec![] };69 T::Currency::make_free_balance_be(&caller, T::Currency::minimum_balance());7054 for i in 0..n {71 for i in 0..n {55 // Named schedule is strictly heavier than anonymous72 let (call, hash) = call_and_hash::<T>(i);56 Scheduler::<T>::do_schedule_named(73 let call_or_hash = match resolved {57 i.encode(),74 Some(_) => call.into(),58 DispatchTime::At(when),75 None => CallOrHashOf::<T>::Hash(hash),59 // Add periodicity76 };77 let period = match periodic {78 true => Some(((i + 100).into(), 100)),79 false => None,80 };8182 let slice_id: [u8; 4] = i.encode().try_into().unwrap();83 let mut id: [u8; 16] = [0; 16];60 Some((T::BlockNumber::one(), 100)),84 id[..4].clone_from_slice(&slice_id);61 // HARD_DEADLINE priority means it gets executed no matter what8562 0,63 frame_system::RawOrigin::Root.into(),86 let origin = frame_system::RawOrigin::Signed(caller.clone()).into();64 call.clone().into(),87 Scheduler::<T>::do_schedule_named(id, t, period, 0, origin, call_or_hash)?;65 )?;66 }88 }67 ensure!(89 ensure!(68 Agenda::<T>::get(when).len() == n as usize,90 Agenda::<T>::get(when).len() == n as usize,71 Ok(())93 Ok(())72}94}9596fn call_and_hash<T: Config>(i: u32) -> (<T as Config>::Call, T::Hash) {97 // Essentially a no-op call.98 let call: <T as Config>::Call = frame_system::Call::remark { remark: i.encode() }.into();99 let hash = T::Hashing::hash_of(&call);100 (call, hash)101}7310274benchmarks! {103benchmarks! {75 schedule {104 on_initialize_periodic_named_resolved {76 let s in 0 .. T::MaxScheduledPerBlock::get();105 let s in 1 .. T::MaxScheduledPerBlock::get();77 let when = BLOCK_NUMBER.into();106 let when = BLOCK_NUMBER.into();78 let periodic = Some((T::BlockNumber::one(), 100));107 fill_schedule::<T>(when, s, true, Some(true))?;108 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }109 verify {110 assert_eq!(System::<T>::event_count(), s);111 for i in 0..s {112 assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);113 }114 }115116 on_initialize_named_resolved {79 let priority = 0;117 let s in 1 .. T::MaxScheduledPerBlock::get();80 // Essentially a no-op call.81 let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into());118 let when = BLOCK_NUMBER.into();82119 fill_schedule::<T>(when, s, false, Some(true))?;120 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }121 verify {122 assert_eq!(System::<T>::event_count(), s);123 assert!(Agenda::<T>::iter().count() == 0);124 }125126 on_initialize_periodic {127 let s in 1 .. T::MaxScheduledPerBlock::get();128 let when = BLOCK_NUMBER.into();83 fill_schedule::<T>(when, s)?;129 fill_schedule::<T>(when, s, true, Some(false))?;84 }: _(RawOrigin::Root, when, periodic, priority, call)130 }: { Scheduler::<T>::on_initialize(when); }85 verify {131 verify {86 ensure!(132 assert_eq!(System::<T>::event_count(), s);133 for i in 0..s {87 Agenda::<T>::get(when).len() == (s + 1) as usize,134 assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);88 "didn't add to schedule"135 }89 );90 }136 }9113792 cancel {138 on_initialize_periodic_resolved {93 let s in 1 .. T::MaxScheduledPerBlock::get();139 let s in 1 .. T::MaxScheduledPerBlock::get();94 let when = BLOCK_NUMBER.into();140 let when = BLOCK_NUMBER.into();9596 fill_schedule::<T>(when, s)?;141 fill_schedule::<T>(when, s, true, Some(true))?;142 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }143 verify {97 assert_eq!(Agenda::<T>::get(when).len(), s as usize);144 assert_eq!(System::<T>::event_count(), s );145 for i in 0..s {146 assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);147 }148 }149150 on_initialize_aborted {151 let s in 1 .. T::MaxScheduledPerBlock::get();152 let when = BLOCK_NUMBER.into();153 fill_schedule::<T>(when, s, false, None)?;98 }: _(RawOrigin::Root, when, 0)154 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }155 verify {156 assert_eq!(System::<T>::event_count(), 0);157 }158159 on_initialize_named_aborted {160 let s in 1 .. T::MaxScheduledPerBlock::get();161 let when = BLOCK_NUMBER.into();162 fill_schedule::<T>(when, s, false, Some(false))?;163 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }99 verify {164 verify {165 }166167 on_initialize_named {168 let s in 1 .. T::MaxScheduledPerBlock::get();169 let when = BLOCK_NUMBER.into();170 fill_schedule::<T>(when, s, false, None)?;171 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }172 verify {100 ensure!(173 assert_eq!(System::<T>::event_count(), 0);174 }175176 on_initialize {101 Lookup::<T>::get(0.encode()).is_none(),177 let s in 1 .. T::MaxScheduledPerBlock::get();102 "didn't remove from lookup"178 let when = BLOCK_NUMBER.into();179 fill_schedule::<T>(when, s, false, Some(false))?;180 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }181 verify {103 );182 assert_eq!(System::<T>::event_count(), s);104 // Removed schedule is NONE105 ensure!(183 assert!(Agenda::<T>::iter().count() == 0);184 }185186 on_initialize_resolved {106 Agenda::<T>::get(when)[0].is_none(),187 let s in 1 .. T::MaxScheduledPerBlock::get();107 "didn't remove from schedule"188 let when = BLOCK_NUMBER.into();189 fill_schedule::<T>(when, s, false, Some(true))?;190 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }191 verify {108 );192 assert_eq!(System::<T>::event_count(), s);109 }193 assert!(Agenda::<T>::iter().count() == 0);194 }110195111 schedule_named {196 schedule_named {197 let caller: T::AccountId = account("user", 0, 1);198 let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Signed(caller.clone());112 let s in 0 .. T::MaxScheduledPerBlock::get();199 let s in 0 .. T::MaxScheduledPerBlock::get();113 let id = s.encode();200 let slice_id: [u8; 4] = s.encode().try_into().unwrap();201 let mut id: [u8; 16] = [0; 16];202 id[..4].clone_from_slice(&slice_id);114 let when = BLOCK_NUMBER.into();203 let when = BLOCK_NUMBER.into();115 let periodic = Some((T::BlockNumber::one(), 100));204 let periodic = Some((T::BlockNumber::one(), 100));116 let priority = 0;205 let priority = 0;117 // Essentially a no-op call.206 // Essentially a no-op call.118 let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into());207 let inner_call = frame_system::Call::set_storage { items: vec![] }.into();119208 let call = Box::new(CallOrHashOf::<T>::Value(inner_call));120 fill_schedule::<T>(when, s)?;209 fill_schedule::<T>(when, s, true, Some(false))?;121 }: _(RawOrigin::Root, id, when, periodic, priority, call)210 }: _(origin, id, when, periodic, priority, call)122 verify {211 verify {123 ensure!(212 ensure!(124 Agenda::<T>::get(when).len() == (s + 1) as usize,213 Agenda::<T>::get(when).len() == (s + 1) as usize,127 }216 }128217129 cancel_named {218 cancel_named {219 let caller: T::AccountId = account("user", 0, 1);220 let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Signed(caller.clone());130 let s in 1 .. T::MaxScheduledPerBlock::get();221 let s in 1 .. T::MaxScheduledPerBlock::get();131 let when = BLOCK_NUMBER.into();222 let when = BLOCK_NUMBER.into();132223 let id = 0.encode().try_into().unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);133 fill_schedule::<T>(when, s)?;224 fill_schedule::<T>(when, s, true, Some(false))?;134 }: _(RawOrigin::Root, 0.encode())225 }: _(origin, id)135 verify {226 verify {136 ensure!(227 ensure!(137 Lookup::<T>::get(0.encode()).is_none(),228 Lookup::<T>::get(id).is_none(),138 "didn't remove from lookup"229 "didn't remove from lookup"139 );230 );140 // Removed schedule is NONE231 // Removed schedule is NONE144 );235 );145 }236 }146237147 // TODO [#7141]: Make this more complex and flexible so it can be used in automation.148 #[extra]149 on_initialize {150 let s in 0 .. T::MaxScheduledPerBlock::get();151 let when = BLOCK_NUMBER.into();152 fill_schedule::<T>(when, s)?;153 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }238 impl_benchmark_test_suite!(Scheduler, crate::mock::new_test_ext(), crate::mock::Test);154 verify {155 assert_eq!(System::<T>::event_count(), s);156 // Next block should have all the schedules again157 ensure!(158 Agenda::<T>::get(when + T::BlockNumber::one()).len() == s as usize,159 "didn't append schedule"160 );161 }162}239}163164impl_benchmark_test_suite!(Scheduler, crate::tests::new_test_ext(), crate::tests::Test,);165240pallets/scheduler/src/lib.rsdiffbeforeafterboth60// Ensure we're `no_std` when compiling for Wasm.60// Ensure we're `no_std` when compiling for Wasm.61#![cfg_attr(not(feature = "std"), no_std)]61#![cfg_attr(not(feature = "std"), no_std)]626263// FIXME64// #[cfg(feature = "runtime-benchmarks")]63#[cfg(feature = "runtime-benchmarks")]65// mod benchmarking;64mod benchmarking;666567pub mod weights;66pub mod weights;6867159 Self::on_initialize_periodic(2) - Self::on_initialize_periodic(1)158 Self::on_initialize_periodic(2) - Self::on_initialize_periodic(1)160 }159 }161 (true, true, Some(false)) => {160 (true, true, Some(false)) => {162 Self::on_initialize_periodic_named(2) - Self::on_initialize_periodic_named(1)161 Self::on_initialize_periodic_named_resolved(2)162 - Self::on_initialize_periodic_named_resolved(1)163 }163 }164 (false, false, Some(true)) => {164 (false, false, Some(true)) => Self::on_initialize(2) - Self::on_initialize(1),165 Self::on_initialize_resolved(2) - Self::on_initialize_resolved(1)166 }167 (false, true, Some(true)) => {165 (false, true, Some(true)) => {168 Self::on_initialize_named_resolved(2) - Self::on_initialize_named_resolved(1)166 Self::on_initialize_named_resolved(2) - Self::on_initialize_named_resolved(1)169 }167 }610 Ok(when)608 Ok(when)611 }609 }612610613 fn do_schedule(614 when: DispatchTime<T::BlockNumber>,615 maybe_periodic: Option<schedule::Period<T::BlockNumber>>,616 priority: schedule::Priority,617 origin: T::PalletsOrigin,618 call: CallOrHashOf<T>,619 ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {620 let when = Self::resolve_time(when)?;621 call.ensure_requested::<T::PreimageProvider>();622623 // sanitize maybe_periodic624 let maybe_periodic = maybe_periodic625 .filter(|p| p.1 > 1 && !p.0.is_zero())626 // Remove one from the number of repetitions since we will schedule one now.627 .map(|(p, c)| (p, c - 1));628 let s = Some(Scheduled {629 maybe_id: None,630 priority,631 call,632 maybe_periodic,633 origin,634 _phantom: PhantomData::<T::AccountId>::default(),635 });636 Agenda::<T>::append(when, s);637 let index = Agenda::<T>::decode_len(when).unwrap_or(1) as u32 - 1;638 Self::deposit_event(Event::Scheduled { when, index });639640 Ok((when, index))641 }642643 fn do_cancel(644 origin: Option<T::PalletsOrigin>,645 (when, index): TaskAddress<T::BlockNumber>,646 ) -> Result<(), DispatchError> {647 let scheduled = Agenda::<T>::try_mutate(when, |agenda| {648 agenda.get_mut(index as usize).map_or(649 Ok(None),650 |s| -> Result<Option<Scheduled<_, _, _, _>>, DispatchError> {651 if let (Some(ref o), Some(ref s)) = (origin, s.borrow()) {652 if matches!(653 T::OriginPrivilegeCmp::cmp_privilege(o, &s.origin),654 Some(Ordering::Less) | None655 ) {656 return Err(BadOrigin.into());657 }658 };659 Ok(s.take())660 },661 )662 })?;663 if let Some(s) = scheduled {664 s.call.ensure_unrequested::<T::PreimageProvider>();665 if let Some(id) = s.maybe_id {666 Lookup::<T>::remove(id);667 }668 Self::deposit_event(Event::Canceled { when, index });669 Ok(())670 } else {671 Err(Error::<T>::NotFound)?672 }673 }674675 fn do_reschedule(676 (when, index): TaskAddress<T::BlockNumber>,677 new_time: DispatchTime<T::BlockNumber>,678 ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {679 let new_time = Self::resolve_time(new_time)?;680681 if new_time == when {682 return Err(Error::<T>::RescheduleNoChange.into());683 }684685 Agenda::<T>::try_mutate(when, |agenda| -> DispatchResult {686 let task = agenda.get_mut(index as usize).ok_or(Error::<T>::NotFound)?;687 let task = task.take().ok_or(Error::<T>::NotFound)?;688 Agenda::<T>::append(new_time, Some(task));689 Ok(())690 })?;691692 let new_index = Agenda::<T>::decode_len(new_time).unwrap_or(1) as u32 - 1;693 Self::deposit_event(Event::Canceled { when, index });694 Self::deposit_event(Event::Scheduled {695 when: new_time,696 index: new_index,697 });698699 Ok((new_time, new_index))700 }701702 fn do_schedule_named(611 fn do_schedule_named(703 id: ScheduledId,612 id: ScheduledId,789 Err(Error::<T>::NotFound)?698 Err(Error::<T>::NotFound)?790 }699 }791 })700 })792 }793794 fn do_reschedule_named(795 id: ScheduledId,796 new_time: DispatchTime<T::BlockNumber>,797 ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {798 let new_time = Self::resolve_time(new_time)?;799800 Lookup::<T>::try_mutate_exists(801 id,802 |lookup| -> Result<TaskAddress<T::BlockNumber>, DispatchError> {803 let (when, index) = lookup.ok_or(Error::<T>::NotFound)?;804805 if new_time == when {806 return Err(Error::<T>::RescheduleNoChange.into());807 }808809 Agenda::<T>::try_mutate(when, |agenda| -> DispatchResult {810 let task = agenda.get_mut(index as usize).ok_or(Error::<T>::NotFound)?;811 let task = task.take().ok_or(Error::<T>::NotFound)?;812 Agenda::<T>::append(new_time, Some(task));813814 Ok(())815 })?;816817 let new_index = Agenda::<T>::decode_len(new_time).unwrap_or(1) as u32 - 1;818 Self::deposit_event(Event::Canceled { when, index });819 Self::deposit_event(Event::Scheduled {820 when: new_time,821 index: new_index,822 });823824 *lookup = Some((new_time, new_index));825826 Ok((new_time, new_index))827 },828 )829 }830}831832impl<T: Config> schedule::v2::Anon<T::BlockNumber, <T as Config>::Call, T::PalletsOrigin>833 for Pallet<T>834{835 type Address = TaskAddress<T::BlockNumber>;836 type Hash = T::Hash;837838 fn schedule(839 when: DispatchTime<T::BlockNumber>,840 maybe_periodic: Option<schedule::Period<T::BlockNumber>>,841 priority: schedule::Priority,842 origin: T::PalletsOrigin,843 call: CallOrHashOf<T>,844 ) -> Result<Self::Address, DispatchError> {845 Self::do_schedule(when, maybe_periodic, priority, origin, call)846 }847848 fn cancel((when, index): Self::Address) -> Result<(), ()> {849 Self::do_cancel(None, (when, index)).map_err(|_| ())850 }851852 fn reschedule(853 address: Self::Address,854 when: DispatchTime<T::BlockNumber>,855 ) -> Result<Self::Address, DispatchError> {856 Self::do_reschedule(address, when)857 }858859 fn next_dispatch_time((when, index): Self::Address) -> Result<T::BlockNumber, ()> {860 Agenda::<T>::get(when)861 .get(index as usize)862 .ok_or(())863 .map(|_| when)864 }865}866867impl<T: Config> schedule::v2::Named<T::BlockNumber, <T as Config>::Call, T::PalletsOrigin>868 for Pallet<T>869{870 type Address = TaskAddress<T::BlockNumber>;871 type Hash = T::Hash;872873 fn schedule_named(874 id: Vec<u8>,875 when: DispatchTime<T::BlockNumber>,876 maybe_periodic: Option<schedule::Period<T::BlockNumber>>,877 priority: schedule::Priority,878 origin: T::PalletsOrigin,879 call: CallOrHashOf<T>,880 ) -> Result<Self::Address, ()> {881 let inner_id: ScheduledId = id882 .try_into()883 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);884 Self::do_schedule_named(inner_id, when, maybe_periodic, priority, origin, call)885 .map_err(|_| ())886 }887888 fn cancel_named(id: Vec<u8>) -> Result<(), ()> {889 let inner_id: ScheduledId = id890 .try_into()891 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);892 Self::do_cancel_named(None, inner_id).map_err(|_| ())893 }894895 fn reschedule_named(896 id: Vec<u8>,897 when: DispatchTime<T::BlockNumber>,898 ) -> Result<Self::Address, DispatchError> {899 let inner_id: ScheduledId = id900 .try_into()901 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);902 Self::do_reschedule_named(inner_id, when)903 }904905 fn next_dispatch_time(id: Vec<u8>) -> Result<T::BlockNumber, ()> {906 let inner_id: ScheduledId = id907 .try_into()908 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);909 Lookup::<T>::get(inner_id)910 .and_then(|(when, index)| Agenda::<T>::get(when).get(index as usize).map(|_| when))911 .ok_or(())912 }701 }913}702}914703pallets/scheduler/src/weights.rsdiffbeforeafterboth1// This file is part of Substrate.1// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs223// Copyright (C) 2022 Parity Technologies (UK) Ltd.3//! Autogenerated weights for pallet_unique_scheduler4// SPDX-License-Identifier: Apache-2.056// Licensed under the Apache License, Version 2.0 (the "License");7// you may not use this file except in compliance with the License.8// You may obtain a copy of the License at9//10// http://www.apache.org/licenses/LICENSE-2.011//12// Unless required by applicable law or agreed to in writing, software13// distributed under the License is distributed on an "AS IS" BASIS,14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.15// See the License for the specific language governing permissions and16// limitations under the License.1718//! Autogenerated weights for pallet_scheduler19//!4//!20//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev21//! DATE: 2022-01-31, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`22//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 102423824// Executed Command:9// Executed Command:25// ./target/production/substrate10// target/release/unique-collator26// benchmark11// benchmark27// --chain=dev12// pallet13// --pallet14// pallet-unique-scheduler15// --wasm-execution16// compiled17// --extrinsic18// *19// --template20// .maintain/frame-weight-template.hbs28// --steps=5021// --steps=5029// --repeat=2022// --repeat=8030// --pallet=pallet_scheduler31// --extrinsic=*32// --execution=wasm33// --wasm-execution=compiled34// --heap-pages=409623// --heap-pages=409635// --output=./frame/scheduler/src/weights.rs24// --output=./pallets/scheduler/src/weights.rs36// --template=.maintain/frame-weight-template.hbs37// --header=HEADER-APACHE238// --raw392540#![cfg_attr(rustfmt, rustfmt_skip)]26#![cfg_attr(rustfmt, rustfmt_skip)]41#![allow(unused_parens)]27#![allow(unused_parens)]42#![allow(unused_imports)]28#![allow(unused_imports)]29#![allow(clippy::unnecessary_cast)]433044use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};31use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};45use sp_std::marker::PhantomData;32use sp_std::marker::PhantomData;463347/// Weight functions needed for pallet_scheduler.34/// Weight functions needed for pallet_unique_scheduler.48pub trait WeightInfo {35pub trait WeightInfo {49 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight;36 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight;50 fn on_initialize_named_resolved(s: u32, ) -> Weight;37 fn on_initialize_named_resolved(s: u32, ) -> Weight;38 fn on_initialize_periodic(s: u32, ) -> Weight;51 fn on_initialize_periodic_resolved(s: u32, ) -> Weight;39 fn on_initialize_periodic_resolved(s: u32, ) -> Weight;52 fn on_initialize_resolved(s: u32, ) -> Weight;53 fn on_initialize_named_aborted(s: u32, ) -> Weight;54 fn on_initialize_aborted(s: u32, ) -> Weight;40 fn on_initialize_aborted(s: u32, ) -> Weight;55 fn on_initialize_periodic_named(s: u32, ) -> Weight;41 fn on_initialize_named_aborted(s: u32, ) -> Weight;56 fn on_initialize_periodic(s: u32, ) -> Weight;57 fn on_initialize_named(s: u32, ) -> Weight;42 fn on_initialize_named(s: u32, ) -> Weight;58 fn on_initialize(s: u32, ) -> Weight;43 fn on_initialize(s: u32, ) -> Weight;59 fn schedule(s: u32, ) -> Weight;44 fn on_initialize_resolved(s: u32, ) -> Weight;60 fn cancel(s: u32, ) -> Weight;61 fn schedule_named(s: u32, ) -> Weight;45 fn schedule_named(s: u32, ) -> Weight;62 fn cancel_named(s: u32, ) -> Weight;46 fn cancel_named(s: u32, ) -> Weight;63}47}644865/// Weights for pallet_scheduler using the Substrate node and recommended hardware.49/// Weights for pallet_unique_scheduler using the Substrate node and recommended hardware.66pub struct SubstrateWeight<T>(PhantomData<T>);50pub struct SubstrateWeight<T>(PhantomData<T>);67impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {51impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {68 // Storage: Scheduler Agenda (r:2 w:2)52 // Storage: Scheduler Agenda (r:2 w:2)69 // Storage: Preimage PreimageFor (r:1 w:1)53 // Storage: System Account (r:1 w:1)70 // Storage: Preimage StatusFor (r:1 w:1)54 // Storage: System AllExtrinsicsLen (r:1 w:1)55 // Storage: System BlockWeight (r:1 w:1)71 // Storage: Scheduler Lookup (r:0 w:1)56 // Storage: Scheduler Lookup (r:0 w:1)72 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {57 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {73 (11_587_000 as Weight)58 (27_374_000 as Weight)74 // Standard Error: 17_00059 // Standard Error: 7_00075 .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight))60 .saturating_add((9_673_000 as Weight).saturating_mul(s as Weight))76 .saturating_add(T::DbWeight::get().reads(1 as Weight))61 .saturating_add(T::DbWeight::get().reads(4 as Weight))77 .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))62 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))78 .saturating_add(T::DbWeight::get().writes(1 as Weight))63 .saturating_add(T::DbWeight::get().writes(4 as Weight))79 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(s as Weight)))64 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))80 }65 }81 // Storage: Scheduler Agenda (r:1 w:1)66 // Storage: Scheduler Agenda (r:1 w:1)82 // Storage: Preimage PreimageFor (r:1 w:1)67 // Storage: System Account (r:1 w:1)83 // Storage: Preimage StatusFor (r:1 w:1)68 // Storage: System AllExtrinsicsLen (r:1 w:1)69 // Storage: System BlockWeight (r:1 w:1)84 // Storage: Scheduler Lookup (r:0 w:1)70 // Storage: Scheduler Lookup (r:0 w:1)85 fn on_initialize_named_resolved(s: u32, ) -> Weight {71 fn on_initialize_named_resolved(s: u32, ) -> Weight {86 (8_965_000 as Weight)72 (25_967_000 as Weight)87 // Standard Error: 11_00073 // Standard Error: 6_00088 .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight))74 .saturating_add((5_916_000 as Weight).saturating_mul(s as Weight))89 .saturating_add(T::DbWeight::get().reads(1 as Weight))75 .saturating_add(T::DbWeight::get().reads(4 as Weight))90 .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))76 .saturating_add(T::DbWeight::get().writes(4 as Weight))91 .saturating_add(T::DbWeight::get().writes(1 as Weight))92 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))77 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))93 }78 }94 // Storage: Scheduler Agenda (r:2 w:2)79 // Storage: Scheduler Agenda (r:2 w:2)95 // Storage: Preimage PreimageFor (r:1 w:1)80 // Storage: System Account (r:1 w:1)96 // Storage: Preimage StatusFor (r:1 w:1)81 // Storage: System AllExtrinsicsLen (r:1 w:1)97 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {82 // Storage: System BlockWeight (r:1 w:1)98 (8_654_000 as Weight)99 // Standard Error: 17_000100 .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight))101 .saturating_add(T::DbWeight::get().reads(1 as Weight))102 .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))103 .saturating_add(T::DbWeight::get().writes(1 as Weight))104 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))105 }106 // Storage: Scheduler Agenda (r:1 w:1)107 // Storage: Preimage PreimageFor (r:1 w:1)83 // Storage: Scheduler Lookup (r:0 w:1)108 // Storage: Preimage StatusFor (r:1 w:1)84 fn on_initialize_periodic(s: u32, ) -> Weight {109 fn on_initialize_resolved(s: u32, ) -> Weight {110 (9_303_000 as Weight)85 (27_097_000 as Weight)111 // Standard Error: 10_00086 // Standard Error: 5_000112 .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight))87 .saturating_add((9_652_000 as Weight).saturating_mul(s as Weight))113 .saturating_add(T::DbWeight::get().reads(1 as Weight))88 .saturating_add(T::DbWeight::get().reads(4 as Weight))114 .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))89 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))115 .saturating_add(T::DbWeight::get().writes(1 as Weight))90 .saturating_add(T::DbWeight::get().writes(4 as Weight))116 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))91 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))117 }92 }118 // Storage: Scheduler Agenda (r:2 w:2)93 // Storage: Scheduler Agenda (r:2 w:2)119 // Storage: Preimage PreimageFor (r:1 w:0)94 // Storage: System Account (r:1 w:1)95 // Storage: System AllExtrinsicsLen (r:1 w:1)96 // Storage: System BlockWeight (r:1 w:1)120 // Storage: Scheduler Lookup (r:0 w:1)97 // Storage: Scheduler Lookup (r:0 w:1)121 fn on_initialize_named_aborted(s: u32, ) -> Weight {98 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {122 (7_506_000 as Weight)99 (43_116_000 as Weight)123 // Standard Error: 3_000100 // Standard Error: 18_000124 .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight))101 .saturating_add((8_352_000 as Weight).saturating_mul(s as Weight))125 .saturating_add(T::DbWeight::get().reads(2 as Weight))102 .saturating_add(T::DbWeight::get().reads(4 as Weight))126 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))103 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))127 .saturating_add(T::DbWeight::get().writes(2 as Weight))104 .saturating_add(T::DbWeight::get().writes(4 as Weight))128 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))105 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))129 }106 }130 // Storage: Scheduler Agenda (r:2 w:2)107 // Storage: Scheduler Agenda (r:2 w:2)131 // Storage: Preimage PreimageFor (r:1 w:0)108 // Storage: Scheduler Lookup (r:0 w:1)132 fn on_initialize_aborted(s: u32, ) -> Weight {109 fn on_initialize_aborted(s: u32, ) -> Weight {133 (8_046_000 as Weight)110 (4_921_000 as Weight)134 // Standard Error: 3_000111 // Standard Error: 4_000135 .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight))112 .saturating_add((2_249_000 as Weight).saturating_mul(s as Weight))136 .saturating_add(T::DbWeight::get().reads(2 as Weight))113 .saturating_add(T::DbWeight::get().reads(2 as Weight))137 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))138 .saturating_add(T::DbWeight::get().writes(2 as Weight))114 .saturating_add(T::DbWeight::get().writes(2 as Weight))115 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))139 }116 }140 // Storage: Scheduler Agenda (r:2 w:2)117 // Storage: Scheduler Agenda (r:1 w:1)118 // Storage: System Account (r:1 w:1)119 // Storage: System AllExtrinsicsLen (r:1 w:1)120 // Storage: System BlockWeight (r:1 w:1)141 // Storage: Scheduler Lookup (r:0 w:1)121 // Storage: Scheduler Lookup (r:0 w:1)142 fn on_initialize_periodic_named(s: u32, ) -> Weight {122 fn on_initialize_named_aborted(s: u32, ) -> Weight {143 (13_704_000 as Weight)123 (26_934_000 as Weight)144 // Standard Error: 4_000124 // Standard Error: 7_000145 .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight))125 .saturating_add((5_819_000 as Weight).saturating_mul(s as Weight))146 .saturating_add(T::DbWeight::get().reads(1 as Weight))126 .saturating_add(T::DbWeight::get().reads(4 as Weight))147 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))127 .saturating_add(T::DbWeight::get().writes(4 as Weight))148 .saturating_add(T::DbWeight::get().writes(1 as Weight))149 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))150 }151 // Storage: Scheduler Agenda (r:2 w:2)152 fn on_initialize_periodic(s: u32, ) -> Weight {153 (12_668_000 as Weight)154 // Standard Error: 5_000155 .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight))156 .saturating_add(T::DbWeight::get().reads(1 as Weight))157 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))158 .saturating_add(T::DbWeight::get().writes(1 as Weight))159 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))128 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))160 }129 }161 // Storage: Scheduler Agenda (r:1 w:1)130 // Storage: Scheduler Agenda (r:2 w:2)162 // Storage: Scheduler Lookup (r:0 w:1)131 // Storage: Scheduler Lookup (r:0 w:1)163 fn on_initialize_named(s: u32, ) -> Weight {132 fn on_initialize_named(s: u32, ) -> Weight {164 (13_946_000 as Weight)133 (6_423_000 as Weight)165 // Standard Error: 4_000134 // Standard Error: 1_000166 .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight))135 .saturating_add((2_141_000 as Weight).saturating_mul(s as Weight))167 .saturating_add(T::DbWeight::get().reads(1 as Weight))136 .saturating_add(T::DbWeight::get().reads(2 as Weight))168 .saturating_add(T::DbWeight::get().writes(1 as Weight))137 .saturating_add(T::DbWeight::get().writes(2 as Weight))169 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))138 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))170 }139 }171 // Storage: Scheduler Agenda (r:1 w:1)140 // Storage: Scheduler Agenda (r:1 w:1)141 // Storage: System Account (r:1 w:1)142 // Storage: System AllExtrinsicsLen (r:1 w:1)143 // Storage: System BlockWeight (r:1 w:1)144 // Storage: Scheduler Lookup (r:0 w:1)172 fn on_initialize(s: u32, ) -> Weight {145 fn on_initialize(s: u32, ) -> Weight {173 (13_151_000 as Weight)146 (27_586_000 as Weight)174 // Standard Error: 4_000147 // Standard Error: 11_000175 .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight))148 .saturating_add((5_264_000 as Weight).saturating_mul(s as Weight))176 .saturating_add(T::DbWeight::get().reads(1 as Weight))149 .saturating_add(T::DbWeight::get().reads(4 as Weight))177 .saturating_add(T::DbWeight::get().writes(1 as Weight))150 .saturating_add(T::DbWeight::get().writes(4 as Weight))151 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))178 }152 }179 // Storage: Scheduler Agenda (r:1 w:1)153 // Storage: Scheduler Agenda (r:1 w:1)180 fn schedule(s: u32, ) -> Weight {154 // Storage: System Account (r:1 w:1)181 (14_040_000 as Weight)182 // Standard Error: 1_000155 // Storage: System AllExtrinsicsLen (r:1 w:1)183 .saturating_add((89_000 as Weight).saturating_mul(s as Weight))184 .saturating_add(T::DbWeight::get().reads(1 as Weight))185 .saturating_add(T::DbWeight::get().writes(1 as Weight))186 }187 // Storage: Scheduler Agenda (r:1 w:1)156 // Storage: System BlockWeight (r:1 w:1)188 // Storage: Scheduler Lookup (r:0 w:1)157 // Storage: Scheduler Lookup (r:0 w:1)189 fn cancel(s: u32, ) -> Weight {158 fn on_initialize_resolved(s: u32, ) -> Weight {190 (14_376_000 as Weight)159 (24_356_000 as Weight)191 // Standard Error: 1_000160 // Standard Error: 4_000192 .saturating_add((576_000 as Weight).saturating_mul(s as Weight))161 .saturating_add((5_301_000 as Weight).saturating_mul(s as Weight))193 .saturating_add(T::DbWeight::get().reads(1 as Weight))162 .saturating_add(T::DbWeight::get().reads(4 as Weight))194 .saturating_add(T::DbWeight::get().writes(2 as Weight))163 .saturating_add(T::DbWeight::get().writes(4 as Weight))164 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))195 }165 }196 // Storage: Scheduler Lookup (r:1 w:1)166 // Storage: Scheduler Lookup (r:1 w:1)197 // Storage: Scheduler Agenda (r:1 w:1)167 // Storage: Scheduler Agenda (r:1 w:1)198 fn schedule_named(s: u32, ) -> Weight {168 fn schedule_named(s: u32, ) -> Weight {199 (16_806_000 as Weight)169 (14_871_000 as Weight)200 // Standard Error: 1_000170 // Standard Error: 1_000201 .saturating_add((102_000 as Weight).saturating_mul(s as Weight))171 .saturating_add((183_000 as Weight).saturating_mul(s as Weight))202 .saturating_add(T::DbWeight::get().reads(2 as Weight))172 .saturating_add(T::DbWeight::get().reads(2 as Weight))203 .saturating_add(T::DbWeight::get().writes(2 as Weight))173 .saturating_add(T::DbWeight::get().writes(2 as Weight))204 }174 }205 // Storage: Scheduler Lookup (r:1 w:1)175 // Storage: Scheduler Lookup (r:1 w:1)206 // Storage: Scheduler Agenda (r:1 w:1)176 // Storage: Scheduler Agenda (r:1 w:1)207 fn cancel_named(s: u32, ) -> Weight {177 fn cancel_named(s: u32, ) -> Weight {208 (15_852_000 as Weight)178 (16_676_000 as Weight)209 // Standard Error: 2_000179 // Standard Error: 1_000210 .saturating_add((590_000 as Weight).saturating_mul(s as Weight))180 .saturating_add((500_000 as Weight).saturating_mul(s as Weight))211 .saturating_add(T::DbWeight::get().reads(2 as Weight))181 .saturating_add(T::DbWeight::get().reads(2 as Weight))212 .saturating_add(T::DbWeight::get().writes(2 as Weight))182 .saturating_add(T::DbWeight::get().writes(2 as Weight))213 }183 }216// For backwards compatibility and tests186// For backwards compatibility and tests217impl WeightInfo for () {187impl WeightInfo for () {218 // Storage: Scheduler Agenda (r:2 w:2)188 // Storage: Scheduler Agenda (r:2 w:2)219 // Storage: Preimage PreimageFor (r:1 w:1)189 // Storage: System Account (r:1 w:1)220 // Storage: Preimage StatusFor (r:1 w:1)190 // Storage: System AllExtrinsicsLen (r:1 w:1)191 // Storage: System BlockWeight (r:1 w:1)221 // Storage: Scheduler Lookup (r:0 w:1)192 // Storage: Scheduler Lookup (r:0 w:1)222 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {193 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {223 (11_587_000 as Weight)194 (27_374_000 as Weight)224 // Standard Error: 17_000195 // Standard Error: 7_000225 .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight))196 .saturating_add((9_673_000 as Weight).saturating_mul(s as Weight))226 .saturating_add(RocksDbWeight::get().reads(1 as Weight))197 .saturating_add(RocksDbWeight::get().reads(4 as Weight))227 .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))198 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))228 .saturating_add(RocksDbWeight::get().writes(1 as Weight))199 .saturating_add(RocksDbWeight::get().writes(4 as Weight))229 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(s as Weight)))200 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))230 }201 }231 // Storage: Scheduler Agenda (r:1 w:1)202 // Storage: Scheduler Agenda (r:1 w:1)232 // Storage: Preimage PreimageFor (r:1 w:1)203 // Storage: System Account (r:1 w:1)233 // Storage: Preimage StatusFor (r:1 w:1)204 // Storage: System AllExtrinsicsLen (r:1 w:1)205 // Storage: System BlockWeight (r:1 w:1)234 // Storage: Scheduler Lookup (r:0 w:1)206 // Storage: Scheduler Lookup (r:0 w:1)235 fn on_initialize_named_resolved(s: u32, ) -> Weight {207 fn on_initialize_named_resolved(s: u32, ) -> Weight {236 (8_965_000 as Weight)208 (25_967_000 as Weight)237 // Standard Error: 11_000209 // Standard Error: 6_000238 .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight))210 .saturating_add((5_916_000 as Weight).saturating_mul(s as Weight))239 .saturating_add(RocksDbWeight::get().reads(1 as Weight))211 .saturating_add(RocksDbWeight::get().reads(4 as Weight))240 .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))212 .saturating_add(RocksDbWeight::get().writes(4 as Weight))241 .saturating_add(RocksDbWeight::get().writes(1 as Weight))242 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))213 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))243 }214 }244 // Storage: Scheduler Agenda (r:2 w:2)215 // Storage: Scheduler Agenda (r:2 w:2)245 // Storage: Preimage PreimageFor (r:1 w:1)216 // Storage: System Account (r:1 w:1)246 // Storage: Preimage StatusFor (r:1 w:1)217 // Storage: System AllExtrinsicsLen (r:1 w:1)247 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {218 // Storage: System BlockWeight (r:1 w:1)248 (8_654_000 as Weight)249 // Standard Error: 17_000250 .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight))251 .saturating_add(RocksDbWeight::get().reads(1 as Weight))252 .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))253 .saturating_add(RocksDbWeight::get().writes(1 as Weight))254 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))255 }256 // Storage: Scheduler Agenda (r:1 w:1)257 // Storage: Preimage PreimageFor (r:1 w:1)219 // Storage: Scheduler Lookup (r:0 w:1)258 // Storage: Preimage StatusFor (r:1 w:1)220 fn on_initialize_periodic(s: u32, ) -> Weight {259 fn on_initialize_resolved(s: u32, ) -> Weight {260 (9_303_000 as Weight)221 (27_097_000 as Weight)261 // Standard Error: 10_000222 // Standard Error: 5_000262 .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight))223 .saturating_add((9_652_000 as Weight).saturating_mul(s as Weight))263 .saturating_add(RocksDbWeight::get().reads(1 as Weight))224 .saturating_add(RocksDbWeight::get().reads(4 as Weight))264 .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))225 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))265 .saturating_add(RocksDbWeight::get().writes(1 as Weight))226 .saturating_add(RocksDbWeight::get().writes(4 as Weight))266 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))227 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))267 }228 }268 // Storage: Scheduler Agenda (r:2 w:2)229 // Storage: Scheduler Agenda (r:2 w:2)269 // Storage: Preimage PreimageFor (r:1 w:0)230 // Storage: System Account (r:1 w:1)231 // Storage: System AllExtrinsicsLen (r:1 w:1)232 // Storage: System BlockWeight (r:1 w:1)270 // Storage: Scheduler Lookup (r:0 w:1)233 // Storage: Scheduler Lookup (r:0 w:1)271 fn on_initialize_named_aborted(s: u32, ) -> Weight {234 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {272 (7_506_000 as Weight)235 (43_116_000 as Weight)273 // Standard Error: 3_000236 // Standard Error: 18_000274 .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight))237 .saturating_add((8_352_000 as Weight).saturating_mul(s as Weight))275 .saturating_add(RocksDbWeight::get().reads(2 as Weight))238 .saturating_add(RocksDbWeight::get().reads(4 as Weight))276 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))239 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))277 .saturating_add(RocksDbWeight::get().writes(2 as Weight))240 .saturating_add(RocksDbWeight::get().writes(4 as Weight))278 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))241 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))279 }242 }280 // Storage: Scheduler Agenda (r:2 w:2)243 // Storage: Scheduler Agenda (r:2 w:2)281 // Storage: Preimage PreimageFor (r:1 w:0)244 // Storage: Scheduler Lookup (r:0 w:1)282 fn on_initialize_aborted(s: u32, ) -> Weight {245 fn on_initialize_aborted(s: u32, ) -> Weight {283 (8_046_000 as Weight)246 (4_921_000 as Weight)284 // Standard Error: 3_000247 // Standard Error: 4_000285 .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight))248 .saturating_add((2_249_000 as Weight).saturating_mul(s as Weight))286 .saturating_add(RocksDbWeight::get().reads(2 as Weight))249 .saturating_add(RocksDbWeight::get().reads(2 as Weight))287 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))288 .saturating_add(RocksDbWeight::get().writes(2 as Weight))250 .saturating_add(RocksDbWeight::get().writes(2 as Weight))251 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))289 }252 }290 // Storage: Scheduler Agenda (r:2 w:2)253 // Storage: Scheduler Agenda (r:1 w:1)254 // Storage: System Account (r:1 w:1)255 // Storage: System AllExtrinsicsLen (r:1 w:1)256 // Storage: System BlockWeight (r:1 w:1)291 // Storage: Scheduler Lookup (r:0 w:1)257 // Storage: Scheduler Lookup (r:0 w:1)292 fn on_initialize_periodic_named(s: u32, ) -> Weight {258 fn on_initialize_named_aborted(s: u32, ) -> Weight {293 (13_704_000 as Weight)259 (26_934_000 as Weight)294 // Standard Error: 4_000260 // Standard Error: 7_000295 .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight))261 .saturating_add((5_819_000 as Weight).saturating_mul(s as Weight))296 .saturating_add(RocksDbWeight::get().reads(1 as Weight))262 .saturating_add(RocksDbWeight::get().reads(4 as Weight))297 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))263 .saturating_add(RocksDbWeight::get().writes(4 as Weight))298 .saturating_add(RocksDbWeight::get().writes(1 as Weight))299 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))300 }301 // Storage: Scheduler Agenda (r:2 w:2)302 fn on_initialize_periodic(s: u32, ) -> Weight {303 (12_668_000 as Weight)304 // Standard Error: 5_000305 .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight))306 .saturating_add(RocksDbWeight::get().reads(1 as Weight))307 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))308 .saturating_add(RocksDbWeight::get().writes(1 as Weight))309 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))264 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))310 }265 }311 // Storage: Scheduler Agenda (r:1 w:1)266 // Storage: Scheduler Agenda (r:2 w:2)312 // Storage: Scheduler Lookup (r:0 w:1)267 // Storage: Scheduler Lookup (r:0 w:1)313 fn on_initialize_named(s: u32, ) -> Weight {268 fn on_initialize_named(s: u32, ) -> Weight {314 (13_946_000 as Weight)269 (6_423_000 as Weight)315 // Standard Error: 4_000270 // Standard Error: 1_000316 .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight))271 .saturating_add((2_141_000 as Weight).saturating_mul(s as Weight))317 .saturating_add(RocksDbWeight::get().reads(1 as Weight))272 .saturating_add(RocksDbWeight::get().reads(2 as Weight))318 .saturating_add(RocksDbWeight::get().writes(1 as Weight))273 .saturating_add(RocksDbWeight::get().writes(2 as Weight))319 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))274 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))320 }275 }321 // Storage: Scheduler Agenda (r:1 w:1)276 // Storage: Scheduler Agenda (r:1 w:1)277 // Storage: System Account (r:1 w:1)278 // Storage: System AllExtrinsicsLen (r:1 w:1)279 // Storage: System BlockWeight (r:1 w:1)280 // Storage: Scheduler Lookup (r:0 w:1)322 fn on_initialize(s: u32, ) -> Weight {281 fn on_initialize(s: u32, ) -> Weight {323 (13_151_000 as Weight)282 (27_586_000 as Weight)324 // Standard Error: 4_000283 // Standard Error: 11_000325 .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight))284 .saturating_add((5_264_000 as Weight).saturating_mul(s as Weight))326 .saturating_add(RocksDbWeight::get().reads(1 as Weight))285 .saturating_add(RocksDbWeight::get().reads(4 as Weight))327 .saturating_add(RocksDbWeight::get().writes(1 as Weight))286 .saturating_add(RocksDbWeight::get().writes(4 as Weight))287 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))328 }288 }329 // Storage: Scheduler Agenda (r:1 w:1)289 // Storage: Scheduler Agenda (r:1 w:1)330 fn schedule(s: u32, ) -> Weight {290 // Storage: System Account (r:1 w:1)331 (14_040_000 as Weight)332 // Standard Error: 1_000291 // Storage: System AllExtrinsicsLen (r:1 w:1)333 .saturating_add((89_000 as Weight).saturating_mul(s as Weight))334 .saturating_add(RocksDbWeight::get().reads(1 as Weight))335 .saturating_add(RocksDbWeight::get().writes(1 as Weight))336 }337 // Storage: Scheduler Agenda (r:1 w:1)292 // Storage: System BlockWeight (r:1 w:1)338 // Storage: Scheduler Lookup (r:0 w:1)293 // Storage: Scheduler Lookup (r:0 w:1)339 fn cancel(s: u32, ) -> Weight {294 fn on_initialize_resolved(s: u32, ) -> Weight {340 (14_376_000 as Weight)295 (24_356_000 as Weight)341 // Standard Error: 1_000296 // Standard Error: 4_000342 .saturating_add((576_000 as Weight).saturating_mul(s as Weight))297 .saturating_add((5_301_000 as Weight).saturating_mul(s as Weight))343 .saturating_add(RocksDbWeight::get().reads(1 as Weight))298 .saturating_add(RocksDbWeight::get().reads(4 as Weight))344 .saturating_add(RocksDbWeight::get().writes(2 as Weight))299 .saturating_add(RocksDbWeight::get().writes(4 as Weight))300 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))345 }301 }346 // Storage: Scheduler Lookup (r:1 w:1)302 // Storage: Scheduler Lookup (r:1 w:1)347 // Storage: Scheduler Agenda (r:1 w:1)303 // Storage: Scheduler Agenda (r:1 w:1)348 fn schedule_named(s: u32, ) -> Weight {304 fn schedule_named(s: u32, ) -> Weight {349 (16_806_000 as Weight)305 (14_871_000 as Weight)350 // Standard Error: 1_000306 // Standard Error: 1_000351 .saturating_add((102_000 as Weight).saturating_mul(s as Weight))307 .saturating_add((183_000 as Weight).saturating_mul(s as Weight))352 .saturating_add(RocksDbWeight::get().reads(2 as Weight))308 .saturating_add(RocksDbWeight::get().reads(2 as Weight))353 .saturating_add(RocksDbWeight::get().writes(2 as Weight))309 .saturating_add(RocksDbWeight::get().writes(2 as Weight))354 }310 }355 // Storage: Scheduler Lookup (r:1 w:1)311 // Storage: Scheduler Lookup (r:1 w:1)356 // Storage: Scheduler Agenda (r:1 w:1)312 // Storage: Scheduler Agenda (r:1 w:1)357 fn cancel_named(s: u32, ) -> Weight {313 fn cancel_named(s: u32, ) -> Weight {358 (15_852_000 as Weight)314 (16_676_000 as Weight)359 // Standard Error: 2_000315 // Standard Error: 1_000360 .saturating_add((590_000 as Weight).saturating_mul(s as Weight))316 .saturating_add((500_000 as Weight).saturating_mul(s as Weight))361 .saturating_add(RocksDbWeight::get().reads(2 as Weight))317 .saturating_add(RocksDbWeight::get().reads(2 as Weight))362 .saturating_add(RocksDbWeight::get().writes(2 as Weight))318 .saturating_add(RocksDbWeight::get().writes(2 as Weight))363 }319 }pallets/structure/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_structure3//! Autogenerated weights for pallet_structure4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-03-24, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:10// target/release/unique-collator10// target/release/unique-collator11// benchmark11// benchmark12// pallet12// --pallet13// --pallet13// pallet-structure14// pallet-structure14// --wasm-execution15// --wasm-execution41 // Storage: Common CollectionById (r:1 w:0)42 // Storage: Common CollectionById (r:1 w:0)42 // Storage: Nonfungible TokenData (r:1 w:0)43 // Storage: Nonfungible TokenData (r:1 w:0)43 fn find_parent() -> Weight {44 fn find_parent() -> Weight {44 (6_302_000 as Weight)45 (7_013_000 as Weight)45 .saturating_add(T::DbWeight::get().reads(2 as Weight))46 .saturating_add(T::DbWeight::get().reads(2 as Weight))46 }47 }47}48}51 // Storage: Common CollectionById (r:1 w:0)52 // Storage: Common CollectionById (r:1 w:0)52 // Storage: Nonfungible TokenData (r:1 w:0)53 // Storage: Nonfungible TokenData (r:1 w:0)53 fn find_parent() -> Weight {54 fn find_parent() -> Weight {54 (6_302_000 as Weight)55 (7_013_000 as Weight)55 .saturating_add(RocksDbWeight::get().reads(2 as Weight))56 .saturating_add(RocksDbWeight::get().reads(2 as Weight))56 }57 }57}58}pallets/unique/src/lib.rsdiffbeforeafterboth491 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);491 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);492492493 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;493 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;494 target_collection.check_is_owner(&sender)?;494 target_collection.check_is_owner_or_admin(&sender)?;495 target_collection.check_is_internal()?;495 target_collection.check_is_internal()?;496496497 target_collection.set_sponsor(new_sponsor.clone())?;497 target_collection.set_sponsor(new_sponsor.clone())?;670 dispatch_tx::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))670 dispatch_tx::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))671 }671 }672672673 #[weight = T::CommonWeightInfo::set_property_permissions(property_permissions.len() as u32)]673 #[weight = T::CommonWeightInfo::set_token_property_permissions(property_permissions.len() as u32)]674 #[transactional]674 #[transactional]675 pub fn set_property_permissions(675 pub fn set_token_property_permissions(676 origin,676 origin,677 collection_id: CollectionId,677 collection_id: CollectionId,678 property_permissions: Vec<PropertyKeyPermission>,678 property_permissions: Vec<PropertyKeyPermission>,681681682 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);682 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);683683684 dispatch_tx::<T, _>(collection_id, |d| d.set_property_permissions(&sender, property_permissions))684 dispatch_tx::<T, _>(collection_id, |d| d.set_token_property_permissions(&sender, property_permissions))685 }685 }686686687 #[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]687 #[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]865 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);865 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);866 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;866 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;867 target_collection.check_is_internal()?;867 target_collection.check_is_internal()?;868 target_collection.check_is_owner(&sender)?;868 target_collection.check_is_owner_or_admin(&sender)?;869 let old_limit = &target_collection.limits;869 let old_limit = &target_collection.limits;870870871 target_collection.limits = <PalletCommon<T>>::clamp_limits(target_collection.mode.clone(), &old_limit, new_limit)?;871 target_collection.limits = <PalletCommon<T>>::clamp_limits(target_collection.mode.clone(), &old_limit, new_limit)?;887 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);887 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);888 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;888 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;889 target_collection.check_is_internal()?;889 target_collection.check_is_internal()?;890 target_collection.check_is_owner(&sender)?;890 target_collection.check_is_owner_or_admin(&sender)?;891 let old_limit = &target_collection.permissions;891 let old_limit = &target_collection.permissions;892892893 target_collection.permissions = <PalletCommon<T>>::clamp_permissions(target_collection.mode.clone(), &old_limit, new_limit)?;893 target_collection.permissions = <PalletCommon<T>>::clamp_permissions(target_collection.mode.clone(), &old_limit, new_limit)?;pallets/unique/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_unique3//! Autogenerated weights for pallet_unique4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:10// target/release/unique-collator10// target/release/unique-collator11// benchmark11// benchmark12// pallet12// --pallet13// --pallet13// pallet-unique14// pallet-unique14// --wasm-execution15// --wasm-execution18// --template19// --template19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs20// --steps=5021// --steps=5021// --repeat=20022// --repeat=8022// --heap-pages=409623// --heap-pages=409623// --output=./pallets/unique/src/weights.rs24// --output=./pallets/unique/src/weights.rs242536 fn destroy_collection() -> Weight;37 fn destroy_collection() -> Weight;37 fn add_to_allow_list() -> Weight;38 fn add_to_allow_list() -> Weight;38 fn remove_from_allow_list() -> Weight;39 fn remove_from_allow_list() -> Weight;39 fn set_public_access_mode() -> Weight;40 fn set_mint_permission() -> Weight;41 fn change_collection_owner() -> Weight;40 fn change_collection_owner() -> Weight;42 fn add_collection_admin() -> Weight;41 fn add_collection_admin() -> Weight;43 fn remove_collection_admin() -> Weight;42 fn remove_collection_admin() -> Weight;44 fn set_collection_sponsor() -> Weight;43 fn set_collection_sponsor() -> Weight;45 fn confirm_sponsorship() -> Weight;44 fn confirm_sponsorship() -> Weight;46 fn remove_collection_sponsor() -> Weight;45 fn remove_collection_sponsor() -> Weight;47 fn set_transfers_enabled_flag() -> Weight;46 fn set_transfers_enabled_flag() -> Weight;48 fn set_offchain_schema(b: u32, ) -> Weight;49 fn set_const_on_chain_schema(b: u32, ) -> Weight;50 fn set_schema_version() -> Weight;51 fn set_collection_limits() -> Weight;47 fn set_collection_limits() -> Weight;52}48}534957 // Storage: Common CreatedCollectionCount (r:1 w:1)53 // Storage: Common CreatedCollectionCount (r:1 w:1)58 // Storage: Common DestroyedCollectionCount (r:1 w:0)54 // Storage: Common DestroyedCollectionCount (r:1 w:0)59 // Storage: System Account (r:2 w:2)55 // Storage: System Account (r:2 w:2)56 // Storage: Common CollectionPropertyPermissions (r:0 w:1)57 // Storage: Common CollectionProperties (r:0 w:1)60 // Storage: Common CollectionById (r:0 w:1)58 // Storage: Common CollectionById (r:0 w:1)61 fn create_collection() -> Weight {59 fn create_collection() -> Weight {62 (28_929_000 as Weight)60 (39_427_000 as Weight)63 .saturating_add(T::DbWeight::get().reads(4 as Weight))61 .saturating_add(T::DbWeight::get().reads(4 as Weight))64 .saturating_add(T::DbWeight::get().writes(4 as Weight))62 .saturating_add(T::DbWeight::get().writes(6 as Weight))65 }63 }66 // Storage: Common CollectionById (r:1 w:1)64 // Storage: Common CollectionById (r:1 w:1)65 // Storage: Nonfungible TokenData (r:1 w:0)67 // Storage: Common DestroyedCollectionCount (r:1 w:1)66 // Storage: Common DestroyedCollectionCount (r:1 w:1)68 // Storage: Nonfungible TokensMinted (r:0 w:1)67 // Storage: Nonfungible TokensMinted (r:0 w:1)69 // Storage: Nonfungible TokensBurnt (r:0 w:1)68 // Storage: Nonfungible TokensBurnt (r:0 w:1)70 // Storage: Common AdminAmount (r:0 w:1)69 // Storage: Common AdminAmount (r:0 w:1)70 // Storage: Common CollectionProperties (r:0 w:1)71 fn destroy_collection() -> Weight {71 fn destroy_collection() -> Weight {72 (40_303_000 as Weight)72 (48_339_000 as Weight)73 .saturating_add(T::DbWeight::get().reads(2 as Weight))73 .saturating_add(T::DbWeight::get().reads(3 as Weight))74 .saturating_add(T::DbWeight::get().writes(5 as Weight))74 .saturating_add(T::DbWeight::get().writes(6 as Weight))75 }75 }76 // Storage: Common CollectionById (r:1 w:0)76 // Storage: Common CollectionById (r:1 w:0)77 // Storage: Common Allowlist (r:0 w:1)77 // Storage: Common Allowlist (r:0 w:1)78 fn add_to_allow_list() -> Weight {78 fn add_to_allow_list() -> Weight {79 (15_989_000 as Weight)79 (17_379_000 as Weight)80 .saturating_add(T::DbWeight::get().reads(1 as Weight))80 .saturating_add(T::DbWeight::get().reads(1 as Weight))81 .saturating_add(T::DbWeight::get().writes(1 as Weight))81 .saturating_add(T::DbWeight::get().writes(1 as Weight))82 }82 }83 // Storage: Common CollectionById (r:1 w:0)83 // Storage: Common CollectionById (r:1 w:0)84 // Storage: Common Allowlist (r:0 w:1)84 // Storage: Common Allowlist (r:0 w:1)85 fn remove_from_allow_list() -> Weight {85 fn remove_from_allow_list() -> Weight {86 (15_582_000 as Weight)86 (17_490_000 as Weight)87 .saturating_add(T::DbWeight::get().reads(1 as Weight))87 .saturating_add(T::DbWeight::get().reads(1 as Weight))88 .saturating_add(T::DbWeight::get().writes(1 as Weight))88 .saturating_add(T::DbWeight::get().writes(1 as Weight))89 }89 }90 // Storage: Common CollectionById (r:1 w:1)91 fn set_public_access_mode() -> Weight {92 (14_846_000 as Weight)93 .saturating_add(T::DbWeight::get().reads(1 as Weight))94 .saturating_add(T::DbWeight::get().writes(1 as Weight))95 }96 // Storage: Common CollectionById (r:1 w:1)97 fn set_mint_permission() -> Weight {98 (14_534_000 as Weight)99 .saturating_add(T::DbWeight::get().reads(1 as Weight))100 .saturating_add(T::DbWeight::get().writes(1 as Weight))101 }102 // Storage: Common CollectionById (r:1 w:1)90 // Storage: Common CollectionById (r:1 w:1)103 fn change_collection_owner() -> Weight {91 fn change_collection_owner() -> Weight {104 (14_990_000 as Weight)92 (17_701_000 as Weight)105 .saturating_add(T::DbWeight::get().reads(1 as Weight))93 .saturating_add(T::DbWeight::get().reads(1 as Weight))106 .saturating_add(T::DbWeight::get().writes(1 as Weight))94 .saturating_add(T::DbWeight::get().writes(1 as Weight))107 }95 }108 // Storage: Common CollectionById (r:1 w:0)96 // Storage: Common CollectionById (r:1 w:0)109 // Storage: Common IsAdmin (r:1 w:1)97 // Storage: Common IsAdmin (r:1 w:1)110 // Storage: Common AdminAmount (r:1 w:1)98 // Storage: Common AdminAmount (r:1 w:1)111 fn add_collection_admin() -> Weight {99 fn add_collection_admin() -> Weight {112 (19_957_000 as Weight)100 (23_301_000 as Weight)113 .saturating_add(T::DbWeight::get().reads(3 as Weight))101 .saturating_add(T::DbWeight::get().reads(3 as Weight))114 .saturating_add(T::DbWeight::get().writes(2 as Weight))102 .saturating_add(T::DbWeight::get().writes(2 as Weight))115 }103 }116 // Storage: Common CollectionById (r:1 w:0)104 // Storage: Common CollectionById (r:1 w:0)117 // Storage: Common IsAdmin (r:1 w:1)105 // Storage: Common IsAdmin (r:1 w:1)118 // Storage: Common AdminAmount (r:1 w:1)106 // Storage: Common AdminAmount (r:1 w:1)119 fn remove_collection_admin() -> Weight {107 fn remove_collection_admin() -> Weight {120 (21_209_000 as Weight)108 (24_859_000 as Weight)121 .saturating_add(T::DbWeight::get().reads(3 as Weight))109 .saturating_add(T::DbWeight::get().reads(3 as Weight))122 .saturating_add(T::DbWeight::get().writes(2 as Weight))110 .saturating_add(T::DbWeight::get().writes(2 as Weight))123 }111 }124 // Storage: Common CollectionById (r:1 w:1)112 // Storage: Common CollectionById (r:1 w:1)125 fn set_collection_sponsor() -> Weight {113 fn set_collection_sponsor() -> Weight {126 (14_963_000 as Weight)114 (17_795_000 as Weight)127 .saturating_add(T::DbWeight::get().reads(1 as Weight))115 .saturating_add(T::DbWeight::get().reads(1 as Weight))128 .saturating_add(T::DbWeight::get().writes(1 as Weight))116 .saturating_add(T::DbWeight::get().writes(1 as Weight))129 }117 }130 // Storage: Common CollectionById (r:1 w:1)118 // Storage: Common CollectionById (r:1 w:1)131 fn confirm_sponsorship() -> Weight {119 fn confirm_sponsorship() -> Weight {132 (14_478_000 as Weight)120 (17_297_000 as Weight)133 .saturating_add(T::DbWeight::get().reads(1 as Weight))121 .saturating_add(T::DbWeight::get().reads(1 as Weight))134 .saturating_add(T::DbWeight::get().writes(1 as Weight))122 .saturating_add(T::DbWeight::get().writes(1 as Weight))135 }123 }136 // Storage: Common CollectionById (r:1 w:1)124 // Storage: Common CollectionById (r:1 w:1)137 fn remove_collection_sponsor() -> Weight {125 fn remove_collection_sponsor() -> Weight {138 (14_393_000 as Weight)126 (17_079_000 as Weight)139 .saturating_add(T::DbWeight::get().reads(1 as Weight))127 .saturating_add(T::DbWeight::get().reads(1 as Weight))140 .saturating_add(T::DbWeight::get().writes(1 as Weight))128 .saturating_add(T::DbWeight::get().writes(1 as Weight))141 }129 }142 // Storage: Common CollectionById (r:1 w:1)130 // Storage: Common CollectionById (r:1 w:1)143 fn set_transfers_enabled_flag() -> Weight {131 fn set_transfers_enabled_flag() -> Weight {144 (7_309_000 as Weight)132 (9_734_000 as Weight)145 .saturating_add(T::DbWeight::get().reads(1 as Weight))133 .saturating_add(T::DbWeight::get().reads(1 as Weight))146 .saturating_add(T::DbWeight::get().writes(1 as Weight))134 .saturating_add(T::DbWeight::get().writes(1 as Weight))147 }135 }148 // Storage: Common CollectionById (r:1 w:1)149 fn set_offchain_schema(_b: u32, ) -> Weight {150 (15_220_000 as Weight)151 .saturating_add(T::DbWeight::get().reads(1 as Weight))152 .saturating_add(T::DbWeight::get().writes(1 as Weight))153 }154 // Storage: Common CollectionById (r:1 w:1)155 fn set_const_on_chain_schema(_b: u32, ) -> Weight {156 (14_984_000 as Weight)157 .saturating_add(T::DbWeight::get().reads(1 as Weight))158 .saturating_add(T::DbWeight::get().writes(1 as Weight))159 }160 // Storage: Common CollectionById (r:1 w:1)161 fn set_schema_version() -> Weight {162 (14_596_000 as Weight)163 .saturating_add(T::DbWeight::get().reads(1 as Weight))164 .saturating_add(T::DbWeight::get().writes(1 as Weight))165 }166 // Storage: Common CollectionById (r:1 w:1)136 // Storage: Common CollectionById (r:1 w:1)167 fn set_collection_limits() -> Weight {137 fn set_collection_limits() -> Weight {168 (15_339_000 as Weight)138 (17_998_000 as Weight)169 .saturating_add(T::DbWeight::get().reads(1 as Weight))139 .saturating_add(T::DbWeight::get().reads(1 as Weight))170 .saturating_add(T::DbWeight::get().writes(1 as Weight))140 .saturating_add(T::DbWeight::get().writes(1 as Weight))171 }141 }176 // Storage: Common CreatedCollectionCount (r:1 w:1)146 // Storage: Common CreatedCollectionCount (r:1 w:1)177 // Storage: Common DestroyedCollectionCount (r:1 w:0)147 // Storage: Common DestroyedCollectionCount (r:1 w:0)178 // Storage: System Account (r:2 w:2)148 // Storage: System Account (r:2 w:2)149 // Storage: Common CollectionPropertyPermissions (r:0 w:1)150 // Storage: Common CollectionProperties (r:0 w:1)179 // Storage: Common CollectionById (r:0 w:1)151 // Storage: Common CollectionById (r:0 w:1)180 fn create_collection() -> Weight {152 fn create_collection() -> Weight {181 (28_929_000 as Weight)153 (39_427_000 as Weight)182 .saturating_add(RocksDbWeight::get().reads(4 as Weight))154 .saturating_add(RocksDbWeight::get().reads(4 as Weight))183 .saturating_add(RocksDbWeight::get().writes(4 as Weight))155 .saturating_add(RocksDbWeight::get().writes(6 as Weight))184 }156 }185 // Storage: Common CollectionById (r:1 w:1)157 // Storage: Common CollectionById (r:1 w:1)158 // Storage: Nonfungible TokenData (r:1 w:0)186 // Storage: Common DestroyedCollectionCount (r:1 w:1)159 // Storage: Common DestroyedCollectionCount (r:1 w:1)187 // Storage: Nonfungible TokensMinted (r:0 w:1)160 // Storage: Nonfungible TokensMinted (r:0 w:1)188 // Storage: Nonfungible TokensBurnt (r:0 w:1)161 // Storage: Nonfungible TokensBurnt (r:0 w:1)189 // Storage: Common AdminAmount (r:0 w:1)162 // Storage: Common AdminAmount (r:0 w:1)163 // Storage: Common CollectionProperties (r:0 w:1)190 fn destroy_collection() -> Weight {164 fn destroy_collection() -> Weight {191 (40_303_000 as Weight)165 (48_339_000 as Weight)192 .saturating_add(RocksDbWeight::get().reads(2 as Weight))166 .saturating_add(RocksDbWeight::get().reads(3 as Weight))193 .saturating_add(RocksDbWeight::get().writes(5 as Weight))167 .saturating_add(RocksDbWeight::get().writes(6 as Weight))194 }168 }195 // Storage: Common CollectionById (r:1 w:0)169 // Storage: Common CollectionById (r:1 w:0)196 // Storage: Common Allowlist (r:0 w:1)170 // Storage: Common Allowlist (r:0 w:1)197 fn add_to_allow_list() -> Weight {171 fn add_to_allow_list() -> Weight {198 (15_989_000 as Weight)172 (17_379_000 as Weight)199 .saturating_add(RocksDbWeight::get().reads(1 as Weight))173 .saturating_add(RocksDbWeight::get().reads(1 as Weight))200 .saturating_add(RocksDbWeight::get().writes(1 as Weight))174 .saturating_add(RocksDbWeight::get().writes(1 as Weight))201 }175 }202 // Storage: Common CollectionById (r:1 w:0)176 // Storage: Common CollectionById (r:1 w:0)203 // Storage: Common Allowlist (r:0 w:1)177 // Storage: Common Allowlist (r:0 w:1)204 fn remove_from_allow_list() -> Weight {178 fn remove_from_allow_list() -> Weight {205 (15_582_000 as Weight)179 (17_490_000 as Weight)206 .saturating_add(RocksDbWeight::get().reads(1 as Weight))180 .saturating_add(RocksDbWeight::get().reads(1 as Weight))207 .saturating_add(RocksDbWeight::get().writes(1 as Weight))181 .saturating_add(RocksDbWeight::get().writes(1 as Weight))208 }182 }209 // Storage: Common CollectionById (r:1 w:1)210 fn set_public_access_mode() -> Weight {211 (14_846_000 as Weight)212 .saturating_add(RocksDbWeight::get().reads(1 as Weight))213 .saturating_add(RocksDbWeight::get().writes(1 as Weight))214 }215 // Storage: Common CollectionById (r:1 w:1)216 fn set_mint_permission() -> Weight {217 (14_534_000 as Weight)218 .saturating_add(RocksDbWeight::get().reads(1 as Weight))219 .saturating_add(RocksDbWeight::get().writes(1 as Weight))220 }221 // Storage: Common CollectionById (r:1 w:1)183 // Storage: Common CollectionById (r:1 w:1)222 fn change_collection_owner() -> Weight {184 fn change_collection_owner() -> Weight {223 (14_990_000 as Weight)185 (17_701_000 as Weight)224 .saturating_add(RocksDbWeight::get().reads(1 as Weight))186 .saturating_add(RocksDbWeight::get().reads(1 as Weight))225 .saturating_add(RocksDbWeight::get().writes(1 as Weight))187 .saturating_add(RocksDbWeight::get().writes(1 as Weight))226 }188 }227 // Storage: Common CollectionById (r:1 w:0)189 // Storage: Common CollectionById (r:1 w:0)228 // Storage: Common IsAdmin (r:1 w:1)190 // Storage: Common IsAdmin (r:1 w:1)229 // Storage: Common AdminAmount (r:1 w:1)191 // Storage: Common AdminAmount (r:1 w:1)230 fn add_collection_admin() -> Weight {192 fn add_collection_admin() -> Weight {231 (19_957_000 as Weight)193 (23_301_000 as Weight)232 .saturating_add(RocksDbWeight::get().reads(3 as Weight))194 .saturating_add(RocksDbWeight::get().reads(3 as Weight))233 .saturating_add(RocksDbWeight::get().writes(2 as Weight))195 .saturating_add(RocksDbWeight::get().writes(2 as Weight))234 }196 }235 // Storage: Common CollectionById (r:1 w:0)197 // Storage: Common CollectionById (r:1 w:0)236 // Storage: Common IsAdmin (r:1 w:1)198 // Storage: Common IsAdmin (r:1 w:1)237 // Storage: Common AdminAmount (r:1 w:1)199 // Storage: Common AdminAmount (r:1 w:1)238 fn remove_collection_admin() -> Weight {200 fn remove_collection_admin() -> Weight {239 (21_209_000 as Weight)201 (24_859_000 as Weight)240 .saturating_add(RocksDbWeight::get().reads(3 as Weight))202 .saturating_add(RocksDbWeight::get().reads(3 as Weight))241 .saturating_add(RocksDbWeight::get().writes(2 as Weight))203 .saturating_add(RocksDbWeight::get().writes(2 as Weight))242 }204 }243 // Storage: Common CollectionById (r:1 w:1)205 // Storage: Common CollectionById (r:1 w:1)244 fn set_collection_sponsor() -> Weight {206 fn set_collection_sponsor() -> Weight {245 (14_963_000 as Weight)207 (17_795_000 as Weight)246 .saturating_add(RocksDbWeight::get().reads(1 as Weight))208 .saturating_add(RocksDbWeight::get().reads(1 as Weight))247 .saturating_add(RocksDbWeight::get().writes(1 as Weight))209 .saturating_add(RocksDbWeight::get().writes(1 as Weight))248 }210 }249 // Storage: Common CollectionById (r:1 w:1)211 // Storage: Common CollectionById (r:1 w:1)250 fn confirm_sponsorship() -> Weight {212 fn confirm_sponsorship() -> Weight {251 (14_478_000 as Weight)213 (17_297_000 as Weight)252 .saturating_add(RocksDbWeight::get().reads(1 as Weight))214 .saturating_add(RocksDbWeight::get().reads(1 as Weight))253 .saturating_add(RocksDbWeight::get().writes(1 as Weight))215 .saturating_add(RocksDbWeight::get().writes(1 as Weight))254 }216 }255 // Storage: Common CollectionById (r:1 w:1)217 // Storage: Common CollectionById (r:1 w:1)256 fn remove_collection_sponsor() -> Weight {218 fn remove_collection_sponsor() -> Weight {257 (14_393_000 as Weight)219 (17_079_000 as Weight)258 .saturating_add(RocksDbWeight::get().reads(1 as Weight))220 .saturating_add(RocksDbWeight::get().reads(1 as Weight))259 .saturating_add(RocksDbWeight::get().writes(1 as Weight))221 .saturating_add(RocksDbWeight::get().writes(1 as Weight))260 }222 }261 // Storage: Common CollectionById (r:1 w:1)223 // Storage: Common CollectionById (r:1 w:1)262 fn set_transfers_enabled_flag() -> Weight {224 fn set_transfers_enabled_flag() -> Weight {263 (7_309_000 as Weight)225 (9_734_000 as Weight)264 .saturating_add(RocksDbWeight::get().reads(1 as Weight))226 .saturating_add(RocksDbWeight::get().reads(1 as Weight))265 .saturating_add(RocksDbWeight::get().writes(1 as Weight))227 .saturating_add(RocksDbWeight::get().writes(1 as Weight))266 }228 }267 // Storage: Common CollectionById (r:1 w:1)268 fn set_offchain_schema(_b: u32, ) -> Weight {269 (15_220_000 as Weight)270 .saturating_add(RocksDbWeight::get().reads(1 as Weight))271 .saturating_add(RocksDbWeight::get().writes(1 as Weight))272 }273 // Storage: Common CollectionById (r:1 w:1)274 fn set_const_on_chain_schema(_b: u32, ) -> Weight {275 (14_984_000 as Weight)276 .saturating_add(RocksDbWeight::get().reads(1 as Weight))277 .saturating_add(RocksDbWeight::get().writes(1 as Weight))278 }279 // Storage: Common CollectionById (r:1 w:1)280 fn set_schema_version() -> Weight {281 (14_596_000 as Weight)282 .saturating_add(RocksDbWeight::get().reads(1 as Weight))283 .saturating_add(RocksDbWeight::get().writes(1 as Weight))284 }285 // Storage: Common CollectionById (r:1 w:1)229 // Storage: Common CollectionById (r:1 w:1)286 fn set_collection_limits() -> Weight {230 fn set_collection_limits() -> Weight {287 (15_339_000 as Weight)231 (17_998_000 as Weight)288 .saturating_add(RocksDbWeight::get().reads(1 as Weight))232 .saturating_add(RocksDbWeight::get().reads(1 as Weight))289 .saturating_add(RocksDbWeight::get().writes(1 as Weight))233 .saturating_add(RocksDbWeight::get().writes(1 as Weight))290 }234 }primitives/data-structs/src/lib.rsdiffbeforeafterboth39// RMRK39// RMRK40use rmrk_traits::{40use rmrk_traits::{41 CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,41 CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,42 ResourceTypes, BasicResource, ComposableResource, SlotResource,42 ResourceTypes, BasicResource, ComposableResource, SlotResource, EquippableList,43};43};44pub use rmrk_traits::{44pub use rmrk_traits::{45 primitives::{45 primitives::{46 CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,46 CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,47 PartId as RmrkPartId, ResourceId as RmrkResourceId,47 SlotId as RmrkSlotId, PartId as RmrkPartId, ResourceId as RmrkResourceId,48 },48 },49 NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,49 NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,50 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart, EquippableList as RmrkEquippableList,50 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart,51};51};525253mod bounded;53mod bounded;104pub const MAX_PROPERTY_VALUE_LENGTH: u32 = 32768;104pub const MAX_PROPERTY_VALUE_LENGTH: u32 = 32768;105pub const MAX_PROPERTIES_PER_ITEM: u32 = 64;105pub const MAX_PROPERTIES_PER_ITEM: u32 = 64;106106107pub const MAX_COLLECTION_PROPERTIES_SIZE: u32 = 40960;107pub const MAX_AUX_PROPERTY_VALUE_LENGTH: u32 = 2048;108108pub const MAX_TOKEN_PROPERTIES_SIZE: u32 = 32768;109pub const MAX_COLLECTION_PROPERTIES_SIZE: u32 = 40960;109110// RMRK constants111pub const RMRK_STRING_LIMIT: u32 = 128;110pub const MAX_TOKEN_PROPERTIES_SIZE: u32 = 32768;112pub const RMRK_COLLECTION_SYMBOL_LIMIT: u32 = 100;113pub const RMRK_RESOURCE_SYMBOL_LIMIT: u32 = 10;114pub const RMRK_KEY_LIMIT: u32 = 32;115pub const RMRK_VALUE_LIMIT: u32 = 256;116111117/// How much items can be created per single112/// How much items can be created per single118/// create_many call113/// create_many call416 .min(MAX_SPONSOR_TIMEOUT)411 .min(MAX_SPONSOR_TIMEOUT)417 }412 }418 pub fn owner_can_transfer(&self) -> bool {413 pub fn owner_can_transfer(&self) -> bool {419 self.owner_can_transfer.unwrap_or(true)414 self.owner_can_transfer.unwrap_or(false)420 }415 }416 pub fn owner_can_transfer_instaled(&self) -> bool {417 self.owner_can_transfer.is_some()418 }421 pub fn owner_can_destroy(&self) -> bool {419 pub fn owner_can_destroy(&self) -> bool {422 self.owner_can_destroy.unwrap_or(true)420 self.owner_can_destroy.unwrap_or(true)423 }421 }454 pub fn nesting(&self) -> &NestingPermissions {452 pub fn nesting(&self) -> &NestingPermissions {455 static DEFAULT: NestingPermissions = NestingPermissions {453 static DEFAULT: NestingPermissions = NestingPermissions {456 token_owner: false,454 token_owner: false,457 admin: false,455 collection_admin: false,458 restricted: None,456 restricted: None,459457460 permissive: false,458 permissive: false,497 /// Owner of token can nest tokens under it495 /// Owner of token can nest tokens under it498 pub token_owner: bool,496 pub token_owner: bool,499 /// Admin of token collection can nest tokens under token497 /// Admin of token collection can nest tokens under token500 pub admin: bool,498 pub collection_admin: bool,501 /// If set - only tokens from specified collections can be nested499 /// If set - only tokens from specified collections can be nested502 pub restricted: Option<OwnerRestrictedSet>,500 pub restricted: Option<OwnerRestrictedSet>,503501658 }656 }659}657}658659pub type BoundedBytes<S> = BoundedVec<u8, S>;660661pub type AuxPropertyValue = BoundedBytes<ConstU32<MAX_AUX_PROPERTY_VALUE_LENGTH>>;660662661pub type PropertyKey = BoundedVec<u8, ConstU32<MAX_PROPERTY_KEY_LENGTH>>;663pub type PropertyKey = BoundedBytes<ConstU32<MAX_PROPERTY_KEY_LENGTH>>;662pub type PropertyValue = BoundedVec<u8, ConstU32<MAX_PROPERTY_VALUE_LENGTH>>;664pub type PropertyValue = BoundedBytes<ConstU32<MAX_PROPERTY_VALUE_LENGTH>>;663665664#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]666#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]665#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]667#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]719 EmptyPropertyKey,721 EmptyPropertyKey,720}722}721723722#[derive(Clone, Copy)]724#[derive(Encode, Decode, MaxEncodedLen, TypeInfo, PartialEq, Clone, Copy)]723pub enum PropertyScope {725pub enum PropertyScope {724 None,726 None,725 Rmrk,727 Rmrk,812 for byte in key.as_slice().iter() {814 for byte in key.as_slice().iter() {813 let byte = *byte;815 let byte = *byte;814816815 if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' {817 if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' && byte != b'.' {816 return Err(PropertiesError::InvalidCharacterInPropertyKey);818 return Err(PropertiesError::InvalidCharacterInPropertyKey);817 }819 }818 }820 }946 #[derive(PartialEq, TypeInfo)]948 #[derive(PartialEq, TypeInfo)]947 pub const RmrkStringLimit: u32 = 128;949 pub const RmrkStringLimit: u32 = 128;948 #[derive(PartialEq)]950 #[derive(PartialEq)]949 pub const RmrkCollectionSymbolLimit: u32 = 100;951 pub const RmrkCollectionSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;950 #[derive(PartialEq)]952 #[derive(PartialEq)]951 pub const RmrkResourceSymbolLimit: u32 = 10;953 pub const RmrkResourceSymbolLimit: u32 = 10;952 #[derive(PartialEq)]954 #[derive(PartialEq)]955 pub const RmrkBaseSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;956 #[derive(PartialEq)]953 pub const RmrkKeyLimit: u32 = 32;957 pub const RmrkKeyLimit: u32 = 32;954 #[derive(PartialEq)]958 #[derive(PartialEq)]955 pub const RmrkValueLimit: u32 = 256;959 pub const RmrkValueLimit: u32 = 256;956 #[derive(PartialEq)]960 #[derive(PartialEq)]957 pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;961 pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;958 #[derive(PartialEq)]962 #[derive(PartialEq)]963 pub const MaxPropertiesPerTheme: u32 = 5;964 #[derive(PartialEq)]959 pub const RmrkPartsLimit: u32 = 3;965 pub const RmrkPartsLimit: u32 = 25;960 #[derive(PartialEq)]966 #[derive(PartialEq)]961 pub const RmrkMaxPriorities: u32 = 3;967 pub const RmrkMaxPriorities: u32 = 25;968 #[derive(PartialEq)]969 pub const MaxResourcesOnMint: u32 = 100;962}970}963971964impl From<RmrkCollectionId> for CollectionId {972impl From<RmrkCollectionId> for CollectionId {979pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;987pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;980pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;988pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;981pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;989pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;982pub type RmrkPartType =990pub type BoundedEquippableCollectionIds =983 PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;991 BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>;992pub type RmrkPartType = PartType<RmrkString, BoundedEquippableCollectionIds>;993pub type RmrkEquippableList = EquippableList<BoundedEquippableCollectionIds>;984pub type RmrkThemeProperty = ThemeProperty<RmrkString>;994pub type RmrkThemeProperty = ThemeProperty<RmrkString>;985pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;995pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;996pub type RmrkBoundedTheme = Theme<RmrkString, BoundedVec<RmrkThemeProperty, MaxPropertiesPerTheme>>;986pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;997pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;987998988pub type RmrkBasicResource = BasicResource<RmrkString>;999pub type RmrkBasicResource = BasicResource<RmrkString>;9911002992pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;1003pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;993pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;1004pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;1005pub type RmrkBaseSymbol = BoundedVec<u8, RmrkBaseSymbolLimit>;994pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;1006pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;995pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;1007pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;996pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;1008pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;runtime/common/Cargo.tomldiffbeforeafterboth6license = 'All Rights Reserved'6license = 'All Rights Reserved'7name = 'unique-runtime-common'7name = 'unique-runtime-common'8repository = 'https://github.com/UniqueNetwork/unique-chain'8repository = 'https://github.com/UniqueNetwork/unique-chain'9version = '0.9.22'9version = '0.9.23'101011[features]11[features]12default = ['std']12default = ['std']89default-features = false89default-features = false90path = "../../pallets/refungible"90path = "../../pallets/refungible"9192[dependencies.pallet-unique-scheduler]93default-features = false94path = "../../pallets/scheduler"919592[dependencies.up-data-structs]96[dependencies.up-data-structs]93default-features = false97default-features = falseruntime/common/src/constants.rsdiffbeforeafterboth38pub const WEIGHT_TO_FEE_COEFF: u32 = 142_688_000;38pub const WEIGHT_TO_FEE_COEFF: u32 = 142_688_000;393940// Targeting 0.15 UNQ per transfer40// Targeting 0.15 UNQ per transfer41pub const MIN_GAS_PRICE: u64 = 1_018_751_825_264;41pub const MIN_GAS_PRICE: u64 = 1_019_493_469_850;424243/// We assume that ~10% of the block weight is consumed by `on_initalize` handlers.43/// We assume that ~10% of the block weight is consumed by `on_initalize` handlers.44/// This is used to limit the maximal weight of a single extrinsic.44/// This is used to limit the maximal weight of a single extrinsic.runtime/common/src/dispatch.rsdiffbeforeafterboth112 + pallet_fungible::Config112 + pallet_fungible::Config113 + pallet_nonfungible::Config113 + pallet_nonfungible::Config114 + pallet_refungible::Config,114 + pallet_refungible::Config,115 T::AccountId: From<[u8; 32]>,115{116{116 fn is_reserved(target: &H160) -> bool {117 fn is_reserved(target: &H160) -> bool {117 map_eth_to_id(target).is_some()118 map_eth_to_id(target).is_some()runtime/common/src/runtime_apis.rsdiffbeforeafterboth144 }144 }145 }145 }146147 impl rmrk_rpc::RmrkApi<148 Block,149 AccountId,150 RmrkCollectionInfo<AccountId>,151 RmrkInstanceInfo<AccountId>,152 RmrkResourceInfo,153 RmrkPropertyInfo,154 RmrkBaseInfo<AccountId>,155 RmrkPartType,156 RmrkTheme157 > for Runtime {158 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {159 Ok(RmrkCore::last_collection_idx())160 }161162 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {163 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};164 use pallet_common::CommonCollectionOperations;165166 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {167 Ok(c) => c,168 Err(_) => return Ok(None),169 };170171 let nfts_count = collection.total_supply();172173 Ok(Some(RmrkCollectionInfo {174 issuer: collection.owner.clone(),175 metadata: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::Metadata)?,176 max: collection.limits.token_limit,177 symbol: RmrkCore::rebind(&collection.token_prefix)?,178 nfts_count179 }))180 }181182 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {183 use up_data_structs::mapping::TokenAddressMapping;184 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};185 use pallet_common::CommonCollectionOperations;186187 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {188 Ok(c) => c,189 Err(_) => return Ok(None),190 };191192 let nft_id = TokenId(nft_by_id);193 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(None); }194195 let owner = match collection.token_owner(nft_id) {196 Some(owner) => match <Runtime as pallet_common::Config>::CrossTokenAddressMapping::address_to_token(&owner) {197 Some((col, tok)) => {198 let rmrk_collection = RmrkCore::rmrk_collection_id(col)?;199200 RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(rmrk_collection, tok.0)201 }202 None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone())203 },204 None => return Ok(None)205 };206207 Ok(Some(RmrkInstanceInfo {208 owner: owner,209 royalty: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::RoyaltyInfo)?,210 metadata: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Metadata)?,211 equipped: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Equipped)?,212 pending: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::PendingNftAccept)?,213 }))214 }215216 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {217 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};218 use pallet_common::CommonCollectionOperations;219220 let cross_account_id = CrossAccountId::from_sub(account_id);221222 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {223 Ok(c) => c,224 Err(_) => return Ok(Vec::new()),225 };226227 let tokens = collection.account_tokens(cross_account_id)228 .into_iter()229 .filter(|token| {230 let is_pending = RmrkCore::get_nft_property_decoded(231 collection_id,232 *token,233 RmrkProperty::PendingNftAccept234 ).unwrap_or(true);235236 !is_pending237 })238 .map(|token| token.0)239 .collect();240241 Ok(tokens)242 }243244 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {245 use pallet_proxy_rmrk_core::RmrkProperty;246247 let collection_id = match RmrkCore::unique_collection_id(collection_id) {248 Ok(id) => id,249 Err(_) => return Ok(Vec::new())250 };251 let nft_id = TokenId(nft_id);252 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(Vec::new()); }253254 Ok(255 pallet_nonfungible::TokenChildren::<Runtime>::iter_prefix((collection_id, nft_id))256 .filter_map(|((child_collection, child_token), _)| {257 let is_pending = RmrkCore::get_nft_property_decoded(258 child_collection,259 child_token,260 RmrkProperty::PendingNftAccept261 ).ok()?;262263 if is_pending {264 return None;265 }266267 let rmrk_child_collection = RmrkCore::rmrk_collection_id(268 child_collection269 ).ok()?;270271 Some(RmrkNftChild {272 collection_id: rmrk_child_collection,273 nft_id: child_token.0,274 })275 }).collect()276 )277 }278279 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {280 use pallet_proxy_rmrk_core::misc::CollectionType;281282 let collection_id = match RmrkCore::unique_collection_id(collection_id) {283 Ok(id) => id,284 Err(_) => return Ok(Vec::new())285 };286 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() {287 return Ok(Vec::new());288 }289290 let properties = RmrkCore::filter_user_properties(291 collection_id,292 /* token_id = */ None,293 filter_keys,294 |key, value| RmrkPropertyInfo {295 key,296 value297 }298 )?;299300 Ok(properties)301 }302303 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {304 use pallet_proxy_rmrk_core::misc::NftType;305306 let collection_id = match RmrkCore::unique_collection_id(collection_id) {307 Ok(id) => id,308 Err(_) => return Ok(Vec::new())309 };310 let token_id = TokenId(nft_id);311312 if RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Regular).is_err() {313 return Ok(Vec::new());314 }315316 let properties = RmrkCore::filter_user_properties(317 collection_id,318 Some(token_id),319 filter_keys,320 |key, value| RmrkPropertyInfo {321 key,322 value323 }324 )?;325326 Ok(properties)327 }328329 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {330 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, ResourceType}};331 use pallet_common::CommonCollectionOperations;332333 let collection_id = match RmrkCore::unique_collection_id(collection_id) {334 Ok(id) => id,335 Err(_) => return Ok(Vec::new())336 };337 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); }338339 let nft_id = TokenId(nft_id);340 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(Vec::new()); }341342 let res_collection_id: CollectionId = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourceCollection)?;343 let resource_collection = RmrkCore::get_typed_nft_collection(res_collection_id, CollectionType::Resource)?;344345 let resources = resource_collection346 .collection_tokens()347 .iter()348 .filter_map(|(res_id)| Some(RmrkResourceInfo {349 id: res_id.0,350 pending: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceAccept).ok()?,351 pending_removal: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceRemoval).ok()?,352 resource: match RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::ResourceType).ok()? {353 ResourceType::Basic => RmrkResourceTypes::Basic(RmrkBasicResource {354 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,355 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,356 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,357 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,358 }),359 ResourceType::Composable => RmrkResourceTypes::Composable(RmrkComposableResource {360 parts: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Parts).ok()?,361 base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,362 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,363 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,364 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,365 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,366 }),367 ResourceType::Slot => RmrkResourceTypes::Slot(RmrkSlotResource {368 base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,369 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,370 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,371 slot: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Slot).ok()?,372 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,373 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,374 }),375 },376 }))377 .collect();378379 Ok(resources)380 }381382 fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {383 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};384385 let collection_id = match RmrkCore::unique_collection_id(collection_id) {386 Ok(id) => id,387 Err(_) => return Ok(None)388 };389 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(None); }390391 let nft_id = TokenId(nft_id);392 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(None); }393394 let priorities: Vec<_> = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourcePriorities)?;395 Ok(396 priorities.into_iter()397 .enumerate()398 .find(|(_, id)| *id == resource_id)399 .map(|(priority, _): (usize, RmrkResourceId)| priority as u32)400 )401 }402403 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {404 use pallet_proxy_rmrk_core::{405 RmrkProperty, misc::{CollectionType},406 };407408 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {409 Ok(c) => c,410 Err(_) => return Ok(None),411 };412413 Ok(Some(RmrkBaseInfo {414 issuer: collection.owner.clone(),415 base_type: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::BaseType)?,416 symbol: RmrkCore::rebind(&collection.token_prefix)?,417 }))418 }419420 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {421 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};422 use pallet_common::CommonCollectionOperations;423424 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {425 Ok(c) => c,426 Err(_) => return Ok(Vec::new()),427 };428429 let parts = collection.collection_tokens()430 .into_iter()431 .filter_map(|token_id| {432 let nft_type = RmrkCore::get_nft_type(collection_id, token_id).ok()?;433434 match nft_type {435 NftType::FixedPart => Some(RmrkPartType::FixedPart(RmrkFixedPart {436 id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,437 src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,438 z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,439 })),440 NftType::SlotPart => Some(RmrkPartType::SlotPart(RmrkSlotPart {441 id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,442 src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,443 z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,444 equippable: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::EquippableList).ok()?,445 })),446 _ => None447 }448 })449 .collect();450451 Ok(parts)452 }453454 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {455 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};456 use pallet_common::CommonCollectionOperations;457458 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {459 Ok(c) => c,460 Err(_) => return Ok(Vec::new()),461 };462463 let theme_names = collection.collection_tokens()464 .iter()465 .filter_map(|token_id| {466 let nft_type = RmrkCore::get_nft_type(collection_id, *token_id).ok()?;467468 match nft_type {469 Theme => RmrkCore::get_nft_property_decoded(collection_id, *token_id, RmrkProperty::ThemeName).ok(),470 _ => None471 }472 })473 .collect();474475 Ok(theme_names)476 }477478 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {479 use pallet_proxy_rmrk_core::{480 RmrkProperty,481 misc::{CollectionType, NftType}482 };483 use pallet_common::CommonCollectionOperations;484485 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {486 Ok(c) => c,487 Err(_) => return Ok(None),488 };489490 let theme_info = collection.collection_tokens()491 .into_iter()492 .find_map(|token_id| {493 RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Theme).ok()?;494495 let name: RmrkString = RmrkCore::get_nft_property_decoded(496 collection_id, token_id, RmrkProperty::ThemeName497 ).ok()?;498499 if name == theme_name {500 Some((name, token_id))501 } else {502 None503 }504 });505506 let (name, theme_id) = match theme_info {507 Some((name, theme_id)) => (name, theme_id),508 None => return Ok(None)509 };510511 let properties = RmrkCore::filter_user_properties(512 collection_id,513 Some(theme_id),514 filter_keys,515 |key, value| RmrkThemeProperty {516 key,517 value518 }519 )?;520521 let inherit = RmrkCore::get_nft_property_decoded(522 collection_id,523 theme_id,524 RmrkProperty::ThemeInherit525 )?;526527 let theme = RmrkTheme {528 name,529 properties,530 inherit,531 };532533 Ok(Some(theme))534 }535 }536146537 impl sp_api::Core<Block> for Runtime {147 impl sp_api::Core<Block> for Runtime {538 fn version() -> RuntimeVersion {148 fn version() -> RuntimeVersion {843 list_benchmark!(list, extra, pallet_fungible, Fungible);453 list_benchmark!(list, extra, pallet_fungible, Fungible);844 list_benchmark!(list, extra, pallet_refungible, Refungible);454 list_benchmark!(list, extra, pallet_refungible, Refungible);845 list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);455 list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);456 list_benchmark!(list, extra, pallet_unique_scheduler, Scheduler);457458 #[cfg(not(feature = "unique-runtime"))]846 list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);459 list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);460461 #[cfg(not(feature = "unique-runtime"))]462 list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);463847 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);464 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);848465887 add_benchmark!(params, batches, pallet_fungible, Fungible);504 add_benchmark!(params, batches, pallet_fungible, Fungible);888 add_benchmark!(params, batches, pallet_refungible, Refungible);505 add_benchmark!(params, batches, pallet_refungible, Refungible);889 add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);506 add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);507 add_benchmark!(params, batches, pallet_unique_scheduler, Scheduler);508509 #[cfg(not(feature = "unique-runtime"))]890 add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);510 add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);511512 #[cfg(not(feature = "unique-runtime"))]513 add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);514891 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);515 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);892516runtime/common/src/weights.rsdiffbeforeafterboth70 dispatch_weight::<T>() + max_weight_of!(delete_token_properties(amount))70 dispatch_weight::<T>() + max_weight_of!(delete_token_properties(amount))71 }71 }727273 fn set_property_permissions(amount: u32) -> Weight {73 fn set_token_property_permissions(amount: u32) -> Weight {74 dispatch_weight::<T>() + max_weight_of!(set_property_permissions(amount))74 dispatch_weight::<T>() + max_weight_of!(set_token_property_permissions(amount))75 }75 }767677 fn transfer() -> Weight {77 fn transfer() -> Weight {runtime/opal/Cargo.tomldiffbeforeafterboth10license = 'GPLv3'10license = 'GPLv3'11name = 'opal-runtime'11name = 'opal-runtime'12repository = 'https://github.com/UniqueNetwork/unique-chain'12repository = 'https://github.com/UniqueNetwork/unique-chain'13version = '0.9.22'13version = '0.9.23'141415[package.metadata.docs.rs]15[package.metadata.docs.rs]16targets = ['x86_64-unknown-linux-gnu']16targets = ['x86_64-unknown-linux-gnu']34 'pallet-refungible/runtime-benchmarks',34 'pallet-refungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',38 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',40 'pallet-unique-scheduler/runtime-benchmarks',39 'pallet-xcm/runtime-benchmarks',41 'pallet-xcm/runtime-benchmarks',40 'sp-runtime/runtime-benchmarks',42 'sp-runtime/runtime-benchmarks',41 'xcm-builder/runtime-benchmarks',43 'xcm-builder/runtime-benchmarks',93 'pallet-proxy-rmrk-core/std',95 'pallet-proxy-rmrk-core/std',94 'pallet-proxy-rmrk-equip/std',96 'pallet-proxy-rmrk-equip/std',95 'pallet-unique/std',97 'pallet-unique/std',96 'pallet-unq-scheduler/std',98 'pallet-unique-scheduler/std',97 'pallet-charge-transaction/std',99 'pallet-charge-transaction/std',98 'up-data-structs/std',100 'up-data-structs/std',99 'sp-api/std',101 'sp-api/std',412pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }414pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }413pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }415pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }414pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }416pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }415pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }417pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }416# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }418# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }417pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }419pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }418pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }420pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }runtime/opal/src/lib.rsdiffbeforeafterboth69 WeightToFee,69 WeightToFee,70 },70 },71};71};72use pallet_unq_scheduler::DispatchCall;72use pallet_unique_scheduler::DispatchCall;73use up_data_structs::{73use up_data_structs::{74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,75 CollectionStats, RpcCollection,75 CollectionStats, RpcCollection,76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,79 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,80 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,81 RmrkFixedPart, RmrkSlotPart, RmrkString,82};80};838184// use pallet_contracts::weights::WeightInfo;82// use pallet_contracts::weights::WeightInfo;194 spec_name: create_runtime_str!(RUNTIME_NAME),192 spec_name: create_runtime_str!(RUNTIME_NAME),195 impl_name: create_runtime_str!(RUNTIME_NAME),193 impl_name: create_runtime_str!(RUNTIME_NAME),196 authoring_version: 1,194 authoring_version: 1,197 spec_version: 922000,195 spec_version: 923000,198 impl_version: 0,196 impl_version: 0,199 apis: RUNTIME_API_VERSIONS,197 apis: RUNTIME_API_VERSIONS,200 transaction_version: 1,198 transaction_version: 1,920}918}921919922impl pallet_proxy_rmrk_equip::Config for Runtime {920impl pallet_proxy_rmrk_equip::Config for Runtime {921 type WeightInfo = pallet_proxy_rmrk_equip::weights::SubstrateWeight<Self>;923 type Event = Event;922 type Event = Event;924}923}925924965}964}966965967pub struct SchedulerPaymentExecutor;966pub struct SchedulerPaymentExecutor;968impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>967impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>969 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor968 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor970where969where971 <T as frame_system::Config>::Call: Member970 <T as frame_system::Config>::Call: Member975 + From<frame_system::Call<Runtime>>,974 + From<frame_system::Call<Runtime>>,976 SelfContainedSignedInfo: Send + Sync + 'static,975 SelfContainedSignedInfo: Send + Sync + 'static,977 Call: From<<T as frame_system::Config>::Call>976 Call: From<<T as frame_system::Config>::Call>978 + From<<T as pallet_unq_scheduler::Config>::Call>977 + From<<T as pallet_unique_scheduler::Config>::Call>979 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,978 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,980 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,979 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,981{980{982 fn dispatch_call(981 fn dispatch_call(983 signer: <T as frame_system::Config>::AccountId,982 signer: <T as frame_system::Config>::AccountId,984 call: <T as pallet_unq_scheduler::Config>::Call,983 call: <T as pallet_unique_scheduler::Config>::Call,985 ) -> Result<984 ) -> Result<986 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,985 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,987 TransactionValidityError,986 TransactionValidityError,1007 fn reserve_balance(1006 fn reserve_balance(1008 id: [u8; 16],1007 id: [u8; 16],1009 sponsor: <T as frame_system::Config>::AccountId,1008 sponsor: <T as frame_system::Config>::AccountId,1010 call: <T as pallet_unq_scheduler::Config>::Call,1009 call: <T as pallet_unique_scheduler::Config>::Call,1011 count: u32,1010 count: u32,1012 ) -> Result<(), DispatchError> {1011 ) -> Result<(), DispatchError> {1013 let dispatch_info = call.get_dispatch_info();1012 let dispatch_info = call.get_dispatch_info();1024 fn pay_for_call(1023 fn pay_for_call(1025 id: [u8; 16],1024 id: [u8; 16],1026 sponsor: <T as frame_system::Config>::AccountId,1025 sponsor: <T as frame_system::Config>::AccountId,1027 call: <T as pallet_unq_scheduler::Config>::Call,1026 call: <T as pallet_unique_scheduler::Config>::Call,1028 ) -> Result<u128, DispatchError> {1027 ) -> Result<u128, DispatchError> {1029 let dispatch_info = call.get_dispatch_info();1028 let dispatch_info = call.get_dispatch_info();1030 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1029 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1065 }1064 }1066}1065}106710661068impl pallet_unq_scheduler::Config for Runtime {1067impl pallet_unique_scheduler::Config for Runtime {1069 type Event = Event;1068 type Event = Event;1070 type Origin = Origin;1069 type Origin = Origin;1071 type Currency = Balances;1070 type Currency = Balances;1154 // Unique Pallets1153 // Unique Pallets1155 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1154 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1156 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1155 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1157 Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1156 Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1158 // free = 631157 // free = 631159 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1158 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1160 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1159 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1311 }};1310 }};1312}1311}131313121314impl_common_runtime_apis!();1313impl_common_runtime_apis! {1314 #![custom_apis]13151316 impl rmrk_rpc::RmrkApi<1317 Block,1318 AccountId,1319 RmrkCollectionInfo<AccountId>,1320 RmrkInstanceInfo<AccountId>,1321 RmrkResourceInfo,1322 RmrkPropertyInfo,1323 RmrkBaseInfo<AccountId>,1324 RmrkPartType,1325 RmrkTheme1326 > for Runtime {1327 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {1328 pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>()1329 }13301331 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {1332 pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id)1333 }13341335 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {1336 pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id)1337 }13381339 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {1340 pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id)1341 }13421343 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {1344 pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id)1345 }13461347 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {1348 pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys)1349 }13501351 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {1352 pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys)1353 }13541355 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {1356 pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id)1357 }13581359 fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {1360 pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id)1361 }13621363 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {1364 pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id)1365 }13661367 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {1368 pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id)1369 }13701371 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {1372 pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id)1373 }13741375 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {1376 pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys)1377 }1378 }1379}131513801316struct CheckInherents;1381struct CheckInherents;13171382runtime/quartz/Cargo.tomldiffbeforeafterboth10license = 'GPLv3'10license = 'GPLv3'11name = 'quartz-runtime'11name = 'quartz-runtime'12repository = 'https://github.com/UniqueNetwork/unique-chain'12repository = 'https://github.com/UniqueNetwork/unique-chain'13version = '0.9.22'13version = '0.9.23'141415[package.metadata.docs.rs]15[package.metadata.docs.rs]16targets = ['x86_64-unknown-linux-gnu']16targets = ['x86_64-unknown-linux-gnu']37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',40 'pallet-unique-scheduler/runtime-benchmarks',40 'pallet-xcm/runtime-benchmarks',41 'pallet-xcm/runtime-benchmarks',41 'sp-runtime/runtime-benchmarks',42 'sp-runtime/runtime-benchmarks',42 'xcm-builder/runtime-benchmarks',43 'xcm-builder/runtime-benchmarks',94 'pallet-proxy-rmrk-core/std',95 'pallet-proxy-rmrk-core/std',95 'pallet-proxy-rmrk-equip/std',96 'pallet-proxy-rmrk-equip/std',96 'pallet-unique/std',97 'pallet-unique/std',97 'pallet-unq-scheduler/std',98 'pallet-unique-scheduler/std',98 'pallet-charge-transaction/std',99 'pallet-charge-transaction/std',99 'up-data-structs/std',100 'up-data-structs/std',100 'sp-api/std',101 'sp-api/std',419pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }420pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }420pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }421pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }421pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }422pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }422pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }423pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }423# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }424# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }424pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }425pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }425pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }426pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }runtime/quartz/src/lib.rsdiffbeforeafterboth69 WeightToFee,69 WeightToFee,70 },70 },71};71};72use pallet_unq_scheduler::DispatchCall;72use pallet_unique_scheduler::DispatchCall;73use up_data_structs::{73use up_data_structs::{74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,75 CollectionStats, RpcCollection,75 CollectionStats, RpcCollection,76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,79 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,80 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,81 RmrkFixedPart, RmrkSlotPart, RmrkString,82};80};838184// use pallet_contracts::weights::WeightInfo;82// use pallet_contracts::weights::WeightInfo;193 spec_name: create_runtime_str!(RUNTIME_NAME),191 spec_name: create_runtime_str!(RUNTIME_NAME),194 impl_name: create_runtime_str!(RUNTIME_NAME),192 impl_name: create_runtime_str!(RUNTIME_NAME),195 authoring_version: 1,193 authoring_version: 1,196 spec_version: 922000,194 spec_version: 923000,197 impl_version: 0,195 impl_version: 0,198 apis: RUNTIME_API_VERSIONS,196 apis: RUNTIME_API_VERSIONS,199 transaction_version: 1,197 transaction_version: 1,924}922}925923926impl pallet_proxy_rmrk_equip::Config for Runtime {924impl pallet_proxy_rmrk_equip::Config for Runtime {925 type WeightInfo = pallet_proxy_rmrk_equip::weights::SubstrateWeight<Self>;927 type Event = Event;926 type Event = Event;928}927}929928969}968}970969971pub struct SchedulerPaymentExecutor;970pub struct SchedulerPaymentExecutor;972impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>971impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>973 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor972 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor974where973where975 <T as frame_system::Config>::Call: Member974 <T as frame_system::Config>::Call: Member979 + From<frame_system::Call<Runtime>>,978 + From<frame_system::Call<Runtime>>,980 SelfContainedSignedInfo: Send + Sync + 'static,979 SelfContainedSignedInfo: Send + Sync + 'static,981 Call: From<<T as frame_system::Config>::Call>980 Call: From<<T as frame_system::Config>::Call>982 + From<<T as pallet_unq_scheduler::Config>::Call>981 + From<<T as pallet_unique_scheduler::Config>::Call>983 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,982 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,984 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,983 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,985{984{986 fn dispatch_call(985 fn dispatch_call(987 signer: <T as frame_system::Config>::AccountId,986 signer: <T as frame_system::Config>::AccountId,988 call: <T as pallet_unq_scheduler::Config>::Call,987 call: <T as pallet_unique_scheduler::Config>::Call,989 ) -> Result<988 ) -> Result<990 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,989 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,991 TransactionValidityError,990 TransactionValidityError,1011 fn reserve_balance(1010 fn reserve_balance(1012 id: [u8; 16],1011 id: [u8; 16],1013 sponsor: <T as frame_system::Config>::AccountId,1012 sponsor: <T as frame_system::Config>::AccountId,1014 call: <T as pallet_unq_scheduler::Config>::Call,1013 call: <T as pallet_unique_scheduler::Config>::Call,1015 count: u32,1014 count: u32,1016 ) -> Result<(), DispatchError> {1015 ) -> Result<(), DispatchError> {1017 let dispatch_info = call.get_dispatch_info();1016 let dispatch_info = call.get_dispatch_info();1028 fn pay_for_call(1027 fn pay_for_call(1029 id: [u8; 16],1028 id: [u8; 16],1030 sponsor: <T as frame_system::Config>::AccountId,1029 sponsor: <T as frame_system::Config>::AccountId,1031 call: <T as pallet_unq_scheduler::Config>::Call,1030 call: <T as pallet_unique_scheduler::Config>::Call,1032 ) -> Result<u128, DispatchError> {1031 ) -> Result<u128, DispatchError> {1033 let dispatch_info = call.get_dispatch_info();1032 let dispatch_info = call.get_dispatch_info();1034 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1033 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1069 }1068 }1070}1069}107110701072impl pallet_unq_scheduler::Config for Runtime {1071impl pallet_unique_scheduler::Config for Runtime {1073 type Event = Event;1072 type Event = Event;1074 type Origin = Origin;1073 type Origin = Origin;1075 type Currency = Balances;1074 type Currency = Balances;1157 // Unique Pallets1156 // Unique Pallets1158 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1157 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1159 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1158 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1160 Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1159 Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1161 // free = 631160 // free = 631162 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1161 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1163 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1162 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1316 }};1315 }};1317}1316}131813171319impl_common_runtime_apis!();1318impl_common_runtime_apis! {1319 #![custom_apis]13201321 impl rmrk_rpc::RmrkApi<1322 Block,1323 AccountId,1324 RmrkCollectionInfo<AccountId>,1325 RmrkInstanceInfo<AccountId>,1326 RmrkResourceInfo,1327 RmrkPropertyInfo,1328 RmrkBaseInfo<AccountId>,1329 RmrkPartType,1330 RmrkTheme1331 > for Runtime {1332 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {1333 pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>()1334 }13351336 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {1337 pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id)1338 }13391340 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {1341 pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id)1342 }13431344 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {1345 pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id)1346 }13471348 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {1349 pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id)1350 }13511352 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {1353 pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys)1354 }13551356 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {1357 pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys)1358 }13591360 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {1361 pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id)1362 }13631364 fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {1365 pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id)1366 }13671368 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {1369 pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id)1370 }13711372 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {1373 pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id)1374 }13751376 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {1377 pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id)1378 }13791380 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {1381 pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys)1382 }1383 }1384}132013851321struct CheckInherents;1386struct CheckInherents;13221387runtime/tests/src/tests.rsdiffbeforeafterboth1264 let collection1_id =1264 let collection1_id =1265 create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));1265 create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));1266 let origin1 = Origin::signed(1);1266 let origin1 = Origin::signed(1);1267 let origin2 = Origin::signed(2);126812671269 // Add collection admins 2 and 31268 // Add collection admins 2 and 31270 assert_ok!(Unique::add_collection_admin(1269 assert_ok!(Unique::add_collection_admin(1273 account(2)1272 account(2)1274 ));1273 ));1275 assert_ok!(Unique::add_collection_admin(1274 assert_ok!(Unique::add_collection_admin(1276 origin1,1275 origin1.clone(),1277 collection1_id,1276 collection1_id,1278 account(3)1277 account(3)1279 ));1278 ));128912881290 // remove admin 31289 // remove admin 31291 assert_ok!(Unique::remove_collection_admin(1290 assert_ok!(Unique::remove_collection_admin(1292 origin2,1291 origin1,1293 CollectionId(1),1292 CollectionId(1),1294 account(3)1293 account(3)1295 ));1294 ));runtime/unique/Cargo.tomldiffbeforeafterboth10license = 'GPLv3'10license = 'GPLv3'11name = 'unique-runtime'11name = 'unique-runtime'12repository = 'https://github.com/UniqueNetwork/unique-chain'12repository = 'https://github.com/UniqueNetwork/unique-chain'13version = '0.9.22'13version = '0.9.23'141415[package.metadata.docs.rs]15[package.metadata.docs.rs]16targets = ['x86_64-unknown-linux-gnu']16targets = ['x86_64-unknown-linux-gnu']171718[features]18[features]19default = ['std']19default = ['std', 'unique-runtime']20runtime-benchmarks = [20runtime-benchmarks = [21 'hex-literal',21 'hex-literal',22 'frame-benchmarking',22 'frame-benchmarking',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',40 'pallet-unique-scheduler/runtime-benchmarks',40 'pallet-xcm/runtime-benchmarks',41 'pallet-xcm/runtime-benchmarks',41 'sp-runtime/runtime-benchmarks',42 'sp-runtime/runtime-benchmarks',42 'xcm-builder/runtime-benchmarks',43 'xcm-builder/runtime-benchmarks',95 'pallet-proxy-rmrk-core/std',96 'pallet-proxy-rmrk-core/std',96 'pallet-proxy-rmrk-equip/std',97 'pallet-proxy-rmrk-equip/std',97 'pallet-unique/std',98 'pallet-unique/std',98 'pallet-unq-scheduler/std',99 'pallet-unique-scheduler/std',99 'pallet-charge-transaction/std',100 'pallet-charge-transaction/std',100 'up-data-structs/std',101 'up-data-structs/std',101 'sp-api/std',102 'sp-api/std',118 "orml-vesting/std",119 "orml-vesting/std",119]120]120limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']121limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']122unique-runtime = []121123122################################################################################124################################################################################123# Substrate Dependencies125# Substrate Dependencies412pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }414pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }413pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }415pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }414pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }416pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }415pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }417pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }416# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }418# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }417pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }419pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }418pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }420pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }runtime/unique/src/lib.rsdiffbeforeafterboth69 WeightToFee,69 WeightToFee,70 },70 },71};71};72use pallet_unq_scheduler::DispatchCall;72use pallet_unique_scheduler::DispatchCall;73use up_data_structs::{73use up_data_structs::{74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,75 CollectionStats, RpcCollection,75 CollectionStats, RpcCollection,76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,79 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,80 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,81 RmrkFixedPart, RmrkSlotPart, RmrkString,82};80};838184// use pallet_contracts::weights::WeightInfo;82// use pallet_contracts::weights::WeightInfo;192 spec_name: create_runtime_str!(RUNTIME_NAME),190 spec_name: create_runtime_str!(RUNTIME_NAME),193 impl_name: create_runtime_str!(RUNTIME_NAME),191 impl_name: create_runtime_str!(RUNTIME_NAME),194 authoring_version: 1,192 authoring_version: 1,195 spec_version: 922000,193 spec_version: 923000,196 impl_version: 0,194 impl_version: 0,197 apis: RUNTIME_API_VERSIONS,195 apis: RUNTIME_API_VERSIONS,198 transaction_version: 1,196 transaction_version: 1,917 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;915 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;918}916}919920impl pallet_proxy_rmrk_core::Config for Runtime {921 type WeightInfo = pallet_proxy_rmrk_core::weights::SubstrateWeight<Self>;922 type Event = Event;923}924925impl pallet_proxy_rmrk_equip::Config for Runtime {926 type Event = Event;927}928917929impl pallet_unique::Config for Runtime {918impl pallet_unique::Config for Runtime {930 type Event = Event;919 type Event = Event;968}957}969958970pub struct SchedulerPaymentExecutor;959pub struct SchedulerPaymentExecutor;971impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>960impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>972 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor961 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor973where962where974 <T as frame_system::Config>::Call: Member963 <T as frame_system::Config>::Call: Member978 + From<frame_system::Call<Runtime>>,967 + From<frame_system::Call<Runtime>>,979 SelfContainedSignedInfo: Send + Sync + 'static,968 SelfContainedSignedInfo: Send + Sync + 'static,980 Call: From<<T as frame_system::Config>::Call>969 Call: From<<T as frame_system::Config>::Call>981 + From<<T as pallet_unq_scheduler::Config>::Call>970 + From<<T as pallet_unique_scheduler::Config>::Call>982 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,971 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,983 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,972 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,984{973{985 fn dispatch_call(974 fn dispatch_call(986 signer: <T as frame_system::Config>::AccountId,975 signer: <T as frame_system::Config>::AccountId,987 call: <T as pallet_unq_scheduler::Config>::Call,976 call: <T as pallet_unique_scheduler::Config>::Call,988 ) -> Result<977 ) -> Result<989 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,978 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,990 TransactionValidityError,979 TransactionValidityError,1010 fn reserve_balance(999 fn reserve_balance(1011 id: [u8; 16],1000 id: [u8; 16],1012 sponsor: <T as frame_system::Config>::AccountId,1001 sponsor: <T as frame_system::Config>::AccountId,1013 call: <T as pallet_unq_scheduler::Config>::Call,1002 call: <T as pallet_unique_scheduler::Config>::Call,1014 count: u32,1003 count: u32,1015 ) -> Result<(), DispatchError> {1004 ) -> Result<(), DispatchError> {1016 let dispatch_info = call.get_dispatch_info();1005 let dispatch_info = call.get_dispatch_info();1027 fn pay_for_call(1016 fn pay_for_call(1028 id: [u8; 16],1017 id: [u8; 16],1029 sponsor: <T as frame_system::Config>::AccountId,1018 sponsor: <T as frame_system::Config>::AccountId,1030 call: <T as pallet_unq_scheduler::Config>::Call,1019 call: <T as pallet_unique_scheduler::Config>::Call,1031 ) -> Result<u128, DispatchError> {1020 ) -> Result<u128, DispatchError> {1032 let dispatch_info = call.get_dispatch_info();1021 let dispatch_info = call.get_dispatch_info();1033 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1022 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1068 }1057 }1069}1058}107010591071impl pallet_unq_scheduler::Config for Runtime {1060impl pallet_unique_scheduler::Config for Runtime {1072 type Event = Event;1061 type Event = Event;1073 type Origin = Origin;1062 type Origin = Origin;1074 type Currency = Balances;1063 type Currency = Balances;1156 // Unique Pallets1145 // Unique Pallets1157 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1146 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1158 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1147 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1159 Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1148 Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1160 // free = 631149 // free = 631161 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1150 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1162 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1151 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1165 Refungible: pallet_refungible::{Pallet, Storage} = 68,1154 Refungible: pallet_refungible::{Pallet, Storage} = 68,1166 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1155 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1167 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1156 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1168 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,1169 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,117011571171 // Frontier1158 // Frontier1172 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,1159 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,1314 }};1301 }};1315}1302}131613031317impl_common_runtime_apis!();1304impl_common_runtime_apis! {1305 #![custom_apis]13061307 impl rmrk_rpc::RmrkApi<1308 Block,1309 AccountId,1310 RmrkCollectionInfo<AccountId>,1311 RmrkInstanceInfo<AccountId>,1312 RmrkResourceInfo,1313 RmrkPropertyInfo,1314 RmrkBaseInfo<AccountId>,1315 RmrkPartType,1316 RmrkTheme1317 > for Runtime {1318 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {1319 Ok(Default::default())1320 }13211322 fn collection_by_id(_collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {1323 Ok(Default::default())1324 }13251326 fn nft_by_id(_collection_id: RmrkCollectionId, _nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {1327 Ok(Default::default())1328 }13291330 fn account_tokens(_account_id: AccountId, _collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {1331 Ok(Default::default())1332 }13331334 fn nft_children(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {1335 Ok(Default::default())1336 }13371338 fn collection_properties(_collection_id: RmrkCollectionId, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {1339 Ok(Default::default())1340 }13411342 fn nft_properties(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {1343 Ok(Default::default())1344 }13451346 fn nft_resources(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {1347 Ok(Default::default())1348 }13491350 fn nft_resource_priority(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId, _resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {1351 Ok(Default::default())1352 }13531354 fn base(_base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {1355 Ok(Default::default())1356 }13571358 fn base_parts(_base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {1359 Ok(Default::default())1360 }13611362 fn theme_names(_base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {1363 Ok(Default::default())1364 }13651366 fn theme(_base_id: RmrkBaseId, _theme_name: RmrkThemeName, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {1367 Ok(Default::default())1368 }1369 }1370}131813711319struct CheckInherents;1372struct CheckInherents;13201373tests/package.jsondiffbeforeafterboth28 "test": "mocha --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",28 "test": "mocha --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",29 "testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",29 "testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",30 "testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",30 "testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",31 "testEthNesting": "mocha --timeout 9999999 -r ts-node/register './**/eth/nesting/**/*.test.ts'",31 "load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",32 "load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",32 "loadTransfer": "ts-node src/transfer.nload.ts",33 "loadTransfer": "ts-node src/transfer.nload.ts",33 "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",34 "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",tests/src/approve.test.tsdiffbeforeafterboth28 setCollectionLimitsExpectSuccess,28 setCollectionLimitsExpectSuccess,29 transferExpectSuccess,29 transferExpectSuccess,30 addCollectionAdminExpectSuccess,30 addCollectionAdminExpectSuccess,31 adminApproveFromExpectSuccess,31 adminApproveFromExpectFail,32 getCreatedCollectionCount,32 getCreatedCollectionCount,33 transferFromExpectSuccess,33 transferFromExpectSuccess,34 transferFromExpectFail,34 transferFromExpectFail,84 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 0);84 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 0);85 });85 });868687 it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {87 it('can`t be called by collection owner on non-owned item when OwnerCanTransfer == false', async () => {88 const collectionId = await createCollectionExpectSuccess();88 const collectionId = await createCollectionExpectSuccess();89 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);89 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);909091 await adminApproveFromExpectSuccess(collectionId, itemId, alice, bob.address, charlie.address);91 await adminApproveFromExpectFail(collectionId, itemId, alice, bob.address, charlie.address);92 });92 });93});93});9494292 });292 });293});293});294294295describe('Administrator and collection owner do not need approval in order to execute TransferFrom:', () => {295describe('Administrator and collection owner do not need approval in order to execute TransferFrom (with owner_can_transfer_flag = true):', () => {296 let alice: IKeyringPair;296 let alice: IKeyringPair;297 let bob: IKeyringPair;297 let bob: IKeyringPair;298 let charlie: IKeyringPair;298 let charlie: IKeyringPair;309309310 it('NFT', async () => {310 it('NFT', async () => {311 const collectionId = await createCollectionExpectSuccess();311 const collectionId = await createCollectionExpectSuccess();312 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});312 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', charlie.address);313 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', charlie.address);313 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'NFT');314 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'NFT');314 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);315 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);317318318 it('Fungible up to an approved amount', async () => {319 it('Fungible up to an approved amount', async () => {319 const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});320 const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});321 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});320 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', charlie.address); 322 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', charlie.address); 321 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'Fungible');323 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'Fungible');322 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);324 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);325327326 it('ReFungible up to an approved amount', async () => {328 it('ReFungible up to an approved amount', async () => {327 const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});329 const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});330 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});328 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', charlie.address);331 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', charlie.address);329 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'ReFungible');332 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'ReFungible');330 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);333 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);402 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);405 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);403406404 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);407 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);405 await adminApproveFromExpectSuccess(collectionId, itemId, bob, alice.address, charlie.address);408 await adminApproveFromExpectFail(collectionId, itemId, bob, alice.address, charlie.address);406 });409 });407});410});408411tests/src/burnItem.test.tsdiffbeforeafterboth23 normalizeAccountId,23 normalizeAccountId,24 addCollectionAdminExpectSuccess,24 addCollectionAdminExpectSuccess,25 getBalance,25 getBalance,26 setCollectionLimitsExpectSuccess,26 isTokenExists,27 isTokenExists,27} from './util/helpers';28} from './util/helpers';2829149 it('Burn item in NFT collection', async () => {150 it('Burn item in NFT collection', async () => {150 const createMode = 'NFT';151 const createMode = 'NFT';151 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});152 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});153 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});152 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);154 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);153 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);155 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);154156167 it('Burn item in Fungible collection', async () => {169 it('Burn item in Fungible collection', async () => {168 const createMode = 'Fungible';170 const createMode = 'Fungible';169 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});171 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});172 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});170 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens173 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens171 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);174 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);172175189 it('Burn item in ReFungible collection', async () => {192 it('Burn item in ReFungible collection', async () => {190 const createMode = 'ReFungible';193 const createMode = 'ReFungible';191 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});194 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});195 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});192 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);196 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);193 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);197 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);194198tests/src/createMultipleItems.test.tsdiffbeforeafterboth48 const alice = privateKeyWrapper('//Alice');48 const alice = privateKeyWrapper('//Alice');49 await submitTransactionAsync(49 await submitTransactionAsync(50 alice, 50 alice, 51 api.tx.unique.setPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),51 api.tx.unique.setTokenPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),52 );52 );53 53 54 const args = [54 const args = [470470471 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});471 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});472472473 const tx1 = api.tx.unique.setPropertyPermissions(collectionId, propPerms);473 const tx1 = api.tx.unique.setTokenPropertyPermissions(collectionId, propPerms);474 await expect(executeTransaction(api, alice, tx1)).to.be.rejectedWith(/common\.PropertyLimitReached/);474 await expect(executeTransaction(api, alice, tx1)).to.be.rejectedWith(/common\.PropertyLimitReached/);475475476 const itemsListIndexBefore = await getLastTokenId(api, collectionId);476 const itemsListIndexBefore = await getLastTokenId(api, collectionId);tests/src/createMultipleItemsEx.test.tsdiffbeforeafterboth222 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});222 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});223 await usingApi(async (api, privateKeyWrapper) => {223 await usingApi(async (api, privateKeyWrapper) => {224 const alice = privateKeyWrapper('//Alice');224 const alice = privateKeyWrapper('//Alice');225 await expect(executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);225 await expect(executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);226 });226 });227 });227 });228228tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth174 function finishMinting() external returns (bool);174 function finishMinting() external returns (bool);175}175}176177// Selector: 6aea9834178interface Collection is Dummy, ERC165 {179 // Selector: setCollectionProperty(string,bytes) 2f073f66180 function setCollectionProperty(string memory key, bytes memory value)181 external;182183 // Selector: deleteCollectionProperty(string) 7b7debce184 function deleteCollectionProperty(string memory key) external;185186 // Throws error if key not found187 //188 // Selector: collectionProperty(string) cf24fd6d189 function collectionProperty(string memory key)190 external191 view192 returns (bytes memory);193194 // Selector: setCollectionSponsor(address) 7623402e195 function setCollectionSponsor(address sponsor) external;196197 // Selector: confirmCollectionSponsorship() 3c50e97a198 function confirmCollectionSponsorship() external;199200 // Selector: setCollectionLimit(string,uint32) 6a3841db201 function setCollectionLimit(string memory limit, uint32 value) external;202203 // Selector: setCollectionLimit(string,bool) 993b7fba204 function setCollectionLimit(string memory limit, bool value) external;205206 // Selector: contractAddress() f6b4dfb4207 function contractAddress() external view returns (address);208209 // Selector: addCollectionAdmin(address) 92e462c7210 function addCollectionAdmin(address newAdmin) external view;211212 // Selector: removeCollectionAdmin(address) fafd7b42213 function removeCollectionAdmin(address admin) external view;214215 // Selector: setCollectionNesting(bool) 112d4586216 function setCollectionNesting(bool enable) external;217218 // Selector: setCollectionNesting(bool,address[]) 64872396219 function setCollectionNesting(bool enable, address[] memory collections)220 external;221222 // Selector: setCollectionAccess(uint8) 41835d4c223 function setCollectionAccess(uint8 mode) external;224225 // Selector: addToCollectionAllowList(address) 67844fe6226 function addToCollectionAllowList(address user) external view;227228 // Selector: removeFromCollectionAllowList(address) 85c51acb229 function removeFromCollectionAllowList(address user) external view;230231 // Selector: setCollectionMintMode(bool) 00018e84232 function setCollectionMintMode(bool mode) external;233}234176235// Selector: 780e9d63177// Selector: 780e9d63236interface ERC721Enumerable is Dummy, ERC165 {178interface ERC721Enumerable is Dummy, ERC165 {249 function totalSupply() external view returns (uint256);191 function totalSupply() external view returns (uint256);250}192}193194// Selector: 7d9262e6195interface Collection is Dummy, ERC165 {196 // Selector: setCollectionProperty(string,bytes) 2f073f66197 function setCollectionProperty(string memory key, bytes memory value)198 external;199200 // Selector: deleteCollectionProperty(string) 7b7debce201 function deleteCollectionProperty(string memory key) external;202203 // Throws error if key not found204 //205 // Selector: collectionProperty(string) cf24fd6d206 function collectionProperty(string memory key)207 external208 view209 returns (bytes memory);210211 // Selector: setCollectionSponsor(address) 7623402e212 function setCollectionSponsor(address sponsor) external;213214 // Selector: confirmCollectionSponsorship() 3c50e97a215 function confirmCollectionSponsorship() external;216217 // Selector: setCollectionLimit(string,uint32) 6a3841db218 function setCollectionLimit(string memory limit, uint32 value) external;219220 // Selector: setCollectionLimit(string,bool) 993b7fba221 function setCollectionLimit(string memory limit, bool value) external;222223 // Selector: contractAddress() f6b4dfb4224 function contractAddress() external view returns (address);225226 // Selector: addCollectionAdminSubstrate(uint256) 5730062b227 function addCollectionAdminSubstrate(uint256 newAdmin) external view;228229 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9230 function removeCollectionAdminSubstrate(uint256 newAdmin) external view;231232 // Selector: addCollectionAdmin(address) 92e462c7233 function addCollectionAdmin(address newAdmin) external view;234235 // Selector: removeCollectionAdmin(address) fafd7b42236 function removeCollectionAdmin(address admin) external view;237238 // Selector: setCollectionNesting(bool) 112d4586239 function setCollectionNesting(bool enable) external;240241 // Selector: setCollectionNesting(bool,address[]) 64872396242 function setCollectionNesting(bool enable, address[] memory collections)243 external;244245 // Selector: setCollectionAccess(uint8) 41835d4c246 function setCollectionAccess(uint8 mode) external;247248 // Selector: addToCollectionAllowList(address) 67844fe6249 function addToCollectionAllowList(address user) external view;250251 // Selector: removeFromCollectionAllowList(address) 85c51acb252 function removeFromCollectionAllowList(address user) external view;253254 // Selector: setCollectionMintMode(bool) 00018e84255 function setCollectionMintMode(bool mode) external;256}251257252// Selector: d74d154f258// Selector: d74d154f253interface ERC721UniqueExtensions is Dummy, ERC165 {259interface ERC721UniqueExtensions is Dummy, ERC165 {tests/src/eth/collectionAdmin.test.tsdiffbeforeafterbothno changes
tests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth233 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;233 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;234 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;234 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;235 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));235 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));236 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');236 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');237237238 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});238 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});239 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;239 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;240 expect(collectionSub.sponsorship.isConfirmed).to.be.true;240 expect(collectionSub.sponsorship.isConfirmed).to.be.true;241 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));241 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));242242243 const user = createEthAccount(web3);243 const user = createEthAccount(web3);244 let nextTokenId = await collectionEvm.methods.nextTokenId().call();244 const nextTokenId = await collectionEvm.methods.nextTokenId().call();245 expect(nextTokenId).to.be.equal('1');245 expect(nextTokenId).to.be.equal('1');246246247 const oldPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();247 const oldPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();248 expect(oldPermissions.mintMode).to.be.false;248 expect(oldPermissions.mintMode).to.be.false;249 expect(oldPermissions.access).to.be.equal('Normal');249 expect(oldPermissions.access).to.be.equal('Normal');250250251 //TODO: change value, when enum generated252 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});251 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});253 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});252 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});254 await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});253 await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});260 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);259 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);261 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);260 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);262261262 {263 nextTokenId = await collectionEvm.methods.nextTokenId().call({from: user});263 const nextTokenId = await collectionEvm.methods.nextTokenId().call();264 expect(nextTokenId).to.be.equal('1');264 expect(nextTokenId).to.be.equal('1');265 result = await collectionEvm.methods.mintWithTokenURI(265 const result = await collectionEvm.methods.mintWithTokenURI(266 user,266 user,267 nextTokenId,267 nextTokenId,268 'Test URI',268 'Test URI',269 ).send({from: user});269 ).send({from: user});270 const events = normalizeEvents(result.events);270 const events = normalizeEvents(result.events);271 events[0].address = events[0].address.toLocaleLowerCase();272271273 expect(events).to.be.deep.equal([272 expect(events).to.be.deep.equal([274 {273 {275 address: collectionIdAddress.toLocaleLowerCase(),274 address: collectionIdAddress,276 event: 'Transfer',275 event: 'Transfer',277 args: {276 args: {278 from: '0x0000000000000000000000000000000000000000',277 from: '0x0000000000000000000000000000000000000000',282 },281 },283 ]);282 ]);283284 const ownerBalanceAfter = await ethBalanceViaSub(api, owner);285 const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);284286285 expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');287 expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');286287 const ownerBalanceAfter = await ethBalanceViaSub(api, owner);288 expect(ownerBalanceAfter).to.be.eq(ownerBalanceBefore);288 expect(ownerBalanceBefore).to.be.eq(ownerBalanceAfter);289 const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);290 expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;289 expect(sponsorBalanceBefore > sponsorBalanceAfter).to.be.true;290 }291 });291 });292292293 itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3, privateKeyWrapper}) => {293 itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3, privateKeyWrapper}) => {302 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;302 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;303 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;303 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;304 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));304 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));305 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');305 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');306 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);306 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);307 await sponsorCollection.methods.confirmCollectionSponsorship().send();307 await sponsorCollection.methods.confirmCollectionSponsorship().send();308 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;308 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;tests/src/eth/createCollection.test.tsdiffbeforeafterboth80 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;80 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;81 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;81 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;82 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));82 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));83 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');83 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');84 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);84 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);85 await sponsorCollection.methods.confirmCollectionSponsorship().send();85 await sponsorCollection.methods.confirmCollectionSponsorship().send();86 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;86 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;208 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);208 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);209 await expect(sponsorCollection.methods209 await expect(sponsorCollection.methods210 .confirmCollectionSponsorship()210 .confirmCollectionSponsorship()211 .call()).to.be.rejectedWith('Caller is not set as sponsor');211 .call()).to.be.rejectedWith('caller is not set as sponsor');212 }212 }213 {213 {214 await expect(contractEvmFromNotOwner.methods214 await expect(contractEvmFromNotOwner.methods225 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);225 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);226 await expect(collectionEvm.methods226 await expect(collectionEvm.methods227 .setCollectionLimit('badLimit', 'true')227 .setCollectionLimit('badLimit', 'true')228 .call()).to.be.rejectedWith('Unknown boolean limit "badLimit"');228 .call()).to.be.rejectedWith('unknown boolean limit "badLimit"');229 });229 });230});230});tests/src/eth/crossTransfer.test.tsdiffbeforeafterboth18 createFungibleItemExpectSuccess,18 createFungibleItemExpectSuccess,19 transferExpectSuccess,19 transferExpectSuccess,20 transferFromExpectSuccess,20 transferFromExpectSuccess,21 setCollectionLimitsExpectSuccess,21 createItemExpectSuccess} from '../util/helpers';22 createItemExpectSuccess} from '../util/helpers';22import {collectionIdToAddress,23import {collectionIdToAddress,23 createEthAccountWithBalance,24 createEthAccountWithBalance,35 const alice = privateKeyWrapper('//Alice');36 const alice = privateKeyWrapper('//Alice');36 const bob = privateKeyWrapper('//Bob');37 const bob = privateKeyWrapper('//Bob');37 const charlie = privateKeyWrapper('//Charlie');38 const charlie = privateKeyWrapper('//Charlie');39 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});38 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});40 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});39 await transferExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)} , 200, 'Fungible');41 await transferExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)} , 200, 'Fungible');40 await transferFromExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)}, charlie, 50, 'Fungible');42 await transferFromExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)}, charlie, 50, 'Fungible');48 });50 });49 const alice = privateKeyWrapper('//Alice');51 const alice = privateKeyWrapper('//Alice');50 const bob = privateKeyWrapper('//Bob');52 const bob = privateKeyWrapper('//Bob');53 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});51 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);54 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);52 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);55 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);535671 const alice = privateKeyWrapper('//Alice');74 const alice = privateKeyWrapper('//Alice');72 const bob = privateKeyWrapper('//Bob');75 const bob = privateKeyWrapper('//Bob');73 const charlie = privateKeyWrapper('//Charlie');76 const charlie = privateKeyWrapper('//Charlie');77 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});74 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});78 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});75 await transferExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, 1, 'NFT');79 await transferExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, 1, 'NFT');76 await transferFromExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, charlie, 1, 'NFT');80 await transferFromExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, charlie, 1, 'NFT');85 const alice = privateKeyWrapper('//Alice');89 const alice = privateKeyWrapper('//Alice');86 const bob = privateKeyWrapper('//Bob');90 const bob = privateKeyWrapper('//Bob');87 const charlie = privateKeyWrapper('//Charlie');91 const charlie = privateKeyWrapper('//Charlie');92 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});88 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);93 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);89 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);94 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);90 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});95 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});tests/src/eth/nesting/nest.test.tsdiffbeforeafterbothno changes
tests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth89 "stateMutability": "view",89 "stateMutability": "view",90 "type": "function"90 "type": "function"91 },91 },92 {93 "inputs": [94 { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }95 ],96 "name": "addCollectionAdminSubstrate",97 "outputs": [],98 "stateMutability": "view",99 "type": "function"100 },92 {101 {93 "inputs": [102 "inputs": [94 { "internalType": "address", "name": "user", "type": "address" }103 { "internalType": "address", "name": "user", "type": "address" }298 "stateMutability": "view",307 "stateMutability": "view",299 "type": "function"308 "type": "function"300 },309 },310 {311 "inputs": [312 { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }313 ],314 "name": "removeCollectionAdminSubstrate",315 "outputs": [],316 "stateMutability": "view",317 "type": "function"318 },301 {319 {302 "inputs": [320 "inputs": [303 { "internalType": "address", "name": "user", "type": "address" }321 { "internalType": "address", "name": "user", "type": "address" }tests/src/eth/tokenProperties.test.tsdiffbeforeafterboth29 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});29 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});30 const token = await createItemExpectSuccess(alice, collection, 'NFT');30 const token = await createItemExpectSuccess(alice, collection, 'NFT');313132 await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{32 await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{33 key: 'testKey',33 key: 'testKey',34 permission: {34 permission: {35 collectionAdmin: true,35 collectionAdmin: true,52 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});52 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});53 const token = await createItemExpectSuccess(alice, collection, 'NFT');53 const token = await createItemExpectSuccess(alice, collection, 'NFT');545455 await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{55 await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{56 key: 'testKey',56 key: 'testKey',57 permission: {57 permission: {58 mutable: true,58 mutable: true,77 const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});77 const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});78 const token = await createItemExpectSuccess(alice, collection, 'NFT');78 const token = await createItemExpectSuccess(alice, collection, 'NFT');797980 await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{80 await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{81 key: 'testKey',81 key: 'testKey',82 permission: {82 permission: {83 collectionAdmin: true,83 collectionAdmin: true,tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth458 ResourceNotPending: AugmentedError<ApiType>;458 ResourceNotPending: AugmentedError<ApiType>;459 RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;459 RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;460 RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;460 RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;461 UnableToDecodeRmrkData: AugmentedError<ApiType>;461 /**462 /**462 * Generic error463 * Generic error463 **/464 **/tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth5import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';5import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';6import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';6import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';7import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';7import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';8import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUnqSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup';8import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup';9import type { Observable } from '@polkadot/types/types';9import type { Observable } from '@polkadot/types/types';101011declare module '@polkadot/api-base/types/storage' {11declare module '@polkadot/api-base/types/storage' {417 };417 };418 rmrkCore: {418 rmrkCore: {419 collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;419 collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;420 rmrkInernalCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;421 uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;420 uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;422 /**421 /**423 * Generic query422 * Generic query436 /**435 /**437 * Items to be executed, indexed by the block number that they should be executed on.436 * Items to be executed, indexed by the block number that they should be executed on.438 **/437 **/439 agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUnqSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;438 agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUniqueSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;440 /**439 /**441 * Lookup from identity to the block number and index of the task.440 * Lookup from identity to the block number and index of the task.442 **/441 **/tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth5import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';5import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';6import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';6import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';7import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';7import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';8import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';8import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';9910declare module '@polkadot/api-base/types/submittable' {10declare module '@polkadot/api-base/types/submittable' {11 export interface AugmentedSubmittables<ApiType extends ApiTypes> {11 export interface AugmentedSubmittables<ApiType extends ApiTypes> {373 /**373 /**374 * Create composable resource374 * Create composable resource375 **/375 **/376 addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: Bytes | string | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, Bytes, RmrkTraitsResourceComposableResource]>;376 addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceComposableResource]>;377 /**377 /**378 * Create slot resource378 * Create slot resource379 **/379 **/380 addSlotResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceSlotResource | { base?: any; src?: any; metadata?: any; slot?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceSlotResource]>;380 addSlotResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceSlotResource | { base?: any; src?: any; metadata?: any; slot?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceSlotResource]>;381 /**381 /**382 * burn nft382 * burn nft383 **/383 **/384 burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;384 burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, maxBurns: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;385 /**385 /**386 * Change the issuer of a collection386 * Change the issuer of a collection387 * 387 * 415 * - `metadata`: Arbitrary data about an nft, e.g. IPFS hash415 * - `metadata`: Arbitrary data about an nft, e.g. IPFS hash416 * - `transferable`: Ability to transfer this NFT416 * - `transferable`: Ability to transfer this NFT417 **/417 **/418 mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes, bool]>;418 mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array, resources: Option<Vec<RmrkTraitsResourceResourceTypes>> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes, bool, Option<Vec<RmrkTraitsResourceResourceTypes>>]>;419 /**419 /**420 * Rejects an NFT sent from another account to self or owned NFT420 * Rejects an NFT sent from another account to self or owned NFT421 * 421 * 974 * * new_sponsor.974 * * new_sponsor.975 **/975 **/976 setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;976 setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;977 setPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;977 setTokenProperties: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, properties: Vec<UpDataStructsProperty> | (UpDataStructsProperty | { key?: any; value?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<UpDataStructsProperty>]>;978 setTokenProperties: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, properties: Vec<UpDataStructsProperty> | (UpDataStructsProperty | { key?: any; value?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<UpDataStructsProperty>]>;978 setTokenPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;979 /**979 /**980 * Set transfers_enabled value for particular collection980 * Set transfers_enabled value for particular collection981 * 981 * tests/src/interfaces/augment-types.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */2/* eslint-disable */334import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';4import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';5import type { Data, StorageKey } from '@polkadot/types';5import type { Data, StorageKey } from '@polkadot/types';6import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';6import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';7import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';7import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';819 PalletUniqueCall: PalletUniqueCall;819 PalletUniqueCall: PalletUniqueCall;820 PalletUniqueError: PalletUniqueError;820 PalletUniqueError: PalletUniqueError;821 PalletUniqueRawEvent: PalletUniqueRawEvent;821 PalletUniqueRawEvent: PalletUniqueRawEvent;822 PalletUnqSchedulerCall: PalletUnqSchedulerCall;822 PalletUniqueSchedulerCall: PalletUniqueSchedulerCall;823 PalletUnqSchedulerError: PalletUnqSchedulerError;823 PalletUniqueSchedulerError: PalletUniqueSchedulerError;824 PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;824 PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent;825 PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;825 PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3;826 PalletVersion: PalletVersion;826 PalletVersion: PalletVersion;827 PalletXcmCall: PalletXcmCall;827 PalletXcmCall: PalletXcmCall;828 PalletXcmError: PalletXcmError;828 PalletXcmError: PalletXcmError;tests/src/interfaces/default/types.tsdiffbeforeafterboth1214 readonly royaltyAmount: Option<Permill>;1214 readonly royaltyAmount: Option<Permill>;1215 readonly metadata: Bytes;1215 readonly metadata: Bytes;1216 readonly transferable: bool;1216 readonly transferable: bool;1217 readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;1217 } & Struct;1218 } & Struct;1218 readonly isBurnNft: boolean;1219 readonly isBurnNft: boolean;1219 readonly asBurnNft: {1220 readonly asBurnNft: {1220 readonly collectionId: u32;1221 readonly collectionId: u32;1221 readonly nftId: u32;1222 readonly nftId: u32;1223 readonly maxBurns: u32;1222 } & Struct;1224 } & Struct;1223 readonly isSend: boolean;1225 readonly isSend: boolean;1224 readonly asSend: {1226 readonly asSend: {1272 readonly asAddComposableResource: {1274 readonly asAddComposableResource: {1273 readonly rmrkCollectionId: u32;1275 readonly rmrkCollectionId: u32;1274 readonly nftId: u32;1276 readonly nftId: u32;1275 readonly resourceId: Bytes;1276 readonly resource: RmrkTraitsResourceComposableResource;1277 readonly resource: RmrkTraitsResourceComposableResource;1277 } & Struct;1278 } & Struct;1278 readonly isAddSlotResource: boolean;1279 readonly isAddSlotResource: boolean;1296 readonly isNftTypeEncodeError: boolean;1297 readonly isNftTypeEncodeError: boolean;1297 readonly isRmrkPropertyKeyIsTooLong: boolean;1298 readonly isRmrkPropertyKeyIsTooLong: boolean;1298 readonly isRmrkPropertyValueIsTooLong: boolean;1299 readonly isRmrkPropertyValueIsTooLong: boolean;1300 readonly isUnableToDecodeRmrkData: boolean;1299 readonly isCollectionNotEmpty: boolean;1301 readonly isCollectionNotEmpty: boolean;1300 readonly isNoAvailableCollectionId: boolean;1302 readonly isNoAvailableCollectionId: boolean;1301 readonly isNoAvailableNftId: boolean;1303 readonly isNoAvailableNftId: boolean;1308 readonly isCannotAcceptNonOwnedNft: boolean;1310 readonly isCannotAcceptNonOwnedNft: boolean;1309 readonly isCannotRejectNonOwnedNft: boolean;1311 readonly isCannotRejectNonOwnedNft: boolean;1310 readonly isResourceNotPending: boolean;1312 readonly isResourceNotPending: boolean;1311 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';1313 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';1312}1314}131313151314/** @name PalletRmrkCoreEvent */1316/** @name PalletRmrkCoreEvent */1688 readonly tokenId: u32;1690 readonly tokenId: u32;1689 readonly propertyKeys: Vec<Bytes>;1691 readonly propertyKeys: Vec<Bytes>;1690 } & Struct;1692 } & Struct;1691 readonly isSetPropertyPermissions: boolean;1693 readonly isSetTokenPropertyPermissions: boolean;1692 readonly asSetPropertyPermissions: {1694 readonly asSetTokenPropertyPermissions: {1693 readonly collectionId: u32;1695 readonly collectionId: u32;1694 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1696 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1695 } & Struct;1697 } & Struct;1748 readonly collectionId: u32;1750 readonly collectionId: u32;1749 readonly newLimit: UpDataStructsCollectionPermissions;1751 readonly newLimit: UpDataStructsCollectionPermissions;1750 } & Struct;1752 } & Struct;1751 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';1753 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';1752}1754}175317551754/** @name PalletUniqueError */1756/** @name PalletUniqueError */1784 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1786 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1785}1787}178617881787/** @name PalletUnqSchedulerCall */1789/** @name PalletUniqueSchedulerCall */1788export interface PalletUnqSchedulerCall extends Enum {1790export interface PalletUniqueSchedulerCall extends Enum {1789 readonly isScheduleNamed: boolean;1791 readonly isScheduleNamed: boolean;1790 readonly asScheduleNamed: {1792 readonly asScheduleNamed: {1791 readonly id: U8aFixed;1793 readonly id: U8aFixed;1809 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1811 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1810}1812}181118131812/** @name PalletUnqSchedulerError */1814/** @name PalletUniqueSchedulerError */1813export interface PalletUnqSchedulerError extends Enum {1815export interface PalletUniqueSchedulerError extends Enum {1814 readonly isFailedToSchedule: boolean;1816 readonly isFailedToSchedule: boolean;1815 readonly isNotFound: boolean;1817 readonly isNotFound: boolean;1816 readonly isTargetBlockNumberInPast: boolean;1818 readonly isTargetBlockNumberInPast: boolean;1817 readonly isRescheduleNoChange: boolean;1819 readonly isRescheduleNoChange: boolean;1818 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';1820 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';1819}1821}182018221821/** @name PalletUnqSchedulerEvent */1823/** @name PalletUniqueSchedulerEvent */1822export interface PalletUnqSchedulerEvent extends Enum {1824export interface PalletUniqueSchedulerEvent extends Enum {1823 readonly isScheduled: boolean;1825 readonly isScheduled: boolean;1824 readonly asScheduled: {1826 readonly asScheduled: {1825 readonly when: u32;1827 readonly when: u32;1845 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1847 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1846}1848}184718491848/** @name PalletUnqSchedulerScheduledV3 */1850/** @name PalletUniqueSchedulerScheduledV3 */1849export interface PalletUnqSchedulerScheduledV3 extends Struct {1851export interface PalletUniqueSchedulerScheduledV3 extends Struct {1850 readonly maybeId: Option<U8aFixed>;1852 readonly maybeId: Option<U8aFixed>;1851 readonly priority: u8;1853 readonly priority: u8;1852 readonly call: FrameSupportScheduleMaybeHashed;1854 readonly call: FrameSupportScheduleMaybeHashed;2427/** @name UpDataStructsNestingPermissions */2429/** @name UpDataStructsNestingPermissions */2428export interface UpDataStructsNestingPermissions extends Struct {2430export interface UpDataStructsNestingPermissions extends Struct {2429 readonly tokenOwner: bool;2431 readonly tokenOwner: bool;2430 readonly admin: bool;2432 readonly collectionAdmin: bool;2431 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2433 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2432 readonly permissive: bool;2434 readonly permissive: bool;2433}2435}tests/src/interfaces/lookup.tsdiffbeforeafterboth1313 tokenId: 'u32',1313 tokenId: 'u32',1314 propertyKeys: 'Vec<Bytes>',1314 propertyKeys: 'Vec<Bytes>',1315 },1315 },1316 set_property_permissions: {1316 set_token_property_permissions: {1317 collectionId: 'u32',1317 collectionId: 'u32',1318 propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1318 propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1319 },1319 },1432 **/1432 **/1433 UpDataStructsNestingPermissions: {1433 UpDataStructsNestingPermissions: {1434 tokenOwner: 'bool',1434 tokenOwner: 'bool',1435 admin: 'bool',1435 collectionAdmin: 'bool',1436 restricted: 'Option<UpDataStructsOwnerRestrictedSet>',1436 restricted: 'Option<UpDataStructsOwnerRestrictedSet>',1437 permissive: 'bool'1437 permissive: 'bool'1438 },1438 },1525 constData: 'Bytes',1525 constData: 'Bytes',1526 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'1526 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'1527 },1527 },1528 /**1528 /**1529 * Lookup206: pallet_unq_scheduler::pallet::Call<T>1529 * Lookup206: pallet_unique_scheduler::pallet::Call<T>1530 **/1530 **/1531 PalletUnqSchedulerCall: {1531 PalletUniqueSchedulerCall: {1532 _enum: {1532 _enum: {1533 schedule_named: {1533 schedule_named: {1534 id: '[u8;16]',1534 id: '[u8;16]',1593 royaltyAmount: 'Option<Permill>',1593 royaltyAmount: 'Option<Permill>',1594 metadata: 'Bytes',1594 metadata: 'Bytes',1595 transferable: 'bool',1595 transferable: 'bool',1596 resources: 'Option<Vec<RmrkTraitsResourceResourceTypes>>',1596 },1597 },1597 burn_nft: {1598 burn_nft: {1598 collectionId: 'u32',1599 collectionId: 'u32',1599 nftId: 'u32',1600 nftId: 'u32',1601 maxBurns: 'u32',1600 },1602 },1601 send: {1603 send: {1602 rmrkCollectionId: 'u32',1604 rmrkCollectionId: 'u32',1641 add_composable_resource: {1643 add_composable_resource: {1642 rmrkCollectionId: 'u32',1644 rmrkCollectionId: 'u32',1643 nftId: 'u32',1645 nftId: 'u32',1644 resourceId: 'Bytes',1645 resource: 'RmrkTraitsResourceComposableResource',1646 resource: 'RmrkTraitsResourceComposableResource',1646 },1647 },1647 add_slot_resource: {1648 add_slot_resource: {1656 }1657 }1657 }1658 }1658 },1659 },1659 /**1660 /**1660 * Lookup215: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>1661 * Lookup217: rmrk_traits::resource::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1661 **/1662 **/1662 RmrkTraitsNftAccountIdOrCollectionNftTuple: {1663 RmrkTraitsResourceResourceTypes: {1663 _enum: {1664 _enum: {1664 AccountId: 'AccountId32',1665 Basic: 'RmrkTraitsResourceBasicResource',1666 Composable: 'RmrkTraitsResourceComposableResource',1665 CollectionAndNftTuple: '(u32,u32)'1667 Slot: 'RmrkTraitsResourceSlotResource'1666 }1668 }1667 },1669 },1668 /**1670 /**1674 license: 'Option<Bytes>',1676 license: 'Option<Bytes>',1675 thumb: 'Option<Bytes>'1677 thumb: 'Option<Bytes>'1676 },1678 },1677 /**1679 /**1678 * Lookup222: rmrk_traits::resource::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1680 * Lookup221: rmrk_traits::resource::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1679 **/1681 **/1680 RmrkTraitsResourceComposableResource: {1682 RmrkTraitsResourceComposableResource: {1681 parts: 'Vec<u32>',1683 parts: 'Vec<u32>',1682 base: 'u32',1684 base: 'u32',1685 license: 'Option<Bytes>',1687 license: 'Option<Bytes>',1686 thumb: 'Option<Bytes>'1688 thumb: 'Option<Bytes>'1687 },1689 },1688 /**1690 /**1689 * Lookup224: rmrk_traits::resource::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>1691 * Lookup222: rmrk_traits::resource::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>1690 **/1692 **/1691 RmrkTraitsResourceSlotResource: {1693 RmrkTraitsResourceSlotResource: {1692 base: 'u32',1694 base: 'u32',1693 src: 'Option<Bytes>',1695 src: 'Option<Bytes>',1696 license: 'Option<Bytes>',1698 license: 'Option<Bytes>',1697 thumb: 'Option<Bytes>'1699 thumb: 'Option<Bytes>'1698 },1700 },1701 /**1702 * Lookup224: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>1703 **/1704 RmrkTraitsNftAccountIdOrCollectionNftTuple: {1705 _enum: {1706 AccountId: 'AccountId32',1707 CollectionAndNftTuple: '(u32,u32)'1708 }1709 },1699 /**1710 /**1700 * Lookup225: pallet_rmrk_equip::pallet::Call<T>1711 * Lookup228: pallet_rmrk_equip::pallet::Call<T>1701 **/1712 **/1702 PalletRmrkEquipCall: {1713 PalletRmrkEquipCall: {1703 _enum: {1714 _enum: {1704 create_base: {1715 create_base: {1712 }1723 }1713 }1724 }1714 },1725 },1715 /**1726 /**1716 * Lookup227: rmrk_traits::part::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1727 * Lookup230: rmrk_traits::part::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1717 **/1728 **/1718 RmrkTraitsPartPartType: {1729 RmrkTraitsPartPartType: {1719 _enum: {1730 _enum: {1720 FixedPart: 'RmrkTraitsPartFixedPart',1731 FixedPart: 'RmrkTraitsPartFixedPart',1721 SlotPart: 'RmrkTraitsPartSlotPart'1732 SlotPart: 'RmrkTraitsPartSlotPart'1722 }1733 }1723 },1734 },1724 /**1735 /**1725 * Lookup229: rmrk_traits::part::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>1736 * Lookup232: rmrk_traits::part::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>1726 **/1737 **/1727 RmrkTraitsPartFixedPart: {1738 RmrkTraitsPartFixedPart: {1728 id: 'u32',1739 id: 'u32',1729 z: 'u32',1740 z: 'u32',1730 src: 'Bytes'1741 src: 'Bytes'1731 },1742 },1732 /**1743 /**1733 * Lookup230: rmrk_traits::part::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1744 * Lookup233: rmrk_traits::part::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1734 **/1745 **/1735 RmrkTraitsPartSlotPart: {1746 RmrkTraitsPartSlotPart: {1736 id: 'u32',1747 id: 'u32',1737 equippable: 'RmrkTraitsPartEquippableList',1748 equippable: 'RmrkTraitsPartEquippableList',1738 src: 'Bytes',1749 src: 'Bytes',1739 z: 'u32'1750 z: 'u32'1740 },1751 },1741 /**1752 /**1742 * Lookup231: rmrk_traits::part::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>1753 * Lookup234: rmrk_traits::part::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>1743 **/1754 **/1744 RmrkTraitsPartEquippableList: {1755 RmrkTraitsPartEquippableList: {1745 _enum: {1756 _enum: {1746 All: 'Null',1757 All: 'Null',1747 Empty: 'Null',1758 Empty: 'Null',1748 Custom: 'Vec<u32>'1759 Custom: 'Vec<u32>'1749 }1760 }1750 },1761 },1751 /**1762 /**1752 * Lookup233: rmrk_traits::theme::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>1763 * Lookup236: rmrk_traits::theme::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>1753 **/1764 **/1754 RmrkTraitsTheme: {1765 RmrkTraitsTheme: {1755 name: 'Bytes',1766 name: 'Bytes',1756 properties: 'Vec<RmrkTraitsThemeThemeProperty>',1767 properties: 'Vec<RmrkTraitsThemeThemeProperty>',1757 inherit: 'bool'1768 inherit: 'bool'1758 },1769 },1759 /**1770 /**1760 * Lookup235: rmrk_traits::theme::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>1771 * Lookup238: rmrk_traits::theme::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>1761 **/1772 **/1762 RmrkTraitsThemeThemeProperty: {1773 RmrkTraitsThemeThemeProperty: {1763 key: 'Bytes',1774 key: 'Bytes',1764 value: 'Bytes'1775 value: 'Bytes'1765 },1776 },1766 /**1777 /**1767 * Lookup236: pallet_evm::pallet::Call<T>1778 * Lookup239: pallet_evm::pallet::Call<T>1768 **/1779 **/1769 PalletEvmCall: {1780 PalletEvmCall: {1770 _enum: {1781 _enum: {1771 withdraw: {1782 withdraw: {1806 }1817 }1807 }1818 }1808 },1819 },1809 /**1820 /**1810 * Lookup242: pallet_ethereum::pallet::Call<T>1821 * Lookup245: pallet_ethereum::pallet::Call<T>1811 **/1822 **/1812 PalletEthereumCall: {1823 PalletEthereumCall: {1813 _enum: {1824 _enum: {1814 transact: {1825 transact: {1815 transaction: 'EthereumTransactionTransactionV2'1826 transaction: 'EthereumTransactionTransactionV2'1816 }1827 }1817 }1828 }1818 },1829 },1819 /**1830 /**1820 * Lookup243: ethereum::transaction::TransactionV21831 * Lookup246: ethereum::transaction::TransactionV21821 **/1832 **/1822 EthereumTransactionTransactionV2: {1833 EthereumTransactionTransactionV2: {1823 _enum: {1834 _enum: {1824 Legacy: 'EthereumTransactionLegacyTransaction',1835 Legacy: 'EthereumTransactionLegacyTransaction',1825 EIP2930: 'EthereumTransactionEip2930Transaction',1836 EIP2930: 'EthereumTransactionEip2930Transaction',1826 EIP1559: 'EthereumTransactionEip1559Transaction'1837 EIP1559: 'EthereumTransactionEip1559Transaction'1827 }1838 }1828 },1839 },1829 /**1840 /**1830 * Lookup244: ethereum::transaction::LegacyTransaction1841 * Lookup247: ethereum::transaction::LegacyTransaction1831 **/1842 **/1832 EthereumTransactionLegacyTransaction: {1843 EthereumTransactionLegacyTransaction: {1833 nonce: 'U256',1844 nonce: 'U256',1834 gasPrice: 'U256',1845 gasPrice: 'U256',1838 input: 'Bytes',1849 input: 'Bytes',1839 signature: 'EthereumTransactionTransactionSignature'1850 signature: 'EthereumTransactionTransactionSignature'1840 },1851 },1841 /**1852 /**1842 * Lookup245: ethereum::transaction::TransactionAction1853 * Lookup248: ethereum::transaction::TransactionAction1843 **/1854 **/1844 EthereumTransactionTransactionAction: {1855 EthereumTransactionTransactionAction: {1845 _enum: {1856 _enum: {1846 Call: 'H160',1857 Call: 'H160',1847 Create: 'Null'1858 Create: 'Null'1848 }1859 }1849 },1860 },1850 /**1861 /**1851 * Lookup246: ethereum::transaction::TransactionSignature1862 * Lookup249: ethereum::transaction::TransactionSignature1852 **/1863 **/1853 EthereumTransactionTransactionSignature: {1864 EthereumTransactionTransactionSignature: {1854 v: 'u64',1865 v: 'u64',1855 r: 'H256',1866 r: 'H256',1856 s: 'H256'1867 s: 'H256'1857 },1868 },1858 /**1869 /**1859 * Lookup248: ethereum::transaction::EIP2930Transaction1870 * Lookup251: ethereum::transaction::EIP2930Transaction1860 **/1871 **/1861 EthereumTransactionEip2930Transaction: {1872 EthereumTransactionEip2930Transaction: {1862 chainId: 'u64',1873 chainId: 'u64',1863 nonce: 'U256',1874 nonce: 'U256',1871 r: 'H256',1882 r: 'H256',1872 s: 'H256'1883 s: 'H256'1873 },1884 },1874 /**1885 /**1875 * Lookup250: ethereum::transaction::AccessListItem1886 * Lookup253: ethereum::transaction::AccessListItem1876 **/1887 **/1877 EthereumTransactionAccessListItem: {1888 EthereumTransactionAccessListItem: {1878 address: 'H160',1889 address: 'H160',1879 storageKeys: 'Vec<H256>'1890 storageKeys: 'Vec<H256>'1880 },1891 },1881 /**1892 /**1882 * Lookup251: ethereum::transaction::EIP1559Transaction1893 * Lookup254: ethereum::transaction::EIP1559Transaction1883 **/1894 **/1884 EthereumTransactionEip1559Transaction: {1895 EthereumTransactionEip1559Transaction: {1885 chainId: 'u64',1896 chainId: 'u64',1886 nonce: 'U256',1897 nonce: 'U256',1895 r: 'H256',1906 r: 'H256',1896 s: 'H256'1907 s: 'H256'1897 },1908 },1898 /**1909 /**1899 * Lookup252: pallet_evm_migration::pallet::Call<T>1910 * Lookup255: pallet_evm_migration::pallet::Call<T>1900 **/1911 **/1901 PalletEvmMigrationCall: {1912 PalletEvmMigrationCall: {1902 _enum: {1913 _enum: {1903 begin: {1914 begin: {1913 }1924 }1914 }1925 }1915 },1926 },1916 /**1927 /**1917 * Lookup255: pallet_sudo::pallet::Event<T>1928 * Lookup258: pallet_sudo::pallet::Event<T>1918 **/1929 **/1919 PalletSudoEvent: {1930 PalletSudoEvent: {1920 _enum: {1931 _enum: {1921 Sudid: {1932 Sudid: {1929 }1940 }1930 }1941 }1931 },1942 },1932 /**1943 /**1933 * Lookup257: sp_runtime::DispatchError1944 * Lookup260: sp_runtime::DispatchError1934 **/1945 **/1935 SpRuntimeDispatchError: {1946 SpRuntimeDispatchError: {1936 _enum: {1947 _enum: {1937 Other: 'Null',1948 Other: 'Null',1946 Transactional: 'SpRuntimeTransactionalError'1957 Transactional: 'SpRuntimeTransactionalError'1947 }1958 }1948 },1959 },1949 /**1960 /**1950 * Lookup258: sp_runtime::ModuleError1961 * Lookup261: sp_runtime::ModuleError1951 **/1962 **/1952 SpRuntimeModuleError: {1963 SpRuntimeModuleError: {1953 index: 'u8',1964 index: 'u8',1954 error: '[u8;4]'1965 error: '[u8;4]'1955 },1966 },1956 /**1967 /**1957 * Lookup259: sp_runtime::TokenError1968 * Lookup262: sp_runtime::TokenError1958 **/1969 **/1959 SpRuntimeTokenError: {1970 SpRuntimeTokenError: {1960 _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']1971 _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']1961 },1972 },1962 /**1973 /**1963 * Lookup260: sp_runtime::ArithmeticError1974 * Lookup263: sp_runtime::ArithmeticError1964 **/1975 **/1965 SpRuntimeArithmeticError: {1976 SpRuntimeArithmeticError: {1966 _enum: ['Underflow', 'Overflow', 'DivisionByZero']1977 _enum: ['Underflow', 'Overflow', 'DivisionByZero']1967 },1978 },1968 /**1979 /**1969 * Lookup261: sp_runtime::TransactionalError1980 * Lookup264: sp_runtime::TransactionalError1970 **/1981 **/1971 SpRuntimeTransactionalError: {1982 SpRuntimeTransactionalError: {1972 _enum: ['LimitReached', 'NoLayer']1983 _enum: ['LimitReached', 'NoLayer']1973 },1984 },1974 /**1985 /**1975 * Lookup262: pallet_sudo::pallet::Error<T>1986 * Lookup265: pallet_sudo::pallet::Error<T>1976 **/1987 **/1977 PalletSudoError: {1988 PalletSudoError: {1978 _enum: ['RequireSudo']1989 _enum: ['RequireSudo']1979 },1990 },1980 /**1991 /**1981 * Lookup263: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>1992 * Lookup266: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>1982 **/1993 **/1983 FrameSystemAccountInfo: {1994 FrameSystemAccountInfo: {1984 nonce: 'u32',1995 nonce: 'u32',1985 consumers: 'u32',1996 consumers: 'u32',1986 providers: 'u32',1997 providers: 'u32',1987 sufficients: 'u32',1998 sufficients: 'u32',1988 data: 'PalletBalancesAccountData'1999 data: 'PalletBalancesAccountData'1989 },2000 },1990 /**2001 /**1991 * Lookup264: frame_support::weights::PerDispatchClass<T>2002 * Lookup267: frame_support::weights::PerDispatchClass<T>1992 **/2003 **/1993 FrameSupportWeightsPerDispatchClassU64: {2004 FrameSupportWeightsPerDispatchClassU64: {1994 normal: 'u64',2005 normal: 'u64',1995 operational: 'u64',2006 operational: 'u64',1996 mandatory: 'u64'2007 mandatory: 'u64'1997 },2008 },1998 /**2009 /**1999 * Lookup265: sp_runtime::generic::digest::Digest2010 * Lookup268: sp_runtime::generic::digest::Digest2000 **/2011 **/2001 SpRuntimeDigest: {2012 SpRuntimeDigest: {2002 logs: 'Vec<SpRuntimeDigestDigestItem>'2013 logs: 'Vec<SpRuntimeDigestDigestItem>'2003 },2014 },2004 /**2015 /**2005 * Lookup267: sp_runtime::generic::digest::DigestItem2016 * Lookup270: sp_runtime::generic::digest::DigestItem2006 **/2017 **/2007 SpRuntimeDigestDigestItem: {2018 SpRuntimeDigestDigestItem: {2008 _enum: {2019 _enum: {2009 Other: 'Bytes',2020 Other: 'Bytes',2017 RuntimeEnvironmentUpdated: 'Null'2028 RuntimeEnvironmentUpdated: 'Null'2018 }2029 }2019 },2030 },2020 /**2031 /**2021 * Lookup269: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>2032 * Lookup272: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>2022 **/2033 **/2023 FrameSystemEventRecord: {2034 FrameSystemEventRecord: {2024 phase: 'FrameSystemPhase',2035 phase: 'FrameSystemPhase',2025 event: 'Event',2036 event: 'Event',2026 topics: 'Vec<H256>'2037 topics: 'Vec<H256>'2027 },2038 },2028 /**2039 /**2029 * Lookup271: frame_system::pallet::Event<T>2040 * Lookup274: frame_system::pallet::Event<T>2030 **/2041 **/2031 FrameSystemEvent: {2042 FrameSystemEvent: {2032 _enum: {2043 _enum: {2033 ExtrinsicSuccess: {2044 ExtrinsicSuccess: {2053 }2064 }2054 }2065 }2055 },2066 },2056 /**2067 /**2057 * Lookup272: frame_support::weights::DispatchInfo2068 * Lookup275: frame_support::weights::DispatchInfo2058 **/2069 **/2059 FrameSupportWeightsDispatchInfo: {2070 FrameSupportWeightsDispatchInfo: {2060 weight: 'u64',2071 weight: 'u64',2061 class: 'FrameSupportWeightsDispatchClass',2072 class: 'FrameSupportWeightsDispatchClass',2062 paysFee: 'FrameSupportWeightsPays'2073 paysFee: 'FrameSupportWeightsPays'2063 },2074 },2064 /**2075 /**2065 * Lookup273: frame_support::weights::DispatchClass2076 * Lookup276: frame_support::weights::DispatchClass2066 **/2077 **/2067 FrameSupportWeightsDispatchClass: {2078 FrameSupportWeightsDispatchClass: {2068 _enum: ['Normal', 'Operational', 'Mandatory']2079 _enum: ['Normal', 'Operational', 'Mandatory']2069 },2080 },2070 /**2081 /**2071 * Lookup274: frame_support::weights::Pays2082 * Lookup277: frame_support::weights::Pays2072 **/2083 **/2073 FrameSupportWeightsPays: {2084 FrameSupportWeightsPays: {2074 _enum: ['Yes', 'No']2085 _enum: ['Yes', 'No']2075 },2086 },2076 /**2087 /**2077 * Lookup275: orml_vesting::module::Event<T>2088 * Lookup278: orml_vesting::module::Event<T>2078 **/2089 **/2079 OrmlVestingModuleEvent: {2090 OrmlVestingModuleEvent: {2080 _enum: {2091 _enum: {2081 VestingScheduleAdded: {2092 VestingScheduleAdded: {2092 }2103 }2093 }2104 }2094 },2105 },2095 /**2106 /**2096 * Lookup276: cumulus_pallet_xcmp_queue::pallet::Event<T>2107 * Lookup279: cumulus_pallet_xcmp_queue::pallet::Event<T>2097 **/2108 **/2098 CumulusPalletXcmpQueueEvent: {2109 CumulusPalletXcmpQueueEvent: {2099 _enum: {2110 _enum: {2100 Success: 'Option<H256>',2111 Success: 'Option<H256>',2107 OverweightServiced: '(u64,u64)'2118 OverweightServiced: '(u64,u64)'2108 }2119 }2109 },2120 },2110 /**2121 /**2111 * Lookup277: pallet_xcm::pallet::Event<T>2122 * Lookup280: pallet_xcm::pallet::Event<T>2112 **/2123 **/2113 PalletXcmEvent: {2124 PalletXcmEvent: {2114 _enum: {2125 _enum: {2115 Attempted: 'XcmV2TraitsOutcome',2126 Attempted: 'XcmV2TraitsOutcome',2130 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'2141 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'2131 }2142 }2132 },2143 },2133 /**2144 /**2134 * Lookup278: xcm::v2::traits::Outcome2145 * Lookup281: xcm::v2::traits::Outcome2135 **/2146 **/2136 XcmV2TraitsOutcome: {2147 XcmV2TraitsOutcome: {2137 _enum: {2148 _enum: {2138 Complete: 'u64',2149 Complete: 'u64',2139 Incomplete: '(u64,XcmV2TraitsError)',2150 Incomplete: '(u64,XcmV2TraitsError)',2140 Error: 'XcmV2TraitsError'2151 Error: 'XcmV2TraitsError'2141 }2152 }2142 },2153 },2143 /**2154 /**2144 * Lookup280: cumulus_pallet_xcm::pallet::Event<T>2155 * Lookup283: cumulus_pallet_xcm::pallet::Event<T>2145 **/2156 **/2146 CumulusPalletXcmEvent: {2157 CumulusPalletXcmEvent: {2147 _enum: {2158 _enum: {2148 InvalidFormat: '[u8;8]',2159 InvalidFormat: '[u8;8]',2149 UnsupportedVersion: '[u8;8]',2160 UnsupportedVersion: '[u8;8]',2150 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'2161 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'2151 }2162 }2152 },2163 },2153 /**2164 /**2154 * Lookup281: cumulus_pallet_dmp_queue::pallet::Event<T>2165 * Lookup284: cumulus_pallet_dmp_queue::pallet::Event<T>2155 **/2166 **/2156 CumulusPalletDmpQueueEvent: {2167 CumulusPalletDmpQueueEvent: {2157 _enum: {2168 _enum: {2158 InvalidFormat: '[u8;32]',2169 InvalidFormat: '[u8;32]',2163 OverweightServiced: '(u64,u64)'2174 OverweightServiced: '(u64,u64)'2164 }2175 }2165 },2176 },2166 /**2177 /**2167 * Lookup282: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2178 * Lookup285: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2168 **/2179 **/2169 PalletUniqueRawEvent: {2180 PalletUniqueRawEvent: {2170 _enum: {2181 _enum: {2171 CollectionSponsorRemoved: 'u32',2182 CollectionSponsorRemoved: 'u32',2180 CollectionPermissionSet: 'u32'2191 CollectionPermissionSet: 'u32'2181 }2192 }2182 },2193 },2183 /**2194 /**2184 * Lookup283: pallet_unq_scheduler::pallet::Event<T>2195 * Lookup286: pallet_unique_scheduler::pallet::Event<T>2185 **/2196 **/2186 PalletUnqSchedulerEvent: {2197 PalletUniqueSchedulerEvent: {2187 _enum: {2198 _enum: {2188 Scheduled: {2199 Scheduled: {2189 when: 'u32',2200 when: 'u32',2205 }2216 }2206 }2217 }2207 },2218 },2208 /**2219 /**2209 * Lookup285: frame_support::traits::schedule::LookupError2220 * Lookup288: frame_support::traits::schedule::LookupError2210 **/2221 **/2211 FrameSupportScheduleLookupError: {2222 FrameSupportScheduleLookupError: {2212 _enum: ['Unknown', 'BadFormat']2223 _enum: ['Unknown', 'BadFormat']2213 },2224 },2214 /**2225 /**2215 * Lookup286: pallet_common::pallet::Event<T>2226 * Lookup289: pallet_common::pallet::Event<T>2216 **/2227 **/2217 PalletCommonEvent: {2228 PalletCommonEvent: {2218 _enum: {2229 _enum: {2219 CollectionCreated: '(u32,u8,AccountId32)',2230 CollectionCreated: '(u32,u8,AccountId32)',2229 PropertyPermissionSet: '(u32,Bytes)'2240 PropertyPermissionSet: '(u32,Bytes)'2230 }2241 }2231 },2242 },2232 /**2243 /**2233 * Lookup287: pallet_structure::pallet::Event<T>2244 * Lookup290: pallet_structure::pallet::Event<T>2234 **/2245 **/2235 PalletStructureEvent: {2246 PalletStructureEvent: {2236 _enum: {2247 _enum: {2237 Executed: 'Result<Null, SpRuntimeDispatchError>'2248 Executed: 'Result<Null, SpRuntimeDispatchError>'2238 }2249 }2239 },2250 },2240 /**2251 /**2241 * Lookup288: pallet_rmrk_core::pallet::Event<T>2252 * Lookup291: pallet_rmrk_core::pallet::Event<T>2242 **/2253 **/2243 PalletRmrkCoreEvent: {2254 PalletRmrkCoreEvent: {2244 _enum: {2255 _enum: {2245 CollectionCreated: {2256 CollectionCreated: {2314 }2325 }2315 }2326 }2316 },2327 },2317 /**2328 /**2318 * Lookup289: pallet_rmrk_equip::pallet::Event<T>2329 * Lookup292: pallet_rmrk_equip::pallet::Event<T>2319 **/2330 **/2320 PalletRmrkEquipEvent: {2331 PalletRmrkEquipEvent: {2321 _enum: {2332 _enum: {2322 BaseCreated: {2333 BaseCreated: {2325 }2336 }2326 }2337 }2327 },2338 },2328 /**2339 /**2329 * Lookup290: pallet_evm::pallet::Event<T>2340 * Lookup293: pallet_evm::pallet::Event<T>2330 **/2341 **/2331 PalletEvmEvent: {2342 PalletEvmEvent: {2332 _enum: {2343 _enum: {2333 Log: 'EthereumLog',2344 Log: 'EthereumLog',2339 BalanceWithdraw: '(AccountId32,H160,U256)'2350 BalanceWithdraw: '(AccountId32,H160,U256)'2340 }2351 }2341 },2352 },2342 /**2353 /**2343 * Lookup291: ethereum::log::Log2354 * Lookup294: ethereum::log::Log2344 **/2355 **/2345 EthereumLog: {2356 EthereumLog: {2346 address: 'H160',2357 address: 'H160',2347 topics: 'Vec<H256>',2358 topics: 'Vec<H256>',2348 data: 'Bytes'2359 data: 'Bytes'2349 },2360 },2350 /**2361 /**2351 * Lookup292: pallet_ethereum::pallet::Event2362 * Lookup295: pallet_ethereum::pallet::Event2352 **/2363 **/2353 PalletEthereumEvent: {2364 PalletEthereumEvent: {2354 _enum: {2365 _enum: {2355 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'2366 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'2356 }2367 }2357 },2368 },2358 /**2369 /**2359 * Lookup293: evm_core::error::ExitReason2370 * Lookup296: evm_core::error::ExitReason2360 **/2371 **/2361 EvmCoreErrorExitReason: {2372 EvmCoreErrorExitReason: {2362 _enum: {2373 _enum: {2363 Succeed: 'EvmCoreErrorExitSucceed',2374 Succeed: 'EvmCoreErrorExitSucceed',2366 Fatal: 'EvmCoreErrorExitFatal'2377 Fatal: 'EvmCoreErrorExitFatal'2367 }2378 }2368 },2379 },2369 /**2380 /**2370 * Lookup294: evm_core::error::ExitSucceed2381 * Lookup297: evm_core::error::ExitSucceed2371 **/2382 **/2372 EvmCoreErrorExitSucceed: {2383 EvmCoreErrorExitSucceed: {2373 _enum: ['Stopped', 'Returned', 'Suicided']2384 _enum: ['Stopped', 'Returned', 'Suicided']2374 },2385 },2375 /**2386 /**2376 * Lookup295: evm_core::error::ExitError2387 * Lookup298: evm_core::error::ExitError2377 **/2388 **/2378 EvmCoreErrorExitError: {2389 EvmCoreErrorExitError: {2379 _enum: {2390 _enum: {2380 StackUnderflow: 'Null',2391 StackUnderflow: 'Null',2394 InvalidCode: 'Null'2405 InvalidCode: 'Null'2395 }2406 }2396 },2407 },2397 /**2408 /**2398 * Lookup298: evm_core::error::ExitRevert2409 * Lookup301: evm_core::error::ExitRevert2399 **/2410 **/2400 EvmCoreErrorExitRevert: {2411 EvmCoreErrorExitRevert: {2401 _enum: ['Reverted']2412 _enum: ['Reverted']2402 },2413 },2403 /**2414 /**2404 * Lookup299: evm_core::error::ExitFatal2415 * Lookup302: evm_core::error::ExitFatal2405 **/2416 **/2406 EvmCoreErrorExitFatal: {2417 EvmCoreErrorExitFatal: {2407 _enum: {2418 _enum: {2408 NotSupported: 'Null',2419 NotSupported: 'Null',2411 Other: 'Text'2422 Other: 'Text'2412 }2423 }2413 },2424 },2414 /**2425 /**2415 * Lookup300: frame_system::Phase2426 * Lookup303: frame_system::Phase2416 **/2427 **/2417 FrameSystemPhase: {2428 FrameSystemPhase: {2418 _enum: {2429 _enum: {2419 ApplyExtrinsic: 'u32',2430 ApplyExtrinsic: 'u32',2420 Finalization: 'Null',2431 Finalization: 'Null',2421 Initialization: 'Null'2432 Initialization: 'Null'2422 }2433 }2423 },2434 },2424 /**2435 /**2425 * Lookup302: frame_system::LastRuntimeUpgradeInfo2436 * Lookup305: frame_system::LastRuntimeUpgradeInfo2426 **/2437 **/2427 FrameSystemLastRuntimeUpgradeInfo: {2438 FrameSystemLastRuntimeUpgradeInfo: {2428 specVersion: 'Compact<u32>',2439 specVersion: 'Compact<u32>',2429 specName: 'Text'2440 specName: 'Text'2430 },2441 },2431 /**2442 /**2432 * Lookup303: frame_system::limits::BlockWeights2443 * Lookup306: frame_system::limits::BlockWeights2433 **/2444 **/2434 FrameSystemLimitsBlockWeights: {2445 FrameSystemLimitsBlockWeights: {2435 baseBlock: 'u64',2446 baseBlock: 'u64',2436 maxBlock: 'u64',2447 maxBlock: 'u64',2437 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'2448 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'2438 },2449 },2439 /**2450 /**2440 * Lookup304: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>2451 * Lookup307: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>2441 **/2452 **/2442 FrameSupportWeightsPerDispatchClassWeightsPerClass: {2453 FrameSupportWeightsPerDispatchClassWeightsPerClass: {2443 normal: 'FrameSystemLimitsWeightsPerClass',2454 normal: 'FrameSystemLimitsWeightsPerClass',2444 operational: 'FrameSystemLimitsWeightsPerClass',2455 operational: 'FrameSystemLimitsWeightsPerClass',2445 mandatory: 'FrameSystemLimitsWeightsPerClass'2456 mandatory: 'FrameSystemLimitsWeightsPerClass'2446 },2457 },2447 /**2458 /**2448 * Lookup305: frame_system::limits::WeightsPerClass2459 * Lookup308: frame_system::limits::WeightsPerClass2449 **/2460 **/2450 FrameSystemLimitsWeightsPerClass: {2461 FrameSystemLimitsWeightsPerClass: {2451 baseExtrinsic: 'u64',2462 baseExtrinsic: 'u64',2452 maxExtrinsic: 'Option<u64>',2463 maxExtrinsic: 'Option<u64>',2453 maxTotal: 'Option<u64>',2464 maxTotal: 'Option<u64>',2454 reserved: 'Option<u64>'2465 reserved: 'Option<u64>'2455 },2466 },2456 /**2467 /**2457 * Lookup307: frame_system::limits::BlockLength2468 * Lookup310: frame_system::limits::BlockLength2458 **/2469 **/2459 FrameSystemLimitsBlockLength: {2470 FrameSystemLimitsBlockLength: {2460 max: 'FrameSupportWeightsPerDispatchClassU32'2471 max: 'FrameSupportWeightsPerDispatchClassU32'2461 },2472 },2462 /**2473 /**2463 * Lookup308: frame_support::weights::PerDispatchClass<T>2474 * Lookup311: frame_support::weights::PerDispatchClass<T>2464 **/2475 **/2465 FrameSupportWeightsPerDispatchClassU32: {2476 FrameSupportWeightsPerDispatchClassU32: {2466 normal: 'u32',2477 normal: 'u32',2467 operational: 'u32',2478 operational: 'u32',2468 mandatory: 'u32'2479 mandatory: 'u32'2469 },2480 },2470 /**2481 /**2471 * Lookup309: frame_support::weights::RuntimeDbWeight2482 * Lookup312: frame_support::weights::RuntimeDbWeight2472 **/2483 **/2473 FrameSupportWeightsRuntimeDbWeight: {2484 FrameSupportWeightsRuntimeDbWeight: {2474 read: 'u64',2485 read: 'u64',2475 write: 'u64'2486 write: 'u64'2476 },2487 },2477 /**2488 /**2478 * Lookup310: sp_version::RuntimeVersion2489 * Lookup313: sp_version::RuntimeVersion2479 **/2490 **/2480 SpVersionRuntimeVersion: {2491 SpVersionRuntimeVersion: {2481 specName: 'Text',2492 specName: 'Text',2482 implName: 'Text',2493 implName: 'Text',2487 transactionVersion: 'u32',2498 transactionVersion: 'u32',2488 stateVersion: 'u8'2499 stateVersion: 'u8'2489 },2500 },2490 /**2501 /**2491 * Lookup314: frame_system::pallet::Error<T>2502 * Lookup317: frame_system::pallet::Error<T>2492 **/2503 **/2493 FrameSystemError: {2504 FrameSystemError: {2494 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']2505 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']2495 },2506 },2496 /**2507 /**2497 * Lookup316: orml_vesting::module::Error<T>2508 * Lookup319: orml_vesting::module::Error<T>2498 **/2509 **/2499 OrmlVestingModuleError: {2510 OrmlVestingModuleError: {2500 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2511 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2501 },2512 },2502 /**2513 /**2503 * Lookup318: cumulus_pallet_xcmp_queue::InboundChannelDetails2514 * Lookup321: cumulus_pallet_xcmp_queue::InboundChannelDetails2504 **/2515 **/2505 CumulusPalletXcmpQueueInboundChannelDetails: {2516 CumulusPalletXcmpQueueInboundChannelDetails: {2506 sender: 'u32',2517 sender: 'u32',2507 state: 'CumulusPalletXcmpQueueInboundState',2518 state: 'CumulusPalletXcmpQueueInboundState',2508 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2519 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2509 },2520 },2510 /**2521 /**2511 * Lookup319: cumulus_pallet_xcmp_queue::InboundState2522 * Lookup322: cumulus_pallet_xcmp_queue::InboundState2512 **/2523 **/2513 CumulusPalletXcmpQueueInboundState: {2524 CumulusPalletXcmpQueueInboundState: {2514 _enum: ['Ok', 'Suspended']2525 _enum: ['Ok', 'Suspended']2515 },2526 },2516 /**2527 /**2517 * Lookup322: polkadot_parachain::primitives::XcmpMessageFormat2528 * Lookup325: polkadot_parachain::primitives::XcmpMessageFormat2518 **/2529 **/2519 PolkadotParachainPrimitivesXcmpMessageFormat: {2530 PolkadotParachainPrimitivesXcmpMessageFormat: {2520 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2531 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2521 },2532 },2522 /**2533 /**2523 * Lookup325: cumulus_pallet_xcmp_queue::OutboundChannelDetails2534 * Lookup328: cumulus_pallet_xcmp_queue::OutboundChannelDetails2524 **/2535 **/2525 CumulusPalletXcmpQueueOutboundChannelDetails: {2536 CumulusPalletXcmpQueueOutboundChannelDetails: {2526 recipient: 'u32',2537 recipient: 'u32',2527 state: 'CumulusPalletXcmpQueueOutboundState',2538 state: 'CumulusPalletXcmpQueueOutboundState',2528 signalsExist: 'bool',2539 signalsExist: 'bool',2529 firstIndex: 'u16',2540 firstIndex: 'u16',2530 lastIndex: 'u16'2541 lastIndex: 'u16'2531 },2542 },2532 /**2543 /**2533 * Lookup326: cumulus_pallet_xcmp_queue::OutboundState2544 * Lookup329: cumulus_pallet_xcmp_queue::OutboundState2534 **/2545 **/2535 CumulusPalletXcmpQueueOutboundState: {2546 CumulusPalletXcmpQueueOutboundState: {2536 _enum: ['Ok', 'Suspended']2547 _enum: ['Ok', 'Suspended']2537 },2548 },2538 /**2549 /**2539 * Lookup328: cumulus_pallet_xcmp_queue::QueueConfigData2550 * Lookup331: cumulus_pallet_xcmp_queue::QueueConfigData2540 **/2551 **/2541 CumulusPalletXcmpQueueQueueConfigData: {2552 CumulusPalletXcmpQueueQueueConfigData: {2542 suspendThreshold: 'u32',2553 suspendThreshold: 'u32',2543 dropThreshold: 'u32',2554 dropThreshold: 'u32',2546 weightRestrictDecay: 'u64',2557 weightRestrictDecay: 'u64',2547 xcmpMaxIndividualWeight: 'u64'2558 xcmpMaxIndividualWeight: 'u64'2548 },2559 },2549 /**2560 /**2550 * Lookup330: cumulus_pallet_xcmp_queue::pallet::Error<T>2561 * Lookup333: cumulus_pallet_xcmp_queue::pallet::Error<T>2551 **/2562 **/2552 CumulusPalletXcmpQueueError: {2563 CumulusPalletXcmpQueueError: {2553 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2564 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2554 },2565 },2555 /**2566 /**2556 * Lookup331: pallet_xcm::pallet::Error<T>2567 * Lookup334: pallet_xcm::pallet::Error<T>2557 **/2568 **/2558 PalletXcmError: {2569 PalletXcmError: {2559 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2570 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2560 },2571 },2561 /**2572 /**2562 * Lookup332: cumulus_pallet_xcm::pallet::Error<T>2573 * Lookup335: cumulus_pallet_xcm::pallet::Error<T>2563 **/2574 **/2564 CumulusPalletXcmError: 'Null',2575 CumulusPalletXcmError: 'Null',2565 /**2576 /**2566 * Lookup333: cumulus_pallet_dmp_queue::ConfigData2577 * Lookup336: cumulus_pallet_dmp_queue::ConfigData2567 **/2578 **/2568 CumulusPalletDmpQueueConfigData: {2579 CumulusPalletDmpQueueConfigData: {2569 maxIndividual: 'u64'2580 maxIndividual: 'u64'2570 },2581 },2571 /**2582 /**2572 * Lookup334: cumulus_pallet_dmp_queue::PageIndexData2583 * Lookup337: cumulus_pallet_dmp_queue::PageIndexData2573 **/2584 **/2574 CumulusPalletDmpQueuePageIndexData: {2585 CumulusPalletDmpQueuePageIndexData: {2575 beginUsed: 'u32',2586 beginUsed: 'u32',2576 endUsed: 'u32',2587 endUsed: 'u32',2577 overweightCount: 'u64'2588 overweightCount: 'u64'2578 },2589 },2579 /**2590 /**2580 * Lookup337: cumulus_pallet_dmp_queue::pallet::Error<T>2591 * Lookup340: cumulus_pallet_dmp_queue::pallet::Error<T>2581 **/2592 **/2582 CumulusPalletDmpQueueError: {2593 CumulusPalletDmpQueueError: {2583 _enum: ['Unknown', 'OverLimit']2594 _enum: ['Unknown', 'OverLimit']2584 },2595 },2585 /**2596 /**2586 * Lookup341: pallet_unique::Error<T>2597 * Lookup344: pallet_unique::Error<T>2587 **/2598 **/2588 PalletUniqueError: {2599 PalletUniqueError: {2589 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']2600 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']2590 },2601 },2591 /**2602 /**2592 * Lookup344: pallet_unq_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>2603 * Lookup347: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>2593 **/2604 **/2594 PalletUnqSchedulerScheduledV3: {2605 PalletUniqueSchedulerScheduledV3: {2595 maybeId: 'Option<[u8;16]>',2606 maybeId: 'Option<[u8;16]>',2596 priority: 'u8',2607 priority: 'u8',2597 call: 'FrameSupportScheduleMaybeHashed',2608 call: 'FrameSupportScheduleMaybeHashed',2598 maybePeriodic: 'Option<(u32,u32)>',2609 maybePeriodic: 'Option<(u32,u32)>',2599 origin: 'OpalRuntimeOriginCaller'2610 origin: 'OpalRuntimeOriginCaller'2600 },2611 },2601 /**2612 /**2602 * Lookup345: opal_runtime::OriginCaller2613 * Lookup348: opal_runtime::OriginCaller2603 **/2614 **/2604 OpalRuntimeOriginCaller: {2615 OpalRuntimeOriginCaller: {2605 _enum: {2616 _enum: {2606 __Unused0: 'Null',2617 __Unused0: 'Null',2707 Ethereum: 'PalletEthereumRawOrigin'2718 Ethereum: 'PalletEthereumRawOrigin'2708 }2719 }2709 },2720 },2710 /**2721 /**2711 * Lookup346: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>2722 * Lookup349: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>2712 **/2723 **/2713 FrameSupportDispatchRawOrigin: {2724 FrameSupportDispatchRawOrigin: {2714 _enum: {2725 _enum: {2715 Root: 'Null',2726 Root: 'Null',2716 Signed: 'AccountId32',2727 Signed: 'AccountId32',2717 None: 'Null'2728 None: 'Null'2718 }2729 }2719 },2730 },2720 /**2731 /**2721 * Lookup347: pallet_xcm::pallet::Origin2732 * Lookup350: pallet_xcm::pallet::Origin2722 **/2733 **/2723 PalletXcmOrigin: {2734 PalletXcmOrigin: {2724 _enum: {2735 _enum: {2725 Xcm: 'XcmV1MultiLocation',2736 Xcm: 'XcmV1MultiLocation',2726 Response: 'XcmV1MultiLocation'2737 Response: 'XcmV1MultiLocation'2727 }2738 }2728 },2739 },2729 /**2740 /**2730 * Lookup348: cumulus_pallet_xcm::pallet::Origin2741 * Lookup351: cumulus_pallet_xcm::pallet::Origin2731 **/2742 **/2732 CumulusPalletXcmOrigin: {2743 CumulusPalletXcmOrigin: {2733 _enum: {2744 _enum: {2734 Relay: 'Null',2745 Relay: 'Null',2735 SiblingParachain: 'u32'2746 SiblingParachain: 'u32'2736 }2747 }2737 },2748 },2738 /**2749 /**2739 * Lookup349: pallet_ethereum::RawOrigin2750 * Lookup352: pallet_ethereum::RawOrigin2740 **/2751 **/2741 PalletEthereumRawOrigin: {2752 PalletEthereumRawOrigin: {2742 _enum: {2753 _enum: {2743 EthereumTransaction: 'H160'2754 EthereumTransaction: 'H160'2744 }2755 }2745 },2756 },2746 /**2757 /**2747 * Lookup350: sp_core::Void2758 * Lookup353: sp_core::Void2748 **/2759 **/2749 SpCoreVoid: 'Null',2760 SpCoreVoid: 'Null',2750 /**2761 /**2751 * Lookup351: pallet_unq_scheduler::pallet::Error<T>2762 * Lookup354: pallet_unique_scheduler::pallet::Error<T>2752 **/2763 **/2753 PalletUnqSchedulerError: {2764 PalletUniqueSchedulerError: {2754 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']2765 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']2755 },2766 },2756 /**2767 /**2757 * Lookup352: up_data_structs::Collection<sp_core::crypto::AccountId32>2768 * Lookup355: up_data_structs::Collection<sp_core::crypto::AccountId32>2758 **/2769 **/2759 UpDataStructsCollection: {2770 UpDataStructsCollection: {2760 owner: 'AccountId32',2771 owner: 'AccountId32',2761 mode: 'UpDataStructsCollectionMode',2772 mode: 'UpDataStructsCollectionMode',2767 permissions: 'UpDataStructsCollectionPermissions',2778 permissions: 'UpDataStructsCollectionPermissions',2768 externalCollection: 'bool'2779 externalCollection: 'bool'2769 },2780 },2770 /**2781 /**2771 * Lookup353: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2782 * Lookup356: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2772 **/2783 **/2773 UpDataStructsSponsorshipState: {2784 UpDataStructsSponsorshipState: {2774 _enum: {2785 _enum: {2775 Disabled: 'Null',2786 Disabled: 'Null',2776 Unconfirmed: 'AccountId32',2787 Unconfirmed: 'AccountId32',2777 Confirmed: 'AccountId32'2788 Confirmed: 'AccountId32'2778 }2789 }2779 },2790 },2780 /**2791 /**2781 * Lookup354: up_data_structs::Properties2792 * Lookup357: up_data_structs::Properties2782 **/2793 **/2783 UpDataStructsProperties: {2794 UpDataStructsProperties: {2784 map: 'UpDataStructsPropertiesMapBoundedVec',2795 map: 'UpDataStructsPropertiesMapBoundedVec',2785 consumedSpace: 'u32',2796 consumedSpace: 'u32',2786 spaceLimit: 'u32'2797 spaceLimit: 'u32'2787 },2798 },2788 /**2799 /**2789 * Lookup355: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>2800 * Lookup358: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>2790 **/2801 **/2791 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2802 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2792 /**2803 /**2793 * Lookup360: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2804 * Lookup363: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2794 **/2805 **/2795 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2806 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2796 /**2807 /**2797 * Lookup367: up_data_structs::CollectionStats2808 * Lookup370: up_data_structs::CollectionStats2798 **/2809 **/2799 UpDataStructsCollectionStats: {2810 UpDataStructsCollectionStats: {2800 created: 'u32',2811 created: 'u32',2801 destroyed: 'u32',2812 destroyed: 'u32',2802 alive: 'u32'2813 alive: 'u32'2803 },2814 },2804 /**2815 /**2805 * Lookup368: up_data_structs::TokenChild2816 * Lookup371: up_data_structs::TokenChild2806 **/2817 **/2807 UpDataStructsTokenChild: {2818 UpDataStructsTokenChild: {2808 token: 'u32',2819 token: 'u32',2809 collection: 'u32'2820 collection: 'u32'2810 },2821 },2811 /**2822 /**2812 * Lookup369: PhantomType::up_data_structs<T>2823 * Lookup372: PhantomType::up_data_structs<T>2813 **/2824 **/2814 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',2825 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',2815 /**2826 /**2816 * Lookup371: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2827 * Lookup374: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2817 **/2828 **/2818 UpDataStructsTokenData: {2829 UpDataStructsTokenData: {2819 properties: 'Vec<UpDataStructsProperty>',2830 properties: 'Vec<UpDataStructsProperty>',2820 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'2831 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'2821 },2832 },2822 /**2833 /**2823 * Lookup373: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2834 * Lookup376: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2824 **/2835 **/2825 UpDataStructsRpcCollection: {2836 UpDataStructsRpcCollection: {2826 owner: 'AccountId32',2837 owner: 'AccountId32',2827 mode: 'UpDataStructsCollectionMode',2838 mode: 'UpDataStructsCollectionMode',2835 properties: 'Vec<UpDataStructsProperty>',2846 properties: 'Vec<UpDataStructsProperty>',2836 readOnly: 'bool'2847 readOnly: 'bool'2837 },2848 },2838 /**2849 /**2839 * Lookup374: rmrk_traits::collection::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>2850 * Lookup377: rmrk_traits::collection::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>2840 **/2851 **/2841 RmrkTraitsCollectionCollectionInfo: {2852 RmrkTraitsCollectionCollectionInfo: {2842 issuer: 'AccountId32',2853 issuer: 'AccountId32',2843 metadata: 'Bytes',2854 metadata: 'Bytes',2844 max: 'Option<u32>',2855 max: 'Option<u32>',2845 symbol: 'Bytes',2856 symbol: 'Bytes',2846 nftsCount: 'u32'2857 nftsCount: 'u32'2847 },2858 },2848 /**2859 /**2849 * Lookup375: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>2860 * Lookup378: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>2850 **/2861 **/2851 RmrkTraitsNftNftInfo: {2862 RmrkTraitsNftNftInfo: {2852 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2863 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2853 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',2864 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',2854 metadata: 'Bytes',2865 metadata: 'Bytes',2855 equipped: 'bool',2866 equipped: 'bool',2856 pending: 'bool'2867 pending: 'bool'2857 },2868 },2858 /**2869 /**2859 * Lookup377: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>2870 * Lookup380: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>2860 **/2871 **/2861 RmrkTraitsNftRoyaltyInfo: {2872 RmrkTraitsNftRoyaltyInfo: {2862 recipient: 'AccountId32',2873 recipient: 'AccountId32',2863 amount: 'Permill'2874 amount: 'Permill'2864 },2875 },2865 /**2876 /**2866 * Lookup378: rmrk_traits::resource::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2877 * Lookup381: rmrk_traits::resource::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2867 **/2878 **/2868 RmrkTraitsResourceResourceInfo: {2879 RmrkTraitsResourceResourceInfo: {2869 id: 'u32',2880 id: 'u32',2870 resource: 'RmrkTraitsResourceResourceTypes',2881 resource: 'RmrkTraitsResourceResourceTypes',2871 pending: 'bool',2882 pending: 'bool',2872 pendingRemoval: 'bool'2883 pendingRemoval: 'bool'2873 },2884 },2874 /**2875 * Lookup379: rmrk_traits::resource::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2876 **/2877 RmrkTraitsResourceResourceTypes: {2878 _enum: {2879 Basic: 'RmrkTraitsResourceBasicResource',2880 Composable: 'RmrkTraitsResourceComposableResource',2881 Slot: 'RmrkTraitsResourceSlotResource'2882 }2883 },2884 /**2885 /**2885 * Lookup380: rmrk_traits::property::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2886 * Lookup382: rmrk_traits::property::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2886 **/2887 **/2887 RmrkTraitsPropertyPropertyInfo: {2888 RmrkTraitsPropertyPropertyInfo: {2888 key: 'Bytes',2889 key: 'Bytes',2889 value: 'Bytes'2890 value: 'Bytes'2890 },2891 },2891 /**2892 /**2892 * Lookup381: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>2893 * Lookup383: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>2893 **/2894 **/2894 RmrkTraitsBaseBaseInfo: {2895 RmrkTraitsBaseBaseInfo: {2895 issuer: 'AccountId32',2896 issuer: 'AccountId32',2896 baseType: 'Bytes',2897 baseType: 'Bytes',2897 symbol: 'Bytes'2898 symbol: 'Bytes'2898 },2899 },2899 /**2900 /**2900 * Lookup382: rmrk_traits::nft::NftChild2901 * Lookup384: rmrk_traits::nft::NftChild2901 **/2902 **/2902 RmrkTraitsNftNftChild: {2903 RmrkTraitsNftNftChild: {2903 collectionId: 'u32',2904 collectionId: 'u32',2904 nftId: 'u32'2905 nftId: 'u32'2905 },2906 },2906 /**2907 /**2907 * Lookup384: pallet_common::pallet::Error<T>2908 * Lookup386: pallet_common::pallet::Error<T>2908 **/2909 **/2909 PalletCommonError: {2910 PalletCommonError: {2910 _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal']2911 _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal']2911 },2912 },2912 /**2913 /**2913 * Lookup386: pallet_fungible::pallet::Error<T>2914 * Lookup388: pallet_fungible::pallet::Error<T>2914 **/2915 **/2915 PalletFungibleError: {2916 PalletFungibleError: {2916 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2917 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2917 },2918 },2918 /**2919 /**2919 * Lookup387: pallet_refungible::ItemData2920 * Lookup389: pallet_refungible::ItemData2920 **/2921 **/2921 PalletRefungibleItemData: {2922 PalletRefungibleItemData: {2922 constData: 'Bytes'2923 constData: 'Bytes'2923 },2924 },2924 /**2925 /**2925 * Lookup391: pallet_refungible::pallet::Error<T>2926 * Lookup393: pallet_refungible::pallet::Error<T>2926 **/2927 **/2927 PalletRefungibleError: {2928 PalletRefungibleError: {2928 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2929 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2929 },2930 },2930 /**2931 /**2931 * Lookup392: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2932 * Lookup394: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2932 **/2933 **/2933 PalletNonfungibleItemData: {2934 PalletNonfungibleItemData: {2934 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2935 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2935 },2936 },2936 /**2937 /**2937 * Lookup394: pallet_nonfungible::pallet::Error<T>2938 * Lookup396: pallet_nonfungible::pallet::Error<T>2938 **/2939 **/2939 PalletNonfungibleError: {2940 PalletNonfungibleError: {2940 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']2941 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']2941 },2942 },2942 /**2943 /**2943 * Lookup395: pallet_structure::pallet::Error<T>2944 * Lookup397: pallet_structure::pallet::Error<T>2944 **/2945 **/2945 PalletStructureError: {2946 PalletStructureError: {2946 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']2947 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']2947 },2948 },2948 /**2949 /**2949 * Lookup396: pallet_rmrk_core::pallet::Error<T>2950 * Lookup398: pallet_rmrk_core::pallet::Error<T>2950 **/2951 **/2951 PalletRmrkCoreError: {2952 PalletRmrkCoreError: {2952 _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending']2953 _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending']2953 },2954 },2954 /**2955 /**2955 * Lookup398: pallet_rmrk_equip::pallet::Error<T>2956 * Lookup400: pallet_rmrk_equip::pallet::Error<T>2956 **/2957 **/2957 PalletRmrkEquipError: {2958 PalletRmrkEquipError: {2958 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst']2959 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst']2959 },2960 },2960 /**2961 /**2961 * Lookup401: pallet_evm::pallet::Error<T>2962 * Lookup403: pallet_evm::pallet::Error<T>2962 **/2963 **/2963 PalletEvmError: {2964 PalletEvmError: {2964 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']2965 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']2965 },2966 },2966 /**2967 /**2967 * Lookup404: fp_rpc::TransactionStatus2968 * Lookup406: fp_rpc::TransactionStatus2968 **/2969 **/2969 FpRpcTransactionStatus: {2970 FpRpcTransactionStatus: {2970 transactionHash: 'H256',2971 transactionHash: 'H256',2971 transactionIndex: 'u32',2972 transactionIndex: 'u32',2975 logs: 'Vec<EthereumLog>',2976 logs: 'Vec<EthereumLog>',2976 logsBloom: 'EthbloomBloom'2977 logsBloom: 'EthbloomBloom'2977 },2978 },2978 /**2979 /**2979 * Lookup406: ethbloom::Bloom2980 * Lookup408: ethbloom::Bloom2980 **/2981 **/2981 EthbloomBloom: '[u8;256]',2982 EthbloomBloom: '[u8;256]',2982 /**2983 /**2983 * Lookup408: ethereum::receipt::ReceiptV32984 * Lookup410: ethereum::receipt::ReceiptV32984 **/2985 **/2985 EthereumReceiptReceiptV3: {2986 EthereumReceiptReceiptV3: {2986 _enum: {2987 _enum: {2987 Legacy: 'EthereumReceiptEip658ReceiptData',2988 Legacy: 'EthereumReceiptEip658ReceiptData',2988 EIP2930: 'EthereumReceiptEip658ReceiptData',2989 EIP2930: 'EthereumReceiptEip658ReceiptData',2989 EIP1559: 'EthereumReceiptEip658ReceiptData'2990 EIP1559: 'EthereumReceiptEip658ReceiptData'2990 }2991 }2991 },2992 },2992 /**2993 /**2993 * Lookup409: ethereum::receipt::EIP658ReceiptData2994 * Lookup411: ethereum::receipt::EIP658ReceiptData2994 **/2995 **/2995 EthereumReceiptEip658ReceiptData: {2996 EthereumReceiptEip658ReceiptData: {2996 statusCode: 'u8',2997 statusCode: 'u8',2997 usedGas: 'U256',2998 usedGas: 'U256',2998 logsBloom: 'EthbloomBloom',2999 logsBloom: 'EthbloomBloom',2999 logs: 'Vec<EthereumLog>'3000 logs: 'Vec<EthereumLog>'3000 },3001 },3001 /**3002 /**3002 * Lookup410: ethereum::block::Block<ethereum::transaction::TransactionV2>3003 * Lookup412: ethereum::block::Block<ethereum::transaction::TransactionV2>3003 **/3004 **/3004 EthereumBlock: {3005 EthereumBlock: {3005 header: 'EthereumHeader',3006 header: 'EthereumHeader',3006 transactions: 'Vec<EthereumTransactionTransactionV2>',3007 transactions: 'Vec<EthereumTransactionTransactionV2>',3007 ommers: 'Vec<EthereumHeader>'3008 ommers: 'Vec<EthereumHeader>'3008 },3009 },3009 /**3010 /**3010 * Lookup411: ethereum::header::Header3011 * Lookup413: ethereum::header::Header3011 **/3012 **/3012 EthereumHeader: {3013 EthereumHeader: {3013 parentHash: 'H256',3014 parentHash: 'H256',3014 ommersHash: 'H256',3015 ommersHash: 'H256',3026 mixHash: 'H256',3027 mixHash: 'H256',3027 nonce: 'EthereumTypesHashH64'3028 nonce: 'EthereumTypesHashH64'3028 },3029 },3029 /**3030 /**3030 * Lookup412: ethereum_types::hash::H643031 * Lookup414: ethereum_types::hash::H643031 **/3032 **/3032 EthereumTypesHashH64: '[u8;8]',3033 EthereumTypesHashH64: '[u8;8]',3033 /**3034 /**3034 * Lookup417: pallet_ethereum::pallet::Error<T>3035 * Lookup419: pallet_ethereum::pallet::Error<T>3035 **/3036 **/3036 PalletEthereumError: {3037 PalletEthereumError: {3037 _enum: ['InvalidSignature', 'PreLogExists']3038 _enum: ['InvalidSignature', 'PreLogExists']3038 },3039 },3039 /**3040 /**3040 * Lookup418: pallet_evm_coder_substrate::pallet::Error<T>3041 * Lookup420: pallet_evm_coder_substrate::pallet::Error<T>3041 **/3042 **/3042 PalletEvmCoderSubstrateError: {3043 PalletEvmCoderSubstrateError: {3043 _enum: ['OutOfGas', 'OutOfFund']3044 _enum: ['OutOfGas', 'OutOfFund']3044 },3045 },3045 /**3046 /**3046 * Lookup419: pallet_evm_contract_helpers::SponsoringModeT3047 * Lookup421: pallet_evm_contract_helpers::SponsoringModeT3047 **/3048 **/3048 PalletEvmContractHelpersSponsoringModeT: {3049 PalletEvmContractHelpersSponsoringModeT: {3049 _enum: ['Disabled', 'Allowlisted', 'Generous']3050 _enum: ['Disabled', 'Allowlisted', 'Generous']3050 },3051 },3051 /**3052 /**3052 * Lookup421: pallet_evm_contract_helpers::pallet::Error<T>3053 * Lookup423: pallet_evm_contract_helpers::pallet::Error<T>3053 **/3054 **/3054 PalletEvmContractHelpersError: {3055 PalletEvmContractHelpersError: {3055 _enum: ['NoPermission']3056 _enum: ['NoPermission']3056 },3057 },3057 /**3058 /**3058 * Lookup422: pallet_evm_migration::pallet::Error<T>3059 * Lookup424: pallet_evm_migration::pallet::Error<T>3059 **/3060 **/3060 PalletEvmMigrationError: {3061 PalletEvmMigrationError: {3061 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']3062 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']3062 },3063 },3063 /**3064 /**3064 * Lookup424: sp_runtime::MultiSignature3065 * Lookup426: sp_runtime::MultiSignature3065 **/3066 **/3066 SpRuntimeMultiSignature: {3067 SpRuntimeMultiSignature: {3067 _enum: {3068 _enum: {3068 Ed25519: 'SpCoreEd25519Signature',3069 Ed25519: 'SpCoreEd25519Signature',3069 Sr25519: 'SpCoreSr25519Signature',3070 Sr25519: 'SpCoreSr25519Signature',3070 Ecdsa: 'SpCoreEcdsaSignature'3071 Ecdsa: 'SpCoreEcdsaSignature'3071 }3072 }3072 },3073 },3073 /**3074 /**3074 * Lookup425: sp_core::ed25519::Signature3075 * Lookup427: sp_core::ed25519::Signature3075 **/3076 **/3076 SpCoreEd25519Signature: '[u8;64]',3077 SpCoreEd25519Signature: '[u8;64]',3077 /**3078 /**3078 * Lookup427: sp_core::sr25519::Signature3079 * Lookup429: sp_core::sr25519::Signature3079 **/3080 **/3080 SpCoreSr25519Signature: '[u8;64]',3081 SpCoreSr25519Signature: '[u8;64]',3081 /**3082 /**3082 * Lookup428: sp_core::ecdsa::Signature3083 * Lookup430: sp_core::ecdsa::Signature3083 **/3084 **/3084 SpCoreEcdsaSignature: '[u8;65]',3085 SpCoreEcdsaSignature: '[u8;65]',3085 /**3086 /**3086 * Lookup431: frame_system::extensions::check_spec_version::CheckSpecVersion<T>3087 * Lookup433: frame_system::extensions::check_spec_version::CheckSpecVersion<T>3087 **/3088 **/3088 FrameSystemExtensionsCheckSpecVersion: 'Null',3089 FrameSystemExtensionsCheckSpecVersion: 'Null',3089 /**3090 /**3090 * Lookup432: frame_system::extensions::check_genesis::CheckGenesis<T>3091 * Lookup434: frame_system::extensions::check_genesis::CheckGenesis<T>3091 **/3092 **/3092 FrameSystemExtensionsCheckGenesis: 'Null',3093 FrameSystemExtensionsCheckGenesis: 'Null',3093 /**3094 /**3094 * Lookup435: frame_system::extensions::check_nonce::CheckNonce<T>3095 * Lookup437: frame_system::extensions::check_nonce::CheckNonce<T>3095 **/3096 **/3096 FrameSystemExtensionsCheckNonce: 'Compact<u32>',3097 FrameSystemExtensionsCheckNonce: 'Compact<u32>',3097 /**3098 /**3098 * Lookup436: frame_system::extensions::check_weight::CheckWeight<T>3099 * Lookup438: frame_system::extensions::check_weight::CheckWeight<T>3099 **/3100 **/3100 FrameSystemExtensionsCheckWeight: 'Null',3101 FrameSystemExtensionsCheckWeight: 'Null',3101 /**3102 /**3102 * Lookup437: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>3103 * Lookup439: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>3103 **/3104 **/3104 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',3105 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',3105 /**3106 /**3106 * Lookup438: opal_runtime::Runtime3107 * Lookup440: opal_runtime::Runtime3107 **/3108 **/3108 OpalRuntimeRuntime: 'Null',3109 OpalRuntimeRuntime: 'Null',3109 /**3110 /**3110 * Lookup439: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>3111 * Lookup441: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>3111 **/3112 **/3112 PalletEthereumFakeTransactionFinalizer: 'Null'3113 PalletEthereumFakeTransactionFinalizer: 'Null'3113};3114};31143115tests/src/interfaces/registry.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */2/* eslint-disable */334import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';4import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';556declare module '@polkadot/types/types/registry' {6declare module '@polkadot/types/types/registry' {7 export interface InterfaceTypes {7 export interface InterfaceTypes {133 PalletUniqueCall: PalletUniqueCall;133 PalletUniqueCall: PalletUniqueCall;134 PalletUniqueError: PalletUniqueError;134 PalletUniqueError: PalletUniqueError;135 PalletUniqueRawEvent: PalletUniqueRawEvent;135 PalletUniqueRawEvent: PalletUniqueRawEvent;136 PalletUnqSchedulerCall: PalletUnqSchedulerCall;136 PalletUniqueSchedulerCall: PalletUniqueSchedulerCall;137 PalletUnqSchedulerError: PalletUnqSchedulerError;137 PalletUniqueSchedulerError: PalletUniqueSchedulerError;138 PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;138 PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent;139 PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;139 PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3;140 PalletXcmCall: PalletXcmCall;140 PalletXcmCall: PalletXcmCall;141 PalletXcmError: PalletXcmError;141 PalletXcmError: PalletXcmError;142 PalletXcmEvent: PalletXcmEvent;142 PalletXcmEvent: PalletXcmEvent;tests/src/interfaces/types-lookup.tsdiffbeforeafterboth1438 readonly tokenId: u32;1438 readonly tokenId: u32;1439 readonly propertyKeys: Vec<Bytes>;1439 readonly propertyKeys: Vec<Bytes>;1440 } & Struct;1440 } & Struct;1441 readonly isSetPropertyPermissions: boolean;1441 readonly isSetTokenPropertyPermissions: boolean;1442 readonly asSetPropertyPermissions: {1442 readonly asSetTokenPropertyPermissions: {1443 readonly collectionId: u32;1443 readonly collectionId: u32;1444 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1444 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1445 } & Struct;1445 } & Struct;1498 readonly collectionId: u32;1498 readonly collectionId: u32;1499 readonly newLimit: UpDataStructsCollectionPermissions;1499 readonly newLimit: UpDataStructsCollectionPermissions;1500 } & Struct;1500 } & Struct;1501 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';1501 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';1502 }1502 }150315031504 /** @name UpDataStructsCollectionMode (156) */1504 /** @name UpDataStructsCollectionMode (156) */1562 /** @name UpDataStructsNestingPermissions (169) */1562 /** @name UpDataStructsNestingPermissions (169) */1563 export interface UpDataStructsNestingPermissions extends Struct {1563 export interface UpDataStructsNestingPermissions extends Struct {1564 readonly tokenOwner: bool;1564 readonly tokenOwner: bool;1565 readonly admin: bool;1565 readonly collectionAdmin: bool;1566 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;1566 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;1567 readonly permissive: bool;1567 readonly permissive: bool;1568 }1568 }1650 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1650 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1651 }1651 }165216521653 /** @name PalletUnqSchedulerCall (206) */1653 /** @name PalletUniqueSchedulerCall (206) */1654 export interface PalletUnqSchedulerCall extends Enum {1654 export interface PalletUniqueSchedulerCall extends Enum {1655 readonly isScheduleNamed: boolean;1655 readonly isScheduleNamed: boolean;1656 readonly asScheduleNamed: {1656 readonly asScheduleNamed: {1657 readonly id: U8aFixed;1657 readonly id: U8aFixed;1719 readonly royaltyAmount: Option<Permill>;1719 readonly royaltyAmount: Option<Permill>;1720 readonly metadata: Bytes;1720 readonly metadata: Bytes;1721 readonly transferable: bool;1721 readonly transferable: bool;1722 readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;1722 } & Struct;1723 } & Struct;1723 readonly isBurnNft: boolean;1724 readonly isBurnNft: boolean;1724 readonly asBurnNft: {1725 readonly asBurnNft: {1725 readonly collectionId: u32;1726 readonly collectionId: u32;1726 readonly nftId: u32;1727 readonly nftId: u32;1728 readonly maxBurns: u32;1727 } & Struct;1729 } & Struct;1728 readonly isSend: boolean;1730 readonly isSend: boolean;1729 readonly asSend: {1731 readonly asSend: {1777 readonly asAddComposableResource: {1779 readonly asAddComposableResource: {1778 readonly rmrkCollectionId: u32;1780 readonly rmrkCollectionId: u32;1779 readonly nftId: u32;1781 readonly nftId: u32;1780 readonly resourceId: Bytes;1781 readonly resource: RmrkTraitsResourceComposableResource;1782 readonly resource: RmrkTraitsResourceComposableResource;1782 } & Struct;1783 } & Struct;1783 readonly isAddSlotResource: boolean;1784 readonly isAddSlotResource: boolean;1795 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1796 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1796 }1797 }179717981798 /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (215) */1799 /** @name RmrkTraitsResourceResourceTypes (217) */1799 export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {1800 export interface RmrkTraitsResourceResourceTypes extends Enum {1800 readonly isAccountId: boolean;1801 readonly isBasic: boolean;1801 readonly asAccountId: AccountId32;1802 readonly asBasic: RmrkTraitsResourceBasicResource;1802 readonly isCollectionAndNftTuple: boolean;1803 readonly isComposable: boolean;1803 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;1804 readonly asComposable: RmrkTraitsResourceComposableResource;1805 readonly isSlot: boolean;1806 readonly asSlot: RmrkTraitsResourceSlotResource;1804 readonly type: 'AccountId' | 'CollectionAndNftTuple';1807 readonly type: 'Basic' | 'Composable' | 'Slot';1805 }1808 }180618091807 /** @name RmrkTraitsResourceBasicResource (219) */1810 /** @name RmrkTraitsResourceBasicResource (219) */1812 readonly thumb: Option<Bytes>;1815 readonly thumb: Option<Bytes>;1813 }1816 }181418171815 /** @name RmrkTraitsResourceComposableResource (222) */1818 /** @name RmrkTraitsResourceComposableResource (221) */1816 export interface RmrkTraitsResourceComposableResource extends Struct {1819 export interface RmrkTraitsResourceComposableResource extends Struct {1817 readonly parts: Vec<u32>;1820 readonly parts: Vec<u32>;1818 readonly base: u32;1821 readonly base: u32;1822 readonly thumb: Option<Bytes>;1825 readonly thumb: Option<Bytes>;1823 }1826 }182418271825 /** @name RmrkTraitsResourceSlotResource (224) */1828 /** @name RmrkTraitsResourceSlotResource (222) */1826 export interface RmrkTraitsResourceSlotResource extends Struct {1829 export interface RmrkTraitsResourceSlotResource extends Struct {1827 readonly base: u32;1830 readonly base: u32;1828 readonly src: Option<Bytes>;1831 readonly src: Option<Bytes>;1832 readonly thumb: Option<Bytes>;1835 readonly thumb: Option<Bytes>;1833 }1836 }18371838 /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (224) */1839 export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {1840 readonly isAccountId: boolean;1841 readonly asAccountId: AccountId32;1842 readonly isCollectionAndNftTuple: boolean;1843 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;1844 readonly type: 'AccountId' | 'CollectionAndNftTuple';1845 }183418461835 /** @name PalletRmrkEquipCall (225) */1847 /** @name PalletRmrkEquipCall (228) */1836 export interface PalletRmrkEquipCall extends Enum {1848 export interface PalletRmrkEquipCall extends Enum {1837 readonly isCreateBase: boolean;1849 readonly isCreateBase: boolean;1838 readonly asCreateBase: {1850 readonly asCreateBase: {1848 readonly type: 'CreateBase' | 'ThemeAdd';1860 readonly type: 'CreateBase' | 'ThemeAdd';1849 }1861 }185018621851 /** @name RmrkTraitsPartPartType (227) */1863 /** @name RmrkTraitsPartPartType (230) */1852 export interface RmrkTraitsPartPartType extends Enum {1864 export interface RmrkTraitsPartPartType extends Enum {1853 readonly isFixedPart: boolean;1865 readonly isFixedPart: boolean;1854 readonly asFixedPart: RmrkTraitsPartFixedPart;1866 readonly asFixedPart: RmrkTraitsPartFixedPart;1857 readonly type: 'FixedPart' | 'SlotPart';1869 readonly type: 'FixedPart' | 'SlotPart';1858 }1870 }185918711860 /** @name RmrkTraitsPartFixedPart (229) */1872 /** @name RmrkTraitsPartFixedPart (232) */1861 export interface RmrkTraitsPartFixedPart extends Struct {1873 export interface RmrkTraitsPartFixedPart extends Struct {1862 readonly id: u32;1874 readonly id: u32;1863 readonly z: u32;1875 readonly z: u32;1864 readonly src: Bytes;1876 readonly src: Bytes;1865 }1877 }186618781867 /** @name RmrkTraitsPartSlotPart (230) */1879 /** @name RmrkTraitsPartSlotPart (233) */1868 export interface RmrkTraitsPartSlotPart extends Struct {1880 export interface RmrkTraitsPartSlotPart extends Struct {1869 readonly id: u32;1881 readonly id: u32;1870 readonly equippable: RmrkTraitsPartEquippableList;1882 readonly equippable: RmrkTraitsPartEquippableList;1871 readonly src: Bytes;1883 readonly src: Bytes;1872 readonly z: u32;1884 readonly z: u32;1873 }1885 }187418861875 /** @name RmrkTraitsPartEquippableList (231) */1887 /** @name RmrkTraitsPartEquippableList (234) */1876 export interface RmrkTraitsPartEquippableList extends Enum {1888 export interface RmrkTraitsPartEquippableList extends Enum {1877 readonly isAll: boolean;1889 readonly isAll: boolean;1878 readonly isEmpty: boolean;1890 readonly isEmpty: boolean;1881 readonly type: 'All' | 'Empty' | 'Custom';1893 readonly type: 'All' | 'Empty' | 'Custom';1882 }1894 }188318951884 /** @name RmrkTraitsTheme (233) */1896 /** @name RmrkTraitsTheme (236) */1885 export interface RmrkTraitsTheme extends Struct {1897 export interface RmrkTraitsTheme extends Struct {1886 readonly name: Bytes;1898 readonly name: Bytes;1887 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;1899 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;1888 readonly inherit: bool;1900 readonly inherit: bool;1889 }1901 }189019021891 /** @name RmrkTraitsThemeThemeProperty (235) */1903 /** @name RmrkTraitsThemeThemeProperty (238) */1892 export interface RmrkTraitsThemeThemeProperty extends Struct {1904 export interface RmrkTraitsThemeThemeProperty extends Struct {1893 readonly key: Bytes;1905 readonly key: Bytes;1894 readonly value: Bytes;1906 readonly value: Bytes;1895 }1907 }189619081897 /** @name PalletEvmCall (236) */1909 /** @name PalletEvmCall (239) */1898 export interface PalletEvmCall extends Enum {1910 export interface PalletEvmCall extends Enum {1899 readonly isWithdraw: boolean;1911 readonly isWithdraw: boolean;1900 readonly asWithdraw: {1912 readonly asWithdraw: {1939 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1951 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1940 }1952 }194119531942 /** @name PalletEthereumCall (242) */1954 /** @name PalletEthereumCall (245) */1943 export interface PalletEthereumCall extends Enum {1955 export interface PalletEthereumCall extends Enum {1944 readonly isTransact: boolean;1956 readonly isTransact: boolean;1945 readonly asTransact: {1957 readonly asTransact: {1948 readonly type: 'Transact';1960 readonly type: 'Transact';1949 }1961 }195019621951 /** @name EthereumTransactionTransactionV2 (243) */1963 /** @name EthereumTransactionTransactionV2 (246) */1952 export interface EthereumTransactionTransactionV2 extends Enum {1964 export interface EthereumTransactionTransactionV2 extends Enum {1953 readonly isLegacy: boolean;1965 readonly isLegacy: boolean;1954 readonly asLegacy: EthereumTransactionLegacyTransaction;1966 readonly asLegacy: EthereumTransactionLegacyTransaction;1959 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';1971 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';1960 }1972 }196119731962 /** @name EthereumTransactionLegacyTransaction (244) */1974 /** @name EthereumTransactionLegacyTransaction (247) */1963 export interface EthereumTransactionLegacyTransaction extends Struct {1975 export interface EthereumTransactionLegacyTransaction extends Struct {1964 readonly nonce: U256;1976 readonly nonce: U256;1965 readonly gasPrice: U256;1977 readonly gasPrice: U256;1970 readonly signature: EthereumTransactionTransactionSignature;1982 readonly signature: EthereumTransactionTransactionSignature;1971 }1983 }197219841973 /** @name EthereumTransactionTransactionAction (245) */1985 /** @name EthereumTransactionTransactionAction (248) */1974 export interface EthereumTransactionTransactionAction extends Enum {1986 export interface EthereumTransactionTransactionAction extends Enum {1975 readonly isCall: boolean;1987 readonly isCall: boolean;1976 readonly asCall: H160;1988 readonly asCall: H160;1977 readonly isCreate: boolean;1989 readonly isCreate: boolean;1978 readonly type: 'Call' | 'Create';1990 readonly type: 'Call' | 'Create';1979 }1991 }198019921981 /** @name EthereumTransactionTransactionSignature (246) */1993 /** @name EthereumTransactionTransactionSignature (249) */1982 export interface EthereumTransactionTransactionSignature extends Struct {1994 export interface EthereumTransactionTransactionSignature extends Struct {1983 readonly v: u64;1995 readonly v: u64;1984 readonly r: H256;1996 readonly r: H256;1985 readonly s: H256;1997 readonly s: H256;1986 }1998 }198719991988 /** @name EthereumTransactionEip2930Transaction (248) */2000 /** @name EthereumTransactionEip2930Transaction (251) */1989 export interface EthereumTransactionEip2930Transaction extends Struct {2001 export interface EthereumTransactionEip2930Transaction extends Struct {1990 readonly chainId: u64;2002 readonly chainId: u64;1991 readonly nonce: U256;2003 readonly nonce: U256;2000 readonly s: H256;2012 readonly s: H256;2001 }2013 }200220142003 /** @name EthereumTransactionAccessListItem (250) */2015 /** @name EthereumTransactionAccessListItem (253) */2004 export interface EthereumTransactionAccessListItem extends Struct {2016 export interface EthereumTransactionAccessListItem extends Struct {2005 readonly address: H160;2017 readonly address: H160;2006 readonly storageKeys: Vec<H256>;2018 readonly storageKeys: Vec<H256>;2007 }2019 }200820202009 /** @name EthereumTransactionEip1559Transaction (251) */2021 /** @name EthereumTransactionEip1559Transaction (254) */2010 export interface EthereumTransactionEip1559Transaction extends Struct {2022 export interface EthereumTransactionEip1559Transaction extends Struct {2011 readonly chainId: u64;2023 readonly chainId: u64;2012 readonly nonce: U256;2024 readonly nonce: U256;2022 readonly s: H256;2034 readonly s: H256;2023 }2035 }202420362025 /** @name PalletEvmMigrationCall (252) */2037 /** @name PalletEvmMigrationCall (255) */2026 export interface PalletEvmMigrationCall extends Enum {2038 export interface PalletEvmMigrationCall extends Enum {2027 readonly isBegin: boolean;2039 readonly isBegin: boolean;2028 readonly asBegin: {2040 readonly asBegin: {2041 readonly type: 'Begin' | 'SetData' | 'Finish';2053 readonly type: 'Begin' | 'SetData' | 'Finish';2042 }2054 }204320552044 /** @name PalletSudoEvent (255) */2056 /** @name PalletSudoEvent (258) */2045 export interface PalletSudoEvent extends Enum {2057 export interface PalletSudoEvent extends Enum {2046 readonly isSudid: boolean;2058 readonly isSudid: boolean;2047 readonly asSudid: {2059 readonly asSudid: {2058 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';2070 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';2059 }2071 }206020722061 /** @name SpRuntimeDispatchError (257) */2073 /** @name SpRuntimeDispatchError (260) */2062 export interface SpRuntimeDispatchError extends Enum {2074 export interface SpRuntimeDispatchError extends Enum {2063 readonly isOther: boolean;2075 readonly isOther: boolean;2064 readonly isCannotLookup: boolean;2076 readonly isCannotLookup: boolean;2077 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2089 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2078 }2090 }207920912080 /** @name SpRuntimeModuleError (258) */2092 /** @name SpRuntimeModuleError (261) */2081 export interface SpRuntimeModuleError extends Struct {2093 export interface SpRuntimeModuleError extends Struct {2082 readonly index: u8;2094 readonly index: u8;2083 readonly error: U8aFixed;2095 readonly error: U8aFixed;2084 }2096 }208520972086 /** @name SpRuntimeTokenError (259) */2098 /** @name SpRuntimeTokenError (262) */2087 export interface SpRuntimeTokenError extends Enum {2099 export interface SpRuntimeTokenError extends Enum {2088 readonly isNoFunds: boolean;2100 readonly isNoFunds: boolean;2089 readonly isWouldDie: boolean;2101 readonly isWouldDie: boolean;2095 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2107 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2096 }2108 }209721092098 /** @name SpRuntimeArithmeticError (260) */2110 /** @name SpRuntimeArithmeticError (263) */2099 export interface SpRuntimeArithmeticError extends Enum {2111 export interface SpRuntimeArithmeticError extends Enum {2100 readonly isUnderflow: boolean;2112 readonly isUnderflow: boolean;2101 readonly isOverflow: boolean;2113 readonly isOverflow: boolean;2102 readonly isDivisionByZero: boolean;2114 readonly isDivisionByZero: boolean;2103 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2115 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2104 }2116 }210521172106 /** @name SpRuntimeTransactionalError (261) */2118 /** @name SpRuntimeTransactionalError (264) */2107 export interface SpRuntimeTransactionalError extends Enum {2119 export interface SpRuntimeTransactionalError extends Enum {2108 readonly isLimitReached: boolean;2120 readonly isLimitReached: boolean;2109 readonly isNoLayer: boolean;2121 readonly isNoLayer: boolean;2110 readonly type: 'LimitReached' | 'NoLayer';2122 readonly type: 'LimitReached' | 'NoLayer';2111 }2123 }211221242113 /** @name PalletSudoError (262) */2125 /** @name PalletSudoError (265) */2114 export interface PalletSudoError extends Enum {2126 export interface PalletSudoError extends Enum {2115 readonly isRequireSudo: boolean;2127 readonly isRequireSudo: boolean;2116 readonly type: 'RequireSudo';2128 readonly type: 'RequireSudo';2117 }2129 }211821302119 /** @name FrameSystemAccountInfo (263) */2131 /** @name FrameSystemAccountInfo (266) */2120 export interface FrameSystemAccountInfo extends Struct {2132 export interface FrameSystemAccountInfo extends Struct {2121 readonly nonce: u32;2133 readonly nonce: u32;2122 readonly consumers: u32;2134 readonly consumers: u32;2125 readonly data: PalletBalancesAccountData;2137 readonly data: PalletBalancesAccountData;2126 }2138 }212721392128 /** @name FrameSupportWeightsPerDispatchClassU64 (264) */2140 /** @name FrameSupportWeightsPerDispatchClassU64 (267) */2129 export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {2141 export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {2130 readonly normal: u64;2142 readonly normal: u64;2131 readonly operational: u64;2143 readonly operational: u64;2132 readonly mandatory: u64;2144 readonly mandatory: u64;2133 }2145 }213421462135 /** @name SpRuntimeDigest (265) */2147 /** @name SpRuntimeDigest (268) */2136 export interface SpRuntimeDigest extends Struct {2148 export interface SpRuntimeDigest extends Struct {2137 readonly logs: Vec<SpRuntimeDigestDigestItem>;2149 readonly logs: Vec<SpRuntimeDigestDigestItem>;2138 }2150 }213921512140 /** @name SpRuntimeDigestDigestItem (267) */2152 /** @name SpRuntimeDigestDigestItem (270) */2141 export interface SpRuntimeDigestDigestItem extends Enum {2153 export interface SpRuntimeDigestDigestItem extends Enum {2142 readonly isOther: boolean;2154 readonly isOther: boolean;2143 readonly asOther: Bytes;2155 readonly asOther: Bytes;2151 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2163 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2152 }2164 }215321652154 /** @name FrameSystemEventRecord (269) */2166 /** @name FrameSystemEventRecord (272) */2155 export interface FrameSystemEventRecord extends Struct {2167 export interface FrameSystemEventRecord extends Struct {2156 readonly phase: FrameSystemPhase;2168 readonly phase: FrameSystemPhase;2157 readonly event: Event;2169 readonly event: Event;2158 readonly topics: Vec<H256>;2170 readonly topics: Vec<H256>;2159 }2171 }216021722161 /** @name FrameSystemEvent (271) */2173 /** @name FrameSystemEvent (274) */2162 export interface FrameSystemEvent extends Enum {2174 export interface FrameSystemEvent extends Enum {2163 readonly isExtrinsicSuccess: boolean;2175 readonly isExtrinsicSuccess: boolean;2164 readonly asExtrinsicSuccess: {2176 readonly asExtrinsicSuccess: {2186 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';2198 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';2187 }2199 }218822002189 /** @name FrameSupportWeightsDispatchInfo (272) */2201 /** @name FrameSupportWeightsDispatchInfo (275) */2190 export interface FrameSupportWeightsDispatchInfo extends Struct {2202 export interface FrameSupportWeightsDispatchInfo extends Struct {2191 readonly weight: u64;2203 readonly weight: u64;2192 readonly class: FrameSupportWeightsDispatchClass;2204 readonly class: FrameSupportWeightsDispatchClass;2193 readonly paysFee: FrameSupportWeightsPays;2205 readonly paysFee: FrameSupportWeightsPays;2194 }2206 }219522072196 /** @name FrameSupportWeightsDispatchClass (273) */2208 /** @name FrameSupportWeightsDispatchClass (276) */2197 export interface FrameSupportWeightsDispatchClass extends Enum {2209 export interface FrameSupportWeightsDispatchClass extends Enum {2198 readonly isNormal: boolean;2210 readonly isNormal: boolean;2199 readonly isOperational: boolean;2211 readonly isOperational: boolean;2200 readonly isMandatory: boolean;2212 readonly isMandatory: boolean;2201 readonly type: 'Normal' | 'Operational' | 'Mandatory';2213 readonly type: 'Normal' | 'Operational' | 'Mandatory';2202 }2214 }220322152204 /** @name FrameSupportWeightsPays (274) */2216 /** @name FrameSupportWeightsPays (277) */2205 export interface FrameSupportWeightsPays extends Enum {2217 export interface FrameSupportWeightsPays extends Enum {2206 readonly isYes: boolean;2218 readonly isYes: boolean;2207 readonly isNo: boolean;2219 readonly isNo: boolean;2208 readonly type: 'Yes' | 'No';2220 readonly type: 'Yes' | 'No';2209 }2221 }221022222211 /** @name OrmlVestingModuleEvent (275) */2223 /** @name OrmlVestingModuleEvent (278) */2212 export interface OrmlVestingModuleEvent extends Enum {2224 export interface OrmlVestingModuleEvent extends Enum {2213 readonly isVestingScheduleAdded: boolean;2225 readonly isVestingScheduleAdded: boolean;2214 readonly asVestingScheduleAdded: {2226 readonly asVestingScheduleAdded: {2228 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';2240 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';2229 }2241 }223022422231 /** @name CumulusPalletXcmpQueueEvent (276) */2243 /** @name CumulusPalletXcmpQueueEvent (279) */2232 export interface CumulusPalletXcmpQueueEvent extends Enum {2244 export interface CumulusPalletXcmpQueueEvent extends Enum {2233 readonly isSuccess: boolean;2245 readonly isSuccess: boolean;2234 readonly asSuccess: Option<H256>;2246 readonly asSuccess: Option<H256>;2249 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';2261 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';2250 }2262 }225122632252 /** @name PalletXcmEvent (277) */2264 /** @name PalletXcmEvent (280) */2253 export interface PalletXcmEvent extends Enum {2265 export interface PalletXcmEvent extends Enum {2254 readonly isAttempted: boolean;2266 readonly isAttempted: boolean;2255 readonly asAttempted: XcmV2TraitsOutcome;2267 readonly asAttempted: XcmV2TraitsOutcome;2286 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2298 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2287 }2299 }228823002289 /** @name XcmV2TraitsOutcome (278) */2301 /** @name XcmV2TraitsOutcome (281) */2290 export interface XcmV2TraitsOutcome extends Enum {2302 export interface XcmV2TraitsOutcome extends Enum {2291 readonly isComplete: boolean;2303 readonly isComplete: boolean;2292 readonly asComplete: u64;2304 readonly asComplete: u64;2297 readonly type: 'Complete' | 'Incomplete' | 'Error';2309 readonly type: 'Complete' | 'Incomplete' | 'Error';2298 }2310 }229923112300 /** @name CumulusPalletXcmEvent (280) */2312 /** @name CumulusPalletXcmEvent (283) */2301 export interface CumulusPalletXcmEvent extends Enum {2313 export interface CumulusPalletXcmEvent extends Enum {2302 readonly isInvalidFormat: boolean;2314 readonly isInvalidFormat: boolean;2303 readonly asInvalidFormat: U8aFixed;2315 readonly asInvalidFormat: U8aFixed;2308 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';2320 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';2309 }2321 }231023222311 /** @name CumulusPalletDmpQueueEvent (281) */2323 /** @name CumulusPalletDmpQueueEvent (284) */2312 export interface CumulusPalletDmpQueueEvent extends Enum {2324 export interface CumulusPalletDmpQueueEvent extends Enum {2313 readonly isInvalidFormat: boolean;2325 readonly isInvalidFormat: boolean;2314 readonly asInvalidFormat: U8aFixed;2326 readonly asInvalidFormat: U8aFixed;2325 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';2337 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';2326 }2338 }232723392328 /** @name PalletUniqueRawEvent (282) */2340 /** @name PalletUniqueRawEvent (285) */2329 export interface PalletUniqueRawEvent extends Enum {2341 export interface PalletUniqueRawEvent extends Enum {2330 readonly isCollectionSponsorRemoved: boolean;2342 readonly isCollectionSponsorRemoved: boolean;2331 readonly asCollectionSponsorRemoved: u32;2343 readonly asCollectionSponsorRemoved: u32;2350 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';2362 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';2351 }2363 }235223642353 /** @name PalletUnqSchedulerEvent (283) */2365 /** @name PalletUniqueSchedulerEvent (286) */2354 export interface PalletUnqSchedulerEvent extends Enum {2366 export interface PalletUniqueSchedulerEvent extends Enum {2355 readonly isScheduled: boolean;2367 readonly isScheduled: boolean;2356 readonly asScheduled: {2368 readonly asScheduled: {2357 readonly when: u32;2369 readonly when: u32;2377 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';2389 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';2378 }2390 }237923912380 /** @name FrameSupportScheduleLookupError (285) */2392 /** @name FrameSupportScheduleLookupError (288) */2381 export interface FrameSupportScheduleLookupError extends Enum {2393 export interface FrameSupportScheduleLookupError extends Enum {2382 readonly isUnknown: boolean;2394 readonly isUnknown: boolean;2383 readonly isBadFormat: boolean;2395 readonly isBadFormat: boolean;2384 readonly type: 'Unknown' | 'BadFormat';2396 readonly type: 'Unknown' | 'BadFormat';2385 }2397 }238623982387 /** @name PalletCommonEvent (286) */2399 /** @name PalletCommonEvent (289) */2388 export interface PalletCommonEvent extends Enum {2400 export interface PalletCommonEvent extends Enum {2389 readonly isCollectionCreated: boolean;2401 readonly isCollectionCreated: boolean;2390 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;2402 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;2411 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';2423 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';2412 }2424 }241324252414 /** @name PalletStructureEvent (287) */2426 /** @name PalletStructureEvent (290) */2415 export interface PalletStructureEvent extends Enum {2427 export interface PalletStructureEvent extends Enum {2416 readonly isExecuted: boolean;2428 readonly isExecuted: boolean;2417 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;2429 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;2418 readonly type: 'Executed';2430 readonly type: 'Executed';2419 }2431 }242024322421 /** @name PalletRmrkCoreEvent (288) */2433 /** @name PalletRmrkCoreEvent (291) */2422 export interface PalletRmrkCoreEvent extends Enum {2434 export interface PalletRmrkCoreEvent extends Enum {2423 readonly isCollectionCreated: boolean;2435 readonly isCollectionCreated: boolean;2424 readonly asCollectionCreated: {2436 readonly asCollectionCreated: {2508 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';2520 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';2509 }2521 }251025222511 /** @name PalletRmrkEquipEvent (289) */2523 /** @name PalletRmrkEquipEvent (292) */2512 export interface PalletRmrkEquipEvent extends Enum {2524 export interface PalletRmrkEquipEvent extends Enum {2513 readonly isBaseCreated: boolean;2525 readonly isBaseCreated: boolean;2514 readonly asBaseCreated: {2526 readonly asBaseCreated: {2518 readonly type: 'BaseCreated';2530 readonly type: 'BaseCreated';2519 }2531 }252025322521 /** @name PalletEvmEvent (290) */2533 /** @name PalletEvmEvent (293) */2522 export interface PalletEvmEvent extends Enum {2534 export interface PalletEvmEvent extends Enum {2523 readonly isLog: boolean;2535 readonly isLog: boolean;2524 readonly asLog: EthereumLog;2536 readonly asLog: EthereumLog;2537 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';2549 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';2538 }2550 }253925512540 /** @name EthereumLog (291) */2552 /** @name EthereumLog (294) */2541 export interface EthereumLog extends Struct {2553 export interface EthereumLog extends Struct {2542 readonly address: H160;2554 readonly address: H160;2543 readonly topics: Vec<H256>;2555 readonly topics: Vec<H256>;2544 readonly data: Bytes;2556 readonly data: Bytes;2545 }2557 }254625582547 /** @name PalletEthereumEvent (292) */2559 /** @name PalletEthereumEvent (295) */2548 export interface PalletEthereumEvent extends Enum {2560 export interface PalletEthereumEvent extends Enum {2549 readonly isExecuted: boolean;2561 readonly isExecuted: boolean;2550 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;2562 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;2551 readonly type: 'Executed';2563 readonly type: 'Executed';2552 }2564 }255325652554 /** @name EvmCoreErrorExitReason (293) */2566 /** @name EvmCoreErrorExitReason (296) */2555 export interface EvmCoreErrorExitReason extends Enum {2567 export interface EvmCoreErrorExitReason extends Enum {2556 readonly isSucceed: boolean;2568 readonly isSucceed: boolean;2557 readonly asSucceed: EvmCoreErrorExitSucceed;2569 readonly asSucceed: EvmCoreErrorExitSucceed;2564 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';2576 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';2565 }2577 }256625782567 /** @name EvmCoreErrorExitSucceed (294) */2579 /** @name EvmCoreErrorExitSucceed (297) */2568 export interface EvmCoreErrorExitSucceed extends Enum {2580 export interface EvmCoreErrorExitSucceed extends Enum {2569 readonly isStopped: boolean;2581 readonly isStopped: boolean;2570 readonly isReturned: boolean;2582 readonly isReturned: boolean;2571 readonly isSuicided: boolean;2583 readonly isSuicided: boolean;2572 readonly type: 'Stopped' | 'Returned' | 'Suicided';2584 readonly type: 'Stopped' | 'Returned' | 'Suicided';2573 }2585 }257425862575 /** @name EvmCoreErrorExitError (295) */2587 /** @name EvmCoreErrorExitError (298) */2576 export interface EvmCoreErrorExitError extends Enum {2588 export interface EvmCoreErrorExitError extends Enum {2577 readonly isStackUnderflow: boolean;2589 readonly isStackUnderflow: boolean;2578 readonly isStackOverflow: boolean;2590 readonly isStackOverflow: boolean;2593 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';2605 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';2594 }2606 }259526072596 /** @name EvmCoreErrorExitRevert (298) */2608 /** @name EvmCoreErrorExitRevert (301) */2597 export interface EvmCoreErrorExitRevert extends Enum {2609 export interface EvmCoreErrorExitRevert extends Enum {2598 readonly isReverted: boolean;2610 readonly isReverted: boolean;2599 readonly type: 'Reverted';2611 readonly type: 'Reverted';2600 }2612 }260126132602 /** @name EvmCoreErrorExitFatal (299) */2614 /** @name EvmCoreErrorExitFatal (302) */2603 export interface EvmCoreErrorExitFatal extends Enum {2615 export interface EvmCoreErrorExitFatal extends Enum {2604 readonly isNotSupported: boolean;2616 readonly isNotSupported: boolean;2605 readonly isUnhandledInterrupt: boolean;2617 readonly isUnhandledInterrupt: boolean;2610 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';2622 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';2611 }2623 }261226242613 /** @name FrameSystemPhase (300) */2625 /** @name FrameSystemPhase (303) */2614 export interface FrameSystemPhase extends Enum {2626 export interface FrameSystemPhase extends Enum {2615 readonly isApplyExtrinsic: boolean;2627 readonly isApplyExtrinsic: boolean;2616 readonly asApplyExtrinsic: u32;2628 readonly asApplyExtrinsic: u32;2619 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';2631 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';2620 }2632 }262126332622 /** @name FrameSystemLastRuntimeUpgradeInfo (302) */2634 /** @name FrameSystemLastRuntimeUpgradeInfo (305) */2623 export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {2635 export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {2624 readonly specVersion: Compact<u32>;2636 readonly specVersion: Compact<u32>;2625 readonly specName: Text;2637 readonly specName: Text;2626 }2638 }262726392628 /** @name FrameSystemLimitsBlockWeights (303) */2640 /** @name FrameSystemLimitsBlockWeights (306) */2629 export interface FrameSystemLimitsBlockWeights extends Struct {2641 export interface FrameSystemLimitsBlockWeights extends Struct {2630 readonly baseBlock: u64;2642 readonly baseBlock: u64;2631 readonly maxBlock: u64;2643 readonly maxBlock: u64;2632 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;2644 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;2633 }2645 }263426462635 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (304) */2647 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (307) */2636 export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {2648 export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {2637 readonly normal: FrameSystemLimitsWeightsPerClass;2649 readonly normal: FrameSystemLimitsWeightsPerClass;2638 readonly operational: FrameSystemLimitsWeightsPerClass;2650 readonly operational: FrameSystemLimitsWeightsPerClass;2639 readonly mandatory: FrameSystemLimitsWeightsPerClass;2651 readonly mandatory: FrameSystemLimitsWeightsPerClass;2640 }2652 }264126532642 /** @name FrameSystemLimitsWeightsPerClass (305) */2654 /** @name FrameSystemLimitsWeightsPerClass (308) */2643 export interface FrameSystemLimitsWeightsPerClass extends Struct {2655 export interface FrameSystemLimitsWeightsPerClass extends Struct {2644 readonly baseExtrinsic: u64;2656 readonly baseExtrinsic: u64;2645 readonly maxExtrinsic: Option<u64>;2657 readonly maxExtrinsic: Option<u64>;2646 readonly maxTotal: Option<u64>;2658 readonly maxTotal: Option<u64>;2647 readonly reserved: Option<u64>;2659 readonly reserved: Option<u64>;2648 }2660 }264926612650 /** @name FrameSystemLimitsBlockLength (307) */2662 /** @name FrameSystemLimitsBlockLength (310) */2651 export interface FrameSystemLimitsBlockLength extends Struct {2663 export interface FrameSystemLimitsBlockLength extends Struct {2652 readonly max: FrameSupportWeightsPerDispatchClassU32;2664 readonly max: FrameSupportWeightsPerDispatchClassU32;2653 }2665 }265426662655 /** @name FrameSupportWeightsPerDispatchClassU32 (308) */2667 /** @name FrameSupportWeightsPerDispatchClassU32 (311) */2656 export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {2668 export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {2657 readonly normal: u32;2669 readonly normal: u32;2658 readonly operational: u32;2670 readonly operational: u32;2659 readonly mandatory: u32;2671 readonly mandatory: u32;2660 }2672 }266126732662 /** @name FrameSupportWeightsRuntimeDbWeight (309) */2674 /** @name FrameSupportWeightsRuntimeDbWeight (312) */2663 export interface FrameSupportWeightsRuntimeDbWeight extends Struct {2675 export interface FrameSupportWeightsRuntimeDbWeight extends Struct {2664 readonly read: u64;2676 readonly read: u64;2665 readonly write: u64;2677 readonly write: u64;2666 }2678 }266726792668 /** @name SpVersionRuntimeVersion (310) */2680 /** @name SpVersionRuntimeVersion (313) */2669 export interface SpVersionRuntimeVersion extends Struct {2681 export interface SpVersionRuntimeVersion extends Struct {2670 readonly specName: Text;2682 readonly specName: Text;2671 readonly implName: Text;2683 readonly implName: Text;2677 readonly stateVersion: u8;2689 readonly stateVersion: u8;2678 }2690 }267926912680 /** @name FrameSystemError (314) */2692 /** @name FrameSystemError (317) */2681 export interface FrameSystemError extends Enum {2693 export interface FrameSystemError extends Enum {2682 readonly isInvalidSpecName: boolean;2694 readonly isInvalidSpecName: boolean;2683 readonly isSpecVersionNeedsToIncrease: boolean;2695 readonly isSpecVersionNeedsToIncrease: boolean;2688 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';2700 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';2689 }2701 }269027022691 /** @name OrmlVestingModuleError (316) */2703 /** @name OrmlVestingModuleError (319) */2692 export interface OrmlVestingModuleError extends Enum {2704 export interface OrmlVestingModuleError extends Enum {2693 readonly isZeroVestingPeriod: boolean;2705 readonly isZeroVestingPeriod: boolean;2694 readonly isZeroVestingPeriodCount: boolean;2706 readonly isZeroVestingPeriodCount: boolean;2699 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2711 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2700 }2712 }270127132702 /** @name CumulusPalletXcmpQueueInboundChannelDetails (318) */2714 /** @name CumulusPalletXcmpQueueInboundChannelDetails (321) */2703 export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2715 export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2704 readonly sender: u32;2716 readonly sender: u32;2705 readonly state: CumulusPalletXcmpQueueInboundState;2717 readonly state: CumulusPalletXcmpQueueInboundState;2706 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2718 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2707 }2719 }270827202709 /** @name CumulusPalletXcmpQueueInboundState (319) */2721 /** @name CumulusPalletXcmpQueueInboundState (322) */2710 export interface CumulusPalletXcmpQueueInboundState extends Enum {2722 export interface CumulusPalletXcmpQueueInboundState extends Enum {2711 readonly isOk: boolean;2723 readonly isOk: boolean;2712 readonly isSuspended: boolean;2724 readonly isSuspended: boolean;2713 readonly type: 'Ok' | 'Suspended';2725 readonly type: 'Ok' | 'Suspended';2714 }2726 }271527272716 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (322) */2728 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (325) */2717 export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2729 export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2718 readonly isConcatenatedVersionedXcm: boolean;2730 readonly isConcatenatedVersionedXcm: boolean;2719 readonly isConcatenatedEncodedBlob: boolean;2731 readonly isConcatenatedEncodedBlob: boolean;2720 readonly isSignals: boolean;2732 readonly isSignals: boolean;2721 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2733 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2722 }2734 }272327352724 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (325) */2736 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (328) */2725 export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2737 export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2726 readonly recipient: u32;2738 readonly recipient: u32;2727 readonly state: CumulusPalletXcmpQueueOutboundState;2739 readonly state: CumulusPalletXcmpQueueOutboundState;2730 readonly lastIndex: u16;2742 readonly lastIndex: u16;2731 }2743 }273227442733 /** @name CumulusPalletXcmpQueueOutboundState (326) */2745 /** @name CumulusPalletXcmpQueueOutboundState (329) */2734 export interface CumulusPalletXcmpQueueOutboundState extends Enum {2746 export interface CumulusPalletXcmpQueueOutboundState extends Enum {2735 readonly isOk: boolean;2747 readonly isOk: boolean;2736 readonly isSuspended: boolean;2748 readonly isSuspended: boolean;2737 readonly type: 'Ok' | 'Suspended';2749 readonly type: 'Ok' | 'Suspended';2738 }2750 }273927512740 /** @name CumulusPalletXcmpQueueQueueConfigData (328) */2752 /** @name CumulusPalletXcmpQueueQueueConfigData (331) */2741 export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2753 export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2742 readonly suspendThreshold: u32;2754 readonly suspendThreshold: u32;2743 readonly dropThreshold: u32;2755 readonly dropThreshold: u32;2747 readonly xcmpMaxIndividualWeight: u64;2759 readonly xcmpMaxIndividualWeight: u64;2748 }2760 }274927612750 /** @name CumulusPalletXcmpQueueError (330) */2762 /** @name CumulusPalletXcmpQueueError (333) */2751 export interface CumulusPalletXcmpQueueError extends Enum {2763 export interface CumulusPalletXcmpQueueError extends Enum {2752 readonly isFailedToSend: boolean;2764 readonly isFailedToSend: boolean;2753 readonly isBadXcmOrigin: boolean;2765 readonly isBadXcmOrigin: boolean;2757 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2769 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2758 }2770 }275927712760 /** @name PalletXcmError (331) */2772 /** @name PalletXcmError (334) */2761 export interface PalletXcmError extends Enum {2773 export interface PalletXcmError extends Enum {2762 readonly isUnreachable: boolean;2774 readonly isUnreachable: boolean;2763 readonly isSendFailure: boolean;2775 readonly isSendFailure: boolean;2775 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2787 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2776 }2788 }277727892778 /** @name CumulusPalletXcmError (332) */2790 /** @name CumulusPalletXcmError (335) */2779 export type CumulusPalletXcmError = Null;2791 export type CumulusPalletXcmError = Null;278027922781 /** @name CumulusPalletDmpQueueConfigData (333) */2793 /** @name CumulusPalletDmpQueueConfigData (336) */2782 export interface CumulusPalletDmpQueueConfigData extends Struct {2794 export interface CumulusPalletDmpQueueConfigData extends Struct {2783 readonly maxIndividual: u64;2795 readonly maxIndividual: u64;2784 }2796 }278527972786 /** @name CumulusPalletDmpQueuePageIndexData (334) */2798 /** @name CumulusPalletDmpQueuePageIndexData (337) */2787 export interface CumulusPalletDmpQueuePageIndexData extends Struct {2799 export interface CumulusPalletDmpQueuePageIndexData extends Struct {2788 readonly beginUsed: u32;2800 readonly beginUsed: u32;2789 readonly endUsed: u32;2801 readonly endUsed: u32;2790 readonly overweightCount: u64;2802 readonly overweightCount: u64;2791 }2803 }279228042793 /** @name CumulusPalletDmpQueueError (337) */2805 /** @name CumulusPalletDmpQueueError (340) */2794 export interface CumulusPalletDmpQueueError extends Enum {2806 export interface CumulusPalletDmpQueueError extends Enum {2795 readonly isUnknown: boolean;2807 readonly isUnknown: boolean;2796 readonly isOverLimit: boolean;2808 readonly isOverLimit: boolean;2797 readonly type: 'Unknown' | 'OverLimit';2809 readonly type: 'Unknown' | 'OverLimit';2798 }2810 }279928112800 /** @name PalletUniqueError (341) */2812 /** @name PalletUniqueError (344) */2801 export interface PalletUniqueError extends Enum {2813 export interface PalletUniqueError extends Enum {2802 readonly isCollectionDecimalPointLimitExceeded: boolean;2814 readonly isCollectionDecimalPointLimitExceeded: boolean;2803 readonly isConfirmUnsetSponsorFail: boolean;2815 readonly isConfirmUnsetSponsorFail: boolean;2804 readonly isEmptyArgument: boolean;2816 readonly isEmptyArgument: boolean;2805 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';2817 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';2806 }2818 }280728192808 /** @name PalletUnqSchedulerScheduledV3 (344) */2820 /** @name PalletUniqueSchedulerScheduledV3 (347) */2809 export interface PalletUnqSchedulerScheduledV3 extends Struct {2821 export interface PalletUniqueSchedulerScheduledV3 extends Struct {2810 readonly maybeId: Option<U8aFixed>;2822 readonly maybeId: Option<U8aFixed>;2811 readonly priority: u8;2823 readonly priority: u8;2812 readonly call: FrameSupportScheduleMaybeHashed;2824 readonly call: FrameSupportScheduleMaybeHashed;2813 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2825 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2814 readonly origin: OpalRuntimeOriginCaller;2826 readonly origin: OpalRuntimeOriginCaller;2815 }2827 }281628282817 /** @name OpalRuntimeOriginCaller (345) */2829 /** @name OpalRuntimeOriginCaller (348) */2818 export interface OpalRuntimeOriginCaller extends Enum {2830 export interface OpalRuntimeOriginCaller extends Enum {2819 readonly isVoid: boolean;2831 readonly isVoid: boolean;2820 readonly isSystem: boolean;2832 readonly isSystem: boolean;2828 readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';2840 readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';2829 }2841 }283028422831 /** @name FrameSupportDispatchRawOrigin (346) */2843 /** @name FrameSupportDispatchRawOrigin (349) */2832 export interface FrameSupportDispatchRawOrigin extends Enum {2844 export interface FrameSupportDispatchRawOrigin extends Enum {2833 readonly isRoot: boolean;2845 readonly isRoot: boolean;2834 readonly isSigned: boolean;2846 readonly isSigned: boolean;2837 readonly type: 'Root' | 'Signed' | 'None';2849 readonly type: 'Root' | 'Signed' | 'None';2838 }2850 }283928512840 /** @name PalletXcmOrigin (347) */2852 /** @name PalletXcmOrigin (350) */2841 export interface PalletXcmOrigin extends Enum {2853 export interface PalletXcmOrigin extends Enum {2842 readonly isXcm: boolean;2854 readonly isXcm: boolean;2843 readonly asXcm: XcmV1MultiLocation;2855 readonly asXcm: XcmV1MultiLocation;2846 readonly type: 'Xcm' | 'Response';2858 readonly type: 'Xcm' | 'Response';2847 }2859 }284828602849 /** @name CumulusPalletXcmOrigin (348) */2861 /** @name CumulusPalletXcmOrigin (351) */2850 export interface CumulusPalletXcmOrigin extends Enum {2862 export interface CumulusPalletXcmOrigin extends Enum {2851 readonly isRelay: boolean;2863 readonly isRelay: boolean;2852 readonly isSiblingParachain: boolean;2864 readonly isSiblingParachain: boolean;2853 readonly asSiblingParachain: u32;2865 readonly asSiblingParachain: u32;2854 readonly type: 'Relay' | 'SiblingParachain';2866 readonly type: 'Relay' | 'SiblingParachain';2855 }2867 }285628682857 /** @name PalletEthereumRawOrigin (349) */2869 /** @name PalletEthereumRawOrigin (352) */2858 export interface PalletEthereumRawOrigin extends Enum {2870 export interface PalletEthereumRawOrigin extends Enum {2859 readonly isEthereumTransaction: boolean;2871 readonly isEthereumTransaction: boolean;2860 readonly asEthereumTransaction: H160;2872 readonly asEthereumTransaction: H160;2861 readonly type: 'EthereumTransaction';2873 readonly type: 'EthereumTransaction';2862 }2874 }286328752864 /** @name SpCoreVoid (350) */2876 /** @name SpCoreVoid (353) */2865 export type SpCoreVoid = Null;2877 export type SpCoreVoid = Null;286628782867 /** @name PalletUnqSchedulerError (351) */2879 /** @name PalletUniqueSchedulerError (354) */2868 export interface PalletUnqSchedulerError extends Enum {2880 export interface PalletUniqueSchedulerError extends Enum {2869 readonly isFailedToSchedule: boolean;2881 readonly isFailedToSchedule: boolean;2870 readonly isNotFound: boolean;2882 readonly isNotFound: boolean;2871 readonly isTargetBlockNumberInPast: boolean;2883 readonly isTargetBlockNumberInPast: boolean;2872 readonly isRescheduleNoChange: boolean;2884 readonly isRescheduleNoChange: boolean;2873 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';2885 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';2874 }2886 }287528872876 /** @name UpDataStructsCollection (352) */2888 /** @name UpDataStructsCollection (355) */2877 export interface UpDataStructsCollection extends Struct {2889 export interface UpDataStructsCollection extends Struct {2878 readonly owner: AccountId32;2890 readonly owner: AccountId32;2879 readonly mode: UpDataStructsCollectionMode;2891 readonly mode: UpDataStructsCollectionMode;2886 readonly externalCollection: bool;2898 readonly externalCollection: bool;2887 }2899 }288829002889 /** @name UpDataStructsSponsorshipState (353) */2901 /** @name UpDataStructsSponsorshipState (356) */2890 export interface UpDataStructsSponsorshipState extends Enum {2902 export interface UpDataStructsSponsorshipState extends Enum {2891 readonly isDisabled: boolean;2903 readonly isDisabled: boolean;2892 readonly isUnconfirmed: boolean;2904 readonly isUnconfirmed: boolean;2896 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2908 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2897 }2909 }289829102899 /** @name UpDataStructsProperties (354) */2911 /** @name UpDataStructsProperties (357) */2900 export interface UpDataStructsProperties extends Struct {2912 export interface UpDataStructsProperties extends Struct {2901 readonly map: UpDataStructsPropertiesMapBoundedVec;2913 readonly map: UpDataStructsPropertiesMapBoundedVec;2902 readonly consumedSpace: u32;2914 readonly consumedSpace: u32;2903 readonly spaceLimit: u32;2915 readonly spaceLimit: u32;2904 }2916 }290529172906 /** @name UpDataStructsPropertiesMapBoundedVec (355) */2918 /** @name UpDataStructsPropertiesMapBoundedVec (358) */2907 export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}2919 export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}290829202909 /** @name UpDataStructsPropertiesMapPropertyPermission (360) */2921 /** @name UpDataStructsPropertiesMapPropertyPermission (363) */2910 export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}2922 export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}291129232912 /** @name UpDataStructsCollectionStats (367) */2924 /** @name UpDataStructsCollectionStats (370) */2913 export interface UpDataStructsCollectionStats extends Struct {2925 export interface UpDataStructsCollectionStats extends Struct {2914 readonly created: u32;2926 readonly created: u32;2915 readonly destroyed: u32;2927 readonly destroyed: u32;2916 readonly alive: u32;2928 readonly alive: u32;2917 }2929 }291829302919 /** @name UpDataStructsTokenChild (368) */2931 /** @name UpDataStructsTokenChild (371) */2920 export interface UpDataStructsTokenChild extends Struct {2932 export interface UpDataStructsTokenChild extends Struct {2921 readonly token: u32;2933 readonly token: u32;2922 readonly collection: u32;2934 readonly collection: u32;2923 }2935 }292429362925 /** @name PhantomTypeUpDataStructs (369) */2937 /** @name PhantomTypeUpDataStructs (372) */2926 export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}2938 export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}292729392928 /** @name UpDataStructsTokenData (371) */2940 /** @name UpDataStructsTokenData (374) */2929 export interface UpDataStructsTokenData extends Struct {2941 export interface UpDataStructsTokenData extends Struct {2930 readonly properties: Vec<UpDataStructsProperty>;2942 readonly properties: Vec<UpDataStructsProperty>;2931 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2943 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2932 }2944 }293329452934 /** @name UpDataStructsRpcCollection (373) */2946 /** @name UpDataStructsRpcCollection (376) */2935 export interface UpDataStructsRpcCollection extends Struct {2947 export interface UpDataStructsRpcCollection extends Struct {2936 readonly owner: AccountId32;2948 readonly owner: AccountId32;2937 readonly mode: UpDataStructsCollectionMode;2949 readonly mode: UpDataStructsCollectionMode;2946 readonly readOnly: bool;2958 readonly readOnly: bool;2947 }2959 }294829602949 /** @name RmrkTraitsCollectionCollectionInfo (374) */2961 /** @name RmrkTraitsCollectionCollectionInfo (377) */2950 export interface RmrkTraitsCollectionCollectionInfo extends Struct {2962 export interface RmrkTraitsCollectionCollectionInfo extends Struct {2951 readonly issuer: AccountId32;2963 readonly issuer: AccountId32;2952 readonly metadata: Bytes;2964 readonly metadata: Bytes;2955 readonly nftsCount: u32;2967 readonly nftsCount: u32;2956 }2968 }295729692958 /** @name RmrkTraitsNftNftInfo (375) */2970 /** @name RmrkTraitsNftNftInfo (378) */2959 export interface RmrkTraitsNftNftInfo extends Struct {2971 export interface RmrkTraitsNftNftInfo extends Struct {2960 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2972 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2961 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2973 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2964 readonly pending: bool;2976 readonly pending: bool;2965 }2977 }296629782967 /** @name RmrkTraitsNftRoyaltyInfo (377) */2979 /** @name RmrkTraitsNftRoyaltyInfo (380) */2968 export interface RmrkTraitsNftRoyaltyInfo extends Struct {2980 export interface RmrkTraitsNftRoyaltyInfo extends Struct {2969 readonly recipient: AccountId32;2981 readonly recipient: AccountId32;2970 readonly amount: Permill;2982 readonly amount: Permill;2971 }2983 }297229842973 /** @name RmrkTraitsResourceResourceInfo (378) */2985 /** @name RmrkTraitsResourceResourceInfo (381) */2974 export interface RmrkTraitsResourceResourceInfo extends Struct {2986 export interface RmrkTraitsResourceResourceInfo extends Struct {2975 readonly id: u32;2987 readonly id: u32;2976 readonly resource: RmrkTraitsResourceResourceTypes;2988 readonly resource: RmrkTraitsResourceResourceTypes;2977 readonly pending: bool;2989 readonly pending: bool;2978 readonly pendingRemoval: bool;2990 readonly pendingRemoval: bool;2979 }2991 }29802981 /** @name RmrkTraitsResourceResourceTypes (379) */2982 export interface RmrkTraitsResourceResourceTypes extends Enum {2983 readonly isBasic: boolean;2984 readonly asBasic: RmrkTraitsResourceBasicResource;2985 readonly isComposable: boolean;2986 readonly asComposable: RmrkTraitsResourceComposableResource;2987 readonly isSlot: boolean;2988 readonly asSlot: RmrkTraitsResourceSlotResource;2989 readonly type: 'Basic' | 'Composable' | 'Slot';2990 }299129922992 /** @name RmrkTraitsPropertyPropertyInfo (380) */2993 /** @name RmrkTraitsPropertyPropertyInfo (382) */2993 export interface RmrkTraitsPropertyPropertyInfo extends Struct {2994 export interface RmrkTraitsPropertyPropertyInfo extends Struct {2994 readonly key: Bytes;2995 readonly key: Bytes;2995 readonly value: Bytes;2996 readonly value: Bytes;2996 }2997 }299729982998 /** @name RmrkTraitsBaseBaseInfo (381) */2999 /** @name RmrkTraitsBaseBaseInfo (383) */2999 export interface RmrkTraitsBaseBaseInfo extends Struct {3000 export interface RmrkTraitsBaseBaseInfo extends Struct {3000 readonly issuer: AccountId32;3001 readonly issuer: AccountId32;3001 readonly baseType: Bytes;3002 readonly baseType: Bytes;3002 readonly symbol: Bytes;3003 readonly symbol: Bytes;3003 }3004 }300430053005 /** @name RmrkTraitsNftNftChild (382) */3006 /** @name RmrkTraitsNftNftChild (384) */3006 export interface RmrkTraitsNftNftChild extends Struct {3007 export interface RmrkTraitsNftNftChild extends Struct {3007 readonly collectionId: u32;3008 readonly collectionId: u32;3008 readonly nftId: u32;3009 readonly nftId: u32;3009 }3010 }301030113011 /** @name PalletCommonError (384) */3012 /** @name PalletCommonError (386) */3012 export interface PalletCommonError extends Enum {3013 export interface PalletCommonError extends Enum {3013 readonly isCollectionNotFound: boolean;3014 readonly isCollectionNotFound: boolean;3014 readonly isMustBeTokenOwner: boolean;3015 readonly isMustBeTokenOwner: boolean;3047 readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';3048 readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';3048 }3049 }304930503050 /** @name PalletFungibleError (386) */3051 /** @name PalletFungibleError (388) */3051 export interface PalletFungibleError extends Enum {3052 export interface PalletFungibleError extends Enum {3052 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;3053 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;3053 readonly isFungibleItemsHaveNoId: boolean;3054 readonly isFungibleItemsHaveNoId: boolean;3057 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3058 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3058 }3059 }305930603060 /** @name PalletRefungibleItemData (387) */3061 /** @name PalletRefungibleItemData (389) */3061 export interface PalletRefungibleItemData extends Struct {3062 export interface PalletRefungibleItemData extends Struct {3062 readonly constData: Bytes;3063 readonly constData: Bytes;3063 }3064 }306430653065 /** @name PalletRefungibleError (391) */3066 /** @name PalletRefungibleError (393) */3066 export interface PalletRefungibleError extends Enum {3067 export interface PalletRefungibleError extends Enum {3067 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;3068 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;3068 readonly isWrongRefungiblePieces: boolean;3069 readonly isWrongRefungiblePieces: boolean;3071 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3072 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3072 }3073 }307330743074 /** @name PalletNonfungibleItemData (392) */3075 /** @name PalletNonfungibleItemData (394) */3075 export interface PalletNonfungibleItemData extends Struct {3076 export interface PalletNonfungibleItemData extends Struct {3076 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;3077 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;3077 }3078 }307830793079 /** @name PalletNonfungibleError (394) */3080 /** @name PalletNonfungibleError (396) */3080 export interface PalletNonfungibleError extends Enum {3081 export interface PalletNonfungibleError extends Enum {3081 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;3082 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;3082 readonly isNonfungibleItemsHaveNoAmount: boolean;3083 readonly isNonfungibleItemsHaveNoAmount: boolean;3083 readonly isCantBurnNftWithChildren: boolean;3084 readonly isCantBurnNftWithChildren: boolean;3084 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';3085 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';3085 }3086 }308630873087 /** @name PalletStructureError (395) */3088 /** @name PalletStructureError (397) */3088 export interface PalletStructureError extends Enum {3089 export interface PalletStructureError extends Enum {3089 readonly isOuroborosDetected: boolean;3090 readonly isOuroborosDetected: boolean;3090 readonly isDepthLimit: boolean;3091 readonly isDepthLimit: boolean;3093 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';3094 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';3094 }3095 }309530963096 /** @name PalletRmrkCoreError (396) */3097 /** @name PalletRmrkCoreError (398) */3097 export interface PalletRmrkCoreError extends Enum {3098 export interface PalletRmrkCoreError extends Enum {3098 readonly isCorruptedCollectionType: boolean;3099 readonly isCorruptedCollectionType: boolean;3099 readonly isNftTypeEncodeError: boolean;3100 readonly isNftTypeEncodeError: boolean;3100 readonly isRmrkPropertyKeyIsTooLong: boolean;3101 readonly isRmrkPropertyKeyIsTooLong: boolean;3101 readonly isRmrkPropertyValueIsTooLong: boolean;3102 readonly isRmrkPropertyValueIsTooLong: boolean;3103 readonly isUnableToDecodeRmrkData: boolean;3102 readonly isCollectionNotEmpty: boolean;3104 readonly isCollectionNotEmpty: boolean;3103 readonly isNoAvailableCollectionId: boolean;3105 readonly isNoAvailableCollectionId: boolean;3104 readonly isNoAvailableNftId: boolean;3106 readonly isNoAvailableNftId: boolean;3111 readonly isCannotAcceptNonOwnedNft: boolean;3113 readonly isCannotAcceptNonOwnedNft: boolean;3112 readonly isCannotRejectNonOwnedNft: boolean;3114 readonly isCannotRejectNonOwnedNft: boolean;3113 readonly isResourceNotPending: boolean;3115 readonly isResourceNotPending: boolean;3114 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';3116 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';3115 }3117 }311631183117 /** @name PalletRmrkEquipError (398) */3119 /** @name PalletRmrkEquipError (400) */3118 export interface PalletRmrkEquipError extends Enum {3120 export interface PalletRmrkEquipError extends Enum {3119 readonly isPermissionError: boolean;3121 readonly isPermissionError: boolean;3120 readonly isNoAvailableBaseId: boolean;3122 readonly isNoAvailableBaseId: boolean;3124 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';3126 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';3125 }3127 }312631283127 /** @name PalletEvmError (401) */3129 /** @name PalletEvmError (403) */3128 export interface PalletEvmError extends Enum {3130 export interface PalletEvmError extends Enum {3129 readonly isBalanceLow: boolean;3131 readonly isBalanceLow: boolean;3130 readonly isFeeOverflow: boolean;3132 readonly isFeeOverflow: boolean;3135 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';3137 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';3136 }3138 }313731393138 /** @name FpRpcTransactionStatus (404) */3140 /** @name FpRpcTransactionStatus (406) */3139 export interface FpRpcTransactionStatus extends Struct {3141 export interface FpRpcTransactionStatus extends Struct {3140 readonly transactionHash: H256;3142 readonly transactionHash: H256;3141 readonly transactionIndex: u32;3143 readonly transactionIndex: u32;3146 readonly logsBloom: EthbloomBloom;3148 readonly logsBloom: EthbloomBloom;3147 }3149 }314831503149 /** @name EthbloomBloom (406) */3151 /** @name EthbloomBloom (408) */3150 export interface EthbloomBloom extends U8aFixed {}3152 export interface EthbloomBloom extends U8aFixed {}315131533152 /** @name EthereumReceiptReceiptV3 (408) */3154 /** @name EthereumReceiptReceiptV3 (410) */3153 export interface EthereumReceiptReceiptV3 extends Enum {3155 export interface EthereumReceiptReceiptV3 extends Enum {3154 readonly isLegacy: boolean;3156 readonly isLegacy: boolean;3155 readonly asLegacy: EthereumReceiptEip658ReceiptData;3157 readonly asLegacy: EthereumReceiptEip658ReceiptData;3160 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';3162 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';3161 }3163 }316231643163 /** @name EthereumReceiptEip658ReceiptData (409) */3165 /** @name EthereumReceiptEip658ReceiptData (411) */3164 export interface EthereumReceiptEip658ReceiptData extends Struct {3166 export interface EthereumReceiptEip658ReceiptData extends Struct {3165 readonly statusCode: u8;3167 readonly statusCode: u8;3166 readonly usedGas: U256;3168 readonly usedGas: U256;3167 readonly logsBloom: EthbloomBloom;3169 readonly logsBloom: EthbloomBloom;3168 readonly logs: Vec<EthereumLog>;3170 readonly logs: Vec<EthereumLog>;3169 }3171 }317031723171 /** @name EthereumBlock (410) */3173 /** @name EthereumBlock (412) */3172 export interface EthereumBlock extends Struct {3174 export interface EthereumBlock extends Struct {3173 readonly header: EthereumHeader;3175 readonly header: EthereumHeader;3174 readonly transactions: Vec<EthereumTransactionTransactionV2>;3176 readonly transactions: Vec<EthereumTransactionTransactionV2>;3175 readonly ommers: Vec<EthereumHeader>;3177 readonly ommers: Vec<EthereumHeader>;3176 }3178 }317731793178 /** @name EthereumHeader (411) */3180 /** @name EthereumHeader (413) */3179 export interface EthereumHeader extends Struct {3181 export interface EthereumHeader extends Struct {3180 readonly parentHash: H256;3182 readonly parentHash: H256;3181 readonly ommersHash: H256;3183 readonly ommersHash: H256;3194 readonly nonce: EthereumTypesHashH64;3196 readonly nonce: EthereumTypesHashH64;3195 }3197 }319631983197 /** @name EthereumTypesHashH64 (412) */3199 /** @name EthereumTypesHashH64 (414) */3198 export interface EthereumTypesHashH64 extends U8aFixed {}3200 export interface EthereumTypesHashH64 extends U8aFixed {}319932013200 /** @name PalletEthereumError (417) */3202 /** @name PalletEthereumError (419) */3201 export interface PalletEthereumError extends Enum {3203 export interface PalletEthereumError extends Enum {3202 readonly isInvalidSignature: boolean;3204 readonly isInvalidSignature: boolean;3203 readonly isPreLogExists: boolean;3205 readonly isPreLogExists: boolean;3204 readonly type: 'InvalidSignature' | 'PreLogExists';3206 readonly type: 'InvalidSignature' | 'PreLogExists';3205 }3207 }320632083207 /** @name PalletEvmCoderSubstrateError (418) */3209 /** @name PalletEvmCoderSubstrateError (420) */3208 export interface PalletEvmCoderSubstrateError extends Enum {3210 export interface PalletEvmCoderSubstrateError extends Enum {3209 readonly isOutOfGas: boolean;3211 readonly isOutOfGas: boolean;3210 readonly isOutOfFund: boolean;3212 readonly isOutOfFund: boolean;3211 readonly type: 'OutOfGas' | 'OutOfFund';3213 readonly type: 'OutOfGas' | 'OutOfFund';3212 }3214 }321332153214 /** @name PalletEvmContractHelpersSponsoringModeT (419) */3216 /** @name PalletEvmContractHelpersSponsoringModeT (421) */3215 export interface PalletEvmContractHelpersSponsoringModeT extends Enum {3217 export interface PalletEvmContractHelpersSponsoringModeT extends Enum {3216 readonly isDisabled: boolean;3218 readonly isDisabled: boolean;3217 readonly isAllowlisted: boolean;3219 readonly isAllowlisted: boolean;3218 readonly isGenerous: boolean;3220 readonly isGenerous: boolean;3219 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';3221 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';3220 }3222 }322132233222 /** @name PalletEvmContractHelpersError (421) */3224 /** @name PalletEvmContractHelpersError (423) */3223 export interface PalletEvmContractHelpersError extends Enum {3225 export interface PalletEvmContractHelpersError extends Enum {3224 readonly isNoPermission: boolean;3226 readonly isNoPermission: boolean;3225 readonly type: 'NoPermission';3227 readonly type: 'NoPermission';3226 }3228 }322732293228 /** @name PalletEvmMigrationError (422) */3230 /** @name PalletEvmMigrationError (424) */3229 export interface PalletEvmMigrationError extends Enum {3231 export interface PalletEvmMigrationError extends Enum {3230 readonly isAccountNotEmpty: boolean;3232 readonly isAccountNotEmpty: boolean;3231 readonly isAccountIsNotMigrating: boolean;3233 readonly isAccountIsNotMigrating: boolean;3232 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';3234 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';3233 }3235 }323432363235 /** @name SpRuntimeMultiSignature (424) */3237 /** @name SpRuntimeMultiSignature (426) */3236 export interface SpRuntimeMultiSignature extends Enum {3238 export interface SpRuntimeMultiSignature extends Enum {3237 readonly isEd25519: boolean;3239 readonly isEd25519: boolean;3238 readonly asEd25519: SpCoreEd25519Signature;3240 readonly asEd25519: SpCoreEd25519Signature;3243 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';3245 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';3244 }3246 }324532473246 /** @name SpCoreEd25519Signature (425) */3248 /** @name SpCoreEd25519Signature (427) */3247 export interface SpCoreEd25519Signature extends U8aFixed {}3249 export interface SpCoreEd25519Signature extends U8aFixed {}324832503249 /** @name SpCoreSr25519Signature (427) */3251 /** @name SpCoreSr25519Signature (429) */3250 export interface SpCoreSr25519Signature extends U8aFixed {}3252 export interface SpCoreSr25519Signature extends U8aFixed {}325132533252 /** @name SpCoreEcdsaSignature (428) */3254 /** @name SpCoreEcdsaSignature (430) */3253 export interface SpCoreEcdsaSignature extends U8aFixed {}3255 export interface SpCoreEcdsaSignature extends U8aFixed {}325432563255 /** @name FrameSystemExtensionsCheckSpecVersion (431) */3257 /** @name FrameSystemExtensionsCheckSpecVersion (433) */3256 export type FrameSystemExtensionsCheckSpecVersion = Null;3258 export type FrameSystemExtensionsCheckSpecVersion = Null;325732593258 /** @name FrameSystemExtensionsCheckGenesis (432) */3260 /** @name FrameSystemExtensionsCheckGenesis (434) */3259 export type FrameSystemExtensionsCheckGenesis = Null;3261 export type FrameSystemExtensionsCheckGenesis = Null;326032623261 /** @name FrameSystemExtensionsCheckNonce (435) */3263 /** @name FrameSystemExtensionsCheckNonce (437) */3262 export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}3264 export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}326332653264 /** @name FrameSystemExtensionsCheckWeight (436) */3266 /** @name FrameSystemExtensionsCheckWeight (438) */3265 export type FrameSystemExtensionsCheckWeight = Null;3267 export type FrameSystemExtensionsCheckWeight = Null;326632683267 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (437) */3269 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (439) */3268 export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}3270 export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}326932713270 /** @name OpalRuntimeRuntime (438) */3272 /** @name OpalRuntimeRuntime (440) */3271 export type OpalRuntimeRuntime = Null;3273 export type OpalRuntimeRuntime = Null;327232743273 /** @name PalletEthereumFakeTransactionFinalizer (439) */3275 /** @name PalletEthereumFakeTransactionFinalizer (441) */3274 export type PalletEthereumFakeTransactionFinalizer = Null;3276 export type PalletEthereumFakeTransactionFinalizer = Null;327532773276} // declare module3278} // declare moduletests/src/limits.test.tsdiffbeforeafterboth406 it('Effective collection limits', async () => {406 it('Effective collection limits', async () => {407 await usingApi(async (api) => {407 await usingApi(async (api) => {408 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});408 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});409 409 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});410 410 { // Check that limits is undefined411 { // Check that limits is undefined411 const collection = await api.rpc.unique.collectionById(collectionId);412 const collection = await api.rpc.unique.collectionById(collectionId);419 expect(limits.tokenLimit.toHuman()).to.be.null;420 expect(limits.tokenLimit.toHuman()).to.be.null;420 expect(limits.sponsorTransferTimeout.toHuman()).to.be.null;421 expect(limits.sponsorTransferTimeout.toHuman()).to.be.null;421 expect(limits.sponsorApproveTimeout.toHuman()).to.be.null;422 expect(limits.sponsorApproveTimeout.toHuman()).to.be.null;422 expect(limits.ownerCanTransfer.toHuman()).to.be.null;423 expect(limits.ownerCanTransfer.toHuman()).to.be.true;423 expect(limits.ownerCanDestroy.toHuman()).to.be.null;424 expect(limits.ownerCanDestroy.toHuman()).to.be.null;424 expect(limits.transfersEnabled.toHuman()).to.be.null;425 expect(limits.transfersEnabled.toHuman()).to.be.null;425 }426 }tests/src/nesting/graphs.test.tsdiffbeforeafterboth3import {expect} from 'chai';3import {expect} from 'chai';4import {tokenIdToCross} from '../eth/util/helpers';4import {tokenIdToCross} from '../eth/util/helpers';5import usingApi, {executeTransaction} from '../substrate/substrate-api';5import usingApi, {executeTransaction} from '../substrate/substrate-api';6import {getCreateCollectionResult, transferExpectSuccess} from '../util/helpers';6import {getCreateCollectionResult, transferExpectSuccess, setCollectionLimitsExpectSuccess} from '../util/helpers';778/**8/**9 * ```dot9 * ```dot13 * ```13 * ```14 */14 */15async function buildComplexObjectGraph(api: ApiPromise, sender: IKeyringPair): Promise<number> {15async function buildComplexObjectGraph(api: ApiPromise, sender: IKeyringPair): Promise<number> {16 const events = await executeTransaction(api, sender, api.tx.unique.createCollectionEx({mode: 'NFT', permissions: {nesting: 'Owner'}}));16 const events = await executeTransaction(api, sender, api.tx.unique.createCollectionEx({mode: 'NFT', permissions: {nesting: {tokenOwner: true}}}));17 const {collectionId} = getCreateCollectionResult(events);17 const {collectionId} = getCreateCollectionResult(events);181819 await executeTransaction(api, sender, api.tx.unique.createMultipleItemsEx(collectionId, {NFT: Array(8).fill({owner: {Substrate: sender.address}})}));19 await executeTransaction(api, sender, api.tx.unique.createMultipleItemsEx(collectionId, {NFT: Array(8).fill({owner: {Substrate: sender.address}})}));36 await usingApi(async (api, privateKeyWrapper) => {36 await usingApi(async (api, privateKeyWrapper) => {37 const alice = privateKeyWrapper('//Alice');37 const alice = privateKeyWrapper('//Alice');38 const collection = await buildComplexObjectGraph(api, alice);38 const collection = await buildComplexObjectGraph(api, alice);39 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});394040 // to self41 // to self41 await expect(42 await expect(tests/src/nesting/nest.test.tsdiffbeforeafterboth2import {tokenIdToAddress} from '../eth/util/helpers';2import {tokenIdToAddress} from '../eth/util/helpers';3import usingApi, {executeTransaction} from '../substrate/substrate-api';3import usingApi, {executeTransaction} from '../substrate/substrate-api';4import {4import {5 addCollectionAdminExpectSuccess,5 addToAllowListExpectSuccess,6 addToAllowListExpectSuccess,6 createCollectionExpectSuccess,7 createCollectionExpectSuccess,7 createItemExpectSuccess,8 createItemExpectSuccess,15 transferExpectFailure,16 transferExpectFailure,16 transferExpectSuccess,17 transferExpectSuccess,17 transferFromExpectSuccess,18 transferFromExpectSuccess,19 setCollectionLimitsExpectSuccess,18} from '../util/helpers';20} from '../util/helpers';19import {IKeyringPair} from '@polkadot/types/types';21import {IKeyringPair} from '@polkadot/types/types';202221let alice: IKeyringPair;23let alice: IKeyringPair;22let bob: IKeyringPair;24let bob: IKeyringPair;25let charlie: IKeyringPair;232624describe('Integration Test: Nesting', () => {27describe('Integration Test: Composite nesting tests', () => {25 before(async () => {28 before(async () => {26 await usingApi(async (api, privateKeyWrapper) => {29 await usingApi(async (_, privateKeyWrapper) => {27 alice = privateKeyWrapper('//Alice');30 alice = privateKeyWrapper('//Alice');28 bob = privateKeyWrapper('//Bob');31 bob = privateKeyWrapper('//Bob');29 });32 });92 it('Checks token children', async () => {95 it('Checks token children', async () => {93 await usingApi(async api => {96 await usingApi(async api => {94 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});97 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});98 await setCollectionLimitsExpectSuccess(alice, collectionA, {ownerCanTransfer: true});95 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {tokenOwner: true}});99 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {tokenOwner: true}});96 const collectionB = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});100 const collectionB = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});97101145 ], 'Children contents check at deeper nesting');149 ], 'Children contents check at deeper nesting');146 });150 });147 });151 });152});148153154describe('Integration Test: Various token type nesting', async () => {155 before(async () => {156 await usingApi(async (_, privateKeyWrapper) => {157 alice = privateKeyWrapper('//Alice');158 bob = privateKeyWrapper('//Bob');159 charlie = privateKeyWrapper('//Charlie');160 });161 });162163 it('Admin (NFT): allows an Admin to nest a token', async () => {164 await usingApi(async api => {165 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});166 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});167 await addCollectionAdminExpectSuccess(alice, collection, bob.address);168 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);169170 // Create a nested token171 const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)});172 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address});173 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});174175 // Create a token to be nested and nest176 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');177 await transferExpectSuccess(collection, newToken, bob, {Ethereum: tokenIdToAddress(collection, targetToken)});178 expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address});179 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});180 });181 });182183 it('Admin (NFT): Admin and Token Owner can operate together', async () => {184 await usingApi(async api => {185 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});186 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true, collectionAdmin: true}});187 await addCollectionAdminExpectSuccess(alice, collection, bob.address);188 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);189190 // Create a nested token by an administrator191 const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)});192 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address});193 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});194195 // Create a token and allow the owner to nest too196 const newToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);197 await transferExpectSuccess(collection, newToken, charlie, {Ethereum: tokenIdToAddress(collection, nestedToken)});198 expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address});199 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, nestedToken).toLowerCase()});200 });201 });202203 it('Admin (NFT): allows an Admin to nest a token (Restricted nesting)', async () => {204 await usingApi(async api => {205 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});206 await addCollectionAdminExpectSuccess(alice, collectionA, bob.address);207 const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}});208 await addCollectionAdminExpectSuccess(alice, collectionB, bob.address);209 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA, collectionB]}});210 const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT', charlie.address);211212 // Create a nested token213 const nestedToken = await createItemExpectSuccess(bob, collectionB, 'NFT', {Ethereum: tokenIdToAddress(collectionA, targetToken)});214 expect(await getTopmostTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Substrate: charlie.address});215 expect(await getTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()});216217 // Create a token to be nested and nest218 const newToken = await createItemExpectSuccess(bob, collectionB, 'NFT');219 await transferExpectSuccess(collectionB, newToken, bob, {Ethereum: tokenIdToAddress(collectionA, targetToken)});220 expect(await getTopmostTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: charlie.address});221 expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()});222 });223 });224149 // ---------- Non-Fungible ----------225 // ---------- Non-Fungible ----------150226248 await expect(executeTransaction(api, alice, api.tx.unique.createItem(324 await expect(executeTransaction(api, alice, api.tx.unique.createItem(249 collectionRFT,325 collectionRFT,250 targetAddress,326 targetAddress,251 {ReFungible: {const_data: [], pieces: 100}},327 {ReFungible: {pieces: 100}},252 ))).to.not.be.rejected;328 ))).to.not.be.rejected;253329254 // Nest a new token330 // Nest a new token271 await expect(executeTransaction(api, alice, api.tx.unique.createItem(347 await expect(executeTransaction(api, alice, api.tx.unique.createItem(272 collectionRFT,348 collectionRFT,273 targetAddress,349 targetAddress,274 {ReFungible: {const_data: [], pieces: 100}},350 {ReFungible: {pieces: 100}},275 ))).to.not.be.rejected;351 ))).to.not.be.rejected;276352277 // Nest a new token353 // Nest a new token283359284describe('Negative Test: Nesting', async() => {360describe('Negative Test: Nesting', async() => {285 before(async () => {361 before(async () => {286 await usingApi(async (api, privateKeyWrapper) => {362 await usingApi(async (_, privateKeyWrapper) => {287 alice = privateKeyWrapper('//Alice');363 alice = privateKeyWrapper('//Alice');288 bob = privateKeyWrapper('//Bob');364 bob = privateKeyWrapper('//Bob');289 });365 });314 await expect(executeTransaction(api, alice, api.tx.unique.createItem(390 await expect(executeTransaction(api, alice, api.tx.unique.createItem(315 collection,391 collection,316 {Ethereum: tokenIdToAddress(collection, prevToken)},392 {Ethereum: tokenIdToAddress(collection, prevToken)},317 {nft: {const_data: [], variable_data: []}} as any,393 {nft: {}} as any,318 )), 'while creating nested token').to.be.rejectedWith(/^structure\.DepthLimit$/);394 )), 'while creating nested token').to.be.rejectedWith(/^structure\.DepthLimit$/);319395320 expect(await getTopmostTokenOwner(api, collection, prevToken)).to.be.deep.equal({Substrate: alice.address});396 expect(await getTopmostTokenOwner(api, collection, prevToken)).to.be.deep.equal({Substrate: alice.address});397 });398 });399400 // ---------- Admin ------------401402 it('Admin (NFT): disallows an Admin to operate nesting when only TokenOwner is allowed', async () => {403 await usingApi(async api => {404 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});405 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});406 await addCollectionAdminExpectSuccess(alice, collection, bob.address);407 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT');408409 // Try to create a nested token as collection admin when it's disallowed410 await expect(executeTransaction(api, bob, api.tx.unique.createItem(411 collection,412 {Ethereum: tokenIdToAddress(collection, targetToken)},413 {nft: {}} as any,414 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);415416 // Try to create and nest a token in the wrong collection417 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');418 await expect(executeTransaction(419 api, 420 bob, 421 api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1),422 ), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);423 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});424 });425 });426427 it('Admin (NFT): disallows a Token Owner to operate nesting when only Admin is allowed', async () => {428 await usingApi(async api => {429 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});430 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});431 await addToAllowListExpectSuccess(alice, collection, bob.address);432 await enableAllowListExpectSuccess(alice, collection);433 await enablePublicMintingExpectSuccess(alice, collection);434 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT');435436 // Try to create a nested token as collection admin when it's disallowed437 await expect(executeTransaction(api, bob, api.tx.unique.createItem(438 collection,439 {Ethereum: tokenIdToAddress(collection, targetToken)},440 {nft: {}} as any,441 )), 'while creating nested token').to.be.rejectedWith(/common\.AddressNotInAllowlist/); 442443 // Try to create and nest a token in the wrong collection444 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');445 await expect(executeTransaction(446 api, 447 bob, 448 api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1),449 ), 'while nesting new token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);450 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});451 });452 });453454 it('Admin (NFT): disallows an Admin to nest and unnest someone else\'s token', async () => {455 await usingApi(async api => {456 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});457 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});458 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});459460 await addToAllowListExpectSuccess(alice, collection, bob.address);461 await enableAllowListExpectSuccess(alice, collection);462 await enablePublicMintingExpectSuccess(alice, collection);463464 // Create a token to attempt to be nested into465 const targetToken = await createItemExpectSuccess(bob, collection, 'NFT');466 const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()};467468 // Try to nest somebody else's token469 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');470 await expect(executeTransaction(471 api, 472 alice, 473 api.tx.unique.transfer(targetAddress, collection, newToken, 1),474 ), 'while nesting another\'s token token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);475 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});476477 // Nest a token as admin and try to unnest it, now belonging to someone else478 const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', targetAddress);479 await expect(executeTransaction(480 api, 481 alice, 482 api.tx.unique.transferFrom(targetAddress, normalizeAccountId(alice), collection, nestedToken, 1),483 ), 'while unnesting another\'s token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);484 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal(targetAddress);485 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: bob.address});486 });487 });488489 it('Admin (NFT): disallows an Admin to nest a token from an unlisted collection (Restricted nesting)', async () => {490 await usingApi(async api => {491 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});492 const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}});493 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA]}});494495 // Create a token to attempt to be nested into496 const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT');497498 // Try to create and nest a token in the wrong collection499 const newToken = await createItemExpectSuccess(alice, collectionB, 'NFT');500 await expect(executeTransaction(501 api, 502 alice, 503 api.tx.unique.transfer({Ethereum: tokenIdToAddress(collectionA, targetToken)}, collectionB, newToken, 1),504 ), 'while nesting a foreign token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);505 expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: alice.address});321 });506 });322 });507 });323508333 await expect(executeTransaction(api, alice, api.tx.unique.createItem(518 await expect(executeTransaction(api, alice, api.tx.unique.createItem(334 collection,519 collection,335 {Ethereum: tokenIdToAddress(collection, targetToken)},520 {Ethereum: tokenIdToAddress(collection, targetToken)},336 {nft: {const_data: [], variable_data: []}} as any,521 {nft: {}} as any,337 )), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);522 )), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);338523339 // Create a token to be nested524 // Create a token to be nested361 await expect(executeTransaction(api, alice, api.tx.unique.createItem(546 await expect(executeTransaction(api, alice, api.tx.unique.createItem(362 collection,547 collection,363 {Ethereum: tokenIdToAddress(collection, targetToken)},548 {Ethereum: tokenIdToAddress(collection, targetToken)},364 {nft: {const_data: [], variable_data: []}} as any,549 {nft: {}} as any,365 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);550 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);366551367 // Try to create and nest a token in the wrong collection552 // Try to create and nest a token in the wrong collection387 await expect(executeTransaction(api, alice, api.tx.unique.createItem(572 await expect(executeTransaction(api, alice, api.tx.unique.createItem(388 collection,573 collection,389 {Ethereum: tokenIdToAddress(collection, targetToken)},574 {Ethereum: tokenIdToAddress(collection, targetToken)},390 {nft: {const_data: [], variable_data: []}} as any,575 {nft: {}} as any,391 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);576 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);392577393 // Try to create and nest a token in the wrong collection578 // Try to create and nest a token in the wrong collection409 await expect(executeTransaction(api, alice, api.tx.unique.createItem(594 await expect(executeTransaction(api, alice, api.tx.unique.createItem(410 collection,595 collection,411 {Ethereum: tokenIdToAddress(collection, targetToken)},596 {Ethereum: tokenIdToAddress(collection, targetToken)},412 {nft: {const_data: [], variable_data: []}} as any,597 {nft: {}} as any,413 )), 'while creating nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);598 )), 'while creating nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);414599415 // Try to create and nest a token in the wrong collection600 // Try to create and nest a token in the wrong collection543 await expect(executeTransaction(api, alice, api.tx.unique.createItem(728 await expect(executeTransaction(api, alice, api.tx.unique.createItem(544 collectionRFT,729 collectionRFT,545 targetAddress,730 targetAddress,546 {ReFungible: {const_data: [], pieces: 100}},731 {ReFungible: {pieces: 100}},547 )), 'while creating a nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);732 )), 'while creating a nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);548733549 // Create a token to be nested734 // Create a token to be nested579 await expect(executeTransaction(api, alice, api.tx.unique.createItem(764 await expect(executeTransaction(api, alice, api.tx.unique.createItem(580 collectionRFT,765 collectionRFT,581 targetAddress,766 targetAddress,582 {ReFungible: {const_data: [], pieces: 100}},767 {ReFungible: {pieces: 100}},583 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);768 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);584769585 // Try to create and nest a token in the wrong collection770 // Try to create and nest a token in the wrong collection606 await expect(executeTransaction(api, alice, api.tx.unique.createItem(791 await expect(executeTransaction(api, alice, api.tx.unique.createItem(607 collectionRFT,792 collectionRFT,608 targetAddress,793 targetAddress,609 {ReFungible: {const_data: [], pieces: 100}},794 {ReFungible: {pieces: 100}},610 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);795 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);611796612 // Try to create and nest a token in the wrong collection797 // Try to create and nest a token in the wrong collection630 await expect(executeTransaction(api, alice, api.tx.unique.createItem(815 await expect(executeTransaction(api, alice, api.tx.unique.createItem(631 collectionRFT,816 collectionRFT,632 targetAddress,817 targetAddress,633 {ReFungible: {const_data: [], pieces: 100}},818 {ReFungible: {pieces: 100}},634 )), 'while creating a nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);819 )), 'while creating a nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);635820636 // Try to create and nest a token in the wrong collection821 // Try to create and nest a token in the wrong collectiontests/src/nesting/properties.test.tsdiffbeforeafterboth38 await expect(executeTransaction(38 await expect(executeTransaction(39 api, 39 api, 40 alice, 40 alice, 41 api.tx.unique.setPropertyPermissions(collectionId, propertyPermissions), 41 api.tx.unique.setTokenPropertyPermissions(collectionId, propertyPermissions), 42 )).to.not.be.rejected;42 )).to.not.be.rejected;434344 const collectionProperties = [44 const collectionProperties = [106 });106 });107 });107 });108109 it('Check valid names for collection properties keys', async () => {110 await usingApi(async api => {111 const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: 'NFT'}));112 const {collectionId} = getCreateCollectionResult(events);113114 // alpha symbols115 await expect(executeTransaction(116 api, 117 bob, 118 api.tx.unique.setCollectionProperties(collectionId, [{key: 'alpha'}]), 119 )).to.not.be.rejected;120121 // numeric symbols122 await expect(executeTransaction(123 api, 124 bob, 125 api.tx.unique.setCollectionProperties(collectionId, [{key: '123'}]), 126 )).to.not.be.rejected;127128 // underscore symbol129 await expect(executeTransaction(130 api, 131 bob, 132 api.tx.unique.setCollectionProperties(collectionId, [{key: 'black_hole'}]), 133 )).to.not.be.rejected;134135 // dash symbol136 await expect(executeTransaction(137 api, 138 bob, 139 api.tx.unique.setCollectionProperties(collectionId, [{key: 'semi-automatic'}]), 140 )).to.not.be.rejected;141142 // underscore symbol143 await expect(executeTransaction(144 api, 145 bob, 146 api.tx.unique.setCollectionProperties(collectionId, [{key: 'build.rs'}]), 147 )).to.not.be.rejected;148149 const propertyKeys = ['alpha', '123', 'black_hole', 'semi-automatic', 'build.rs'];150 const properties = (await api.rpc.unique.collectionProperties(collectionId, propertyKeys)).toHuman();151 expect(properties).to.be.deep.equal([152 {key: 'alpha', value: ''},153 {key: '123', value: ''},154 {key: 'black_hole', value: ''},155 {key: 'semi-automatic', value: ''},156 {key: 'build.rs', value: ''},157 ]);158 });159 });108160109 it('Changes properties of a collection', async () => {161 it('Changes properties of a collection', async () => {110 await usingApi(async api => {162 await usingApi(async api => {241293242 const invalidProperties = [294 const invalidProperties = [243 [{key: 'electron', value: 'negative'}, {key: 'string theory', value: 'understandable'}],295 [{key: 'electron', value: 'negative'}, {key: 'string theory', value: 'understandable'}],244 [{key: 'Mr.Sandman', value: 'Bring me a gene'}],296 [{key: 'Mr/Sandman', value: 'Bring me a gene'}],245 [{key: 'déjà vu', value: 'hmm...'}],297 [{key: 'déjà vu', value: 'hmm...'}],246 ];298 ];247299310 await expect(executeTransaction(362 await expect(executeTransaction(311 api, 363 api, 312 alice, 364 alice, 313 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]), 365 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]), 314 )).to.not.be.rejected;366 )).to.not.be.rejected;315367316 await addCollectionAdminExpectSuccess(alice, collection, bob.address);368 await addCollectionAdminExpectSuccess(alice, collection, bob.address);317369318 await expect(executeTransaction(370 await expect(executeTransaction(319 api, 371 api, 320 alice, 372 alice, 321 api.tx.unique.setPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]), 373 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]), 322 )).to.not.be.rejected;374 )).to.not.be.rejected;323375324 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toHuman();376 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toHuman();336 await expect(executeTransaction(388 await expect(executeTransaction(337 api, 389 api, 338 alice, 390 alice, 339 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]), 391 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]), 340 )).to.not.be.rejected;392 )).to.not.be.rejected;341393342 await expect(executeTransaction(394 await expect(executeTransaction(343 api, 395 api, 344 alice, 396 alice, 345 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 397 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 346 )).to.not.be.rejected;398 )).to.not.be.rejected;347399348 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();400 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();368 await expect(executeTransaction(420 await expect(executeTransaction(369 api, 421 api, 370 bob, 422 bob, 371 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]), 423 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]), 372 )).to.be.rejectedWith(/common\.NoPermission/);424 )).to.be.rejectedWith(/common\.NoPermission/);373425374 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();426 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();391 await expect(executeTransaction(443 await expect(executeTransaction(392 api, 444 api, 393 alice, 445 alice, 394 api.tx.unique.setPropertyPermissions(collection, constitution), 446 api.tx.unique.setTokenPropertyPermissions(collection, constitution), 395 )).to.be.rejectedWith(/common\.PropertyLimitReached/);447 )).to.be.rejectedWith(/common\.PropertyLimitReached/);396448397 const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();449 const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();406 await expect(executeTransaction(458 await expect(executeTransaction(407 api, 459 api, 408 alice, 460 alice, 409 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 461 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 410 )).to.not.be.rejected;462 )).to.not.be.rejected;411463412 await expect(executeTransaction(464 await expect(executeTransaction(413 api, 465 api, 414 alice, 466 alice, 415 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]), 467 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]), 416 )).to.be.rejectedWith(/common\.NoPermission/);468 )).to.be.rejectedWith(/common\.NoPermission/);417469418 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();470 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();436 await expect(executeTransaction(488 await expect(executeTransaction(437 api, 489 api, 438 alice, 490 alice, 439 api.tx.unique.setPropertyPermissions(collection, invalidProperties[i]), 491 api.tx.unique.setTokenPropertyPermissions(collection, invalidProperties[i]), 440 ), `on setting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);492 ), `on setting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);441 }493 }442494443 await expect(executeTransaction(495 await expect(executeTransaction(444 api, 496 api, 445 alice, 497 alice, 446 api.tx.unique.setPropertyPermissions(collection, [{key: '', permission: {}}]), 498 api.tx.unique.setTokenPropertyPermissions(collection, [{key: '', permission: {}}]), 447 ), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);499 ), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);448500449 const correctKey = '--0x03116e387820CA05'; // PolkadotJS would parse this as an already encoded hex-string501 const correctKey = '--0x03116e387820CA05'; // PolkadotJS would parse this as an already encoded hex-string450 await expect(executeTransaction(502 await expect(executeTransaction(451 api, 503 api, 452 alice, 504 alice, 453 api.tx.unique.setPropertyPermissions(collection, [505 api.tx.unique.setTokenPropertyPermissions(collection, [454 {key: correctKey, permission: {collectionAdmin: true}},506 {key: correctKey, permission: {collectionAdmin: true}},455 ]), 507 ]), 456 ), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;508 ), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;524 await expect(executeTransaction(576 await expect(executeTransaction(525 api, 577 api, 526 alice, 578 alice, 527 api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 579 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 528 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;580 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;529581530 await expect(executeTransaction(582 await expect(executeTransaction(560 await expect(executeTransaction(612 await expect(executeTransaction(561 api, 613 api, 562 alice, 614 alice, 563 api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 615 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 564 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;616 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;565617566 await expect(executeTransaction(618 await expect(executeTransaction(603 await expect(executeTransaction(655 await expect(executeTransaction(604 api, 656 api, 605 alice, 657 alice, 606 api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 658 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 607 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;659 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;608660609 await expect(executeTransaction(661 await expect(executeTransaction(669 await expect(executeTransaction(721 await expect(executeTransaction(670 api, 722 api, 671 alice, 723 alice, 672 api.tx.unique.setPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]), 724 api.tx.unique.setTokenPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]), 673 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;725 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;674726675 await expect(executeTransaction(727 await expect(executeTransaction(746 await expect(executeTransaction(798 await expect(executeTransaction(747 api, 799 api, 748 alice, 800 alice, 749 api.tx.unique.setPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]), 801 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]), 750 ), 'on setting a new non-permitted property').to.not.be.rejected;802 ), 'on setting a new non-permitted property').to.not.be.rejected;751803752 await expect(executeTransaction(804 await expect(executeTransaction(766 await expect(executeTransaction(818 await expect(executeTransaction(767 api, 819 api, 768 alice, 820 alice, 769 api.tx.unique.setPropertyPermissions(collection, [821 api.tx.unique.setTokenPropertyPermissions(collection, [770 {key: 'a_holy_book', permission: {collectionAdmin: true, tokenOwner: true}}, 822 {key: 'a_holy_book', permission: {collectionAdmin: true, tokenOwner: true}}, 771 {key: 'young_years', permission: {collectionAdmin: true, tokenOwner: true}},823 {key: 'young_years', permission: {collectionAdmin: true, tokenOwner: true}},772 ]), 824 ]), tests/src/nesting/rules-smoke.test.tsdiffbeforeafterboth27 await usingApi(async api => {27 await usingApi(async api => {28 const collection = await createCollectionExpectSuccess({mode: {type: 'Fungible',decimalPoints:0}});28 const collection = await createCollectionExpectSuccess({mode: {type: 'Fungible',decimalPoints:0}});29 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {Fungible: {Value: 1}})))29 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {Fungible: {Value: 1}})))30 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);30 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);313132 await createFungibleItemExpectSuccess(alice, collection, {Value:1n}, {Substrate: alice.address});32 await createFungibleItemExpectSuccess(alice, collection, {Value:1n}, {Substrate: alice.address});33 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, 0, 1n)))33 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, 0, 1n)))34 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);34 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);35 });35 });36 });36 });373738 it('called for nonfungible', async () => {38 it('called for nonfungible', async () => {39 await usingApi(async api => {39 await usingApi(async api => {40 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});40 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});41 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {NFT: {properties: []}})))41 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {NFT: {properties: []}})))42 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);42 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);434344 const token = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});44 const token = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});45 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))45 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))46 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);46 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);47 });47 });48 });48 });494950 it('called for refungible', async () => {50 it('called for refungible', async () => {51 await usingApi(async api => {51 await usingApi(async api => {52 const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});52 const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});53 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {}})))53 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {}})))54 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);54 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);555556 const token = await createItemExpectSuccess(alice, collection, 'ReFungible', {Substrate: alice.address});56 const token = await createItemExpectSuccess(alice, collection, 'ReFungible', {Substrate: alice.address});57 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))57 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))58 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);58 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);59 });59 });60 });60 });61});61});tests/src/pallet-presence.test.tsdiffbeforeafterboth50 'unique',50 'unique',51 'nonfungible',51 'nonfungible',52 'refungible',52 'refungible',53 'rmrkcore',54 'rmrkequip',55 'scheduler',53 'scheduler',56 'charging',54 'charging',57];55];64];62];656366describe('Pallet presence', () => {64describe('Pallet presence', () => {65 before(async () => {66 await usingApi(async api => {67 const chain = await api.rpc.system.chain();6869 if (!chain.eq('UNIQUE')) {70 requiredPallets.push(...['rmrkcore', 'rmrkequip']);71 }72 });73 });7467 it('Required pallets are present', async () => {75 it('Required pallets are present', async () => {68 await usingApi(async api => {76 await usingApi(async api => {tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth118 const bob = privateKeyWrapper('//Bob');118 const bob = privateKeyWrapper('//Bob');119 const charlie = privateKeyWrapper('//Charlie');119 const charlie = privateKeyWrapper('//Charlie');120121 const addBobAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));122 await submitTransactionAsync(alice, addBobAdminTx);123 const addCharlieAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));124 await submitTransactionAsync(alice, addCharlieAdminTx);120125121 const adminListAfterAddAdmin = await getAdminList(api, collectionId);126 const adminListAfterAddAdmin = await getAdminList(api, collectionId);122 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));127 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));128 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));123129124 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));130 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));125 await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;131 await expect(submitTransactionExpectFailAsync(charlie, removeAdminTx)).to.be.rejected;126132127 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);133 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);128 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));134 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));tests/src/rmrk/rmrk.test.tsdiffbeforeafterboth11} from '../util/helpers';11} from '../util/helpers';12import {IKeyringPair} from '@polkadot/types/types';12import {IKeyringPair} from '@polkadot/types/types';13import {ApiPromise} from '@polkadot/api';13import {ApiPromise} from '@polkadot/api';14import {it} from 'mocha';141515let alice: IKeyringPair;16let alice: IKeyringPair;16let bob: IKeyringPair;17let bob: IKeyringPair;38 null,39 null,39 'nft-metadata',40 'nft-metadata',40 true,41 true,42 null,41 );43 );42 const events = await executeTransaction(api, sender, tx);44 const events = await executeTransaction(api, sender, tx);43 const result = getGenericResult(events, 'rmrkCore', 'NftMinted', (data) => {45 const result = getGenericResult(events, 'rmrkCore', 'NftMinted', (data) => {47 return result.data!;49 return result.data!;48}50}5152async function isUnique(): Promise<boolean> {53 return usingApi(async api => {54 const chain = await api.rpc.system.chain();5556 return chain.eq('UNIQUE');57 });58}495950describe('RMRK External Integration Test', () => {60describe('RMRK External Integration Test', async () => {61 const it_rmrk = (await isUnique() ? it : it.skip);6251 before(async () => {63 before(async () => {52 await usingApi(async (api, privateKeyWrapper) => {64 await usingApi(async (api, privateKeyWrapper) => {53 alice = privateKeyWrapper('//Alice');65 alice = privateKeyWrapper('//Alice');6667 54 });68 });55 });69 });567057 it('Creates a new RMRK collection that is mapped to a different ID and is tagged as external', async () => {71 it_rmrk('Creates a new RMRK collection that is mapped to a different ID and is tagged as external', async () => {58 await usingApi(async api => {72 await usingApi(async api => {59 // throwaway collection to bump last Unique collection ID to test ID mapping73 // throwaway collection to bump last Unique collection ID to test ID mapping60 await createCollectionExpectSuccess();74 await createCollectionExpectSuccess();69 });83 });70});84});718572describe('Negative Integration Test: External Collections, Internal Ops', () => {86describe('Negative Integration Test: External Collections, Internal Ops', async () => {73 let uniqueCollectionId: number;87 let uniqueCollectionId: number;74 let rmrkCollectionId: number;88 let rmrkCollectionId: number;75 let rmrkNftId: number;89 let rmrkNftId: number;9091 const it_rmrk = (await isUnique() ? it : it.skip);769277 before(async () => {93 before(async () => {78 await usingApi(async (api, privateKeyWrapper) => {94 await usingApi(async (api, privateKeyWrapper) => {87 });103 });88 });104 });8910590 it('[Negative] Forbids Unique operations with an external collection, handled by dispatch_call', async () => {106 it_rmrk('[Negative] Forbids Unique operations with an external collection, handled by dispatch_call', async () => {91 await usingApi(async api => {107 await usingApi(async api => {92 // Collection item creation108 // Collection item creation93109113 await expect(executeTransaction(api, alice, txDeleteCollectionProperties), 'deleting collection properties')129 await expect(executeTransaction(api, alice, txDeleteCollectionProperties), 'deleting collection properties')114 .to.be.rejectedWith(/common\.CollectionIsExternal/);130 .to.be.rejectedWith(/common\.CollectionIsExternal/);115131116 const txSetPropertyPermissions = api.tx.unique.setPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);132 const txsetTokenPropertyPermissions = api.tx.unique.setTokenPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);117 await expect(executeTransaction(api, alice, txSetPropertyPermissions), 'setting property permissions')133 await expect(executeTransaction(api, alice, txsetTokenPropertyPermissions), 'setting property permissions')118 .to.be.rejectedWith(/common\.CollectionIsExternal/);134 .to.be.rejectedWith(/common\.CollectionIsExternal/);119135120 // NFT136 // NFT146 });162 });147 });163 });148164149 it('[Negative] Forbids Unique collection operations with an external collection', async () => {165 it_rmrk('[Negative] Forbids Unique collection operations with an external collection', async () => {150 await usingApi(async api => {166 await usingApi(async api => {151 const txDestroyCollection = api.tx.unique.destroyCollection(uniqueCollectionId);167 const txDestroyCollection = api.tx.unique.destroyCollection(uniqueCollectionId);152 await expect(executeTransaction(api, alice, txDestroyCollection), 'destroying collection')168 await expect(executeTransaction(api, alice, txDestroyCollection), 'destroying collection')205 });221 });206});222});207223208describe('Negative Integration Test: Internal Collections, External Ops', () => {224describe('Negative Integration Test: Internal Collections, External Ops', async () => {209 let collectionId: number;225 let collectionId: number;210 let nftId: number;226 let nftId: number;227228 const it_rmrk = (await isUnique() ? it : it.skip);211229212 before(async () => {230 before(async () => {213 await usingApi(async (api, privateKeyWrapper) => {231 await usingApi(async (api, privateKeyWrapper) => {219 });237 });220 });238 });221239222 it('[Negative] Forbids RMRK operations with the internal collection and NFT (due to the lack of mapping)', async () => {240 it_rmrk('[Negative] Forbids RMRK operations with the internal collection and NFT (due to the lack of mapping)', async () => {223 await usingApi(async api => {241 await usingApi(async api => {224 const txChangeOwner = api.tx.rmrkCore.changeCollectionIssuer(collectionId, bob.address);242 const txChangeOwner = api.tx.rmrkCore.changeCollectionIssuer(collectionId, bob.address);225 await expect(executeTransaction(api, alice, txChangeOwner), 'changing collection issuer')243 await expect(executeTransaction(api, alice, txChangeOwner), 'changing collection issuer')226 .to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);244 .to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);227245246 const maxBurns = 10;228 const txBurnItem = api.tx.rmrkCore.burnNft(collectionId, nftId);247 const txBurnItem = api.tx.rmrkCore.burnNft(collectionId, nftId, maxBurns);229 await expect(executeTransaction(api, alice, txBurnItem), 'burning NFT').to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);248 await expect(executeTransaction(api, alice, txBurnItem), 'burning NFT').to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);230 });249 });231 });250 });tests/src/setCollectionLimits.test.tsdiffbeforeafterboth46 before(async () => {46 before(async () => {47 await usingApi(async (api, privateKeyWrapper) => {47 await usingApi(async (api, privateKeyWrapper) => {48 alice = privateKeyWrapper('//Alice');48 alice = privateKeyWrapper('//Alice');49 bob = privateKeyWrapper('//Bob');49 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});50 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});50 });51 });51 });52 });115 });116 });116 });117 });117118119 it('execute setCollectionLimits from admin collection', async () => {120 await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);121 await usingApi(async (api: ApiPromise) => {122 tx = api.tx.unique.setCollectionLimits(123 collectionIdForTesting,124 {125 accountTokenOwnershipLimit,126 sponsoredDataSize,127 // sponsoredMintSize,128 tokenLimit,129 },130 );131 await expect(submitTransactionAsync(bob, tx)).to.be.not.rejected;132 });133 });118});134});119135120describe('setCollectionLimits negative', () => {136describe('setCollectionLimits negative', () => {156 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;172 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;157 });173 });158 });174 });159 it('execute setCollectionLimits from admin collection', async () => {160 await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);161 await usingApi(async (api: ApiPromise) => {162 tx = api.tx.unique.setCollectionLimits(163 collectionIdForTesting,164 {165 accountTokenOwnershipLimit,166 sponsoredDataSize,167 // sponsoredMintSize,168 tokenLimit,169 },170 );171 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;172 });173 });174175175 it('fails when trying to enable OwnerCanTransfer after it was disabled', async () => {176 it('fails when trying to enable OwnerCanTransfer after it was disabled', async () => {176 const collectionId = await createCollectionExpectSuccess();177 const collectionId = await createCollectionExpectSuccess();tests/src/setCollectionSponsor.test.tsdiffbeforeafterboth65 await setCollectionSponsorExpectSuccess(collectionId, bob.address);65 await setCollectionSponsorExpectSuccess(collectionId, bob.address);66 await setCollectionSponsorExpectSuccess(collectionId, charlie.address);66 await setCollectionSponsorExpectSuccess(collectionId, charlie.address);67 });67 });68 it('Collection admin add sponsor', async () => {69 const collectionId = await createCollectionExpectSuccess();70 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);71 await setCollectionSponsorExpectSuccess(collectionId, charlie.address, '//Bob');72 });68});73});697470describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {75describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {94 await destroyCollectionExpectSuccess(collectionId);99 await destroyCollectionExpectSuccess(collectionId);95 await setCollectionSponsorExpectFailure(collectionId, bob.address);100 await setCollectionSponsorExpectFailure(collectionId, bob.address);96 });101 });97 it('(!negative test!) Collection admin add sponsor', async () => {98 const collectionId = await createCollectionExpectSuccess();99 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);100 await setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Bob');101 });102});102});103103tests/src/setMintPermission.test.tsdiffbeforeafterboth68 });68 });69 });69 });7071 it('Collection admin success on set', async () => {72 await usingApi(async () => {73 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});74 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);75 await setMintPermissionExpectSuccess(bob, collectionId, true);76 });77 });70});78});717972describe('Negative Integration Test setMintPermission', () => {80describe('Negative Integration Test setMintPermission', () => {102 await setMintPermissionExpectFailure(bob, collectionId, true);110 await setMintPermissionExpectFailure(bob, collectionId, true);103 });111 });104105 it('Collection admin fails on set', async () => {106 await usingApi(async () => {107 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});108 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);109 await setMintPermissionExpectFailure(bob, collectionId, true);110 });111 });112112113 it('ensure non-allow-listed non-privileged address can\'t mint tokens', async () => {113 it('ensure non-allow-listed non-privileged address can\'t mint tokens', async () => {114 await usingApi(async () => {114 await usingApi(async () => {tests/src/setPublicAccessMode.test.tsdiffbeforeafterboth104 });104 });105 });105 });106107 it('setPublicAccessMode by collection admin', async () => {108 await usingApi(async (api: ApiPromise) => {109 // tslint:disable-next-line: no-bitwise110 const collectionId = await createCollectionExpectSuccess();111 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);112 const tx = api.tx.unique.setCollectionPermissions(collectionId, {access: 'AllowList'});113 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.not.rejected;114 });115 });106});116});107117108describe('Negative Integration Test ext. collection admin setPublicAccessMode(): ', () => {118describe('Negative Integration Test ext. collection admin setPublicAccessMode(): ', () => {112 bob = privateKeyWrapper('//Bob');122 bob = privateKeyWrapper('//Bob');113 });123 });114 });124 });115 it('setPublicAccessMode by collection admin', async () => {116 await usingApi(async (api: ApiPromise) => {117 // tslint:disable-next-line: no-bitwise118 const collectionId = await createCollectionExpectSuccess();119 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);120 const tx = api.tx.unique.setCollectionPermissions(collectionId, {access: 'AllowList'});121 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;122 });123 });124});125});125126tests/src/transferFrom.test.tsdiffbeforeafterboth9999100 it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {100 it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {101 const collectionId = await createCollectionExpectSuccess();101 const collectionId = await createCollectionExpectSuccess();102 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});102 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);103 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);103104104 await transferFromExpectSuccess(collectionId, itemId, alice, bob, charlie);105 await transferFromExpectSuccess(collectionId, itemId, alice, bob, charlie);257 await usingApi(async () => {258 await usingApi(async () => {258 // nft259 // nft259 const nftCollectionId = await createCollectionExpectSuccess();260 const nftCollectionId = await createCollectionExpectSuccess();261 await setCollectionLimitsExpectSuccess(alice, nftCollectionId, {ownerCanTransfer: true});260 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');262 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');261 await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);263 await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);262 await approveExpectFail(nftCollectionId, newNftTokenId, alice, bob);264 await approveExpectFail(nftCollectionId, newNftTokenId, alice, bob);266 it('transferFrom burnt token before approve Fungible', async () => {268 it('transferFrom burnt token before approve Fungible', async () => {267 await usingApi(async () => {269 await usingApi(async () => {268 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});270 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});271 await setCollectionLimitsExpectSuccess(alice, fungibleCollectionId, {ownerCanTransfer: true});269 const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');272 const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');270 await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);273 await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);271 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);274 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);276 it('transferFrom burnt token before approve ReFungible', async () => {279 it('transferFrom burnt token before approve ReFungible', async () => {277 await usingApi(async () => {280 await usingApi(async () => {278 const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});281 const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});282 await setCollectionLimitsExpectSuccess(alice, reFungibleCollectionId, {ownerCanTransfer: true});279 const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');283 const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');280 await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);284 await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);281 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, alice, bob);285 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, alice, bob);tests/src/util/helpers.tsdiffbeforeafterboth921 });921 });922}922}923924export async function adminApproveFromExpectFail(925 collectionId: number,926 tokenId: number, admin: IKeyringPair, owner: CrossAccountId | string, approved: CrossAccountId | string, amount: number | bigint = 1,927) {928 await usingApi(async (api: ApiPromise) => {929 const approveUniqueTx = api.tx.unique.approve(normalizeAccountId(approved), collectionId, tokenId, amount);930 const events = await expect(submitTransactionAsync(admin, approveUniqueTx)).to.be.rejected;931 const result = getGenericResult(events);932 expect(result.success).to.be.false;933 });934}923935924export async function936export async function925getFreeBalance(account: IKeyringPair): Promise<bigint> {937getFreeBalance(account: IKeyringPair): Promise<bigint> {tests/update_types.shdiffbeforeafterboth7fi7fi889rsync -ar --exclude .gitignore src/interfaces/ unique-types-js9rsync -ar --exclude .gitignore src/interfaces/ unique-types-js10for file in unique-types-js/augment-* unique-types-js/**/types.ts unique-types-js/**/registry.ts; do10for file in unique-types-js/augment-* unique-types-js/**/types.ts unique-types-js/registry.ts; do11 sed -i '1s;^;//@ts-nocheck\n;' $file11 sed -i '1s;^;//@ts-nocheck\n;' $file12done12done1313