From f2ed65d6da99565c58278a36c32d06dc2ad5d940 Mon Sep 17 00:00:00 2001 From: Trubnikov Sergey Date: Fri, 10 Jun 2022 15:14:53 +0000 Subject: [PATCH] Merge branch 'develop' into feature/CORE-386_1 --- --- a/Cargo.lock +++ b/Cargo.lock @@ -5356,7 +5356,7 @@ "pallet-transaction-payment-rpc-runtime-api", "pallet-treasury", "pallet-unique", - "pallet-unq-scheduler", + "pallet-unique-scheduler", "pallet-xcm", "parachain-info", "parity-scale-codec 3.1.2", @@ -6646,7 +6646,7 @@ ] [[package]] -name = "pallet-unq-scheduler" +name = "pallet-unique-scheduler" version = "0.1.0" dependencies = [ "frame-benchmarking", @@ -8590,7 +8590,7 @@ "pallet-transaction-payment-rpc-runtime-api", "pallet-treasury", "pallet-unique", - "pallet-unq-scheduler", + "pallet-unique-scheduler", "pallet-xcm", "parachain-info", "parity-scale-codec 3.1.2", @@ -12643,7 +12643,7 @@ "pallet-transaction-payment-rpc-runtime-api", "pallet-treasury", "pallet-unique", - "pallet-unq-scheduler", + "pallet-unique-scheduler", "pallet-xcm", "parachain-info", "parity-scale-codec 3.1.2", @@ -12688,6 +12688,7 @@ "pallet-nonfungible", "pallet-refungible", "pallet-unique", + "pallet-unique-scheduler", "parity-scale-codec 3.1.2", "rmrk-rpc", "scale-info", --- a/Makefile +++ b/Makefile @@ -65,6 +65,14 @@ --template .maintain/frame-weight-template.hbs --steps=50 --repeat=200 --heap-pages=4096 \ --output=./pallets/$(PALLET)/src/weights.rs +.PHONY: _bench2 +_bench2: + cargo run --release --features runtime-benchmarks,unique-runtime -- \ + benchmark pallet --pallet pallet-$(PALLET) \ + --wasm-execution compiled --extrinsic '*' \ + --template .maintain/frame-weight-template.hbs --steps=50 --repeat=200 --heap-pages=4096 \ + --output=./pallets/$(PALLET_DIR)/src/weights.rs + .PHONY: bench-evm-migration bench-evm-migration: make _bench PALLET=evm-migration @@ -93,9 +101,13 @@ bench-structure: make _bench PALLET=structure +.PHONY: bench-scheduler +bench-scheduler: + make _bench2 PALLET=unique-scheduler PALLET_DIR=scheduler + .PHONY: bench-rmrk-core bench-rmrk-core: make _bench PALLET=proxy-rmrk-core .PHONY: bench -bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-rmrk-core +bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core --- a/pallets/common/src/benchmarking.rs +++ b/pallets/common/src/benchmarking.rs @@ -20,7 +20,7 @@ use frame_benchmarking::{benchmarks, account}; use up_data_structs::{ CollectionMode, CreateCollectionData, CollectionId, Property, PropertyKey, PropertyValue, - CollectionPermissions, NestingRule, MAX_COLLECTION_NAME_LENGTH, + CollectionPermissions, NestingPermissions, MAX_COLLECTION_NAME_LENGTH, MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH, MAX_PROPERTIES_PER_ITEM, }; use frame_support::{ @@ -94,7 +94,12 @@ description, token_prefix, permissions: Some(CollectionPermissions { - nesting: Some(NestingRule::Permissive), + nesting: Some(NestingPermissions { + token_owner: false, + admin: false, + restricted: None, + permissive: true, + }), ..Default::default() }), ..Default::default() --- a/pallets/common/src/erc.rs +++ b/pallets/common/src/erc.rs @@ -22,10 +22,7 @@ pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId}; use pallet_evm_coder_substrate::dispatch_to_evm; use sp_std::vec::Vec; -use up_data_structs::{ - Property, SponsoringRateLimit, NestingRule, OwnerRestrictedSet, AccessMode, - CollectionPermissions, -}; +use up_data_structs::{Property, SponsoringRateLimit, OwnerRestrictedSet, AccessMode, CollectionPermissions}; use alloc::format; use crate::{Pallet, CollectionHandle, Config, CollectionProperties}; @@ -219,13 +216,13 @@ #[solidity(rename_selector = "setCollectionNesting")] fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result { check_is_owner_or_admin(caller, self)?; - let permissions = CollectionPermissions { - nesting: Some(match enable { - false => NestingRule::Disabled, - true => NestingRule::Owner, - }), - ..Default::default() - }; + + let mut permissions = self.collection.permissions.clone(); + let mut nesting = permissions.nesting().clone(); + nesting.token_owner = enable; + nesting.restricted = None; + permissions.nesting = Some(nesting); + self.collection.permissions = >::clamp_permissions( self.collection.mode.clone(), &self.collection.permissions, @@ -246,30 +243,31 @@ if collections.is_empty() { return Err("no addresses provided".into()); } - if collections.len() >= OwnerRestrictedSet::bound() { - return Err(Error::Revert(format!( - "out of bound: {} >= {}", - collections.len(), - OwnerRestrictedSet::bound() - ))); - } check_is_owner_or_admin(caller, self)?; - let permissions = CollectionPermissions { - nesting: Some(match enable { - false => NestingRule::Disabled, - true => { - let mut bv = OwnerRestrictedSet::new(); - for i in collections { - bv.try_insert(crate::eth::map_eth_to_id(&i).ok_or_else(|| { - Error::Revert("can't convert address into collection id".into()) - })?) - .map_err(|e| Error::Revert(format!("{:?}", e)))?; - } - NestingRule::OwnerRestricted(bv) + + let mut permissions = self.collection.permissions.clone(); + match enable { + false => { + let mut nesting = permissions.nesting().clone(); + nesting.token_owner = false; + nesting.restricted = None; + permissions.nesting = Some(nesting); + } + true => { + let mut bv = OwnerRestrictedSet::new(); + for i in collections { + bv.try_insert(crate::eth::map_eth_to_id(&i).ok_or(Error::Revert( + "Can't convert address into collection id".into(), + ))?) + .map_err(|_| "too many collections")?; } - }), - ..Default::default() + let mut nesting = permissions.nesting().clone(); + nesting.token_owner = true; + nesting.restricted = Some(bv); + permissions.nesting = Some(nesting); + } }; + self.collection.permissions = >::clamp_permissions( self.collection.mode.clone(), &self.collection.permissions, --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -430,10 +430,8 @@ /// Not sufficient funds to perform action NotSufficientFounds, - /// Collection has nesting disabled - NestingIsDisabled, - /// Only owner may nest tokens under this collection - OnlyOwnerAllowedToNest, + /// User not passed nesting rule + UserIsNotAllowedToNest, /// Only tokens from specific collections may nest tokens under this SourceCollectionIsNotAllowedToNest, @@ -1212,7 +1210,11 @@ limit_default_clone!(old_limit, new_limit, access => {}, mint_mode => {}, - nesting => {}, + nesting => ensure!( + // Permissive is only allowed for tests and internal usage of chain for now + old_limit.permissive || !new_limit.permissive, + >::NoPermission, + ), ); Ok(new_limit) } --- a/pallets/nonfungible/src/lib.rs +++ b/pallets/nonfungible/src/lib.rs @@ -27,8 +27,8 @@ }; use up_data_structs::{ AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData, - mapping::TokenAddressMapping, NestingRule, budget::Budget, Property, PropertyPermission, - PropertyKey, PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild, + mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission, PropertyKey, + PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild, }; use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm}; use pallet_common::{ @@ -996,38 +996,29 @@ under: TokenId, nesting_budget: &dyn Budget, ) -> DispatchResult { - fn ensure_sender_allowed( - collection: CollectionId, - token: TokenId, - for_nest: (CollectionId, TokenId), - sender: T::CrossAccountId, - budget: &dyn Budget, - ) -> DispatchResult { + let nesting = handle.permissions.nesting(); + if nesting.permissive { + // Pass + } else if nesting.token_owner + && >::check_indirectly_owned( + sender.clone(), + handle.id, + under, + Some(from), + nesting_budget, + )? { + // Pass + } else if nesting.admin && handle.is_owner_or_admin(&sender) { + // Pass + } else { + fail!(>::UserIsNotAllowedToNest); + } + + if let Some(whitelist) = &nesting.restricted { ensure!( - >::check_indirectly_owned( - sender, - collection, - token, - Some(for_nest), - budget - )?, - >::OnlyOwnerAllowedToNest, + whitelist.contains(&from.0), + >::SourceCollectionIsNotAllowedToNest ); - Ok(()) - } - match handle.permissions.nesting() { - NestingRule::Disabled => fail!(>::NestingIsDisabled), - NestingRule::Owner => { - ensure_sender_allowed::(handle.id, under, from, sender, nesting_budget)? - } - NestingRule::OwnerRestricted(whitelist) => { - ensure!( - whitelist.contains(&from.0), - >::SourceCollectionIsNotAllowedToNest - ); - ensure_sender_allowed::(handle.id, under, from, sender, nesting_budget)? - } - NestingRule::Permissive => {} } Ok(()) } --- a/pallets/proxy-rmrk-core/src/lib.rs +++ b/pallets/proxy-rmrk-core/src/lib.rs @@ -200,7 +200,13 @@ .try_into() .map_err(|_| >::CollectionTokenPrefixLimitExceeded)?, permissions: Some(CollectionPermissions { - nesting: Some(NestingRule::Owner), + nesting: Some(NestingPermissions { + token_owner: true, + admin: false, + restricted: None, + + permissive: false, + }), ..Default::default() }), ..Default::default() @@ -600,7 +606,7 @@ &budget, ) .map_err(|err| { - if err == >::OnlyOwnerAllowedToNest.into() { + if err == >::UserIsNotAllowedToNest.into() { >::CannotAcceptNonOwnedNft.into() } else { Self::map_unique_err_to_proxy(err) --- a/pallets/scheduler/Cargo.toml +++ b/pallets/scheduler/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "pallet-unq-scheduler" +name = "pallet-unique-scheduler" version = "0.1.0" authors = ["Unique Network "] edition = "2021" --- a/pallets/scheduler/src/benchmarking.rs +++ b/pallets/scheduler/src/benchmarking.rs @@ -34,35 +34,57 @@ //! Scheduler pallet benchmarking. -#![cfg(feature = "runtime-benchmarks")] - use super::*; -use sp_std::{vec, prelude::*}; +use frame_benchmarking::{benchmarks, account}; +use frame_support::{ + ensure, + traits::{OnInitialize}, +}; use frame_system::RawOrigin; -use frame_support::{ensure, traits::OnInitialize}; -use frame_benchmarking::{benchmarks, impl_benchmark_test_suite}; +use sp_runtime::traits::Hash; +use sp_std::{prelude::*, vec}; -use crate::Module as Scheduler; +use crate::Pallet as Scheduler; use frame_system::Pallet as System; +use frame_support::traits::Currency; const BLOCK_NUMBER: u32 = 2; -// Add `n` named items to the schedule -fn fill_schedule(when: T::BlockNumber, n: u32) -> Result<(), &'static str> { - // Essentially a no-op call. - let call = frame_system::Call::set_storage { items: vec![] }; +/// Add `n` named items to the schedule. +/// +/// For `resolved`: +/// - `None`: aborted (hash without preimage) +/// - `Some(true)`: hash resolves into call if possible, plain call otherwise +/// - `Some(false)`: plain call +fn fill_schedule( + when: T::BlockNumber, + n: u32, + periodic: bool, + resolved: Option, +) -> Result<(), &'static str> { + let t = DispatchTime::At(when); + let caller = account("user", 0, 1); + + // Give the sender account max funds for transfer (their account will never reasonably be killed). + T::Currency::make_free_balance_be(&caller, T::Currency::minimum_balance()); + for i in 0..n { - // Named schedule is strictly heavier than anonymous - Scheduler::::do_schedule_named( - i.encode(), - DispatchTime::At(when), - // Add periodicity - Some((T::BlockNumber::one(), 100)), - // HARD_DEADLINE priority means it gets executed no matter what - 0, - frame_system::RawOrigin::Root.into(), - call.clone().into(), - )?; + let (call, hash) = call_and_hash::(i); + let call_or_hash = match resolved { + Some(_) => call.into(), + None => CallOrHashOf::::Hash(hash), + }; + let period = match periodic { + true => Some(((i + 100).into(), 100)), + false => None, + }; + + let slice_id: [u8; 4] = i.encode().try_into().unwrap(); + let mut id: [u8; 16] = [0; 16]; + id[..4].clone_from_slice(&slice_id); + + let origin = frame_system::RawOrigin::Signed(caller.clone()).into(); + Scheduler::::do_schedule_named(id, t, period, 0, origin, call_or_hash)?; } ensure!( Agenda::::get(when).len() == n as usize, @@ -71,54 +93,121 @@ Ok(()) } +fn call_and_hash(i: u32) -> (::Call, T::Hash) { + // Essentially a no-op call. + let call: ::Call = frame_system::Call::remark { remark: i.encode() }.into(); + let hash = T::Hashing::hash_of(&call); + (call, hash) +} + benchmarks! { - schedule { - let s in 0 .. T::MaxScheduledPerBlock::get(); + on_initialize_periodic_named_resolved { + let s in 1 .. T::MaxScheduledPerBlock::get(); let when = BLOCK_NUMBER.into(); - let periodic = Some((T::BlockNumber::one(), 100)); - let priority = 0; - // Essentially a no-op call. - let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into()); + fill_schedule::(when, s, true, Some(true))?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } + verify { + assert_eq!(System::::event_count(), s); + for i in 0..s { + assert_eq!(Agenda::::get(when + (i + 100).into()).len(), 1 as usize); + } + } - fill_schedule::(when, s)?; - }: _(RawOrigin::Root, when, periodic, priority, call) + on_initialize_named_resolved { + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, false, Some(true))?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } verify { - ensure!( - Agenda::::get(when).len() == (s + 1) as usize, - "didn't add to schedule" - ); + assert_eq!(System::::event_count(), s); + assert!(Agenda::::iter().count() == 0); } - cancel { + on_initialize_periodic { let s in 1 .. T::MaxScheduledPerBlock::get(); let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, true, Some(false))?; + }: { Scheduler::::on_initialize(when); } + verify { + assert_eq!(System::::event_count(), s); + for i in 0..s { + assert_eq!(Agenda::::get(when + (i + 100).into()).len(), 1 as usize); + } + } - fill_schedule::(when, s)?; - assert_eq!(Agenda::::get(when).len(), s as usize); - }: _(RawOrigin::Root, when, 0) + on_initialize_periodic_resolved { + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, true, Some(true))?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } verify { - ensure!( - Lookup::::get(0.encode()).is_none(), - "didn't remove from lookup" - ); - // Removed schedule is NONE - ensure!( - Agenda::::get(when)[0].is_none(), - "didn't remove from schedule" - ); + assert_eq!(System::::event_count(), s ); + for i in 0..s { + assert_eq!(Agenda::::get(when + (i + 100).into()).len(), 1 as usize); + } } + on_initialize_aborted { + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, false, None)?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } + verify { + assert_eq!(System::::event_count(), 0); + } + + on_initialize_named_aborted { + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, false, Some(false))?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } + verify { + } + + on_initialize_named { + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, false, None)?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } + verify { + assert_eq!(System::::event_count(), 0); + } + + on_initialize { + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, false, Some(false))?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } + verify { + assert_eq!(System::::event_count(), s); + assert!(Agenda::::iter().count() == 0); + } + + on_initialize_resolved { + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + fill_schedule::(when, s, false, Some(true))?; + }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } + verify { + assert_eq!(System::::event_count(), s); + assert!(Agenda::::iter().count() == 0); + } + schedule_named { + let caller: T::AccountId = account("user", 0, 1); + let origin: RawOrigin = frame_system::RawOrigin::Signed(caller.clone()); let s in 0 .. T::MaxScheduledPerBlock::get(); - let id = s.encode(); + let slice_id: [u8; 4] = s.encode().try_into().unwrap(); + let mut id: [u8; 16] = [0; 16]; + id[..4].clone_from_slice(&slice_id); let when = BLOCK_NUMBER.into(); let periodic = Some((T::BlockNumber::one(), 100)); let priority = 0; // Essentially a no-op call. - let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into()); - - fill_schedule::(when, s)?; - }: _(RawOrigin::Root, id, when, periodic, priority, call) + let inner_call = frame_system::Call::set_storage { items: vec![] }.into(); + let call = Box::new(CallOrHashOf::::Value(inner_call)); + fill_schedule::(when, s, true, Some(false))?; + }: _(origin, id, when, periodic, priority, call) verify { ensure!( Agenda::::get(when).len() == (s + 1) as usize, @@ -127,14 +216,16 @@ } cancel_named { + let caller: T::AccountId = account("user", 0, 1); + let origin: RawOrigin = frame_system::RawOrigin::Signed(caller.clone()); let s in 1 .. T::MaxScheduledPerBlock::get(); let when = BLOCK_NUMBER.into(); - - fill_schedule::(when, s)?; - }: _(RawOrigin::Root, 0.encode()) + let id = 0.encode().try_into().unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]); + fill_schedule::(when, s, true, Some(false))?; + }: _(origin, id) verify { ensure!( - Lookup::::get(0.encode()).is_none(), + Lookup::::get(id).is_none(), "didn't remove from lookup" ); // Removed schedule is NONE @@ -144,21 +235,5 @@ ); } - // TODO [#7141]: Make this more complex and flexible so it can be used in automation. - #[extra] - on_initialize { - let s in 0 .. T::MaxScheduledPerBlock::get(); - let when = BLOCK_NUMBER.into(); - fill_schedule::(when, s)?; - }: { Scheduler::::on_initialize(BLOCK_NUMBER.into()); } - verify { - assert_eq!(System::::event_count(), s); - // Next block should have all the schedules again - ensure!( - Agenda::::get(when + T::BlockNumber::one()).len() == s as usize, - "didn't append schedule" - ); - } + impl_benchmark_test_suite!(Scheduler, crate::mock::new_test_ext(), crate::mock::Test); } - -impl_benchmark_test_suite!(Scheduler, crate::tests::new_test_ext(), crate::tests::Test,); --- a/pallets/scheduler/src/lib.rs +++ b/pallets/scheduler/src/lib.rs @@ -60,9 +60,8 @@ // Ensure we're `no_std` when compiling for Wasm. #![cfg_attr(not(feature = "std"), no_std)] -// FIXME -// #[cfg(feature = "runtime-benchmarks")] -// mod benchmarking; +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; pub mod weights; @@ -159,11 +158,10 @@ Self::on_initialize_periodic(2) - Self::on_initialize_periodic(1) } (true, true, Some(false)) => { - Self::on_initialize_periodic_named(2) - Self::on_initialize_periodic_named(1) - } - (false, false, Some(true)) => { - Self::on_initialize_resolved(2) - Self::on_initialize_resolved(1) + Self::on_initialize_periodic_named_resolved(2) + - Self::on_initialize_periodic_named_resolved(1) } + (false, false, Some(true)) => Self::on_initialize(2) - Self::on_initialize(1), (false, true, Some(true)) => { Self::on_initialize_named_resolved(2) - Self::on_initialize_named_resolved(1) } @@ -608,97 +606,8 @@ } Ok(when) - } - - fn do_schedule( - when: DispatchTime, - maybe_periodic: Option>, - priority: schedule::Priority, - origin: T::PalletsOrigin, - call: CallOrHashOf, - ) -> Result, DispatchError> { - let when = Self::resolve_time(when)?; - call.ensure_requested::(); - - // sanitize maybe_periodic - let maybe_periodic = maybe_periodic - .filter(|p| p.1 > 1 && !p.0.is_zero()) - // Remove one from the number of repetitions since we will schedule one now. - .map(|(p, c)| (p, c - 1)); - let s = Some(Scheduled { - maybe_id: None, - priority, - call, - maybe_periodic, - origin, - _phantom: PhantomData::::default(), - }); - Agenda::::append(when, s); - let index = Agenda::::decode_len(when).unwrap_or(1) as u32 - 1; - Self::deposit_event(Event::Scheduled { when, index }); - - Ok((when, index)) } - fn do_cancel( - origin: Option, - (when, index): TaskAddress, - ) -> Result<(), DispatchError> { - let scheduled = Agenda::::try_mutate(when, |agenda| { - agenda.get_mut(index as usize).map_or( - Ok(None), - |s| -> Result>, DispatchError> { - if let (Some(ref o), Some(ref s)) = (origin, s.borrow()) { - if matches!( - T::OriginPrivilegeCmp::cmp_privilege(o, &s.origin), - Some(Ordering::Less) | None - ) { - return Err(BadOrigin.into()); - } - }; - Ok(s.take()) - }, - ) - })?; - if let Some(s) = scheduled { - s.call.ensure_unrequested::(); - if let Some(id) = s.maybe_id { - Lookup::::remove(id); - } - Self::deposit_event(Event::Canceled { when, index }); - Ok(()) - } else { - Err(Error::::NotFound)? - } - } - - fn do_reschedule( - (when, index): TaskAddress, - new_time: DispatchTime, - ) -> Result, DispatchError> { - let new_time = Self::resolve_time(new_time)?; - - if new_time == when { - return Err(Error::::RescheduleNoChange.into()); - } - - Agenda::::try_mutate(when, |agenda| -> DispatchResult { - let task = agenda.get_mut(index as usize).ok_or(Error::::NotFound)?; - let task = task.take().ok_or(Error::::NotFound)?; - Agenda::::append(new_time, Some(task)); - Ok(()) - })?; - - let new_index = Agenda::::decode_len(new_time).unwrap_or(1) as u32 - 1; - Self::deposit_event(Event::Canceled { when, index }); - Self::deposit_event(Event::Scheduled { - when: new_time, - index: new_index, - }); - - Ok((new_time, new_index)) - } - fn do_schedule_named( id: ScheduledId, when: DispatchTime, @@ -789,125 +698,5 @@ Err(Error::::NotFound)? } }) - } - - fn do_reschedule_named( - id: ScheduledId, - new_time: DispatchTime, - ) -> Result, DispatchError> { - let new_time = Self::resolve_time(new_time)?; - - Lookup::::try_mutate_exists( - id, - |lookup| -> Result, DispatchError> { - let (when, index) = lookup.ok_or(Error::::NotFound)?; - - if new_time == when { - return Err(Error::::RescheduleNoChange.into()); - } - - Agenda::::try_mutate(when, |agenda| -> DispatchResult { - let task = agenda.get_mut(index as usize).ok_or(Error::::NotFound)?; - let task = task.take().ok_or(Error::::NotFound)?; - Agenda::::append(new_time, Some(task)); - - Ok(()) - })?; - - let new_index = Agenda::::decode_len(new_time).unwrap_or(1) as u32 - 1; - Self::deposit_event(Event::Canceled { when, index }); - Self::deposit_event(Event::Scheduled { - when: new_time, - index: new_index, - }); - - *lookup = Some((new_time, new_index)); - - Ok((new_time, new_index)) - }, - ) - } -} - -impl schedule::v2::Anon::Call, T::PalletsOrigin> - for Pallet -{ - type Address = TaskAddress; - type Hash = T::Hash; - - fn schedule( - when: DispatchTime, - maybe_periodic: Option>, - priority: schedule::Priority, - origin: T::PalletsOrigin, - call: CallOrHashOf, - ) -> Result { - Self::do_schedule(when, maybe_periodic, priority, origin, call) - } - - fn cancel((when, index): Self::Address) -> Result<(), ()> { - Self::do_cancel(None, (when, index)).map_err(|_| ()) - } - - fn reschedule( - address: Self::Address, - when: DispatchTime, - ) -> Result { - Self::do_reschedule(address, when) - } - - fn next_dispatch_time((when, index): Self::Address) -> Result { - Agenda::::get(when) - .get(index as usize) - .ok_or(()) - .map(|_| when) - } -} - -impl schedule::v2::Named::Call, T::PalletsOrigin> - for Pallet -{ - type Address = TaskAddress; - type Hash = T::Hash; - - fn schedule_named( - id: Vec, - when: DispatchTime, - maybe_periodic: Option>, - priority: schedule::Priority, - origin: T::PalletsOrigin, - call: CallOrHashOf, - ) -> Result { - let inner_id: ScheduledId = id - .try_into() - .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]); - Self::do_schedule_named(inner_id, when, maybe_periodic, priority, origin, call) - .map_err(|_| ()) - } - - fn cancel_named(id: Vec) -> Result<(), ()> { - let inner_id: ScheduledId = id - .try_into() - .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]); - Self::do_cancel_named(None, inner_id).map_err(|_| ()) - } - - fn reschedule_named( - id: Vec, - when: DispatchTime, - ) -> Result { - let inner_id: ScheduledId = id - .try_into() - .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]); - Self::do_reschedule_named(inner_id, when) - } - - fn next_dispatch_time(id: Vec) -> Result { - let inner_id: ScheduledId = id - .try_into() - .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]); - Lookup::::get(inner_id) - .and_then(|(when, index)| Agenda::::get(when).get(index as usize).map(|_| when)) - .ok_or(()) } } --- a/pallets/scheduler/src/weights.rs +++ b/pallets/scheduler/src/weights.rs @@ -1,213 +1,183 @@ -// This file is part of Substrate. - -// Copyright (C) 2022 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs -//! Autogenerated weights for pallet_scheduler +//! Autogenerated weights for pallet_unique_scheduler //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-01-31, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 +//! DATE: 2022-06-09, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/production/substrate +// target/release/unique-collator // benchmark -// --chain=dev +// pallet +// --pallet +// pallet-unique-scheduler +// --wasm-execution +// compiled +// --extrinsic +// * +// --template +// .maintain/frame-weight-template.hbs // --steps=50 -// --repeat=20 -// --pallet=pallet_scheduler -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled +// --repeat=200 // --heap-pages=4096 -// --output=./frame/scheduler/src/weights.rs -// --template=.maintain/frame-weight-template.hbs -// --header=HEADER-APACHE2 -// --raw +// --output=./pallets/scheduler/src/weights.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +#![allow(clippy::unnecessary_cast)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; -/// Weight functions needed for pallet_scheduler. +/// Weight functions needed for pallet_unique_scheduler. pub trait WeightInfo { fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight; fn on_initialize_named_resolved(s: u32, ) -> Weight; + fn on_initialize_periodic(s: u32, ) -> Weight; fn on_initialize_periodic_resolved(s: u32, ) -> Weight; - fn on_initialize_resolved(s: u32, ) -> Weight; + fn on_initialize_aborted(s: u32, ) -> Weight; fn on_initialize_named_aborted(s: u32, ) -> Weight; - fn on_initialize_aborted(s: u32, ) -> Weight; - fn on_initialize_periodic_named(s: u32, ) -> Weight; - fn on_initialize_periodic(s: u32, ) -> Weight; fn on_initialize_named(s: u32, ) -> Weight; fn on_initialize(s: u32, ) -> Weight; - fn schedule(s: u32, ) -> Weight; - fn cancel(s: u32, ) -> Weight; + fn on_initialize_resolved(s: u32, ) -> Weight; fn schedule_named(s: u32, ) -> Weight; fn cancel_named(s: u32, ) -> Weight; } -/// Weights for pallet_scheduler using the Substrate node and recommended hardware. +/// Weights for pallet_unique_scheduler using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight { - (11_587_000 as Weight) - // Standard Error: 17_000 - .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(s as Weight))) + (35_999_000 as Weight) + // Standard Error: 3_000 + .saturating_add((32_234_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:1 w:1) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_named_resolved(s: u32, ) -> Weight { - (8_965_000 as Weight) - // Standard Error: 11_000 - .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight))) + (34_874_000 as Weight) + // Standard Error: 2_000 + .saturating_add((23_114_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) - fn on_initialize_periodic_resolved(s: u32, ) -> Weight { - (8_654_000 as Weight) - // Standard Error: 17_000 - .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight))) - } - // Storage: Scheduler Agenda (r:1 w:1) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) - fn on_initialize_resolved(s: u32, ) -> Weight { - (9_303_000 as Weight) - // Standard Error: 10_000 - .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) + fn on_initialize_periodic(s: u32, ) -> Weight { + (36_469_000 as Weight) + // Standard Error: 3_000 + .saturating_add((32_202_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:0) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) - fn on_initialize_named_aborted(s: u32, ) -> Weight { - (7_506_000 as Weight) + fn on_initialize_periodic_resolved(s: u32, ) -> Weight { + (35_352_000 as Weight) // Standard Error: 3_000 - .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add((32_309_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:0) + // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_aborted(s: u32, ) -> Weight { - (8_046_000 as Weight) - // Standard Error: 3_000 - .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight)) + (11_267_000 as Weight) + // Standard Error: 1_000 + .saturating_add((9_368_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) .saturating_add(T::DbWeight::get().writes(2 as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - // Storage: Scheduler Agenda (r:2 w:2) + // Storage: Scheduler Agenda (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) - fn on_initialize_periodic_named(s: u32, ) -> Weight { - (13_704_000 as Weight) - // Standard Error: 4_000 - .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) - } - // Storage: Scheduler Agenda (r:2 w:2) - fn on_initialize_periodic(s: u32, ) -> Weight { - (12_668_000 as Weight) - // Standard Error: 5_000 - .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + fn on_initialize_named_aborted(s: u32, ) -> Weight { + (35_937_000 as Weight) + // Standard Error: 3_000 + .saturating_add((23_037_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - // Storage: Scheduler Agenda (r:1 w:1) + // Storage: Scheduler Agenda (r:2 w:2) // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_named(s: u32, ) -> Weight { - (13_946_000 as Weight) - // Standard Error: 4_000 - .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (10_338_000 as Weight) + // Standard Error: 2_000 + .saturating_add((9_422_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize(s: u32, ) -> Weight { - (13_151_000 as Weight) - // Standard Error: 4_000 - .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (37_448_000 as Weight) + // Standard Error: 7_000 + .saturating_add((22_907_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:1 w:1) - fn schedule(s: u32, ) -> Weight { - (14_040_000 as Weight) - // Standard Error: 1_000 - .saturating_add((89_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - // Storage: Scheduler Agenda (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) - fn cancel(s: u32, ) -> Weight { - (14_376_000 as Weight) - // Standard Error: 1_000 - .saturating_add((576_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + fn on_initialize_resolved(s: u32, ) -> Weight { + (34_841_000 as Weight) + // Standard Error: 7_000 + .saturating_add((22_966_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn schedule_named(s: u32, ) -> Weight { - (16_806_000 as Weight) - // Standard Error: 1_000 - .saturating_add((102_000 as Weight).saturating_mul(s as Weight)) + (33_845_000 as Weight) + // Standard Error: 0 + .saturating_add((168_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn cancel_named(s: u32, ) -> Weight { - (15_852_000 as Weight) - // Standard Error: 2_000 - .saturating_add((590_000 as Weight).saturating_mul(s as Weight)) + (31_169_000 as Weight) + // Standard Error: 1_000 + .saturating_add((1_565_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -216,148 +186,134 @@ // For backwards compatibility and tests impl WeightInfo for () { // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight { - (11_587_000 as Weight) - // Standard Error: 17_000 - .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight))) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(s as Weight))) + (35_999_000 as Weight) + // Standard Error: 3_000 + .saturating_add((32_234_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:1 w:1) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_named_resolved(s: u32, ) -> Weight { - (8_965_000 as Weight) - // Standard Error: 11_000 - .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight))) + (34_874_000 as Weight) + // Standard Error: 2_000 + .saturating_add((23_114_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) - fn on_initialize_periodic_resolved(s: u32, ) -> Weight { - (8_654_000 as Weight) - // Standard Error: 17_000 - .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight))) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight))) - } - // Storage: Scheduler Agenda (r:1 w:1) - // Storage: Preimage PreimageFor (r:1 w:1) - // Storage: Preimage StatusFor (r:1 w:1) - fn on_initialize_resolved(s: u32, ) -> Weight { - (9_303_000 as Weight) - // Standard Error: 10_000 - .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) + fn on_initialize_periodic(s: u32, ) -> Weight { + (36_469_000 as Weight) + // Standard Error: 3_000 + .saturating_add((32_202_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:0) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) - fn on_initialize_named_aborted(s: u32, ) -> Weight { - (7_506_000 as Weight) + fn on_initialize_periodic_resolved(s: u32, ) -> Weight { + (35_352_000 as Weight) // Standard Error: 3_000 - .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add((32_309_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(RocksDbWeight::get().writes(2 as Weight)) - .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:2 w:2) - // Storage: Preimage PreimageFor (r:1 w:0) + // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_aborted(s: u32, ) -> Weight { - (8_046_000 as Weight) - // Standard Error: 3_000 - .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight)) + (11_267_000 as Weight) + // Standard Error: 1_000 + .saturating_add((9_368_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) - .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - // Storage: Scheduler Agenda (r:2 w:2) + // Storage: Scheduler Agenda (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) - fn on_initialize_periodic_named(s: u32, ) -> Weight { - (13_704_000 as Weight) - // Standard Error: 4_000 - .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight))) - } - // Storage: Scheduler Agenda (r:2 w:2) - fn on_initialize_periodic(s: u32, ) -> Weight { - (12_668_000 as Weight) - // Standard Error: 5_000 - .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + fn on_initialize_named_aborted(s: u32, ) -> Weight { + (35_937_000 as Weight) + // Standard Error: 3_000 + .saturating_add((23_037_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - // Storage: Scheduler Agenda (r:1 w:1) + // Storage: Scheduler Agenda (r:2 w:2) // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize_named(s: u32, ) -> Weight { - (13_946_000 as Weight) - // Standard Error: 4_000 - .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + (10_338_000 as Weight) + // Standard Error: 2_000 + .saturating_add((9_422_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(2 as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) fn on_initialize(s: u32, ) -> Weight { - (13_151_000 as Weight) - // Standard Error: 4_000 - .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + (37_448_000 as Weight) + // Standard Error: 7_000 + .saturating_add((22_907_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Agenda (r:1 w:1) - fn schedule(s: u32, ) -> Weight { - (14_040_000 as Weight) - // Standard Error: 1_000 - .saturating_add((89_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) - } - // Storage: Scheduler Agenda (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: System AllExtrinsicsLen (r:1 w:1) + // Storage: System BlockWeight (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) - fn cancel(s: u32, ) -> Weight { - (14_376_000 as Weight) - // Standard Error: 1_000 - .saturating_add((576_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + fn on_initialize_resolved(s: u32, ) -> Weight { + (34_841_000 as Weight) + // Standard Error: 7_000 + .saturating_add((22_966_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn schedule_named(s: u32, ) -> Weight { - (16_806_000 as Weight) - // Standard Error: 1_000 - .saturating_add((102_000 as Weight).saturating_mul(s as Weight)) + (33_845_000 as Weight) + // Standard Error: 0 + .saturating_add((168_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn cancel_named(s: u32, ) -> Weight { - (15_852_000 as Weight) - // Standard Error: 2_000 - .saturating_add((590_000 as Weight).saturating_mul(s as Weight)) + (31_169_000 as Weight) + // Standard Error: 1_000 + .saturating_add((1_565_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } --- a/primitives/data-structs/src/lib.rs +++ b/primitives/data-structs/src/lib.rs @@ -441,7 +441,7 @@ pub struct CollectionPermissions { pub access: Option, pub mint_mode: Option, - pub nesting: Option, + pub nesting: Option, } impl CollectionPermissions { @@ -451,30 +451,58 @@ pub fn mint_mode(&self) -> bool { self.mint_mode.unwrap_or(false) } - pub fn nesting(&self) -> &NestingRule { - static DEFAULT: NestingRule = NestingRule::Disabled; + pub fn nesting(&self) -> &NestingPermissions { + static DEFAULT: NestingPermissions = NestingPermissions { + token_owner: false, + admin: false, + restricted: None, + + permissive: false, + }; self.nesting.as_ref().unwrap_or(&DEFAULT) } } -pub type OwnerRestrictedSet = BoundedBTreeSet>; +type OwnerRestrictedSetInner = BoundedBTreeSet>; + +#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] +#[derivative(Debug)] +pub struct OwnerRestrictedSet( + #[cfg_attr(feature = "serde1", serde(with = "bounded::set_serde"))] + #[derivative(Debug(format_with = "bounded::set_debug"))] + pub OwnerRestrictedSetInner, +); +impl OwnerRestrictedSet { + pub fn new() -> Self { + Self(Default::default()) + } +} +impl core::ops::Deref for OwnerRestrictedSet { + type Target = OwnerRestrictedSetInner; + fn deref(&self) -> &Self::Target { + &self.0 + } +} +impl core::ops::DerefMut for OwnerRestrictedSet { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} #[derive(Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative)] #[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] #[derivative(Debug)] -pub enum NestingRule { - /// No one can nest tokens - Disabled, - /// Owner can nest any tokens - Owner, - /// Owner can nest tokens from specified collections - OwnerRestricted( - #[cfg_attr(feature = "serde1", serde(with = "bounded::set_serde"))] - #[derivative(Debug(format_with = "bounded::set_debug"))] - OwnerRestrictedSet, - ), - /// Used for tests - Permissive, +pub struct NestingPermissions { + /// Owner of token can nest tokens under it + pub token_owner: bool, + /// Admin of token collection can nest tokens under token + pub admin: bool, + /// If set - only tokens from specified collections can be nested + pub restricted: Option, + + /// Anyone can nest tokens, mutually exclusive with `token_owner`, `admin` + pub permissive: bool, } #[derive(Encode, Decode, Debug, Clone, Copy, PartialEq, TypeInfo, MaxEncodedLen)] --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -89,6 +89,10 @@ default-features = false path = "../../pallets/refungible" +[dependencies.pallet-unique-scheduler] +default-features = false +path = "../../pallets/scheduler" + [dependencies.up-data-structs] default-features = false path = "../../primitives/data-structs" --- a/runtime/common/src/runtime_apis.rs +++ b/runtime/common/src/runtime_apis.rs @@ -843,6 +843,7 @@ list_benchmark!(list, extra, pallet_fungible, Fungible); list_benchmark!(list, extra, pallet_refungible, Refungible); list_benchmark!(list, extra, pallet_nonfungible, Nonfungible); + list_benchmark!(list, extra, pallet_unique_scheduler, Scheduler); list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore); // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate); @@ -887,6 +888,7 @@ add_benchmark!(params, batches, pallet_fungible, Fungible); add_benchmark!(params, batches, pallet_refungible, Refungible); add_benchmark!(params, batches, pallet_nonfungible, Nonfungible); + add_benchmark!(params, batches, pallet_unique_scheduler, Scheduler); add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore); // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate); --- a/runtime/opal/Cargo.toml +++ b/runtime/opal/Cargo.toml @@ -36,6 +36,7 @@ 'pallet-proxy-rmrk-core/runtime-benchmarks', 'pallet-unique/runtime-benchmarks', 'pallet-inflation/runtime-benchmarks', + 'pallet-unique-scheduler/runtime-benchmarks', 'pallet-xcm/runtime-benchmarks', 'sp-runtime/runtime-benchmarks', 'xcm-builder/runtime-benchmarks', @@ -93,7 +94,7 @@ 'pallet-proxy-rmrk-core/std', 'pallet-proxy-rmrk-equip/std', 'pallet-unique/std', - 'pallet-unq-scheduler/std', + 'pallet-unique-scheduler/std', 'pallet-charge-transaction/std', 'up-data-structs/std', 'sp-api/std', @@ -412,7 +413,7 @@ pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" } pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" } -pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false } +pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false } # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' } pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false } --- a/runtime/opal/src/lib.rs +++ b/runtime/opal/src/lib.rs @@ -68,7 +68,7 @@ WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, ConstantMultiplier, }, }; -use pallet_unq_scheduler::DispatchCall; +use pallet_unique_scheduler::DispatchCall; use up_data_structs::{ CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits, CollectionStats, RpcCollection, @@ -969,7 +969,7 @@ } pub struct SchedulerPaymentExecutor; -impl +impl DispatchCall for SchedulerPaymentExecutor where ::Call: Member @@ -979,13 +979,13 @@ + From>, SelfContainedSignedInfo: Send + Sync + 'static, Call: From<::Call> - + From<::Call> + + From<::Call> + SelfContainedCall, sp_runtime::AccountId32: From<::AccountId>, { fn dispatch_call( signer: ::AccountId, - call: ::Call, + call: ::Call, ) -> Result< Result>, TransactionValidityError, @@ -1011,7 +1011,7 @@ fn reserve_balance( id: [u8; 16], sponsor: ::AccountId, - call: ::Call, + call: ::Call, count: u32, ) -> Result<(), DispatchError> { let dispatch_info = call.get_dispatch_info(); @@ -1028,7 +1028,7 @@ fn pay_for_call( id: [u8; 16], sponsor: ::AccountId, - call: ::Call, + call: ::Call, ) -> Result { let dispatch_info = call.get_dispatch_info(); let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0); @@ -1069,7 +1069,7 @@ } } -impl pallet_unq_scheduler::Config for Runtime { +impl pallet_unique_scheduler::Config for Runtime { type Event = Event; type Origin = Origin; type Currency = Balances; @@ -1158,7 +1158,7 @@ // Unique Pallets Inflation: pallet_inflation::{Pallet, Call, Storage} = 60, Unique: pallet_unique::{Pallet, Call, Storage, Event} = 61, - Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event} = 62, + Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event} = 62, // free = 63 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64, // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65, --- a/runtime/quartz/Cargo.toml +++ b/runtime/quartz/Cargo.toml @@ -37,6 +37,7 @@ 'pallet-proxy-rmrk-equip/runtime-benchmarks', 'pallet-unique/runtime-benchmarks', 'pallet-inflation/runtime-benchmarks', + 'pallet-unique-scheduler/runtime-benchmarks', 'pallet-xcm/runtime-benchmarks', 'sp-runtime/runtime-benchmarks', 'xcm-builder/runtime-benchmarks', @@ -94,7 +95,7 @@ 'pallet-proxy-rmrk-core/std', 'pallet-proxy-rmrk-equip/std', 'pallet-unique/std', - 'pallet-unq-scheduler/std', + 'pallet-unique-scheduler/std', 'pallet-charge-transaction/std', 'up-data-structs/std', 'sp-api/std', @@ -419,7 +420,7 @@ pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" } pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" } -pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false } +pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false } # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' } pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false } --- a/runtime/quartz/src/lib.rs +++ b/runtime/quartz/src/lib.rs @@ -68,7 +68,7 @@ WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, ConstantMultiplier, }, }; -use pallet_unq_scheduler::DispatchCall; +use pallet_unique_scheduler::DispatchCall; use up_data_structs::{ CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits, CollectionStats, RpcCollection, @@ -968,7 +968,7 @@ } pub struct SchedulerPaymentExecutor; -impl +impl DispatchCall for SchedulerPaymentExecutor where ::Call: Member @@ -978,13 +978,13 @@ + From>, SelfContainedSignedInfo: Send + Sync + 'static, Call: From<::Call> - + From<::Call> + + From<::Call> + SelfContainedCall, sp_runtime::AccountId32: From<::AccountId>, { fn dispatch_call( signer: ::AccountId, - call: ::Call, + call: ::Call, ) -> Result< Result>, TransactionValidityError, @@ -1010,7 +1010,7 @@ fn reserve_balance( id: [u8; 16], sponsor: ::AccountId, - call: ::Call, + call: ::Call, count: u32, ) -> Result<(), DispatchError> { let dispatch_info = call.get_dispatch_info(); @@ -1027,7 +1027,7 @@ fn pay_for_call( id: [u8; 16], sponsor: ::AccountId, - call: ::Call, + call: ::Call, ) -> Result { let dispatch_info = call.get_dispatch_info(); let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0); @@ -1068,7 +1068,7 @@ } } -impl pallet_unq_scheduler::Config for Runtime { +impl pallet_unique_scheduler::Config for Runtime { type Event = Event; type Origin = Origin; type Currency = Balances; @@ -1156,7 +1156,7 @@ // Unique Pallets Inflation: pallet_inflation::{Pallet, Call, Storage} = 60, Unique: pallet_unique::{Pallet, Call, Storage, Event} = 61, - Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event} = 62, + Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event} = 62, // free = 63 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64, // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65, --- a/runtime/unique/Cargo.toml +++ b/runtime/unique/Cargo.toml @@ -37,6 +37,7 @@ 'pallet-proxy-rmrk-equip/runtime-benchmarks', 'pallet-unique/runtime-benchmarks', 'pallet-inflation/runtime-benchmarks', + 'pallet-unique-scheduler/runtime-benchmarks', 'pallet-xcm/runtime-benchmarks', 'sp-runtime/runtime-benchmarks', 'xcm-builder/runtime-benchmarks', @@ -95,7 +96,7 @@ 'pallet-proxy-rmrk-core/std', 'pallet-proxy-rmrk-equip/std', 'pallet-unique/std', - 'pallet-unq-scheduler/std', + 'pallet-unique-scheduler/std', 'pallet-charge-transaction/std', 'up-data-structs/std', 'sp-api/std', @@ -412,7 +413,7 @@ pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" } pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" } -pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false } +pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false } # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' } pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false } --- a/runtime/unique/src/lib.rs +++ b/runtime/unique/src/lib.rs @@ -68,7 +68,7 @@ WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, ConstantMultiplier, }, }; -use pallet_unq_scheduler::DispatchCall; +use pallet_unique_scheduler::DispatchCall; use up_data_structs::{ CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits, CollectionStats, RpcCollection, @@ -967,7 +967,7 @@ } pub struct SchedulerPaymentExecutor; -impl +impl DispatchCall for SchedulerPaymentExecutor where ::Call: Member @@ -977,13 +977,13 @@ + From>, SelfContainedSignedInfo: Send + Sync + 'static, Call: From<::Call> - + From<::Call> + + From<::Call> + SelfContainedCall, sp_runtime::AccountId32: From<::AccountId>, { fn dispatch_call( signer: ::AccountId, - call: ::Call, + call: ::Call, ) -> Result< Result>, TransactionValidityError, @@ -1009,7 +1009,7 @@ fn reserve_balance( id: [u8; 16], sponsor: ::AccountId, - call: ::Call, + call: ::Call, count: u32, ) -> Result<(), DispatchError> { let dispatch_info = call.get_dispatch_info(); @@ -1026,7 +1026,7 @@ fn pay_for_call( id: [u8; 16], sponsor: ::AccountId, - call: ::Call, + call: ::Call, ) -> Result { let dispatch_info = call.get_dispatch_info(); let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0); @@ -1067,7 +1067,7 @@ } } -impl pallet_unq_scheduler::Config for Runtime { +impl pallet_unique_scheduler::Config for Runtime { type Event = Event; type Origin = Origin; type Currency = Balances; @@ -1155,7 +1155,7 @@ // Unique Pallets Inflation: pallet_inflation::{Pallet, Call, Storage} = 60, Unique: pallet_unique::{Pallet, Call, Storage, Event} = 61, - Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event} = 62, + Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event} = 62, // free = 63 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64, // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65, --- a/tests/package.json +++ b/tests/package.json @@ -5,7 +5,7 @@ "main": "", "devDependencies": { "@polkadot/ts": "0.4.22", - "@polkadot/typegen": "8.7.2-11", + "@polkadot/typegen": "8.7.2-15", "@types/chai": "^4.3.1", "@types/chai-as-promised": "^7.1.5", "@types/mocha": "^9.1.1", @@ -86,8 +86,8 @@ "license": "SEE LICENSE IN ../LICENSE", "homepage": "", "dependencies": { - "@polkadot/api": "8.7.2-11", - "@polkadot/api-contract": "8.7.2-11", + "@polkadot/api": "8.7.2-15", + "@polkadot/api-contract": "8.7.2-15", "@polkadot/util-crypto": "9.4.1", "bignumber.js": "^9.0.2", "chai-as-promised": "^7.1.1", --- a/tests/src/interfaces/augment-api-errors.ts +++ b/tests/src/interfaces/augment-api-errors.ts @@ -125,10 +125,6 @@ **/ MustBeTokenOwner: AugmentedError; /** - * Collection has nesting disabled - **/ - NestingIsDisabled: AugmentedError; - /** * No permission to perform action **/ NoPermission: AugmentedError; @@ -137,13 +133,9 @@ **/ NoSpaceForProperty: AugmentedError; /** - * Not sufficient founds to perform action + * Not sufficient funds to perform action **/ NotSufficientFounds: AugmentedError; - /** - * Only owner may nest tokens under this collection - **/ - OnlyOwnerAllowedToNest: AugmentedError; /** * Tried to enable permissions which are only permitted to be disabled **/ @@ -185,6 +177,10 @@ **/ UnsupportedOperation: AugmentedError; /** + * User not passed nesting rule + **/ + UserIsNotAllowedToNest: AugmentedError; + /** * Generic error **/ [key: string]: AugmentedError; @@ -502,6 +498,10 @@ }; structure: { /** + * While iterating over children, encountered breadth limit + **/ + BreadthLimit: AugmentedError; + /** * While searched for owner, encountered depth limit **/ DepthLimit: AugmentedError; --- a/tests/src/interfaces/augment-api-events.ts +++ b/tests/src/interfaces/augment-api-events.ts @@ -13,45 +13,45 @@ /** * A balance was set by root. **/ - BalanceSet: AugmentedEvent; + BalanceSet: AugmentedEvent; /** * Some amount was deposited (e.g. for transaction fees). **/ - Deposit: AugmentedEvent; + Deposit: AugmentedEvent; /** * An account was removed whose balance was non-zero but below ExistentialDeposit, * resulting in an outright loss. **/ - DustLost: AugmentedEvent; + DustLost: AugmentedEvent; /** * An account was created with some free balance. **/ - Endowed: AugmentedEvent; + Endowed: AugmentedEvent; /** * Some balance was reserved (moved from free to reserved). **/ - Reserved: AugmentedEvent; + Reserved: AugmentedEvent; /** * Some balance was moved from the reserve of the first account to the second account. * Final argument indicates the destination balance type. **/ - ReserveRepatriated: AugmentedEvent; + ReserveRepatriated: AugmentedEvent; /** * Some amount was removed from the account (e.g. for misbehavior). **/ - Slashed: AugmentedEvent; + Slashed: AugmentedEvent; /** * Transfer succeeded. **/ - Transfer: AugmentedEvent; + Transfer: AugmentedEvent; /** * Some balance was unreserved (moved from reserved to free). **/ - Unreserved: AugmentedEvent; + Unreserved: AugmentedEvent; /** * Some amount was withdrawn from the account (e.g. for transaction fees). **/ - Withdraw: AugmentedEvent; + Withdraw: AugmentedEvent; /** * Generic event **/ @@ -398,28 +398,28 @@ [key: string]: AugmentedEvent; }; rmrkCore: { - CollectionCreated: AugmentedEvent; - CollectionDestroyed: AugmentedEvent; - CollectionLocked: AugmentedEvent; - IssuerChanged: AugmentedEvent; - NFTAccepted: AugmentedEvent; - NFTBurned: AugmentedEvent; - NftMinted: AugmentedEvent; - NFTRejected: AugmentedEvent; - NFTSent: AugmentedEvent; - PrioritySet: AugmentedEvent; - PropertySet: AugmentedEvent, Bytes, Bytes]>; - ResourceAccepted: AugmentedEvent; - ResourceAdded: AugmentedEvent; - ResourceRemoval: AugmentedEvent; - ResourceRemovalAccepted: AugmentedEvent; + CollectionCreated: AugmentedEvent; + CollectionDestroyed: AugmentedEvent; + CollectionLocked: AugmentedEvent; + IssuerChanged: AugmentedEvent; + NFTAccepted: AugmentedEvent; + NFTBurned: AugmentedEvent; + NftMinted: AugmentedEvent; + NFTRejected: AugmentedEvent; + NFTSent: AugmentedEvent; + PrioritySet: AugmentedEvent; + PropertySet: AugmentedEvent, key: Bytes, value: Bytes], { collectionId: u32, maybeNftId: Option, key: Bytes, value: Bytes }>; + ResourceAccepted: AugmentedEvent; + ResourceAdded: AugmentedEvent; + ResourceRemoval: AugmentedEvent; + ResourceRemovalAccepted: AugmentedEvent; /** * Generic event **/ [key: string]: AugmentedEvent; }; rmrkEquip: { - BaseCreated: AugmentedEvent; + BaseCreated: AugmentedEvent; /** * Generic event **/ @@ -429,19 +429,19 @@ /** * The call for the provided hash was not found so the task has been aborted. **/ - CallLookupFailed: AugmentedEvent, Option, FrameSupportScheduleLookupError]>; + CallLookupFailed: AugmentedEvent, id: Option, error: FrameSupportScheduleLookupError], { task: ITuple<[u32, u32]>, id: Option, error: FrameSupportScheduleLookupError }>; /** * Canceled some task. **/ - Canceled: AugmentedEvent; + Canceled: AugmentedEvent; /** * Dispatched some task. **/ - Dispatched: AugmentedEvent, Option, Result]>; + Dispatched: AugmentedEvent, id: Option, result: Result], { task: ITuple<[u32, u32]>, id: Option, result: Result }>; /** * Scheduled some task. **/ - Scheduled: AugmentedEvent; + Scheduled: AugmentedEvent; /** * Generic event **/ @@ -461,15 +461,15 @@ /** * The \[sudoer\] just switched identity; the old key is supplied if one existed. **/ - KeyChanged: AugmentedEvent]>; + KeyChanged: AugmentedEvent], { oldSudoer: Option }>; /** * A sudo just took place. \[result\] **/ - Sudid: AugmentedEvent]>; + Sudid: AugmentedEvent], { sudoResult: Result }>; /** * A sudo just took place. \[result\] **/ - SudoAsDone: AugmentedEvent]>; + SudoAsDone: AugmentedEvent], { sudoResult: Result }>; /** * Generic event **/ @@ -483,23 +483,23 @@ /** * An extrinsic failed. **/ - ExtrinsicFailed: AugmentedEvent; + ExtrinsicFailed: AugmentedEvent; /** * An extrinsic completed successfully. **/ - ExtrinsicSuccess: AugmentedEvent; + ExtrinsicSuccess: AugmentedEvent; /** * An account was reaped. **/ - KilledAccount: AugmentedEvent; + KilledAccount: AugmentedEvent; /** * A new account was created. **/ - NewAccount: AugmentedEvent; + NewAccount: AugmentedEvent; /** * On on-chain remark happened. **/ - Remarked: AugmentedEvent; + Remarked: AugmentedEvent; /** * Generic event **/ @@ -509,31 +509,31 @@ /** * Some funds have been allocated. **/ - Awarded: AugmentedEvent; + Awarded: AugmentedEvent; /** * Some of our funds have been burnt. **/ - Burnt: AugmentedEvent; + Burnt: AugmentedEvent; /** * Some funds have been deposited. **/ - Deposit: AugmentedEvent; + Deposit: AugmentedEvent; /** * New proposal. **/ - Proposed: AugmentedEvent; + Proposed: AugmentedEvent; /** * A proposal was rejected; funds were slashed. **/ - Rejected: AugmentedEvent; + Rejected: AugmentedEvent; /** * Spending has finished; this is the amount that rolls over until next spend. **/ - Rollover: AugmentedEvent; + Rollover: AugmentedEvent; /** * We have ended a spend period and will now allocate funds. **/ - Spending: AugmentedEvent; + Spending: AugmentedEvent; /** * Generic event **/ @@ -636,15 +636,15 @@ /** * Claimed vesting. **/ - Claimed: AugmentedEvent; + Claimed: AugmentedEvent; /** * Added new vesting schedule. **/ - VestingScheduleAdded: AugmentedEvent; + VestingScheduleAdded: AugmentedEvent; /** * Updated vesting schedules. **/ - VestingSchedulesUpdated: AugmentedEvent; + VestingSchedulesUpdated: AugmentedEvent; /** * Generic event **/ --- a/tests/src/interfaces/augment-api-query.ts +++ b/tests/src/interfaces/augment-api-query.ts @@ -5,7 +5,7 @@ import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime'; -import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUnqSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup'; +import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup'; import type { Observable } from '@polkadot/types/types'; declare module '@polkadot/api-base/types/storage' { @@ -436,7 +436,7 @@ /** * Items to be executed, indexed by the block number that they should be executed on. **/ - agenda: AugmentedQuery Observable>>, [u32]> & QueryableStorageEntry; + agenda: AugmentedQuery Observable>>, [u32]> & QueryableStorageEntry; /** * Lookup from identity to the block number and index of the task. **/ --- a/tests/src/interfaces/augment-api-rpc.ts +++ b/tests/src/interfaces/augment-api-rpc.ts @@ -18,7 +18,7 @@ import type { EthAccount, EthCallRequest, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth'; import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics'; import type { EncodedFinalityProofs, JustificationNotification, ReportedRoundStates } from '@polkadot/types/interfaces/grandpa'; -import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr'; +import type { MmrLeafBatchProof, MmrLeafProof } from '@polkadot/types/interfaces/mmr'; import type { StorageKind } from '@polkadot/types/interfaces/offchain'; import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment'; import type { RpcMethods } from '@polkadot/types/interfaces/rpc'; @@ -355,9 +355,13 @@ }; mmr: { /** + * Generate MMR proof for the given leaf indices. + **/ + generateBatchProof: AugmentedRpc<(leafIndices: Vec | (u64 | AnyNumber | Uint8Array)[], at?: BlockHash | string | Uint8Array) => Observable>; + /** * Generate MMR proof for given leaf index. **/ - generateProof: AugmentedRpc<(leafIndex: u64 | AnyNumber | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; + generateProof: AugmentedRpc<(leafIndex: u64 | AnyNumber | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; }; net: { /** --- a/tests/src/interfaces/augment-api-tx.ts +++ b/tests/src/interfaces/augment-api-tx.ts @@ -347,22 +347,105 @@ [key: string]: SubmittableExtrinsicFunction; }; rmrkCore: { + /** + * Accepts an NFT sent from another account to self or owned NFT + * + * Parameters: + * - `origin`: sender of the transaction + * - `rmrk_collection_id`: collection id of the nft to be accepted + * - `rmrk_nft_id`: nft id of the nft to be accepted + * - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was + * sent to + **/ acceptNft: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple | { AccountId: any } | { CollectionAndNftTuple: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, u32, RmrkTraitsNftAccountIdOrCollectionNftTuple]>; + /** + * accept the addition of a new resource to an existing NFT + **/ acceptResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, rmrkResourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32, u32]>; + /** + * accept the removal of a resource of an existing NFT + **/ acceptResourceRemoval: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, rmrkResourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32, u32]>; + /** + * Create basic resource + **/ addBasicResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceBasicResource | { src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, u32, RmrkTraitsResourceBasicResource]>; + /** + * Create composable resource + **/ addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: Bytes | string | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, u32, Bytes, RmrkTraitsResourceComposableResource]>; + /** + * Create slot resource + **/ 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, [u32, u32, RmrkTraitsResourceSlotResource]>; + /** + * burn nft + **/ burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32]>; + /** + * Change the issuer of a collection + * + * Parameters: + * - `origin`: sender of the transaction + * - `collection_id`: collection id of the nft to change issuer of + * - `new_issuer`: Collection's new issuer + **/ changeCollectionIssuer: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newIssuer: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, MultiAddress]>; + /** + * Create a collection + **/ createCollection: AugmentedSubmittable<(metadata: Bytes | string | Uint8Array, max: Option | null | object | string | Uint8Array, symbol: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Bytes, Option, Bytes]>; + /** + * destroy collection + **/ destroyCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; + /** + * lock collection + **/ lockCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; + /** + * Mints an NFT in the specified collection + * Sets metadata and the royalty attribute + * + * Parameters: + * - `collection_id`: The class of the asset to be minted. + * - `nft_id`: The nft value of the asset to be minted. + * - `recipient`: Receiver of the royalty + * - `royalty`: Permillage reward from each trade for the Recipient + * - `metadata`: Arbitrary data about an nft, e.g. IPFS hash + * - `transferable`: Ability to transfer this NFT + **/ mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option | null | object | string | Uint8Array, royaltyAmount: Option | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32, Option, Option, Bytes, bool]>; + /** + * Rejects an NFT sent from another account to self or owned NFT + * + * Parameters: + * - `origin`: sender of the transaction + * - `rmrk_collection_id`: collection id of the nft to be accepted + * - `rmrk_nft_id`: nft id of the nft to be accepted + **/ rejectNft: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32]>; + /** + * remove resource + **/ removeResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32, u32]>; + /** + * Transfers a NFT from an Account or NFT A to another Account or NFT B + * + * Parameters: + * - `origin`: sender of the transaction + * - `rmrk_collection_id`: collection id of the nft to be transferred + * - `rmrk_nft_id`: nft id of the nft to be transferred + * - `new_owner`: new owner of the nft which can be either an account or a NFT + **/ send: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple | { AccountId: any } | { CollectionAndNftTuple: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, u32, RmrkTraitsNftAccountIdOrCollectionNftTuple]>; + /** + * set a different order of resource priority + **/ setPriority: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, priorities: Vec | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [u32, u32, Vec]>; + /** + * set a custom value on an NFT + **/ setProperty: AugmentedSubmittable<(rmrkCollectionId: Compact | AnyNumber | Uint8Array, maybeNftId: Option | null | object | string | Uint8Array, key: Bytes | string | Uint8Array, value: Bytes | string | Uint8Array) => SubmittableExtrinsic, [Compact, Option, Bytes, Bytes]>; /** * Generic tx @@ -370,7 +453,33 @@ [key: string]: SubmittableExtrinsicFunction; }; rmrkEquip: { + /** + * Creates a new Base. + * Modeled after [base interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/base.md) + * + * Parameters: + * - origin: Caller, will be assigned as the issuer of the Base + * - base_type: media type, e.g. "svg" + * - symbol: arbitrary client-chosen symbol + * - parts: array of Fixed and Slot parts composing the base, confined in length by + * RmrkPartsLimit + **/ createBase: AugmentedSubmittable<(baseType: Bytes | string | Uint8Array, symbol: Bytes | string | Uint8Array, parts: Vec | (RmrkTraitsPartPartType | { FixedPart: any } | { SlotPart: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Bytes, Bytes, Vec]>; + /** + * Adds a Theme to a Base. + * Modeled after [themeadd interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/themeadd.md) + * Themes are stored in the Themes storage + * A Theme named "default" is required prior to adding other Themes. + * + * Parameters: + * - origin: The caller of the function, must be issuer of the base + * - base_id: The Base containing the Theme to be updated + * - theme: The Theme to add to the Base. A Theme has a name and properties, which are an + * array of [key, value, inherit]. + * - key: arbitrary BoundedString, defined by client + * - value: arbitrary BoundedString, defined by client + * - inherit: optional bool + **/ themeAdd: AugmentedSubmittable<(baseId: u32 | AnyNumber | Uint8Array, theme: RmrkTraitsTheme | { name?: any; properties?: any; inherit?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, RmrkTraitsTheme]>; /** * Generic tx --- a/tests/src/interfaces/augment-types.ts +++ b/tests/src/interfaces/augment-types.ts @@ -1,9 +1,9 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ -import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default'; +import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default'; import type { Data, StorageKey } from '@polkadot/types'; -import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec'; +import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec'; import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets'; import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations'; import type { RawAuraPreDigest } from '@polkadot/types/interfaces/aura'; @@ -36,7 +36,7 @@ import type { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline'; import type { CallIndex, LotteryConfig } from '@polkadot/types/interfaces/lottery'; import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV14, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV14, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, ExtrinsicMetadataV14, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV14, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV14, FunctionMetadataV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV14, MetadataV9, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, PalletCallMetadataLatest, PalletCallMetadataV14, PalletConstantMetadataLatest, PalletConstantMetadataV14, PalletErrorMetadataLatest, PalletErrorMetadataV14, PalletEventMetadataLatest, PalletEventMetadataV14, PalletMetadataLatest, PalletMetadataV14, PalletStorageMetadataLatest, PalletStorageMetadataV14, PortableType, PortableTypeV14, SignedExtensionMetadataLatest, SignedExtensionMetadataV14, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV14, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV14, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV14, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV14, StorageHasherV9, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata'; -import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr'; +import type { MmrLeafBatchProof, MmrLeafProof } from '@polkadot/types/interfaces/mmr'; import type { StorageKind } from '@polkadot/types/interfaces/offchain'; import type { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences'; import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeLocation, DisputeResult, DisputeState, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, SlotRange10, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersData10, WinnersDataTuple, WinnersDataTuple10, WinningData, WinningData10, WinningDataEntry } from '@polkadot/types/interfaces/parachains'; @@ -664,6 +664,7 @@ MetadataV14: MetadataV14; MetadataV9: MetadataV9; MigrationStatusResult: MigrationStatusResult; + MmrLeafBatchProof: MmrLeafBatchProof; MmrLeafProof: MmrLeafProof; MmrRootHash: MmrRootHash; ModuleConstantMetadataV10: ModuleConstantMetadataV10; @@ -731,6 +732,7 @@ OpenTipTip: OpenTipTip; OpenTipTo225: OpenTipTo225; OperatingMode: OperatingMode; + OptionBool: OptionBool; Origin: Origin; OriginCaller: OriginCaller; OriginKindV0: OriginKindV0; @@ -817,10 +819,10 @@ PalletUniqueCall: PalletUniqueCall; PalletUniqueError: PalletUniqueError; PalletUniqueRawEvent: PalletUniqueRawEvent; - PalletUnqSchedulerCall: PalletUnqSchedulerCall; - PalletUnqSchedulerError: PalletUnqSchedulerError; - PalletUnqSchedulerEvent: PalletUnqSchedulerEvent; - PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3; + PalletUniqueSchedulerCall: PalletUniqueSchedulerCall; + PalletUniqueSchedulerError: PalletUniqueSchedulerError; + PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent; + PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3; PalletVersion: PalletVersion; PalletXcmCall: PalletXcmCall; PalletXcmError: PalletXcmError; @@ -1216,7 +1218,8 @@ UpDataStructsCreateNftExData: UpDataStructsCreateNftExData; UpDataStructsCreateReFungibleData: UpDataStructsCreateReFungibleData; UpDataStructsCreateRefungibleExData: UpDataStructsCreateRefungibleExData; - UpDataStructsNestingRule: UpDataStructsNestingRule; + UpDataStructsNestingPermissions: UpDataStructsNestingPermissions; + UpDataStructsOwnerRestrictedSet: UpDataStructsOwnerRestrictedSet; UpDataStructsProperties: UpDataStructsProperties; UpDataStructsPropertiesMapBoundedVec: UpDataStructsPropertiesMapBoundedVec; UpDataStructsPropertiesMapPropertyPermission: UpDataStructsPropertiesMapPropertyPermission; --- a/tests/src/interfaces/default/types.ts +++ b/tests/src/interfaces/default/types.ts @@ -935,8 +935,7 @@ readonly isAddressIsZero: boolean; readonly isUnsupportedOperation: boolean; readonly isNotSufficientFounds: boolean; - readonly isNestingIsDisabled: boolean; - readonly isOnlyOwnerAllowedToNest: boolean; + readonly isUserIsNotAllowedToNest: boolean; readonly isSourceCollectionIsNotAllowedToNest: boolean; readonly isCollectionFieldSizeExceeded: boolean; readonly isNoSpaceForProperty: boolean; @@ -946,7 +945,7 @@ readonly isEmptyPropertyKey: boolean; readonly isCollectionIsExternal: boolean; readonly isCollectionIsInternal: boolean; - 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' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal'; + readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal'; } /** @name PalletCommonEvent */ @@ -1445,8 +1444,9 @@ export interface PalletStructureError extends Enum { readonly isOuroborosDetected: boolean; readonly isDepthLimit: boolean; + readonly isBreadthLimit: boolean; readonly isTokenNotFound: boolean; - readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound'; + readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound'; } /** @name PalletStructureEvent */ @@ -1784,8 +1784,8 @@ readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet'; } -/** @name PalletUnqSchedulerCall */ -export interface PalletUnqSchedulerCall extends Enum { +/** @name PalletUniqueSchedulerCall */ +export interface PalletUniqueSchedulerCall extends Enum { readonly isScheduleNamed: boolean; readonly asScheduleNamed: { readonly id: U8aFixed; @@ -1809,8 +1809,8 @@ readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter'; } -/** @name PalletUnqSchedulerError */ -export interface PalletUnqSchedulerError extends Enum { +/** @name PalletUniqueSchedulerError */ +export interface PalletUniqueSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; readonly isTargetBlockNumberInPast: boolean; @@ -1818,8 +1818,8 @@ readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; } -/** @name PalletUnqSchedulerEvent */ -export interface PalletUnqSchedulerEvent extends Enum { +/** @name PalletUniqueSchedulerEvent */ +export interface PalletUniqueSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: { readonly when: u32; @@ -1845,8 +1845,8 @@ readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed'; } -/** @name PalletUnqSchedulerScheduledV3 */ -export interface PalletUnqSchedulerScheduledV3 extends Struct { +/** @name PalletUniqueSchedulerScheduledV3 */ +export interface PalletUniqueSchedulerScheduledV3 extends Struct { readonly maybeId: Option; readonly priority: u8; readonly call: FrameSupportScheduleMaybeHashed; @@ -2348,7 +2348,7 @@ export interface UpDataStructsCollectionPermissions extends Struct { readonly access: Option; readonly mintMode: Option; - readonly nesting: Option; + readonly nesting: Option; } /** @name UpDataStructsCollectionStats */ @@ -2424,15 +2424,17 @@ readonly users: BTreeMap; } -/** @name UpDataStructsNestingRule */ -export interface UpDataStructsNestingRule extends Enum { - readonly isDisabled: boolean; - readonly isOwner: boolean; - readonly isOwnerRestricted: boolean; - readonly asOwnerRestricted: BTreeSet; - readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted'; +/** @name UpDataStructsNestingPermissions */ +export interface UpDataStructsNestingPermissions extends Struct { + readonly tokenOwner: bool; + readonly admin: bool; + readonly restricted: Option; + readonly permissive: bool; } +/** @name UpDataStructsOwnerRestrictedSet */ +export interface UpDataStructsOwnerRestrictedSet extends BTreeSet {} + /** @name UpDataStructsProperties */ export interface UpDataStructsProperties extends Struct { readonly map: UpDataStructsPropertiesMapBoundedVec; --- a/tests/src/interfaces/lookup.ts +++ b/tests/src/interfaces/lookup.ts @@ -1425,27 +1425,30 @@ UpDataStructsCollectionPermissions: { access: 'Option', mintMode: 'Option', - nesting: 'Option' + nesting: 'Option' }, /** - * Lookup169: up_data_structs::NestingRule + * Lookup169: up_data_structs::NestingPermissions **/ - UpDataStructsNestingRule: { - _enum: { - Disabled: 'Null', - Owner: 'Null', - OwnerRestricted: 'BTreeSet' - } + UpDataStructsNestingPermissions: { + tokenOwner: 'bool', + admin: 'bool', + restricted: 'Option', + permissive: 'bool' }, /** - * Lookup175: up_data_structs::PropertyKeyPermission + * Lookup171: up_data_structs::OwnerRestrictedSet **/ + UpDataStructsOwnerRestrictedSet: 'BTreeSet', + /** + * Lookup177: up_data_structs::PropertyKeyPermission + **/ UpDataStructsPropertyKeyPermission: { key: 'Bytes', permission: 'UpDataStructsPropertyPermission' }, /** - * Lookup177: up_data_structs::PropertyPermission + * Lookup179: up_data_structs::PropertyPermission **/ UpDataStructsPropertyPermission: { mutable: 'bool', @@ -1453,14 +1456,14 @@ tokenOwner: 'bool' }, /** - * Lookup180: up_data_structs::Property + * Lookup182: up_data_structs::Property **/ UpDataStructsProperty: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup183: pallet_evm::account::BasicCrossAccountIdRepr + * Lookup185: pallet_evm::account::BasicCrossAccountIdRepr **/ PalletEvmAccountBasicCrossAccountIdRepr: { _enum: { @@ -1469,7 +1472,7 @@ } }, /** - * Lookup185: up_data_structs::CreateItemData + * Lookup187: up_data_structs::CreateItemData **/ UpDataStructsCreateItemData: { _enum: { @@ -1479,26 +1482,26 @@ } }, /** - * Lookup186: up_data_structs::CreateNftData + * Lookup188: up_data_structs::CreateNftData **/ UpDataStructsCreateNftData: { properties: 'Vec' }, /** - * Lookup187: up_data_structs::CreateFungibleData + * Lookup189: up_data_structs::CreateFungibleData **/ UpDataStructsCreateFungibleData: { value: 'u128' }, /** - * Lookup188: up_data_structs::CreateReFungibleData + * Lookup190: up_data_structs::CreateReFungibleData **/ UpDataStructsCreateReFungibleData: { constData: 'Bytes', pieces: 'u128' }, /** - * Lookup193: up_data_structs::CreateItemExData> + * Lookup195: up_data_structs::CreateItemExData> **/ UpDataStructsCreateItemExData: { _enum: { @@ -1509,23 +1512,23 @@ } }, /** - * Lookup195: up_data_structs::CreateNftExData> + * Lookup197: up_data_structs::CreateNftExData> **/ UpDataStructsCreateNftExData: { properties: 'Vec', owner: 'PalletEvmAccountBasicCrossAccountIdRepr' }, /** - * Lookup202: up_data_structs::CreateRefungibleExData> + * Lookup204: up_data_structs::CreateRefungibleExData> **/ UpDataStructsCreateRefungibleExData: { constData: 'Bytes', users: 'BTreeMap' }, /** - * Lookup204: pallet_unq_scheduler::pallet::Call + * Lookup206: pallet_unique_scheduler::pallet::Call **/ - PalletUnqSchedulerCall: { + PalletUniqueSchedulerCall: { _enum: { schedule_named: { id: '[u8;16]', @@ -1547,7 +1550,7 @@ } }, /** - * Lookup206: frame_support::traits::schedule::MaybeHashed + * Lookup208: frame_support::traits::schedule::MaybeHashed **/ FrameSupportScheduleMaybeHashed: { _enum: { @@ -1556,15 +1559,15 @@ } }, /** - * Lookup207: pallet_template_transaction_payment::Call + * Lookup209: pallet_template_transaction_payment::Call **/ PalletTemplateTransactionPaymentCall: 'Null', /** - * Lookup208: pallet_structure::pallet::Call + * Lookup210: pallet_structure::pallet::Call **/ PalletStructureCall: 'Null', /** - * Lookup209: pallet_rmrk_core::pallet::Call + * Lookup211: pallet_rmrk_core::pallet::Call **/ PalletRmrkCoreCall: { _enum: { @@ -1654,7 +1657,7 @@ } }, /** - * Lookup213: rmrk_traits::nft::AccountIdOrCollectionNftTuple + * Lookup215: rmrk_traits::nft::AccountIdOrCollectionNftTuple **/ RmrkTraitsNftAccountIdOrCollectionNftTuple: { _enum: { @@ -1663,7 +1666,7 @@ } }, /** - * Lookup217: rmrk_traits::resource::BasicResource> + * Lookup219: rmrk_traits::resource::BasicResource> **/ RmrkTraitsResourceBasicResource: { src: 'Option', @@ -1672,7 +1675,7 @@ thumb: 'Option' }, /** - * Lookup220: rmrk_traits::resource::ComposableResource, frame_support::storage::bounded_vec::BoundedVec> + * Lookup222: rmrk_traits::resource::ComposableResource, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsResourceComposableResource: { parts: 'Vec', @@ -1683,7 +1686,7 @@ thumb: 'Option' }, /** - * Lookup222: rmrk_traits::resource::SlotResource> + * Lookup224: rmrk_traits::resource::SlotResource> **/ RmrkTraitsResourceSlotResource: { base: 'u32', @@ -1694,7 +1697,7 @@ thumb: 'Option' }, /** - * Lookup223: pallet_rmrk_equip::pallet::Call + * Lookup225: pallet_rmrk_equip::pallet::Call **/ PalletRmrkEquipCall: { _enum: { @@ -1710,7 +1713,7 @@ } }, /** - * Lookup225: rmrk_traits::part::PartType, frame_support::storage::bounded_vec::BoundedVec> + * Lookup227: rmrk_traits::part::PartType, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsPartPartType: { _enum: { @@ -1719,7 +1722,7 @@ } }, /** - * Lookup227: rmrk_traits::part::FixedPart> + * Lookup229: rmrk_traits::part::FixedPart> **/ RmrkTraitsPartFixedPart: { id: 'u32', @@ -1727,7 +1730,7 @@ src: 'Bytes' }, /** - * Lookup228: rmrk_traits::part::SlotPart, frame_support::storage::bounded_vec::BoundedVec> + * Lookup230: rmrk_traits::part::SlotPart, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsPartSlotPart: { id: 'u32', @@ -1736,7 +1739,7 @@ z: 'u32' }, /** - * Lookup229: rmrk_traits::part::EquippableList> + * Lookup231: rmrk_traits::part::EquippableList> **/ RmrkTraitsPartEquippableList: { _enum: { @@ -1746,7 +1749,7 @@ } }, /** - * Lookup231: rmrk_traits::theme::Theme, PropertyList> + * Lookup233: rmrk_traits::theme::Theme, PropertyList> **/ RmrkTraitsTheme: { name: 'Bytes', @@ -1754,14 +1757,14 @@ inherit: 'bool' }, /** - * Lookup233: rmrk_traits::theme::ThemeProperty> + * Lookup235: rmrk_traits::theme::ThemeProperty> **/ RmrkTraitsThemeThemeProperty: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup234: pallet_evm::pallet::Call + * Lookup236: pallet_evm::pallet::Call **/ PalletEvmCall: { _enum: { @@ -1804,7 +1807,7 @@ } }, /** - * Lookup240: pallet_ethereum::pallet::Call + * Lookup242: pallet_ethereum::pallet::Call **/ PalletEthereumCall: { _enum: { @@ -1814,7 +1817,7 @@ } }, /** - * Lookup241: ethereum::transaction::TransactionV2 + * Lookup243: ethereum::transaction::TransactionV2 **/ EthereumTransactionTransactionV2: { _enum: { @@ -1824,7 +1827,7 @@ } }, /** - * Lookup242: ethereum::transaction::LegacyTransaction + * Lookup244: ethereum::transaction::LegacyTransaction **/ EthereumTransactionLegacyTransaction: { nonce: 'U256', @@ -1836,7 +1839,7 @@ signature: 'EthereumTransactionTransactionSignature' }, /** - * Lookup243: ethereum::transaction::TransactionAction + * Lookup245: ethereum::transaction::TransactionAction **/ EthereumTransactionTransactionAction: { _enum: { @@ -1845,7 +1848,7 @@ } }, /** - * Lookup244: ethereum::transaction::TransactionSignature + * Lookup246: ethereum::transaction::TransactionSignature **/ EthereumTransactionTransactionSignature: { v: 'u64', @@ -1853,7 +1856,7 @@ s: 'H256' }, /** - * Lookup246: ethereum::transaction::EIP2930Transaction + * Lookup248: ethereum::transaction::EIP2930Transaction **/ EthereumTransactionEip2930Transaction: { chainId: 'u64', @@ -1869,14 +1872,14 @@ s: 'H256' }, /** - * Lookup248: ethereum::transaction::AccessListItem + * Lookup250: ethereum::transaction::AccessListItem **/ EthereumTransactionAccessListItem: { address: 'H160', storageKeys: 'Vec' }, /** - * Lookup249: ethereum::transaction::EIP1559Transaction + * Lookup251: ethereum::transaction::EIP1559Transaction **/ EthereumTransactionEip1559Transaction: { chainId: 'u64', @@ -1893,7 +1896,7 @@ s: 'H256' }, /** - * Lookup250: pallet_evm_migration::pallet::Call + * Lookup252: pallet_evm_migration::pallet::Call **/ PalletEvmMigrationCall: { _enum: { @@ -1911,7 +1914,7 @@ } }, /** - * Lookup253: pallet_sudo::pallet::Event + * Lookup255: pallet_sudo::pallet::Event **/ PalletSudoEvent: { _enum: { @@ -1927,7 +1930,7 @@ } }, /** - * Lookup255: sp_runtime::DispatchError + * Lookup257: sp_runtime::DispatchError **/ SpRuntimeDispatchError: { _enum: { @@ -1944,38 +1947,38 @@ } }, /** - * Lookup256: sp_runtime::ModuleError + * Lookup258: sp_runtime::ModuleError **/ SpRuntimeModuleError: { index: 'u8', error: '[u8;4]' }, /** - * Lookup257: sp_runtime::TokenError + * Lookup259: sp_runtime::TokenError **/ SpRuntimeTokenError: { _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported'] }, /** - * Lookup258: sp_runtime::ArithmeticError + * Lookup260: sp_runtime::ArithmeticError **/ SpRuntimeArithmeticError: { _enum: ['Underflow', 'Overflow', 'DivisionByZero'] }, /** - * Lookup259: sp_runtime::TransactionalError + * Lookup261: sp_runtime::TransactionalError **/ SpRuntimeTransactionalError: { _enum: ['LimitReached', 'NoLayer'] }, /** - * Lookup260: pallet_sudo::pallet::Error + * Lookup262: pallet_sudo::pallet::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup261: frame_system::AccountInfo> + * Lookup263: frame_system::AccountInfo> **/ FrameSystemAccountInfo: { nonce: 'u32', @@ -1985,7 +1988,7 @@ data: 'PalletBalancesAccountData' }, /** - * Lookup262: frame_support::weights::PerDispatchClass + * Lookup264: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassU64: { normal: 'u64', @@ -1993,13 +1996,13 @@ mandatory: 'u64' }, /** - * Lookup263: sp_runtime::generic::digest::Digest + * Lookup265: sp_runtime::generic::digest::Digest **/ SpRuntimeDigest: { logs: 'Vec' }, /** - * Lookup265: sp_runtime::generic::digest::DigestItem + * Lookup267: sp_runtime::generic::digest::DigestItem **/ SpRuntimeDigestDigestItem: { _enum: { @@ -2015,7 +2018,7 @@ } }, /** - * Lookup267: frame_system::EventRecord + * Lookup269: frame_system::EventRecord **/ FrameSystemEventRecord: { phase: 'FrameSystemPhase', @@ -2023,7 +2026,7 @@ topics: 'Vec' }, /** - * Lookup269: frame_system::pallet::Event + * Lookup271: frame_system::pallet::Event **/ FrameSystemEvent: { _enum: { @@ -2051,7 +2054,7 @@ } }, /** - * Lookup270: frame_support::weights::DispatchInfo + * Lookup272: frame_support::weights::DispatchInfo **/ FrameSupportWeightsDispatchInfo: { weight: 'u64', @@ -2059,19 +2062,19 @@ paysFee: 'FrameSupportWeightsPays' }, /** - * Lookup271: frame_support::weights::DispatchClass + * Lookup273: frame_support::weights::DispatchClass **/ FrameSupportWeightsDispatchClass: { _enum: ['Normal', 'Operational', 'Mandatory'] }, /** - * Lookup272: frame_support::weights::Pays + * Lookup274: frame_support::weights::Pays **/ FrameSupportWeightsPays: { _enum: ['Yes', 'No'] }, /** - * Lookup273: orml_vesting::module::Event + * Lookup275: orml_vesting::module::Event **/ OrmlVestingModuleEvent: { _enum: { @@ -2090,7 +2093,7 @@ } }, /** - * Lookup274: cumulus_pallet_xcmp_queue::pallet::Event + * Lookup276: cumulus_pallet_xcmp_queue::pallet::Event **/ CumulusPalletXcmpQueueEvent: { _enum: { @@ -2105,7 +2108,7 @@ } }, /** - * Lookup275: pallet_xcm::pallet::Event + * Lookup277: pallet_xcm::pallet::Event **/ PalletXcmEvent: { _enum: { @@ -2128,7 +2131,7 @@ } }, /** - * Lookup276: xcm::v2::traits::Outcome + * Lookup278: xcm::v2::traits::Outcome **/ XcmV2TraitsOutcome: { _enum: { @@ -2138,7 +2141,7 @@ } }, /** - * Lookup278: cumulus_pallet_xcm::pallet::Event + * Lookup280: cumulus_pallet_xcm::pallet::Event **/ CumulusPalletXcmEvent: { _enum: { @@ -2148,7 +2151,7 @@ } }, /** - * Lookup279: cumulus_pallet_dmp_queue::pallet::Event + * Lookup281: cumulus_pallet_dmp_queue::pallet::Event **/ CumulusPalletDmpQueueEvent: { _enum: { @@ -2161,7 +2164,7 @@ } }, /** - * Lookup280: pallet_unique::RawEvent> + * Lookup282: pallet_unique::RawEvent> **/ PalletUniqueRawEvent: { _enum: { @@ -2178,9 +2181,9 @@ } }, /** - * Lookup281: pallet_unq_scheduler::pallet::Event + * Lookup283: pallet_unique_scheduler::pallet::Event **/ - PalletUnqSchedulerEvent: { + PalletUniqueSchedulerEvent: { _enum: { Scheduled: { when: 'u32', @@ -2203,13 +2206,13 @@ } }, /** - * Lookup283: frame_support::traits::schedule::LookupError + * Lookup285: frame_support::traits::schedule::LookupError **/ FrameSupportScheduleLookupError: { _enum: ['Unknown', 'BadFormat'] }, /** - * Lookup284: pallet_common::pallet::Event + * Lookup286: pallet_common::pallet::Event **/ PalletCommonEvent: { _enum: { @@ -2227,7 +2230,7 @@ } }, /** - * Lookup285: pallet_structure::pallet::Event + * Lookup287: pallet_structure::pallet::Event **/ PalletStructureEvent: { _enum: { @@ -2235,7 +2238,7 @@ } }, /** - * Lookup286: pallet_rmrk_core::pallet::Event + * Lookup288: pallet_rmrk_core::pallet::Event **/ PalletRmrkCoreEvent: { _enum: { @@ -2312,7 +2315,7 @@ } }, /** - * Lookup287: pallet_rmrk_equip::pallet::Event + * Lookup289: pallet_rmrk_equip::pallet::Event **/ PalletRmrkEquipEvent: { _enum: { @@ -2323,7 +2326,7 @@ } }, /** - * Lookup288: pallet_evm::pallet::Event + * Lookup290: pallet_evm::pallet::Event **/ PalletEvmEvent: { _enum: { @@ -2337,7 +2340,7 @@ } }, /** - * Lookup289: ethereum::log::Log + * Lookup291: ethereum::log::Log **/ EthereumLog: { address: 'H160', @@ -2345,7 +2348,7 @@ data: 'Bytes' }, /** - * Lookup290: pallet_ethereum::pallet::Event + * Lookup292: pallet_ethereum::pallet::Event **/ PalletEthereumEvent: { _enum: { @@ -2353,7 +2356,7 @@ } }, /** - * Lookup291: evm_core::error::ExitReason + * Lookup293: evm_core::error::ExitReason **/ EvmCoreErrorExitReason: { _enum: { @@ -2364,13 +2367,13 @@ } }, /** - * Lookup292: evm_core::error::ExitSucceed + * Lookup294: evm_core::error::ExitSucceed **/ EvmCoreErrorExitSucceed: { _enum: ['Stopped', 'Returned', 'Suicided'] }, /** - * Lookup293: evm_core::error::ExitError + * Lookup295: evm_core::error::ExitError **/ EvmCoreErrorExitError: { _enum: { @@ -2392,13 +2395,13 @@ } }, /** - * Lookup296: evm_core::error::ExitRevert + * Lookup298: evm_core::error::ExitRevert **/ EvmCoreErrorExitRevert: { _enum: ['Reverted'] }, /** - * Lookup297: evm_core::error::ExitFatal + * Lookup299: evm_core::error::ExitFatal **/ EvmCoreErrorExitFatal: { _enum: { @@ -2409,7 +2412,7 @@ } }, /** - * Lookup298: frame_system::Phase + * Lookup300: frame_system::Phase **/ FrameSystemPhase: { _enum: { @@ -2419,14 +2422,14 @@ } }, /** - * Lookup300: frame_system::LastRuntimeUpgradeInfo + * Lookup302: frame_system::LastRuntimeUpgradeInfo **/ FrameSystemLastRuntimeUpgradeInfo: { specVersion: 'Compact', specName: 'Text' }, /** - * Lookup301: frame_system::limits::BlockWeights + * Lookup303: frame_system::limits::BlockWeights **/ FrameSystemLimitsBlockWeights: { baseBlock: 'u64', @@ -2434,7 +2437,7 @@ perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass' }, /** - * Lookup302: frame_support::weights::PerDispatchClass + * Lookup304: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassWeightsPerClass: { normal: 'FrameSystemLimitsWeightsPerClass', @@ -2442,7 +2445,7 @@ mandatory: 'FrameSystemLimitsWeightsPerClass' }, /** - * Lookup303: frame_system::limits::WeightsPerClass + * Lookup305: frame_system::limits::WeightsPerClass **/ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: 'u64', @@ -2451,13 +2454,13 @@ reserved: 'Option' }, /** - * Lookup305: frame_system::limits::BlockLength + * Lookup307: frame_system::limits::BlockLength **/ FrameSystemLimitsBlockLength: { max: 'FrameSupportWeightsPerDispatchClassU32' }, /** - * Lookup306: frame_support::weights::PerDispatchClass + * Lookup308: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassU32: { normal: 'u32', @@ -2465,14 +2468,14 @@ mandatory: 'u32' }, /** - * Lookup307: frame_support::weights::RuntimeDbWeight + * Lookup309: frame_support::weights::RuntimeDbWeight **/ FrameSupportWeightsRuntimeDbWeight: { read: 'u64', write: 'u64' }, /** - * Lookup308: sp_version::RuntimeVersion + * Lookup310: sp_version::RuntimeVersion **/ SpVersionRuntimeVersion: { specName: 'Text', @@ -2485,19 +2488,19 @@ stateVersion: 'u8' }, /** - * Lookup312: frame_system::pallet::Error + * Lookup314: frame_system::pallet::Error **/ FrameSystemError: { _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered'] }, /** - * Lookup314: orml_vesting::module::Error + * Lookup316: orml_vesting::module::Error **/ OrmlVestingModuleError: { _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded'] }, /** - * Lookup316: cumulus_pallet_xcmp_queue::InboundChannelDetails + * Lookup318: cumulus_pallet_xcmp_queue::InboundChannelDetails **/ CumulusPalletXcmpQueueInboundChannelDetails: { sender: 'u32', @@ -2505,19 +2508,19 @@ messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>' }, /** - * Lookup317: cumulus_pallet_xcmp_queue::InboundState + * Lookup319: cumulus_pallet_xcmp_queue::InboundState **/ CumulusPalletXcmpQueueInboundState: { _enum: ['Ok', 'Suspended'] }, /** - * Lookup320: polkadot_parachain::primitives::XcmpMessageFormat + * Lookup322: polkadot_parachain::primitives::XcmpMessageFormat **/ PolkadotParachainPrimitivesXcmpMessageFormat: { _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals'] }, /** - * Lookup323: cumulus_pallet_xcmp_queue::OutboundChannelDetails + * Lookup325: cumulus_pallet_xcmp_queue::OutboundChannelDetails **/ CumulusPalletXcmpQueueOutboundChannelDetails: { recipient: 'u32', @@ -2527,13 +2530,13 @@ lastIndex: 'u16' }, /** - * Lookup324: cumulus_pallet_xcmp_queue::OutboundState + * Lookup326: cumulus_pallet_xcmp_queue::OutboundState **/ CumulusPalletXcmpQueueOutboundState: { _enum: ['Ok', 'Suspended'] }, /** - * Lookup326: cumulus_pallet_xcmp_queue::QueueConfigData + * Lookup328: cumulus_pallet_xcmp_queue::QueueConfigData **/ CumulusPalletXcmpQueueQueueConfigData: { suspendThreshold: 'u32', @@ -2544,29 +2547,29 @@ xcmpMaxIndividualWeight: 'u64' }, /** - * Lookup328: cumulus_pallet_xcmp_queue::pallet::Error + * Lookup330: cumulus_pallet_xcmp_queue::pallet::Error **/ CumulusPalletXcmpQueueError: { _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit'] }, /** - * Lookup329: pallet_xcm::pallet::Error + * Lookup331: pallet_xcm::pallet::Error **/ PalletXcmError: { _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed'] }, /** - * Lookup330: cumulus_pallet_xcm::pallet::Error + * Lookup332: cumulus_pallet_xcm::pallet::Error **/ CumulusPalletXcmError: 'Null', /** - * Lookup331: cumulus_pallet_dmp_queue::ConfigData + * Lookup333: cumulus_pallet_dmp_queue::ConfigData **/ CumulusPalletDmpQueueConfigData: { maxIndividual: 'u64' }, /** - * Lookup332: cumulus_pallet_dmp_queue::PageIndexData + * Lookup334: cumulus_pallet_dmp_queue::PageIndexData **/ CumulusPalletDmpQueuePageIndexData: { beginUsed: 'u32', @@ -2574,21 +2577,21 @@ overweightCount: 'u64' }, /** - * Lookup335: cumulus_pallet_dmp_queue::pallet::Error + * Lookup337: cumulus_pallet_dmp_queue::pallet::Error **/ CumulusPalletDmpQueueError: { _enum: ['Unknown', 'OverLimit'] }, /** - * Lookup339: pallet_unique::Error + * Lookup341: pallet_unique::Error **/ PalletUniqueError: { _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument'] }, /** - * Lookup342: pallet_unq_scheduler::ScheduledV3, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32> + * Lookup344: pallet_unique_scheduler::ScheduledV3, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32> **/ - PalletUnqSchedulerScheduledV3: { + PalletUniqueSchedulerScheduledV3: { maybeId: 'Option<[u8;16]>', priority: 'u8', call: 'FrameSupportScheduleMaybeHashed', @@ -2596,7 +2599,7 @@ origin: 'OpalRuntimeOriginCaller' }, /** - * Lookup343: opal_runtime::OriginCaller + * Lookup345: opal_runtime::OriginCaller **/ OpalRuntimeOriginCaller: { _enum: { @@ -2705,7 +2708,7 @@ } }, /** - * Lookup344: frame_support::dispatch::RawOrigin + * Lookup346: frame_support::dispatch::RawOrigin **/ FrameSupportDispatchRawOrigin: { _enum: { @@ -2715,7 +2718,7 @@ } }, /** - * Lookup345: pallet_xcm::pallet::Origin + * Lookup347: pallet_xcm::pallet::Origin **/ PalletXcmOrigin: { _enum: { @@ -2724,7 +2727,7 @@ } }, /** - * Lookup346: cumulus_pallet_xcm::pallet::Origin + * Lookup348: cumulus_pallet_xcm::pallet::Origin **/ CumulusPalletXcmOrigin: { _enum: { @@ -2733,7 +2736,7 @@ } }, /** - * Lookup347: pallet_ethereum::RawOrigin + * Lookup349: pallet_ethereum::RawOrigin **/ PalletEthereumRawOrigin: { _enum: { @@ -2741,17 +2744,17 @@ } }, /** - * Lookup348: sp_core::Void + * Lookup350: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup349: pallet_unq_scheduler::pallet::Error + * Lookup351: pallet_unique_scheduler::pallet::Error **/ - PalletUnqSchedulerError: { + PalletUniqueSchedulerError: { _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange'] }, /** - * Lookup350: up_data_structs::Collection + * Lookup352: up_data_structs::Collection **/ UpDataStructsCollection: { owner: 'AccountId32', @@ -2765,7 +2768,7 @@ externalCollection: 'bool' }, /** - * Lookup351: up_data_structs::SponsorshipState + * Lookup353: up_data_structs::SponsorshipState **/ UpDataStructsSponsorshipState: { _enum: { @@ -2775,7 +2778,7 @@ } }, /** - * Lookup352: up_data_structs::Properties + * Lookup354: up_data_structs::Properties **/ UpDataStructsProperties: { map: 'UpDataStructsPropertiesMapBoundedVec', @@ -2783,15 +2786,15 @@ spaceLimit: 'u32' }, /** - * Lookup353: up_data_structs::PropertiesMap> + * Lookup355: up_data_structs::PropertiesMap> **/ UpDataStructsPropertiesMapBoundedVec: 'BTreeMap', /** - * Lookup358: up_data_structs::PropertiesMap + * Lookup360: up_data_structs::PropertiesMap **/ UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap', /** - * Lookup365: up_data_structs::CollectionStats + * Lookup367: up_data_structs::CollectionStats **/ UpDataStructsCollectionStats: { created: 'u32', @@ -2799,25 +2802,25 @@ alive: 'u32' }, /** - * Lookup366: up_data_structs::TokenChild + * Lookup368: up_data_structs::TokenChild **/ UpDataStructsTokenChild: { token: 'u32', collection: 'u32' }, /** - * Lookup367: PhantomType::up_data_structs + * Lookup369: PhantomType::up_data_structs **/ PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]', /** - * Lookup369: up_data_structs::TokenData> + * Lookup371: up_data_structs::TokenData> **/ UpDataStructsTokenData: { properties: 'Vec', owner: 'Option' }, /** - * Lookup371: up_data_structs::RpcCollection + * Lookup373: up_data_structs::RpcCollection **/ UpDataStructsRpcCollection: { owner: 'AccountId32', @@ -2833,7 +2836,7 @@ readOnly: 'bool' }, /** - * Lookup372: rmrk_traits::collection::CollectionInfo, frame_support::storage::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> + * Lookup374: rmrk_traits::collection::CollectionInfo, frame_support::storage::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> **/ RmrkTraitsCollectionCollectionInfo: { issuer: 'AccountId32', @@ -2843,7 +2846,7 @@ nftsCount: 'u32' }, /** - * Lookup373: rmrk_traits::nft::NftInfo> + * Lookup375: rmrk_traits::nft::NftInfo> **/ RmrkTraitsNftNftInfo: { owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple', @@ -2853,14 +2856,14 @@ pending: 'bool' }, /** - * Lookup375: rmrk_traits::nft::RoyaltyInfo + * Lookup377: rmrk_traits::nft::RoyaltyInfo **/ RmrkTraitsNftRoyaltyInfo: { recipient: 'AccountId32', amount: 'Permill' }, /** - * Lookup376: rmrk_traits::resource::ResourceInfo, frame_support::storage::bounded_vec::BoundedVec> + * Lookup378: rmrk_traits::resource::ResourceInfo, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsResourceResourceInfo: { id: 'u32', @@ -2869,7 +2872,7 @@ pendingRemoval: 'bool' }, /** - * Lookup377: rmrk_traits::resource::ResourceTypes, frame_support::storage::bounded_vec::BoundedVec> + * Lookup379: rmrk_traits::resource::ResourceTypes, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsResourceResourceTypes: { _enum: { @@ -2879,14 +2882,14 @@ } }, /** - * Lookup378: rmrk_traits::property::PropertyInfo, frame_support::storage::bounded_vec::BoundedVec> + * Lookup380: rmrk_traits::property::PropertyInfo, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsPropertyPropertyInfo: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup379: rmrk_traits::base::BaseInfo> + * Lookup381: rmrk_traits::base::BaseInfo> **/ RmrkTraitsBaseBaseInfo: { issuer: 'AccountId32', @@ -2894,74 +2897,74 @@ symbol: 'Bytes' }, /** - * Lookup380: rmrk_traits::nft::NftChild + * Lookup382: rmrk_traits::nft::NftChild **/ RmrkTraitsNftNftChild: { collectionId: 'u32', nftId: 'u32' }, /** - * Lookup382: pallet_common::pallet::Error + * Lookup384: pallet_common::pallet::Error **/ PalletCommonError: { - _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal'] + _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'] }, /** - * Lookup384: pallet_fungible::pallet::Error + * Lookup386: pallet_fungible::pallet::Error **/ PalletFungibleError: { _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed'] }, /** - * Lookup385: pallet_refungible::ItemData + * Lookup387: pallet_refungible::ItemData **/ PalletRefungibleItemData: { constData: 'Bytes' }, /** - * Lookup389: pallet_refungible::pallet::Error + * Lookup391: pallet_refungible::pallet::Error **/ PalletRefungibleError: { _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed'] }, /** - * Lookup390: pallet_nonfungible::ItemData> + * Lookup392: pallet_nonfungible::ItemData> **/ PalletNonfungibleItemData: { owner: 'PalletEvmAccountBasicCrossAccountIdRepr' }, /** - * Lookup392: pallet_nonfungible::pallet::Error + * Lookup394: pallet_nonfungible::pallet::Error **/ PalletNonfungibleError: { _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren'] }, /** - * Lookup393: pallet_structure::pallet::Error + * Lookup395: pallet_structure::pallet::Error **/ PalletStructureError: { - _enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound'] + _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound'] }, /** - * Lookup394: pallet_rmrk_core::pallet::Error + * Lookup396: pallet_rmrk_core::pallet::Error **/ PalletRmrkCoreError: { _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending'] }, /** - * Lookup396: pallet_rmrk_equip::pallet::Error + * Lookup398: pallet_rmrk_equip::pallet::Error **/ PalletRmrkEquipError: { _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst'] }, /** - * Lookup399: pallet_evm::pallet::Error + * Lookup401: pallet_evm::pallet::Error **/ PalletEvmError: { _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce'] }, /** - * Lookup402: fp_rpc::TransactionStatus + * Lookup404: fp_rpc::TransactionStatus **/ FpRpcTransactionStatus: { transactionHash: 'H256', @@ -2973,11 +2976,11 @@ logsBloom: 'EthbloomBloom' }, /** - * Lookup404: ethbloom::Bloom + * Lookup406: ethbloom::Bloom **/ EthbloomBloom: '[u8;256]', /** - * Lookup406: ethereum::receipt::ReceiptV3 + * Lookup408: ethereum::receipt::ReceiptV3 **/ EthereumReceiptReceiptV3: { _enum: { @@ -2987,7 +2990,7 @@ } }, /** - * Lookup407: ethereum::receipt::EIP658ReceiptData + * Lookup409: ethereum::receipt::EIP658ReceiptData **/ EthereumReceiptEip658ReceiptData: { statusCode: 'u8', @@ -2996,7 +2999,7 @@ logs: 'Vec' }, /** - * Lookup408: ethereum::block::Block + * Lookup410: ethereum::block::Block **/ EthereumBlock: { header: 'EthereumHeader', @@ -3004,7 +3007,7 @@ ommers: 'Vec' }, /** - * Lookup409: ethereum::header::Header + * Lookup411: ethereum::header::Header **/ EthereumHeader: { parentHash: 'H256', @@ -3024,41 +3027,41 @@ nonce: 'EthereumTypesHashH64' }, /** - * Lookup410: ethereum_types::hash::H64 + * Lookup412: ethereum_types::hash::H64 **/ EthereumTypesHashH64: '[u8;8]', /** - * Lookup415: pallet_ethereum::pallet::Error + * Lookup417: pallet_ethereum::pallet::Error **/ PalletEthereumError: { _enum: ['InvalidSignature', 'PreLogExists'] }, /** - * Lookup416: pallet_evm_coder_substrate::pallet::Error + * Lookup418: pallet_evm_coder_substrate::pallet::Error **/ PalletEvmCoderSubstrateError: { _enum: ['OutOfGas', 'OutOfFund'] }, /** - * Lookup417: pallet_evm_contract_helpers::SponsoringModeT + * Lookup419: pallet_evm_contract_helpers::SponsoringModeT **/ PalletEvmContractHelpersSponsoringModeT: { _enum: ['Disabled', 'Allowlisted', 'Generous'] }, /** - * Lookup419: pallet_evm_contract_helpers::pallet::Error + * Lookup421: pallet_evm_contract_helpers::pallet::Error **/ PalletEvmContractHelpersError: { _enum: ['NoPermission'] }, /** - * Lookup420: pallet_evm_migration::pallet::Error + * Lookup422: pallet_evm_migration::pallet::Error **/ PalletEvmMigrationError: { _enum: ['AccountNotEmpty', 'AccountIsNotMigrating'] }, /** - * Lookup422: sp_runtime::MultiSignature + * Lookup424: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -3068,43 +3071,43 @@ } }, /** - * Lookup423: sp_core::ed25519::Signature + * Lookup425: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup425: sp_core::sr25519::Signature + * Lookup427: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup426: sp_core::ecdsa::Signature + * Lookup428: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup429: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup431: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup430: frame_system::extensions::check_genesis::CheckGenesis + * Lookup432: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup433: frame_system::extensions::check_nonce::CheckNonce + * Lookup435: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup434: frame_system::extensions::check_weight::CheckWeight + * Lookup436: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup435: pallet_template_transaction_payment::ChargeTransactionPayment + * Lookup437: pallet_template_transaction_payment::ChargeTransactionPayment **/ PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup436: opal_runtime::Runtime + * Lookup438: opal_runtime::Runtime **/ OpalRuntimeRuntime: 'Null', /** - * Lookup437: pallet_ethereum::FakeTransactionFinalizer + * Lookup439: pallet_ethereum::FakeTransactionFinalizer **/ PalletEthereumFakeTransactionFinalizer: 'Null' }; --- a/tests/src/interfaces/registry.ts +++ b/tests/src/interfaces/registry.ts @@ -1,7 +1,7 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ -import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup'; +import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { @@ -133,10 +133,10 @@ PalletUniqueCall: PalletUniqueCall; PalletUniqueError: PalletUniqueError; PalletUniqueRawEvent: PalletUniqueRawEvent; - PalletUnqSchedulerCall: PalletUnqSchedulerCall; - PalletUnqSchedulerError: PalletUnqSchedulerError; - PalletUnqSchedulerEvent: PalletUnqSchedulerEvent; - PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3; + PalletUniqueSchedulerCall: PalletUniqueSchedulerCall; + PalletUniqueSchedulerError: PalletUniqueSchedulerError; + PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent; + PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3; PalletXcmCall: PalletXcmCall; PalletXcmError: PalletXcmError; PalletXcmEvent: PalletXcmEvent; @@ -196,7 +196,8 @@ UpDataStructsCreateNftExData: UpDataStructsCreateNftExData; UpDataStructsCreateReFungibleData: UpDataStructsCreateReFungibleData; UpDataStructsCreateRefungibleExData: UpDataStructsCreateRefungibleExData; - UpDataStructsNestingRule: UpDataStructsNestingRule; + UpDataStructsNestingPermissions: UpDataStructsNestingPermissions; + UpDataStructsOwnerRestrictedSet: UpDataStructsOwnerRestrictedSet; UpDataStructsProperties: UpDataStructsProperties; UpDataStructsPropertiesMapBoundedVec: UpDataStructsPropertiesMapBoundedVec; UpDataStructsPropertiesMapPropertyPermission: UpDataStructsPropertiesMapPropertyPermission; --- a/tests/src/interfaces/types-lookup.ts +++ b/tests/src/interfaces/types-lookup.ts @@ -1556,38 +1556,40 @@ export interface UpDataStructsCollectionPermissions extends Struct { readonly access: Option; readonly mintMode: Option; - readonly nesting: Option; + readonly nesting: Option; } - /** @name UpDataStructsNestingRule (169) */ - export interface UpDataStructsNestingRule extends Enum { - readonly isDisabled: boolean; - readonly isOwner: boolean; - readonly isOwnerRestricted: boolean; - readonly asOwnerRestricted: BTreeSet; - readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted'; + /** @name UpDataStructsNestingPermissions (169) */ + export interface UpDataStructsNestingPermissions extends Struct { + readonly tokenOwner: bool; + readonly admin: bool; + readonly restricted: Option; + readonly permissive: bool; } - /** @name UpDataStructsPropertyKeyPermission (175) */ + /** @name UpDataStructsOwnerRestrictedSet (171) */ + export interface UpDataStructsOwnerRestrictedSet extends BTreeSet {} + + /** @name UpDataStructsPropertyKeyPermission (177) */ export interface UpDataStructsPropertyKeyPermission extends Struct { readonly key: Bytes; readonly permission: UpDataStructsPropertyPermission; } - /** @name UpDataStructsPropertyPermission (177) */ + /** @name UpDataStructsPropertyPermission (179) */ export interface UpDataStructsPropertyPermission extends Struct { readonly mutable: bool; readonly collectionAdmin: bool; readonly tokenOwner: bool; } - /** @name UpDataStructsProperty (180) */ + /** @name UpDataStructsProperty (182) */ export interface UpDataStructsProperty extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name PalletEvmAccountBasicCrossAccountIdRepr (183) */ + /** @name PalletEvmAccountBasicCrossAccountIdRepr (185) */ export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum { readonly isSubstrate: boolean; readonly asSubstrate: AccountId32; @@ -1596,7 +1598,7 @@ readonly type: 'Substrate' | 'Ethereum'; } - /** @name UpDataStructsCreateItemData (185) */ + /** @name UpDataStructsCreateItemData (187) */ export interface UpDataStructsCreateItemData extends Enum { readonly isNft: boolean; readonly asNft: UpDataStructsCreateNftData; @@ -1607,23 +1609,23 @@ readonly type: 'Nft' | 'Fungible' | 'ReFungible'; } - /** @name UpDataStructsCreateNftData (186) */ + /** @name UpDataStructsCreateNftData (188) */ export interface UpDataStructsCreateNftData extends Struct { readonly properties: Vec; } - /** @name UpDataStructsCreateFungibleData (187) */ + /** @name UpDataStructsCreateFungibleData (189) */ export interface UpDataStructsCreateFungibleData extends Struct { readonly value: u128; } - /** @name UpDataStructsCreateReFungibleData (188) */ + /** @name UpDataStructsCreateReFungibleData (190) */ export interface UpDataStructsCreateReFungibleData extends Struct { readonly constData: Bytes; readonly pieces: u128; } - /** @name UpDataStructsCreateItemExData (193) */ + /** @name UpDataStructsCreateItemExData (195) */ export interface UpDataStructsCreateItemExData extends Enum { readonly isNft: boolean; readonly asNft: Vec; @@ -1636,20 +1638,20 @@ readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners'; } - /** @name UpDataStructsCreateNftExData (195) */ + /** @name UpDataStructsCreateNftExData (197) */ export interface UpDataStructsCreateNftExData extends Struct { readonly properties: Vec; readonly owner: PalletEvmAccountBasicCrossAccountIdRepr; } - /** @name UpDataStructsCreateRefungibleExData (202) */ + /** @name UpDataStructsCreateRefungibleExData (204) */ export interface UpDataStructsCreateRefungibleExData extends Struct { readonly constData: Bytes; readonly users: BTreeMap; } - /** @name PalletUnqSchedulerCall (204) */ - export interface PalletUnqSchedulerCall extends Enum { + /** @name PalletUniqueSchedulerCall (206) */ + export interface PalletUniqueSchedulerCall extends Enum { readonly isScheduleNamed: boolean; readonly asScheduleNamed: { readonly id: U8aFixed; @@ -1673,7 +1675,7 @@ readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter'; } - /** @name FrameSupportScheduleMaybeHashed (206) */ + /** @name FrameSupportScheduleMaybeHashed (208) */ export interface FrameSupportScheduleMaybeHashed extends Enum { readonly isValue: boolean; readonly asValue: Call; @@ -1682,13 +1684,13 @@ readonly type: 'Value' | 'Hash'; } - /** @name PalletTemplateTransactionPaymentCall (207) */ + /** @name PalletTemplateTransactionPaymentCall (209) */ export type PalletTemplateTransactionPaymentCall = Null; - /** @name PalletStructureCall (208) */ + /** @name PalletStructureCall (210) */ export type PalletStructureCall = Null; - /** @name PalletRmrkCoreCall (209) */ + /** @name PalletRmrkCoreCall (211) */ export interface PalletRmrkCoreCall extends Enum { readonly isCreateCollection: boolean; readonly asCreateCollection: { @@ -1793,7 +1795,7 @@ readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource'; } - /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (213) */ + /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (215) */ export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum { readonly isAccountId: boolean; readonly asAccountId: AccountId32; @@ -1802,7 +1804,7 @@ readonly type: 'AccountId' | 'CollectionAndNftTuple'; } - /** @name RmrkTraitsResourceBasicResource (217) */ + /** @name RmrkTraitsResourceBasicResource (219) */ export interface RmrkTraitsResourceBasicResource extends Struct { readonly src: Option; readonly metadata: Option; @@ -1810,7 +1812,7 @@ readonly thumb: Option; } - /** @name RmrkTraitsResourceComposableResource (220) */ + /** @name RmrkTraitsResourceComposableResource (222) */ export interface RmrkTraitsResourceComposableResource extends Struct { readonly parts: Vec; readonly base: u32; @@ -1820,7 +1822,7 @@ readonly thumb: Option; } - /** @name RmrkTraitsResourceSlotResource (222) */ + /** @name RmrkTraitsResourceSlotResource (224) */ export interface RmrkTraitsResourceSlotResource extends Struct { readonly base: u32; readonly src: Option; @@ -1830,7 +1832,7 @@ readonly thumb: Option; } - /** @name PalletRmrkEquipCall (223) */ + /** @name PalletRmrkEquipCall (225) */ export interface PalletRmrkEquipCall extends Enum { readonly isCreateBase: boolean; readonly asCreateBase: { @@ -1846,7 +1848,7 @@ readonly type: 'CreateBase' | 'ThemeAdd'; } - /** @name RmrkTraitsPartPartType (225) */ + /** @name RmrkTraitsPartPartType (227) */ export interface RmrkTraitsPartPartType extends Enum { readonly isFixedPart: boolean; readonly asFixedPart: RmrkTraitsPartFixedPart; @@ -1855,14 +1857,14 @@ readonly type: 'FixedPart' | 'SlotPart'; } - /** @name RmrkTraitsPartFixedPart (227) */ + /** @name RmrkTraitsPartFixedPart (229) */ export interface RmrkTraitsPartFixedPart extends Struct { readonly id: u32; readonly z: u32; readonly src: Bytes; } - /** @name RmrkTraitsPartSlotPart (228) */ + /** @name RmrkTraitsPartSlotPart (230) */ export interface RmrkTraitsPartSlotPart extends Struct { readonly id: u32; readonly equippable: RmrkTraitsPartEquippableList; @@ -1870,7 +1872,7 @@ readonly z: u32; } - /** @name RmrkTraitsPartEquippableList (229) */ + /** @name RmrkTraitsPartEquippableList (231) */ export interface RmrkTraitsPartEquippableList extends Enum { readonly isAll: boolean; readonly isEmpty: boolean; @@ -1879,20 +1881,20 @@ readonly type: 'All' | 'Empty' | 'Custom'; } - /** @name RmrkTraitsTheme (231) */ + /** @name RmrkTraitsTheme (233) */ export interface RmrkTraitsTheme extends Struct { readonly name: Bytes; readonly properties: Vec; readonly inherit: bool; } - /** @name RmrkTraitsThemeThemeProperty (233) */ + /** @name RmrkTraitsThemeThemeProperty (235) */ export interface RmrkTraitsThemeThemeProperty extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name PalletEvmCall (234) */ + /** @name PalletEvmCall (236) */ export interface PalletEvmCall extends Enum { readonly isWithdraw: boolean; readonly asWithdraw: { @@ -1937,7 +1939,7 @@ readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2'; } - /** @name PalletEthereumCall (240) */ + /** @name PalletEthereumCall (242) */ export interface PalletEthereumCall extends Enum { readonly isTransact: boolean; readonly asTransact: { @@ -1946,7 +1948,7 @@ readonly type: 'Transact'; } - /** @name EthereumTransactionTransactionV2 (241) */ + /** @name EthereumTransactionTransactionV2 (243) */ export interface EthereumTransactionTransactionV2 extends Enum { readonly isLegacy: boolean; readonly asLegacy: EthereumTransactionLegacyTransaction; @@ -1957,7 +1959,7 @@ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559'; } - /** @name EthereumTransactionLegacyTransaction (242) */ + /** @name EthereumTransactionLegacyTransaction (244) */ export interface EthereumTransactionLegacyTransaction extends Struct { readonly nonce: U256; readonly gasPrice: U256; @@ -1968,7 +1970,7 @@ readonly signature: EthereumTransactionTransactionSignature; } - /** @name EthereumTransactionTransactionAction (243) */ + /** @name EthereumTransactionTransactionAction (245) */ export interface EthereumTransactionTransactionAction extends Enum { readonly isCall: boolean; readonly asCall: H160; @@ -1976,14 +1978,14 @@ readonly type: 'Call' | 'Create'; } - /** @name EthereumTransactionTransactionSignature (244) */ + /** @name EthereumTransactionTransactionSignature (246) */ export interface EthereumTransactionTransactionSignature extends Struct { readonly v: u64; readonly r: H256; readonly s: H256; } - /** @name EthereumTransactionEip2930Transaction (246) */ + /** @name EthereumTransactionEip2930Transaction (248) */ export interface EthereumTransactionEip2930Transaction extends Struct { readonly chainId: u64; readonly nonce: U256; @@ -1998,13 +2000,13 @@ readonly s: H256; } - /** @name EthereumTransactionAccessListItem (248) */ + /** @name EthereumTransactionAccessListItem (250) */ export interface EthereumTransactionAccessListItem extends Struct { readonly address: H160; readonly storageKeys: Vec; } - /** @name EthereumTransactionEip1559Transaction (249) */ + /** @name EthereumTransactionEip1559Transaction (251) */ export interface EthereumTransactionEip1559Transaction extends Struct { readonly chainId: u64; readonly nonce: U256; @@ -2020,7 +2022,7 @@ readonly s: H256; } - /** @name PalletEvmMigrationCall (250) */ + /** @name PalletEvmMigrationCall (252) */ export interface PalletEvmMigrationCall extends Enum { readonly isBegin: boolean; readonly asBegin: { @@ -2039,7 +2041,7 @@ readonly type: 'Begin' | 'SetData' | 'Finish'; } - /** @name PalletSudoEvent (253) */ + /** @name PalletSudoEvent (255) */ export interface PalletSudoEvent extends Enum { readonly isSudid: boolean; readonly asSudid: { @@ -2056,7 +2058,7 @@ readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone'; } - /** @name SpRuntimeDispatchError (255) */ + /** @name SpRuntimeDispatchError (257) */ export interface SpRuntimeDispatchError extends Enum { readonly isOther: boolean; readonly isCannotLookup: boolean; @@ -2075,13 +2077,13 @@ readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional'; } - /** @name SpRuntimeModuleError (256) */ + /** @name SpRuntimeModuleError (258) */ export interface SpRuntimeModuleError extends Struct { readonly index: u8; readonly error: U8aFixed; } - /** @name SpRuntimeTokenError (257) */ + /** @name SpRuntimeTokenError (259) */ export interface SpRuntimeTokenError extends Enum { readonly isNoFunds: boolean; readonly isWouldDie: boolean; @@ -2093,7 +2095,7 @@ readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported'; } - /** @name SpRuntimeArithmeticError (258) */ + /** @name SpRuntimeArithmeticError (260) */ export interface SpRuntimeArithmeticError extends Enum { readonly isUnderflow: boolean; readonly isOverflow: boolean; @@ -2101,20 +2103,20 @@ readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero'; } - /** @name SpRuntimeTransactionalError (259) */ + /** @name SpRuntimeTransactionalError (261) */ export interface SpRuntimeTransactionalError extends Enum { readonly isLimitReached: boolean; readonly isNoLayer: boolean; readonly type: 'LimitReached' | 'NoLayer'; } - /** @name PalletSudoError (260) */ + /** @name PalletSudoError (262) */ export interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name FrameSystemAccountInfo (261) */ + /** @name FrameSystemAccountInfo (263) */ export interface FrameSystemAccountInfo extends Struct { readonly nonce: u32; readonly consumers: u32; @@ -2123,19 +2125,19 @@ readonly data: PalletBalancesAccountData; } - /** @name FrameSupportWeightsPerDispatchClassU64 (262) */ + /** @name FrameSupportWeightsPerDispatchClassU64 (264) */ export interface FrameSupportWeightsPerDispatchClassU64 extends Struct { readonly normal: u64; readonly operational: u64; readonly mandatory: u64; } - /** @name SpRuntimeDigest (263) */ + /** @name SpRuntimeDigest (265) */ export interface SpRuntimeDigest extends Struct { readonly logs: Vec; } - /** @name SpRuntimeDigestDigestItem (265) */ + /** @name SpRuntimeDigestDigestItem (267) */ export interface SpRuntimeDigestDigestItem extends Enum { readonly isOther: boolean; readonly asOther: Bytes; @@ -2149,14 +2151,14 @@ readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated'; } - /** @name FrameSystemEventRecord (267) */ + /** @name FrameSystemEventRecord (269) */ export interface FrameSystemEventRecord extends Struct { readonly phase: FrameSystemPhase; readonly event: Event; readonly topics: Vec; } - /** @name FrameSystemEvent (269) */ + /** @name FrameSystemEvent (271) */ export interface FrameSystemEvent extends Enum { readonly isExtrinsicSuccess: boolean; readonly asExtrinsicSuccess: { @@ -2184,14 +2186,14 @@ readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked'; } - /** @name FrameSupportWeightsDispatchInfo (270) */ + /** @name FrameSupportWeightsDispatchInfo (272) */ export interface FrameSupportWeightsDispatchInfo extends Struct { readonly weight: u64; readonly class: FrameSupportWeightsDispatchClass; readonly paysFee: FrameSupportWeightsPays; } - /** @name FrameSupportWeightsDispatchClass (271) */ + /** @name FrameSupportWeightsDispatchClass (273) */ export interface FrameSupportWeightsDispatchClass extends Enum { readonly isNormal: boolean; readonly isOperational: boolean; @@ -2199,14 +2201,14 @@ readonly type: 'Normal' | 'Operational' | 'Mandatory'; } - /** @name FrameSupportWeightsPays (272) */ + /** @name FrameSupportWeightsPays (274) */ export interface FrameSupportWeightsPays extends Enum { readonly isYes: boolean; readonly isNo: boolean; readonly type: 'Yes' | 'No'; } - /** @name OrmlVestingModuleEvent (273) */ + /** @name OrmlVestingModuleEvent (275) */ export interface OrmlVestingModuleEvent extends Enum { readonly isVestingScheduleAdded: boolean; readonly asVestingScheduleAdded: { @@ -2226,7 +2228,7 @@ readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated'; } - /** @name CumulusPalletXcmpQueueEvent (274) */ + /** @name CumulusPalletXcmpQueueEvent (276) */ export interface CumulusPalletXcmpQueueEvent extends Enum { readonly isSuccess: boolean; readonly asSuccess: Option; @@ -2247,7 +2249,7 @@ readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced'; } - /** @name PalletXcmEvent (275) */ + /** @name PalletXcmEvent (277) */ export interface PalletXcmEvent extends Enum { readonly isAttempted: boolean; readonly asAttempted: XcmV2TraitsOutcome; @@ -2284,7 +2286,7 @@ readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail'; } - /** @name XcmV2TraitsOutcome (276) */ + /** @name XcmV2TraitsOutcome (278) */ export interface XcmV2TraitsOutcome extends Enum { readonly isComplete: boolean; readonly asComplete: u64; @@ -2295,7 +2297,7 @@ readonly type: 'Complete' | 'Incomplete' | 'Error'; } - /** @name CumulusPalletXcmEvent (278) */ + /** @name CumulusPalletXcmEvent (280) */ export interface CumulusPalletXcmEvent extends Enum { readonly isInvalidFormat: boolean; readonly asInvalidFormat: U8aFixed; @@ -2306,7 +2308,7 @@ readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward'; } - /** @name CumulusPalletDmpQueueEvent (279) */ + /** @name CumulusPalletDmpQueueEvent (281) */ export interface CumulusPalletDmpQueueEvent extends Enum { readonly isInvalidFormat: boolean; readonly asInvalidFormat: U8aFixed; @@ -2323,7 +2325,7 @@ readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced'; } - /** @name PalletUniqueRawEvent (280) */ + /** @name PalletUniqueRawEvent (282) */ export interface PalletUniqueRawEvent extends Enum { readonly isCollectionSponsorRemoved: boolean; readonly asCollectionSponsorRemoved: u32; @@ -2348,8 +2350,8 @@ readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet'; } - /** @name PalletUnqSchedulerEvent (281) */ - export interface PalletUnqSchedulerEvent extends Enum { + /** @name PalletUniqueSchedulerEvent (283) */ + export interface PalletUniqueSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: { readonly when: u32; @@ -2375,14 +2377,14 @@ readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed'; } - /** @name FrameSupportScheduleLookupError (283) */ + /** @name FrameSupportScheduleLookupError (285) */ export interface FrameSupportScheduleLookupError extends Enum { readonly isUnknown: boolean; readonly isBadFormat: boolean; readonly type: 'Unknown' | 'BadFormat'; } - /** @name PalletCommonEvent (284) */ + /** @name PalletCommonEvent (286) */ export interface PalletCommonEvent extends Enum { readonly isCollectionCreated: boolean; readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>; @@ -2409,14 +2411,14 @@ readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet'; } - /** @name PalletStructureEvent (285) */ + /** @name PalletStructureEvent (287) */ export interface PalletStructureEvent extends Enum { readonly isExecuted: boolean; readonly asExecuted: Result; readonly type: 'Executed'; } - /** @name PalletRmrkCoreEvent (286) */ + /** @name PalletRmrkCoreEvent (288) */ export interface PalletRmrkCoreEvent extends Enum { readonly isCollectionCreated: boolean; readonly asCollectionCreated: { @@ -2506,7 +2508,7 @@ readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet'; } - /** @name PalletRmrkEquipEvent (287) */ + /** @name PalletRmrkEquipEvent (289) */ export interface PalletRmrkEquipEvent extends Enum { readonly isBaseCreated: boolean; readonly asBaseCreated: { @@ -2516,7 +2518,7 @@ readonly type: 'BaseCreated'; } - /** @name PalletEvmEvent (288) */ + /** @name PalletEvmEvent (290) */ export interface PalletEvmEvent extends Enum { readonly isLog: boolean; readonly asLog: EthereumLog; @@ -2535,21 +2537,21 @@ readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw'; } - /** @name EthereumLog (289) */ + /** @name EthereumLog (291) */ export interface EthereumLog extends Struct { readonly address: H160; readonly topics: Vec; readonly data: Bytes; } - /** @name PalletEthereumEvent (290) */ + /** @name PalletEthereumEvent (292) */ export interface PalletEthereumEvent extends Enum { readonly isExecuted: boolean; readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>; readonly type: 'Executed'; } - /** @name EvmCoreErrorExitReason (291) */ + /** @name EvmCoreErrorExitReason (293) */ export interface EvmCoreErrorExitReason extends Enum { readonly isSucceed: boolean; readonly asSucceed: EvmCoreErrorExitSucceed; @@ -2562,7 +2564,7 @@ readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal'; } - /** @name EvmCoreErrorExitSucceed (292) */ + /** @name EvmCoreErrorExitSucceed (294) */ export interface EvmCoreErrorExitSucceed extends Enum { readonly isStopped: boolean; readonly isReturned: boolean; @@ -2570,7 +2572,7 @@ readonly type: 'Stopped' | 'Returned' | 'Suicided'; } - /** @name EvmCoreErrorExitError (293) */ + /** @name EvmCoreErrorExitError (295) */ export interface EvmCoreErrorExitError extends Enum { readonly isStackUnderflow: boolean; readonly isStackOverflow: boolean; @@ -2591,13 +2593,13 @@ readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode'; } - /** @name EvmCoreErrorExitRevert (296) */ + /** @name EvmCoreErrorExitRevert (298) */ export interface EvmCoreErrorExitRevert extends Enum { readonly isReverted: boolean; readonly type: 'Reverted'; } - /** @name EvmCoreErrorExitFatal (297) */ + /** @name EvmCoreErrorExitFatal (299) */ export interface EvmCoreErrorExitFatal extends Enum { readonly isNotSupported: boolean; readonly isUnhandledInterrupt: boolean; @@ -2608,7 +2610,7 @@ readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other'; } - /** @name FrameSystemPhase (298) */ + /** @name FrameSystemPhase (300) */ export interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -2617,27 +2619,27 @@ readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization'; } - /** @name FrameSystemLastRuntimeUpgradeInfo (300) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (302) */ export interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemLimitsBlockWeights (301) */ + /** @name FrameSystemLimitsBlockWeights (303) */ export interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: u64; readonly maxBlock: u64; readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass; } - /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (302) */ + /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (304) */ export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (303) */ + /** @name FrameSystemLimitsWeightsPerClass (305) */ export interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: u64; readonly maxExtrinsic: Option; @@ -2645,25 +2647,25 @@ readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (305) */ + /** @name FrameSystemLimitsBlockLength (307) */ export interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportWeightsPerDispatchClassU32; } - /** @name FrameSupportWeightsPerDispatchClassU32 (306) */ + /** @name FrameSupportWeightsPerDispatchClassU32 (308) */ export interface FrameSupportWeightsPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name FrameSupportWeightsRuntimeDbWeight (307) */ + /** @name FrameSupportWeightsRuntimeDbWeight (309) */ export interface FrameSupportWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (308) */ + /** @name SpVersionRuntimeVersion (310) */ export interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -2675,7 +2677,7 @@ readonly stateVersion: u8; } - /** @name FrameSystemError (312) */ + /** @name FrameSystemError (314) */ export interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -2686,7 +2688,7 @@ readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered'; } - /** @name OrmlVestingModuleError (314) */ + /** @name OrmlVestingModuleError (316) */ export interface OrmlVestingModuleError extends Enum { readonly isZeroVestingPeriod: boolean; readonly isZeroVestingPeriodCount: boolean; @@ -2697,21 +2699,21 @@ readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded'; } - /** @name CumulusPalletXcmpQueueInboundChannelDetails (316) */ + /** @name CumulusPalletXcmpQueueInboundChannelDetails (318) */ export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct { readonly sender: u32; readonly state: CumulusPalletXcmpQueueInboundState; readonly messageMetadata: Vec>; } - /** @name CumulusPalletXcmpQueueInboundState (317) */ + /** @name CumulusPalletXcmpQueueInboundState (319) */ export interface CumulusPalletXcmpQueueInboundState extends Enum { readonly isOk: boolean; readonly isSuspended: boolean; readonly type: 'Ok' | 'Suspended'; } - /** @name PolkadotParachainPrimitivesXcmpMessageFormat (320) */ + /** @name PolkadotParachainPrimitivesXcmpMessageFormat (322) */ export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum { readonly isConcatenatedVersionedXcm: boolean; readonly isConcatenatedEncodedBlob: boolean; @@ -2719,7 +2721,7 @@ readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals'; } - /** @name CumulusPalletXcmpQueueOutboundChannelDetails (323) */ + /** @name CumulusPalletXcmpQueueOutboundChannelDetails (325) */ export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct { readonly recipient: u32; readonly state: CumulusPalletXcmpQueueOutboundState; @@ -2728,14 +2730,14 @@ readonly lastIndex: u16; } - /** @name CumulusPalletXcmpQueueOutboundState (324) */ + /** @name CumulusPalletXcmpQueueOutboundState (326) */ export interface CumulusPalletXcmpQueueOutboundState extends Enum { readonly isOk: boolean; readonly isSuspended: boolean; readonly type: 'Ok' | 'Suspended'; } - /** @name CumulusPalletXcmpQueueQueueConfigData (326) */ + /** @name CumulusPalletXcmpQueueQueueConfigData (328) */ export interface CumulusPalletXcmpQueueQueueConfigData extends Struct { readonly suspendThreshold: u32; readonly dropThreshold: u32; @@ -2745,7 +2747,7 @@ readonly xcmpMaxIndividualWeight: u64; } - /** @name CumulusPalletXcmpQueueError (328) */ + /** @name CumulusPalletXcmpQueueError (330) */ export interface CumulusPalletXcmpQueueError extends Enum { readonly isFailedToSend: boolean; readonly isBadXcmOrigin: boolean; @@ -2755,7 +2757,7 @@ readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit'; } - /** @name PalletXcmError (329) */ + /** @name PalletXcmError (331) */ export interface PalletXcmError extends Enum { readonly isUnreachable: boolean; readonly isSendFailure: boolean; @@ -2773,29 +2775,29 @@ readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed'; } - /** @name CumulusPalletXcmError (330) */ + /** @name CumulusPalletXcmError (332) */ export type CumulusPalletXcmError = Null; - /** @name CumulusPalletDmpQueueConfigData (331) */ + /** @name CumulusPalletDmpQueueConfigData (333) */ export interface CumulusPalletDmpQueueConfigData extends Struct { readonly maxIndividual: u64; } - /** @name CumulusPalletDmpQueuePageIndexData (332) */ + /** @name CumulusPalletDmpQueuePageIndexData (334) */ export interface CumulusPalletDmpQueuePageIndexData extends Struct { readonly beginUsed: u32; readonly endUsed: u32; readonly overweightCount: u64; } - /** @name CumulusPalletDmpQueueError (335) */ + /** @name CumulusPalletDmpQueueError (337) */ export interface CumulusPalletDmpQueueError extends Enum { readonly isUnknown: boolean; readonly isOverLimit: boolean; readonly type: 'Unknown' | 'OverLimit'; } - /** @name PalletUniqueError (339) */ + /** @name PalletUniqueError (341) */ export interface PalletUniqueError extends Enum { readonly isCollectionDecimalPointLimitExceeded: boolean; readonly isConfirmUnsetSponsorFail: boolean; @@ -2803,8 +2805,8 @@ readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument'; } - /** @name PalletUnqSchedulerScheduledV3 (342) */ - export interface PalletUnqSchedulerScheduledV3 extends Struct { + /** @name PalletUniqueSchedulerScheduledV3 (344) */ + export interface PalletUniqueSchedulerScheduledV3 extends Struct { readonly maybeId: Option; readonly priority: u8; readonly call: FrameSupportScheduleMaybeHashed; @@ -2812,7 +2814,7 @@ readonly origin: OpalRuntimeOriginCaller; } - /** @name OpalRuntimeOriginCaller (343) */ + /** @name OpalRuntimeOriginCaller (345) */ export interface OpalRuntimeOriginCaller extends Enum { readonly isVoid: boolean; readonly isSystem: boolean; @@ -2826,7 +2828,7 @@ readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum'; } - /** @name FrameSupportDispatchRawOrigin (344) */ + /** @name FrameSupportDispatchRawOrigin (346) */ export interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -2835,7 +2837,7 @@ readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletXcmOrigin (345) */ + /** @name PalletXcmOrigin (347) */ export interface PalletXcmOrigin extends Enum { readonly isXcm: boolean; readonly asXcm: XcmV1MultiLocation; @@ -2844,7 +2846,7 @@ readonly type: 'Xcm' | 'Response'; } - /** @name CumulusPalletXcmOrigin (346) */ + /** @name CumulusPalletXcmOrigin (348) */ export interface CumulusPalletXcmOrigin extends Enum { readonly isRelay: boolean; readonly isSiblingParachain: boolean; @@ -2852,18 +2854,18 @@ readonly type: 'Relay' | 'SiblingParachain'; } - /** @name PalletEthereumRawOrigin (347) */ + /** @name PalletEthereumRawOrigin (349) */ export interface PalletEthereumRawOrigin extends Enum { readonly isEthereumTransaction: boolean; readonly asEthereumTransaction: H160; readonly type: 'EthereumTransaction'; } - /** @name SpCoreVoid (348) */ + /** @name SpCoreVoid (350) */ export type SpCoreVoid = Null; - /** @name PalletUnqSchedulerError (349) */ - export interface PalletUnqSchedulerError extends Enum { + /** @name PalletUniqueSchedulerError (351) */ + export interface PalletUniqueSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; readonly isTargetBlockNumberInPast: boolean; @@ -2871,7 +2873,7 @@ readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; } - /** @name UpDataStructsCollection (350) */ + /** @name UpDataStructsCollection (352) */ export interface UpDataStructsCollection extends Struct { readonly owner: AccountId32; readonly mode: UpDataStructsCollectionMode; @@ -2884,7 +2886,7 @@ readonly externalCollection: bool; } - /** @name UpDataStructsSponsorshipState (351) */ + /** @name UpDataStructsSponsorshipState (353) */ export interface UpDataStructsSponsorshipState extends Enum { readonly isDisabled: boolean; readonly isUnconfirmed: boolean; @@ -2894,42 +2896,42 @@ readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed'; } - /** @name UpDataStructsProperties (352) */ + /** @name UpDataStructsProperties (354) */ export interface UpDataStructsProperties extends Struct { readonly map: UpDataStructsPropertiesMapBoundedVec; readonly consumedSpace: u32; readonly spaceLimit: u32; } - /** @name UpDataStructsPropertiesMapBoundedVec (353) */ + /** @name UpDataStructsPropertiesMapBoundedVec (355) */ export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap {} - /** @name UpDataStructsPropertiesMapPropertyPermission (358) */ + /** @name UpDataStructsPropertiesMapPropertyPermission (360) */ export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap {} - /** @name UpDataStructsCollectionStats (365) */ + /** @name UpDataStructsCollectionStats (367) */ export interface UpDataStructsCollectionStats extends Struct { readonly created: u32; readonly destroyed: u32; readonly alive: u32; } - /** @name UpDataStructsTokenChild (366) */ + /** @name UpDataStructsTokenChild (368) */ export interface UpDataStructsTokenChild extends Struct { readonly token: u32; readonly collection: u32; } - /** @name PhantomTypeUpDataStructs (367) */ + /** @name PhantomTypeUpDataStructs (369) */ export interface PhantomTypeUpDataStructs extends Vec> {} - /** @name UpDataStructsTokenData (369) */ + /** @name UpDataStructsTokenData (371) */ export interface UpDataStructsTokenData extends Struct { readonly properties: Vec; readonly owner: Option; } - /** @name UpDataStructsRpcCollection (371) */ + /** @name UpDataStructsRpcCollection (373) */ export interface UpDataStructsRpcCollection extends Struct { readonly owner: AccountId32; readonly mode: UpDataStructsCollectionMode; @@ -2944,7 +2946,7 @@ readonly readOnly: bool; } - /** @name RmrkTraitsCollectionCollectionInfo (372) */ + /** @name RmrkTraitsCollectionCollectionInfo (374) */ export interface RmrkTraitsCollectionCollectionInfo extends Struct { readonly issuer: AccountId32; readonly metadata: Bytes; @@ -2953,7 +2955,7 @@ readonly nftsCount: u32; } - /** @name RmrkTraitsNftNftInfo (373) */ + /** @name RmrkTraitsNftNftInfo (375) */ export interface RmrkTraitsNftNftInfo extends Struct { readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple; readonly royalty: Option; @@ -2962,13 +2964,13 @@ readonly pending: bool; } - /** @name RmrkTraitsNftRoyaltyInfo (375) */ + /** @name RmrkTraitsNftRoyaltyInfo (377) */ export interface RmrkTraitsNftRoyaltyInfo extends Struct { readonly recipient: AccountId32; readonly amount: Permill; } - /** @name RmrkTraitsResourceResourceInfo (376) */ + /** @name RmrkTraitsResourceResourceInfo (378) */ export interface RmrkTraitsResourceResourceInfo extends Struct { readonly id: u32; readonly resource: RmrkTraitsResourceResourceTypes; @@ -2976,7 +2978,7 @@ readonly pendingRemoval: bool; } - /** @name RmrkTraitsResourceResourceTypes (377) */ + /** @name RmrkTraitsResourceResourceTypes (379) */ export interface RmrkTraitsResourceResourceTypes extends Enum { readonly isBasic: boolean; readonly asBasic: RmrkTraitsResourceBasicResource; @@ -2987,26 +2989,26 @@ readonly type: 'Basic' | 'Composable' | 'Slot'; } - /** @name RmrkTraitsPropertyPropertyInfo (378) */ + /** @name RmrkTraitsPropertyPropertyInfo (380) */ export interface RmrkTraitsPropertyPropertyInfo extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name RmrkTraitsBaseBaseInfo (379) */ + /** @name RmrkTraitsBaseBaseInfo (381) */ export interface RmrkTraitsBaseBaseInfo extends Struct { readonly issuer: AccountId32; readonly baseType: Bytes; readonly symbol: Bytes; } - /** @name RmrkTraitsNftNftChild (380) */ + /** @name RmrkTraitsNftNftChild (382) */ export interface RmrkTraitsNftNftChild extends Struct { readonly collectionId: u32; readonly nftId: u32; } - /** @name PalletCommonError (382) */ + /** @name PalletCommonError (384) */ export interface PalletCommonError extends Enum { readonly isCollectionNotFound: boolean; readonly isMustBeTokenOwner: boolean; @@ -3032,8 +3034,7 @@ readonly isAddressIsZero: boolean; readonly isUnsupportedOperation: boolean; readonly isNotSufficientFounds: boolean; - readonly isNestingIsDisabled: boolean; - readonly isOnlyOwnerAllowedToNest: boolean; + readonly isUserIsNotAllowedToNest: boolean; readonly isSourceCollectionIsNotAllowedToNest: boolean; readonly isCollectionFieldSizeExceeded: boolean; readonly isNoSpaceForProperty: boolean; @@ -3043,10 +3044,10 @@ readonly isEmptyPropertyKey: boolean; readonly isCollectionIsExternal: boolean; readonly isCollectionIsInternal: boolean; - 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' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal'; + readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal'; } - /** @name PalletFungibleError (384) */ + /** @name PalletFungibleError (386) */ export interface PalletFungibleError extends Enum { readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isFungibleItemsHaveNoId: boolean; @@ -3056,12 +3057,12 @@ readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed'; } - /** @name PalletRefungibleItemData (385) */ + /** @name PalletRefungibleItemData (387) */ export interface PalletRefungibleItemData extends Struct { readonly constData: Bytes; } - /** @name PalletRefungibleError (389) */ + /** @name PalletRefungibleError (391) */ export interface PalletRefungibleError extends Enum { readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isWrongRefungiblePieces: boolean; @@ -3070,12 +3071,12 @@ readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed'; } - /** @name PalletNonfungibleItemData (390) */ + /** @name PalletNonfungibleItemData (392) */ export interface PalletNonfungibleItemData extends Struct { readonly owner: PalletEvmAccountBasicCrossAccountIdRepr; } - /** @name PalletNonfungibleError (392) */ + /** @name PalletNonfungibleError (394) */ export interface PalletNonfungibleError extends Enum { readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isNonfungibleItemsHaveNoAmount: boolean; @@ -3083,15 +3084,16 @@ readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren'; } - /** @name PalletStructureError (393) */ + /** @name PalletStructureError (395) */ export interface PalletStructureError extends Enum { readonly isOuroborosDetected: boolean; readonly isDepthLimit: boolean; + readonly isBreadthLimit: boolean; readonly isTokenNotFound: boolean; - readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound'; + readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound'; } - /** @name PalletRmrkCoreError (394) */ + /** @name PalletRmrkCoreError (396) */ export interface PalletRmrkCoreError extends Enum { readonly isCorruptedCollectionType: boolean; readonly isNftTypeEncodeError: boolean; @@ -3112,7 +3114,7 @@ readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending'; } - /** @name PalletRmrkEquipError (396) */ + /** @name PalletRmrkEquipError (398) */ export interface PalletRmrkEquipError extends Enum { readonly isPermissionError: boolean; readonly isNoAvailableBaseId: boolean; @@ -3122,7 +3124,7 @@ readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst'; } - /** @name PalletEvmError (399) */ + /** @name PalletEvmError (401) */ export interface PalletEvmError extends Enum { readonly isBalanceLow: boolean; readonly isFeeOverflow: boolean; @@ -3133,7 +3135,7 @@ readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce'; } - /** @name FpRpcTransactionStatus (402) */ + /** @name FpRpcTransactionStatus (404) */ export interface FpRpcTransactionStatus extends Struct { readonly transactionHash: H256; readonly transactionIndex: u32; @@ -3144,10 +3146,10 @@ readonly logsBloom: EthbloomBloom; } - /** @name EthbloomBloom (404) */ + /** @name EthbloomBloom (406) */ export interface EthbloomBloom extends U8aFixed {} - /** @name EthereumReceiptReceiptV3 (406) */ + /** @name EthereumReceiptReceiptV3 (408) */ export interface EthereumReceiptReceiptV3 extends Enum { readonly isLegacy: boolean; readonly asLegacy: EthereumReceiptEip658ReceiptData; @@ -3158,7 +3160,7 @@ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559'; } - /** @name EthereumReceiptEip658ReceiptData (407) */ + /** @name EthereumReceiptEip658ReceiptData (409) */ export interface EthereumReceiptEip658ReceiptData extends Struct { readonly statusCode: u8; readonly usedGas: U256; @@ -3166,14 +3168,14 @@ readonly logs: Vec; } - /** @name EthereumBlock (408) */ + /** @name EthereumBlock (410) */ export interface EthereumBlock extends Struct { readonly header: EthereumHeader; readonly transactions: Vec; readonly ommers: Vec; } - /** @name EthereumHeader (409) */ + /** @name EthereumHeader (411) */ export interface EthereumHeader extends Struct { readonly parentHash: H256; readonly ommersHash: H256; @@ -3192,24 +3194,24 @@ readonly nonce: EthereumTypesHashH64; } - /** @name EthereumTypesHashH64 (410) */ + /** @name EthereumTypesHashH64 (412) */ export interface EthereumTypesHashH64 extends U8aFixed {} - /** @name PalletEthereumError (415) */ + /** @name PalletEthereumError (417) */ export interface PalletEthereumError extends Enum { readonly isInvalidSignature: boolean; readonly isPreLogExists: boolean; readonly type: 'InvalidSignature' | 'PreLogExists'; } - /** @name PalletEvmCoderSubstrateError (416) */ + /** @name PalletEvmCoderSubstrateError (418) */ export interface PalletEvmCoderSubstrateError extends Enum { readonly isOutOfGas: boolean; readonly isOutOfFund: boolean; readonly type: 'OutOfGas' | 'OutOfFund'; } - /** @name PalletEvmContractHelpersSponsoringModeT (417) */ + /** @name PalletEvmContractHelpersSponsoringModeT (419) */ export interface PalletEvmContractHelpersSponsoringModeT extends Enum { readonly isDisabled: boolean; readonly isAllowlisted: boolean; @@ -3217,20 +3219,20 @@ readonly type: 'Disabled' | 'Allowlisted' | 'Generous'; } - /** @name PalletEvmContractHelpersError (419) */ + /** @name PalletEvmContractHelpersError (421) */ export interface PalletEvmContractHelpersError extends Enum { readonly isNoPermission: boolean; readonly type: 'NoPermission'; } - /** @name PalletEvmMigrationError (420) */ + /** @name PalletEvmMigrationError (422) */ export interface PalletEvmMigrationError extends Enum { readonly isAccountNotEmpty: boolean; readonly isAccountIsNotMigrating: boolean; readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating'; } - /** @name SpRuntimeMultiSignature (422) */ + /** @name SpRuntimeMultiSignature (424) */ export interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -3241,34 +3243,34 @@ readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreEd25519Signature (423) */ + /** @name SpCoreEd25519Signature (425) */ export interface SpCoreEd25519Signature extends U8aFixed {} - /** @name SpCoreSr25519Signature (425) */ + /** @name SpCoreSr25519Signature (427) */ export interface SpCoreSr25519Signature extends U8aFixed {} - /** @name SpCoreEcdsaSignature (426) */ + /** @name SpCoreEcdsaSignature (428) */ export interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name FrameSystemExtensionsCheckSpecVersion (429) */ + /** @name FrameSystemExtensionsCheckSpecVersion (431) */ export type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (430) */ + /** @name FrameSystemExtensionsCheckGenesis (432) */ export type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (433) */ + /** @name FrameSystemExtensionsCheckNonce (435) */ export interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name FrameSystemExtensionsCheckWeight (434) */ + /** @name FrameSystemExtensionsCheckWeight (436) */ export type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (435) */ + /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (437) */ export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name OpalRuntimeRuntime (436) */ + /** @name OpalRuntimeRuntime (438) */ export type OpalRuntimeRuntime = Null; - /** @name PalletEthereumFakeTransactionFinalizer (437) */ + /** @name PalletEthereumFakeTransactionFinalizer (439) */ export type PalletEthereumFakeTransactionFinalizer = Null; } // declare module --- a/tests/src/nesting/nest.test.ts +++ b/tests/src/nesting/nest.test.ts @@ -32,7 +32,7 @@ it('Performs the full suite: bundles a token, transfers, and unnests', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); // Create a nested token @@ -62,7 +62,7 @@ it('Transfers an already bundled token', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const tokenA = await createItemExpectSuccess(alice, collection, 'NFT'); const tokenB = await createItemExpectSuccess(alice, collection, 'NFT'); @@ -92,7 +92,7 @@ it('Checks token children', async () => { await usingApi(async api => { const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {tokenOwner: true}}); const collectionB = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT'); @@ -151,7 +151,7 @@ it('NFT: allows an Owner to nest/unnest their token', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); // Create a nested token @@ -170,7 +170,7 @@ it('NFT: allows an Owner to nest/unnest their token (Restricted nesting)', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {OwnerRestricted:[collection]}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true, restricted:[collection]}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); // Create a nested token @@ -191,7 +191,7 @@ it('Fungible: allows an Owner to nest/unnest their token', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collectionNFT, 'NFT', {Substrate: alice.address}); const targetAddress = {Ethereum: tokenIdToAddress(collectionNFT, targetToken)}; @@ -218,7 +218,7 @@ const collectionFT = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {OwnerRestricted: [collectionFT]}}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true, restricted: [collectionFT]}}); // Create a nested token await expect(executeTransaction(api, alice, api.tx.unique.createItem( @@ -238,7 +238,7 @@ it('ReFungible: allows an Owner to nest/unnest their token', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collectionNFT, 'NFT', {Substrate: alice.address}); const targetAddress = {Ethereum: tokenIdToAddress(collectionNFT, targetToken)}; @@ -265,7 +265,7 @@ const collectionRFT = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {OwnerRestricted:[collectionRFT]}}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true, restricted:[collectionRFT]}}); // Create a nested token await expect(executeTransaction(api, alice, api.tx.unique.createItem( @@ -292,7 +292,7 @@ it('Disallows excessive token nesting', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); const maxNestingLevel = 5; @@ -326,7 +326,7 @@ it('NFT: disallows to nest token if nesting is disabled', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Disabled'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); // Try to create a nested token @@ -334,12 +334,12 @@ collection, {Ethereum: tokenIdToAddress(collection, targetToken)}, {nft: {const_data: [], variable_data: []}} as any, - )), 'while creating nested token').to.be.rejectedWith(/^common\.NestingIsDisabled$/); + )), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/); // Create a token to be nested const newToken = await createItemExpectSuccess(alice, collection, 'NFT'); // Try to nest - await expect(executeTransaction(api, alice, api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.NestingIsDisabled/); + await expect(executeTransaction(api, alice, api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: alice.address}); expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: alice.address}); }); @@ -348,7 +348,7 @@ it('NFT: disallows a non-Owner to nest someone else\'s token', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); await addToAllowListExpectSuccess(alice, collection, bob.address); await enableAllowListExpectSuccess(alice, collection); @@ -362,7 +362,7 @@ collection, {Ethereum: tokenIdToAddress(collection, targetToken)}, {nft: {const_data: [], variable_data: []}} as any, - )), 'while creating nested token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection const newToken = await createItemExpectSuccess(alice, collection, 'NFT'); @@ -374,7 +374,7 @@ it('NFT: disallows a non-Owner to nest someone else\'s token (Restricted nesting)', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {OwnerRestricted:[collection]}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true, restricted:[collection]}}); await addToAllowListExpectSuccess(alice, collection, bob.address); await enableAllowListExpectSuccess(alice, collection); @@ -388,7 +388,7 @@ collection, {Ethereum: tokenIdToAddress(collection, targetToken)}, {nft: {const_data: [], variable_data: []}} as any, - )), 'while creating nested token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection const newToken = await createItemExpectSuccess(alice, collection, 'NFT'); @@ -400,7 +400,7 @@ it('NFT: disallows to nest token in an unlisted collection', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {OwnerRestricted:[]}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true, restricted:[]}}); // Create a token to attempt to be nested into const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); @@ -424,7 +424,7 @@ it('Fungible: disallows to nest token if nesting is disabled', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: 'Disabled'}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {}}); const targetToken = await createItemExpectSuccess(alice, collectionNFT, 'NFT'); const targetAddress = {Ethereum: tokenIdToAddress(collectionNFT, targetToken)}; @@ -435,12 +435,12 @@ collectionFT, targetAddress, {Fungible: {Value: 10}}, - )), 'while creating nested token').to.be.rejectedWith(/^common\.NestingIsDisabled$/); + )), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/); // Create a token to be nested const newToken = await createItemExpectSuccess(alice, collectionFT, 'Fungible'); // Try to nest - await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.NestingIsDisabled/); + await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Create another token to be nested const newToken2 = await createItemExpectSuccess(alice, collectionFT, 'Fungible'); @@ -452,7 +452,7 @@ it('Fungible: disallows a non-Owner to nest someone else\'s token', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true}}); await addToAllowListExpectSuccess(alice, collectionNFT, bob.address); await enableAllowListExpectSuccess(alice, collectionNFT); @@ -469,11 +469,11 @@ collectionFT, targetAddress, {Fungible: {Value: 10}}, - )), 'while creating nested token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection const newToken = await createItemExpectSuccess(alice, collectionFT, 'Fungible'); - await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); }); }); @@ -489,25 +489,25 @@ const targetAddress = {Ethereum: tokenIdToAddress(collectionNFT, targetToken)}; const collectionFT = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {OwnerRestricted:[collectionFT]}}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true, restricted:[collectionFT]}}); // Try to create a nested token in the wrong collection await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionFT, targetAddress, {Fungible: {Value: 10}}, - )), 'while creating nested token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection const newToken = await createItemExpectSuccess(alice, collectionFT, 'Fungible'); - await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); }); }); it('Fungible: disallows to nest token in an unlisted collection', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {OwnerRestricted:[]}}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true, restricted:[]}}); // Create a token to attempt to be nested into const targetToken = await createItemExpectSuccess(alice, collectionNFT, 'NFT'); @@ -533,7 +533,7 @@ it('ReFungible: disallows to nest token if nesting is disabled', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: 'Disabled'}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {}}); const targetToken = await createItemExpectSuccess(alice, collectionNFT, 'NFT'); const targetAddress = {Ethereum: tokenIdToAddress(collectionNFT, targetToken)}; @@ -544,14 +544,14 @@ collectionRFT, targetAddress, {ReFungible: {const_data: [], pieces: 100}}, - )), 'while creating a nested token').to.be.rejectedWith(/^common\.NestingIsDisabled$/); + )), 'while creating a nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/); // Create a token to be nested const newToken = await createItemExpectSuccess(alice, collectionRFT, 'ReFungible'); // Try to nest await transferExpectFailure(collectionRFT, newToken, alice, targetAddress, 100); // Try to nest - await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionRFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.NestingIsDisabled/); + await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionRFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Create another token to be nested const newToken2 = await createItemExpectSuccess(alice, collectionRFT, 'ReFungible'); @@ -563,7 +563,7 @@ it('ReFungible: disallows a non-Owner to nest someone else\'s token', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true}}); await addToAllowListExpectSuccess(alice, collectionNFT, bob.address); await enableAllowListExpectSuccess(alice, collectionNFT); @@ -580,11 +580,11 @@ collectionRFT, targetAddress, {ReFungible: {const_data: [], pieces: 100}}, - )), 'while creating a nested token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection const newToken = await createItemExpectSuccess(alice, collectionRFT, 'ReFungible'); - await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionRFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionRFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); }); }); @@ -600,25 +600,25 @@ const targetAddress = {Ethereum: tokenIdToAddress(collectionNFT, targetToken)}; const collectionRFT = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {OwnerRestricted:[collectionRFT]}}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true, restricted:[collectionRFT]}}); // Try to create a nested token in the wrong collection await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionRFT, targetAddress, {ReFungible: {const_data: [], pieces: 100}}, - )), 'while creating a nested token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection const newToken = await createItemExpectSuccess(alice, collectionRFT, 'ReFungible'); - await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionRFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.OnlyOwnerAllowedToNest/); + await expect(executeTransaction(api, alice, api.tx.unique.transfer(targetAddress, collectionRFT, newToken, 1)), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); }); }); it('ReFungible: disallows to nest token to an unlisted collection', async () => { await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {OwnerRestricted:[]}}); + await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true, restricted:[]}}); // Create a token to attempt to be nested into const targetToken = await createItemExpectSuccess(alice, collectionNFT, 'NFT'); --- a/tests/src/nesting/rules-smoke.test.ts +++ b/tests/src/nesting/rules-smoke.test.ts @@ -14,7 +14,7 @@ const events = await executeTransaction(api, alice, api.tx.unique.createCollectionEx({ mode: 'NFT', permissions: { - nesting: {OwnerRestricted: []}, + nesting: {tokenOwner: true, restricted: []}, }, })); const collection = getCreateCollectionResult(events).collectionId; --- a/tests/src/nesting/unnest.test.ts +++ b/tests/src/nesting/unnest.test.ts @@ -27,7 +27,7 @@ it('NFT: allows the owner to successfully unnest a token', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken)}; @@ -56,7 +56,7 @@ it('Fungible: allows the owner to successfully unnest a token', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken)}; @@ -83,7 +83,7 @@ it('ReFungible: allows the owner to successfully unnest a token', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken)}; @@ -118,7 +118,7 @@ it('Disallows a non-owner to unnest/burn a token', async () => { await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken)}; @@ -148,7 +148,7 @@ // Recursive nesting it('Prevents Ouroboros creation', async () => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); - await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: 'Owner'}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); // Create a nested token ouroboros --- a/tests/src/removeCollectionAdmin.test.ts +++ b/tests/src/removeCollectionAdmin.test.ts @@ -111,7 +111,7 @@ }); }); - it.only('Admin can\'t remove collection admin.', async () => { + it('Admin can\'t remove collection admin.', async () => { await usingApi(async (api, privateKeyWrapper) => { const collectionId = await createCollectionExpectSuccess(); const alice = privateKeyWrapper('//Alice'); --- a/tests/src/util/helpers.ts +++ b/tests/src/util/helpers.ts @@ -193,7 +193,7 @@ if (method === 'ExtrinsicSuccess') { success = true; } else if ((expectSection == section) && (expectMethod == method)) { - successData = extractAction!(data); + successData = extractAction!(data as any); } }); @@ -547,7 +547,7 @@ }); } -export const setCollectionPermissionsExpectSuccess = async (sender: IKeyringPair, collectionId: number, permissions: {mintMode?: boolean, access?: 'Normal' | 'AllowList', nesting?: 'Disabled' | 'Owner' | {OwnerRestricted: number[]}}) => { +export const setCollectionPermissionsExpectSuccess = async (sender: IKeyringPair, collectionId: number, permissions: any) => { await usingApi(async(api) => { const tx = api.tx.unique.setCollectionPermissions(collectionId, permissions); const events = await submitTransactionAsync(sender, tx); --- a/tests/yarn.lock +++ b/tests/yarn.lock @@ -508,78 +508,78 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@polkadot/api-augment@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-8.7.2-11.tgz#7f174f830c181d82863eb41f48e24fd6bbde3065" - integrity sha512-yKsuxjez1ArwSEZJ+g8mausm38CgOtaWBG5ob5cmO9M2v45HBXy3Kmviqr8Dputtu23deT85p7m/8RFLlAnzSA== +"@polkadot/api-augment@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-8.7.2-15.tgz#a141d3cd595a39e7e2965330268b5eb92bdd5849" + integrity sha512-QGXosX6p0RFYNhWepZCIaRiyCvHnVt5Pb6U7/77UxIszgGRHfHFDsYr4v5bGiaRTOj/E8moc2Ufi/+VgOiG9sw== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/api-base" "8.7.2-11" - "@polkadot/rpc-augment" "8.7.2-11" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-augment" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" + "@polkadot/api-base" "8.7.2-15" + "@polkadot/rpc-augment" "8.7.2-15" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-augment" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" "@polkadot/util" "^9.4.1" -"@polkadot/api-base@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-8.7.2-11.tgz#7e297a0ca283a58bc9d8d11c1edb099bc61da9f1" - integrity sha512-WQE5uvb7W7AKSfy4ekW2i6mJJzZYLMS/eNPNXYpURW/cRPt9NhT9lNz2Ae2d7gaWgWil+jNLecXTHTUzxobRbA== +"@polkadot/api-base@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-8.7.2-15.tgz#c909d3bf0fbfb3cc46ca7067199e36e72b959bdb" + integrity sha512-HXdtaqbpnfFbOazjI9CPSYM37S4mzhxUs8hLMKrWqpHL//at4tiMa5dRyev9VSKeE6gqeqCT9JTBvEAZ9eNR6Q== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/rpc-core" "8.7.2-11" - "@polkadot/types" "8.7.2-11" + "@polkadot/rpc-core" "8.7.2-15" + "@polkadot/types" "8.7.2-15" "@polkadot/util" "^9.4.1" rxjs "^7.5.5" -"@polkadot/api-contract@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-8.7.2-11.tgz#9487394286e536a7b1edfb6296529722fa63a43a" - integrity sha512-vOi4FX33ttkotJDzSum0nFUworWJ2+yfDejZkC33mM8zb+ne0Quggfz2nQqiKS2lgkj2z4YwJbsf/9paRQeS3w== +"@polkadot/api-contract@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-8.7.2-15.tgz#687706fb4bd33c4a88187db3a269292f6e559892" + integrity sha512-Pr1Nm5zBpW9foCKm/Q6hIT5KHCeFVE8EFSfHBgjbitYpFOGnz19kduEpa0vxIcfq2WVXcVPTQ2eqjGtHoThNqA== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/api" "8.7.2-11" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" - "@polkadot/types-create" "8.7.2-11" + "@polkadot/api" "8.7.2-15" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" + "@polkadot/types-create" "8.7.2-15" "@polkadot/util" "^9.4.1" "@polkadot/util-crypto" "^9.4.1" rxjs "^7.5.5" -"@polkadot/api-derive@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-8.7.2-11.tgz#21e315d554a8cd31bb1f3b10077960e35391a311" - integrity sha512-8fkYidDgNjJcWHtiRfJQaI4H386uGZh5Ie0t21KG4sSC5R+Lbnm0CJwIX4scJvQ/U+38gCyQW07b+Pxt9oDwvg== +"@polkadot/api-derive@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-8.7.2-15.tgz#b29f24d435c036c9bf5624d18a9d93196cf2c4f4" + integrity sha512-0R3M9LFKoQ0d7elIDQjPKuV5EAHTtkU/72Lgxw2GYStsOqcnfFNomfLoLMuk8Xy4ETUAp/Kq1eMJpvsY6hSTtA== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/api" "8.7.2-11" - "@polkadot/api-augment" "8.7.2-11" - "@polkadot/api-base" "8.7.2-11" - "@polkadot/rpc-core" "8.7.2-11" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" + "@polkadot/api" "8.7.2-15" + "@polkadot/api-augment" "8.7.2-15" + "@polkadot/api-base" "8.7.2-15" + "@polkadot/rpc-core" "8.7.2-15" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" "@polkadot/util" "^9.4.1" "@polkadot/util-crypto" "^9.4.1" rxjs "^7.5.5" -"@polkadot/api@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-8.7.2-11.tgz#d76ad24f96fc9eba49825c11277105d12bf5e05c" - integrity sha512-eFQtZOJOVK5IbNSjvrk1JrOZJrtZRjaecMAhnQiglMPoIfQJiRbnXhUslGbXsgFoJsfWW6DAVY5aJi/PjuF9OQ== +"@polkadot/api@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-8.7.2-15.tgz#c7ede416e4d277c227fc93fdfdc4d27634935d08" + integrity sha512-tzEUWsXIPzPbnpn/3LTGtJ7SXzMgCJ/da5d9q0UH3vsx1gDEjuZEWXOeSYLHgbqQSgwPukvMVuGtRjcC+A/WZQ== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/api-augment" "8.7.2-11" - "@polkadot/api-base" "8.7.2-11" - "@polkadot/api-derive" "8.7.2-11" + "@polkadot/api-augment" "8.7.2-15" + "@polkadot/api-base" "8.7.2-15" + "@polkadot/api-derive" "8.7.2-15" "@polkadot/keyring" "^9.4.1" - "@polkadot/rpc-augment" "8.7.2-11" - "@polkadot/rpc-core" "8.7.2-11" - "@polkadot/rpc-provider" "8.7.2-11" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-augment" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" - "@polkadot/types-create" "8.7.2-11" - "@polkadot/types-known" "8.7.2-11" + "@polkadot/rpc-augment" "8.7.2-15" + "@polkadot/rpc-core" "8.7.2-15" + "@polkadot/rpc-provider" "8.7.2-15" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-augment" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" + "@polkadot/types-create" "8.7.2-15" + "@polkadot/types-known" "8.7.2-15" "@polkadot/util" "^9.4.1" "@polkadot/util-crypto" "^9.4.1" eventemitter3 "^4.0.7" @@ -603,38 +603,38 @@ "@polkadot/util" "9.4.1" "@substrate/ss58-registry" "^1.22.0" -"@polkadot/rpc-augment@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-8.7.2-11.tgz#b118303653fb6f80688c62600fde2ed489e1c974" - integrity sha512-/h50Kzz/UZwhsV+g7bwGWf0fkVvlWIQ/zaA7H9xtuE4VGvmZRE4Uu06011ToVWNyAwM5xQfXBx1gUznRhem+pg== +"@polkadot/rpc-augment@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-8.7.2-15.tgz#6175126968dfb79ba5549b03cac8c3860666e72b" + integrity sha512-IgfkR9CHT8jDuGYkb75DBFu+yJNW32+vOt3oS0sf57VqkHketSq9rD3mtZD37V/21Q4a17yrqKQOte7mMl9kcg== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/rpc-core" "8.7.2-11" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" + "@polkadot/rpc-core" "8.7.2-15" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" "@polkadot/util" "^9.4.1" -"@polkadot/rpc-core@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-8.7.2-11.tgz#9c31a34bc2f70e4dab40f9ba08ca9b89c8f3e5c0" - integrity sha512-DyHYgzBusMFfsDJ/2VBaVTNHRwZ2cf/woaeJA/ijJbxK2Ke/sg9UW6zr+3Ip8T62GnSNnJoSHMOaMdqvebkNVQ== +"@polkadot/rpc-core@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-8.7.2-15.tgz#827a31adf833fb866cb5f39dbd86c5f0b44d63a4" + integrity sha512-yGmpESOmGyzY7+D3yUxbKToz/eP/q8vDyOGajLnHn12TcnjgbAfMdc4xdU6cQex+mSsPwS0YQFuPrPXGloCOHA== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/rpc-augment" "8.7.2-11" - "@polkadot/rpc-provider" "8.7.2-11" - "@polkadot/types" "8.7.2-11" + "@polkadot/rpc-augment" "8.7.2-15" + "@polkadot/rpc-provider" "8.7.2-15" + "@polkadot/types" "8.7.2-15" "@polkadot/util" "^9.4.1" rxjs "^7.5.5" -"@polkadot/rpc-provider@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-8.7.2-11.tgz#1f4ef542aee83e0c4e1b2a126ed00ade7c818660" - integrity sha512-LE5kKEMxL4mZ+dLbU8lOPG2GuPYliYtX1SnXv509zAgUjSCWW9fkdeMBF3tFCjSJJcUmle3mlxG8kYuAqNUScA== +"@polkadot/rpc-provider@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-8.7.2-15.tgz#99dd30085284442265225e0f12aef3849b7bfe44" + integrity sha512-EwgBnUIpGhEfSanDXVviQQ784HYD3DWUPdv9pIvn9qnCZPk7o+MGPvKW73A+XbQpPV9j8tAGnVsSnbDuoSVp1g== dependencies: "@babel/runtime" "^7.18.3" "@polkadot/keyring" "^9.4.1" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-support" "8.7.2-11" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-support" "8.7.2-15" "@polkadot/util" "^9.4.1" "@polkadot/util-crypto" "^9.4.1" "@polkadot/x-fetch" "^9.4.1" @@ -652,86 +652,86 @@ dependencies: "@types/chrome" "^0.0.171" -"@polkadot/typegen@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/typegen/-/typegen-8.7.2-11.tgz#047c3c91f4b34f0188853bed606fd12f6a0fbf4d" - integrity sha512-YZpyT8LJFm3akFurrxHpRWxZU50yKvrfdgyZpJh+JJOhSIIDtkx58JNj2+lv0QvhUFOUkd4IWap9bbCPmeLf6w== +"@polkadot/typegen@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/typegen/-/typegen-8.7.2-15.tgz#06e9d054db1c63d9862186429a8017b2b80bce2a" + integrity sha512-NC8Ticirh20k1Co17D8cqQawIJ8W9HWDuq6oDyEMT4XkeBbZ1hQRO9JBO14neWDJmYJBhlUotP65jgjs8D5bMw== dependencies: "@babel/core" "^7.18.2" "@babel/register" "^7.17.7" "@babel/runtime" "^7.18.3" - "@polkadot/api" "8.7.2-11" - "@polkadot/api-augment" "8.7.2-11" - "@polkadot/rpc-augment" "8.7.2-11" - "@polkadot/rpc-provider" "8.7.2-11" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-augment" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" - "@polkadot/types-create" "8.7.2-11" - "@polkadot/types-support" "8.7.2-11" + "@polkadot/api" "8.7.2-15" + "@polkadot/api-augment" "8.7.2-15" + "@polkadot/rpc-augment" "8.7.2-15" + "@polkadot/rpc-provider" "8.7.2-15" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-augment" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" + "@polkadot/types-create" "8.7.2-15" + "@polkadot/types-support" "8.7.2-15" "@polkadot/util" "^9.4.1" "@polkadot/x-ws" "^9.4.1" handlebars "^4.7.7" websocket "^1.0.34" yargs "^17.5.1" -"@polkadot/types-augment@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-8.7.2-11.tgz#c63105c76f8d85f7e642f8e81e16c3ffc3b3e7c4" - integrity sha512-1meIbpS0Synfdz+Jo90jc/utxwbwl9XQiH5WoFCUYLlbtE/H/yQcIoeme5o6gr/q7BalFQMYYwGBfctGT/KGjA== +"@polkadot/types-augment@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-8.7.2-15.tgz#7ab077a1a31190ad17183196efb1da065c0d0bcd" + integrity sha512-th1jVBDqpyQVB2gCNzo/HV0dIeNinjyPla01BFdhQ5mDKYXJ8fugsLCk5oKUPpItBrj+5NWCgynVvCwm0YJw3g== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" "@polkadot/util" "^9.4.1" -"@polkadot/types-codec@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-8.7.2-11.tgz#a852d3493062ee1052f7a837d07cce4146f2c67e" - integrity sha512-ZvRBiVo5IwZ+vcbKIMv6l0kRG2bVpBmU+pCPdWV9zGtKpgumz1FTvxBmjXoNo6OJVX23fKNMF8qBD/DEiC9ZwA== +"@polkadot/types-codec@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-8.7.2-15.tgz#6afa4ff45dc7afb9250f283f70a40be641367941" + integrity sha512-k8t7/Ern7sY4ZKQc5cYY3h1bg7/GAEaTPmKz094DhPJmEhi3NNgeJ4uyeB/JYCo5GbxXQG6W2M021s582urjMw== dependencies: "@babel/runtime" "^7.18.3" "@polkadot/util" "^9.4.1" -"@polkadot/types-create@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-8.7.2-11.tgz#2489409155d55c941a322349d740e9f8f8325147" - integrity sha512-489UaZP7JKfZ2Fn0oDQ32setAiV7vv9Q3Kg4a+j4m2TGEEXAVeiNE4Uvijmsw3ayLTtzO9hL0WtMpFWa8GlIMg== +"@polkadot/types-create@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-8.7.2-15.tgz#106a11eb71dc2743b140d8640a3b3e7fc5ccf10e" + integrity sha512-xB9jAJ3XQh/U05b+X77m5TPh4N9oBwwpePkAmLhovTSOSeobj7qeUKrZqccs0BSxJnJPlLwrwuusjeTtTfZCHw== dependencies: "@babel/runtime" "^7.18.3" - "@polkadot/types-codec" "8.7.2-11" + "@polkadot/types-codec" "8.7.2-15" "@polkadot/util" "^9.4.1" -"@polkadot/types-known@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-8.7.2-11.tgz#89cb0cdea197ed3887b30948a560b0cd13b39c23" - integrity sha512-ulPQCmwJTJ/MGJGVJZfjWEGq28HGl7D4sOrigbfLOlo6/KyFl2p5H4GUFeF/s+/lGfUQsxfu4Q6QgXDZAOkB1A== +"@polkadot/types-known@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-8.7.2-15.tgz#171b8d3963a5c38d46f98a7c14be59033f9a4da8" + integrity sha512-c5YuuauPCu70chDnV7Fphh7SbAQl8JWj+PoY37I5BACCNFxtUx5KnP93BChiD0QxcHs2QqD6RdjW6O7cVRUKfA== dependencies: "@babel/runtime" "^7.18.3" "@polkadot/networks" "^9.4.1" - "@polkadot/types" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" - "@polkadot/types-create" "8.7.2-11" + "@polkadot/types" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" + "@polkadot/types-create" "8.7.2-15" "@polkadot/util" "^9.4.1" -"@polkadot/types-support@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-8.7.2-11.tgz#ed08331ba1faf7a803e35aafa0692eefd28baa90" - integrity sha512-oflUi0eahFMoS3Sxz6EKjZKNl7GMRnd91kClEV0FzR1wEha+3CL1BCXTGV3n8YoJtfztUUNInVHPQTvMW78WvQ== +"@polkadot/types-support@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-8.7.2-15.tgz#2d726e3d5615383ca97db3f32ee21e2aad077fcb" + integrity sha512-Tl6xm9r/uqrKQK1OUdi5X9MaTgplBYPj3tY9677ZPV7QGYWt0Uz912u9fC2v0PGNReDXtzvrlgvk0aoErwzF5Q== dependencies: "@babel/runtime" "^7.18.3" "@polkadot/util" "^9.4.1" -"@polkadot/types@8.7.2-11": - version "8.7.2-11" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-8.7.2-11.tgz#84b1dca2896fec4af23d4096fa810b59f44071ac" - integrity sha512-PSreCXr/csWpMVqtByEj7Pk5j+JEqxOiipsP+PdtOJaRnWtBMFpMqs7Fj2uULVYqFJKKPyp+JofnRDRcH1YDYg== +"@polkadot/types@8.7.2-15": + version "8.7.2-15" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-8.7.2-15.tgz#5b25b6b76c916637a1d15133b5880a73079e65bc" + integrity sha512-KfJKzk6/Ta8vZVJH8+xYYPvd9SD+4fdl4coGgKuPGYZFsjDGnYvAX4ls6/WKby51JK5s24sqaUP3vZisIgh4wA== dependencies: "@babel/runtime" "^7.18.3" "@polkadot/keyring" "^9.4.1" - "@polkadot/types-augment" "8.7.2-11" - "@polkadot/types-codec" "8.7.2-11" - "@polkadot/types-create" "8.7.2-11" + "@polkadot/types-augment" "8.7.2-15" + "@polkadot/types-codec" "8.7.2-15" + "@polkadot/types-create" "8.7.2-15" "@polkadot/util" "^9.4.1" "@polkadot/util-crypto" "^9.4.1" rxjs "^7.5.5" -- gitstuff