git.delta.rocks / unique-network / refs/commits / f9edb50d1095

difftreelog

added bench for sponsoring, logic broken , commit for rebase

PraetorP2022-08-30parent: #8ee0040.patch.diff
in: master

14 files changed

modifiedCargo.lockdiffbeforeafterboth
--- 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",
modifiedpallets/app-promotion/Cargo.tomldiffbeforeafterboth
--- 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]
modifiedpallets/app-promotion/src/benchmarking.rsdiffbeforeafterboth
--- 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<T: Config + pallet_unique::Config> 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<u32>
 	}
-	on_initialize {
-		let block1: T::BlockNumber = T::BlockNumber::from(1u32);
-		let block2: T::BlockNumber = T::BlockNumber::from(2u32);
-		PromototionPallet::<T>::on_initialize(block1); // Create Treasury account
-	}: { PromototionPallet::<T>::on_initialize(block2); } // Benchmark deposit_into_existing path
-
 	start_app_promotion {
-		let caller = account::<T::AccountId>("caller", 0, SEED);
 
-	} : {PromototionPallet::<T>::start_app_promotion(RawOrigin::Root.into(), T::BlockNumber::from(2u32))?}
+	} : {PromototionPallet::<T>::start_app_promotion(RawOrigin::Root.into(), None)?}
+
+	stop_app_promotion{
+		PromototionPallet::<T>::start_app_promotion(RawOrigin::Root.into(), Some(25.into()))?;
+	} : {PromototionPallet::<T>::stop_app_promotion(RawOrigin::Root.into())?}
 
 	set_admin_address {
-		let caller = account::<T::AccountId>("caller", 0, SEED);
-		let _ = T::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
-	} : {PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), caller)?}
+		let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+		let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+	} : {PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin))?}
 
+	payout_stakers{
+		let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+		let share = Perbill::from_rational(1u32, 10);
+		PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+		let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let staker: T::AccountId = account("caller", 0, SEED);
+		let _ = <T as Config>::Currency::make_free_balance_be(&staker,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(staker.clone()).into(), share * <T as Config>::Currency::total_balance(&staker))?;
+	} : {PromototionPallet::<T>::payout_stakers(RawOrigin::Signed(pallet_admin.clone()).into(), Some(1))?}
+
 	stake {
 		let caller = account::<T::AccountId>("caller", 0, SEED);
 		let share = Perbill::from_rational(1u32, 10);
-		let _ = T::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
-	} : {PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?}
+		let _ = <T as Config>::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+	} : {PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))?}
 
 	unstake {
 		let caller = account::<T::AccountId>("caller", 0, SEED);
 		let share = Perbill::from_rational(1u32, 10);
-		let _ = T::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
-		let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?;
+		let _ = <T as Config>::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))?;
 
-	} : {PromototionPallet::<T>::unstake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?}
+	} : {PromototionPallet::<T>::unstake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))?}
 
 	recalculate_stake {
 		let caller = account::<T::AccountId>("caller", 0, SEED);
 		let share = Perbill::from_rational(1u32, 10);
-		let _ = T::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
-		let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * T::Currency::total_balance(&caller))?;
-		let block = <T::BlockNumberProvider as BlockNumberProvider>::current_block_number();
+		let _ = <T as Config>::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))?;
+		let block = <T::RelayBlockNumberProvider as BlockNumberProvider>::current_block_number();
 		let mut acc = <BalanceOf<T>>::default();
-	} : {PromototionPallet::<T>::recalculate_stake(&caller, block, share * T::Currency::total_balance(&caller), &mut acc)}
+	} : {PromototionPallet::<T>::recalculate_stake(&caller, block, share * <T as Config>::Currency::total_balance(&caller), &mut acc)}
+
+	sponsor_collection {
+		let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+		PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+		let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let caller: T::AccountId = account("caller", 0, SEED);
+		let _ = <T as Config>::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let collection = create_nft_collection::<T>(caller.clone())?;
+	} : {PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?}
+
+	stop_sponsoring_collection {
+		let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+		PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+		let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let caller: T::AccountId = account("caller", 0, SEED);
+		let _ = <T as Config>::Currency::make_free_balance_be(&caller,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let collection = create_nft_collection::<T>(caller.clone())?;
+		PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?;
+	} : {PromototionPallet::<T>::stop_sponsoring_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?}
+
+	sponsor_contract {
+		let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+		PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+
+		let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let address = H160::from_low_u64_be(SEED as u64);
+		let data: Vec<u8> = (0..20 as u8).collect();
+		<EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;
+		<EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;
+	} : {PromototionPallet::<T>::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?}
+
+	stop_sponsoring_contract {
+		let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+		PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+
+		let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin,  Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+		let address = H160::from_low_u64_be(SEED as u64);
+		let data: Vec<u8> = (0..20 as u8).collect();
+		<EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;
+		<EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;
+		PromototionPallet::<T>::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?;
+	} : {PromototionPallet::<T>::stop_sponsoring_contract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?}
 }
