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
--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1061,7 +1061,7 @@
    **/
   PalletAppPromotionEvent: {
     _enum: {
-      StakingRecalculation: '(u128,u128)'
+      StakingRecalculation: '(AccountId32,u128,u128)'
     }
   },
   /**
@@ -2473,19 +2473,22 @@
       sponsor_collection: {
         collectionId: 'u32',
       },
-      stop_sponsorign_collection: {
+      stop_sponsoring_collection: {
         collectionId: 'u32',
       },
       sponsor_conract: {
         contractId: 'H160',
       },
-      stop_sponsorign_contract: {
-        contractId: 'H160'
+      stop_sponsoring_contract: {
+        contractId: 'H160',
+      },
+      payout_stakers: {
+        stakersNumber: 'Option<u8>'
       }
     }
   },
   /**
-   * Lookup305: pallet_evm::pallet::Call<T>
+   * Lookup306: pallet_evm::pallet::Call<T>
    **/
   PalletEvmCall: {
     _enum: {
@@ -2528,7 +2531,7 @@
     }
   },
   /**
-   * Lookup309: pallet_ethereum::pallet::Call<T>
+   * Lookup310: pallet_ethereum::pallet::Call<T>
    **/
   PalletEthereumCall: {
     _enum: {
@@ -2538,7 +2541,7 @@
     }
   },
   /**
-   * Lookup310: ethereum::transaction::TransactionV2
+   * Lookup311: ethereum::transaction::TransactionV2
    **/
   EthereumTransactionTransactionV2: {
     _enum: {
@@ -2548,7 +2551,7 @@
     }
   },
   /**
-   * Lookup311: ethereum::transaction::LegacyTransaction
+   * Lookup312: ethereum::transaction::LegacyTransaction
    **/
   EthereumTransactionLegacyTransaction: {
     nonce: 'U256',
@@ -2560,7 +2563,7 @@
     signature: 'EthereumTransactionTransactionSignature'
   },
   /**
-   * Lookup312: ethereum::transaction::TransactionAction
+   * Lookup313: ethereum::transaction::TransactionAction
    **/
   EthereumTransactionTransactionAction: {
     _enum: {
@@ -2569,7 +2572,7 @@
     }
   },
   /**
-   * Lookup313: ethereum::transaction::TransactionSignature
+   * Lookup314: ethereum::transaction::TransactionSignature
    **/
   EthereumTransactionTransactionSignature: {
     v: 'u64',
@@ -2577,7 +2580,7 @@
     s: 'H256'
   },
   /**
-   * Lookup315: ethereum::transaction::EIP2930Transaction
+   * Lookup316: ethereum::transaction::EIP2930Transaction
    **/
   EthereumTransactionEip2930Transaction: {
     chainId: 'u64',
@@ -2593,14 +2596,14 @@
     s: 'H256'
   },
   /**
-   * Lookup317: ethereum::transaction::AccessListItem
+   * Lookup318: ethereum::transaction::AccessListItem
    **/
   EthereumTransactionAccessListItem: {
     address: 'H160',
     storageKeys: 'Vec<H256>'
   },
   /**
-   * Lookup318: ethereum::transaction::EIP1559Transaction
+   * Lookup319: ethereum::transaction::EIP1559Transaction
    **/
   EthereumTransactionEip1559Transaction: {
     chainId: 'u64',
@@ -2617,7 +2620,7 @@
     s: 'H256'
   },
   /**
-   * Lookup319: pallet_evm_migration::pallet::Call<T>
+   * Lookup320: pallet_evm_migration::pallet::Call<T>
    **/
   PalletEvmMigrationCall: {
     _enum: {
@@ -2635,19 +2638,19 @@
     }
   },
   /**
-   * Lookup322: pallet_sudo::pallet::Error<T>
+   * Lookup323: pallet_sudo::pallet::Error<T>
    **/
   PalletSudoError: {
     _enum: ['RequireSudo']
   },
   /**
-   * Lookup324: orml_vesting::module::Error<T>
+   * Lookup325: orml_vesting::module::Error<T>
    **/
   OrmlVestingModuleError: {
     _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
   },
   /**
-   * Lookup326: cumulus_pallet_xcmp_queue::InboundChannelDetails
+   * Lookup327: cumulus_pallet_xcmp_queue::InboundChannelDetails
    **/
   CumulusPalletXcmpQueueInboundChannelDetails: {
     sender: 'u32',
@@ -2655,19 +2658,19 @@
     messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
   },
   /**
-   * Lookup327: cumulus_pallet_xcmp_queue::InboundState
+   * Lookup328: cumulus_pallet_xcmp_queue::InboundState
    **/
   CumulusPalletXcmpQueueInboundState: {
     _enum: ['Ok', 'Suspended']
   },
   /**
-   * Lookup330: polkadot_parachain::primitives::XcmpMessageFormat
+   * Lookup331: polkadot_parachain::primitives::XcmpMessageFormat
    **/
   PolkadotParachainPrimitivesXcmpMessageFormat: {
     _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
   },
   /**
-   * Lookup333: cumulus_pallet_xcmp_queue::OutboundChannelDetails
+   * Lookup334: cumulus_pallet_xcmp_queue::OutboundChannelDetails
    **/
   CumulusPalletXcmpQueueOutboundChannelDetails: {
     recipient: 'u32',
@@ -2677,13 +2680,13 @@
     lastIndex: 'u16'
   },
   /**
-   * Lookup334: cumulus_pallet_xcmp_queue::OutboundState
+   * Lookup335: cumulus_pallet_xcmp_queue::OutboundState
    **/
   CumulusPalletXcmpQueueOutboundState: {
     _enum: ['Ok', 'Suspended']
   },
   /**
-   * Lookup336: cumulus_pallet_xcmp_queue::QueueConfigData
+   * Lookup337: cumulus_pallet_xcmp_queue::QueueConfigData
    **/
   CumulusPalletXcmpQueueQueueConfigData: {
     suspendThreshold: 'u32',
@@ -2694,29 +2697,29 @@
     xcmpMaxIndividualWeight: 'u64'
   },
   /**
-   * Lookup338: cumulus_pallet_xcmp_queue::pallet::Error<T>
+   * Lookup339: cumulus_pallet_xcmp_queue::pallet::Error<T>
    **/
   CumulusPalletXcmpQueueError: {
     _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
   },
   /**
-   * Lookup339: pallet_xcm::pallet::Error<T>
+   * Lookup340: pallet_xcm::pallet::Error<T>
    **/
   PalletXcmError: {
     _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
   },
   /**
-   * Lookup340: cumulus_pallet_xcm::pallet::Error<T>
+   * Lookup341: cumulus_pallet_xcm::pallet::Error<T>
    **/
   CumulusPalletXcmError: 'Null',
   /**
-   * Lookup341: cumulus_pallet_dmp_queue::ConfigData
+   * Lookup342: cumulus_pallet_dmp_queue::ConfigData
    **/
   CumulusPalletDmpQueueConfigData: {
     maxIndividual: 'u64'
   },
   /**
-   * Lookup342: cumulus_pallet_dmp_queue::PageIndexData
+   * Lookup343: cumulus_pallet_dmp_queue::PageIndexData
    **/
   CumulusPalletDmpQueuePageIndexData: {
     beginUsed: 'u32',
@@ -2724,19 +2727,19 @@
     overweightCount: 'u64'
   },
   /**
-   * Lookup345: cumulus_pallet_dmp_queue::pallet::Error<T>
+   * Lookup346: cumulus_pallet_dmp_queue::pallet::Error<T>
    **/
   CumulusPalletDmpQueueError: {
     _enum: ['Unknown', 'OverLimit']
   },
   /**
-   * Lookup349: pallet_unique::Error<T>
+   * Lookup350: pallet_unique::Error<T>
    **/
   PalletUniqueError: {
     _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']
   },
   /**
-   * Lookup352: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
+   * Lookup353: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
    **/
   PalletUniqueSchedulerScheduledV3: {
     maybeId: 'Option<[u8;16]>',
@@ -2746,7 +2749,7 @@
     origin: 'OpalRuntimeOriginCaller'
   },
   /**
-   * Lookup353: opal_runtime::OriginCaller
+   * Lookup354: opal_runtime::OriginCaller
    **/
   OpalRuntimeOriginCaller: {
     _enum: {
@@ -2855,7 +2858,7 @@
     }
   },
   /**
-   * Lookup354: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
+   * Lookup355: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
    **/
   FrameSupportDispatchRawOrigin: {
     _enum: {
@@ -2865,7 +2868,7 @@
     }
   },
   /**
-   * Lookup355: pallet_xcm::pallet::Origin
+   * Lookup356: pallet_xcm::pallet::Origin
    **/
   PalletXcmOrigin: {
     _enum: {
@@ -2874,7 +2877,7 @@
     }
   },
   /**
-   * Lookup356: cumulus_pallet_xcm::pallet::Origin
+   * Lookup357: cumulus_pallet_xcm::pallet::Origin
    **/
   CumulusPalletXcmOrigin: {
     _enum: {
@@ -2883,7 +2886,7 @@
     }
   },
   /**
-   * Lookup357: pallet_ethereum::RawOrigin
+   * Lookup358: pallet_ethereum::RawOrigin
    **/
   PalletEthereumRawOrigin: {
     _enum: {
@@ -2891,17 +2894,17 @@
     }
   },
   /**
-   * Lookup358: sp_core::Void
+   * Lookup359: sp_core::Void
    **/
   SpCoreVoid: 'Null',
   /**
-   * Lookup359: pallet_unique_scheduler::pallet::Error<T>
+   * Lookup360: pallet_unique_scheduler::pallet::Error<T>
    **/
   PalletUniqueSchedulerError: {
     _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']
   },
   /**
-   * Lookup360: up_data_structs::Collection<sp_core::crypto::AccountId32>
+   * Lookup361: up_data_structs::Collection<sp_core::crypto::AccountId32>
    **/
   UpDataStructsCollection: {
     owner: 'AccountId32',
@@ -2915,7 +2918,7 @@
     externalCollection: 'bool'
   },
   /**
-   * Lookup361: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
+   * Lookup362: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
    **/
   UpDataStructsSponsorshipStateAccountId32: {
     _enum: {
@@ -2925,7 +2928,7 @@
     }
   },
   /**
-   * Lookup362: up_data_structs::Properties
+   * Lookup363: up_data_structs::Properties
    **/
   UpDataStructsProperties: {
     map: 'UpDataStructsPropertiesMapBoundedVec',
@@ -2933,15 +2936,15 @@
     spaceLimit: 'u32'
   },
   /**
-   * Lookup363: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup364: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
   /**
-   * Lookup368: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
+   * Lookup369: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
    **/
   UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
   /**
-   * Lookup375: up_data_structs::CollectionStats
+   * Lookup376: up_data_structs::CollectionStats
    **/
   UpDataStructsCollectionStats: {
     created: 'u32',
@@ -2949,18 +2952,18 @@
     alive: 'u32'
   },
   /**
-   * Lookup376: up_data_structs::TokenChild
+   * Lookup377: up_data_structs::TokenChild
    **/
   UpDataStructsTokenChild: {
     token: 'u32',
     collection: 'u32'
   },
   /**
-   * Lookup377: PhantomType::up_data_structs<T>
+   * Lookup378: PhantomType::up_data_structs<T>
    **/
   PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',
   /**
-   * Lookup379: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup380: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsTokenData: {
     properties: 'Vec<UpDataStructsProperty>',
@@ -2968,7 +2971,7 @@
     pieces: 'u128'
   },
   /**
-   * Lookup381: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+   * Lookup382: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
    **/
   UpDataStructsRpcCollection: {
     owner: 'AccountId32',
@@ -2984,7 +2987,7 @@
     readOnly: 'bool'
   },
   /**
-   * 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>
+   * 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>
    **/
   RmrkTraitsCollectionCollectionInfo: {
     issuer: 'AccountId32',
@@ -2994,7 +2997,7 @@
     nftsCount: 'u32'
   },
   /**
-   * Lookup383: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup384: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsNftNftInfo: {
     owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
@@ -3004,14 +3007,14 @@
     pending: 'bool'
   },
   /**
-   * Lookup385: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
+   * Lookup386: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
    **/
   RmrkTraitsNftRoyaltyInfo: {
     recipient: 'AccountId32',
     amount: 'Permill'
   },
   /**
-   * Lookup386: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup387: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsResourceResourceInfo: {
     id: 'u32',
@@ -3020,14 +3023,14 @@
     pendingRemoval: 'bool'
   },
   /**
-   * Lookup387: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup388: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsPropertyPropertyInfo: {
     key: 'Bytes',
     value: 'Bytes'
   },
   /**
-   * Lookup388: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup389: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsBaseBaseInfo: {
     issuer: 'AccountId32',
@@ -3035,86 +3038,86 @@
     symbol: 'Bytes'
   },
   /**
-   * Lookup389: rmrk_traits::nft::NftChild
+   * Lookup390: rmrk_traits::nft::NftChild
    **/
   RmrkTraitsNftNftChild: {
     collectionId: 'u32',
     nftId: 'u32'
   },
   /**
-   * Lookup391: pallet_common::pallet::Error<T>
+   * Lookup392: pallet_common::pallet::Error<T>
    **/
   PalletCommonError: {
     _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal']
   },
   /**
-   * Lookup393: pallet_fungible::pallet::Error<T>
+   * Lookup394: pallet_fungible::pallet::Error<T>
    **/
   PalletFungibleError: {
     _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup394: pallet_refungible::ItemData
+   * Lookup395: pallet_refungible::ItemData
    **/
   PalletRefungibleItemData: {
     constData: 'Bytes'
   },
   /**
-   * Lookup399: pallet_refungible::pallet::Error<T>
+   * Lookup400: pallet_refungible::pallet::Error<T>
    **/
   PalletRefungibleError: {
     _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup400: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup401: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   PalletNonfungibleItemData: {
     owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
   },
   /**
-   * Lookup402: up_data_structs::PropertyScope
+   * Lookup403: up_data_structs::PropertyScope
    **/
   UpDataStructsPropertyScope: {
     _enum: ['None', 'Rmrk', 'Eth']
   },
   /**
-   * Lookup404: pallet_nonfungible::pallet::Error<T>
+   * Lookup405: pallet_nonfungible::pallet::Error<T>
    **/
   PalletNonfungibleError: {
     _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
   },
   /**
-   * Lookup405: pallet_structure::pallet::Error<T>
+   * Lookup406: pallet_structure::pallet::Error<T>
    **/
   PalletStructureError: {
     _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
   },
   /**
-   * Lookup406: pallet_rmrk_core::pallet::Error<T>
+   * Lookup407: pallet_rmrk_core::pallet::Error<T>
    **/
   PalletRmrkCoreError: {
     _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
   },
   /**
-   * Lookup408: pallet_rmrk_equip::pallet::Error<T>
+   * Lookup409: pallet_rmrk_equip::pallet::Error<T>
    **/
   PalletRmrkEquipError: {
     _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']
   },
   /**
-   * Lookup410: pallet_app_promotion::pallet::Error<T>
+   * Lookup412: pallet_app_promotion::pallet::Error<T>
    **/
   PalletAppPromotionError: {
     _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFounds', 'InvalidArgument']
   },
   /**
-   * Lookup413: pallet_evm::pallet::Error<T>
+   * Lookup415: pallet_evm::pallet::Error<T>
    **/
   PalletEvmError: {
     _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
   },
   /**
-   * Lookup416: fp_rpc::TransactionStatus
+   * Lookup418: fp_rpc::TransactionStatus
    **/
   FpRpcTransactionStatus: {
     transactionHash: 'H256',
@@ -3126,11 +3129,11 @@
     logsBloom: 'EthbloomBloom'
   },
   /**
-   * Lookup418: ethbloom::Bloom
+   * Lookup420: ethbloom::Bloom
    **/
   EthbloomBloom: '[u8;256]',
   /**
-   * Lookup420: ethereum::receipt::ReceiptV3
+   * Lookup422: ethereum::receipt::ReceiptV3
    **/
   EthereumReceiptReceiptV3: {
     _enum: {
@@ -3140,7 +3143,7 @@
     }
   },
   /**
-   * Lookup421: ethereum::receipt::EIP658ReceiptData
+   * Lookup423: ethereum::receipt::EIP658ReceiptData
    **/
   EthereumReceiptEip658ReceiptData: {
     statusCode: 'u8',
@@ -3149,7 +3152,7 @@
     logs: 'Vec<EthereumLog>'
   },
   /**
-   * Lookup422: ethereum::block::Block<ethereum::transaction::TransactionV2>
+   * Lookup424: ethereum::block::Block<ethereum::transaction::TransactionV2>
    **/
   EthereumBlock: {
     header: 'EthereumHeader',
@@ -3157,7 +3160,7 @@
     ommers: 'Vec<EthereumHeader>'
   },
   /**
-   * Lookup423: ethereum::header::Header
+   * Lookup425: ethereum::header::Header
    **/
   EthereumHeader: {
     parentHash: 'H256',
@@ -3177,23 +3180,23 @@
     nonce: 'EthereumTypesHashH64'
   },
   /**
-   * Lookup424: ethereum_types::hash::H64
+   * Lookup426: ethereum_types::hash::H64
    **/
   EthereumTypesHashH64: '[u8;8]',
   /**
-   * Lookup429: pallet_ethereum::pallet::Error<T>
+   * Lookup431: pallet_ethereum::pallet::Error<T>
    **/
   PalletEthereumError: {
     _enum: ['InvalidSignature', 'PreLogExists']
   },
   /**
-   * Lookup430: pallet_evm_coder_substrate::pallet::Error<T>
+   * Lookup432: pallet_evm_coder_substrate::pallet::Error<T>
    **/
   PalletEvmCoderSubstrateError: {
     _enum: ['OutOfGas', 'OutOfFund']
   },
   /**
-   * Lookup431: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup433: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: {
     _enum: {
@@ -3203,25 +3206,25 @@
     }
   },
   /**
-   * Lookup432: pallet_evm_contract_helpers::SponsoringModeT
+   * Lookup434: pallet_evm_contract_helpers::SponsoringModeT
    **/
   PalletEvmContractHelpersSponsoringModeT: {
     _enum: ['Disabled', 'Allowlisted', 'Generous']
   },
   /**
-   * Lookup434: pallet_evm_contract_helpers::pallet::Error<T>
+   * Lookup436: pallet_evm_contract_helpers::pallet::Error<T>
    **/
   PalletEvmContractHelpersError: {
     _enum: ['NoPermission', 'NoPendingSponsor']
   },
   /**
-   * Lookup435: pallet_evm_migration::pallet::Error<T>
+   * Lookup437: pallet_evm_migration::pallet::Error<T>
    **/
   PalletEvmMigrationError: {
     _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
   },
   /**
-   * Lookup437: sp_runtime::MultiSignature
+   * Lookup439: sp_runtime::MultiSignature
    **/
   SpRuntimeMultiSignature: {
     _enum: {
@@ -3231,43 +3234,43 @@
     }
   },
   /**
-   * Lookup438: sp_core::ed25519::Signature
+   * Lookup440: sp_core::ed25519::Signature
    **/
   SpCoreEd25519Signature: '[u8;64]',
   /**
-   * Lookup440: sp_core::sr25519::Signature
+   * Lookup442: sp_core::sr25519::Signature
    **/
   SpCoreSr25519Signature: '[u8;64]',
   /**
-   * Lookup441: sp_core::ecdsa::Signature
+   * Lookup443: sp_core::ecdsa::Signature
    **/
   SpCoreEcdsaSignature: '[u8;65]',
   /**
-   * Lookup444: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+   * Lookup446: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
    **/
   FrameSystemExtensionsCheckSpecVersion: 'Null',
   /**
-   * Lookup445: frame_system::extensions::check_genesis::CheckGenesis<T>
+   * Lookup447: frame_system::extensions::check_genesis::CheckGenesis<T>
    **/
   FrameSystemExtensionsCheckGenesis: 'Null',
   /**
-   * Lookup448: frame_system::extensions::check_nonce::CheckNonce<T>
+   * Lookup450: frame_system::extensions::check_nonce::CheckNonce<T>
    **/
   FrameSystemExtensionsCheckNonce: 'Compact<u32>',
   /**
-   * Lookup449: frame_system::extensions::check_weight::CheckWeight<T>
+   * Lookup451: frame_system::extensions::check_weight::CheckWeight<T>
    **/
   FrameSystemExtensionsCheckWeight: 'Null',
   /**
-   * Lookup450: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+   * Lookup452: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
    **/
   PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
   /**
-   * Lookup451: opal_runtime::Runtime
+   * Lookup453: opal_runtime::Runtime
    **/
   OpalRuntimeRuntime: 'Null',
   /**
-   * Lookup452: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
+   * Lookup454: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
    **/
   PalletEthereumFakeTransactionFinalizer: 'Null'
 };
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
1201 /** @name PalletAppPromotionEvent (103) */1201 /** @name PalletAppPromotionEvent (103) */
1202 interface PalletAppPromotionEvent extends Enum {1202 interface PalletAppPromotionEvent extends Enum {
1203 readonly isStakingRecalculation: boolean;1203 readonly isStakingRecalculation: boolean;
1204 readonly asStakingRecalculation: ITuple<[u128, u128]>;1204 readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>;
1205 readonly type: 'StakingRecalculation';1205 readonly type: 'StakingRecalculation';
1206 }1206 }
12071207
2682 readonly asSponsorCollection: {2682 readonly asSponsorCollection: {
2683 readonly collectionId: u32;2683 readonly collectionId: u32;
2684 } & Struct;2684 } & Struct;
2685 readonly isStopSponsorignCollection: boolean;2685 readonly isStopSponsoringCollection: boolean;
2686 readonly asStopSponsorignCollection: {2686 readonly asStopSponsoringCollection: {
2687 readonly collectionId: u32;2687 readonly collectionId: u32;
2688 } & Struct;2688 } & Struct;
2689 readonly isSponsorConract: boolean;2689 readonly isSponsorConract: boolean;
2690 readonly asSponsorConract: {2690 readonly asSponsorConract: {
2691 readonly contractId: H160;2691 readonly contractId: H160;
2692 } & Struct;2692 } & Struct;
2693 readonly isStopSponsorignContract: boolean;2693 readonly isStopSponsoringContract: boolean;
2694 readonly asStopSponsorignContract: {2694 readonly asStopSponsoringContract: {
2695 readonly contractId: H160;2695 readonly contractId: H160;
2696 } & Struct;2696 } & Struct;
2697 readonly isPayoutStakers: boolean;
2698 readonly asPayoutStakers: {
2699 readonly stakersNumber: Option<u8>;
2700 } & Struct;
2697 readonly type: 'SetAdminAddress' | 'StartAppPromotion' | 'StopAppPromotion' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsorignCollection' | 'SponsorConract' | 'StopSponsorignContract';2701 readonly type: 'SetAdminAddress' | 'StartAppPromotion' | 'StopAppPromotion' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorConract' | 'StopSponsoringContract' | 'PayoutStakers';
2698 }2702 }
26992703
2700 /** @name PalletEvmCall (305) */2704 /** @name PalletEvmCall (306) */
2701 interface PalletEvmCall extends Enum {2705 interface PalletEvmCall extends Enum {
2702 readonly isWithdraw: boolean;2706 readonly isWithdraw: boolean;
2703 readonly asWithdraw: {2707 readonly asWithdraw: {
2742 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';2746 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
2743 }2747 }
27442748
2745 /** @name PalletEthereumCall (309) */2749 /** @name PalletEthereumCall (310) */
2746 interface PalletEthereumCall extends Enum {2750 interface PalletEthereumCall extends Enum {
2747 readonly isTransact: boolean;2751 readonly isTransact: boolean;
2748 readonly asTransact: {2752 readonly asTransact: {
2751 readonly type: 'Transact';2755 readonly type: 'Transact';
2752 }2756 }
27532757
2754 /** @name EthereumTransactionTransactionV2 (310) */2758 /** @name EthereumTransactionTransactionV2 (311) */
2755 interface EthereumTransactionTransactionV2 extends Enum {2759 interface EthereumTransactionTransactionV2 extends Enum {
2756 readonly isLegacy: boolean;2760 readonly isLegacy: boolean;
2757 readonly asLegacy: EthereumTransactionLegacyTransaction;2761 readonly asLegacy: EthereumTransactionLegacyTransaction;
2762 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';2766 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
2763 }2767 }
27642768
2765 /** @name EthereumTransactionLegacyTransaction (311) */2769 /** @name EthereumTransactionLegacyTransaction (312) */
2766 interface EthereumTransactionLegacyTransaction extends Struct {2770 interface EthereumTransactionLegacyTransaction extends Struct {
2767 readonly nonce: U256;2771 readonly nonce: U256;
2768 readonly gasPrice: U256;2772 readonly gasPrice: U256;
2773 readonly signature: EthereumTransactionTransactionSignature;2777 readonly signature: EthereumTransactionTransactionSignature;
2774 }2778 }
27752779
2776 /** @name EthereumTransactionTransactionAction (312) */2780 /** @name EthereumTransactionTransactionAction (313) */
2777 interface EthereumTransactionTransactionAction extends Enum {2781 interface EthereumTransactionTransactionAction extends Enum {
2778 readonly isCall: boolean;2782 readonly isCall: boolean;
2779 readonly asCall: H160;2783 readonly asCall: H160;
2780 readonly isCreate: boolean;2784 readonly isCreate: boolean;
2781 readonly type: 'Call' | 'Create';2785 readonly type: 'Call' | 'Create';
2782 }2786 }
27832787
2784 /** @name EthereumTransactionTransactionSignature (313) */2788 /** @name EthereumTransactionTransactionSignature (314) */
2785 interface EthereumTransactionTransactionSignature extends Struct {2789 interface EthereumTransactionTransactionSignature extends Struct {
2786 readonly v: u64;2790 readonly v: u64;
2787 readonly r: H256;2791 readonly r: H256;
2788 readonly s: H256;2792 readonly s: H256;
2789 }2793 }
27902794
2791 /** @name EthereumTransactionEip2930Transaction (315) */2795 /** @name EthereumTransactionEip2930Transaction (316) */
2792 interface EthereumTransactionEip2930Transaction extends Struct {2796 interface EthereumTransactionEip2930Transaction extends Struct {
2793 readonly chainId: u64;2797 readonly chainId: u64;
2794 readonly nonce: U256;2798 readonly nonce: U256;
2803 readonly s: H256;2807 readonly s: H256;
2804 }2808 }
28052809
2806 /** @name EthereumTransactionAccessListItem (317) */2810 /** @name EthereumTransactionAccessListItem (318) */
2807 interface EthereumTransactionAccessListItem extends Struct {2811 interface EthereumTransactionAccessListItem extends Struct {
2808 readonly address: H160;2812 readonly address: H160;
2809 readonly storageKeys: Vec<H256>;2813 readonly storageKeys: Vec<H256>;
2810 }2814 }
28112815
2812 /** @name EthereumTransactionEip1559Transaction (318) */2816 /** @name EthereumTransactionEip1559Transaction (319) */
2813 interface EthereumTransactionEip1559Transaction extends Struct {2817 interface EthereumTransactionEip1559Transaction extends Struct {
2814 readonly chainId: u64;2818 readonly chainId: u64;
2815 readonly nonce: U256;2819 readonly nonce: U256;
2825 readonly s: H256;2829 readonly s: H256;
2826 }2830 }
28272831
2828 /** @name PalletEvmMigrationCall (319) */2832 /** @name PalletEvmMigrationCall (320) */
2829 interface PalletEvmMigrationCall extends Enum {2833 interface PalletEvmMigrationCall extends Enum {
2830 readonly isBegin: boolean;2834 readonly isBegin: boolean;
2831 readonly asBegin: {2835 readonly asBegin: {
2844 readonly type: 'Begin' | 'SetData' | 'Finish';2848 readonly type: 'Begin' | 'SetData' | 'Finish';
2845 }2849 }
28462850
2847 /** @name PalletSudoError (322) */2851 /** @name PalletSudoError (323) */
2848 interface PalletSudoError extends Enum {2852 interface PalletSudoError extends Enum {
2849 readonly isRequireSudo: boolean;2853 readonly isRequireSudo: boolean;
2850 readonly type: 'RequireSudo';2854 readonly type: 'RequireSudo';
2851 }2855 }
28522856
2853 /** @name OrmlVestingModuleError (324) */2857 /** @name OrmlVestingModuleError (325) */
2854 interface OrmlVestingModuleError extends Enum {2858 interface OrmlVestingModuleError extends Enum {
2855 readonly isZeroVestingPeriod: boolean;2859 readonly isZeroVestingPeriod: boolean;
2856 readonly isZeroVestingPeriodCount: boolean;2860 readonly isZeroVestingPeriodCount: boolean;
2861 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2865 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
2862 }2866 }
28632867
2864 /** @name CumulusPalletXcmpQueueInboundChannelDetails (326) */2868 /** @name CumulusPalletXcmpQueueInboundChannelDetails (327) */
2865 interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2869 interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
2866 readonly sender: u32;2870 readonly sender: u32;
2867 readonly state: CumulusPalletXcmpQueueInboundState;2871 readonly state: CumulusPalletXcmpQueueInboundState;
2868 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2872 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
2869 }2873 }
28702874
2871 /** @name CumulusPalletXcmpQueueInboundState (327) */2875 /** @name CumulusPalletXcmpQueueInboundState (328) */
2872 interface CumulusPalletXcmpQueueInboundState extends Enum {2876 interface CumulusPalletXcmpQueueInboundState extends Enum {
2873 readonly isOk: boolean;2877 readonly isOk: boolean;
2874 readonly isSuspended: boolean;2878 readonly isSuspended: boolean;
2875 readonly type: 'Ok' | 'Suspended';2879 readonly type: 'Ok' | 'Suspended';
2876 }2880 }
28772881
2878 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (330) */2882 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (331) */
2879 interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2883 interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
2880 readonly isConcatenatedVersionedXcm: boolean;2884 readonly isConcatenatedVersionedXcm: boolean;
2881 readonly isConcatenatedEncodedBlob: boolean;2885 readonly isConcatenatedEncodedBlob: boolean;
2882 readonly isSignals: boolean;2886 readonly isSignals: boolean;
2883 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2887 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
2884 }2888 }
28852889
2886 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (333) */2890 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (334) */
2887 interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2891 interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
2888 readonly recipient: u32;2892 readonly recipient: u32;
2889 readonly state: CumulusPalletXcmpQueueOutboundState;2893 readonly state: CumulusPalletXcmpQueueOutboundState;
2892 readonly lastIndex: u16;2896 readonly lastIndex: u16;
2893 }2897 }
28942898
2895 /** @name CumulusPalletXcmpQueueOutboundState (334) */2899 /** @name CumulusPalletXcmpQueueOutboundState (335) */
2896 interface CumulusPalletXcmpQueueOutboundState extends Enum {2900 interface CumulusPalletXcmpQueueOutboundState extends Enum {
2897 readonly isOk: boolean;2901 readonly isOk: boolean;
2898 readonly isSuspended: boolean;2902 readonly isSuspended: boolean;
2899 readonly type: 'Ok' | 'Suspended';2903 readonly type: 'Ok' | 'Suspended';
2900 }2904 }
29012905
2902 /** @name CumulusPalletXcmpQueueQueueConfigData (336) */2906 /** @name CumulusPalletXcmpQueueQueueConfigData (337) */
2903 interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2907 interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
2904 readonly suspendThreshold: u32;2908 readonly suspendThreshold: u32;
2905 readonly dropThreshold: u32;2909 readonly dropThreshold: u32;
2909 readonly xcmpMaxIndividualWeight: u64;2913 readonly xcmpMaxIndividualWeight: u64;
2910 }2914 }
29112915
2912 /** @name CumulusPalletXcmpQueueError (338) */2916 /** @name CumulusPalletXcmpQueueError (339) */
2913 interface CumulusPalletXcmpQueueError extends Enum {2917 interface CumulusPalletXcmpQueueError extends Enum {
2914 readonly isFailedToSend: boolean;2918 readonly isFailedToSend: boolean;
2915 readonly isBadXcmOrigin: boolean;2919 readonly isBadXcmOrigin: boolean;
2919 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2923 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
2920 }2924 }
29212925
2922 /** @name PalletXcmError (339) */2926 /** @name PalletXcmError (340) */
2923 interface PalletXcmError extends Enum {2927 interface PalletXcmError extends Enum {
2924 readonly isUnreachable: boolean;2928 readonly isUnreachable: boolean;
2925 readonly isSendFailure: boolean;2929 readonly isSendFailure: boolean;
2937 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2941 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
2938 }2942 }
29392943
2940 /** @name CumulusPalletXcmError (340) */2944 /** @name CumulusPalletXcmError (341) */
2941 type CumulusPalletXcmError = Null;2945 type CumulusPalletXcmError = Null;
29422946
2943 /** @name CumulusPalletDmpQueueConfigData (341) */2947 /** @name CumulusPalletDmpQueueConfigData (342) */
2944 interface CumulusPalletDmpQueueConfigData extends Struct {2948 interface CumulusPalletDmpQueueConfigData extends Struct {
2945 readonly maxIndividual: u64;2949 readonly maxIndividual: u64;
2946 }2950 }
29472951
2948 /** @name CumulusPalletDmpQueuePageIndexData (342) */2952 /** @name CumulusPalletDmpQueuePageIndexData (343) */
2949 interface CumulusPalletDmpQueuePageIndexData extends Struct {2953 interface CumulusPalletDmpQueuePageIndexData extends Struct {
2950 readonly beginUsed: u32;2954 readonly beginUsed: u32;
2951 readonly endUsed: u32;2955 readonly endUsed: u32;
2952 readonly overweightCount: u64;2956 readonly overweightCount: u64;
2953 }2957 }
29542958
2955 /** @name CumulusPalletDmpQueueError (345) */2959 /** @name CumulusPalletDmpQueueError (346) */
2956 interface CumulusPalletDmpQueueError extends Enum {2960 interface CumulusPalletDmpQueueError extends Enum {
2957 readonly isUnknown: boolean;2961 readonly isUnknown: boolean;
2958 readonly isOverLimit: boolean;2962 readonly isOverLimit: boolean;
2959 readonly type: 'Unknown' | 'OverLimit';2963 readonly type: 'Unknown' | 'OverLimit';
2960 }2964 }
29612965
2962 /** @name PalletUniqueError (349) */2966 /** @name PalletUniqueError (350) */
2963 interface PalletUniqueError extends Enum {2967 interface PalletUniqueError extends Enum {
2964 readonly isCollectionDecimalPointLimitExceeded: boolean;2968 readonly isCollectionDecimalPointLimitExceeded: boolean;
2965 readonly isConfirmUnsetSponsorFail: boolean;2969 readonly isConfirmUnsetSponsorFail: boolean;
2968 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';2972 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';
2969 }2973 }
29702974
2971 /** @name PalletUniqueSchedulerScheduledV3 (352) */2975 /** @name PalletUniqueSchedulerScheduledV3 (353) */
2972 interface PalletUniqueSchedulerScheduledV3 extends Struct {2976 interface PalletUniqueSchedulerScheduledV3 extends Struct {
2973 readonly maybeId: Option<U8aFixed>;2977 readonly maybeId: Option<U8aFixed>;
2974 readonly priority: u8;2978 readonly priority: u8;
2977 readonly origin: OpalRuntimeOriginCaller;2981 readonly origin: OpalRuntimeOriginCaller;
2978 }2982 }
29792983
2980 /** @name OpalRuntimeOriginCaller (353) */2984 /** @name OpalRuntimeOriginCaller (354) */
2981 interface OpalRuntimeOriginCaller extends Enum {2985 interface OpalRuntimeOriginCaller extends Enum {
2982 readonly isSystem: boolean;2986 readonly isSystem: boolean;
2983 readonly asSystem: FrameSupportDispatchRawOrigin;2987 readonly asSystem: FrameSupportDispatchRawOrigin;
2991 readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';2995 readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';
2992 }2996 }
29932997
2994 /** @name FrameSupportDispatchRawOrigin (354) */2998 /** @name FrameSupportDispatchRawOrigin (355) */
2995 interface FrameSupportDispatchRawOrigin extends Enum {2999 interface FrameSupportDispatchRawOrigin extends Enum {
2996 readonly isRoot: boolean;3000 readonly isRoot: boolean;
2997 readonly isSigned: boolean;3001 readonly isSigned: boolean;
3000 readonly type: 'Root' | 'Signed' | 'None';3004 readonly type: 'Root' | 'Signed' | 'None';
3001 }3005 }
30023006
3003 /** @name PalletXcmOrigin (355) */3007 /** @name PalletXcmOrigin (356) */
3004 interface PalletXcmOrigin extends Enum {3008 interface PalletXcmOrigin extends Enum {
3005 readonly isXcm: boolean;3009 readonly isXcm: boolean;
3006 readonly asXcm: XcmV1MultiLocation;3010 readonly asXcm: XcmV1MultiLocation;
3009 readonly type: 'Xcm' | 'Response';3013 readonly type: 'Xcm' | 'Response';
3010 }3014 }
30113015
3012 /** @name CumulusPalletXcmOrigin (356) */3016 /** @name CumulusPalletXcmOrigin (357) */
3013 interface CumulusPalletXcmOrigin extends Enum {3017 interface CumulusPalletXcmOrigin extends Enum {
3014 readonly isRelay: boolean;3018 readonly isRelay: boolean;
3015 readonly isSiblingParachain: boolean;3019 readonly isSiblingParachain: boolean;
3016 readonly asSiblingParachain: u32;3020 readonly asSiblingParachain: u32;
3017 readonly type: 'Relay' | 'SiblingParachain';3021 readonly type: 'Relay' | 'SiblingParachain';
3018 }3022 }
30193023
3020 /** @name PalletEthereumRawOrigin (357) */3024 /** @name PalletEthereumRawOrigin (358) */
3021 interface PalletEthereumRawOrigin extends Enum {3025 interface PalletEthereumRawOrigin extends Enum {
3022 readonly isEthereumTransaction: boolean;3026 readonly isEthereumTransaction: boolean;
3023 readonly asEthereumTransaction: H160;3027 readonly asEthereumTransaction: H160;
3024 readonly type: 'EthereumTransaction';3028 readonly type: 'EthereumTransaction';
3025 }3029 }
30263030
3027 /** @name SpCoreVoid (358) */3031 /** @name SpCoreVoid (359) */
3028 type SpCoreVoid = Null;3032 type SpCoreVoid = Null;
30293033
3030 /** @name PalletUniqueSchedulerError (359) */3034 /** @name PalletUniqueSchedulerError (360) */
3031 interface PalletUniqueSchedulerError extends Enum {3035 interface PalletUniqueSchedulerError extends Enum {
3032 readonly isFailedToSchedule: boolean;3036 readonly isFailedToSchedule: boolean;
3033 readonly isNotFound: boolean;3037 readonly isNotFound: boolean;
3036 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';3040 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';
3037 }3041 }
30383042
3039 /** @name UpDataStructsCollection (360) */3043 /** @name UpDataStructsCollection (361) */
3040 interface UpDataStructsCollection extends Struct {3044 interface UpDataStructsCollection extends Struct {
3041 readonly owner: AccountId32;3045 readonly owner: AccountId32;
3042 readonly mode: UpDataStructsCollectionMode;3046 readonly mode: UpDataStructsCollectionMode;
3049 readonly externalCollection: bool;3053 readonly externalCollection: bool;
3050 }3054 }
30513055
3052 /** @name UpDataStructsSponsorshipStateAccountId32 (361) */3056 /** @name UpDataStructsSponsorshipStateAccountId32 (362) */
3053 interface UpDataStructsSponsorshipStateAccountId32 extends Enum {3057 interface UpDataStructsSponsorshipStateAccountId32 extends Enum {
3054 readonly isDisabled: boolean;3058 readonly isDisabled: boolean;
3055 readonly isUnconfirmed: boolean;3059 readonly isUnconfirmed: boolean;
3059 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';3063 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
3060 }3064 }
30613065
3062 /** @name UpDataStructsProperties (362) */3066 /** @name UpDataStructsProperties (363) */
3063 interface UpDataStructsProperties extends Struct {3067 interface UpDataStructsProperties extends Struct {
3064 readonly map: UpDataStructsPropertiesMapBoundedVec;3068 readonly map: UpDataStructsPropertiesMapBoundedVec;
3065 readonly consumedSpace: u32;3069 readonly consumedSpace: u32;
3066 readonly spaceLimit: u32;3070 readonly spaceLimit: u32;
3067 }3071 }
30683072
3069 /** @name UpDataStructsPropertiesMapBoundedVec (363) */3073 /** @name UpDataStructsPropertiesMapBoundedVec (364) */
3070 interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}3074 interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
30713075
3072 /** @name UpDataStructsPropertiesMapPropertyPermission (368) */3076 /** @name UpDataStructsPropertiesMapPropertyPermission (369) */
3073 interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}3077 interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
30743078
3075 /** @name UpDataStructsCollectionStats (375) */3079 /** @name UpDataStructsCollectionStats (376) */
3076 interface UpDataStructsCollectionStats extends Struct {3080 interface UpDataStructsCollectionStats extends Struct {
3077 readonly created: u32;3081 readonly created: u32;
3078 readonly destroyed: u32;3082 readonly destroyed: u32;
3079 readonly alive: u32;3083 readonly alive: u32;
3080 }3084 }
30813085
3082 /** @name UpDataStructsTokenChild (376) */3086 /** @name UpDataStructsTokenChild (377) */
3083 interface UpDataStructsTokenChild extends Struct {3087 interface UpDataStructsTokenChild extends Struct {
3084 readonly token: u32;3088 readonly token: u32;
3085 readonly collection: u32;3089 readonly collection: u32;
3086 }3090 }
30873091
3088 /** @name PhantomTypeUpDataStructs (377) */3092 /** @name PhantomTypeUpDataStructs (378) */
3089 interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}3093 interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
30903094
3091 /** @name UpDataStructsTokenData (379) */3095 /** @name UpDataStructsTokenData (380) */
3092 interface UpDataStructsTokenData extends Struct {3096 interface UpDataStructsTokenData extends Struct {
3093 readonly properties: Vec<UpDataStructsProperty>;3097 readonly properties: Vec<UpDataStructsProperty>;
3094 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;3098 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
3095 readonly pieces: u128;3099 readonly pieces: u128;
3096 }3100 }
30973101
3098 /** @name UpDataStructsRpcCollection (381) */3102 /** @name UpDataStructsRpcCollection (382) */
3099 interface UpDataStructsRpcCollection extends Struct {3103 interface UpDataStructsRpcCollection extends Struct {
3100 readonly owner: AccountId32;3104 readonly owner: AccountId32;
3101 readonly mode: UpDataStructsCollectionMode;3105 readonly mode: UpDataStructsCollectionMode;
3110 readonly readOnly: bool;3114 readonly readOnly: bool;
3111 }3115 }
31123116
3113 /** @name RmrkTraitsCollectionCollectionInfo (382) */3117 /** @name RmrkTraitsCollectionCollectionInfo (383) */
3114 interface RmrkTraitsCollectionCollectionInfo extends Struct {3118 interface RmrkTraitsCollectionCollectionInfo extends Struct {
3115 readonly issuer: AccountId32;3119 readonly issuer: AccountId32;
3116 readonly metadata: Bytes;3120 readonly metadata: Bytes;
3119 readonly nftsCount: u32;3123 readonly nftsCount: u32;
3120 }3124 }
31213125
3122 /** @name RmrkTraitsNftNftInfo (383) */3126 /** @name RmrkTraitsNftNftInfo (384) */
3123 interface RmrkTraitsNftNftInfo extends Struct {3127 interface RmrkTraitsNftNftInfo extends Struct {
3124 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;3128 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;
3125 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;3129 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;
3128 readonly pending: bool;3132 readonly pending: bool;
3129 }3133 }
31303134
3131 /** @name RmrkTraitsNftRoyaltyInfo (385) */3135 /** @name RmrkTraitsNftRoyaltyInfo (386) */
3132 interface RmrkTraitsNftRoyaltyInfo extends Struct {3136 interface RmrkTraitsNftRoyaltyInfo extends Struct {
3133 readonly recipient: AccountId32;3137 readonly recipient: AccountId32;
3134 readonly amount: Permill;3138 readonly amount: Permill;
3135 }3139 }
31363140
3137 /** @name RmrkTraitsResourceResourceInfo (386) */3141 /** @name RmrkTraitsResourceResourceInfo (387) */
3138 interface RmrkTraitsResourceResourceInfo extends Struct {3142 interface RmrkTraitsResourceResourceInfo extends Struct {
3139 readonly id: u32;3143 readonly id: u32;
3140 readonly resource: RmrkTraitsResourceResourceTypes;3144 readonly resource: RmrkTraitsResourceResourceTypes;
3141 readonly pending: bool;3145 readonly pending: bool;
3142 readonly pendingRemoval: bool;3146 readonly pendingRemoval: bool;
3143 }3147 }
31443148
3145 /** @name RmrkTraitsPropertyPropertyInfo (387) */3149 /** @name RmrkTraitsPropertyPropertyInfo (388) */
3146 interface RmrkTraitsPropertyPropertyInfo extends Struct {3150 interface RmrkTraitsPropertyPropertyInfo extends Struct {
3147 readonly key: Bytes;3151 readonly key: Bytes;
3148 readonly value: Bytes;3152 readonly value: Bytes;
3149 }3153 }
31503154
3151 /** @name RmrkTraitsBaseBaseInfo (388) */3155 /** @name RmrkTraitsBaseBaseInfo (389) */
3152 interface RmrkTraitsBaseBaseInfo extends Struct {3156 interface RmrkTraitsBaseBaseInfo extends Struct {
3153 readonly issuer: AccountId32;3157 readonly issuer: AccountId32;
3154 readonly baseType: Bytes;3158 readonly baseType: Bytes;
3155 readonly symbol: Bytes;3159 readonly symbol: Bytes;
3156 }3160 }
31573161
3158 /** @name RmrkTraitsNftNftChild (389) */3162 /** @name RmrkTraitsNftNftChild (390) */
3159 interface RmrkTraitsNftNftChild extends Struct {3163 interface RmrkTraitsNftNftChild extends Struct {
3160 readonly collectionId: u32;3164 readonly collectionId: u32;
3161 readonly nftId: u32;3165 readonly nftId: u32;
3162 }3166 }
31633167
3164 /** @name PalletCommonError (391) */3168 /** @name PalletCommonError (392) */
3165 interface PalletCommonError extends Enum {3169 interface PalletCommonError extends Enum {
3166 readonly isCollectionNotFound: boolean;3170 readonly isCollectionNotFound: boolean;
3167 readonly isMustBeTokenOwner: boolean;3171 readonly isMustBeTokenOwner: boolean;
3200 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';3204 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';
3201 }3205 }
32023206
3203 /** @name PalletFungibleError (393) */3207 /** @name PalletFungibleError (394) */
3204 interface PalletFungibleError extends Enum {3208 interface PalletFungibleError extends Enum {
3205 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;3209 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
3206 readonly isFungibleItemsHaveNoId: boolean;3210 readonly isFungibleItemsHaveNoId: boolean;
3210 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3214 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
3211 }3215 }
32123216
3213 /** @name PalletRefungibleItemData (394) */3217 /** @name PalletRefungibleItemData (395) */
3214 interface PalletRefungibleItemData extends Struct {3218 interface PalletRefungibleItemData extends Struct {
3215 readonly constData: Bytes;3219 readonly constData: Bytes;
3216 }3220 }
32173221
3218 /** @name PalletRefungibleError (399) */3222 /** @name PalletRefungibleError (400) */
3219 interface PalletRefungibleError extends Enum {3223 interface PalletRefungibleError extends Enum {
3220 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;3224 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
3221 readonly isWrongRefungiblePieces: boolean;3225 readonly isWrongRefungiblePieces: boolean;
3225 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3229 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
3226 }3230 }
32273231
3228 /** @name PalletNonfungibleItemData (400) */3232 /** @name PalletNonfungibleItemData (401) */
3229 interface PalletNonfungibleItemData extends Struct {3233 interface PalletNonfungibleItemData extends Struct {
3230 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;3234 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
3231 }3235 }
32323236
3233 /** @name UpDataStructsPropertyScope (402) */3237 /** @name UpDataStructsPropertyScope (403) */
3234 interface UpDataStructsPropertyScope extends Enum {3238 interface UpDataStructsPropertyScope extends Enum {
3235 readonly isNone: boolean;3239 readonly isNone: boolean;
3236 readonly isRmrk: boolean;3240 readonly isRmrk: boolean;
3237 readonly isEth: boolean;3241 readonly isEth: boolean;
3238 readonly type: 'None' | 'Rmrk' | 'Eth';3242 readonly type: 'None' | 'Rmrk' | 'Eth';
3239 }3243 }
32403244
3241 /** @name PalletNonfungibleError (404) */3245 /** @name PalletNonfungibleError (405) */
3242 interface PalletNonfungibleError extends Enum {3246 interface PalletNonfungibleError extends Enum {
3243 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;3247 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
3244 readonly isNonfungibleItemsHaveNoAmount: boolean;3248 readonly isNonfungibleItemsHaveNoAmount: boolean;
3245 readonly isCantBurnNftWithChildren: boolean;3249 readonly isCantBurnNftWithChildren: boolean;
3246 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';3250 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';
3247 }3251 }
32483252
3249 /** @name PalletStructureError (405) */3253 /** @name PalletStructureError (406) */
3250 interface PalletStructureError extends Enum {3254 interface PalletStructureError extends Enum {
3251 readonly isOuroborosDetected: boolean;3255 readonly isOuroborosDetected: boolean;
3252 readonly isDepthLimit: boolean;3256 readonly isDepthLimit: boolean;
3255 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';3259 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';
3256 }3260 }
32573261
3258 /** @name PalletRmrkCoreError (406) */3262 /** @name PalletRmrkCoreError (407) */
3259 interface PalletRmrkCoreError extends Enum {3263 interface PalletRmrkCoreError extends Enum {
3260 readonly isCorruptedCollectionType: boolean;3264 readonly isCorruptedCollectionType: boolean;
3261 readonly isRmrkPropertyKeyIsTooLong: boolean;3265 readonly isRmrkPropertyKeyIsTooLong: boolean;
3279 readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';3283 readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';
3280 }3284 }
32813285
3282 /** @name PalletRmrkEquipError (408) */3286 /** @name PalletRmrkEquipError (409) */
3283 interface PalletRmrkEquipError extends Enum {3287 interface PalletRmrkEquipError extends Enum {
3284 readonly isPermissionError: boolean;3288 readonly isPermissionError: boolean;
3285 readonly isNoAvailableBaseId: boolean;3289 readonly isNoAvailableBaseId: boolean;
3291 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';3295 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';
3292 }3296 }
32933297
3294 /** @name PalletAppPromotionError (410) */3298 /** @name PalletAppPromotionError (412) */
3295 interface PalletAppPromotionError extends Enum {3299 interface PalletAppPromotionError extends Enum {
3296 readonly isAdminNotSet: boolean;3300 readonly isAdminNotSet: boolean;
3297 readonly isNoPermission: boolean;3301 readonly isNoPermission: boolean;
3300 readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFounds' | 'InvalidArgument';3304 readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFounds' | 'InvalidArgument';
3301 }3305 }
33023306
3303 /** @name PalletEvmError (413) */3307 /** @name PalletEvmError (415) */
3304 interface PalletEvmError extends Enum {3308 interface PalletEvmError extends Enum {
3305 readonly isBalanceLow: boolean;3309 readonly isBalanceLow: boolean;
3306 readonly isFeeOverflow: boolean;3310 readonly isFeeOverflow: boolean;
3311 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';3315 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
3312 }3316 }
33133317
3314 /** @name FpRpcTransactionStatus (416) */3318 /** @name FpRpcTransactionStatus (418) */
3315 interface FpRpcTransactionStatus extends Struct {3319 interface FpRpcTransactionStatus extends Struct {
3316 readonly transactionHash: H256;3320 readonly transactionHash: H256;
3317 readonly transactionIndex: u32;3321 readonly transactionIndex: u32;
3322 readonly logsBloom: EthbloomBloom;3326 readonly logsBloom: EthbloomBloom;
3323 }3327 }
33243328
3325 /** @name EthbloomBloom (418) */3329 /** @name EthbloomBloom (420) */
3326 interface EthbloomBloom extends U8aFixed {}3330 interface EthbloomBloom extends U8aFixed {}
33273331
3328 /** @name EthereumReceiptReceiptV3 (420) */3332 /** @name EthereumReceiptReceiptV3 (422) */
3329 interface EthereumReceiptReceiptV3 extends Enum {3333 interface EthereumReceiptReceiptV3 extends Enum {
3330 readonly isLegacy: boolean;3334 readonly isLegacy: boolean;
3331 readonly asLegacy: EthereumReceiptEip658ReceiptData;3335 readonly asLegacy: EthereumReceiptEip658ReceiptData;
3336 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';3340 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
3337 }3341 }
33383342
3339 /** @name EthereumReceiptEip658ReceiptData (421) */3343 /** @name EthereumReceiptEip658ReceiptData (423) */
3340 interface EthereumReceiptEip658ReceiptData extends Struct {3344 interface EthereumReceiptEip658ReceiptData extends Struct {
3341 readonly statusCode: u8;3345 readonly statusCode: u8;
3342 readonly usedGas: U256;3346 readonly usedGas: U256;
3343 readonly logsBloom: EthbloomBloom;3347 readonly logsBloom: EthbloomBloom;
3344 readonly logs: Vec<EthereumLog>;3348 readonly logs: Vec<EthereumLog>;
3345 }3349 }
33463350
3347 /** @name EthereumBlock (422) */3351 /** @name EthereumBlock (424) */
3348 interface EthereumBlock extends Struct {3352 interface EthereumBlock extends Struct {
3349 readonly header: EthereumHeader;3353 readonly header: EthereumHeader;
3350 readonly transactions: Vec<EthereumTransactionTransactionV2>;3354 readonly transactions: Vec<EthereumTransactionTransactionV2>;
3351 readonly ommers: Vec<EthereumHeader>;3355 readonly ommers: Vec<EthereumHeader>;
3352 }3356 }
33533357
3354 /** @name EthereumHeader (423) */3358 /** @name EthereumHeader (425) */
3355 interface EthereumHeader extends Struct {3359 interface EthereumHeader extends Struct {
3356 readonly parentHash: H256;3360 readonly parentHash: H256;
3357 readonly ommersHash: H256;3361 readonly ommersHash: H256;
3370 readonly nonce: EthereumTypesHashH64;3374 readonly nonce: EthereumTypesHashH64;
3371 }3375 }
33723376
3373 /** @name EthereumTypesHashH64 (424) */3377 /** @name EthereumTypesHashH64 (426) */
3374 interface EthereumTypesHashH64 extends U8aFixed {}3378 interface EthereumTypesHashH64 extends U8aFixed {}
33753379
3376 /** @name PalletEthereumError (429) */3380 /** @name PalletEthereumError (431) */
3377 interface PalletEthereumError extends Enum {3381 interface PalletEthereumError extends Enum {
3378 readonly isInvalidSignature: boolean;3382 readonly isInvalidSignature: boolean;
3379 readonly isPreLogExists: boolean;3383 readonly isPreLogExists: boolean;
3380 readonly type: 'InvalidSignature' | 'PreLogExists';3384 readonly type: 'InvalidSignature' | 'PreLogExists';
3381 }3385 }
33823386
3383 /** @name PalletEvmCoderSubstrateError (430) */3387 /** @name PalletEvmCoderSubstrateError (432) */
3384 interface PalletEvmCoderSubstrateError extends Enum {3388 interface PalletEvmCoderSubstrateError extends Enum {
3385 readonly isOutOfGas: boolean;3389 readonly isOutOfGas: boolean;
3386 readonly isOutOfFund: boolean;3390 readonly isOutOfFund: boolean;
3387 readonly type: 'OutOfGas' | 'OutOfFund';3391 readonly type: 'OutOfGas' | 'OutOfFund';
3388 }3392 }
33893393
3390 /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (431) */3394 /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (433) */
3391 interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {3395 interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {
3392 readonly isDisabled: boolean;3396 readonly isDisabled: boolean;
3393 readonly isUnconfirmed: boolean;3397 readonly isUnconfirmed: boolean;
3397 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';3401 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
3398 }3402 }
33993403
3400 /** @name PalletEvmContractHelpersSponsoringModeT (432) */3404 /** @name PalletEvmContractHelpersSponsoringModeT (434) */
3401 interface PalletEvmContractHelpersSponsoringModeT extends Enum {3405 interface PalletEvmContractHelpersSponsoringModeT extends Enum {
3402 readonly isDisabled: boolean;3406 readonly isDisabled: boolean;
3403 readonly isAllowlisted: boolean;3407 readonly isAllowlisted: boolean;
3404 readonly isGenerous: boolean;3408 readonly isGenerous: boolean;
3405 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';3409 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
3406 }3410 }
34073411
3408 /** @name PalletEvmContractHelpersError (434) */3412 /** @name PalletEvmContractHelpersError (436) */
3409 interface PalletEvmContractHelpersError extends Enum {3413 interface PalletEvmContractHelpersError extends Enum {
3410 readonly isNoPermission: boolean;3414 readonly isNoPermission: boolean;
3411 readonly isNoPendingSponsor: boolean;3415 readonly isNoPendingSponsor: boolean;
3412 readonly type: 'NoPermission' | 'NoPendingSponsor';3416 readonly type: 'NoPermission' | 'NoPendingSponsor';
3413 }3417 }
34143418
3415 /** @name PalletEvmMigrationError (435) */3419 /** @name PalletEvmMigrationError (437) */
3416 interface PalletEvmMigrationError extends Enum {3420 interface PalletEvmMigrationError extends Enum {
3417 readonly isAccountNotEmpty: boolean;3421 readonly isAccountNotEmpty: boolean;
3418 readonly isAccountIsNotMigrating: boolean;3422 readonly isAccountIsNotMigrating: boolean;
3419 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';3423 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
3420 }3424 }
34213425
3422 /** @name SpRuntimeMultiSignature (437) */3426 /** @name SpRuntimeMultiSignature (439) */
3423 interface SpRuntimeMultiSignature extends Enum {3427 interface SpRuntimeMultiSignature extends Enum {
3424 readonly isEd25519: boolean;3428 readonly isEd25519: boolean;
3425 readonly asEd25519: SpCoreEd25519Signature;3429 readonly asEd25519: SpCoreEd25519Signature;
3430 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';3434 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
3431 }3435 }
34323436
3433 /** @name SpCoreEd25519Signature (438) */3437 /** @name SpCoreEd25519Signature (440) */
3434 interface SpCoreEd25519Signature extends U8aFixed {}3438 interface SpCoreEd25519Signature extends U8aFixed {}
34353439
3436 /** @name SpCoreSr25519Signature (440) */3440 /** @name SpCoreSr25519Signature (442) */
3437 interface SpCoreSr25519Signature extends U8aFixed {}3441 interface SpCoreSr25519Signature extends U8aFixed {}
34383442
3439 /** @name SpCoreEcdsaSignature (441) */3443 /** @name SpCoreEcdsaSignature (443) */
3440 interface SpCoreEcdsaSignature extends U8aFixed {}3444 interface SpCoreEcdsaSignature extends U8aFixed {}
34413445
3442 /** @name FrameSystemExtensionsCheckSpecVersion (444) */3446 /** @name FrameSystemExtensionsCheckSpecVersion (446) */
3443 type FrameSystemExtensionsCheckSpecVersion = Null;3447 type FrameSystemExtensionsCheckSpecVersion = Null;
34443448
3445 /** @name FrameSystemExtensionsCheckGenesis (445) */3449 /** @name FrameSystemExtensionsCheckGenesis (447) */
3446 type FrameSystemExtensionsCheckGenesis = Null;3450 type FrameSystemExtensionsCheckGenesis = Null;
34473451
3448 /** @name FrameSystemExtensionsCheckNonce (448) */3452 /** @name FrameSystemExtensionsCheckNonce (450) */
3449 interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}3453 interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
34503454
3451 /** @name FrameSystemExtensionsCheckWeight (449) */3455 /** @name FrameSystemExtensionsCheckWeight (451) */
3452 type FrameSystemExtensionsCheckWeight = Null;3456 type FrameSystemExtensionsCheckWeight = Null;
34533457
3454 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (450) */3458 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (452) */
3455 interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}3459 interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
34563460
3457 /** @name OpalRuntimeRuntime (451) */3461 /** @name OpalRuntimeRuntime (453) */
3458 type OpalRuntimeRuntime = Null;3462 type OpalRuntimeRuntime = Null;
34593463
3460 /** @name PalletEthereumFakeTransactionFinalizer (452) */3464 /** @name PalletEthereumFakeTransactionFinalizer (454) */
3461 type PalletEthereumFakeTransactionFinalizer = Null;3465 type PalletEthereumFakeTransactionFinalizer = Null;
34623466
3463} // declare module3467} // declare module