git.delta.rocks / unique-network / refs/commits / 1cc33de4c839

difftreelog

added the ability to configure pallet `app-promotion` via the `configuration` palette

PraetorP2022-12-13parent: #966149d.patch.diff
in: master

14 files changed

modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5524,13 +5524,14 @@
 
 [[package]]
 name = "pallet-app-promotion"
-version = "0.1.0"
+version = "0.1.1"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
  "frame-system",
  "pallet-balances",
  "pallet-common",
+ "pallet-configuration",
  "pallet-evm",
  "pallet-evm-contract-helpers",
  "pallet-evm-migration",
@@ -5784,7 +5785,7 @@
 
 [[package]]
 name = "pallet-configuration"
-version = "0.1.1"
+version = "0.1.2"
 dependencies = [
  "fp-evm",
  "frame-support",
addedpallets/app-promotion/CHANGELOG.mddiffbeforeafterboth
--- /dev/null
+++ b/pallets/app-promotion/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+
+<!-- bureaucrate goes here -->
+
+## [0.1.1] - 2022-12-13
+
+### Added
+
+- The ability to configure pallet `app-promotion` via the `configuration` palette
modifiedpallets/app-promotion/Cargo.tomldiffbeforeafterboth
--- a/pallets/app-promotion/Cargo.toml
+++ b/pallets/app-promotion/Cargo.toml
@@ -9,7 +9,7 @@
 license = 'GPLv3'
 name = 'pallet-app-promotion'
 repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.1.0'
+version = '0.1.1'
 
 [package.metadata.docs.rs]
 targets = ['x86_64-unknown-linux-gnu']
@@ -68,6 +68,7 @@
 
 up-data-structs = { default-features = false, path = "../../primitives/data-structs" }
 pallet-common = { default-features = false, path = "../common" }
+pallet-configuration = { default-features = false, path = "../configuration" }
 pallet-unique = { default-features = false, path = "../unique" }
 pallet-evm-contract-helpers = { default-features = false, path = "../evm-contract-helpers" }
 pallet-evm-migration = { default-features = false, path = "../evm-migration" }
modifiedpallets/app-promotion/src/lib.rsdiffbeforeafterboth
--- a/pallets/app-promotion/src/lib.rs
+++ b/pallets/app-promotion/src/lib.rs
@@ -102,7 +102,9 @@
 	use frame_system::pallet_prelude::*;
 
 	#[pallet::config]
-	pub trait Config: frame_system::Config + pallet_evm::Config {
+	pub trait Config:
+		frame_system::Config + pallet_evm::Config + pallet_configuration::Config
+	{
 		/// Type to interact with the native token
 		type Currency: ExtendedLockableCurrency<Self::AccountId>
 			+ ReservableCurrency<Self::AccountId>;
@@ -330,6 +332,7 @@
 				amount >= <BalanceOf<T>>::from(100u128) * T::Nominal::get(),
 				ArithmeticError::Underflow
 			);
+			let config = <PalletConfiguration<T>>::get();
 
 			let balance =
 				<<T as Config>::Currency as Currency<T::AccountId>>::free_balance(&staker_id);
@@ -351,7 +354,7 @@
 			// Calculation of the number of recalculation periods,
 			// after how much the first interest calculation should be performed for the stake
 			let recalculate_after_interval: T::BlockNumber =
-				if block_number % T::RecalculationInterval::get() == 0u32.into() {
+				if block_number % config.recalculation_interval == 0u32.into() {
 					1u32.into()
 				} else {
 					2u32.into()
@@ -359,9 +362,9 @@
 
 			// Сalculation of the number of the relay block
 			// in which it is necessary to accrue remuneration for the stake.
-			let recalc_block = (block_number / T::RecalculationInterval::get()
+			let recalc_block = (block_number / config.recalculation_interval
 				+ recalculate_after_interval)
-				* T::RecalculationInterval::get();
+				* config.recalculation_interval;
 
 			<Staked<T>>::insert((&staker_id, block_number), {
 				let mut balance_and_recalc_block = <Staked<T>>::get((&staker_id, block_number));
@@ -393,9 +396,10 @@
 		#[pallet::weight(<T as Config>::WeightInfo::unstake())]
 		pub fn unstake(staker: OriginFor<T>) -> DispatchResultWithPostInfo {
 			let staker_id = ensure_signed(staker)?;
+			let config = <PalletConfiguration<T>>::get();
 
 			// calculate block number where the sum would be free
-			let block = <frame_system::Pallet<T>>::block_number() + T::PendingInterval::get();
+			let block = <frame_system::Pallet<T>>::block_number() + config.pending_interval;
 
 			let mut pendings = <PendingUnstake<T>>::get(block);
 
@@ -568,15 +572,25 @@
 				admin_id == Admin::<T>::get().ok_or(Error::<T>::AdminNotSet)?,
 				Error::<T>::NoPermission
 			);
+			let config = <PalletConfiguration<T>>::get();
 
+			let mut stakers_number = stakers_number.unwrap_or(DEFAULT_NUMBER_PAYOUTS);
+
+			ensure!(
+				stakers_number <= config.max_stakers_per_calculation,
+				Error::<T>::NoPermission
+			);
+
 			// calculate the number of the current recalculation block,
 			// this is necessary in order to understand which stakers we should calculate interest
-			let current_recalc_block =
-				Self::get_current_recalc_block(T::RelayBlockNumberProvider::current_block_number());
+			let current_recalc_block = Self::get_current_recalc_block(
+				T::RelayBlockNumberProvider::current_block_number(),
+				&config,
+			);
 
 			// calculate the number of the next recalculation block,
 			// this value is set for the stakers to whom the recalculation will be performed
-			let next_recalc_block = current_recalc_block + T::RecalculationInterval::get();
+			let next_recalc_block = current_recalc_block + config.recalculation_interval;
 
 			let mut storage_iterator = Self::get_next_calculated_key()
 				.map_or(Staked::<T>::iter(), |key| Staked::<T>::iter_from(key));
@@ -584,7 +598,6 @@
 			NextCalculatedRecord::<T>::set(None);
 
 			{
-				let mut stakers_number = stakers_number.unwrap_or(20);
 				let last_id = RefCell::new(None);
 				let income_acc = RefCell::new(BalanceOf::<T>::default());
 				let amount_acc = RefCell::new(BalanceOf::<T>::default());
@@ -644,8 +657,8 @@
 							next_recalc_block,
 							amount,
 							((current_recalc_block - next_recalc_block_for_stake)
-								/ T::RecalculationInterval::get())
-							.into() + 1,
+								/ config.recalculation_interval)
+								.into() + 1,
 							&mut *income_acc.borrow_mut(),
 						);
 					}
@@ -810,15 +823,19 @@
 	where
 		I: EncodeLike<BalanceOf<T>> + Balance,
 	{
+		let config = <PalletConfiguration<T>>::get();
 		let mut income = base;
 
-		(0..iters).for_each(|_| income += T::IntervalIncome::get() * income);
+		(0..iters).for_each(|_| income += config.interval_income * income);
 
 		income - base
 	}
 
-	fn get_current_recalc_block(current_relay_block: T::BlockNumber) -> T::BlockNumber {
-		(current_relay_block / T::RecalculationInterval::get()) * T::RecalculationInterval::get()
+	fn get_current_recalc_block(
+		current_relay_block: T::BlockNumber,
+		config: &PalletConfiguration<T>,
+	) -> T::BlockNumber {
+		(current_relay_block / config.recalculation_interval) * config.recalculation_interval
 	}
 
 	fn get_next_calculated_key() -> Option<Vec<u8>> {
modifiedpallets/app-promotion/src/types.rsdiffbeforeafterboth
--- a/pallets/app-promotion/src/types.rs
+++ b/pallets/app-promotion/src/types.rs
@@ -4,10 +4,15 @@
 use pallet_balances::{BalanceLock, Config as BalancesConfig, Pallet as PalletBalances};
 use pallet_common::CollectionHandle;
 
-use sp_runtime::DispatchError;
+use sp_runtime::{DispatchError, Perbill};
 use up_data_structs::{CollectionId};
 use sp_std::borrow::ToOwned;
 use pallet_evm_contract_helpers::{Pallet as EvmHelpersPallet, Config as EvmHelpersConfig};
+use pallet_configuration::{AppPromomotionConfigurationOverride};
+use sp_core::Get;
+
+const MAX_NUMBER_PAYOUTS: u8 = 100;
+pub(crate) const DEFAULT_NUMBER_PAYOUTS: u8 = 20;
 
 /// This trait was defined because `LockableCurrency`
 /// has no way to know the state of the lock for an account.
@@ -128,3 +133,24 @@
 		Ok(Self::get_sponsor(contract_address))
 	}
 }
+pub(crate) struct PalletConfiguration<T: crate::Config> {
+	/// In relay blocks.
+	pub recalculation_interval: T::BlockNumber,
+	/// In parachain blocks.
+	pub pending_interval: T::BlockNumber,
+	/// Value for `RecalculationInterval` based on 0.05% per 24h.
+	pub interval_income: Perbill,
+	/// Maximum allowable number of stakers calculated per call of the `app-promotion::PayoutStakers` extrinsic.
+	pub max_stakers_per_calculation: u8,
+}
+impl<T: crate::Config> PalletConfiguration<T> {
+	pub fn get() -> Self {
+		let config = <AppPromomotionConfigurationOverride<T>>::get().unwrap_or_default();
+		Self {
+			recalculation_interval: config.0.unwrap_or(T::RecalculationInterval::get()),
+			pending_interval: config.2.unwrap_or(T::PendingInterval::get()),
+			interval_income: config.1.unwrap_or(T::IntervalIncome::get()),
+			max_stakers_per_calculation: config.3.unwrap_or(MAX_NUMBER_PAYOUTS),
+		}
+	}
+}
modifiedpallets/configuration/CHANGELOG.mddiffbeforeafterboth
--- a/pallets/configuration/CHANGELOG.md
+++ b/pallets/configuration/CHANGELOG.md
@@ -1,4 +1,10 @@
 <!-- bureaucrate goes here -->
+## [0.1.2] - 2022-12-13
+
+### Added
+
+- The ability to configure pallet `app-promotion` via the `configuration` palette
+
 ## [v0.1.1] 2022-08-16
 
 ### Other changes
modifiedpallets/configuration/Cargo.tomldiffbeforeafterboth
--- a/pallets/configuration/Cargo.toml
+++ b/pallets/configuration/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "pallet-configuration"
-version = "0.1.1"
+version = "0.1.2"
 edition = "2021"
 
 [dependencies]
modifiedpallets/configuration/src/lib.rsdiffbeforeafterboth
--- a/pallets/configuration/src/lib.rs
+++ b/pallets/configuration/src/lib.rs
@@ -51,6 +51,10 @@
 
 		#[pallet::constant]
 		type MaxOverridedAllowedLocations: Get<u32>;
+		#[pallet::constant]
+		type AppPromotionDailyRate: Get<Perbill>;
+		#[pallet::constant]
+		type DayRelayBlocks: Get<Self::BlockNumber>;
 	}
 
 	#[pallet::storage]
@@ -70,6 +74,17 @@
 		QueryKind = OptionQuery,
 	>;
 
+	#[pallet::storage]
+	pub type AppPromomotionConfigurationOverride<T: Config> = StorageValue<
+		Value = (
+			Option<T::BlockNumber>,
+			Option<Perbill>,
+			Option<T::BlockNumber>,
+			Option<u8>,
+		),
+		QueryKind = OptionQuery,
+	>;
+
 	#[pallet::call]
 	impl<T: Config> Pallet<T> {
 		#[pallet::weight(T::DbWeight::get().writes(1))]
@@ -109,6 +124,39 @@
 			<XcmAllowedLocationsOverride<T>>::set(locations);
 			Ok(())
 		}
+
+		#[pallet::weight(T::DbWeight::get().writes(1))]
+		pub fn set_app_promotion_configuration_override(
+			origin: OriginFor<T>,
+			recalculation_interval: Option<T::BlockNumber>,
+			pending_interval: Option<T::BlockNumber>,
+			stakers_payout_limit: Option<u8>,
+		) -> DispatchResult {
+			let _sender = ensure_root(origin)?;
+
+			if recalculation_interval.is_none()
+				&& pending_interval.is_none()
+				&& stakers_payout_limit.is_none()
+			{
+				<AppPromomotionConfigurationOverride<T>>::kill();
+			} else {
+				let mut current_config =
+					<AppPromomotionConfigurationOverride<T>>::take().unwrap_or_default();
+
+				recalculation_interval.map(|b| {
+					current_config.0 = Some(b);
+					current_config.1 = Some(
+						Perbill::from_rational(b, T::DayRelayBlocks::get())
+							* T::AppPromotionDailyRate::get(),
+					)
+				});
+				pending_interval.map(|b| current_config.2 = Some(b));
+				stakers_payout_limit.map(|p| current_config.3 = Some(p));
+				<AppPromomotionConfigurationOverride<T>>::set(Some(current_config));
+			}
+
+			Ok(())
+		}
 	}
 
 	#[pallet::pallet]
modifiedruntime/common/config/pallets/app_promotion.rsdiffbeforeafterboth
--- a/runtime/common/config/pallets/app_promotion.rs
+++ b/runtime/common/config/pallets/app_promotion.rs
@@ -26,16 +26,6 @@
 	types::Balance,
 };
 
-#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
-parameter_types! {
-	pub const AppPromotionId: PalletId = PalletId(*b"appstake");
-	pub const RecalculationInterval: BlockNumber = 8;
-	pub const PendingInterval: BlockNumber = 4;
-	pub const Nominal: Balance = UNIQUE;
-	pub IntervalIncome: Perbill = Perbill::from_rational(RecalculationInterval::get(), RELAY_DAYS) * Perbill::from_rational(5u32, 10_000);
-}
-
-#[cfg(any(feature = "unique-runtime", feature = "quartz-runtime"))]
 parameter_types! {
 	pub const AppPromotionId: PalletId = PalletId(*b"appstake");
 	pub const RecalculationInterval: BlockNumber = RELAY_DAYS;
modifiedruntime/common/config/pallets/mod.rsdiffbeforeafterboth
--- a/runtime/common/config/pallets/mod.rs
+++ b/runtime/common/config/pallets/mod.rs
@@ -33,6 +33,7 @@
 use up_data_structs::{
 	mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
 };
+use sp_arithmetic::Perbill;
 
 #[cfg(feature = "rmrk")]
 pub mod rmrk;
@@ -98,10 +99,16 @@
 	type RefungibleExtensionsWeightInfo = CommonWeights<Self>;
 }
 
+parameter_types! {
+	pub AppPromotionDailyRate: Perbill = Perbill::from_rational(5u32, 10_000);
+	pub const DayRelayBlocks: BlockNumber = RELAY_DAYS;
+}
 impl pallet_configuration::Config for Runtime {
 	type DefaultWeightToFeeCoefficient = ConstU32<{ up_common::constants::WEIGHT_TO_FEE_COEFF }>;
 	type DefaultMinGasPrice = ConstU64<{ up_common::constants::MIN_GAS_PRICE }>;
 	type MaxOverridedAllowedLocations = ConstU32<16>;
+	type AppPromotionDailyRate = AppPromotionDailyRate;
+	type DayRelayBlocks = DayRelayBlocks;
 }
 
 impl pallet_maintenance::Config for Runtime {
modifiedtests/src/app-promotion.test.tsdiffbeforeafterboth
--- a/tests/src/app-promotion.test.ts
+++ b/tests/src/app-promotion.test.ts
@@ -31,11 +31,14 @@
   before(async function () {
     await usingPlaygrounds(async (helper, privateKey) => {
       requirePalletsOrSkip(this, helper, [Pallets.AppPromotion]);
+      const alice = await privateKey('//Alice');
       donor = await privateKey({filename: __filename});
       palletAddress = helper.arrange.calculatePalletAddress('appstake');
       palletAdmin = await privateKey('//PromotionAdmin');
       nominal = helper.balance.getOneTokenNominal();
       accounts = await helper.arrange.createCrowd(100, 1000n, donor); // create accounts-pool to speed up tests
+      const api = helper.getApi();
+      await helper.signTransaction(alice, api.tx.sudo.sudo(api.tx.configuration.setAppPromotionConfigurationOverride(LOCKING_PERIOD, UNLOCKING_PERIOD, null)));
     });
   });
 
modifiedtests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-consts.ts
+++ b/tests/src/interfaces/augment-api-consts.ts
@@ -79,6 +79,8 @@
       [key: string]: Codec;
     };
     configuration: {
+      appPromotionDailyRate: Perbill & AugmentedConst<ApiType>;
+      dayRelayBlocks: u32 & AugmentedConst<ApiType>;
       defaultMinGasPrice: u64 & AugmentedConst<ApiType>;
       defaultWeightToFeeCoefficient: u32 & AugmentedConst<ApiType>;
       maxOverridedAllowedLocations: u32 & AugmentedConst<ApiType>;
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
before · tests/src/interfaces/augment-api-query.ts
1// Auto-generated via `yarn polkadot-types-from-chain`, do not edit2/* eslint-disable */34// import type lookup before we augment - in some environments5// this is required to allow for ambient/previous definitions6import '@polkadot/api-base/types/storage';78import type { ApiTypes, AugmentedQuery, QueryableStorageEntry } from '@polkadot/api-base/types';9import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';10import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';11import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';12import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportDispatchPerDispatchClassWeight, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensReserveData, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerV2BlockAgenda, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, SpWeightsWeightV2Weight, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, XcmV1MultiLocation } from '@polkadot/types/lookup';13import type { Observable } from '@polkadot/types/types';1415export type __AugmentedQuery<ApiType extends ApiTypes> = AugmentedQuery<ApiType, () => unknown>;16export type __QueryableStorageEntry<ApiType extends ApiTypes> = QueryableStorageEntry<ApiType>;1718declare module '@polkadot/api-base/types/storage' {19  interface AugmentedQueries<ApiType extends ApiTypes> {20    appPromotion: {21      /**22       * Stores the `admin` account. Some extrinsics can only be executed if they were signed by `admin`.23       **/24      admin: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;25      /**26       * Stores a key for record for which the next revenue recalculation would be performed.27       * If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.28       **/29      nextCalculatedRecord: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[AccountId32, u32]>>>, []> & QueryableStorageEntry<ApiType, []>;30      /**31       * Stores amount of stakes for an `Account`.32       * 33       * * **Key** - Staker account.34       * * **Value** - Amount of stakes.35       **/36      pendingUnstake: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[AccountId32, u128]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;37      /**38       * Stores the amount of tokens staked by account in the blocknumber.39       * 40       * * **Key1** - Staker account.41       * * **Key2** - Relay block number when the stake was made.42       * * **(Balance, BlockNumber)** - Balance of the stake.43       * The number of the relay block in which we must perform the interest recalculation44       **/45      staked: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<ITuple<[u128, u32]>>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;46      /**47       * Stores amount of stakes for an `Account`.48       * 49       * * **Key** - Staker account.50       * * **Value** - Amount of stakes.51       **/52      stakesPerAccount: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<u8>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;53      /**54       * Stores the total staked amount.55       **/56      totalStaked: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;57      /**58       * Generic query59       **/60      [key: string]: QueryableStorageEntry<ApiType>;61    };62    balances: {63      /**64       * The Balances pallet example of storing the balance of an account.65       * 66       * # Example67       * 68       * ```nocompile69       * impl pallet_balances::Config for Runtime {70       * type AccountStore = StorageMapShim<Self::Account<Runtime>, frame_system::Provider<Runtime>, AccountId, Self::AccountData<Balance>>71       * }72       * ```73       * 74       * You can also store the balance of an account in the `System` pallet.75       * 76       * # Example77       * 78       * ```nocompile79       * impl pallet_balances::Config for Runtime {80       * type AccountStore = System81       * }82       * ```83       * 84       * But this comes with tradeoffs, storing account balances in the system pallet stores85       * `frame_system` data alongside the account data contrary to storing account balances in the86       * `Balances` pallet, which uses a `StorageMap` to store balances data only.87       * NOTE: This is only used in the case that this pallet is used to store balances.88       **/89      account: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<PalletBalancesAccountData>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;90      /**91       * Any liquidity locks on some account balances.92       * NOTE: Should only be accessed when setting, changing and freeing a lock.93       **/94      locks: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<PalletBalancesBalanceLock>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;95      /**96       * Named reserves on some account balances.97       **/98      reserves: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<PalletBalancesReserveData>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;99      /**100       * Storage version of the pallet.101       * 102       * This is set to v2.0.0 for new networks.103       **/104      storageVersion: AugmentedQuery<ApiType, () => Observable<PalletBalancesReleases>, []> & QueryableStorageEntry<ApiType, []>;105      /**106       * The total units issued in the system.107       **/108      totalIssuance: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;109      /**110       * Generic query111       **/112      [key: string]: QueryableStorageEntry<ApiType>;113    };114    charging: {115      /**116       * Generic query117       **/118      [key: string]: QueryableStorageEntry<ApiType>;119    };120    common: {121      /**122       * Storage of the amount of collection admins.123       **/124      adminAmount: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;125      /**126       * Allowlisted collection users.127       **/128      allowlist: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;129      /**130       * Storage of collection info.131       **/132      collectionById: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<UpDataStructsCollection>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;133      /**134       * Storage of collection properties.135       **/136      collectionProperties: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<UpDataStructsProperties>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;137      /**138       * Storage of token property permissions of a collection.139       **/140      collectionPropertyPermissions: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<BTreeMap<Bytes, UpDataStructsPropertyPermission>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;141      /**142       * Storage of the count of created collections. Essentially contains the last collection ID.143       **/144      createdCollectionCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;145      /**146       * Storage of the count of deleted collections.147       **/148      destroyedCollectionCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;149      /**150       * Not used by code, exists only to provide some types to metadata.151       **/152      dummyStorageValue: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[UpDataStructsCollectionStats, u32, u32, UpDataStructsTokenChild, PhantomTypeUpDataStructs]>>>, []> & QueryableStorageEntry<ApiType, []>;153      /**154       * List of collection admins.155       **/156      isAdmin: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;157      /**158       * Generic query159       **/160      [key: string]: QueryableStorageEntry<ApiType>;161    };162    configuration: {163      minGasPriceOverride: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;164      weightToFeeCoefficientOverride: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;165      xcmAllowedLocationsOverride: AugmentedQuery<ApiType, () => Observable<Option<Vec<XcmV1MultiLocation>>>, []> & QueryableStorageEntry<ApiType, []>;166      /**167       * Generic query168       **/169      [key: string]: QueryableStorageEntry<ApiType>;170    };171    dmpQueue: {172      /**173       * The configuration.174       **/175      configuration: AugmentedQuery<ApiType, () => Observable<CumulusPalletDmpQueueConfigData>, []> & QueryableStorageEntry<ApiType, []>;176      /**177       * The overweight messages.178       **/179      overweight: AugmentedQuery<ApiType, (arg: u64 | AnyNumber | Uint8Array) => Observable<Option<ITuple<[u32, Bytes]>>>, [u64]> & QueryableStorageEntry<ApiType, [u64]>;180      /**181       * The page index.182       **/183      pageIndex: AugmentedQuery<ApiType, () => Observable<CumulusPalletDmpQueuePageIndexData>, []> & QueryableStorageEntry<ApiType, []>;184      /**185       * The queue pages.186       **/187      pages: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[u32, Bytes]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;188      /**189       * Generic query190       **/191      [key: string]: QueryableStorageEntry<ApiType>;192    };193    ethereum: {194      blockHash: AugmentedQuery<ApiType, (arg: U256 | AnyNumber | Uint8Array) => Observable<H256>, [U256]> & QueryableStorageEntry<ApiType, [U256]>;195      /**196       * The current Ethereum block.197       **/198      currentBlock: AugmentedQuery<ApiType, () => Observable<Option<EthereumBlock>>, []> & QueryableStorageEntry<ApiType, []>;199      /**200       * The current Ethereum receipts.201       **/202      currentReceipts: AugmentedQuery<ApiType, () => Observable<Option<Vec<EthereumReceiptReceiptV3>>>, []> & QueryableStorageEntry<ApiType, []>;203      /**204       * The current transaction statuses.205       **/206      currentTransactionStatuses: AugmentedQuery<ApiType, () => Observable<Option<Vec<FpRpcTransactionStatus>>>, []> & QueryableStorageEntry<ApiType, []>;207      /**208       * Injected transactions should have unique nonce, here we store current209       **/210      injectedNonce: AugmentedQuery<ApiType, () => Observable<U256>, []> & QueryableStorageEntry<ApiType, []>;211      /**212       * Current building block's transactions and receipts.213       **/214      pending: AugmentedQuery<ApiType, () => Observable<Vec<ITuple<[EthereumTransactionTransactionV2, FpRpcTransactionStatus, EthereumReceiptReceiptV3]>>>, []> & QueryableStorageEntry<ApiType, []>;215      /**216       * Generic query217       **/218      [key: string]: QueryableStorageEntry<ApiType>;219    };220    evm: {221      accountCodes: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<Bytes>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;222      accountStorages: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H256 | string | Uint8Array) => Observable<H256>, [H160, H256]> & QueryableStorageEntry<ApiType, [H160, H256]>;223      /**224       * Written on log, reset after transaction225       * Should be empty between transactions226       **/227      currentLogs: AugmentedQuery<ApiType, () => Observable<Vec<EthereumLog>>, []> & QueryableStorageEntry<ApiType, []>;228      /**229       * Generic query230       **/231      [key: string]: QueryableStorageEntry<ApiType>;232    };233    evmCoderSubstrate: {234      /**235       * Generic query236       **/237      [key: string]: QueryableStorageEntry<ApiType>;238    };239    evmContractHelpers: {240      /**241       * Storage for users that allowed for sponsorship.242       * 243       * ### Usage244       * Prefer to delete record from storage if user no more allowed for sponsorship.245       * 246       * * **Key1** - contract address.247       * * **Key2** - user that allowed for sponsorship.248       * * **Value** - allowance for sponsorship.249       **/250      allowlist: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<bool>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;251      /**252       * Storege for contracts with [`Allowlisted`](SponsoringModeT::Allowlisted) sponsoring mode.253       * 254       * ### Usage255       * Prefer to delete collection from storage if mode chaged to non `Allowlisted`, than set **Value** to **false**.256       * 257       * * **Key** - contract address.258       * * **Value** - is contract in [`Allowlisted`](SponsoringModeT::Allowlisted) mode.259       **/260      allowlistEnabled: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;261      /**262       * Store owner for contract.263       * 264       * * **Key** - contract address.265       * * **Value** - owner for contract.266       **/267      owner: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<H160>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;268      selfSponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;269      sponsorBasket: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<Option<u32>>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;270      /**271       * Store for contract sponsorship state.272       * 273       * * **Key** - contract address.274       * * **Value** - sponsorship state.275       **/276      sponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<UpDataStructsSponsorshipStateBasicCrossAccountIdRepr>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;277      /**278       * Storage for last sponsored block.279       * 280       * * **Key1** - contract address.281       * * **Key2** - sponsored user address.282       * * **Value** - last sponsored block number.283       **/284      sponsoringFeeLimit: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<BTreeMap<u32, U256>>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;285      /**286       * Store for sponsoring mode.287       * 288       * ### Usage289       * Prefer to delete collection from storage if mode chaged to [`Disabled`](SponsoringModeT::Disabled).290       * 291       * * **Key** - contract address.292       * * **Value** - [`sponsoring mode`](SponsoringModeT).293       **/294      sponsoringMode: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<Option<PalletEvmContractHelpersSponsoringModeT>>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;295      /**296       * Storage for sponsoring rate limit in blocks.297       * 298       * * **Key** - contract address.299       * * **Value** - amount of sponsored blocks.300       **/301      sponsoringRateLimit: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<u32>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;302      /**303       * Generic query304       **/305      [key: string]: QueryableStorageEntry<ApiType>;306    };307    evmMigration: {308      migrationPending: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;309      /**310       * Generic query311       **/312      [key: string]: QueryableStorageEntry<ApiType>;313    };314    foreignAssets: {315      /**316       * The storages for assets to fungible collection binding317       * 318       **/319      assetBinding: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;320      /**321       * The storages for AssetMetadatas.322       * 323       * AssetMetadatas: map AssetIds => Option<AssetMetadata>324       **/325      assetMetadatas: AugmentedQuery<ApiType, (arg: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Option<PalletForeignAssetsModuleAssetMetadata>>, [PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeignAssetsAssetIds]>;326      /**327       * The storages for MultiLocations.328       * 329       * ForeignAssetLocations: map ForeignAssetId => Option<MultiLocation>330       **/331      foreignAssetLocations: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<XcmV1MultiLocation>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;332      /**333       * The storages for CurrencyIds.334       * 335       * LocationToCurrencyIds: map MultiLocation => Option<ForeignAssetId>336       **/337      locationToCurrencyIds: AugmentedQuery<ApiType, (arg: XcmV1MultiLocation | { parents?: any; interior?: any } | string | Uint8Array) => Observable<Option<u32>>, [XcmV1MultiLocation]> & QueryableStorageEntry<ApiType, [XcmV1MultiLocation]>;338      /**339       * Next available Foreign AssetId ID.340       * 341       * NextForeignAssetId: ForeignAssetId342       **/343      nextForeignAssetId: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;344      /**345       * Generic query346       **/347      [key: string]: QueryableStorageEntry<ApiType>;348    };349    fungible: {350      /**351       * Storage for assets delegated to a limited extent to other users.352       **/353      allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;354      /**355       * Amount of tokens owned by an account inside a collection.356       **/357      balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;358      /**359       * Total amount of fungible tokens inside a collection.360       **/361      totalSupply: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;362      /**363       * Generic query364       **/365      [key: string]: QueryableStorageEntry<ApiType>;366    };367    inflation: {368      /**369       * Current inflation for `InflationBlockInterval` number of blocks370       **/371      blockInflation: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;372      /**373       * Next target (relay) block when inflation will be applied374       **/375      nextInflationBlock: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;376      /**377       * Next target (relay) block when inflation is recalculated378       **/379      nextRecalculationBlock: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;380      /**381       * Relay block when inflation has started382       **/383      startBlock: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;384      /**385       * starting year total issuance386       **/387      startingYearTotalIssuance: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;388      /**389       * Generic query390       **/391      [key: string]: QueryableStorageEntry<ApiType>;392    };393    maintenance: {394      enabled: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;395      /**396       * Generic query397       **/398      [key: string]: QueryableStorageEntry<ApiType>;399    };400    nonfungible: {401      /**402       * Amount of tokens owned by an account in a collection.403       **/404      accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;405      /**406       * Allowance set by a token owner for another user to perform one of certain transactions on a token.407       **/408      allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletEvmAccountBasicCrossAccountIdRepr>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;409      /**410       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.411       **/412      collectionAllowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;413      /**414       * Used to enumerate tokens owned by account.415       **/416      owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;417      /**418       * Custom data of a token that is serialized to bytes,419       * primarily reserved for on-chain operations,420       * normally obscured from the external users.421       * 422       * Auxiliary properties are slightly different from423       * usual [`TokenProperties`] due to an unlimited number424       * and separately stored and written-to key-value pairs.425       * 426       * Currently used to store RMRK data.427       **/428      tokenAuxProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: UpDataStructsPropertyScope | 'None' | 'Rmrk' | number | Uint8Array, arg4: Bytes | string | Uint8Array) => Observable<Option<Bytes>>, [u32, u32, UpDataStructsPropertyScope, Bytes]> & QueryableStorageEntry<ApiType, [u32, u32, UpDataStructsPropertyScope, Bytes]>;429      /**430       * Used to enumerate token's children.431       **/432      tokenChildren: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: ITuple<[u32, u32]> | [u32 | AnyNumber | Uint8Array, u32 | AnyNumber | Uint8Array]) => Observable<bool>, [u32, u32, ITuple<[u32, u32]>]> & QueryableStorageEntry<ApiType, [u32, u32, ITuple<[u32, u32]>]>;433      /**434       * Token data, used to partially describe a token.435       **/436      tokenData: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletNonfungibleItemData>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;437      /**438       * Map of key-value pairs, describing the metadata of a token.439       **/440      tokenProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<UpDataStructsProperties>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;441      /**442       * Amount of burnt tokens in a collection.443       **/444      tokensBurnt: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;445      /**446       * Total amount of minted tokens in a collection.447       **/448      tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;449      /**450       * Generic query451       **/452      [key: string]: QueryableStorageEntry<ApiType>;453    };454    parachainInfo: {455      parachainId: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;456      /**457       * Generic query458       **/459      [key: string]: QueryableStorageEntry<ApiType>;460    };461    parachainSystem: {462      /**463       * The number of HRMP messages we observed in `on_initialize` and thus used that number for464       * announcing the weight of `on_initialize` and `on_finalize`.465       **/466      announcedHrmpMessagesPerCandidate: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;467      /**468       * The next authorized upgrade, if there is one.469       **/470      authorizedUpgrade: AugmentedQuery<ApiType, () => Observable<Option<H256>>, []> & QueryableStorageEntry<ApiType, []>;471      /**472       * A custom head data that should be returned as result of `validate_block`.473       * 474       * See [`Pallet::set_custom_validation_head_data`] for more information.475       **/476      customValidationHeadData: AugmentedQuery<ApiType, () => Observable<Option<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;477      /**478       * Were the validation data set to notify the relay chain?479       **/480      didSetValidationCode: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;481      /**482       * The parachain host configuration that was obtained from the relay parent.483       * 484       * This field is meant to be updated each block with the validation data inherent. Therefore,485       * before processing of the inherent, e.g. in `on_initialize` this data may be stale.486       * 487       * This data is also absent from the genesis.488       **/489      hostConfiguration: AugmentedQuery<ApiType, () => Observable<Option<PolkadotPrimitivesV2AbridgedHostConfiguration>>, []> & QueryableStorageEntry<ApiType, []>;490      /**491       * HRMP messages that were sent in a block.492       * 493       * This will be cleared in `on_initialize` of each new block.494       **/495      hrmpOutboundMessages: AugmentedQuery<ApiType, () => Observable<Vec<PolkadotCorePrimitivesOutboundHrmpMessage>>, []> & QueryableStorageEntry<ApiType, []>;496      /**497       * HRMP watermark that was set in a block.498       * 499       * This will be cleared in `on_initialize` of each new block.500       **/501      hrmpWatermark: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;502      /**503       * The last downward message queue chain head we have observed.504       * 505       * This value is loaded before and saved after processing inbound downward messages carried506       * by the system inherent.507       **/508      lastDmqMqcHead: AugmentedQuery<ApiType, () => Observable<H256>, []> & QueryableStorageEntry<ApiType, []>;509      /**510       * The message queue chain heads we have observed per each channel incoming channel.511       * 512       * This value is loaded before and saved after processing inbound downward messages carried513       * by the system inherent.514       **/515      lastHrmpMqcHeads: AugmentedQuery<ApiType, () => Observable<BTreeMap<u32, H256>>, []> & QueryableStorageEntry<ApiType, []>;516      /**517       * The relay chain block number associated with the last parachain block.518       **/519      lastRelayChainBlockNumber: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;520      /**521       * Validation code that is set by the parachain and is to be communicated to collator and522       * consequently the relay-chain.523       * 524       * This will be cleared in `on_initialize` of each new block if no other pallet already set525       * the value.526       **/527      newValidationCode: AugmentedQuery<ApiType, () => Observable<Option<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;528      /**529       * Upward messages that are still pending and not yet send to the relay chain.530       **/531      pendingUpwardMessages: AugmentedQuery<ApiType, () => Observable<Vec<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;532      /**533       * In case of a scheduled upgrade, this storage field contains the validation code to be applied.534       * 535       * As soon as the relay chain gives us the go-ahead signal, we will overwrite the [`:code`][well_known_keys::CODE]536       * which will result the next block process with the new validation code. This concludes the upgrade process.537       * 538       * [well_known_keys::CODE]: sp_core::storage::well_known_keys::CODE539       **/540      pendingValidationCode: AugmentedQuery<ApiType, () => Observable<Bytes>, []> & QueryableStorageEntry<ApiType, []>;541      /**542       * Number of downward messages processed in a block.543       * 544       * This will be cleared in `on_initialize` of each new block.545       **/546      processedDownwardMessages: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;547      /**548       * The state proof for the last relay parent block.549       * 550       * This field is meant to be updated each block with the validation data inherent. Therefore,551       * before processing of the inherent, e.g. in `on_initialize` this data may be stale.552       * 553       * This data is also absent from the genesis.554       **/555      relayStateProof: AugmentedQuery<ApiType, () => Observable<Option<SpTrieStorageProof>>, []> & QueryableStorageEntry<ApiType, []>;556      /**557       * The snapshot of some state related to messaging relevant to the current parachain as per558       * the relay parent.559       * 560       * This field is meant to be updated each block with the validation data inherent. Therefore,561       * before processing of the inherent, e.g. in `on_initialize` this data may be stale.562       * 563       * This data is also absent from the genesis.564       **/565      relevantMessagingState: AugmentedQuery<ApiType, () => Observable<Option<CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot>>, []> & QueryableStorageEntry<ApiType, []>;566      /**567       * The weight we reserve at the beginning of the block for processing DMP messages. This568       * overrides the amount set in the Config trait.569       **/570      reservedDmpWeightOverride: AugmentedQuery<ApiType, () => Observable<Option<SpWeightsWeightV2Weight>>, []> & QueryableStorageEntry<ApiType, []>;571      /**572       * The weight we reserve at the beginning of the block for processing XCMP messages. This573       * overrides the amount set in the Config trait.574       **/575      reservedXcmpWeightOverride: AugmentedQuery<ApiType, () => Observable<Option<SpWeightsWeightV2Weight>>, []> & QueryableStorageEntry<ApiType, []>;576      /**577       * An option which indicates if the relay-chain restricts signalling a validation code upgrade.578       * In other words, if this is `Some` and [`NewValidationCode`] is `Some` then the produced579       * candidate will be invalid.580       * 581       * This storage item is a mirror of the corresponding value for the current parachain from the582       * relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is583       * set after the inherent.584       **/585      upgradeRestrictionSignal: AugmentedQuery<ApiType, () => Observable<Option<PolkadotPrimitivesV2UpgradeRestriction>>, []> & QueryableStorageEntry<ApiType, []>;586      /**587       * Upward messages that were sent in a block.588       * 589       * This will be cleared in `on_initialize` of each new block.590       **/591      upwardMessages: AugmentedQuery<ApiType, () => Observable<Vec<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;592      /**593       * The [`PersistedValidationData`] set for this block.594       * This value is expected to be set only once per block and it's never stored595       * in the trie.596       **/597      validationData: AugmentedQuery<ApiType, () => Observable<Option<PolkadotPrimitivesV2PersistedValidationData>>, []> & QueryableStorageEntry<ApiType, []>;598      /**599       * Generic query600       **/601      [key: string]: QueryableStorageEntry<ApiType>;602    };603    randomnessCollectiveFlip: {604      /**605       * Series of block headers from the last 81 blocks that acts as random seed material. This606       * is arranged as a ring buffer with `block_number % 81` being the index into the `Vec` of607       * the oldest hash.608       **/609      randomMaterial: AugmentedQuery<ApiType, () => Observable<Vec<H256>>, []> & QueryableStorageEntry<ApiType, []>;610      /**611       * Generic query612       **/613      [key: string]: QueryableStorageEntry<ApiType>;614    };615    refungible: {616      /**617       * Amount of tokens (not pieces) partially owned by an account within a collection.618       **/619      accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;620      /**621       * Allowance set by a token owner for another user to perform one of certain transactions on a number of pieces of a token.622       **/623      allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg4: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;624      /**625       * Amount of token pieces owned by account.626       **/627      balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]>;628      /**629       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.630       **/631      collectionAllowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;632      /**633       * Used to enumerate tokens owned by account.634       **/635      owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;636      /**637       * Token data, used to partially describe a token.638       **/639      tokenData: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<PalletRefungibleItemData>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;640      /**641       * Amount of pieces a refungible token is split into.642       **/643      tokenProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<UpDataStructsProperties>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;644      /**645       * Amount of tokens burnt in a collection.646       **/647      tokensBurnt: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;648      /**649       * Total amount of minted tokens in a collection.650       **/651      tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;652      /**653       * Total amount of pieces for token654       **/655      totalSupply: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;656      /**657       * Generic query658       **/659      [key: string]: QueryableStorageEntry<ApiType>;660    };661    rmrkCore: {662      /**663       * Latest yet-unused collection ID.664       **/665      collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;666      /**667       * Mapping from RMRK collection ID to Unique's.668       **/669      uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;670      /**671       * Generic query672       **/673      [key: string]: QueryableStorageEntry<ApiType>;674    };675    rmrkEquip: {676      /**677       * Checkmark that a Base has a Theme NFT named "default".678       **/679      baseHasDefaultTheme: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;680      /**681       * Map of a Base ID and a Part ID to an NFT in the Base collection serving as the Part.682       **/683      inernalPartId: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;684      /**685       * Generic query686       **/687      [key: string]: QueryableStorageEntry<ApiType>;688    };689    scheduler: {690      /**691       * Items to be executed, indexed by the block number that they should be executed on.692       **/693      agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<PalletUniqueSchedulerV2BlockAgenda>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;694      /**695       * It contains the block number from which we should service tasks.696       * It's used for delaying the servicing of future blocks' agendas if we had overweight tasks.697       **/698      incompleteSince: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;699      /**700       * Lookup from a name to the block number and index of the task.701       **/702      lookup: AugmentedQuery<ApiType, (arg: U8aFixed | string | Uint8Array) => Observable<Option<ITuple<[u32, u32]>>>, [U8aFixed]> & QueryableStorageEntry<ApiType, [U8aFixed]>;703      /**704       * Generic query705       **/706      [key: string]: QueryableStorageEntry<ApiType>;707    };708    structure: {709      /**710       * Generic query711       **/712      [key: string]: QueryableStorageEntry<ApiType>;713    };714    sudo: {715      /**716       * The `AccountId` of the sudo key.717       **/718      key: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;719      /**720       * Generic query721       **/722      [key: string]: QueryableStorageEntry<ApiType>;723    };724    system: {725      /**726       * The full account information for a particular account ID.727       **/728      account: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<FrameSystemAccountInfo>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;729      /**730       * Total length (in bytes) for all extrinsics put together, for the current block.731       **/732      allExtrinsicsLen: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;733      /**734       * Map of block numbers to block hashes.735       **/736      blockHash: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<H256>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;737      /**738       * The current weight for the block.739       **/740      blockWeight: AugmentedQuery<ApiType, () => Observable<FrameSupportDispatchPerDispatchClassWeight>, []> & QueryableStorageEntry<ApiType, []>;741      /**742       * Digest of the current block, also part of the block header.743       **/744      digest: AugmentedQuery<ApiType, () => Observable<SpRuntimeDigest>, []> & QueryableStorageEntry<ApiType, []>;745      /**746       * The number of events in the `Events<T>` list.747       **/748      eventCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;749      /**750       * Events deposited for the current block.751       * 752       * NOTE: The item is unbound and should therefore never be read on chain.753       * It could otherwise inflate the PoV size of a block.754       * 755       * Events have a large in-memory size. Box the events to not go out-of-memory756       * just in case someone still reads them from within the runtime.757       **/758      events: AugmentedQuery<ApiType, () => Observable<Vec<FrameSystemEventRecord>>, []> & QueryableStorageEntry<ApiType, []>;759      /**760       * Mapping between a topic (represented by T::Hash) and a vector of indexes761       * of events in the `<Events<T>>` list.762       * 763       * All topic vectors have deterministic storage locations depending on the topic. This764       * allows light-clients to leverage the changes trie storage tracking mechanism and765       * in case of changes fetch the list of events of interest.766       * 767       * The value has the type `(T::BlockNumber, EventIndex)` because if we used only just768       * the `EventIndex` then in case if the topic has the same contents on the next block769       * no notification will be triggered thus the event might be lost.770       **/771      eventTopics: AugmentedQuery<ApiType, (arg: H256 | string | Uint8Array) => Observable<Vec<ITuple<[u32, u32]>>>, [H256]> & QueryableStorageEntry<ApiType, [H256]>;772      /**773       * The execution phase of the block.774       **/775      executionPhase: AugmentedQuery<ApiType, () => Observable<Option<FrameSystemPhase>>, []> & QueryableStorageEntry<ApiType, []>;776      /**777       * Total extrinsics count for the current block.778       **/779      extrinsicCount: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;780      /**781       * Extrinsics data for the current block (maps an extrinsic's index to its data).782       **/783      extrinsicData: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;784      /**785       * Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.786       **/787      lastRuntimeUpgrade: AugmentedQuery<ApiType, () => Observable<Option<FrameSystemLastRuntimeUpgradeInfo>>, []> & QueryableStorageEntry<ApiType, []>;788      /**789       * The current block number being processed. Set by `execute_block`.790       **/791      number: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;792      /**793       * Hash of the previous block.794       **/795      parentHash: AugmentedQuery<ApiType, () => Observable<H256>, []> & QueryableStorageEntry<ApiType, []>;796      /**797       * True if we have upgraded so that AccountInfo contains three types of `RefCount`. False798       * (default) if not.799       **/800      upgradedToTripleRefCount: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;801      /**802       * True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.803       **/804      upgradedToU32RefCount: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;805      /**806       * Generic query807       **/808      [key: string]: QueryableStorageEntry<ApiType>;809    };810    testUtils: {811      enabled: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;812      testValue: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;813      /**814       * Generic query815       **/816      [key: string]: QueryableStorageEntry<ApiType>;817    };818    timestamp: {819      /**820       * Did the timestamp get updated in this block?821       **/822      didUpdate: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;823      /**824       * Current time for the current block.825       **/826      now: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;827      /**828       * Generic query829       **/830      [key: string]: QueryableStorageEntry<ApiType>;831    };832    tokens: {833      /**834       * The balance of a token type under an account.835       * 836       * NOTE: If the total is ever zero, decrease account ref account.837       * 838       * NOTE: This is only used in the case that this module is used to store839       * balances.840       **/841      accounts: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<OrmlTokensAccountData>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;842      /**843       * Any liquidity locks of a token type under an account.844       * NOTE: Should only be accessed when setting, changing and freeing a lock.845       **/846      locks: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensBalanceLock>>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;847      /**848       * Named reserves on some account balances.849       **/850      reserves: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensReserveData>>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;851      /**852       * The total issuance of a token type.853       **/854      totalIssuance: AugmentedQuery<ApiType, (arg: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<u128>, [PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeignAssetsAssetIds]>;855      /**856       * Generic query857       **/858      [key: string]: QueryableStorageEntry<ApiType>;859    };860    transactionPayment: {861      nextFeeMultiplier: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;862      storageVersion: AugmentedQuery<ApiType, () => Observable<PalletTransactionPaymentReleases>, []> & QueryableStorageEntry<ApiType, []>;863      /**864       * Generic query865       **/866      [key: string]: QueryableStorageEntry<ApiType>;867    };868    treasury: {869      /**870       * Proposal indices that have been approved but not yet awarded.871       **/872      approvals: AugmentedQuery<ApiType, () => Observable<Vec<u32>>, []> & QueryableStorageEntry<ApiType, []>;873      /**874       * Number of proposals that have been made.875       **/876      proposalCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;877      /**878       * Proposals that have been made.879       **/880      proposals: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletTreasuryProposal>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;881      /**882       * Generic query883       **/884      [key: string]: QueryableStorageEntry<ApiType>;885    };886    unique: {887      /**888       * Used for migrations889       **/890      chainVersion: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;891      /**892       * (Collection id (controlled?2), who created (real))893       * TODO: Off chain worker should remove from this map when collection gets removed894       **/895      createItemBasket: AugmentedQuery<ApiType, (arg: ITuple<[u32, AccountId32]> | [u32 | AnyNumber | Uint8Array, AccountId32 | string | Uint8Array]) => Observable<Option<u32>>, [ITuple<[u32, AccountId32]>]> & QueryableStorageEntry<ApiType, [ITuple<[u32, AccountId32]>]>;896      /**897       * Last sponsoring of fungible tokens approval in a collection898       **/899      fungibleApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;900      /**901       * Collection id (controlled?2), owning user (real)902       **/903      fungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;904      /**905       * Last sponsoring of NFT approval in a collection906       **/907      nftApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;908      /**909       * Collection id (controlled?2), token id (controlled?2)910       **/911      nftTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;912      /**913       * Last sponsoring of RFT approval in a collection914       **/915      refungibleApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, u32, AccountId32]>;916      /**917       * Collection id (controlled?2), token id (controlled?2)918       **/919      reFungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, u32, AccountId32]>;920      /**921       * Last sponsoring of token property setting // todo:doc rephrase this and the following922       **/923      tokenPropertyBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;924      /**925       * Variable metadata sponsoring926       * Collection id (controlled?2), token id (controlled?2)927       **/928      variableMetaDataBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;929      /**930       * Generic query931       **/932      [key: string]: QueryableStorageEntry<ApiType>;933    };934    vesting: {935      /**936       * Vesting schedules of an account.937       * 938       * VestingSchedules: map AccountId => Vec<VestingSchedule>939       **/940      vestingSchedules: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<OrmlVestingVestingSchedule>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;941      /**942       * Generic query943       **/944      [key: string]: QueryableStorageEntry<ApiType>;945    };946    xcmpQueue: {947      /**948       * Inbound aggregate XCMP messages. It can only be one per ParaId/block.949       **/950      inboundXcmpMessages: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;951      /**952       * Status of the inbound XCMP channels.953       **/954      inboundXcmpStatus: AugmentedQuery<ApiType, () => Observable<Vec<CumulusPalletXcmpQueueInboundChannelDetails>>, []> & QueryableStorageEntry<ApiType, []>;955      /**956       * The messages outbound in a given XCMP channel.957       **/958      outboundXcmpMessages: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u16 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32, u16]> & QueryableStorageEntry<ApiType, [u32, u16]>;959      /**960       * The non-empty XCMP channels in order of becoming non-empty, and the index of the first961       * and last outbound message. If the two indices are equal, then it indicates an empty962       * queue and there must be a non-`Ok` `OutboundStatus`. We assume queues grow no greater963       * than 65535 items. Queue indices for normal messages begin at one; zero is reserved in964       * case of the need to send a high-priority signal message this block.965       * The bool is true if there is a signal message waiting to be sent.966       **/967      outboundXcmpStatus: AugmentedQuery<ApiType, () => Observable<Vec<CumulusPalletXcmpQueueOutboundChannelDetails>>, []> & QueryableStorageEntry<ApiType, []>;968      /**969       * The messages that exceeded max individual message weight budget.970       * 971       * These message stay in this storage map until they are manually dispatched via972       * `service_overweight`.973       **/974      overweight: AugmentedQuery<ApiType, (arg: u64 | AnyNumber | Uint8Array) => Observable<Option<ITuple<[u32, u32, Bytes]>>>, [u64]> & QueryableStorageEntry<ApiType, [u64]>;975      /**976       * The number of overweight messages ever recorded in `Overweight`. Also doubles as the next977       * available free overweight index.978       **/979      overweightCount: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;980      /**981       * The configuration which controls the dynamics of the outbound queue.982       **/983      queueConfig: AugmentedQuery<ApiType, () => Observable<CumulusPalletXcmpQueueQueueConfigData>, []> & QueryableStorageEntry<ApiType, []>;984      /**985       * Whether or not the XCMP queue is suspended from executing incoming XCMs or not.986       **/987      queueSuspended: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;988      /**989       * Any signal messages waiting to be sent.990       **/991      signalMessages: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;992      /**993       * Generic query994       **/995      [key: string]: QueryableStorageEntry<ApiType>;996    };997  } // AugmentedQueries998} // declare module
after · tests/src/interfaces/augment-api-query.ts
1// Auto-generated via `yarn polkadot-types-from-chain`, do not edit2/* eslint-disable */34// import type lookup before we augment - in some environments5// this is required to allow for ambient/previous definitions6import '@polkadot/api-base/types/storage';78import type { ApiTypes, AugmentedQuery, QueryableStorageEntry } from '@polkadot/api-base/types';9import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';10import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';11<<<<<<< HEAD12import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';13import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportDispatchPerDispatchClassWeight, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensReserveData, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerV2BlockAgenda, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, SpWeightsWeightV2Weight, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, XcmV1MultiLocation } from '@polkadot/types/lookup';14=======15import type { AccountId32, H160, H256, Perbill, Weight } from '@polkadot/types/interfaces/runtime';16import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportDispatchPerDispatchClassWeight, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensReserveData, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerV2BlockAgenda, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, XcmV1MultiLocation } from '@polkadot/types/lookup';17>>>>>>> added the  ability to configure pallet `app-promotion` via the `configuration` palette18import type { Observable } from '@polkadot/types/types';1920export type __AugmentedQuery<ApiType extends ApiTypes> = AugmentedQuery<ApiType, () => unknown>;21export type __QueryableStorageEntry<ApiType extends ApiTypes> = QueryableStorageEntry<ApiType>;2223declare module '@polkadot/api-base/types/storage' {24  interface AugmentedQueries<ApiType extends ApiTypes> {25    appPromotion: {26      /**27       * Stores the `admin` account. Some extrinsics can only be executed if they were signed by `admin`.28       **/29      admin: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;30      /**31       * Stores a key for record for which the next revenue recalculation would be performed.32       * If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.33       **/34      nextCalculatedRecord: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[AccountId32, u32]>>>, []> & QueryableStorageEntry<ApiType, []>;35      /**36       * Stores amount of stakes for an `Account`.37       * 38       * * **Key** - Staker account.39       * * **Value** - Amount of stakes.40       **/41      pendingUnstake: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[AccountId32, u128]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;42      /**43       * Stores the amount of tokens staked by account in the blocknumber.44       * 45       * * **Key1** - Staker account.46       * * **Key2** - Relay block number when the stake was made.47       * * **(Balance, BlockNumber)** - Balance of the stake.48       * The number of the relay block in which we must perform the interest recalculation49       **/50      staked: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<ITuple<[u128, u32]>>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;51      /**52       * Stores amount of stakes for an `Account`.53       * 54       * * **Key** - Staker account.55       * * **Value** - Amount of stakes.56       **/57      stakesPerAccount: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<u8>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;58      /**59       * Stores the total staked amount.60       **/61      totalStaked: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;62      /**63       * Generic query64       **/65      [key: string]: QueryableStorageEntry<ApiType>;66    };67    balances: {68      /**69       * The Balances pallet example of storing the balance of an account.70       * 71       * # Example72       * 73       * ```nocompile74       * impl pallet_balances::Config for Runtime {75       * type AccountStore = StorageMapShim<Self::Account<Runtime>, frame_system::Provider<Runtime>, AccountId, Self::AccountData<Balance>>76       * }77       * ```78       * 79       * You can also store the balance of an account in the `System` pallet.80       * 81       * # Example82       * 83       * ```nocompile84       * impl pallet_balances::Config for Runtime {85       * type AccountStore = System86       * }87       * ```88       * 89       * But this comes with tradeoffs, storing account balances in the system pallet stores90       * `frame_system` data alongside the account data contrary to storing account balances in the91       * `Balances` pallet, which uses a `StorageMap` to store balances data only.92       * NOTE: This is only used in the case that this pallet is used to store balances.93       **/94      account: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<PalletBalancesAccountData>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;95      /**96       * Any liquidity locks on some account balances.97       * NOTE: Should only be accessed when setting, changing and freeing a lock.98       **/99      locks: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<PalletBalancesBalanceLock>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;100      /**101       * Named reserves on some account balances.102       **/103      reserves: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<PalletBalancesReserveData>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;104      /**105       * Storage version of the pallet.106       * 107       * This is set to v2.0.0 for new networks.108       **/109      storageVersion: AugmentedQuery<ApiType, () => Observable<PalletBalancesReleases>, []> & QueryableStorageEntry<ApiType, []>;110      /**111       * The total units issued in the system.112       **/113      totalIssuance: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;114      /**115       * Generic query116       **/117      [key: string]: QueryableStorageEntry<ApiType>;118    };119    charging: {120      /**121       * Generic query122       **/123      [key: string]: QueryableStorageEntry<ApiType>;124    };125    common: {126      /**127       * Storage of the amount of collection admins.128       **/129      adminAmount: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;130      /**131       * Allowlisted collection users.132       **/133      allowlist: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;134      /**135       * Storage of collection info.136       **/137      collectionById: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<UpDataStructsCollection>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;138      /**139       * Storage of collection properties.140       **/141      collectionProperties: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<UpDataStructsProperties>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;142      /**143       * Storage of token property permissions of a collection.144       **/145      collectionPropertyPermissions: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<BTreeMap<Bytes, UpDataStructsPropertyPermission>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;146      /**147       * Storage of the count of created collections. Essentially contains the last collection ID.148       **/149      createdCollectionCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;150      /**151       * Storage of the count of deleted collections.152       **/153      destroyedCollectionCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;154      /**155       * Not used by code, exists only to provide some types to metadata.156       **/157      dummyStorageValue: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[UpDataStructsCollectionStats, u32, u32, UpDataStructsTokenChild, PhantomTypeUpDataStructs]>>>, []> & QueryableStorageEntry<ApiType, []>;158      /**159       * List of collection admins.160       **/161      isAdmin: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;162      /**163       * Generic query164       **/165      [key: string]: QueryableStorageEntry<ApiType>;166    };167    configuration: {168      appPromomotionConfigurationOverride: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[Option<u32>, Option<Perbill>, Option<u32>, Option<u8>]>>>, []> & QueryableStorageEntry<ApiType, []>;169      minGasPriceOverride: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;170      weightToFeeCoefficientOverride: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;171      xcmAllowedLocationsOverride: AugmentedQuery<ApiType, () => Observable<Option<Vec<XcmV1MultiLocation>>>, []> & QueryableStorageEntry<ApiType, []>;172      /**173       * Generic query174       **/175      [key: string]: QueryableStorageEntry<ApiType>;176    };177    dmpQueue: {178      /**179       * The configuration.180       **/181      configuration: AugmentedQuery<ApiType, () => Observable<CumulusPalletDmpQueueConfigData>, []> & QueryableStorageEntry<ApiType, []>;182      /**183       * The overweight messages.184       **/185      overweight: AugmentedQuery<ApiType, (arg: u64 | AnyNumber | Uint8Array) => Observable<Option<ITuple<[u32, Bytes]>>>, [u64]> & QueryableStorageEntry<ApiType, [u64]>;186      /**187       * The page index.188       **/189      pageIndex: AugmentedQuery<ApiType, () => Observable<CumulusPalletDmpQueuePageIndexData>, []> & QueryableStorageEntry<ApiType, []>;190      /**191       * The queue pages.192       **/193      pages: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[u32, Bytes]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;194      /**195       * Generic query196       **/197      [key: string]: QueryableStorageEntry<ApiType>;198    };199    ethereum: {200      blockHash: AugmentedQuery<ApiType, (arg: U256 | AnyNumber | Uint8Array) => Observable<H256>, [U256]> & QueryableStorageEntry<ApiType, [U256]>;201      /**202       * The current Ethereum block.203       **/204      currentBlock: AugmentedQuery<ApiType, () => Observable<Option<EthereumBlock>>, []> & QueryableStorageEntry<ApiType, []>;205      /**206       * The current Ethereum receipts.207       **/208      currentReceipts: AugmentedQuery<ApiType, () => Observable<Option<Vec<EthereumReceiptReceiptV3>>>, []> & QueryableStorageEntry<ApiType, []>;209      /**210       * The current transaction statuses.211       **/212      currentTransactionStatuses: AugmentedQuery<ApiType, () => Observable<Option<Vec<FpRpcTransactionStatus>>>, []> & QueryableStorageEntry<ApiType, []>;213      /**214       * Injected transactions should have unique nonce, here we store current215       **/216      injectedNonce: AugmentedQuery<ApiType, () => Observable<U256>, []> & QueryableStorageEntry<ApiType, []>;217      /**218       * Current building block's transactions and receipts.219       **/220      pending: AugmentedQuery<ApiType, () => Observable<Vec<ITuple<[EthereumTransactionTransactionV2, FpRpcTransactionStatus, EthereumReceiptReceiptV3]>>>, []> & QueryableStorageEntry<ApiType, []>;221      /**222       * Generic query223       **/224      [key: string]: QueryableStorageEntry<ApiType>;225    };226    evm: {227      accountCodes: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<Bytes>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;228      accountStorages: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H256 | string | Uint8Array) => Observable<H256>, [H160, H256]> & QueryableStorageEntry<ApiType, [H160, H256]>;229      /**230       * Written on log, reset after transaction231       * Should be empty between transactions232       **/233      currentLogs: AugmentedQuery<ApiType, () => Observable<Vec<EthereumLog>>, []> & QueryableStorageEntry<ApiType, []>;234      /**235       * Generic query236       **/237      [key: string]: QueryableStorageEntry<ApiType>;238    };239    evmCoderSubstrate: {240      /**241       * Generic query242       **/243      [key: string]: QueryableStorageEntry<ApiType>;244    };245    evmContractHelpers: {246      /**247       * Storage for users that allowed for sponsorship.248       * 249       * ### Usage250       * Prefer to delete record from storage if user no more allowed for sponsorship.251       * 252       * * **Key1** - contract address.253       * * **Key2** - user that allowed for sponsorship.254       * * **Value** - allowance for sponsorship.255       **/256      allowlist: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<bool>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;257      /**258       * Storege for contracts with [`Allowlisted`](SponsoringModeT::Allowlisted) sponsoring mode.259       * 260       * ### Usage261       * Prefer to delete collection from storage if mode chaged to non `Allowlisted`, than set **Value** to **false**.262       * 263       * * **Key** - contract address.264       * * **Value** - is contract in [`Allowlisted`](SponsoringModeT::Allowlisted) mode.265       **/266      allowlistEnabled: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;267      /**268       * Store owner for contract.269       * 270       * * **Key** - contract address.271       * * **Value** - owner for contract.272       **/273      owner: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<H160>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;274      selfSponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;275      sponsorBasket: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<Option<u32>>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;276      /**277       * Store for contract sponsorship state.278       * 279       * * **Key** - contract address.280       * * **Value** - sponsorship state.281       **/282      sponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<UpDataStructsSponsorshipStateBasicCrossAccountIdRepr>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;283      /**284       * Storage for last sponsored block.285       * 286       * * **Key1** - contract address.287       * * **Key2** - sponsored user address.288       * * **Value** - last sponsored block number.289       **/290      sponsoringFeeLimit: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<BTreeMap<u32, U256>>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;291      /**292       * Store for sponsoring mode.293       * 294       * ### Usage295       * Prefer to delete collection from storage if mode chaged to [`Disabled`](SponsoringModeT::Disabled).296       * 297       * * **Key** - contract address.298       * * **Value** - [`sponsoring mode`](SponsoringModeT).299       **/300      sponsoringMode: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<Option<PalletEvmContractHelpersSponsoringModeT>>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;301      /**302       * Storage for sponsoring rate limit in blocks.303       * 304       * * **Key** - contract address.305       * * **Value** - amount of sponsored blocks.306       **/307      sponsoringRateLimit: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<u32>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;308      /**309       * Generic query310       **/311      [key: string]: QueryableStorageEntry<ApiType>;312    };313    evmMigration: {314      migrationPending: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;315      /**316       * Generic query317       **/318      [key: string]: QueryableStorageEntry<ApiType>;319    };320    foreignAssets: {321      /**322       * The storages for assets to fungible collection binding323       * 324       **/325      assetBinding: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;326      /**327       * The storages for AssetMetadatas.328       * 329       * AssetMetadatas: map AssetIds => Option<AssetMetadata>330       **/331      assetMetadatas: AugmentedQuery<ApiType, (arg: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Option<PalletForeignAssetsModuleAssetMetadata>>, [PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeignAssetsAssetIds]>;332      /**333       * The storages for MultiLocations.334       * 335       * ForeignAssetLocations: map ForeignAssetId => Option<MultiLocation>336       **/337      foreignAssetLocations: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<XcmV1MultiLocation>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;338      /**339       * The storages for CurrencyIds.340       * 341       * LocationToCurrencyIds: map MultiLocation => Option<ForeignAssetId>342       **/343      locationToCurrencyIds: AugmentedQuery<ApiType, (arg: XcmV1MultiLocation | { parents?: any; interior?: any } | string | Uint8Array) => Observable<Option<u32>>, [XcmV1MultiLocation]> & QueryableStorageEntry<ApiType, [XcmV1MultiLocation]>;344      /**345       * Next available Foreign AssetId ID.346       * 347       * NextForeignAssetId: ForeignAssetId348       **/349      nextForeignAssetId: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;350      /**351       * Generic query352       **/353      [key: string]: QueryableStorageEntry<ApiType>;354    };355    fungible: {356      /**357       * Storage for assets delegated to a limited extent to other users.358       **/359      allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;360      /**361       * Amount of tokens owned by an account inside a collection.362       **/363      balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;364      /**365       * Total amount of fungible tokens inside a collection.366       **/367      totalSupply: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;368      /**369       * Generic query370       **/371      [key: string]: QueryableStorageEntry<ApiType>;372    };373    inflation: {374      /**375       * Current inflation for `InflationBlockInterval` number of blocks376       **/377      blockInflation: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;378      /**379       * Next target (relay) block when inflation will be applied380       **/381      nextInflationBlock: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;382      /**383       * Next target (relay) block when inflation is recalculated384       **/385      nextRecalculationBlock: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;386      /**387       * Relay block when inflation has started388       **/389      startBlock: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;390      /**391       * starting year total issuance392       **/393      startingYearTotalIssuance: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;394      /**395       * Generic query396       **/397      [key: string]: QueryableStorageEntry<ApiType>;398    };399    maintenance: {400      enabled: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;401      /**402       * Generic query403       **/404      [key: string]: QueryableStorageEntry<ApiType>;405    };406    nonfungible: {407      /**408       * Amount of tokens owned by an account in a collection.409       **/410      accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;411      /**412       * Allowance set by a token owner for another user to perform one of certain transactions on a token.413       **/414      allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletEvmAccountBasicCrossAccountIdRepr>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;415      /**416       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.417       **/418      collectionAllowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;419      /**420       * Used to enumerate tokens owned by account.421       **/422      owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;423      /**424       * Custom data of a token that is serialized to bytes,425       * primarily reserved for on-chain operations,426       * normally obscured from the external users.427       * 428       * Auxiliary properties are slightly different from429       * usual [`TokenProperties`] due to an unlimited number430       * and separately stored and written-to key-value pairs.431       * 432       * Currently used to store RMRK data.433       **/434      tokenAuxProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: UpDataStructsPropertyScope | 'None' | 'Rmrk' | number | Uint8Array, arg4: Bytes | string | Uint8Array) => Observable<Option<Bytes>>, [u32, u32, UpDataStructsPropertyScope, Bytes]> & QueryableStorageEntry<ApiType, [u32, u32, UpDataStructsPropertyScope, Bytes]>;435      /**436       * Used to enumerate token's children.437       **/438      tokenChildren: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: ITuple<[u32, u32]> | [u32 | AnyNumber | Uint8Array, u32 | AnyNumber | Uint8Array]) => Observable<bool>, [u32, u32, ITuple<[u32, u32]>]> & QueryableStorageEntry<ApiType, [u32, u32, ITuple<[u32, u32]>]>;439      /**440       * Token data, used to partially describe a token.441       **/442      tokenData: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletNonfungibleItemData>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;443      /**444       * Map of key-value pairs, describing the metadata of a token.445       **/446      tokenProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<UpDataStructsProperties>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;447      /**448       * Amount of burnt tokens in a collection.449       **/450      tokensBurnt: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;451      /**452       * Total amount of minted tokens in a collection.453       **/454      tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;455      /**456       * Generic query457       **/458      [key: string]: QueryableStorageEntry<ApiType>;459    };460    parachainInfo: {461      parachainId: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;462      /**463       * Generic query464       **/465      [key: string]: QueryableStorageEntry<ApiType>;466    };467    parachainSystem: {468      /**469       * The number of HRMP messages we observed in `on_initialize` and thus used that number for470       * announcing the weight of `on_initialize` and `on_finalize`.471       **/472      announcedHrmpMessagesPerCandidate: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;473      /**474       * The next authorized upgrade, if there is one.475       **/476      authorizedUpgrade: AugmentedQuery<ApiType, () => Observable<Option<H256>>, []> & QueryableStorageEntry<ApiType, []>;477      /**478       * A custom head data that should be returned as result of `validate_block`.479       * 480       * See [`Pallet::set_custom_validation_head_data`] for more information.481       **/482      customValidationHeadData: AugmentedQuery<ApiType, () => Observable<Option<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;483      /**484       * Were the validation data set to notify the relay chain?485       **/486      didSetValidationCode: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;487      /**488       * The parachain host configuration that was obtained from the relay parent.489       * 490       * This field is meant to be updated each block with the validation data inherent. Therefore,491       * before processing of the inherent, e.g. in `on_initialize` this data may be stale.492       * 493       * This data is also absent from the genesis.494       **/495      hostConfiguration: AugmentedQuery<ApiType, () => Observable<Option<PolkadotPrimitivesV2AbridgedHostConfiguration>>, []> & QueryableStorageEntry<ApiType, []>;496      /**497       * HRMP messages that were sent in a block.498       * 499       * This will be cleared in `on_initialize` of each new block.500       **/501      hrmpOutboundMessages: AugmentedQuery<ApiType, () => Observable<Vec<PolkadotCorePrimitivesOutboundHrmpMessage>>, []> & QueryableStorageEntry<ApiType, []>;502      /**503       * HRMP watermark that was set in a block.504       * 505       * This will be cleared in `on_initialize` of each new block.506       **/507      hrmpWatermark: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;508      /**509       * The last downward message queue chain head we have observed.510       * 511       * This value is loaded before and saved after processing inbound downward messages carried512       * by the system inherent.513       **/514      lastDmqMqcHead: AugmentedQuery<ApiType, () => Observable<H256>, []> & QueryableStorageEntry<ApiType, []>;515      /**516       * The message queue chain heads we have observed per each channel incoming channel.517       * 518       * This value is loaded before and saved after processing inbound downward messages carried519       * by the system inherent.520       **/521      lastHrmpMqcHeads: AugmentedQuery<ApiType, () => Observable<BTreeMap<u32, H256>>, []> & QueryableStorageEntry<ApiType, []>;522      /**523       * The relay chain block number associated with the last parachain block.524       **/525      lastRelayChainBlockNumber: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;526      /**527       * Validation code that is set by the parachain and is to be communicated to collator and528       * consequently the relay-chain.529       * 530       * This will be cleared in `on_initialize` of each new block if no other pallet already set531       * the value.532       **/533      newValidationCode: AugmentedQuery<ApiType, () => Observable<Option<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;534      /**535       * Upward messages that are still pending and not yet send to the relay chain.536       **/537      pendingUpwardMessages: AugmentedQuery<ApiType, () => Observable<Vec<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;538      /**539       * In case of a scheduled upgrade, this storage field contains the validation code to be applied.540       * 541       * As soon as the relay chain gives us the go-ahead signal, we will overwrite the [`:code`][well_known_keys::CODE]542       * which will result the next block process with the new validation code. This concludes the upgrade process.543       * 544       * [well_known_keys::CODE]: sp_core::storage::well_known_keys::CODE545       **/546      pendingValidationCode: AugmentedQuery<ApiType, () => Observable<Bytes>, []> & QueryableStorageEntry<ApiType, []>;547      /**548       * Number of downward messages processed in a block.549       * 550       * This will be cleared in `on_initialize` of each new block.551       **/552      processedDownwardMessages: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;553      /**554       * The state proof for the last relay parent block.555       * 556       * This field is meant to be updated each block with the validation data inherent. Therefore,557       * before processing of the inherent, e.g. in `on_initialize` this data may be stale.558       * 559       * This data is also absent from the genesis.560       **/561      relayStateProof: AugmentedQuery<ApiType, () => Observable<Option<SpTrieStorageProof>>, []> & QueryableStorageEntry<ApiType, []>;562      /**563       * The snapshot of some state related to messaging relevant to the current parachain as per564       * the relay parent.565       * 566       * This field is meant to be updated each block with the validation data inherent. Therefore,567       * before processing of the inherent, e.g. in `on_initialize` this data may be stale.568       * 569       * This data is also absent from the genesis.570       **/571      relevantMessagingState: AugmentedQuery<ApiType, () => Observable<Option<CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot>>, []> & QueryableStorageEntry<ApiType, []>;572      /**573       * The weight we reserve at the beginning of the block for processing DMP messages. This574       * overrides the amount set in the Config trait.575       **/576      reservedDmpWeightOverride: AugmentedQuery<ApiType, () => Observable<Option<SpWeightsWeightV2Weight>>, []> & QueryableStorageEntry<ApiType, []>;577      /**578       * The weight we reserve at the beginning of the block for processing XCMP messages. This579       * overrides the amount set in the Config trait.580       **/581      reservedXcmpWeightOverride: AugmentedQuery<ApiType, () => Observable<Option<SpWeightsWeightV2Weight>>, []> & QueryableStorageEntry<ApiType, []>;582      /**583       * An option which indicates if the relay-chain restricts signalling a validation code upgrade.584       * In other words, if this is `Some` and [`NewValidationCode`] is `Some` then the produced585       * candidate will be invalid.586       * 587       * This storage item is a mirror of the corresponding value for the current parachain from the588       * relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is589       * set after the inherent.590       **/591      upgradeRestrictionSignal: AugmentedQuery<ApiType, () => Observable<Option<PolkadotPrimitivesV2UpgradeRestriction>>, []> & QueryableStorageEntry<ApiType, []>;592      /**593       * Upward messages that were sent in a block.594       * 595       * This will be cleared in `on_initialize` of each new block.596       **/597      upwardMessages: AugmentedQuery<ApiType, () => Observable<Vec<Bytes>>, []> & QueryableStorageEntry<ApiType, []>;598      /**599       * The [`PersistedValidationData`] set for this block.600       * This value is expected to be set only once per block and it's never stored601       * in the trie.602       **/603      validationData: AugmentedQuery<ApiType, () => Observable<Option<PolkadotPrimitivesV2PersistedValidationData>>, []> & QueryableStorageEntry<ApiType, []>;604      /**605       * Generic query606       **/607      [key: string]: QueryableStorageEntry<ApiType>;608    };609    randomnessCollectiveFlip: {610      /**611       * Series of block headers from the last 81 blocks that acts as random seed material. This612       * is arranged as a ring buffer with `block_number % 81` being the index into the `Vec` of613       * the oldest hash.614       **/615      randomMaterial: AugmentedQuery<ApiType, () => Observable<Vec<H256>>, []> & QueryableStorageEntry<ApiType, []>;616      /**617       * Generic query618       **/619      [key: string]: QueryableStorageEntry<ApiType>;620    };621    refungible: {622      /**623       * Amount of tokens (not pieces) partially owned by an account within a collection.624       **/625      accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;626      /**627       * Allowance set by a token owner for another user to perform one of certain transactions on a number of pieces of a token.628       **/629      allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg4: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;630      /**631       * Amount of token pieces owned by account.632       **/633      balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]>;634      /**635       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.636       **/637      collectionAllowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;638      /**639       * Used to enumerate tokens owned by account.640       **/641      owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;642      /**643       * Token data, used to partially describe a token.644       **/645      tokenData: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<PalletRefungibleItemData>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;646      /**647       * Amount of pieces a refungible token is split into.648       **/649      tokenProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<UpDataStructsProperties>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;650      /**651       * Amount of tokens burnt in a collection.652       **/653      tokensBurnt: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;654      /**655       * Total amount of minted tokens in a collection.656       **/657      tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;658      /**659       * Total amount of pieces for token660       **/661      totalSupply: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;662      /**663       * Generic query664       **/665      [key: string]: QueryableStorageEntry<ApiType>;666    };667    rmrkCore: {668      /**669       * Latest yet-unused collection ID.670       **/671      collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;672      /**673       * Mapping from RMRK collection ID to Unique's.674       **/675      uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;676      /**677       * Generic query678       **/679      [key: string]: QueryableStorageEntry<ApiType>;680    };681    rmrkEquip: {682      /**683       * Checkmark that a Base has a Theme NFT named "default".684       **/685      baseHasDefaultTheme: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;686      /**687       * Map of a Base ID and a Part ID to an NFT in the Base collection serving as the Part.688       **/689      inernalPartId: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;690      /**691       * Generic query692       **/693      [key: string]: QueryableStorageEntry<ApiType>;694    };695    scheduler: {696      /**697       * Items to be executed, indexed by the block number that they should be executed on.698       **/699      agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<PalletUniqueSchedulerV2BlockAgenda>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;700      /**701       * It contains the block number from which we should service tasks.702       * It's used for delaying the servicing of future blocks' agendas if we had overweight tasks.703       **/704      incompleteSince: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;705      /**706       * Lookup from a name to the block number and index of the task.707       **/708      lookup: AugmentedQuery<ApiType, (arg: U8aFixed | string | Uint8Array) => Observable<Option<ITuple<[u32, u32]>>>, [U8aFixed]> & QueryableStorageEntry<ApiType, [U8aFixed]>;709      /**710       * Generic query711       **/712      [key: string]: QueryableStorageEntry<ApiType>;713    };714    structure: {715      /**716       * Generic query717       **/718      [key: string]: QueryableStorageEntry<ApiType>;719    };720    sudo: {721      /**722       * The `AccountId` of the sudo key.723       **/724      key: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;725      /**726       * Generic query727       **/728      [key: string]: QueryableStorageEntry<ApiType>;729    };730    system: {731      /**732       * The full account information for a particular account ID.733       **/734      account: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<FrameSystemAccountInfo>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;735      /**736       * Total length (in bytes) for all extrinsics put together, for the current block.737       **/738      allExtrinsicsLen: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;739      /**740       * Map of block numbers to block hashes.741       **/742      blockHash: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<H256>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;743      /**744       * The current weight for the block.745       **/746      blockWeight: AugmentedQuery<ApiType, () => Observable<FrameSupportDispatchPerDispatchClassWeight>, []> & QueryableStorageEntry<ApiType, []>;747      /**748       * Digest of the current block, also part of the block header.749       **/750      digest: AugmentedQuery<ApiType, () => Observable<SpRuntimeDigest>, []> & QueryableStorageEntry<ApiType, []>;751      /**752       * The number of events in the `Events<T>` list.753       **/754      eventCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;755      /**756       * Events deposited for the current block.757       * 758       * NOTE: The item is unbound and should therefore never be read on chain.759       * It could otherwise inflate the PoV size of a block.760       * 761       * Events have a large in-memory size. Box the events to not go out-of-memory762       * just in case someone still reads them from within the runtime.763       **/764      events: AugmentedQuery<ApiType, () => Observable<Vec<FrameSystemEventRecord>>, []> & QueryableStorageEntry<ApiType, []>;765      /**766       * Mapping between a topic (represented by T::Hash) and a vector of indexes767       * of events in the `<Events<T>>` list.768       * 769       * All topic vectors have deterministic storage locations depending on the topic. This770       * allows light-clients to leverage the changes trie storage tracking mechanism and771       * in case of changes fetch the list of events of interest.772       * 773       * The value has the type `(T::BlockNumber, EventIndex)` because if we used only just774       * the `EventIndex` then in case if the topic has the same contents on the next block775       * no notification will be triggered thus the event might be lost.776       **/777      eventTopics: AugmentedQuery<ApiType, (arg: H256 | string | Uint8Array) => Observable<Vec<ITuple<[u32, u32]>>>, [H256]> & QueryableStorageEntry<ApiType, [H256]>;778      /**779       * The execution phase of the block.780       **/781      executionPhase: AugmentedQuery<ApiType, () => Observable<Option<FrameSystemPhase>>, []> & QueryableStorageEntry<ApiType, []>;782      /**783       * Total extrinsics count for the current block.784       **/785      extrinsicCount: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;786      /**787       * Extrinsics data for the current block (maps an extrinsic's index to its data).788       **/789      extrinsicData: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;790      /**791       * Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.792       **/793      lastRuntimeUpgrade: AugmentedQuery<ApiType, () => Observable<Option<FrameSystemLastRuntimeUpgradeInfo>>, []> & QueryableStorageEntry<ApiType, []>;794      /**795       * The current block number being processed. Set by `execute_block`.796       **/797      number: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;798      /**799       * Hash of the previous block.800       **/801      parentHash: AugmentedQuery<ApiType, () => Observable<H256>, []> & QueryableStorageEntry<ApiType, []>;802      /**803       * True if we have upgraded so that AccountInfo contains three types of `RefCount`. False804       * (default) if not.805       **/806      upgradedToTripleRefCount: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;807      /**808       * True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.809       **/810      upgradedToU32RefCount: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;811      /**812       * Generic query813       **/814      [key: string]: QueryableStorageEntry<ApiType>;815    };816    testUtils: {817      enabled: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;818      testValue: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;819      /**820       * Generic query821       **/822      [key: string]: QueryableStorageEntry<ApiType>;823    };824    timestamp: {825      /**826       * Did the timestamp get updated in this block?827       **/828      didUpdate: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;829      /**830       * Current time for the current block.831       **/832      now: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;833      /**834       * Generic query835       **/836      [key: string]: QueryableStorageEntry<ApiType>;837    };838    tokens: {839      /**840       * The balance of a token type under an account.841       * 842       * NOTE: If the total is ever zero, decrease account ref account.843       * 844       * NOTE: This is only used in the case that this module is used to store845       * balances.846       **/847      accounts: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<OrmlTokensAccountData>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;848      /**849       * Any liquidity locks of a token type under an account.850       * NOTE: Should only be accessed when setting, changing and freeing a lock.851       **/852      locks: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensBalanceLock>>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;853      /**854       * Named reserves on some account balances.855       **/856      reserves: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensReserveData>>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;857      /**858       * The total issuance of a token type.859       **/860      totalIssuance: AugmentedQuery<ApiType, (arg: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<u128>, [PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeignAssetsAssetIds]>;861      /**862       * Generic query863       **/864      [key: string]: QueryableStorageEntry<ApiType>;865    };866    transactionPayment: {867      nextFeeMultiplier: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;868      storageVersion: AugmentedQuery<ApiType, () => Observable<PalletTransactionPaymentReleases>, []> & QueryableStorageEntry<ApiType, []>;869      /**870       * Generic query871       **/872      [key: string]: QueryableStorageEntry<ApiType>;873    };874    treasury: {875      /**876       * Proposal indices that have been approved but not yet awarded.877       **/878      approvals: AugmentedQuery<ApiType, () => Observable<Vec<u32>>, []> & QueryableStorageEntry<ApiType, []>;879      /**880       * Number of proposals that have been made.881       **/882      proposalCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;883      /**884       * Proposals that have been made.885       **/886      proposals: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletTreasuryProposal>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;887      /**888       * Generic query889       **/890      [key: string]: QueryableStorageEntry<ApiType>;891    };892    unique: {893      /**894       * Used for migrations895       **/896      chainVersion: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;897      /**898       * (Collection id (controlled?2), who created (real))899       * TODO: Off chain worker should remove from this map when collection gets removed900       **/901      createItemBasket: AugmentedQuery<ApiType, (arg: ITuple<[u32, AccountId32]> | [u32 | AnyNumber | Uint8Array, AccountId32 | string | Uint8Array]) => Observable<Option<u32>>, [ITuple<[u32, AccountId32]>]> & QueryableStorageEntry<ApiType, [ITuple<[u32, AccountId32]>]>;902      /**903       * Last sponsoring of fungible tokens approval in a collection904       **/905      fungibleApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;906      /**907       * Collection id (controlled?2), owning user (real)908       **/909      fungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;910      /**911       * Last sponsoring of NFT approval in a collection912       **/913      nftApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;914      /**915       * Collection id (controlled?2), token id (controlled?2)916       **/917      nftTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;918      /**919       * Last sponsoring of RFT approval in a collection920       **/921      refungibleApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, u32, AccountId32]>;922      /**923       * Collection id (controlled?2), token id (controlled?2)924       **/925      reFungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, u32, AccountId32]>;926      /**927       * Last sponsoring of token property setting // todo:doc rephrase this and the following928       **/929      tokenPropertyBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;930      /**931       * Variable metadata sponsoring932       * Collection id (controlled?2), token id (controlled?2)933       **/934      variableMetaDataBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;935      /**936       * Generic query937       **/938      [key: string]: QueryableStorageEntry<ApiType>;939    };940    vesting: {941      /**942       * Vesting schedules of an account.943       * 944       * VestingSchedules: map AccountId => Vec<VestingSchedule>945       **/946      vestingSchedules: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<OrmlVestingVestingSchedule>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;947      /**948       * Generic query949       **/950      [key: string]: QueryableStorageEntry<ApiType>;951    };952    xcmpQueue: {953      /**954       * Inbound aggregate XCMP messages. It can only be one per ParaId/block.955       **/956      inboundXcmpMessages: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;957      /**958       * Status of the inbound XCMP channels.959       **/960      inboundXcmpStatus: AugmentedQuery<ApiType, () => Observable<Vec<CumulusPalletXcmpQueueInboundChannelDetails>>, []> & QueryableStorageEntry<ApiType, []>;961      /**962       * The messages outbound in a given XCMP channel.963       **/964      outboundXcmpMessages: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u16 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32, u16]> & QueryableStorageEntry<ApiType, [u32, u16]>;965      /**966       * The non-empty XCMP channels in order of becoming non-empty, and the index of the first967       * and last outbound message. If the two indices are equal, then it indicates an empty968       * queue and there must be a non-`Ok` `OutboundStatus`. We assume queues grow no greater969       * than 65535 items. Queue indices for normal messages begin at one; zero is reserved in970       * case of the need to send a high-priority signal message this block.971       * The bool is true if there is a signal message waiting to be sent.972       **/973      outboundXcmpStatus: AugmentedQuery<ApiType, () => Observable<Vec<CumulusPalletXcmpQueueOutboundChannelDetails>>, []> & QueryableStorageEntry<ApiType, []>;974      /**975       * The messages that exceeded max individual message weight budget.976       * 977       * These message stay in this storage map until they are manually dispatched via978       * `service_overweight`.979       **/980      overweight: AugmentedQuery<ApiType, (arg: u64 | AnyNumber | Uint8Array) => Observable<Option<ITuple<[u32, u32, Bytes]>>>, [u64]> & QueryableStorageEntry<ApiType, [u64]>;981      /**982       * The number of overweight messages ever recorded in `Overweight`. Also doubles as the next983       * available free overweight index.984       **/985      overweightCount: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;986      /**987       * The configuration which controls the dynamics of the outbound queue.988       **/989      queueConfig: AugmentedQuery<ApiType, () => Observable<CumulusPalletXcmpQueueQueueConfigData>, []> & QueryableStorageEntry<ApiType, []>;990      /**991       * Whether or not the XCMP queue is suspended from executing incoming XCMs or not.992       **/993      queueSuspended: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;994      /**995       * Any signal messages waiting to be sent.996       **/997      signalMessages: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;998      /**999       * Generic query1000       **/1001      [key: string]: QueryableStorageEntry<ApiType>;1002    };1003  } // AugmentedQueries1004} // declare module
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -215,6 +215,7 @@
       [key: string]: SubmittableExtrinsicFunction<ApiType>;
     };
     configuration: {
+      setAppPromotionConfigurationOverride: AugmentedSubmittable<(recalculationInterval: Option<u32> | null | Uint8Array | u32 | AnyNumber, pendingInterval: Option<u32> | null | Uint8Array | u32 | AnyNumber, stakersPayoutLimit: Option<u8> | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u32>, Option<u32>, Option<u8>]>;
       setMinGasPriceOverride: AugmentedSubmittable<(coeff: Option<u64> | null | Uint8Array | u64 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u64>]>;
       setWeightToFeeCoefficientOverride: AugmentedSubmittable<(coeff: Option<u32> | null | Uint8Array | u32 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
       setXcmAllowedLocations: AugmentedSubmittable<(locations: Option<Vec<XcmV1MultiLocation>> | null | Uint8Array | Vec<XcmV1MultiLocation> | (XcmV1MultiLocation | { parents?: any; interior?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [Option<Vec<XcmV1MultiLocation>>]>;