modifiedpallets/app-promotion/src/lib.rsdiffbeforeafterboth
--- 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<T: Config> {
 		StakingRecalculation(
+			/// An recalculated staker
+			T::AccountId,
 			/// Base on which interest is calculated
 			BalanceOf<T>,
 			/// Amount of accrued interest
@@ -164,7 +166,7 @@
 			Key<Blake2_128Concat, T::AccountId>,
 			Key<Twox64Concat, T::BlockNumber>,
 		),
-		Value = BalanceOf<T>,
+		Value = (BalanceOf<T>, T::BlockNumber),
 		QueryKind = ValueQuery,
 	>;
 
@@ -189,6 +191,13 @@
 	pub type NextInterestBlock<T: Config> =
 		StorageValue<Value = T::BlockNumber, QueryKind = ValueQuery>;
 
+	/// 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<T: Config> =
+		StorageValue<Value = T::AccountId, QueryKind = OptionQuery>;
+
 	#[pallet::hooks]
 	impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
 		fn on_initialize(current_block: T::BlockNumber) -> Weight
@@ -196,10 +205,10 @@
 			<T as frame_system::Config>::BlockNumber: From<u32>,
 		{
 			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::<T>::iter()
 				.filter_map(|((staker, block), amount)| {
@@ -214,41 +223,44 @@
 					<PendingUnstake<T>>::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 = <BalanceOf<T>>::default();
-				let mut base_acc = <BalanceOf<T>>::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 = <BalanceOf<T>>::default();
+			// 	let mut base_acc = <BalanceOf<T>>::default();
 
-				NextInterestBlock::<T>::set(
-					NextInterestBlock::<T>::get() + T::RecalculationInterval::get(),
-				);
-				add_weight(0, 1, 0);
+			// 	NextInterestBlock::<T>::set(
+			// 		NextInterestBlock::<T>::get() + T::RecalculationInterval::get(),
+			// 	);
+			// 	add_weight(0, 1, 0);
 
-				Staked::<T>::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;
-					});
-				<TotalStaked<T>>::get()
-					.checked_add(&acc)
-					.map(|res| <TotalStaked<T>>::set(res));
+			// 	Staked::<T>::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;
+			// 		});
+			// 	<TotalStaked<T>>::get()
+			// 		.checked_add(&acc)
+			// 		.map(|res| <TotalStaked<T>>::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<T: Config> Pallet<T> {
+	impl<T: Config> Pallet<T>
+	where
+		T::BlockNumber: From<u32>,
+	{
 		#[pallet::weight(T::WeightInfo::set_admin_address())]
 		pub fn set_admin_address(origin: OriginFor<T>, 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<T>) -> DispatchResult
 		where
 			<T as frame_system::Config>::BlockNumber: From<u32>,
@@ -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();
 
-			<Staked<T>>::insert(
-				(&staker_id, block_number),
-				<Staked<T>>::get((&staker_id, block_number))
+			<Staked<T>>::insert((&staker_id, block_number), {
+				let mut balance_and_recalc_block = <Staked<T>>::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
+			});
 
-			<TotalStaked<T>>::set(
-				<TotalStaked<T>>::get()
-					.checked_add(&amount)
-					.ok_or(ArithmeticError::Overflow)?,
-			);
+			// <TotalStaked<T>>::set(
+			// 	<TotalStaked<T>>::get()
+			// 		.checked_add(&amount)
+			// 		.ok_or(ArithmeticError::Overflow)?,
+			// );
 
 			Ok(())
 		}
@@ -338,63 +355,120 @@
 		pub fn unstake(staker: OriginFor<T>, amount: BalanceOf<T>) -> DispatchResult {
 			let staker_id = ensure_signed(staker)?;
 
-			let mut stakes = Staked::<T>::iter_prefix((&staker_id,)).collect::<Vec<_>>();
+			let mut stakes = Staked::<T>::drain_prefix((&staker_id,));
 
-			let total_staked = stakes
-				.iter()
-				.fold(<BalanceOf<T>>::default(), |acc, (_, amount)| acc + *amount);
+			// let total_staked = stakes
+			// 	.iter()
+			// 	.fold(<BalanceOf<T>>::default(), |acc, (_, amount)| acc + *amount);
 
-			ensure!(total_staked >= amount, ArithmeticError::Underflow);
+			// ensure!(total_staked >= amount, ArithmeticError::Underflow);
 
-			<TotalStaked<T>>::set(
-				<TotalStaked<T>>::get()
-					.checked_sub(&amount)
-					.ok_or(ArithmeticError::Underflow)?,
-			);
+			// <TotalStaked<T>>::set(
+			// 	<TotalStaked<T>>::get()
+			// 		.checked_sub(&amount)
+			// 		.ok_or(ArithmeticError::Underflow)?,
+			// );
 
-			let block =
-				T::RelayBlockNumberProvider::current_block_number() + T::PendingInterval::get();
-			<PendingUnstake<T>>::insert(
-				(&staker_id, block),
-				<PendingUnstake<T>>::get((&staker_id, block))
-					.checked_add(&amount)
-					.ok_or(ArithmeticError::Overflow)?,
-			);
+			// let block =
+			// 	T::RelayBlockNumberProvider::current_block_number() + T::PendingInterval::get();
+			// <PendingUnstake<T>>::insert(
+			// 	(&staker_id, block),
+			// 	<PendingUnstake<T>>::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 == <BalanceOf<T>>::default() {
-						return None;
-					}
-					if acc_amount <= balance_per_block {
-						let res = (block, balance_per_block - acc_amount, acc_amount);
-						acc_amount = <BalanceOf<T>>::default();
-						return Some(res);
-					} else {
-						acc_amount -= balance_per_block;
-						return Some((block, <BalanceOf<T>>::default(), acc_amount));
-					}
-				})
-				.collect::<Vec<_>>();
+			// let mut acc_amount = amount;
+			// let new_state = stakes
+			// 	.into_iter()
+			// 	.map_while(|(block, balance_per_block)| {
+			// 		if acc_amount == <BalanceOf<T>>::default() {
+			// 			return None;
+			// 		}
+			// 		if acc_amount <= balance_per_block {
+			// 			let res = (block, balance_per_block - acc_amount, acc_amount);
+			// 			acc_amount = <BalanceOf<T>>::default();
+			// 			return Some(res);
+			// 		} else {
+			// 			acc_amount -= balance_per_block;
+			// 			return Some((block, <BalanceOf<T>>::default(), acc_amount));
+			// 		}
+			// 	})
+			// 	.collect::<Vec<_>>();
 
-			new_state
-				.into_iter()
-				.for_each(|(block, to_staked, _to_pending)| {
-					if to_staked == <BalanceOf<T>>::default() {
-						<Staked<T>>::remove((&staker_id, block));
-					} else {
-						<Staked<T>>::insert((&staker_id, block), to_staked);
-					}
-				});
+			// new_state
+			// 	.into_iter()
+			// 	.for_each(|(block, to_staked, _to_pending)| {
+			// 		if to_staked == <BalanceOf<T>>::default() {
+			// 			<Staked<T>>::remove((&staker_id, block));
+			// 		} else {
+			// 			<Staked<T>>::insert((&staker_id, block), to_staked);
+			// 		}
+			// 	});
 
 			Ok(())
+
+			// let staker_id = ensure_signed(staker)?;
+
+			// let mut stakes = Staked::<T>::iter_prefix((&staker_id,)).collect::<Vec<_>>();
+
+			// let total_staked = stakes
+			// 	.iter()
+			// 	.fold(<BalanceOf<T>>::default(), |acc, (_, amount)| acc + *amount);
+
+			// ensure!(total_staked >= amount, ArithmeticError::Underflow);
+
+			// <TotalStaked<T>>::set(
+			// 	<TotalStaked<T>>::get()
+			// 		.checked_sub(&amount)
+			// 		.ok_or(ArithmeticError::Underflow)?,
+			// );
+
+			// let block =
+			// 	T::RelayBlockNumberProvider::current_block_number() + T::PendingInterval::get();
+			// <PendingUnstake<T>>::insert(
+			// 	(&staker_id, block),
+			// 	<PendingUnstake<T>>::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 == <BalanceOf<T>>::default() {
+			// 			return None;
+			// 		}
+			// 		if acc_amount <= balance_per_block {
+			// 			let res = (block, balance_per_block - acc_amount, acc_amount);
+			// 			acc_amount = <BalanceOf<T>>::default();
+			// 			return Some(res);
+			// 		} else {
+			// 			acc_amount -= balance_per_block;
+			// 			return Some((block, <BalanceOf<T>>::default(), acc_amount));
+			// 		}
+			// 	})
+			// 	.collect::<Vec<_>>();
+
+			// new_state
+			// 	.into_iter()
+			// 	.for_each(|(block, to_staked, _to_pending)| {
+			// 		if to_staked == <BalanceOf<T>>::default() {
+			// 			<Staked<T>>::remove((&staker_id, block));
+			// 		} else {
+			// 			<Staked<T>>::insert((&staker_id, block), to_staked);
+			// 		}
+			// 	});
+
+			// Ok(())
 		}
 
-		#[pallet::weight(0)]
+		#[pallet::weight(T::WeightInfo::sponsor_collection())]
 		pub fn sponsor_collection(
 			admin: OriginFor<T>,
 			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<T>,
 			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<T>, contract_id: H160) -> DispatchResult {
 			let admin_id = ensure_signed(admin)?;
 
@@ -443,8 +517,8 @@
 			)
 		}
 
-		#[pallet::weight(0)]
-		pub fn stop_sponsorign_contract(admin: OriginFor<T>, contract_id: H160) -> DispatchResult {
+		#[pallet::weight(T::WeightInfo::stop_sponsoring_contract())]
+		pub fn stop_sponsoring_contract(admin: OriginFor<T>, 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<T>, stakers_number: Option<u8>) -> DispatchResult {
+			let admin_id = ensure_signed(admin)?;
+
+			ensure!(
+				admin_id == Admin::<T>::get().ok_or(Error::<T>::AdminNotSet)?,
+				Error::<T>::NoPermission
+			);
+
+			Ok(())
+		}
 	}
 }
 
