--- a/Cargo.lock +++ b/Cargo.lock @@ -5307,6 +5307,7 @@ "pallet-common", "pallet-evm", "pallet-evm-contract-helpers", + "pallet-evm-migration", "pallet-randomness-collective-flip", "pallet-timestamp", "pallet-unique", --- a/pallets/app-promotion/Cargo.toml +++ b/pallets/app-promotion/Cargo.toml @@ -15,7 +15,7 @@ targets = ['x86_64-unknown-linux-gnu'] [features] -default = ['std'] +default = ['std',] runtime-benchmarks = [ 'frame-benchmarking', 'frame-support/runtime-benchmarks', @@ -121,6 +121,13 @@ [dependencies.pallet-evm-contract-helpers] default-features = false path = "../evm-contract-helpers" + +[dev-dependencies] +[dependencies.pallet-evm-migration] +default-features = false +path = "../evm-migration" + + ################################################################################ [dependencies] --- a/pallets/app-promotion/src/benchmarking.rs +++ b/pallets/app-promotion/src/benchmarking.rs @@ -20,53 +20,109 @@ use crate::Pallet as PromototionPallet; use sp_runtime::traits::Bounded; +use sp_std::vec; use frame_benchmarking::{benchmarks, account}; -use frame_support::traits::OnInitialize; + use frame_system::{Origin, RawOrigin}; +use pallet_unique::benchmarking::create_nft_collection; +use pallet_evm_migration::Pallet as EvmMigrationPallet; + +// trait BenchmarkingConfig: Config + pallet_unique::Config { } + +// impl BenchmarkingConfig for T { } const SEED: u32 = 0; benchmarks! { where_clause{ - where T: Config - + where T: Config + pallet_unique::Config + pallet_evm_migration::Config , + T::BlockNumber: From } - on_initialize { - let block1: T::BlockNumber = T::BlockNumber::from(1u32); - let block2: T::BlockNumber = T::BlockNumber::from(2u32); - PromototionPallet::::on_initialize(block1); // Create Treasury account - }: { PromototionPallet::::on_initialize(block2); } // Benchmark deposit_into_existing path - start_app_promotion { - let caller = account::("caller", 0, SEED); - } : {PromototionPallet::::start_app_promotion(RawOrigin::Root.into(), T::BlockNumber::from(2u32))?} + } : {PromototionPallet::::start_app_promotion(RawOrigin::Root.into(), None)?} + + stop_app_promotion{ + PromototionPallet::::start_app_promotion(RawOrigin::Root.into(), Some(25.into()))?; + } : {PromototionPallet::::stop_app_promotion(RawOrigin::Root.into())?} set_admin_address { - let caller = account::("caller", 0, SEED); - let _ = T::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - } : {PromototionPallet::::set_admin_address(RawOrigin::Root.into(), caller)?} + let pallet_admin = account::("admin", 0, SEED); + let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + } : {PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin))?} + payout_stakers{ + let pallet_admin = account::("admin", 0, SEED); + let share = Perbill::from_rational(1u32, 10); + PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; + let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let staker: T::AccountId = account("caller", 0, SEED); + let _ = ::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), share * ::Currency::total_balance(&staker))?; + } : {PromototionPallet::::payout_stakers(RawOrigin::Signed(pallet_admin.clone()).into(), Some(1))?} + stake { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 10); - let _ = T::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - } : {PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?} + let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + } : {PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * ::Currency::total_balance(&caller))?} unstake { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 10); - let _ = T::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - let _ = PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?; + let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * ::Currency::total_balance(&caller))?; - } : {PromototionPallet::::unstake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?} + } : {PromototionPallet::::unstake(RawOrigin::Signed(caller.clone()).into(), share * ::Currency::total_balance(&caller))?} recalculate_stake { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 10); - let _ = T::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - let _ = PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?; - let block = ::current_block_number(); + let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * ::Currency::total_balance(&caller))?; + let block = ::current_block_number(); let mut acc = >::default(); - } : {PromototionPallet::::recalculate_stake(&caller, block, share * T::Currency::total_balance(&caller), &mut acc)} + } : {PromototionPallet::::recalculate_stake(&caller, block, share * ::Currency::total_balance(&caller), &mut acc)} + + sponsor_collection { + let pallet_admin = account::("admin", 0, SEED); + PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; + let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let caller: T::AccountId = account("caller", 0, SEED); + let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let collection = create_nft_collection::(caller.clone())?; + } : {PromototionPallet::::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?} + + stop_sponsoring_collection { + let pallet_admin = account::("admin", 0, SEED); + PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; + let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let caller: T::AccountId = account("caller", 0, SEED); + let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let collection = create_nft_collection::(caller.clone())?; + PromototionPallet::::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?; + } : {PromototionPallet::::stop_sponsoring_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?} + + sponsor_contract { + let pallet_admin = account::("admin", 0, SEED); + PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; + + let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let address = H160::from_low_u64_be(SEED as u64); + let data: Vec = (0..20 as u8).collect(); + >::begin(RawOrigin::Root.into(), address)?; + >::finish(RawOrigin::Root.into(), address, data)?; + } : {PromototionPallet::::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?} + + stop_sponsoring_contract { + let pallet_admin = account::("admin", 0, SEED); + PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; + + let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let address = H160::from_low_u64_be(SEED as u64); + let data: Vec = (0..20 as u8).collect(); + >::begin(RawOrigin::Root.into(), address)?; + >::finish(RawOrigin::Root.into(), address, data)?; + PromototionPallet::::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?; + } : {PromototionPallet::::stop_sponsoring_contract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?} } --- a/pallets/app-promotion/src/lib.rs +++ b/pallets/app-promotion/src/lib.rs @@ -132,6 +132,8 @@ #[pallet::generate_deposit(fn deposit_event)] pub enum Event { StakingRecalculation( + /// An recalculated staker + T::AccountId, /// Base on which interest is calculated BalanceOf, /// Amount of accrued interest @@ -164,7 +166,7 @@ Key, Key, ), - Value = BalanceOf, + Value = (BalanceOf, T::BlockNumber), QueryKind = ValueQuery, >; @@ -189,6 +191,13 @@ pub type NextInterestBlock = StorageValue; + /// Stores the address of the staker for which the last revenue recalculation was performed. + /// If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers. + #[pallet::storage] + #[pallet::getter(fn get_last_calculated_staker)] + pub type LastCalcucaltedStaker = + StorageValue; + #[pallet::hooks] impl Hooks> for Pallet { fn on_initialize(current_block: T::BlockNumber) -> Weight @@ -196,10 +205,10 @@ ::BlockNumber: From, { let mut consumed_weight = 0; - let mut add_weight = |reads, writes, weight| { - consumed_weight += T::DbWeight::get().reads_writes(reads, writes); - consumed_weight += weight; - }; + // let mut add_weight = |reads, writes, weight| { + // consumed_weight += T::DbWeight::get().reads_writes(reads, writes); + // consumed_weight += weight; + // }; PendingUnstake::::iter() .filter_map(|((staker, block), amount)| { @@ -214,41 +223,44 @@ >::remove((staker, block)); }); - let next_interest_block = Self::get_interest_block(); - let current_relay_block = T::RelayBlockNumberProvider::current_block_number(); - if next_interest_block != 0.into() && current_relay_block >= next_interest_block { - let mut acc = >::default(); - let mut base_acc = >::default(); + // let next_interest_block = Self::get_interest_block(); + // let current_relay_block = T::RelayBlockNumberProvider::current_block_number(); + // if next_interest_block != 0.into() && current_relay_block >= next_interest_block { + // let mut acc = >::default(); + // let mut base_acc = >::default(); - NextInterestBlock::::set( - NextInterestBlock::::get() + T::RecalculationInterval::get(), - ); - add_weight(0, 1, 0); + // NextInterestBlock::::set( + // NextInterestBlock::::get() + T::RecalculationInterval::get(), + // ); + // add_weight(0, 1, 0); - Staked::::iter() - .filter(|((_, block), _)| { - *block + T::RecalculationInterval::get() <= current_relay_block - }) - .for_each(|((staker, block), amount)| { - Self::recalculate_stake(&staker, block, amount, &mut acc); - add_weight(0, 0, T::WeightInfo::recalculate_stake()); - base_acc += amount; - }); - >::get() - .checked_add(&acc) - .map(|res| >::set(res)); + // Staked::::iter() + // .filter(|((_, block), _)| { + // *block + T::RecalculationInterval::get() <= current_relay_block + // }) + // .for_each(|((staker, block), amount)| { + // Self::recalculate_stake(&staker, block, amount, &mut acc); + // add_weight(0, 0, T::WeightInfo::recalculate_stake()); + // base_acc += amount; + // }); + // >::get() + // .checked_add(&acc) + // .map(|res| >::set(res)); - Self::deposit_event(Event::StakingRecalculation(base_acc, acc)); - add_weight(0, 1, 0); - } else { - add_weight(1, 0, 0) - }; + // Self::deposit_event(Event::StakingRecalculation(base_acc, acc)); + // add_weight(0, 1, 0); + // } else { + // add_weight(1, 0, 0) + // }; consumed_weight } } #[pallet::call] - impl Pallet { + impl Pallet + where + T::BlockNumber: From, + { #[pallet::weight(T::WeightInfo::set_admin_address())] pub fn set_admin_address(origin: OriginFor, admin: T::CrossAccountId) -> DispatchResult { ensure_root(origin)?; @@ -281,7 +293,7 @@ Ok(()) } - #[pallet::weight(0)] + #[pallet::weight(T::WeightInfo::stop_app_promotion())] pub fn stop_app_promotion(origin: OriginFor) -> DispatchResult where ::BlockNumber: From, @@ -317,19 +329,24 @@ Self::add_lock_balance(&staker_id, amount)?; let block_number = T::RelayBlockNumberProvider::current_block_number(); + let recalc_block = (block_number / T::RecalculationInterval::get() + 2u32.into()) + * T::RecalculationInterval::get(); - >::insert( - (&staker_id, block_number), - >::get((&staker_id, block_number)) + >::insert((&staker_id, block_number), { + let mut balance_and_recalc_block = >::get((&staker_id, block_number)); + balance_and_recalc_block.0 = balance_and_recalc_block + .0 .checked_add(&amount) - .ok_or(ArithmeticError::Overflow)?, - ); + .ok_or(ArithmeticError::Overflow)?; + balance_and_recalc_block.1 = recalc_block; + balance_and_recalc_block + }); - >::set( - >::get() - .checked_add(&amount) - .ok_or(ArithmeticError::Overflow)?, - ); + // >::set( + // >::get() + // .checked_add(&amount) + // .ok_or(ArithmeticError::Overflow)?, + // ); Ok(()) } @@ -338,63 +355,120 @@ pub fn unstake(staker: OriginFor, amount: BalanceOf) -> DispatchResult { let staker_id = ensure_signed(staker)?; - let mut stakes = Staked::::iter_prefix((&staker_id,)).collect::>(); + let mut stakes = Staked::::drain_prefix((&staker_id,)); - let total_staked = stakes - .iter() - .fold(>::default(), |acc, (_, amount)| acc + *amount); + // let total_staked = stakes + // .iter() + // .fold(>::default(), |acc, (_, amount)| acc + *amount); - ensure!(total_staked >= amount, ArithmeticError::Underflow); + // ensure!(total_staked >= amount, ArithmeticError::Underflow); - >::set( - >::get() - .checked_sub(&amount) - .ok_or(ArithmeticError::Underflow)?, - ); + // >::set( + // >::get() + // .checked_sub(&amount) + // .ok_or(ArithmeticError::Underflow)?, + // ); - let block = - T::RelayBlockNumberProvider::current_block_number() + T::PendingInterval::get(); - >::insert( - (&staker_id, block), - >::get((&staker_id, block)) - .checked_add(&amount) - .ok_or(ArithmeticError::Overflow)?, - ); + // let block = + // T::RelayBlockNumberProvider::current_block_number() + T::PendingInterval::get(); + // >::insert( + // (&staker_id, block), + // >::get((&staker_id, block)) + // .checked_add(&amount) + // .ok_or(ArithmeticError::Overflow)?, + // ); - stakes.sort_by_key(|(block, _)| *block); + // stakes.sort_by_key(|(block, _)| *block); - let mut acc_amount = amount; - let new_state = stakes - .into_iter() - .map_while(|(block, balance_per_block)| { - if acc_amount == >::default() { - return None; - } - if acc_amount <= balance_per_block { - let res = (block, balance_per_block - acc_amount, acc_amount); - acc_amount = >::default(); - return Some(res); - } else { - acc_amount -= balance_per_block; - return Some((block, >::default(), acc_amount)); - } - }) - .collect::>(); + // let mut acc_amount = amount; + // let new_state = stakes + // .into_iter() + // .map_while(|(block, balance_per_block)| { + // if acc_amount == >::default() { + // return None; + // } + // if acc_amount <= balance_per_block { + // let res = (block, balance_per_block - acc_amount, acc_amount); + // acc_amount = >::default(); + // return Some(res); + // } else { + // acc_amount -= balance_per_block; + // return Some((block, >::default(), acc_amount)); + // } + // }) + // .collect::>(); - new_state - .into_iter() - .for_each(|(block, to_staked, _to_pending)| { - if to_staked == >::default() { - >::remove((&staker_id, block)); - } else { - >::insert((&staker_id, block), to_staked); - } - }); + // new_state + // .into_iter() + // .for_each(|(block, to_staked, _to_pending)| { + // if to_staked == >::default() { + // >::remove((&staker_id, block)); + // } else { + // >::insert((&staker_id, block), to_staked); + // } + // }); Ok(()) + + // let staker_id = ensure_signed(staker)?; + + // let mut stakes = Staked::::iter_prefix((&staker_id,)).collect::>(); + + // let total_staked = stakes + // .iter() + // .fold(>::default(), |acc, (_, amount)| acc + *amount); + + // ensure!(total_staked >= amount, ArithmeticError::Underflow); + + // >::set( + // >::get() + // .checked_sub(&amount) + // .ok_or(ArithmeticError::Underflow)?, + // ); + + // let block = + // T::RelayBlockNumberProvider::current_block_number() + T::PendingInterval::get(); + // >::insert( + // (&staker_id, block), + // >::get((&staker_id, block)) + // .checked_add(&amount) + // .ok_or(ArithmeticError::Overflow)?, + // ); + + // stakes.sort_by_key(|(block, _)| *block); + + // let mut acc_amount = amount; + // let new_state = stakes + // .into_iter() + // .map_while(|(block, balance_per_block)| { + // if acc_amount == >::default() { + // return None; + // } + // if acc_amount <= balance_per_block { + // let res = (block, balance_per_block - acc_amount, acc_amount); + // acc_amount = >::default(); + // return Some(res); + // } else { + // acc_amount -= balance_per_block; + // return Some((block, >::default(), acc_amount)); + // } + // }) + // .collect::>(); + + // new_state + // .into_iter() + // .for_each(|(block, to_staked, _to_pending)| { + // if to_staked == >::default() { + // >::remove((&staker_id, block)); + // } else { + // >::insert((&staker_id, block), to_staked); + // } + // }); + + // Ok(()) } - #[pallet::weight(0)] + #[pallet::weight(T::WeightInfo::sponsor_collection())] pub fn sponsor_collection( admin: OriginFor, collection_id: CollectionId, @@ -407,8 +481,8 @@ T::CollectionHandler::set_sponsor(Self::account_id(), collection_id) } - #[pallet::weight(0)] - pub fn stop_sponsorign_collection( + #[pallet::weight(T::WeightInfo::stop_sponsoring_collection())] + pub fn stop_sponsoring_collection( admin: OriginFor, collection_id: CollectionId, ) -> DispatchResult { @@ -428,7 +502,7 @@ T::CollectionHandler::remove_collection_sponsor(collection_id) } - #[pallet::weight(0)] + #[pallet::weight(T::WeightInfo::sponsor_contract())] pub fn sponsor_conract(admin: OriginFor, contract_id: H160) -> DispatchResult { let admin_id = ensure_signed(admin)?; @@ -443,8 +517,8 @@ ) } - #[pallet::weight(0)] - pub fn stop_sponsorign_contract(admin: OriginFor, contract_id: H160) -> DispatchResult { + #[pallet::weight(T::WeightInfo::stop_sponsoring_contract())] + pub fn stop_sponsoring_contract(admin: OriginFor, contract_id: H160) -> DispatchResult { let admin_id = ensure_signed(admin)?; ensure!( @@ -459,6 +533,18 @@ ); T::ContractHandler::remove_contract_sponsor(contract_id) } + + #[pallet::weight(0)] + pub fn payout_stakers(admin: OriginFor, stakers_number: Option) -> DispatchResult { + let admin_id = ensure_signed(admin)?; + + ensure!( + admin_id == Admin::::get().ok_or(Error::::AdminNotSet)?, + Error::::NoPermission + ); + + Ok(()) + } } } @@ -501,7 +587,9 @@ pub fn total_staked_by_id(staker: impl EncodeLike) -> Option> { let staked = Staked::::iter_prefix((staker,)) .into_iter() - .fold(>::default(), |acc, (_, amount)| acc + amount); + .fold(>::default(), |acc, (_, (amount, _))| { + acc + amount + }); if staked != >::default() { Some(staked) } else { @@ -514,7 +602,7 @@ ) -> Option)>> { let mut staked = Staked::::iter_prefix((staker,)) .into_iter() - .map(|(block, amount)| (block, amount)) + .map(|(block, (amount, _))| (block, amount)) .collect::>(); staked.sort_by_key(|(block, _)| *block); if !staked.is_empty() { @@ -550,17 +638,17 @@ income_acc: &mut BalanceOf, ) { let income = Self::calculate_income(base); - base.checked_add(&income).map(|res| { - >::insert((staker, block), res); - *income_acc += income; - >::transfer( - &T::TreasuryAccountId::get(), - staker, - income, - ExistenceRequirement::KeepAlive, - ) - .and_then(|_| Self::add_lock_balance(staker, income)); - }); + // base.checked_add(&income).map(|res| { + // >::insert((staker, block), res); + // *income_acc += income; + // >::transfer( + // &T::TreasuryAccountId::get(), + // staker, + // income, + // ExistenceRequirement::KeepAlive, + // ) + // .and_then(|_| Self::add_lock_balance(staker, income)); + // }); } fn calculate_income(base: I) -> I --- a/pallets/app-promotion/src/types.rs +++ b/pallets/app-promotion/src/types.rs @@ -101,7 +101,7 @@ fn set_sponsor(sponsor_id: Self::AccountId, contract_id: Self::ContractId) -> DispatchResult; - fn remove_contract_sponsor(collection_id: Self::ContractId) -> DispatchResult; + fn remove_contract_sponsor(contract_id: Self::ContractId) -> DispatchResult; fn get_sponsor(contract_id: Self::ContractId) -> Result, DispatchError>; --- a/pallets/app-promotion/src/weights.rs +++ b/pallets/app-promotion/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_app_promotion //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-30, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -33,108 +33,167 @@ /// Weight functions needed for pallet_app_promotion. pub trait WeightInfo { - fn on_initialize() -> Weight; fn start_app_promotion() -> Weight; + fn stop_app_promotion() -> Weight; fn set_admin_address() -> Weight; + fn payout_stakers() -> Weight; fn stake() -> Weight; fn unstake() -> Weight; fn recalculate_stake() -> Weight; + fn sponsor_collection() -> Weight; + fn stop_sponsoring_collection() -> Weight; + fn sponsor_contract() -> Weight; + fn stop_sponsoring_contract() -> Weight; } /// Weights for pallet_app_promotion using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { - // Storage: Promotion PendingUnstake (r:1 w:0) - // Storage: Promotion NextInterestBlock (r:1 w:0) - fn on_initialize() -> Weight { - (2_705_000 as Weight) + // Storage: Promotion StartBlock (r:1 w:1) + // Storage: ParachainSystem ValidationData (r:1 w:0) + // Storage: Promotion NextInterestBlock (r:0 w:1) + fn start_app_promotion() -> Weight { + (2_299_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Promotion StartBlock (r:1 w:1) // Storage: Promotion NextInterestBlock (r:0 w:1) - fn start_app_promotion() -> Weight { - (1_436_000 as Weight) + fn stop_app_promotion() -> Weight { + (1_733_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Promotion Admin (r:0 w:1) fn set_admin_address() -> Weight { - (516_000 as Weight) + (553_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Promotion Admin (r:1 w:0) + fn payout_stakers() -> Weight { + (1_398_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + } // Storage: System Account (r:1 w:1) // Storage: Balances Locks (r:1 w:1) // Storage: ParachainSystem ValidationData (r:1 w:0) // Storage: Promotion Staked (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) fn stake() -> Weight { - (10_019_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) + (9_506_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) } - // Storage: System Account (r:1 w:1) - // Storage: Balances Locks (r:1 w:1) - // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion Staked (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) + // Storage: System Account (r:1 w:0) fn unstake() -> Weight { - (10_619_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) + (2_529_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) } - // Storage: System Account (r:2 w:0) - // Storage: Promotion Staked (r:0 w:1) + // Storage: System Account (r:1 w:0) fn recalculate_stake() -> Weight { - (4_932_000 as Weight) + (2_203_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + } + // Storage: Promotion Admin (r:1 w:0) + // Storage: Common CollectionById (r:1 w:1) + fn sponsor_collection() -> Weight { + (10_882_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Promotion Admin (r:1 w:0) + // Storage: Common CollectionById (r:1 w:1) + fn stop_sponsoring_collection() -> Weight { + (10_544_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Promotion Admin (r:1 w:0) + // Storage: EvmContractHelpers Sponsoring (r:0 w:1) + fn sponsor_contract() -> Weight { + (2_163_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Promotion Admin (r:1 w:0) + // Storage: EvmContractHelpers Sponsoring (r:1 w:1) + fn stop_sponsoring_contract() -> Weight { + (3_511_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } // For backwards compatibility and tests impl WeightInfo for () { - // Storage: Promotion PendingUnstake (r:1 w:0) - // Storage: Promotion NextInterestBlock (r:1 w:0) - fn on_initialize() -> Weight { - (2_705_000 as Weight) + // Storage: Promotion StartBlock (r:1 w:1) + // Storage: ParachainSystem ValidationData (r:1 w:0) + // Storage: Promotion NextInterestBlock (r:0 w:1) + fn start_app_promotion() -> Weight { + (2_299_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Promotion StartBlock (r:1 w:1) // Storage: Promotion NextInterestBlock (r:0 w:1) - fn start_app_promotion() -> Weight { - (1_436_000 as Weight) + fn stop_app_promotion() -> Weight { + (1_733_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Promotion Admin (r:0 w:1) fn set_admin_address() -> Weight { - (516_000 as Weight) + (553_000 as Weight) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } + // Storage: Promotion Admin (r:1 w:0) + fn payout_stakers() -> Weight { + (1_398_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(1 as Weight)) + } // Storage: System Account (r:1 w:1) // Storage: Balances Locks (r:1 w:1) // Storage: ParachainSystem ValidationData (r:1 w:0) // Storage: Promotion Staked (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) fn stake() -> Weight { - (10_019_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + (9_506_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } - // Storage: System Account (r:1 w:1) - // Storage: Balances Locks (r:1 w:1) - // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion Staked (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) + // Storage: System Account (r:1 w:0) fn unstake() -> Weight { - (10_619_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + (2_529_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(1 as Weight)) } - // Storage: System Account (r:2 w:0) - // Storage: Promotion Staked (r:0 w:1) + // Storage: System Account (r:1 w:0) fn recalculate_stake() -> Weight { - (4_932_000 as Weight) + (2_203_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(1 as Weight)) + } + // Storage: Promotion Admin (r:1 w:0) + // Storage: Common CollectionById (r:1 w:1) + fn sponsor_collection() -> Weight { + (10_882_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + } + // Storage: Promotion Admin (r:1 w:0) + // Storage: Common CollectionById (r:1 w:1) + fn stop_sponsoring_collection() -> Weight { + (10_544_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + } + // Storage: Promotion Admin (r:1 w:0) + // Storage: EvmContractHelpers Sponsoring (r:0 w:1) + fn sponsor_contract() -> Weight { + (2_163_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(1 as Weight)) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + } + // Storage: Promotion Admin (r:1 w:0) + // Storage: EvmContractHelpers Sponsoring (r:1 w:1) + fn stop_sponsoring_contract() -> Weight { + (3_511_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } --- a/pallets/unique/src/benchmarking.rs +++ b/pallets/unique/src/benchmarking.rs @@ -46,7 +46,9 @@ )?; Ok(>::get()) } -fn create_nft_collection(owner: T::AccountId) -> Result { +pub fn create_nft_collection( + owner: T::AccountId, +) -> Result { create_collection_helper::(owner, CollectionMode::NFT) } --- a/pallets/unique/src/lib.rs +++ b/pallets/unique/src/lib.rs @@ -98,7 +98,7 @@ pub mod eth; #[cfg(feature = "runtime-benchmarks")] -mod benchmarking; +pub mod benchmarking; pub mod weights; use weights::WeightInfo; --- a/tests/src/interfaces/augment-api-events.ts +++ b/tests/src/interfaces/augment-api-events.ts @@ -361,7 +361,7 @@ [key: string]: AugmentedEvent; }; promotion: { - StakingRecalculation: AugmentedEvent; + StakingRecalculation: AugmentedEvent; /** * Generic event **/ --- a/tests/src/interfaces/augment-api-query.ts +++ b/tests/src/interfaces/augment-api-query.ts @@ -513,6 +513,11 @@ promotion: { admin: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** + * Stores the address of the staker for which the last revenue recalculation was performed. + * If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers. + **/ + lastCalcucaltedStaker: AugmentedQuery Observable>, []> & QueryableStorageEntry; + /** * Next target block when interest is recalculated **/ nextInterestBlock: AugmentedQuery Observable, []> & QueryableStorageEntry; @@ -523,7 +528,7 @@ /** * Amount of tokens staked by account in the blocknumber. **/ - staked: AugmentedQuery Observable, [AccountId32, u32]> & QueryableStorageEntry; + staked: AugmentedQuery Observable>, [AccountId32, u32]> & QueryableStorageEntry; /** * A block when app-promotion has started .I think this is redundant, because we only need `NextInterestBlock`. **/ --- a/tests/src/interfaces/augment-api-tx.ts +++ b/tests/src/interfaces/augment-api-tx.ts @@ -363,14 +363,15 @@ [key: string]: SubmittableExtrinsicFunction; }; promotion: { + payoutStakers: AugmentedSubmittable<(stakersNumber: Option | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic, [Option]>; setAdminAddress: AugmentedSubmittable<(admin: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletEvmAccountBasicCrossAccountIdRepr]>; sponsorCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; sponsorConract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic, [H160]>; stake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128]>; startAppPromotion: AugmentedSubmittable<(promotionStartRelayBlock: Option | null | Uint8Array | u32 | AnyNumber) => SubmittableExtrinsic, [Option]>; stopAppPromotion: AugmentedSubmittable<() => SubmittableExtrinsic, []>; - stopSponsorignCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; - stopSponsorignContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic, [H160]>; + stopSponsoringCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; + stopSponsoringContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic, [H160]>; unstake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128]>; /** * Generic tx --- a/tests/src/interfaces/default/types.ts +++ b/tests/src/interfaces/default/types.ts @@ -829,19 +829,23 @@ readonly asSponsorCollection: { readonly collectionId: u32; } & Struct; - readonly isStopSponsorignCollection: boolean; - readonly asStopSponsorignCollection: { + readonly isStopSponsoringCollection: boolean; + readonly asStopSponsoringCollection: { readonly collectionId: u32; } & Struct; readonly isSponsorConract: boolean; readonly asSponsorConract: { readonly contractId: H160; } & Struct; - readonly isStopSponsorignContract: boolean; - readonly asStopSponsorignContract: { + readonly isStopSponsoringContract: boolean; + readonly asStopSponsoringContract: { readonly contractId: H160; } & Struct; - readonly type: 'SetAdminAddress' | 'StartAppPromotion' | 'StopAppPromotion' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsorignCollection' | 'SponsorConract' | 'StopSponsorignContract'; + readonly isPayoutStakers: boolean; + readonly asPayoutStakers: { + readonly stakersNumber: Option; + } & Struct; + readonly type: 'SetAdminAddress' | 'StartAppPromotion' | 'StopAppPromotion' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorConract' | 'StopSponsoringContract' | 'PayoutStakers'; } /** @name PalletAppPromotionError */ @@ -856,7 +860,7 @@ /** @name PalletAppPromotionEvent */ export interface PalletAppPromotionEvent extends Enum { readonly isStakingRecalculation: boolean; - readonly asStakingRecalculation: ITuple<[u128, u128]>; + readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>; readonly type: 'StakingRecalculation'; } --- a/tests/src/interfaces/lookup.ts +++ b/tests/src/interfaces/lookup.ts @@ -1061,7 +1061,7 @@ **/ PalletAppPromotionEvent: { _enum: { - StakingRecalculation: '(u128,u128)' + StakingRecalculation: '(AccountId32,u128,u128)' } }, /** @@ -2473,19 +2473,22 @@ sponsor_collection: { collectionId: 'u32', }, - stop_sponsorign_collection: { + stop_sponsoring_collection: { collectionId: 'u32', }, sponsor_conract: { contractId: 'H160', }, - stop_sponsorign_contract: { - contractId: 'H160' + stop_sponsoring_contract: { + contractId: 'H160', + }, + payout_stakers: { + stakersNumber: 'Option' } } }, /** - * Lookup305: pallet_evm::pallet::Call + * Lookup306: pallet_evm::pallet::Call **/ PalletEvmCall: { _enum: { @@ -2528,7 +2531,7 @@ } }, /** - * Lookup309: pallet_ethereum::pallet::Call + * Lookup310: pallet_ethereum::pallet::Call **/ PalletEthereumCall: { _enum: { @@ -2538,7 +2541,7 @@ } }, /** - * Lookup310: ethereum::transaction::TransactionV2 + * Lookup311: ethereum::transaction::TransactionV2 **/ EthereumTransactionTransactionV2: { _enum: { @@ -2548,7 +2551,7 @@ } }, /** - * Lookup311: ethereum::transaction::LegacyTransaction + * Lookup312: ethereum::transaction::LegacyTransaction **/ EthereumTransactionLegacyTransaction: { nonce: 'U256', @@ -2560,7 +2563,7 @@ signature: 'EthereumTransactionTransactionSignature' }, /** - * Lookup312: ethereum::transaction::TransactionAction + * Lookup313: ethereum::transaction::TransactionAction **/ EthereumTransactionTransactionAction: { _enum: { @@ -2569,7 +2572,7 @@ } }, /** - * Lookup313: ethereum::transaction::TransactionSignature + * Lookup314: ethereum::transaction::TransactionSignature **/ EthereumTransactionTransactionSignature: { v: 'u64', @@ -2577,7 +2580,7 @@ s: 'H256' }, /** - * Lookup315: ethereum::transaction::EIP2930Transaction + * Lookup316: ethereum::transaction::EIP2930Transaction **/ EthereumTransactionEip2930Transaction: { chainId: 'u64', @@ -2593,14 +2596,14 @@ s: 'H256' }, /** - * Lookup317: ethereum::transaction::AccessListItem + * Lookup318: ethereum::transaction::AccessListItem **/ EthereumTransactionAccessListItem: { address: 'H160', storageKeys: 'Vec' }, /** - * Lookup318: ethereum::transaction::EIP1559Transaction + * Lookup319: ethereum::transaction::EIP1559Transaction **/ EthereumTransactionEip1559Transaction: { chainId: 'u64', @@ -2617,7 +2620,7 @@ s: 'H256' }, /** - * Lookup319: pallet_evm_migration::pallet::Call + * Lookup320: pallet_evm_migration::pallet::Call **/ PalletEvmMigrationCall: { _enum: { @@ -2635,19 +2638,19 @@ } }, /** - * Lookup322: pallet_sudo::pallet::Error + * Lookup323: pallet_sudo::pallet::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup324: orml_vesting::module::Error + * Lookup325: orml_vesting::module::Error **/ OrmlVestingModuleError: { _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded'] }, /** - * Lookup326: cumulus_pallet_xcmp_queue::InboundChannelDetails + * Lookup327: cumulus_pallet_xcmp_queue::InboundChannelDetails **/ CumulusPalletXcmpQueueInboundChannelDetails: { sender: 'u32', @@ -2655,19 +2658,19 @@ messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>' }, /** - * Lookup327: cumulus_pallet_xcmp_queue::InboundState + * Lookup328: cumulus_pallet_xcmp_queue::InboundState **/ CumulusPalletXcmpQueueInboundState: { _enum: ['Ok', 'Suspended'] }, /** - * Lookup330: polkadot_parachain::primitives::XcmpMessageFormat + * Lookup331: polkadot_parachain::primitives::XcmpMessageFormat **/ PolkadotParachainPrimitivesXcmpMessageFormat: { _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals'] }, /** - * Lookup333: cumulus_pallet_xcmp_queue::OutboundChannelDetails + * Lookup334: cumulus_pallet_xcmp_queue::OutboundChannelDetails **/ CumulusPalletXcmpQueueOutboundChannelDetails: { recipient: 'u32', @@ -2677,13 +2680,13 @@ lastIndex: 'u16' }, /** - * Lookup334: cumulus_pallet_xcmp_queue::OutboundState + * Lookup335: cumulus_pallet_xcmp_queue::OutboundState **/ CumulusPalletXcmpQueueOutboundState: { _enum: ['Ok', 'Suspended'] }, /** - * Lookup336: cumulus_pallet_xcmp_queue::QueueConfigData + * Lookup337: cumulus_pallet_xcmp_queue::QueueConfigData **/ CumulusPalletXcmpQueueQueueConfigData: { suspendThreshold: 'u32', @@ -2694,29 +2697,29 @@ xcmpMaxIndividualWeight: 'u64' }, /** - * Lookup338: cumulus_pallet_xcmp_queue::pallet::Error + * Lookup339: cumulus_pallet_xcmp_queue::pallet::Error **/ CumulusPalletXcmpQueueError: { _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit'] }, /** - * Lookup339: pallet_xcm::pallet::Error + * Lookup340: pallet_xcm::pallet::Error **/ PalletXcmError: { _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed'] }, /** - * Lookup340: cumulus_pallet_xcm::pallet::Error + * Lookup341: cumulus_pallet_xcm::pallet::Error **/ CumulusPalletXcmError: 'Null', /** - * Lookup341: cumulus_pallet_dmp_queue::ConfigData + * Lookup342: cumulus_pallet_dmp_queue::ConfigData **/ CumulusPalletDmpQueueConfigData: { maxIndividual: 'u64' }, /** - * Lookup342: cumulus_pallet_dmp_queue::PageIndexData + * Lookup343: cumulus_pallet_dmp_queue::PageIndexData **/ CumulusPalletDmpQueuePageIndexData: { beginUsed: 'u32', @@ -2724,19 +2727,19 @@ overweightCount: 'u64' }, /** - * Lookup345: cumulus_pallet_dmp_queue::pallet::Error + * Lookup346: cumulus_pallet_dmp_queue::pallet::Error **/ CumulusPalletDmpQueueError: { _enum: ['Unknown', 'OverLimit'] }, /** - * Lookup349: pallet_unique::Error + * Lookup350: pallet_unique::Error **/ PalletUniqueError: { _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection'] }, /** - * Lookup352: pallet_unique_scheduler::ScheduledV3, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32> + * Lookup353: pallet_unique_scheduler::ScheduledV3, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32> **/ PalletUniqueSchedulerScheduledV3: { maybeId: 'Option<[u8;16]>', @@ -2746,7 +2749,7 @@ origin: 'OpalRuntimeOriginCaller' }, /** - * Lookup353: opal_runtime::OriginCaller + * Lookup354: opal_runtime::OriginCaller **/ OpalRuntimeOriginCaller: { _enum: { @@ -2855,7 +2858,7 @@ } }, /** - * Lookup354: frame_support::dispatch::RawOrigin + * Lookup355: frame_support::dispatch::RawOrigin **/ FrameSupportDispatchRawOrigin: { _enum: { @@ -2865,7 +2868,7 @@ } }, /** - * Lookup355: pallet_xcm::pallet::Origin + * Lookup356: pallet_xcm::pallet::Origin **/ PalletXcmOrigin: { _enum: { @@ -2874,7 +2877,7 @@ } }, /** - * Lookup356: cumulus_pallet_xcm::pallet::Origin + * Lookup357: cumulus_pallet_xcm::pallet::Origin **/ CumulusPalletXcmOrigin: { _enum: { @@ -2883,7 +2886,7 @@ } }, /** - * Lookup357: pallet_ethereum::RawOrigin + * Lookup358: pallet_ethereum::RawOrigin **/ PalletEthereumRawOrigin: { _enum: { @@ -2891,17 +2894,17 @@ } }, /** - * Lookup358: sp_core::Void + * Lookup359: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup359: pallet_unique_scheduler::pallet::Error + * Lookup360: pallet_unique_scheduler::pallet::Error **/ PalletUniqueSchedulerError: { _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange'] }, /** - * Lookup360: up_data_structs::Collection + * Lookup361: up_data_structs::Collection **/ UpDataStructsCollection: { owner: 'AccountId32', @@ -2915,7 +2918,7 @@ externalCollection: 'bool' }, /** - * Lookup361: up_data_structs::SponsorshipState + * Lookup362: up_data_structs::SponsorshipState **/ UpDataStructsSponsorshipStateAccountId32: { _enum: { @@ -2925,7 +2928,7 @@ } }, /** - * Lookup362: up_data_structs::Properties + * Lookup363: up_data_structs::Properties **/ UpDataStructsProperties: { map: 'UpDataStructsPropertiesMapBoundedVec', @@ -2933,15 +2936,15 @@ spaceLimit: 'u32' }, /** - * Lookup363: up_data_structs::PropertiesMap> + * Lookup364: up_data_structs::PropertiesMap> **/ UpDataStructsPropertiesMapBoundedVec: 'BTreeMap', /** - * Lookup368: up_data_structs::PropertiesMap + * Lookup369: up_data_structs::PropertiesMap **/ UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap', /** - * Lookup375: up_data_structs::CollectionStats + * Lookup376: up_data_structs::CollectionStats **/ UpDataStructsCollectionStats: { created: 'u32', @@ -2949,18 +2952,18 @@ alive: 'u32' }, /** - * Lookup376: up_data_structs::TokenChild + * Lookup377: up_data_structs::TokenChild **/ UpDataStructsTokenChild: { token: 'u32', collection: 'u32' }, /** - * Lookup377: PhantomType::up_data_structs + * Lookup378: PhantomType::up_data_structs **/ PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]', /** - * Lookup379: up_data_structs::TokenData> + * Lookup380: up_data_structs::TokenData> **/ UpDataStructsTokenData: { properties: 'Vec', @@ -2968,7 +2971,7 @@ pieces: 'u128' }, /** - * Lookup381: up_data_structs::RpcCollection + * Lookup382: up_data_structs::RpcCollection **/ UpDataStructsRpcCollection: { owner: 'AccountId32', @@ -2984,7 +2987,7 @@ readOnly: 'bool' }, /** - * Lookup382: rmrk_traits::collection::CollectionInfo, sp_runtime::bounded::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> + * Lookup383: rmrk_traits::collection::CollectionInfo, sp_runtime::bounded::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> **/ RmrkTraitsCollectionCollectionInfo: { issuer: 'AccountId32', @@ -2994,7 +2997,7 @@ nftsCount: 'u32' }, /** - * Lookup383: rmrk_traits::nft::NftInfo> + * Lookup384: rmrk_traits::nft::NftInfo> **/ RmrkTraitsNftNftInfo: { owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple', @@ -3004,14 +3007,14 @@ pending: 'bool' }, /** - * Lookup385: rmrk_traits::nft::RoyaltyInfo + * Lookup386: rmrk_traits::nft::RoyaltyInfo **/ RmrkTraitsNftRoyaltyInfo: { recipient: 'AccountId32', amount: 'Permill' }, /** - * Lookup386: rmrk_traits::resource::ResourceInfo, sp_runtime::bounded::bounded_vec::BoundedVec> + * Lookup387: rmrk_traits::resource::ResourceInfo, sp_runtime::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsResourceResourceInfo: { id: 'u32', @@ -3020,14 +3023,14 @@ pendingRemoval: 'bool' }, /** - * Lookup387: rmrk_traits::property::PropertyInfo, sp_runtime::bounded::bounded_vec::BoundedVec> + * Lookup388: rmrk_traits::property::PropertyInfo, sp_runtime::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsPropertyPropertyInfo: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup388: rmrk_traits::base::BaseInfo> + * Lookup389: rmrk_traits::base::BaseInfo> **/ RmrkTraitsBaseBaseInfo: { issuer: 'AccountId32', @@ -3035,86 +3038,86 @@ symbol: 'Bytes' }, /** - * Lookup389: rmrk_traits::nft::NftChild + * Lookup390: rmrk_traits::nft::NftChild **/ RmrkTraitsNftNftChild: { collectionId: 'u32', nftId: 'u32' }, /** - * Lookup391: pallet_common::pallet::Error + * Lookup392: 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', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal'] }, /** - * Lookup393: pallet_fungible::pallet::Error + * Lookup394: pallet_fungible::pallet::Error **/ PalletFungibleError: { _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed'] }, /** - * Lookup394: pallet_refungible::ItemData + * Lookup395: pallet_refungible::ItemData **/ PalletRefungibleItemData: { constData: 'Bytes' }, /** - * Lookup399: pallet_refungible::pallet::Error + * Lookup400: pallet_refungible::pallet::Error **/ PalletRefungibleError: { _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed'] }, /** - * Lookup400: pallet_nonfungible::ItemData> + * Lookup401: pallet_nonfungible::ItemData> **/ PalletNonfungibleItemData: { owner: 'PalletEvmAccountBasicCrossAccountIdRepr' }, /** - * Lookup402: up_data_structs::PropertyScope + * Lookup403: up_data_structs::PropertyScope **/ UpDataStructsPropertyScope: { _enum: ['None', 'Rmrk', 'Eth'] }, /** - * Lookup404: pallet_nonfungible::pallet::Error + * Lookup405: pallet_nonfungible::pallet::Error **/ PalletNonfungibleError: { _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren'] }, /** - * Lookup405: pallet_structure::pallet::Error + * Lookup406: pallet_structure::pallet::Error **/ PalletStructureError: { _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound'] }, /** - * Lookup406: pallet_rmrk_core::pallet::Error + * Lookup407: pallet_rmrk_core::pallet::Error **/ PalletRmrkCoreError: { _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId'] }, /** - * Lookup408: pallet_rmrk_equip::pallet::Error + * Lookup409: pallet_rmrk_equip::pallet::Error **/ PalletRmrkEquipError: { _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart'] }, /** - * Lookup410: pallet_app_promotion::pallet::Error + * Lookup412: pallet_app_promotion::pallet::Error **/ PalletAppPromotionError: { _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFounds', 'InvalidArgument'] }, /** - * Lookup413: pallet_evm::pallet::Error + * Lookup415: pallet_evm::pallet::Error **/ PalletEvmError: { _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce'] }, /** - * Lookup416: fp_rpc::TransactionStatus + * Lookup418: fp_rpc::TransactionStatus **/ FpRpcTransactionStatus: { transactionHash: 'H256', @@ -3126,11 +3129,11 @@ logsBloom: 'EthbloomBloom' }, /** - * Lookup418: ethbloom::Bloom + * Lookup420: ethbloom::Bloom **/ EthbloomBloom: '[u8;256]', /** - * Lookup420: ethereum::receipt::ReceiptV3 + * Lookup422: ethereum::receipt::ReceiptV3 **/ EthereumReceiptReceiptV3: { _enum: { @@ -3140,7 +3143,7 @@ } }, /** - * Lookup421: ethereum::receipt::EIP658ReceiptData + * Lookup423: ethereum::receipt::EIP658ReceiptData **/ EthereumReceiptEip658ReceiptData: { statusCode: 'u8', @@ -3149,7 +3152,7 @@ logs: 'Vec' }, /** - * Lookup422: ethereum::block::Block + * Lookup424: ethereum::block::Block **/ EthereumBlock: { header: 'EthereumHeader', @@ -3157,7 +3160,7 @@ ommers: 'Vec' }, /** - * Lookup423: ethereum::header::Header + * Lookup425: ethereum::header::Header **/ EthereumHeader: { parentHash: 'H256', @@ -3177,23 +3180,23 @@ nonce: 'EthereumTypesHashH64' }, /** - * Lookup424: ethereum_types::hash::H64 + * Lookup426: ethereum_types::hash::H64 **/ EthereumTypesHashH64: '[u8;8]', /** - * Lookup429: pallet_ethereum::pallet::Error + * Lookup431: pallet_ethereum::pallet::Error **/ PalletEthereumError: { _enum: ['InvalidSignature', 'PreLogExists'] }, /** - * Lookup430: pallet_evm_coder_substrate::pallet::Error + * Lookup432: pallet_evm_coder_substrate::pallet::Error **/ PalletEvmCoderSubstrateError: { _enum: ['OutOfGas', 'OutOfFund'] }, /** - * Lookup431: up_data_structs::SponsorshipState> + * Lookup433: up_data_structs::SponsorshipState> **/ UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: { _enum: { @@ -3203,25 +3206,25 @@ } }, /** - * Lookup432: pallet_evm_contract_helpers::SponsoringModeT + * Lookup434: pallet_evm_contract_helpers::SponsoringModeT **/ PalletEvmContractHelpersSponsoringModeT: { _enum: ['Disabled', 'Allowlisted', 'Generous'] }, /** - * Lookup434: pallet_evm_contract_helpers::pallet::Error + * Lookup436: pallet_evm_contract_helpers::pallet::Error **/ PalletEvmContractHelpersError: { _enum: ['NoPermission', 'NoPendingSponsor'] }, /** - * Lookup435: pallet_evm_migration::pallet::Error + * Lookup437: pallet_evm_migration::pallet::Error **/ PalletEvmMigrationError: { _enum: ['AccountNotEmpty', 'AccountIsNotMigrating'] }, /** - * Lookup437: sp_runtime::MultiSignature + * Lookup439: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -3231,43 +3234,43 @@ } }, /** - * Lookup438: sp_core::ed25519::Signature + * Lookup440: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup440: sp_core::sr25519::Signature + * Lookup442: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup441: sp_core::ecdsa::Signature + * Lookup443: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup444: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup446: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup445: frame_system::extensions::check_genesis::CheckGenesis + * Lookup447: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup448: frame_system::extensions::check_nonce::CheckNonce + * Lookup450: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup449: frame_system::extensions::check_weight::CheckWeight + * Lookup451: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup450: pallet_template_transaction_payment::ChargeTransactionPayment + * Lookup452: pallet_template_transaction_payment::ChargeTransactionPayment **/ PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup451: opal_runtime::Runtime + * Lookup453: opal_runtime::Runtime **/ OpalRuntimeRuntime: 'Null', /** - * Lookup452: pallet_ethereum::FakeTransactionFinalizer + * Lookup454: pallet_ethereum::FakeTransactionFinalizer **/ PalletEthereumFakeTransactionFinalizer: 'Null' }; --- a/tests/src/interfaces/types-lookup.ts +++ b/tests/src/interfaces/types-lookup.ts @@ -1201,7 +1201,7 @@ /** @name PalletAppPromotionEvent (103) */ interface PalletAppPromotionEvent extends Enum { readonly isStakingRecalculation: boolean; - readonly asStakingRecalculation: ITuple<[u128, u128]>; + readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>; readonly type: 'StakingRecalculation'; } @@ -2682,22 +2682,26 @@ readonly asSponsorCollection: { readonly collectionId: u32; } & Struct; - readonly isStopSponsorignCollection: boolean; - readonly asStopSponsorignCollection: { + readonly isStopSponsoringCollection: boolean; + readonly asStopSponsoringCollection: { readonly collectionId: u32; } & Struct; readonly isSponsorConract: boolean; readonly asSponsorConract: { readonly contractId: H160; } & Struct; - readonly isStopSponsorignContract: boolean; - readonly asStopSponsorignContract: { + readonly isStopSponsoringContract: boolean; + readonly asStopSponsoringContract: { readonly contractId: H160; } & Struct; - readonly type: 'SetAdminAddress' | 'StartAppPromotion' | 'StopAppPromotion' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsorignCollection' | 'SponsorConract' | 'StopSponsorignContract'; + readonly isPayoutStakers: boolean; + readonly asPayoutStakers: { + readonly stakersNumber: Option; + } & Struct; + readonly type: 'SetAdminAddress' | 'StartAppPromotion' | 'StopAppPromotion' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorConract' | 'StopSponsoringContract' | 'PayoutStakers'; } - /** @name PalletEvmCall (305) */ + /** @name PalletEvmCall (306) */ interface PalletEvmCall extends Enum { readonly isWithdraw: boolean; readonly asWithdraw: { @@ -2742,7 +2746,7 @@ readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2'; } - /** @name PalletEthereumCall (309) */ + /** @name PalletEthereumCall (310) */ interface PalletEthereumCall extends Enum { readonly isTransact: boolean; readonly asTransact: { @@ -2751,7 +2755,7 @@ readonly type: 'Transact'; } - /** @name EthereumTransactionTransactionV2 (310) */ + /** @name EthereumTransactionTransactionV2 (311) */ interface EthereumTransactionTransactionV2 extends Enum { readonly isLegacy: boolean; readonly asLegacy: EthereumTransactionLegacyTransaction; @@ -2762,7 +2766,7 @@ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559'; } - /** @name EthereumTransactionLegacyTransaction (311) */ + /** @name EthereumTransactionLegacyTransaction (312) */ interface EthereumTransactionLegacyTransaction extends Struct { readonly nonce: U256; readonly gasPrice: U256; @@ -2773,7 +2777,7 @@ readonly signature: EthereumTransactionTransactionSignature; } - /** @name EthereumTransactionTransactionAction (312) */ + /** @name EthereumTransactionTransactionAction (313) */ interface EthereumTransactionTransactionAction extends Enum { readonly isCall: boolean; readonly asCall: H160; @@ -2781,14 +2785,14 @@ readonly type: 'Call' | 'Create'; } - /** @name EthereumTransactionTransactionSignature (313) */ + /** @name EthereumTransactionTransactionSignature (314) */ interface EthereumTransactionTransactionSignature extends Struct { readonly v: u64; readonly r: H256; readonly s: H256; } - /** @name EthereumTransactionEip2930Transaction (315) */ + /** @name EthereumTransactionEip2930Transaction (316) */ interface EthereumTransactionEip2930Transaction extends Struct { readonly chainId: u64; readonly nonce: U256; @@ -2803,13 +2807,13 @@ readonly s: H256; } - /** @name EthereumTransactionAccessListItem (317) */ + /** @name EthereumTransactionAccessListItem (318) */ interface EthereumTransactionAccessListItem extends Struct { readonly address: H160; readonly storageKeys: Vec; } - /** @name EthereumTransactionEip1559Transaction (318) */ + /** @name EthereumTransactionEip1559Transaction (319) */ interface EthereumTransactionEip1559Transaction extends Struct { readonly chainId: u64; readonly nonce: U256; @@ -2825,7 +2829,7 @@ readonly s: H256; } - /** @name PalletEvmMigrationCall (319) */ + /** @name PalletEvmMigrationCall (320) */ interface PalletEvmMigrationCall extends Enum { readonly isBegin: boolean; readonly asBegin: { @@ -2844,13 +2848,13 @@ readonly type: 'Begin' | 'SetData' | 'Finish'; } - /** @name PalletSudoError (322) */ + /** @name PalletSudoError (323) */ interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name OrmlVestingModuleError (324) */ + /** @name OrmlVestingModuleError (325) */ interface OrmlVestingModuleError extends Enum { readonly isZeroVestingPeriod: boolean; readonly isZeroVestingPeriodCount: boolean; @@ -2861,21 +2865,21 @@ readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded'; } - /** @name CumulusPalletXcmpQueueInboundChannelDetails (326) */ + /** @name CumulusPalletXcmpQueueInboundChannelDetails (327) */ interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct { readonly sender: u32; readonly state: CumulusPalletXcmpQueueInboundState; readonly messageMetadata: Vec>; } - /** @name CumulusPalletXcmpQueueInboundState (327) */ + /** @name CumulusPalletXcmpQueueInboundState (328) */ interface CumulusPalletXcmpQueueInboundState extends Enum { readonly isOk: boolean; readonly isSuspended: boolean; readonly type: 'Ok' | 'Suspended'; } - /** @name PolkadotParachainPrimitivesXcmpMessageFormat (330) */ + /** @name PolkadotParachainPrimitivesXcmpMessageFormat (331) */ interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum { readonly isConcatenatedVersionedXcm: boolean; readonly isConcatenatedEncodedBlob: boolean; @@ -2883,7 +2887,7 @@ readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals'; } - /** @name CumulusPalletXcmpQueueOutboundChannelDetails (333) */ + /** @name CumulusPalletXcmpQueueOutboundChannelDetails (334) */ interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct { readonly recipient: u32; readonly state: CumulusPalletXcmpQueueOutboundState; @@ -2892,14 +2896,14 @@ readonly lastIndex: u16; } - /** @name CumulusPalletXcmpQueueOutboundState (334) */ + /** @name CumulusPalletXcmpQueueOutboundState (335) */ interface CumulusPalletXcmpQueueOutboundState extends Enum { readonly isOk: boolean; readonly isSuspended: boolean; readonly type: 'Ok' | 'Suspended'; } - /** @name CumulusPalletXcmpQueueQueueConfigData (336) */ + /** @name CumulusPalletXcmpQueueQueueConfigData (337) */ interface CumulusPalletXcmpQueueQueueConfigData extends Struct { readonly suspendThreshold: u32; readonly dropThreshold: u32; @@ -2909,7 +2913,7 @@ readonly xcmpMaxIndividualWeight: u64; } - /** @name CumulusPalletXcmpQueueError (338) */ + /** @name CumulusPalletXcmpQueueError (339) */ interface CumulusPalletXcmpQueueError extends Enum { readonly isFailedToSend: boolean; readonly isBadXcmOrigin: boolean; @@ -2919,7 +2923,7 @@ readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit'; } - /** @name PalletXcmError (339) */ + /** @name PalletXcmError (340) */ interface PalletXcmError extends Enum { readonly isUnreachable: boolean; readonly isSendFailure: boolean; @@ -2937,29 +2941,29 @@ readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed'; } - /** @name CumulusPalletXcmError (340) */ + /** @name CumulusPalletXcmError (341) */ type CumulusPalletXcmError = Null; - /** @name CumulusPalletDmpQueueConfigData (341) */ + /** @name CumulusPalletDmpQueueConfigData (342) */ interface CumulusPalletDmpQueueConfigData extends Struct { readonly maxIndividual: u64; } - /** @name CumulusPalletDmpQueuePageIndexData (342) */ + /** @name CumulusPalletDmpQueuePageIndexData (343) */ interface CumulusPalletDmpQueuePageIndexData extends Struct { readonly beginUsed: u32; readonly endUsed: u32; readonly overweightCount: u64; } - /** @name CumulusPalletDmpQueueError (345) */ + /** @name CumulusPalletDmpQueueError (346) */ interface CumulusPalletDmpQueueError extends Enum { readonly isUnknown: boolean; readonly isOverLimit: boolean; readonly type: 'Unknown' | 'OverLimit'; } - /** @name PalletUniqueError (349) */ + /** @name PalletUniqueError (350) */ interface PalletUniqueError extends Enum { readonly isCollectionDecimalPointLimitExceeded: boolean; readonly isConfirmUnsetSponsorFail: boolean; @@ -2968,7 +2972,7 @@ readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection'; } - /** @name PalletUniqueSchedulerScheduledV3 (352) */ + /** @name PalletUniqueSchedulerScheduledV3 (353) */ interface PalletUniqueSchedulerScheduledV3 extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -2977,7 +2981,7 @@ readonly origin: OpalRuntimeOriginCaller; } - /** @name OpalRuntimeOriginCaller (353) */ + /** @name OpalRuntimeOriginCaller (354) */ interface OpalRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSupportDispatchRawOrigin; @@ -2991,7 +2995,7 @@ readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum'; } - /** @name FrameSupportDispatchRawOrigin (354) */ + /** @name FrameSupportDispatchRawOrigin (355) */ interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -3000,7 +3004,7 @@ readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletXcmOrigin (355) */ + /** @name PalletXcmOrigin (356) */ interface PalletXcmOrigin extends Enum { readonly isXcm: boolean; readonly asXcm: XcmV1MultiLocation; @@ -3009,7 +3013,7 @@ readonly type: 'Xcm' | 'Response'; } - /** @name CumulusPalletXcmOrigin (356) */ + /** @name CumulusPalletXcmOrigin (357) */ interface CumulusPalletXcmOrigin extends Enum { readonly isRelay: boolean; readonly isSiblingParachain: boolean; @@ -3017,17 +3021,17 @@ readonly type: 'Relay' | 'SiblingParachain'; } - /** @name PalletEthereumRawOrigin (357) */ + /** @name PalletEthereumRawOrigin (358) */ interface PalletEthereumRawOrigin extends Enum { readonly isEthereumTransaction: boolean; readonly asEthereumTransaction: H160; readonly type: 'EthereumTransaction'; } - /** @name SpCoreVoid (358) */ + /** @name SpCoreVoid (359) */ type SpCoreVoid = Null; - /** @name PalletUniqueSchedulerError (359) */ + /** @name PalletUniqueSchedulerError (360) */ interface PalletUniqueSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -3036,7 +3040,7 @@ readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; } - /** @name UpDataStructsCollection (360) */ + /** @name UpDataStructsCollection (361) */ interface UpDataStructsCollection extends Struct { readonly owner: AccountId32; readonly mode: UpDataStructsCollectionMode; @@ -3049,7 +3053,7 @@ readonly externalCollection: bool; } - /** @name UpDataStructsSponsorshipStateAccountId32 (361) */ + /** @name UpDataStructsSponsorshipStateAccountId32 (362) */ interface UpDataStructsSponsorshipStateAccountId32 extends Enum { readonly isDisabled: boolean; readonly isUnconfirmed: boolean; @@ -3059,43 +3063,43 @@ readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed'; } - /** @name UpDataStructsProperties (362) */ + /** @name UpDataStructsProperties (363) */ interface UpDataStructsProperties extends Struct { readonly map: UpDataStructsPropertiesMapBoundedVec; readonly consumedSpace: u32; readonly spaceLimit: u32; } - /** @name UpDataStructsPropertiesMapBoundedVec (363) */ + /** @name UpDataStructsPropertiesMapBoundedVec (364) */ interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap {} - /** @name UpDataStructsPropertiesMapPropertyPermission (368) */ + /** @name UpDataStructsPropertiesMapPropertyPermission (369) */ interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap {} - /** @name UpDataStructsCollectionStats (375) */ + /** @name UpDataStructsCollectionStats (376) */ interface UpDataStructsCollectionStats extends Struct { readonly created: u32; readonly destroyed: u32; readonly alive: u32; } - /** @name UpDataStructsTokenChild (376) */ + /** @name UpDataStructsTokenChild (377) */ interface UpDataStructsTokenChild extends Struct { readonly token: u32; readonly collection: u32; } - /** @name PhantomTypeUpDataStructs (377) */ + /** @name PhantomTypeUpDataStructs (378) */ interface PhantomTypeUpDataStructs extends Vec> {} - /** @name UpDataStructsTokenData (379) */ + /** @name UpDataStructsTokenData (380) */ interface UpDataStructsTokenData extends Struct { readonly properties: Vec; readonly owner: Option; readonly pieces: u128; } - /** @name UpDataStructsRpcCollection (381) */ + /** @name UpDataStructsRpcCollection (382) */ interface UpDataStructsRpcCollection extends Struct { readonly owner: AccountId32; readonly mode: UpDataStructsCollectionMode; @@ -3110,7 +3114,7 @@ readonly readOnly: bool; } - /** @name RmrkTraitsCollectionCollectionInfo (382) */ + /** @name RmrkTraitsCollectionCollectionInfo (383) */ interface RmrkTraitsCollectionCollectionInfo extends Struct { readonly issuer: AccountId32; readonly metadata: Bytes; @@ -3119,7 +3123,7 @@ readonly nftsCount: u32; } - /** @name RmrkTraitsNftNftInfo (383) */ + /** @name RmrkTraitsNftNftInfo (384) */ interface RmrkTraitsNftNftInfo extends Struct { readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple; readonly royalty: Option; @@ -3128,13 +3132,13 @@ readonly pending: bool; } - /** @name RmrkTraitsNftRoyaltyInfo (385) */ + /** @name RmrkTraitsNftRoyaltyInfo (386) */ interface RmrkTraitsNftRoyaltyInfo extends Struct { readonly recipient: AccountId32; readonly amount: Permill; } - /** @name RmrkTraitsResourceResourceInfo (386) */ + /** @name RmrkTraitsResourceResourceInfo (387) */ interface RmrkTraitsResourceResourceInfo extends Struct { readonly id: u32; readonly resource: RmrkTraitsResourceResourceTypes; @@ -3142,26 +3146,26 @@ readonly pendingRemoval: bool; } - /** @name RmrkTraitsPropertyPropertyInfo (387) */ + /** @name RmrkTraitsPropertyPropertyInfo (388) */ interface RmrkTraitsPropertyPropertyInfo extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name RmrkTraitsBaseBaseInfo (388) */ + /** @name RmrkTraitsBaseBaseInfo (389) */ interface RmrkTraitsBaseBaseInfo extends Struct { readonly issuer: AccountId32; readonly baseType: Bytes; readonly symbol: Bytes; } - /** @name RmrkTraitsNftNftChild (389) */ + /** @name RmrkTraitsNftNftChild (390) */ interface RmrkTraitsNftNftChild extends Struct { readonly collectionId: u32; readonly nftId: u32; } - /** @name PalletCommonError (391) */ + /** @name PalletCommonError (392) */ interface PalletCommonError extends Enum { readonly isCollectionNotFound: boolean; readonly isMustBeTokenOwner: boolean; @@ -3200,7 +3204,7 @@ readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal'; } - /** @name PalletFungibleError (393) */ + /** @name PalletFungibleError (394) */ interface PalletFungibleError extends Enum { readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isFungibleItemsHaveNoId: boolean; @@ -3210,12 +3214,12 @@ readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed'; } - /** @name PalletRefungibleItemData (394) */ + /** @name PalletRefungibleItemData (395) */ interface PalletRefungibleItemData extends Struct { readonly constData: Bytes; } - /** @name PalletRefungibleError (399) */ + /** @name PalletRefungibleError (400) */ interface PalletRefungibleError extends Enum { readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isWrongRefungiblePieces: boolean; @@ -3225,12 +3229,12 @@ readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed'; } - /** @name PalletNonfungibleItemData (400) */ + /** @name PalletNonfungibleItemData (401) */ interface PalletNonfungibleItemData extends Struct { readonly owner: PalletEvmAccountBasicCrossAccountIdRepr; } - /** @name UpDataStructsPropertyScope (402) */ + /** @name UpDataStructsPropertyScope (403) */ interface UpDataStructsPropertyScope extends Enum { readonly isNone: boolean; readonly isRmrk: boolean; @@ -3238,7 +3242,7 @@ readonly type: 'None' | 'Rmrk' | 'Eth'; } - /** @name PalletNonfungibleError (404) */ + /** @name PalletNonfungibleError (405) */ interface PalletNonfungibleError extends Enum { readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isNonfungibleItemsHaveNoAmount: boolean; @@ -3246,7 +3250,7 @@ readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren'; } - /** @name PalletStructureError (405) */ + /** @name PalletStructureError (406) */ interface PalletStructureError extends Enum { readonly isOuroborosDetected: boolean; readonly isDepthLimit: boolean; @@ -3255,7 +3259,7 @@ readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound'; } - /** @name PalletRmrkCoreError (406) */ + /** @name PalletRmrkCoreError (407) */ interface PalletRmrkCoreError extends Enum { readonly isCorruptedCollectionType: boolean; readonly isRmrkPropertyKeyIsTooLong: boolean; @@ -3279,7 +3283,7 @@ readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId'; } - /** @name PalletRmrkEquipError (408) */ + /** @name PalletRmrkEquipError (409) */ interface PalletRmrkEquipError extends Enum { readonly isPermissionError: boolean; readonly isNoAvailableBaseId: boolean; @@ -3291,7 +3295,7 @@ readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart'; } - /** @name PalletAppPromotionError (410) */ + /** @name PalletAppPromotionError (412) */ interface PalletAppPromotionError extends Enum { readonly isAdminNotSet: boolean; readonly isNoPermission: boolean; @@ -3300,7 +3304,7 @@ readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFounds' | 'InvalidArgument'; } - /** @name PalletEvmError (413) */ + /** @name PalletEvmError (415) */ interface PalletEvmError extends Enum { readonly isBalanceLow: boolean; readonly isFeeOverflow: boolean; @@ -3311,7 +3315,7 @@ readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce'; } - /** @name FpRpcTransactionStatus (416) */ + /** @name FpRpcTransactionStatus (418) */ interface FpRpcTransactionStatus extends Struct { readonly transactionHash: H256; readonly transactionIndex: u32; @@ -3322,10 +3326,10 @@ readonly logsBloom: EthbloomBloom; } - /** @name EthbloomBloom (418) */ + /** @name EthbloomBloom (420) */ interface EthbloomBloom extends U8aFixed {} - /** @name EthereumReceiptReceiptV3 (420) */ + /** @name EthereumReceiptReceiptV3 (422) */ interface EthereumReceiptReceiptV3 extends Enum { readonly isLegacy: boolean; readonly asLegacy: EthereumReceiptEip658ReceiptData; @@ -3336,7 +3340,7 @@ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559'; } - /** @name EthereumReceiptEip658ReceiptData (421) */ + /** @name EthereumReceiptEip658ReceiptData (423) */ interface EthereumReceiptEip658ReceiptData extends Struct { readonly statusCode: u8; readonly usedGas: U256; @@ -3344,14 +3348,14 @@ readonly logs: Vec; } - /** @name EthereumBlock (422) */ + /** @name EthereumBlock (424) */ interface EthereumBlock extends Struct { readonly header: EthereumHeader; readonly transactions: Vec; readonly ommers: Vec; } - /** @name EthereumHeader (423) */ + /** @name EthereumHeader (425) */ interface EthereumHeader extends Struct { readonly parentHash: H256; readonly ommersHash: H256; @@ -3370,24 +3374,24 @@ readonly nonce: EthereumTypesHashH64; } - /** @name EthereumTypesHashH64 (424) */ + /** @name EthereumTypesHashH64 (426) */ interface EthereumTypesHashH64 extends U8aFixed {} - /** @name PalletEthereumError (429) */ + /** @name PalletEthereumError (431) */ interface PalletEthereumError extends Enum { readonly isInvalidSignature: boolean; readonly isPreLogExists: boolean; readonly type: 'InvalidSignature' | 'PreLogExists'; } - /** @name PalletEvmCoderSubstrateError (430) */ + /** @name PalletEvmCoderSubstrateError (432) */ interface PalletEvmCoderSubstrateError extends Enum { readonly isOutOfGas: boolean; readonly isOutOfFund: boolean; readonly type: 'OutOfGas' | 'OutOfFund'; } - /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (431) */ + /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (433) */ interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum { readonly isDisabled: boolean; readonly isUnconfirmed: boolean; @@ -3397,7 +3401,7 @@ readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed'; } - /** @name PalletEvmContractHelpersSponsoringModeT (432) */ + /** @name PalletEvmContractHelpersSponsoringModeT (434) */ interface PalletEvmContractHelpersSponsoringModeT extends Enum { readonly isDisabled: boolean; readonly isAllowlisted: boolean; @@ -3405,21 +3409,21 @@ readonly type: 'Disabled' | 'Allowlisted' | 'Generous'; } - /** @name PalletEvmContractHelpersError (434) */ + /** @name PalletEvmContractHelpersError (436) */ interface PalletEvmContractHelpersError extends Enum { readonly isNoPermission: boolean; readonly isNoPendingSponsor: boolean; readonly type: 'NoPermission' | 'NoPendingSponsor'; } - /** @name PalletEvmMigrationError (435) */ + /** @name PalletEvmMigrationError (437) */ interface PalletEvmMigrationError extends Enum { readonly isAccountNotEmpty: boolean; readonly isAccountIsNotMigrating: boolean; readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating'; } - /** @name SpRuntimeMultiSignature (437) */ + /** @name SpRuntimeMultiSignature (439) */ interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -3430,34 +3434,34 @@ readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreEd25519Signature (438) */ + /** @name SpCoreEd25519Signature (440) */ interface SpCoreEd25519Signature extends U8aFixed {} - /** @name SpCoreSr25519Signature (440) */ + /** @name SpCoreSr25519Signature (442) */ interface SpCoreSr25519Signature extends U8aFixed {} - /** @name SpCoreEcdsaSignature (441) */ + /** @name SpCoreEcdsaSignature (443) */ interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name FrameSystemExtensionsCheckSpecVersion (444) */ + /** @name FrameSystemExtensionsCheckSpecVersion (446) */ type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (445) */ + /** @name FrameSystemExtensionsCheckGenesis (447) */ type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (448) */ + /** @name FrameSystemExtensionsCheckNonce (450) */ interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name FrameSystemExtensionsCheckWeight (449) */ + /** @name FrameSystemExtensionsCheckWeight (451) */ type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (450) */ + /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (452) */ interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name OpalRuntimeRuntime (451) */ + /** @name OpalRuntimeRuntime (453) */ type OpalRuntimeRuntime = Null; - /** @name PalletEthereumFakeTransactionFinalizer (452) */ + /** @name PalletEthereumFakeTransactionFinalizer (454) */ type PalletEthereumFakeTransactionFinalizer = Null; } // declare module