@@ -501,7 +587,9 @@
 	pub fn total_staked_by_id(staker: impl EncodeLike<T::AccountId>) -> Option<BalanceOf<T>> {
 		let staked = Staked::<T>::iter_prefix((staker,))
 			.into_iter()
-			.fold(<BalanceOf<T>>::default(), |acc, (_, amount)| acc + amount);
+			.fold(<BalanceOf<T>>::default(), |acc, (_, (amount, _))| {
+				acc + amount
+			});
 		if staked != <BalanceOf<T>>::default() {
 			Some(staked)
 		} else {
@@ -514,7 +602,7 @@
 	) -> Option<Vec<(T::BlockNumber, BalanceOf<T>)>> {
 		let mut staked = Staked::<T>::iter_prefix((staker,))
 			.into_iter()
-			.map(|(block, amount)| (block, amount))
+			.map(|(block, (amount, _))| (block, amount))
 			.collect::<Vec<_>>();
 		staked.sort_by_key(|(block, _)| *block);
 		if !staked.is_empty() {
@@ -550,17 +638,17 @@
 		income_acc: &mut BalanceOf<T>,
 	) {
 		let income = Self::calculate_income(base);
-		base.checked_add(&income).map(|res| {
-			<Staked<T>>::insert((staker, block), res);
-			*income_acc += income;
-			<T::Currency as Currency<T::AccountId>>::transfer(
-				&T::TreasuryAccountId::get(),
-				staker,
-				income,
-				ExistenceRequirement::KeepAlive,
-			)
-			.and_then(|_| Self::add_lock_balance(staker, income));
-		});
+		// base.checked_add(&income).map(|res| {
+		// 	<Staked<T>>::insert((staker, block), res);
+		// 	*income_acc += income;
+		// 	<T::Currency as Currency<T::AccountId>>::transfer(
+		// 		&T::TreasuryAccountId::get(),
+		// 		staker,
+		// 		income,
+		// 		ExistenceRequirement::KeepAlive,
+		// 	)
+		// 	.and_then(|_| Self::add_lock_balance(staker, income));
+		// });
 	}
 
 	fn calculate_income<I>(base: I) -> I
modifiedpallets/app-promotion/src/types.rsdiffbeforeafterboth
--- 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<Option<Self::AccountId>, DispatchError>;
modifiedpallets/app-promotion/src/weights.rsdiffbeforeafterboth
--- 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<T>(PhantomData<T>);
 impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
-	// 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))
 	}
modifiedpallets/unique/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/unique/src/benchmarking.rs
+++ b/pallets/unique/src/benchmarking.rs
@@ -46,7 +46,9 @@
 	)?;
 	Ok(<pallet_common::CreatedCollectionCount<T>>::get())
 }
-fn create_nft_collection<T: Config>(owner: T::AccountId) -> Result<CollectionId, DispatchError> {
+pub fn create_nft_collection<T: Config>(
+	owner: T::AccountId,
+) -> Result<CollectionId, DispatchError> {
 	create_collection_helper::<T>(owner, CollectionMode::NFT)
 }
 
modifiedpallets/unique/src/lib.rsdiffbeforeafterboth
--- 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;
 
modifiedtests/src/interfaces/augment-api-events.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -361,7 +361,7 @@
       [key: string]: AugmentedEvent<ApiType>;
     };
     promotion: {
-      StakingRecalculation: AugmentedEvent<ApiType, [u128, u128]>;
+      StakingRecalculation: AugmentedEvent<ApiType, [AccountId32, u128, u128]>;
       /**
        * Generic event
        **/
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -513,6 +513,11 @@
     promotion: {
       admin: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;
       /**
+       * 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<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;
+      /**
        * Next target block when interest is recalculated
        **/
       nextInterestBlock: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
@@ -523,7 +528,7 @@
       /**
        * Amount of tokens staked by account in the blocknumber.
        **/
-      staked: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u128>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;
+      staked: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<ITuple<[u128, u32]>>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;
       /**
        * A block when app-promotion has started .I think this is redundant, because we only need `NextInterestBlock`.
        **/
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -363,14 +363,15 @@
       [key: string]: SubmittableExtrinsicFunction<ApiType>;
     };
     promotion: {
+      payoutStakers: AugmentedSubmittable<(stakersNumber: Option<u8> | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u8>]>;
       setAdminAddress: AugmentedSubmittable<(admin: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr]>;
       sponsorCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
       sponsorConract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
       stake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u128]>;
       startAppPromotion: AugmentedSubmittable<(promotionStartRelayBlock: Option<u32> | null | Uint8Array | u32 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
       stopAppPromotion: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>, []>;
-      stopSponsorignCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
-      stopSponsorignContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
+      stopSponsoringCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
+      stopSponsoringContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
       unstake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u128]>;
       /**
        * Generic tx
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
--- 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<u8>;
+  } & 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';
 }
 
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
1061 **/1061 **/
1062 PalletAppPromotionEvent: {1062 PalletAppPromotionEvent: {
1063 _enum: {1063 _enum: {
1064 StakingRecalculation: '(u128,u128)'1064 StakingRecalculation: '(AccountId32,u128,u128)'
1065 }1065 }
1066 },1066 },
1067 /**1067 /**
2473 sponsor_collection: {2473 sponsor_collection: {
2474 collectionId: 'u32',2474 collectionId: 'u32',
2475 },2475 },
2476 stop_sponsorign_collection: {2476 stop_sponsoring_collection: {
2477 collectionId: 'u32',2477 collectionId: 'u32',
2478 },2478 },
2479 sponsor_conract: {2479 sponsor_conract: {
2480 contractId: 'H160',2480 contractId: 'H160',
2481 },2481 },
2482 stop_sponsorign_contract: {2482 stop_sponsoring_contract: {
2483 contractId: 'H160'2483 contractId: 'H160',
2484 }2484 },
2485 payout_stakers: {
2486 stakersNumber: 'Option<u8>'
2487 }
2485 }2488 }
2486 },2489 },
2487 /**2490 /**
2488 * Lookup305: pallet_evm::pallet::Call<T>2491 * Lookup306: pallet_evm::pallet::Call<T>
2489 **/2492 **/
2490 PalletEvmCall: {2493 PalletEvmCall: {
2491 _enum: {2494 _enum: {
2492 withdraw: {2495 withdraw: {
2527 }2530 }
2528 }2531 }
2529 },2532 },
2530 /**2533 /**
2531 * Lookup309: pallet_ethereum::pallet::Call<T>2534 * Lookup310: pallet_ethereum::pallet::Call<T>
2532 **/2535 **/
2533 PalletEthereumCall: {2536 PalletEthereumCall: {
2534 _enum: {2537 _enum: {
2535 transact: {2538 transact: {
2536 transaction: 'EthereumTransactionTransactionV2'2539 transaction: 'EthereumTransactionTransactionV2'
2537 }2540 }
2538 }2541 }
2539 },2542 },
2540 /**2543 /**
2541 * Lookup310: ethereum::transaction::TransactionV22544 * Lookup311: ethereum::transaction::TransactionV2
2542 **/2545 **/
2543 EthereumTransactionTransactionV2: {2546 EthereumTransactionTransactionV2: {
2544 _enum: {2547 _enum: {
2545 Legacy: 'EthereumTransactionLegacyTransaction',2548 Legacy: 'EthereumTransactionLegacyTransaction',
2546 EIP2930: 'EthereumTransactionEip2930Transaction',2549 EIP2930: 'EthereumTransactionEip2930Transaction',
2547 EIP1559: 'EthereumTransactionEip1559Transaction'2550 EIP1559: 'EthereumTransactionEip1559Transaction'
2548 }2551 }
2549 },2552 },
2550 /**2553 /**
2551 * Lookup311: ethereum::transaction::LegacyTransaction2554 * Lookup312: ethereum::transaction::LegacyTransaction
2552 **/2555 **/
2553 EthereumTransactionLegacyTransaction: {2556 EthereumTransactionLegacyTransaction: {
2554 nonce: 'U256',2557 nonce: 'U256',
2555 gasPrice: 'U256',2558 gasPrice: 'U256',
2559 input: 'Bytes',2562 input: 'Bytes',
2560 signature: 'EthereumTransactionTransactionSignature'2563 signature: 'EthereumTransactionTransactionSignature'
2561 },2564 },
2562 /**2565 /**
2563 * Lookup312: ethereum::transaction::TransactionAction2566 * Lookup313: ethereum::transaction::TransactionAction
2564 **/2567 **/
2565 EthereumTransactionTransactionAction: {2568 EthereumTransactionTransactionAction: {
2566 _enum: {2569 _enum: {
2567 Call: 'H160',2570 Call: 'H160',
2568 Create: 'Null'2571 Create: 'Null'
2569 }2572 }
2570 },2573 },
2571 /**2574 /**
2572 * Lookup313: ethereum::transaction::TransactionSignature2575 * Lookup314: ethereum::transaction::TransactionSignature
2573 **/2576 **/
2574 EthereumTransactionTransactionSignature: {2577 EthereumTransactionTransactionSignature: {
2575 v: 'u64',2578 v: 'u64',
2576 r: 'H256',2579 r: 'H256',
2577 s: 'H256'2580 s: 'H256'
2578 },2581 },
2579 /**2582 /**
2580 * Lookup315: ethereum::transaction::EIP2930Transaction2583 * Lookup316: ethereum::transaction::EIP2930Transaction
2581 **/2584 **/
2582 EthereumTransactionEip2930Transaction: {2585 EthereumTransactionEip2930Transaction: {
2583 chainId: 'u64',2586 chainId: 'u64',
2584 nonce: 'U256',2587 nonce: 'U256',
2592 r: 'H256',2595 r: 'H256',
2593 s: 'H256'2596 s: 'H256'
2594 },2597 },
2595 /**2598 /**
2596 * Lookup317: ethereum::transaction::AccessListItem2599 * Lookup318: ethereum::transaction::AccessListItem
2597 **/2600 **/
2598 EthereumTransactionAccessListItem: {2601 EthereumTransactionAccessListItem: {
2599 address: 'H160',2602 address: 'H160',
2600 storageKeys: 'Vec<H256>'2603 storageKeys: 'Vec<H256>'
2601 },2604 },
2602 /**2605 /**
2603 * Lookup318: ethereum::transaction::EIP1559Transaction2606 * Lookup319: ethereum::transaction::EIP1559Transaction
2604 **/2607 **/
2605 EthereumTransactionEip1559Transaction: {2608 EthereumTransactionEip1559Transaction: {
2606 chainId: 'u64',2609 chainId: 'u64',
2607 nonce: 'U256',2610 nonce: 'U256',
2616 r: 'H256',2619 r: 'H256',
2617 s: 'H256'2620 s: 'H256'
2618 },2621 },
2619 /**2622 /**
2620 * Lookup319: pallet_evm_migration::pallet::Call<T>2623 * Lookup320: pallet_evm_migration::pallet::Call<T>
2621 **/2624 **/
2622 PalletEvmMigrationCall: {2625 PalletEvmMigrationCall: {
2623 _enum: {2626 _enum: {
2624 begin: {2627 begin: {
2634 }2637 }
2635 }2638 }
2636 },2639 },
2637 /**2640 /**
2638 * Lookup322: pallet_sudo::pallet::Error<T>2641 * Lookup323: pallet_sudo::pallet::Error<T>
2639 **/2642 **/
2640 PalletSudoError: {2643 PalletSudoError: {
2641 _enum: ['RequireSudo']2644 _enum: ['RequireSudo']
2642 },2645 },
2643 /**2646 /**
2644 * Lookup324: orml_vesting::module::Error<T>2647 * Lookup325: orml_vesting::module::Error<T>
2645 **/2648 **/
2646 OrmlVestingModuleError: {2649 OrmlVestingModuleError: {
2647 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2650 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
2648 },2651 },
2649 /**2652 /**
2650 * Lookup326: cumulus_pallet_xcmp_queue::InboundChannelDetails2653 * Lookup327: cumulus_pallet_xcmp_queue::InboundChannelDetails
2651 **/2654 **/
2652 CumulusPalletXcmpQueueInboundChannelDetails: {2655 CumulusPalletXcmpQueueInboundChannelDetails: {
2653 sender: 'u32',2656 sender: 'u32',
2654 state: 'CumulusPalletXcmpQueueInboundState',2657 state: 'CumulusPalletXcmpQueueInboundState',
2655 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2658 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
2656 },2659 },
2657 /**2660 /**
2658 * Lookup327: cumulus_pallet_xcmp_queue::InboundState2661 * Lookup328: cumulus_pallet_xcmp_queue::InboundState
2659 **/2662 **/
2660 CumulusPalletXcmpQueueInboundState: {2663 CumulusPalletXcmpQueueInboundState: {
2661 _enum: ['Ok', 'Suspended']2664 _enum: ['Ok', 'Suspended']
2662 },2665 },
2663 /**2666 /**
2664 * Lookup330: polkadot_parachain::primitives::XcmpMessageFormat2667 * Lookup331: polkadot_parachain::primitives::XcmpMessageFormat
2665 **/2668 **/
2666 PolkadotParachainPrimitivesXcmpMessageFormat: {2669 PolkadotParachainPrimitivesXcmpMessageFormat: {
2667 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2670 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
2668 },2671 },
2669 /**2672 /**
2670 * Lookup333: cumulus_pallet_xcmp_queue::OutboundChannelDetails2673 * Lookup334: cumulus_pallet_xcmp_queue::OutboundChannelDetails
2671 **/2674 **/
2672 CumulusPalletXcmpQueueOutboundChannelDetails: {2675 CumulusPalletXcmpQueueOutboundChannelDetails: {
2673 recipient: 'u32',2676 recipient: 'u32',
2674 state: 'CumulusPalletXcmpQueueOutboundState',2677 state: 'CumulusPalletXcmpQueueOutboundState',
2675 signalsExist: 'bool',2678 signalsExist: 'bool',
2676 firstIndex: 'u16',2679 firstIndex: 'u16',
2677 lastIndex: 'u16'2680 lastIndex: 'u16'
2678 },2681 },
2679 /**2682 /**
2680 * Lookup334: cumulus_pallet_xcmp_queue::OutboundState2683 * Lookup335: cumulus_pallet_xcmp_queue::OutboundState
2681 **/2684 **/
2682 CumulusPalletXcmpQueueOutboundState: {2685 CumulusPalletXcmpQueueOutboundState: {
2683 _enum: ['Ok', 'Suspended']2686 _enum: ['Ok', 'Suspended']
2684 },2687 },
2685 /**2688 /**
2686 * Lookup336: cumulus_pallet_xcmp_queue::QueueConfigData2689 * Lookup337: cumulus_pallet_xcmp_queue::QueueConfigData
2687 **/2690 **/
2688 CumulusPalletXcmpQueueQueueConfigData: {2691 CumulusPalletXcmpQueueQueueConfigData: {
2689 suspendThreshold: 'u32',2692 suspendThreshold: 'u32',
2690 dropThreshold: 'u32',2693 dropThreshold: 'u32',
2693 weightRestrictDecay: 'u64',2696 weightRestrictDecay: 'u64',
2694 xcmpMaxIndividualWeight: 'u64'2697 xcmpMaxIndividualWeight: 'u64'
2695 },2698 },
2696 /**2699 /**
2697 * Lookup338: cumulus_pallet_xcmp_queue::pallet::Error<T>2700 * Lookup339: cumulus_pallet_xcmp_queue::pallet::Error<T>
2698 **/2701 **/
2699 CumulusPalletXcmpQueueError: {2702 CumulusPalletXcmpQueueError: {
2700 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2703 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
2701 },2704 },
2702 /**2705 /**
2703 * Lookup339: pallet_xcm::pallet::Error<T>2706 * Lookup340: pallet_xcm::pallet::Error<T>
2704 **/2707 **/
2705 PalletXcmError: {2708 PalletXcmError: {
2706 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2709 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
2707 },2710 },
2708 /**2711 /**
2709 * Lookup340: cumulus_pallet_xcm::pallet::Error<T>2712 * Lookup341: cumulus_pallet_xcm::pallet::Error<T>
2710 **/2713 **/
2711 CumulusPalletXcmError: 'Null',2714 CumulusPalletXcmError: 'Null',
2712 /**2715 /**
2713 * Lookup341: cumulus_pallet_dmp_queue::ConfigData2716 * Lookup342: cumulus_pallet_dmp_queue::ConfigData
2714 **/2717 **/
2715 CumulusPalletDmpQueueConfigData: {2718 CumulusPalletDmpQueueConfigData: {
2716 maxIndividual: 'u64'2719 maxIndividual: 'u64'
2717 },2720 },
2718 /**2721 /**
2719 * Lookup342: cumulus_pallet_dmp_queue::PageIndexData2722 * Lookup343: cumulus_pallet_dmp_queue::PageIndexData
2720 **/2723 **/
2721 CumulusPalletDmpQueuePageIndexData: {2724 CumulusPalletDmpQueuePageIndexData: {
2722 beginUsed: 'u32',2725 beginUsed: 'u32',
2723 endUsed: 'u32',2726 endUsed: 'u32',
2724 overweightCount: 'u64'2727 overweightCount: 'u64'
2725 },2728 },
2726 /**2729 /**
2727 * Lookup345: cumulus_pallet_dmp_queue::pallet::Error<T>2730 * Lookup346: cumulus_pallet_dmp_queue::pallet::Error<T>
2728 **/2731 **/
2729 CumulusPalletDmpQueueError: {2732 CumulusPalletDmpQueueError: {
2730 _enum: ['Unknown', 'OverLimit']2733 _enum: ['Unknown', 'OverLimit']
2731 },2734 },
2732 /**2735 /**
2733 * Lookup349: pallet_unique::Error<T>2736 * Lookup350: pallet_unique::Error<T>
2734 **/2737 **/
2735 PalletUniqueError: {2738 PalletUniqueError: {
2736 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']2739 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']
2737 },2740 },
2738 /**2741 /**
2739 * Lookup352: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>2742 * Lookup353: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
2740 **/2743 **/
2741 PalletUniqueSchedulerScheduledV3: {2744 PalletUniqueSchedulerScheduledV3: {
2742 maybeId: 'Option<[u8;16]>',2745 maybeId: 'Option<[u8;16]>',
2743 priority: 'u8',2746 priority: 'u8',
2744 call: 'FrameSupportScheduleMaybeHashed',2747 call: 'FrameSupportScheduleMaybeHashed',
2745 maybePeriodic: 'Option<(u32,u32)>',2748 maybePeriodic: 'Option<(u32,u32)>',
2746 origin: 'OpalRuntimeOriginCaller'2749 origin: 'OpalRuntimeOriginCaller'
2747 },2750 },
2748 /**2751 /**
2749 * Lookup353: opal_runtime::OriginCaller2752 * Lookup354: opal_runtime::OriginCaller
2750 **/2753 **/
2751 OpalRuntimeOriginCaller: {2754 OpalRuntimeOriginCaller: {
2752 _enum: {2755 _enum: {
2753 system: 'FrameSupportDispatchRawOrigin',2756 system: 'FrameSupportDispatchRawOrigin',
2854 Ethereum: 'PalletEthereumRawOrigin'2857 Ethereum: 'PalletEthereumRawOrigin'
2855 }2858 }
2856 },2859 },
2857 /**2860 /**
2858 * Lookup354: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>2861 * Lookup355: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
2859 **/2862 **/
2860 FrameSupportDispatchRawOrigin: {2863 FrameSupportDispatchRawOrigin: {
2861 _enum: {2864 _enum: {
2862 Root: 'Null',2865 Root: 'Null',
2863 Signed: 'AccountId32',2866 Signed: 'AccountId32',
2864 None: 'Null'2867 None: 'Null'
2865 }2868 }
2866 },2869 },
2867 /**2870 /**
2868 * Lookup355: pallet_xcm::pallet::Origin2871 * Lookup356: pallet_xcm::pallet::Origin
2869 **/2872 **/
2870 PalletXcmOrigin: {2873 PalletXcmOrigin: {
2871 _enum: {2874 _enum: {
2872 Xcm: 'XcmV1MultiLocation',2875 Xcm: 'XcmV1MultiLocation',
2873 Response: 'XcmV1MultiLocation'2876 Response: 'XcmV1MultiLocation'
2874 }2877 }
2875 },2878 },
2876 /**2879 /**
2877 * Lookup356: cumulus_pallet_xcm::pallet::Origin2880 * Lookup357: cumulus_pallet_xcm::pallet::Origin
2878 **/2881 **/
2879 CumulusPalletXcmOrigin: {2882 CumulusPalletXcmOrigin: {
2880 _enum: {2883 _enum: {
2881 Relay: 'Null',2884 Relay: 'Null',
2882 SiblingParachain: 'u32'2885 SiblingParachain: 'u32'
2883 }2886 }
2884 },2887 },
2885 /**2888 /**
2886 * Lookup357: pallet_ethereum::RawOrigin2889 * Lookup358: pallet_ethereum::RawOrigin
2887 **/2890 **/
2888 PalletEthereumRawOrigin: {2891 PalletEthereumRawOrigin: {
2889 _enum: {2892 _enum: {
2890 EthereumTransaction: 'H160'2893 EthereumTransaction: 'H160'
2891 }2894 }
2892 },2895 },
2893 /**2896 /**
2894 * Lookup358: sp_core::Void2897 * Lookup359: sp_core::Void
2895 **/2898 **/
2896 SpCoreVoid: 'Null',2899 SpCoreVoid: 'Null',
2897 /**2900 /**
2898 * Lookup359: pallet_unique_scheduler::pallet::Error<T>2901 * Lookup360: pallet_unique_scheduler::pallet::Error<T>
2899 **/2902 **/
2900 PalletUniqueSchedulerError: {2903 PalletUniqueSchedulerError: {
2901 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']2904 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']
2902 },2905 },
2903 /**2906 /**
2904 * Lookup360: up_data_structs::Collection<sp_core::crypto::AccountId32>2907 * Lookup361: up_data_structs::Collection<sp_core::crypto::AccountId32>
2905 **/2908 **/
2906 UpDataStructsCollection: {2909 UpDataStructsCollection: {
2907 owner: 'AccountId32',2910 owner: 'AccountId32',
2908 mode: 'UpDataStructsCollectionMode',2911 mode: 'UpDataStructsCollectionMode',
2914 permissions: 'UpDataStructsCollectionPermissions',2917 permissions: 'UpDataStructsCollectionPermissions',
2915 externalCollection: 'bool'2918 externalCollection: 'bool'
2916 },2919 },
2917 /**2920 /**
2918 * Lookup361: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2921 * Lookup362: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
2919 **/2922 **/
2920 UpDataStructsSponsorshipStateAccountId32: {2923 UpDataStructsSponsorshipStateAccountId32: {
2921 _enum: {2924 _enum: {
2922 Disabled: 'Null',2925 Disabled: 'Null',
2923 Unconfirmed: 'AccountId32',2926 Unconfirmed: 'AccountId32',
2924 Confirmed: 'AccountId32'2927 Confirmed: 'AccountId32'
2925 }2928 }
2926 },2929 },
2927 /**2930 /**
2928 * Lookup362: up_data_structs::Properties2931 * Lookup363: up_data_structs::Properties
2929 **/2932 **/
2930 UpDataStructsProperties: {2933 UpDataStructsProperties: {
2931 map: 'UpDataStructsPropertiesMapBoundedVec',2934 map: 'UpDataStructsPropertiesMapBoundedVec',
2932 consumedSpace: 'u32',2935 consumedSpace: 'u32',
2933 spaceLimit: 'u32'2936 spaceLimit: 'u32'
2934 },2937 },
2935 /**2938 /**
2936 * Lookup363: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2939 * Lookup364: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2937 **/2940 **/
2938 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2941 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
2939 /**2942 /**
2940 * Lookup368: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2943 * Lookup369: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
2941 **/2944 **/
2942 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2945 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
2943 /**2946 /**
2944 * Lookup375: up_data_structs::CollectionStats2947 * Lookup376: up_data_structs::CollectionStats
2945 **/2948 **/
2946 UpDataStructsCollectionStats: {2949 UpDataStructsCollectionStats: {
2947 created: 'u32',2950 created: 'u32',
2948 destroyed: 'u32',2951 destroyed: 'u32',
2949 alive: 'u32'2952 alive: 'u32'
2950 },2953 },
2951 /**2954 /**
2952 * Lookup376: up_data_structs::TokenChild2955 * Lookup377: up_data_structs::TokenChild
2953 **/2956 **/
2954 UpDataStructsTokenChild: {2957 UpDataStructsTokenChild: {
2955 token: 'u32',2958 token: 'u32',
2956 collection: 'u32'2959 collection: 'u32'
2957 },2960 },
2958 /**2961 /**
2959 * Lookup377: PhantomType::up_data_structs<T>2962 * Lookup378: PhantomType::up_data_structs<T>
2960 **/2963 **/
2961 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',2964 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',
2962 /**2965 /**
2963 * Lookup379: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2966 * Lookup380: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2964 **/2967 **/
2965 UpDataStructsTokenData: {2968 UpDataStructsTokenData: {
2966 properties: 'Vec<UpDataStructsProperty>',2969 properties: 'Vec<UpDataStructsProperty>',
2967 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>',2970 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>',
2968 pieces: 'u128'2971 pieces: 'u128'
2969 },2972 },
2970 /**2973 /**
2971 * Lookup381: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2974 * Lookup382: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
2972 **/2975 **/
2973 UpDataStructsRpcCollection: {2976 UpDataStructsRpcCollection: {
2974 owner: 'AccountId32',2977 owner: 'AccountId32',
2975 mode: 'UpDataStructsCollectionMode',2978 mode: 'UpDataStructsCollectionMode',
2983 properties: 'Vec<UpDataStructsProperty>',2986 properties: 'Vec<UpDataStructsProperty>',
2984 readOnly: 'bool'2987 readOnly: 'bool'
2985 },2988 },
2986 /**2989 /**
2987 * Lookup382: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>2990 * Lookup383: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
2988 **/2991 **/
2989 RmrkTraitsCollectionCollectionInfo: {2992 RmrkTraitsCollectionCollectionInfo: {
2990 issuer: 'AccountId32',2993 issuer: 'AccountId32',
2991 metadata: 'Bytes',2994 metadata: 'Bytes',
2992 max: 'Option<u32>',2995 max: 'Option<u32>',
2993 symbol: 'Bytes',2996 symbol: 'Bytes',
2994 nftsCount: 'u32'2997 nftsCount: 'u32'
2995 },2998 },
2996 /**2999 /**
2997 * Lookup383: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3000 * Lookup384: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2998 **/3001 **/
2999 RmrkTraitsNftNftInfo: {3002 RmrkTraitsNftNftInfo: {
3000 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',3003 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
3001 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',3004 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',
3002 metadata: 'Bytes',3005 metadata: 'Bytes',
3003 equipped: 'bool',3006 equipped: 'bool',
3004 pending: 'bool'3007 pending: 'bool'
3005 },3008 },
3006 /**3009 /**
3007 * Lookup385: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>3010 * Lookup386: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
3008 **/3011 **/
3009 RmrkTraitsNftRoyaltyInfo: {3012 RmrkTraitsNftRoyaltyInfo: {
3010 recipient: 'AccountId32',3013 recipient: 'AccountId32',
3011 amount: 'Permill'3014 amount: 'Permill'
3012 },3015 },
3013 /**3016 /**
3014 * Lookup386: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3017 * Lookup387: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
3015 **/3018 **/
3016 RmrkTraitsResourceResourceInfo: {3019 RmrkTraitsResourceResourceInfo: {
3017 id: 'u32',3020 id: 'u32',
3018 resource: 'RmrkTraitsResourceResourceTypes',3021 resource: 'RmrkTraitsResourceResourceTypes',
3019 pending: 'bool',3022 pending: 'bool',
3020 pendingRemoval: 'bool'3023 pendingRemoval: 'bool'
3021 },3024 },
3022 /**3025 /**
3023 * Lookup387: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3026 * Lookup388: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
3024 **/3027 **/
3025 RmrkTraitsPropertyPropertyInfo: {3028 RmrkTraitsPropertyPropertyInfo: {
3026 key: 'Bytes',3029 key: 'Bytes',
3027 value: 'Bytes'3030 value: 'Bytes'
3028 },3031 },
3029 /**3032 /**
3030 * Lookup388: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3033 * Lookup389: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
3031 **/3034 **/
3032 RmrkTraitsBaseBaseInfo: {3035 RmrkTraitsBaseBaseInfo: {
3033 issuer: 'AccountId32',3036 issuer: 'AccountId32',
3034 baseType: 'Bytes',3037 baseType: 'Bytes',
3035 symbol: 'Bytes'3038 symbol: 'Bytes'
3036 },3039 },
3037 /**3040 /**
3038 * Lookup389: rmrk_traits::nft::NftChild3041 * Lookup390: rmrk_traits::nft::NftChild
3039 **/3042 **/
3040 RmrkTraitsNftNftChild: {3043 RmrkTraitsNftNftChild: {
3041 collectionId: 'u32',3044 collectionId: 'u32',
3042 nftId: 'u32'3045 nftId: 'u32'
3043 },3046 },
3044 /**3047 /**
3045 * Lookup391: pallet_common::pallet::Error<T>3048 * Lookup392: pallet_common::pallet::Error<T>
3046 **/3049 **/
3047 PalletCommonError: {3050 PalletCommonError: {
3048 _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']3051 _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']
3049 },3052 },
3050 /**3053 /**
3051 * Lookup393: pallet_fungible::pallet::Error<T>3054 * Lookup394: pallet_fungible::pallet::Error<T>
3052 **/3055 **/
3053 PalletFungibleError: {3056 PalletFungibleError: {
3054 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']3057 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
3055 },3058 },
3056 /**3059 /**
3057 * Lookup394: pallet_refungible::ItemData3060 * Lookup395: pallet_refungible::ItemData
3058 **/3061 **/
3059 PalletRefungibleItemData: {3062 PalletRefungibleItemData: {
3060 constData: 'Bytes'3063 constData: 'Bytes'
3061 },3064 },
3062 /**3065 /**
3063 * Lookup399: pallet_refungible::pallet::Error<T>3066 * Lookup400: pallet_refungible::pallet::Error<T>
3064 **/3067 **/
3065 PalletRefungibleError: {3068 PalletRefungibleError: {
3066 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']3069 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
3067 },3070 },
3068 /**3071 /**
3069 * Lookup400: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>3072 * Lookup401: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
3070 **/3073 **/
3071 PalletNonfungibleItemData: {3074 PalletNonfungibleItemData: {
3072 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'3075 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
3073 },3076 },
3074 /**3077 /**
3075 * Lookup402: up_data_structs::PropertyScope3078 * Lookup403: up_data_structs::PropertyScope
3076 **/3079 **/
3077 UpDataStructsPropertyScope: {3080 UpDataStructsPropertyScope: {
3078 _enum: ['None', 'Rmrk', 'Eth']3081 _enum: ['None', 'Rmrk', 'Eth']
3079 },3082 },
3080 /**3083 /**
3081 * Lookup404: pallet_nonfungible::pallet::Error<T>3084 * Lookup405: pallet_nonfungible::pallet::Error<T>
3082 **/3085 **/
3083 PalletNonfungibleError: {3086 PalletNonfungibleError: {
3084 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']3087 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
3085 },3088 },
3086 /**3089 /**
3087 * Lookup405: pallet_structure::pallet::Error<T>3090 * Lookup406: pallet_structure::pallet::Error<T>
3088 **/3091 **/
3089 PalletStructureError: {3092 PalletStructureError: {
3090 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']3093 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
3091 },3094 },
3092 /**3095 /**
3093 * Lookup406: pallet_rmrk_core::pallet::Error<T>3096 * Lookup407: pallet_rmrk_core::pallet::Error<T>
3094 **/3097 **/
3095 PalletRmrkCoreError: {3098 PalletRmrkCoreError: {
3096 _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']3099 _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
3097 },3100 },
3098 /**3101 /**
3099 * Lookup408: pallet_rmrk_equip::pallet::Error<T>3102 * Lookup409: pallet_rmrk_equip::pallet::Error<T>
3100 **/3103 **/
3101 PalletRmrkEquipError: {3104 PalletRmrkEquipError: {
3102 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']3105 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']
3103 },3106 },
3104 /**3107 /**
3105 * Lookup410: pallet_app_promotion::pallet::Error<T>3108 * Lookup412: pallet_app_promotion::pallet::Error<T>
3106 **/3109 **/
3107 PalletAppPromotionError: {3110 PalletAppPromotionError: {
3108 _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFounds', 'InvalidArgument']3111 _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFounds', 'InvalidArgument']
3109 },3112 },
3110 /**3113 /**
3111 * Lookup413: pallet_evm::pallet::Error<T>3114 * Lookup415: pallet_evm::pallet::Error<T>
3112 **/3115 **/
3113 PalletEvmError: {3116 PalletEvmError: {
3114 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']3117 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
3115 },3118 },
3116 /**3119 /**
3117 * Lookup416: fp_rpc::TransactionStatus3120 * Lookup418: fp_rpc::TransactionStatus
3118 **/3121 **/
3119 FpRpcTransactionStatus: {3122 FpRpcTransactionStatus: {
3120 transactionHash: 'H256',3123 transactionHash: 'H256',
3121 transactionIndex: 'u32',3124 transactionIndex: 'u32',
3125 logs: 'Vec<EthereumLog>',3128 logs: 'Vec<EthereumLog>',
3126 logsBloom: 'EthbloomBloom'3129 logsBloom: 'EthbloomBloom'
3127 },3130 },
3128 /**3131 /**
3129 * Lookup418: ethbloom::Bloom3132 * Lookup420: ethbloom::Bloom
3130 **/3133 **/
3131 EthbloomBloom: '[u8;256]',3134 EthbloomBloom: '[u8;256]',
3132 /**3135 /**
3133 * Lookup420: ethereum::receipt::ReceiptV33136 * Lookup422: ethereum::receipt::ReceiptV3
3134 **/3137 **/
3135 EthereumReceiptReceiptV3: {3138 EthereumReceiptReceiptV3: {
3136 _enum: {3139 _enum: {
3137 Legacy: 'EthereumReceiptEip658ReceiptData',3140 Legacy: 'EthereumReceiptEip658ReceiptData',
3138 EIP2930: 'EthereumReceiptEip658ReceiptData',3141 EIP2930: 'EthereumReceiptEip658ReceiptData',
3139 EIP1559: 'EthereumReceiptEip658ReceiptData'3142 EIP1559: 'EthereumReceiptEip658ReceiptData'
3140 }3143 }
3141 },3144 },
3142 /**3145 /**
3143 * Lookup421: ethereum::receipt::EIP658ReceiptData3146 * Lookup423: ethereum::receipt::EIP658ReceiptData
3144 **/3147 **/
3145 EthereumReceiptEip658ReceiptData: {3148 EthereumReceiptEip658ReceiptData: {
3146 statusCode: 'u8',3149 statusCode: 'u8',
3147 usedGas: 'U256',3150 usedGas: 'U256',
3148 logsBloom: 'EthbloomBloom',3151 logsBloom: 'EthbloomBloom',
3149 logs: 'Vec<EthereumLog>'3152 logs: 'Vec<EthereumLog>'
3150 },3153 },
3151 /**3154 /**
3152 * Lookup422: ethereum::block::Block<ethereum::transaction::TransactionV2>3155 * Lookup424: ethereum::block::Block<ethereum::transaction::TransactionV2>
3153 **/3156 **/
3154 EthereumBlock: {3157 EthereumBlock: {
3155 header: 'EthereumHeader',3158 header: 'EthereumHeader',
3156 transactions: 'Vec<EthereumTransactionTransactionV2>',3159 transactions: 'Vec<EthereumTransactionTransactionV2>',
3157 ommers: 'Vec<EthereumHeader>'3160 ommers: 'Vec<EthereumHeader>'
3158 },3161 },
3159 /**3162 /**
3160 * Lookup423: ethereum::header::Header3163 * Lookup425: ethereum::header::Header
3161 **/3164 **/
3162 EthereumHeader: {3165 EthereumHeader: {
3163 parentHash: 'H256',3166 parentHash: 'H256',
3164 ommersHash: 'H256',3167 ommersHash: 'H256',
3176 mixHash: 'H256',3179 mixHash: 'H256',
3177 nonce: 'EthereumTypesHashH64'3180 nonce: 'EthereumTypesHashH64'
3178 },3181 },
3179 /**3182 /**
3180 * Lookup424: ethereum_types::hash::H643183 * Lookup426: ethereum_types::hash::H64
3181 **/3184 **/
3182 EthereumTypesHashH64: '[u8;8]',3185 EthereumTypesHashH64: '[u8;8]',
3183 /**3186 /**
3184 * Lookup429: pallet_ethereum::pallet::Error<T>3187 * Lookup431: pallet_ethereum::pallet::Error<T>
3185 **/3188 **/
3186 PalletEthereumError: {3189 PalletEthereumError: {
3187 _enum: ['InvalidSignature', 'PreLogExists']3190 _enum: ['InvalidSignature', 'PreLogExists']
3188 },3191 },
3189 /**3192 /**
3190 * Lookup430: pallet_evm_coder_substrate::pallet::Error<T>3193 * Lookup432: pallet_evm_coder_substrate::pallet::Error<T>
3191 **/3194 **/
3192 PalletEvmCoderSubstrateError: {3195 PalletEvmCoderSubstrateError: {
3193 _enum: ['OutOfGas', 'OutOfFund']3196 _enum: ['OutOfGas', 'OutOfFund']
3194 },3197 },
3195 /**3198 /**
3196 * Lookup431: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>3199 * Lookup433: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
3197 **/3200 **/
3198 UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: {3201 UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: {
3199 _enum: {3202 _enum: {
3200 Disabled: 'Null',3203 Disabled: 'Null',
3201 Unconfirmed: 'PalletEvmAccountBasicCrossAccountIdRepr',3204 Unconfirmed: 'PalletEvmAccountBasicCrossAccountIdRepr',
3202 Confirmed: 'PalletEvmAccountBasicCrossAccountIdRepr'3205 Confirmed: 'PalletEvmAccountBasicCrossAccountIdRepr'
3203 }3206 }
3204 },3207 },
3205 /**3208 /**
3206 * Lookup432: pallet_evm_contract_helpers::SponsoringModeT3209 * Lookup434: pallet_evm_contract_helpers::SponsoringModeT
3207 **/3210 **/
3208 PalletEvmContractHelpersSponsoringModeT: {3211 PalletEvmContractHelpersSponsoringModeT: {
3209 _enum: ['Disabled', 'Allowlisted', 'Generous']3212 _enum: ['Disabled', 'Allowlisted', 'Generous']
3210 },3213 },
3211 /**3214 /**
3212 * Lookup434: pallet_evm_contract_helpers::pallet::Error<T>3215 * Lookup436: pallet_evm_contract_helpers::pallet::Error<T>
3213 **/3216 **/
3214 PalletEvmContractHelpersError: {3217 PalletEvmContractHelpersError: {
3215 _enum: ['NoPermission', 'NoPendingSponsor']3218 _enum: ['NoPermission', 'NoPendingSponsor']
3216 },3219 },
3217 /**3220 /**
3218 * Lookup435: pallet_evm_migration::pallet::Error<T>3221 * Lookup437: pallet_evm_migration::pallet::Error<T>
3219 **/3222 **/
3220 PalletEvmMigrationError: {3223 PalletEvmMigrationError: {
3221 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']3224 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
3222 },3225 },
3223 /**3226 /**
3224 * Lookup437: sp_runtime::MultiSignature3227 * Lookup439: sp_runtime::MultiSignature
3225 **/3228 **/
3226 SpRuntimeMultiSignature: {3229 SpRuntimeMultiSignature: {
3227 _enum: {3230 _enum: {
3228 Ed25519: 'SpCoreEd25519Signature',3231 Ed25519: 'SpCoreEd25519Signature',
3229 Sr25519: 'SpCoreSr25519Signature',3232 Sr25519: 'SpCoreSr25519Signature',
3230 Ecdsa: 'SpCoreEcdsaSignature'3233 Ecdsa: 'SpCoreEcdsaSignature'
3231 }3234 }
3232 },3235 },
3233 /**3236 /**
3234 * Lookup438: sp_core::ed25519::Signature3237 * Lookup440: sp_core::ed25519::Signature
3235 **/3238 **/
3236 SpCoreEd25519Signature: '[u8;64]',3239 SpCoreEd25519Signature: '[u8;64]',
3237 /**3240 /**
3238 * Lookup440: sp_core::sr25519::Signature3241 * Lookup442: sp_core::sr25519::Signature
3239 **/3242 **/
3240 SpCoreSr25519Signature: '[u8;64]',3243 SpCoreSr25519Signature: '[u8;64]',
3241 /**3244 /**
3242 * Lookup441: sp_core::ecdsa::Signature3245 * Lookup443: sp_core::ecdsa::Signature
3243 **/3246 **/
3244 SpCoreEcdsaSignature: '[u8;65]',3247 SpCoreEcdsaSignature: '[u8;65]',
3245 /**3248 /**
3246 * Lookup444: frame_system::extensions::check_spec_version::CheckSpecVersion<T>3249 * Lookup446: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
3247 **/3250 **/
3248 FrameSystemExtensionsCheckSpecVersion: 'Null',3251 FrameSystemExtensionsCheckSpecVersion: 'Null',
3249 /**3252 /**
3250 * Lookup445: frame_system::extensions::check_genesis::CheckGenesis<T>3253 * Lookup447: frame_system::extensions::check_genesis::CheckGenesis<T>
3251 **/3254 **/
3252 FrameSystemExtensionsCheckGenesis: 'Null',3255 FrameSystemExtensionsCheckGenesis: 'Null',
3253 /**3256 /**
3254 * Lookup448: frame_system::extensions::check_nonce::CheckNonce<T>3257 * Lookup450: frame_system::extensions::check_nonce::CheckNonce<T>
3255 **/3258 **/
3256 FrameSystemExtensionsCheckNonce: 'Compact<u32>',3259 FrameSystemExtensionsCheckNonce: 'Compact<u32>',
3257 /**3260 /**
3258 * Lookup449: frame_system::extensions::check_weight::CheckWeight<T>3261 * Lookup451: frame_system::extensions::check_weight::CheckWeight<T>
3259 **/3262 **/
3260 FrameSystemExtensionsCheckWeight: 'Null',3263 FrameSystemExtensionsCheckWeight: 'Null',
3261 /**3264 /**
3262 * Lookup450: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>3265 * Lookup452: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
3263 **/3266 **/
3264 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',3267 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
3265 /**3268 /**
3266 * Lookup451: opal_runtime::Runtime3269 * Lookup453: opal_runtime::Runtime
3267 **/3270 **/
3268 OpalRuntimeRuntime: 'Null',3271 OpalRuntimeRuntime: 'Null',
3269 /**3272 /**
3270 * Lookup452: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>3273 * Lookup454: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
3271 **/3274 **/
3272 PalletEthereumFakeTransactionFinalizer: 'Null'3275 PalletEthereumFakeTransactionFinalizer: 'Null'
3273};3276};
32743277
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
--- 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<u8>;
+    } & 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<H256>;
   }
 
-  /** @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<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
   }
 
-  /** @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<U8aFixed>;
     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<Bytes, Bytes> {}
 
-  /** @name UpDataStructsPropertiesMapPropertyPermission (368) */
+  /** @name UpDataStructsPropertiesMapPropertyPermission (369) */
   interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
 
-  /** @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<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
 
-  /** @name UpDataStructsTokenData (379) */
+  /** @name UpDataStructsTokenData (380) */
   interface UpDataStructsTokenData extends Struct {
     readonly properties: Vec<UpDataStructsProperty>;
     readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
     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<RmrkTraitsNftRoyaltyInfo>;
@@ -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<EthereumLog>;
   }
 
-  /** @name EthereumBlock (422) */
+  /** @name EthereumBlock (424) */
   interface EthereumBlock extends Struct {
     readonly header: EthereumHeader;
     readonly transactions: Vec<EthereumTransactionTransactionV2>;
     readonly ommers: Vec<EthereumHeader>;
   }
 
-  /** @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<u32> {}
 
-  /** @name FrameSystemExtensionsCheckWeight (449) */
+  /** @name FrameSystemExtensionsCheckWeight (451) */
   type FrameSystemExtensionsCheckWeight = Null;
 
-  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (450) */
+  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (452) */
   interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
 
-  /** @name OpalRuntimeRuntime (451) */
+  /** @name OpalRuntimeRuntime (453) */
   type OpalRuntimeRuntime = Null;
 
-  /** @name PalletEthereumFakeTransactionFinalizer (452) */
+  /** @name PalletEthereumFakeTransactionFinalizer (454) */
   type PalletEthereumFakeTransactionFinalizer = Null;
 
 } // declare module