From 575f7b90cea38d4a231b89080f8b4928113bbefd Mon Sep 17 00:00:00 2001 From: tmpolaczyk <44604217+tmpolaczyk@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:52:27 +0100 Subject: [PATCH] Add pallet_external_validators, remove ValidatorManager (#722) --- Cargo.lock | 25 + Cargo.toml | 1 + pallets/external-validators/Cargo.toml | 77 ++ .../external-validators/src/benchmarking.rs | 237 +++++ pallets/external-validators/src/lib.rs | 633 ++++++++++++ pallets/external-validators/src/mock.rs | 342 +++++++ pallets/external-validators/src/tests.rs | 269 +++++ pallets/external-validators/src/weights.rs | 220 ++++ pallets/invulnerables/src/lib.rs | 19 +- pallets/invulnerables/src/mock.rs | 6 +- pallets/invulnerables/src/tests.rs | 1 - primitives/traits/src/lib.rs | 53 +- runtime/common/Cargo.toml | 7 + runtime/common/src/migrations.rs | 57 +- runtime/dancebox/src/lib.rs | 8 +- runtime/flashbox/src/lib.rs | 8 +- solo-chains/runtime/dancelight/Cargo.toml | 4 + .../dancelight/src/genesis_config_presets.rs | 11 +- solo-chains/runtime/dancelight/src/lib.rs | 41 +- .../dancelight/src/tests/common/mod.rs | 11 + .../src/tests/external_validators_tests.rs | 633 ++++++++++++ .../dancelight/src/tests/migrations_test.rs | 47 +- .../runtime/dancelight/src/tests/mod.rs | 1 + .../dancelight/src/validator_manager.rs | 151 --- .../runtime/dancelight/src/weights/mod.rs | 1 + .../src/weights/pallet_external_validators.rs | 132 +++ .../test-external-validators.ts | 47 + .../dancebox/interfaces/augment-api-events.ts | 11 - .../dancebox/interfaces/augment-api-query.ts | 2 +- .../src/dancebox/interfaces/augment-api-tx.ts | 2 +- .../src/dancebox/interfaces/lookup.ts | 236 +++-- .../src/dancebox/interfaces/types-lookup.ts | 224 ++--- .../interfaces/augment-api-consts.ts | 22 + .../interfaces/augment-api-errors.ts | 14 + .../interfaces/augment-api-events.ts | 36 +- .../interfaces/augment-api-query.ts | 50 +- .../dancelight/interfaces/augment-api-tx.ts | 70 +- .../src/dancelight/interfaces/lookup.ts | 929 ++++++++--------- .../src/dancelight/interfaces/registry.ts | 14 +- .../src/dancelight/interfaces/types-lookup.ts | 938 +++++++++--------- .../flashbox/interfaces/augment-api-events.ts | 13 +- .../flashbox/interfaces/augment-api-query.ts | 2 +- .../src/flashbox/interfaces/augment-api-tx.ts | 2 +- .../src/flashbox/interfaces/lookup.ts | 98 +- .../src/flashbox/interfaces/types-lookup.ts | 102 +- 45 files changed, 4283 insertions(+), 1524 deletions(-) create mode 100644 pallets/external-validators/Cargo.toml create mode 100644 pallets/external-validators/src/benchmarking.rs create mode 100644 pallets/external-validators/src/lib.rs create mode 100644 pallets/external-validators/src/mock.rs create mode 100644 pallets/external-validators/src/tests.rs create mode 100644 pallets/external-validators/src/weights.rs create mode 100644 solo-chains/runtime/dancelight/src/tests/external_validators_tests.rs delete mode 100644 solo-chains/runtime/dancelight/src/validator_manager.rs create mode 100644 solo-chains/runtime/dancelight/src/weights/pallet_external_validators.rs create mode 100644 test/suites/dev-tanssi-relay/external-validators/test-external-validators.ts diff --git a/Cargo.lock b/Cargo.lock index 8779f6f6c..48c6a9396 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3249,6 +3249,7 @@ dependencies = [ "pallet-data-preservers", "pallet-democracy", "pallet-elections-phragmen", + "pallet-external-validators", "pallet-grandpa", "pallet-identity", "pallet-inflation-rewards", @@ -9363,6 +9364,28 @@ dependencies = [ "xcm-primitives", ] +[[package]] +name = "pallet-external-validators" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "rand", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "tp-traits", +] + [[package]] name = "pallet-fast-unstake" version = "36.0.0" @@ -17556,12 +17579,14 @@ dependencies = [ "pallet-beefy-mmr", "pallet-configuration", "pallet-data-preservers", + "pallet-external-validators", "pallet-foreign-asset-creator", "pallet-invulnerables", "pallet-migrations 0.1.0", "pallet-pooled-staking", "pallet-registrar", "pallet-services-payment", + "pallet-session", "pallet-treasury", "pallet-xcm", "parity-scale-codec", diff --git a/Cargo.toml b/Cargo.toml index 152b826c4..9af1b85be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,6 +60,7 @@ pallet-collator-assignment-runtime-api = { path = "pallets/collator-assignment/r pallet-configuration = { path = "pallets/configuration", default-features = false } pallet-data-preservers = { path = "pallets/data-preservers", default-features = false } pallet-data-preservers-runtime-api = { path = "pallets/data-preservers/runtime-api", default-features = false } +pallet-external-validators = { path = "pallets/external-validators", default-features = false } pallet-inflation-rewards = { path = "pallets/inflation-rewards", default-features = false } pallet-initializer = { path = "pallets/initializer", default-features = false } pallet-invulnerables = { path = "pallets/invulnerables", default-features = false } diff --git a/pallets/external-validators/Cargo.toml b/pallets/external-validators/Cargo.toml new file mode 100644 index 000000000..56c18866b --- /dev/null +++ b/pallets/external-validators/Cargo.toml @@ -0,0 +1,77 @@ +[package] +name = "pallet-external-validators" +authors = { workspace = true } +description = "Simple pallet to store external validators." +edition = "2021" +license = "GPL-3.0-only" +version = "0.1.0" + +[package.metadata.docs.rs] +targets = [ "x86_64-unknown-linux-gnu" ] + +[lints] +workspace = true + +[dependencies] +log = { workspace = true } +parity-scale-codec = { workspace = true } +rand = { workspace = true, optional = true } +scale-info = { workspace = true, features = [ "derive" ] } + +frame-support = { workspace = true } +frame-system = { workspace = true } +sp-runtime = { workspace = true } +sp-staking = { workspace = true } +sp-std = { workspace = true } +tp-traits = { workspace = true } + +frame-benchmarking = { workspace = true } + +pallet-balances = { workspace = true, optional = true } +pallet-session = { workspace = true, features = [ "historical" ] } + +[dev-dependencies] +pallet-timestamp = { workspace = true } +sp-core = { workspace = true } +sp-io = { workspace = true } + +[features] +default = [ "std" ] +std = [ + "frame-benchmarking/std", + "frame-support/std", + "frame-system/std", + "log/std", + "pallet-balances/std", + "pallet-session/std", + "pallet-timestamp/std", + "parity-scale-codec/std", + "rand?/std", + "scale-info/std", + "sp-core/std", + "sp-io/std", + "sp-runtime/std", + "sp-staking/std", + "sp-std/std", + "tp-traits/std", +] +runtime-benchmarks = [ + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "pallet-balances/runtime-benchmarks", + "pallet-timestamp/runtime-benchmarks", + "rand", + "sp-runtime/runtime-benchmarks", + "sp-staking/runtime-benchmarks", + "tp-traits/runtime-benchmarks", +] + +try-runtime = [ + "frame-support/try-runtime", + "frame-system/try-runtime", + "pallet-balances?/try-runtime", + "pallet-session/try-runtime", + "pallet-timestamp/try-runtime", + "sp-runtime/try-runtime", +] diff --git a/pallets/external-validators/src/benchmarking.rs b/pallets/external-validators/src/benchmarking.rs new file mode 100644 index 000000000..73947bb22 --- /dev/null +++ b/pallets/external-validators/src/benchmarking.rs @@ -0,0 +1,237 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +//! Benchmarking setup for pallet_external_validators + +use super::*; + +#[allow(unused)] +use crate::Pallet as ExternalValidators; +use { + frame_benchmarking::{account, v2::*, BenchmarkError}, + frame_support::{ + pallet_prelude::*, + traits::{tokens::fungible::Balanced, Currency, EnsureOrigin, Get}, + }, + frame_system::{EventRecord, RawOrigin}, + pallet_session::{self as session, SessionManager}, + sp_runtime::traits::{AtLeast32BitUnsigned, Convert}, + sp_std::prelude::*, + tp_traits::DistributeRewards, +}; +const SEED: u32 = 0; + +fn assert_last_event(generic_event: ::RuntimeEvent) { + let events = frame_system::Pallet::::events(); + let system_event: ::RuntimeEvent = generic_event.into(); + // compare to the last event record + let EventRecord { event, .. } = &events[events.len() - 1]; + assert_eq!(event, &system_event); +} + +fn create_funded_user( + string: &'static str, + n: u32, + balance_factor: u32, +) -> T::AccountId { + let user = account(string, n, SEED); + let balance = as Currency>::minimum_balance() + * balance_factor.into(); + let _ = as Currency>::make_free_balance_be( + &user, balance, + ); + user +} + +fn keys(c: u32) -> ::Keys { + use rand::{RngCore, SeedableRng}; + + let keys = { + let mut keys = [0u8; 256]; + + if c > 0 { + let mut rng = rand::rngs::StdRng::seed_from_u64(u64::from(c)); + rng.fill_bytes(&mut keys); + } + + keys + }; + + Decode::decode(&mut &keys[..]).unwrap() +} + +fn invulnerable( + c: u32, +) -> ( + T::AccountId, + ::ValidatorId, + ::Keys, +) { + let funded_user = create_funded_user::("candidate", c, 100); + let collator_id = ::ValidatorIdOf::convert(funded_user.clone()) + .expect("Converstion of account id of collator id failed."); + (funded_user, collator_id, keys::(c)) +} + +fn invulnerables< + T: Config + frame_system::Config + pallet_session::Config + pallet_balances::Config, +>( + count: u32, +) -> Vec<(T::AccountId, ::ValidatorId)> { + let invulnerables = (0..count).map(|c| invulnerable::(c)).collect::>(); + + for (who, _collator_id, keys) in invulnerables.clone() { + >::set_keys(RawOrigin::Signed(who).into(), keys, Vec::new()).unwrap(); + } + + invulnerables + .into_iter() + .map(|(who, collator_id, _)| (who, collator_id)) + .collect() +} + +#[allow(clippy::multiple_bound_locations)] +#[benchmarks(where T: session::Config + pallet_balances::Config)] +mod benchmarks { + use super::*; + + #[benchmark] + fn skip_external_validators() -> Result<(), BenchmarkError> { + let origin = + T::UpdateOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?; + + #[extrinsic_call] + _(origin as T::RuntimeOrigin, true); + + Ok(()) + } + + #[benchmark] + fn add_whitelisted( + b: Linear<1, { T::MaxWhitelistedValidators::get() - 1 }>, + ) -> Result<(), BenchmarkError> { + let origin = + T::UpdateOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?; + + // now we need to fill up invulnerables + let invulnerables = invulnerables::(b); + + let (_account_ids, collator_ids): (Vec, Vec<::ValidatorId>) = + invulnerables.into_iter().unzip(); + + let invulnerables: frame_support::BoundedVec<_, T::MaxWhitelistedValidators> = + frame_support::BoundedVec::try_from(collator_ids).unwrap(); + >::put(invulnerables); + + let (new_invulnerable, _collator_id, keys) = invulnerable::(b + 1); + >::set_keys( + RawOrigin::Signed(new_invulnerable.clone()).into(), + keys, + Vec::new(), + ) + .unwrap(); + + #[extrinsic_call] + _(origin as T::RuntimeOrigin, new_invulnerable.clone()); + + assert_last_event::( + Event::WhitelistedValidatorAdded { + account_id: new_invulnerable, + } + .into(), + ); + Ok(()) + } + + #[benchmark] + fn remove_whitelisted( + b: Linear<{ 1 }, { T::MaxWhitelistedValidators::get() }>, + ) -> Result<(), BenchmarkError> { + let origin = + T::UpdateOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?; + let invulnerables = invulnerables::(b); + + let (account_ids, collator_ids): (Vec, Vec<::ValidatorId>) = + invulnerables.into_iter().unzip(); + + let invulnerables: frame_support::BoundedVec<_, T::MaxWhitelistedValidators> = + frame_support::BoundedVec::try_from(collator_ids).unwrap(); + >::put(invulnerables); + + let to_remove = account_ids.last().unwrap().clone(); + + #[extrinsic_call] + _(origin as T::RuntimeOrigin, to_remove.clone()); + + assert_last_event::( + Event::WhitelistedValidatorRemoved { + account_id: to_remove, + } + .into(), + ); + Ok(()) + } + + #[benchmark] + fn force_era() -> Result<(), BenchmarkError> { + let origin = + T::UpdateOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?; + + #[extrinsic_call] + _(origin as T::RuntimeOrigin, Forcing::ForceNew); + + Ok(()) + } + + // worst case for new session. + #[benchmark] + fn new_session( + r: Linear<1, { T::MaxWhitelistedValidators::get() }>, + ) -> Result<(), BenchmarkError> { + // start fresh + WhitelistedValidators::::kill(); + + let origin = + T::UpdateOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?; + + frame_system::Pallet::::set_block_number(0u32.into()); + // now we need to fill up invulnerables + let invulnerables = invulnerables::(r); + + let (account_ids, _collator_ids): (Vec, Vec<::ValidatorId>) = + invulnerables.into_iter().unzip(); + + for account in account_ids { + >::add_whitelisted(origin.clone(), account) + .expect("add whitelisted failed"); + } + + let new_era_session = T::SessionsPerEra::get(); + + #[block] + { + as SessionManager<_>>::new_session(new_era_session); + } + + Ok(()) + } + + impl_benchmark_test_suite!( + ExternalValidators, + crate::mock::new_test_ext(), + crate::mock::Test, + ); +} diff --git a/pallets/external-validators/src/lib.rs b/pallets/external-validators/src/lib.rs new file mode 100644 index 000000000..debfcca95 --- /dev/null +++ b/pallets/external-validators/src/lib.rs @@ -0,0 +1,633 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +//! ExternalValidators pallet. +//! +//! A pallet to manage external validators for a solochain. +//! +//! ## Terminology +//! +//! - WhitelistedValidators: Fixed validators set by root/governance. Have priority over the external validators. +//! - ExternalValidators: Validators set using storage proofs from another blockchain. Can be disabled by setting +//! `SkipExternalValidators` to true. +//! +//! Validators only change once per era. By default the era changes after a fixed number of sessions, but new eras +//! can be forced or disabled using a root extrinsic. +//! +//! The structure of this pallet and the concept of eras is inspired by `pallet_staking` from Polkadot. + +#![cfg_attr(not(feature = "std"), no_std)] + +pub use pallet::*; +use { + frame_support::pallet_prelude::Weight, + log::log, + parity_scale_codec::{Decode, Encode, MaxEncodedLen}, + scale_info::TypeInfo, + sp_runtime::traits::Get, + sp_runtime::RuntimeDebug, + sp_staking::SessionIndex, + sp_std::collections::btree_set::BTreeSet, + sp_std::vec::Vec, + tp_traits::{ + ActiveEraInfo, EraIndex, EraIndexProvider, InvulnerablesProvider, OnEraEnd, OnEraStart, + ValidatorProvider, + }, +}; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; +pub mod weights; + +#[frame_support::pallet] +pub mod pallet { + pub use crate::weights::WeightInfo; + + #[cfg(feature = "runtime-benchmarks")] + use frame_support::traits::Currency; + + use { + super::*, + frame_support::{ + dispatch::DispatchResultWithPostInfo, + pallet_prelude::*, + traits::{EnsureOrigin, UnixTime, ValidatorRegistration}, + BoundedVec, DefaultNoBound, + }, + frame_system::pallet_prelude::*, + sp_runtime::{traits::Convert, SaturatedConversion}, + sp_std::vec::Vec, + }; + + /// Configure the pallet by specifying the parameters and types on which it depends. + #[pallet::config] + pub trait Config: frame_system::Config { + /// Overarching event type. + type RuntimeEvent: From> + IsType<::RuntimeEvent>; + + /// Origin that can dictate updating parameters of this pallet. + type UpdateOrigin: EnsureOrigin; + + /// Number of eras to keep in history. + /// + /// Following information is kept for eras in `[current_era - + /// HistoryDepth, current_era]`: `ErasStartSessionIndex` + /// + /// Must be more than the number of eras delayed by session. + /// I.e. active era must always be in history. I.e. `active_era > + /// current_era - history_depth` must be guaranteed. + /// + /// If migrating an existing pallet from storage value to config value, + /// this should be set to same value or greater as in storage. + #[pallet::constant] + type HistoryDepth: Get; + + /// Maximum number of whitelisted validators. + #[pallet::constant] + type MaxWhitelistedValidators: Get; + + /// Maximum number of external validators. + #[pallet::constant] + type MaxExternalValidators: Get; + + /// A stable ID for a validator. + type ValidatorId: Member + + Parameter + + Ord + + MaybeSerializeDeserialize + + MaxEncodedLen + + TryFrom; + + /// A conversion from account ID to validator ID. + /// + /// Its cost must be at most one storage read. + type ValidatorIdOf: Convert>; + + /// Validate a user is registered + type ValidatorRegistration: ValidatorRegistration; + + /// Time used for computing era duration. + /// + /// It is guaranteed to start being called from the first `on_finalize`. Thus value at + /// genesis is not used. + type UnixTime: UnixTime; + + /// Number of sessions per era. + #[pallet::constant] + type SessionsPerEra: Get; + + type OnEraStart: OnEraStart; + type OnEraEnd: OnEraEnd; + + /// The weight information of this pallet. + type WeightInfo: WeightInfo; + + #[cfg(feature = "runtime-benchmarks")] + type Currency: Currency + + frame_support::traits::fungible::Balanced; + } + + #[pallet::pallet] + pub struct Pallet(_); + + /// Fixed validators set by root/governance. Have priority over the external validators. + #[pallet::storage] + pub type WhitelistedValidators = + StorageValue<_, BoundedVec, ValueQuery>; + + /// Validators set using storage proofs from another blockchain. Ignored if `SkipExternalValidators` is true. + #[pallet::storage] + pub type ExternalValidators = + StorageValue<_, BoundedVec, ValueQuery>; + + /// Allow to disable external validators. + #[pallet::storage] + pub type SkipExternalValidators = StorageValue<_, bool, ValueQuery>; + + /// The current era information, it is either ActiveEra or ActiveEra + 1 if the new era validators have been queued. + #[pallet::storage] + pub type CurrentEra = StorageValue<_, EraIndex>; + + /// The active era information, it holds index and start. + #[pallet::storage] + pub type ActiveEra = StorageValue<_, ActiveEraInfo>; + + /// The session index at which the era start for the last [`Config::HistoryDepth`] eras. + /// + /// Note: This tracks the starting session (i.e. session index when era start being active) + /// for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`. + #[pallet::storage] + pub type ErasStartSessionIndex = StorageMap<_, Twox64Concat, EraIndex, SessionIndex>; + + /// Mode of era forcing. + #[pallet::storage] + pub type ForceEra = StorageValue<_, Forcing, ValueQuery>; + + #[pallet::genesis_config] + #[derive(DefaultNoBound)] + pub struct GenesisConfig { + pub skip_external_validators: bool, + pub whitelisted_validators: Vec, + } + + #[pallet::genesis_build] + impl BuildGenesisConfig for GenesisConfig { + fn build(&self) { + let duplicate_validators = self + .whitelisted_validators + .iter() + // T::ValidatorId does not impl Ord or Hash so we cannot collect into set directly, + // but we can check for duplicates if we encode them first. + .map(|x| x.encode()) + .collect::>(); + assert!( + duplicate_validators.len() == self.whitelisted_validators.len(), + "duplicate validators in genesis." + ); + + let bounded_validators = BoundedVec::<_, T::MaxWhitelistedValidators>::try_from( + self.whitelisted_validators.clone(), + ) + .expect("genesis validators are more than T::MaxWhitelistedValidators"); + + >::put(bounded_validators); + >::put(self.skip_external_validators); + } + } + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event { + /// A new whitelisted validator was added. + WhitelistedValidatorAdded { account_id: T::AccountId }, + /// A whitelisted validator was removed. + WhitelistedValidatorRemoved { account_id: T::AccountId }, + /// A new era has started. + NewEra { era: EraIndex }, + /// A new force era mode was set. + ForceEra { mode: Forcing }, + } + + #[pallet::error] + pub enum Error { + /// There are too many whitelisted validators. + TooManyWhitelisted, + /// Account is already whitelisted. + AlreadyWhitelisted, + /// Account is not whitelisted. + NotWhitelisted, + /// Account does not have keys registered + NoKeysRegistered, + /// Unable to derive validator id from account id + UnableToDeriveValidatorId, + } + + #[pallet::call] + impl Pallet { + /// Allow to ignore external validators and use only whitelisted ones. + /// + /// The origin for this call must be the `UpdateOrigin`. + #[pallet::call_index(0)] + #[pallet::weight(T::WeightInfo::skip_external_validators())] + pub fn skip_external_validators(origin: OriginFor, skip: bool) -> DispatchResult { + T::UpdateOrigin::ensure_origin(origin)?; + + >::put(skip); + + Ok(()) + } + + /// Add a new account `who` to the list of `WhitelistedValidators`. + /// + /// The origin for this call must be the `UpdateOrigin`. + #[pallet::call_index(1)] + #[pallet::weight(T::WeightInfo::add_whitelisted( + T::MaxWhitelistedValidators::get().saturating_sub(1), + ))] + pub fn add_whitelisted( + origin: OriginFor, + who: T::AccountId, + ) -> DispatchResultWithPostInfo { + T::UpdateOrigin::ensure_origin(origin)?; + // don't let one unprepared collator ruin things for everyone. + let maybe_validator_id = T::ValidatorIdOf::convert(who.clone()) + .filter(T::ValidatorRegistration::is_registered); + + let validator_id = maybe_validator_id.ok_or(Error::::NoKeysRegistered)?; + + >::try_mutate(|whitelisted| -> DispatchResult { + if whitelisted.contains(&validator_id) { + Err(Error::::AlreadyWhitelisted)?; + } + whitelisted + .try_push(validator_id.clone()) + .map_err(|_| Error::::TooManyWhitelisted)?; + Ok(()) + })?; + + Self::deposit_event(Event::WhitelistedValidatorAdded { account_id: who }); + + let weight_used = ::WeightInfo::add_whitelisted( + WhitelistedValidators::::decode_len() + .unwrap_or_default() + .try_into() + .unwrap_or(T::MaxWhitelistedValidators::get().saturating_sub(1)), + ); + + Ok(Some(weight_used).into()) + } + + /// Remove an account `who` from the list of `WhitelistedValidators` collators. + /// + /// The origin for this call must be the `UpdateOrigin`. + #[pallet::call_index(2)] + #[pallet::weight(T::WeightInfo::remove_whitelisted(T::MaxWhitelistedValidators::get()))] + pub fn remove_whitelisted(origin: OriginFor, who: T::AccountId) -> DispatchResult { + T::UpdateOrigin::ensure_origin(origin)?; + + let validator_id = T::ValidatorIdOf::convert(who.clone()) + .ok_or(Error::::UnableToDeriveValidatorId)?; + + >::try_mutate(|whitelisted| -> DispatchResult { + let pos = whitelisted + .iter() + .position(|x| x == &validator_id) + .ok_or(Error::::NotWhitelisted)?; + whitelisted.remove(pos); + Ok(()) + })?; + + Self::deposit_event(Event::WhitelistedValidatorRemoved { account_id: who }); + Ok(()) + } + + /// Force when the next era will start. Possible values: next session, never, same as always. + #[pallet::call_index(3)] + #[pallet::weight(T::WeightInfo::force_era())] + pub fn force_era(origin: OriginFor, mode: Forcing) -> DispatchResult { + T::UpdateOrigin::ensure_origin(origin)?; + Self::set_force_era(mode); + Ok(()) + } + } + + impl Pallet { + pub fn set_external_validators(validators: Vec) -> DispatchResult { + // If more validators than max, take the first n + let validators = BoundedVec::truncate_from(validators); + >::put(validators); + + Ok(()) + } + + /// Helper to set a new `ForceEra` mode. + pub(crate) fn set_force_era(mode: Forcing) { + log::info!("Setting force era mode {:?}.", mode); + ForceEra::::put(mode); + Self::deposit_event(Event::::ForceEra { mode }); + } + + pub fn whitelisted_validators() -> Vec { + >::get().into() + } + + pub fn active_era() -> Option { + >::get() + } + + pub fn current_era() -> Option { + >::get() + } + + pub fn eras_start_session_index(era: EraIndex) -> Option { + >::get(era) + } + + /// Returns validators for the next session. Whitelisted validators first, then external validators. + /// The returned list is deduplicated, but the order is respected. + /// If `SkipExternalValidators` is true, this function will ignore external validators. + pub fn validators() -> Vec { + let mut validators: Vec<_> = WhitelistedValidators::::get().into(); + + if !SkipExternalValidators::::get() { + validators.extend(ExternalValidators::::get()) + } + + remove_duplicates(validators) + } + + /// Plan a new session potentially trigger a new era. + pub(crate) fn new_session(session_index: SessionIndex) -> Option> { + if let Some(current_era) = Self::current_era() { + // Initial era has been set. + let current_era_start_session_index = Self::eras_start_session_index(current_era) + .unwrap_or_else(|| { + frame_support::print( + "Error: start_session_index must be set for current_era", + ); + 0 + }); + + let era_length = session_index.saturating_sub(current_era_start_session_index); // Must never happen. + + match ForceEra::::get() { + // Will be set to `NotForcing` again if a new era has been triggered. + Forcing::ForceNew => (), + // Short circuit to `try_trigger_new_era`. + Forcing::ForceAlways => (), + // Only go to `try_trigger_new_era` if deadline reached. + Forcing::NotForcing if era_length >= T::SessionsPerEra::get() => (), + _ => { + // Either `Forcing::ForceNone`, + // or `Forcing::NotForcing if era_length < T::SessionsPerEra::get()`. + return None; + } + } + + // New era. + let maybe_new_era_validators = Self::try_trigger_new_era(session_index); + if maybe_new_era_validators.is_some() + && matches!(ForceEra::::get(), Forcing::ForceNew) + { + Self::set_force_era(Forcing::NotForcing); + } + + maybe_new_era_validators + } else { + // Set initial era. + log!(log::Level::Debug, "Starting the first era."); + Self::try_trigger_new_era(session_index) + } + } + + /// Start a session potentially starting an era. + pub(crate) fn start_session(start_session: SessionIndex) { + let next_active_era = Self::active_era().map(|e| e.index + 1).unwrap_or(0); + // This is only `Some` when current era has already progressed to the next era, while the + // active era is one behind (i.e. in the *last session of the active era*, or *first session + // of the new current era*, depending on how you look at it). + if let Some(next_active_era_start_session_index) = + Self::eras_start_session_index(next_active_era) + { + if next_active_era_start_session_index == start_session { + Self::start_era(start_session); + } else if next_active_era_start_session_index < start_session { + // This arm should never happen, but better handle it than to stall the pallet. + frame_support::print("Warning: A session appears to have been skipped."); + Self::start_era(start_session); + } + } + } + + /// End a session potentially ending an era. + pub(crate) fn end_session(session_index: SessionIndex) { + if let Some(active_era) = Self::active_era() { + if let Some(next_active_era_start_session_index) = + Self::eras_start_session_index(active_era.index + 1) + { + if next_active_era_start_session_index == session_index + 1 { + Self::end_era(active_era, session_index); + } + } + } + } + + /// Start a new era. It does: + /// * Increment `active_era.index`, + /// * reset `active_era.start`, + /// * emit `NewEra` event, + /// * call `OnEraStart` hook, + pub(crate) fn start_era(start_session: SessionIndex) { + let active_era = ActiveEra::::mutate(|active_era| { + let new_index = active_era.as_ref().map(|info| info.index + 1).unwrap_or(0); + *active_era = Some(ActiveEraInfo { + index: new_index, + // Set new active era start in next `on_finalize`. To guarantee usage of `Time` + start: None, + }); + new_index + }); + Self::deposit_event(Event::NewEra { era: active_era }); + T::OnEraStart::on_era_start(active_era, start_session); + } + + /// End era. It does: + /// * call `OnEraEnd` hook, + pub(crate) fn end_era(active_era: ActiveEraInfo, _session_index: SessionIndex) { + // Note: active_era.start can be None if end era is called during genesis config. + T::OnEraEnd::on_era_end(active_era.index); + } + + /// Plan a new era. + /// + /// * Bump the current era storage (which holds the latest planned era). + /// * Store start session index for the new planned era. + /// * Clean old era information. + /// + /// Returns the new validator set. + pub fn trigger_new_era(start_session_index: SessionIndex) -> Vec { + // Increment or set current era. + let new_planned_era = CurrentEra::::mutate(|s| { + *s = Some(s.map(|s| s + 1).unwrap_or(0)); + s.unwrap() + }); + ErasStartSessionIndex::::insert(&new_planned_era, &start_session_index); + + // Clean old era information. + if let Some(old_era) = new_planned_era.checked_sub(T::HistoryDepth::get() + 1) { + Self::clear_era_information(old_era); + } + + // Returns new validators + Self::validators() + } + + /// Potentially plan a new era. + /// + /// In case a new era is planned, the new validator set is returned. + pub(crate) fn try_trigger_new_era( + start_session_index: SessionIndex, + ) -> Option> { + Some(Self::trigger_new_era(start_session_index)) + } + + /// Clear all era information for given era. + pub(crate) fn clear_era_information(era_index: EraIndex) { + ErasStartSessionIndex::::remove(era_index); + } + } + + #[pallet::hooks] + impl Hooks> for Pallet { + fn on_initialize(_now: BlockNumberFor) -> Weight { + // just return the weight of the on_finalize. + T::DbWeight::get().reads(1) + } + + fn on_finalize(_n: BlockNumberFor) { + // Set the start of the first era. + if let Some(mut active_era) = >::get() { + if active_era.start.is_none() { + let now_as_millis_u64 = T::UnixTime::now().as_millis().saturated_into::(); + active_era.start = Some(now_as_millis_u64); + // This write only ever happens once, we don't include it in the weight in + // general + ActiveEra::::put(active_era); + } + } + // `on_finalize` weight is tracked in `on_initialize` + } + } +} + +/// Keeps only the first instance of each element in the input vec. Respects ordering of elements. +fn remove_duplicates(input: Vec) -> Vec { + let mut seen = BTreeSet::new(); + let mut result = Vec::with_capacity(input.len()); + + for item in input { + if seen.insert(item.clone()) { + result.push(item); + } + } + + result +} + +impl pallet_session::SessionManager for Pallet { + fn new_session(new_index: SessionIndex) -> Option> { + log!(log::Level::Trace, "planning new session {}", new_index); + Self::new_session(new_index) + } + fn new_session_genesis(new_index: SessionIndex) -> Option> { + log!( + log::Level::Trace, + "planning new session {} at genesis", + new_index + ); + Self::new_session(new_index) + } + fn start_session(start_index: SessionIndex) { + log!(log::Level::Trace, "starting session {}", start_index); + Self::start_session(start_index) + } + fn end_session(end_index: SessionIndex) { + log!(log::Level::Trace, "ending session {}", end_index); + Self::end_session(end_index) + } +} + +impl pallet_session::historical::SessionManager for Pallet { + fn new_session(new_index: SessionIndex) -> Option> { + >::new_session(new_index) + .map(|r| r.into_iter().map(|v| (v, Default::default())).collect()) + } + + fn start_session(start_index: SessionIndex) { + >::start_session(start_index) + } + + fn end_session(end_index: SessionIndex) { + >::end_session(end_index) + } +} + +impl EraIndexProvider for Pallet { + fn active_era() -> ActiveEraInfo { + >::get().unwrap_or(ActiveEraInfo { + index: 0, + start: None, + }) + } + + fn era_to_session_start(era_index: EraIndex) -> Option { + >::get(era_index) + } +} + +impl ValidatorProvider for Pallet { + fn validators() -> Vec { + Self::validators() + } +} + +impl InvulnerablesProvider for Pallet { + fn invulnerables() -> Vec { + Self::whitelisted_validators() + } +} + +/// Mode of era-forcing. +#[derive( + Copy, Clone, PartialEq, Eq, Default, Encode, Decode, RuntimeDebug, TypeInfo, MaxEncodedLen, +)] +pub enum Forcing { + /// Not forcing anything - just let whatever happen. + #[default] + NotForcing, + /// Force a new era on the next session start, then reset to `NotForcing` as soon as it is done. + ForceNew, + /// Avoid a new era indefinitely. + ForceNone, + /// Force a new era at the end of all sessions indefinitely. + ForceAlways, +} diff --git a/pallets/external-validators/src/mock.rs b/pallets/external-validators/src/mock.rs new file mode 100644 index 000000000..4cc6c81b5 --- /dev/null +++ b/pallets/external-validators/src/mock.rs @@ -0,0 +1,342 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +use { + super::*, + crate as pallet_external_validators, + frame_support::{ + assert_ok, ord_parameter_types, parameter_types, + traits::{ + fungible::Mutate, ConstU32, ConstU64, OnFinalize, OnInitialize, ValidatorRegistration, + }, + }, + frame_system::{self as system, EnsureSignedBy}, + pallet_balances::AccountData, + sp_core::H256, + sp_runtime::{ + testing::UintAuthorityId, + traits::{BlakeTwo256, ConvertInto, IdentityLookup, OpaqueKeys}, + BuildStorage, RuntimeAppPublic, + }, +}; + +type Block = frame_system::mocking::MockBlock; + +// Configure a mock runtime to test the pallet. +frame_support::construct_runtime!( + pub enum Test + { + System: frame_system, + ExternalValidators: pallet_external_validators, + Session: pallet_session, + Balances: pallet_balances, + Timestamp: pallet_timestamp, + Mock: mock_data, + } +); + +parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const SS58Prefix: u8 = 42; +} + +impl system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type RuntimeOrigin = RuntimeOrigin; + type RuntimeCall = RuntimeCall; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u64; + type Lookup = IdentityLookup; + type RuntimeEvent = RuntimeEvent; + type BlockHashCount = BlockHashCount; + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = SS58Prefix; + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; + type Nonce = u64; + type Block = Block; + type RuntimeTask = (); + type SingleBlockMigrations = (); + type MultiBlockMigrator = (); + type PreInherents = (); + type PostInherents = (); + type PostTransactions = (); +} + +parameter_types! { + pub const ExistentialDeposit: u64 = 5; + pub const MaxReserves: u32 = 50; +} + +impl pallet_balances::Config for Test { + type RuntimeEvent = RuntimeEvent; + type WeightInfo = (); + type Balance = u64; + type DustRemoval = (); + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = System; + type ReserveIdentifier = [u8; 8]; + type RuntimeHoldReason = (); + type RuntimeFreezeReason = (); + type FreezeIdentifier = (); + type MaxLocks = (); + type MaxReserves = MaxReserves; + type MaxFreezes = ConstU32<0>; +} + +impl pallet_timestamp::Config for Test { + type Moment = u64; + type OnTimestampSet = (); + type MinimumPeriod = ConstU64<5>; + type WeightInfo = (); +} + +ord_parameter_types! { + pub const RootAccount: u64 = 777; +} + +pub struct IsRegistered; +impl ValidatorRegistration for IsRegistered { + fn is_registered(id: &u64) -> bool { + *id != 42u64 + } +} + +parameter_types! { + pub const SessionsPerEra: SessionIndex = 6; +} + +impl Config for Test { + type RuntimeEvent = RuntimeEvent; + type UpdateOrigin = EnsureSignedBy; + type HistoryDepth = ConstU32<84>; + type MaxWhitelistedValidators = ConstU32<20>; + type MaxExternalValidators = ConstU32<20>; + type ValidatorId = ::AccountId; + type ValidatorIdOf = ConvertInto; + type ValidatorRegistration = IsRegistered; + type UnixTime = Timestamp; + type SessionsPerEra = SessionsPerEra; + type OnEraStart = Mock; + type OnEraEnd = Mock; + type WeightInfo = (); + #[cfg(feature = "runtime-benchmarks")] + type Currency = Balances; +} + +sp_runtime::impl_opaque_keys! { + pub struct MockSessionKeys { + // a key for aura authoring + pub aura: UintAuthorityId, + } +} + +impl From for MockSessionKeys { + fn from(aura: sp_runtime::testing::UintAuthorityId) -> Self { + Self { aura } + } +} + +parameter_types! { + pub static SessionHandlerCollators: Vec = Vec::new(); + pub static SessionChangeBlock: u64 = 0; +} + +pub struct TestSessionHandler; +impl pallet_session::SessionHandler for TestSessionHandler { + const KEY_TYPE_IDS: &'static [sp_runtime::KeyTypeId] = &[UintAuthorityId::ID]; + fn on_genesis_session(keys: &[(u64, Ks)]) { + SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::>()) + } + fn on_new_session(_: bool, keys: &[(u64, Ks)], _: &[(u64, Ks)]) { + SessionChangeBlock::set(System::block_number()); + SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::>()) + } + fn on_before_session_ending() {} + fn on_disabled(_: u32) {} +} + +parameter_types! { + pub const Offset: u64 = 0; + pub const Period: u64 = 5; +} + +impl pallet_session::Config for Test { + type RuntimeEvent = RuntimeEvent; + type ValidatorId = ::AccountId; + // we don't have stash and controller, thus we don't need the convert as well. + type ValidatorIdOf = ConvertInto; + type ShouldEndSession = pallet_session::PeriodicSessions; + type NextSessionRotation = pallet_session::PeriodicSessions; + type SessionManager = ExternalValidators; + type SessionHandler = TestSessionHandler; + type Keys = MockSessionKeys; + type WeightInfo = (); +} + +// Pallet to provide some mock data, used to test +#[frame_support::pallet] +pub mod mock_data { + use {crate::mock::Mocks, frame_support::pallet_prelude::*}; + + #[pallet::config] + pub trait Config: frame_system::Config {} + + #[pallet::call] + impl Pallet {} + + #[pallet::pallet] + #[pallet::without_storage_info] + pub struct Pallet(_); + + #[pallet::storage] + pub(super) type Mock = StorageValue<_, Mocks, ValueQuery>; + + impl Pallet { + pub fn mock() -> Mocks { + Mock::::get() + } + pub fn mutate(f: F) -> R + where + F: FnOnce(&mut Mocks) -> R, + { + Mock::::mutate(f) + } + } +} + +#[derive(Clone, Encode, Decode, PartialEq, sp_core::RuntimeDebug, scale_info::TypeInfo)] +pub enum HookCall { + OnEraStart { era: u32, session: u32 }, + OnEraEnd { era: u32 }, +} + +impl mock_data::Config for Test {} + +#[derive( + Clone, Default, Encode, Decode, PartialEq, sp_core::RuntimeDebug, scale_info::TypeInfo, +)] +pub struct Mocks { + pub called_hooks: Vec, +} + +// We use the mock_data pallet to test hooks: we store a list of all the calls, and then check that +// no eras are skipped. +impl OnEraStart for mock_data::Pallet { + fn on_era_start(era_index: EraIndex, session_start: u32) { + Mock::mutate(|m| { + m.called_hooks.push(HookCall::OnEraStart { + era: era_index, + session: session_start, + }); + }); + } +} + +impl OnEraEnd for mock_data::Pallet { + fn on_era_end(era_index: EraIndex) { + Mock::mutate(|m| { + m.called_hooks.push(HookCall::OnEraEnd { era: era_index }); + }); + } +} + +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::::default() + .build_storage() + .unwrap(); + let whitelisted_validators = vec![1, 2]; + + let balances = vec![(1, 100), (2, 100), (3, 100), (4, 100), (5, 100)]; + let keys = balances + .iter() + .map(|&(i, _)| { + ( + i, + i, + MockSessionKeys { + aura: UintAuthorityId(i), + }, + ) + }) + .collect::>(); + let session = pallet_session::GenesisConfig:: { + keys, + ..Default::default() + }; + pallet_balances::GenesisConfig:: { balances } + .assimilate_storage(&mut t) + .unwrap(); + pallet_external_validators::GenesisConfig:: { + skip_external_validators: false, + whitelisted_validators, + } + .assimilate_storage(&mut t) + .unwrap(); + session.assimilate_storage(&mut t).unwrap(); + + let mut ext: sp_io::TestExternalities = t.into(); + + // Initialize accounts and keys for external validators + ext.execute_with(|| { + initialize_validators(vec![50, 51]); + }); + + ext +} + +fn initialize_validators(validators: Vec) { + for x in validators { + assert_ok!(Balances::mint_into(&x, 10_000_000_000)); + assert_ok!(Session::set_keys( + RuntimeOrigin::signed(x), + MockSessionKeys::from(UintAuthorityId(x)), + vec![] + )); + } +} + +pub const INIT_TIMESTAMP: u64 = 30_000; +pub const BLOCK_TIME: u64 = 1000; + +pub fn run_to_session(n: u32) { + let block_number = Period::get() * u64::from(n); + run_to_block(block_number + 1); +} + +pub fn run_to_block(n: u64) { + let old_block_number = System::block_number(); + + for x in old_block_number..n { + ExternalValidators::on_finalize(System::block_number()); + Session::on_finalize(System::block_number()); + + System::reset_events(); + System::set_block_number(x + 1); + Timestamp::set_timestamp(System::block_number() * BLOCK_TIME + INIT_TIMESTAMP); + + ExternalValidators::on_initialize(System::block_number()); + Session::on_initialize(System::block_number()); + } +} diff --git a/pallets/external-validators/src/tests.rs b/pallets/external-validators/src/tests.rs new file mode 100644 index 000000000..173e64316 --- /dev/null +++ b/pallets/external-validators/src/tests.rs @@ -0,0 +1,269 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +use { + crate::{ + mock::{ + new_test_ext, run_to_block, run_to_session, ExternalValidators, HookCall, Mock, + RootAccount, RuntimeEvent, RuntimeOrigin, Session, System, Test, + }, + Error, + }, + frame_support::{assert_noop, assert_ok}, + sp_runtime::traits::BadOrigin, + tp_traits::ValidatorProvider, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + }); +} + +#[test] +fn add_whitelisted_works() { + new_test_ext().execute_with(|| { + run_to_block(1); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + let new = 3; + + // function runs + assert_ok!(ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + new + )); + + System::assert_last_event(RuntimeEvent::ExternalValidators( + crate::Event::WhitelistedValidatorAdded { account_id: new }, + )); + + // same element cannot be added more than once + assert_noop!( + ExternalValidators::add_whitelisted(RuntimeOrigin::signed(RootAccount::get()), new), + Error::::AlreadyWhitelisted + ); + + // new element is now part of the invulnerables list + assert!(ExternalValidators::whitelisted_validators() + .to_vec() + .contains(&new)); + + // cannot add with non-root + assert_noop!( + ExternalValidators::add_whitelisted(RuntimeOrigin::signed(1), new), + BadOrigin + ); + }); +} + +#[test] +fn add_whitelisted_does_not_work_if_not_registered() { + new_test_ext().execute_with(|| { + run_to_block(1); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + let new = 42; + + assert_noop!( + ExternalValidators::add_whitelisted(RuntimeOrigin::signed(RootAccount::get()), new), + Error::::NoKeysRegistered + ); + }); +} + +#[test] +fn validator_limit_works() { + new_test_ext().execute_with(|| { + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + + // MaxExternalValidators: u32 = 20 + for ii in 3..=21 { + if ii < 21 { + assert_ok!(ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + ii + )); + } else { + assert_noop!( + ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + ii + ), + Error::::TooManyWhitelisted + ); + } + } + let expected: Vec = (1..=20).collect(); + assert_eq!(ExternalValidators::whitelisted_validators(), expected); + }); +} + +#[test] +fn remove_whitelisted_works() { + new_test_ext().execute_with(|| { + run_to_block(1); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + + assert_ok!(ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 4 + )); + assert_ok!(ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 3 + )); + + assert_eq!( + ExternalValidators::whitelisted_validators(), + vec![1, 2, 4, 3] + ); + + assert_ok!(ExternalValidators::remove_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 2 + )); + + System::assert_last_event(RuntimeEvent::ExternalValidators( + crate::Event::WhitelistedValidatorRemoved { account_id: 2 }, + )); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 4, 3]); + + // cannot remove invulnerable not in the list + assert_noop!( + ExternalValidators::remove_whitelisted(RuntimeOrigin::signed(RootAccount::get()), 2), + Error::::NotWhitelisted + ); + + // cannot remove without privilege + assert_noop!( + ExternalValidators::remove_whitelisted(RuntimeOrigin::signed(1), 3), + BadOrigin + ); + }); +} + +#[test] +fn whitelisted_and_external_order() { + new_test_ext().execute_with(|| { + run_to_block(1); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + assert_ok!(ExternalValidators::set_external_validators(vec![50, 51])); + + run_to_session(6); + let validators = Session::validators(); + assert_eq!(validators, vec![1, 2, 50, 51]); + }); +} + +#[test] +fn validator_provider_returns_all_validators() { + new_test_ext().execute_with(|| { + run_to_block(1); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + assert_ok!(ExternalValidators::set_external_validators(vec![50, 51])); + + run_to_session(6); + let validators_new_session = Session::validators(); + let validators_provider = >::validators(); + assert_eq!(validators_new_session, validators_provider); + }); +} + +#[test] +fn can_skip_external_validators() { + new_test_ext().execute_with(|| { + run_to_block(1); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + assert_ok!(ExternalValidators::set_external_validators(vec![50, 51])); + assert_ok!(ExternalValidators::skip_external_validators( + RuntimeOrigin::signed(RootAccount::get()), + true + )); + + run_to_session(6); + let validators = Session::validators(); + assert_eq!(validators, vec![1, 2]); + }); +} + +#[test] +fn duplicate_validators_are_deduplicated() { + new_test_ext().execute_with(|| { + run_to_block(1); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![1, 2]); + assert_ok!(ExternalValidators::set_external_validators(vec![2])); + + run_to_session(6); + let validators = Session::validators(); + assert_eq!(validators, vec![1, 2]); + }); +} + +#[test] +fn duplicate_validator_order_is_preserved() { + new_test_ext().execute_with(|| { + run_to_block(1); + // Whitelisted validators have priority, so their ordering should be respected + // Need to manually remove and add each whitelisted because there is no "set_whitelisted" + assert_ok!(ExternalValidators::remove_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 1 + )); + assert_ok!(ExternalValidators::remove_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 2 + )); + assert_ok!(ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 3 + )); + assert_ok!(ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 1 + )); + assert_ok!(ExternalValidators::add_whitelisted( + RuntimeOrigin::signed(RootAccount::get()), + 2 + )); + assert_eq!(ExternalValidators::whitelisted_validators(), vec![3, 1, 2]); + assert_ok!(ExternalValidators::set_external_validators(vec![ + 3, 2, 1, 4 + ])); + + run_to_session(6); + let validators = Session::validators(); + assert_eq!(validators, vec![3, 1, 2, 4]); + }); +} + +#[test] +fn era_hooks() { + new_test_ext().execute_with(|| { + run_to_session(14); + + let expected_calls = vec![ + HookCall::OnEraStart { era: 0, session: 0 }, + HookCall::OnEraEnd { era: 0 }, + HookCall::OnEraStart { era: 1, session: 6 }, + HookCall::OnEraEnd { era: 1 }, + HookCall::OnEraStart { + era: 2, + session: 12, + }, + ]; + + assert_eq!(Mock::mock().called_hooks, expected_calls); + }); +} diff --git a/pallets/external-validators/src/weights.rs b/pallets/external-validators/src/weights.rs new file mode 100644 index 000000000..1ea819a2b --- /dev/null +++ b/pallets/external-validators/src/weights.rs @@ -0,0 +1,220 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + + +//! Autogenerated weights for pallet_external_validators +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 42.0.0 +//! DATE: 2024-10-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `tomasz-XPS-15-9520`, CPU: `12th Gen Intel(R) Core(TM) i7-12700H` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dancelight-dev"), DB CACHE: 1024 + +// Executed Command: +// target/release/tanssi-relay +// benchmark +// pallet +// --execution=wasm +// --wasm-execution=compiled +// --pallet +// pallet_external_validators +// --extrinsic +// * +// --chain=dancelight-dev +// --steps +// 50 +// --repeat +// 20 +// --template=benchmarking/frame-weight-pallet-template.hbs +// --json-file +// raw.json +// --output +// tmp/dancelight_weights/pallet_external_validators.rs + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for pallet_external_validators. +pub trait WeightInfo { + fn skip_external_validators() -> Weight; + fn add_whitelisted(b: u32, ) -> Weight; + fn remove_whitelisted(b: u32, ) -> Weight; + fn force_era() -> Weight; + fn new_session(r: u32, ) -> Weight; +} + +/// Weights for pallet_external_validators using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl WeightInfo for SubstrateWeight { + /// Storage: `ExternalValidators::SkipExternalValidators` (r:0 w:1) + /// Proof: `ExternalValidators::SkipExternalValidators` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + fn skip_external_validators() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 1_391_000 picoseconds. + Weight::from_parts(1_484_000, 0) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `Session::NextKeys` (r:1 w:0) + /// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:1) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `b` is `[1, 99]`. + fn add_whitelisted(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `845 + b * (36 ±0)` + // Estimated: `4687 + b * (37 ±0)` + // Minimum execution time: 12_829_000 picoseconds. + Weight::from_parts(17_541_907, 4687) + // Standard Error: 1_560 + .saturating_add(Weight::from_parts(62_143, 0).saturating_mul(b.into())) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + .saturating_add(Weight::from_parts(0, 37).saturating_mul(b.into())) + } + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:1) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `b` is `[1, 100]`. + fn remove_whitelisted(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `137 + b * (32 ±0)` + // Estimated: `4687` + // Minimum execution time: 7_269_000 picoseconds. + Weight::from_parts(9_100_286, 4687) + // Standard Error: 626 + .saturating_add(Weight::from_parts(35_303, 0).saturating_mul(b.into())) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `ExternalValidators::ForceEra` (r:0 w:1) + /// Proof: `ExternalValidators::ForceEra` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + fn force_era() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 4_578_000 picoseconds. + Weight::from_parts(4_924_000, 0) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `ExternalValidators::ForceEra` (r:1 w:0) + /// Proof: `ExternalValidators::ForceEra` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::EraSessionStart` (r:1 w:1) + /// Proof: `ExternalValidators::EraSessionStart` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::ActiveEra` (r:1 w:1) + /// Proof: `ExternalValidators::ActiveEra` (`max_values`: Some(1), `max_size`: Some(13), added: 508, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:0) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::SkipExternalValidators` (r:1 w:0) + /// Proof: `ExternalValidators::SkipExternalValidators` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::ExternalValidators` (r:1 w:0) + /// Proof: `ExternalValidators::ExternalValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `r` is `[1, 100]`. + fn new_session(r: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `137 + r * (32 ±0)` + // Estimated: `4687` + // Minimum execution time: 8_587_000 picoseconds. + Weight::from_parts(10_453_582, 4687) + // Standard Error: 555 + .saturating_add(Weight::from_parts(27_159, 0).saturating_mul(r.into())) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + /// Storage: `ExternalValidators::SkipExternalValidators` (r:0 w:1) + /// Proof: `ExternalValidators::SkipExternalValidators` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + fn skip_external_validators() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 1_391_000 picoseconds. + Weight::from_parts(1_484_000, 0) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `Session::NextKeys` (r:1 w:0) + /// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:1) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `b` is `[1, 99]`. + fn add_whitelisted(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `845 + b * (36 ±0)` + // Estimated: `4687 + b * (37 ±0)` + // Minimum execution time: 12_829_000 picoseconds. + Weight::from_parts(17_541_907, 4687) + // Standard Error: 1_560 + .saturating_add(Weight::from_parts(62_143, 0).saturating_mul(b.into())) + .saturating_add(RocksDbWeight::get().reads(2_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + .saturating_add(Weight::from_parts(0, 37).saturating_mul(b.into())) + } + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:1) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `b` is `[1, 100]`. + fn remove_whitelisted(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `137 + b * (32 ±0)` + // Estimated: `4687` + // Minimum execution time: 7_269_000 picoseconds. + Weight::from_parts(9_100_286, 4687) + // Standard Error: 626 + .saturating_add(Weight::from_parts(35_303, 0).saturating_mul(b.into())) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `ExternalValidators::ForceEra` (r:0 w:1) + /// Proof: `ExternalValidators::ForceEra` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + fn force_era() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 4_578_000 picoseconds. + Weight::from_parts(4_924_000, 0) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `ExternalValidators::ForceEra` (r:1 w:0) + /// Proof: `ExternalValidators::ForceEra` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::EraSessionStart` (r:1 w:1) + /// Proof: `ExternalValidators::EraSessionStart` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::ActiveEra` (r:1 w:1) + /// Proof: `ExternalValidators::ActiveEra` (`max_values`: Some(1), `max_size`: Some(13), added: 508, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:0) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::SkipExternalValidators` (r:1 w:0) + /// Proof: `ExternalValidators::SkipExternalValidators` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::ExternalValidators` (r:1 w:0) + /// Proof: `ExternalValidators::ExternalValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `r` is `[1, 100]`. + fn new_session(r: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `137 + r * (32 ±0)` + // Estimated: `4687` + // Minimum execution time: 8_587_000 picoseconds. + Weight::from_parts(10_453_582, 4687) + // Standard Error: 555 + .saturating_add(Weight::from_parts(27_159, 0).saturating_mul(r.into())) + .saturating_add(RocksDbWeight::get().reads(6_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + } +} diff --git a/pallets/invulnerables/src/lib.rs b/pallets/invulnerables/src/lib.rs index f6dddd382..bf832ca25 100644 --- a/pallets/invulnerables/src/lib.rs +++ b/pallets/invulnerables/src/lib.rs @@ -65,15 +65,6 @@ pub mod pallet { /// The current storage version. const STORAGE_VERSION: StorageVersion = StorageVersion::new(0); - /// A convertor from collators id. Since this pallet does not have stash/controller, this is - /// just identity. - pub struct IdentityCollator; - impl sp_runtime::traits::Convert> for IdentityCollator { - fn convert(t: T) -> Option { - Some(t) - } - } - /// Configure the pallet by specifying the parameters and types on which it depends. #[pallet::config] pub trait Config: frame_system::Config { @@ -110,7 +101,7 @@ pub mod pallet { #[pallet::storage_version(STORAGE_VERSION)] pub struct Pallet(_); - /// The invulnerable, permissioned collators. This list must be sorted. + /// The invulnerable, permissioned collators. #[pallet::storage] pub type Invulnerables = StorageValue<_, BoundedVec, ValueQuery>; @@ -144,15 +135,10 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { - /// New Invulnerables were set. - NewInvulnerables { invulnerables: Vec }, /// A new Invulnerable was added. InvulnerableAdded { account_id: T::AccountId }, /// An Invulnerable was removed. InvulnerableRemoved { account_id: T::AccountId }, - /// An account was unable to be added to the Invulnerables because they did not have keys - /// registered. Other Invulnerables may have been set. - InvalidInvulnerableSkipped { account_id: T::AccountId }, } #[pallet::error] @@ -211,8 +197,7 @@ pub mod pallet { Ok(Some(weight_used).into()) } - /// Remove an account `who` from the list of `Invulnerables` collators. `Invulnerables` must - /// be sorted. + /// Remove an account `who` from the list of `Invulnerables` collators. /// /// The origin for this call must be the `UpdateOrigin`. #[pallet::call_index(2)] diff --git a/pallets/invulnerables/src/mock.rs b/pallets/invulnerables/src/mock.rs index 22672aac2..b019f778a 100644 --- a/pallets/invulnerables/src/mock.rs +++ b/pallets/invulnerables/src/mock.rs @@ -25,7 +25,7 @@ use { sp_core::H256, sp_runtime::{ testing::UintAuthorityId, - traits::{BlakeTwo256, IdentityLookup, OpaqueKeys}, + traits::{BlakeTwo256, ConvertInto, IdentityLookup, OpaqueKeys}, BuildStorage, RuntimeAppPublic, }, }; @@ -117,7 +117,7 @@ impl Config for Test { type UpdateOrigin = EnsureSignedBy; type MaxInvulnerables = ConstU32<20>; type CollatorId = ::AccountId; - type CollatorIdOf = IdentityCollator; + type CollatorIdOf = ConvertInto; type CollatorRegistration = IsRegistered; type WeightInfo = (); #[cfg(feature = "runtime-benchmarks")] @@ -165,7 +165,7 @@ impl pallet_session::Config for Test { type RuntimeEvent = RuntimeEvent; type ValidatorId = ::AccountId; // we don't have stash and controller, thus we don't need the convert as well. - type ValidatorIdOf = IdentityCollator; + type ValidatorIdOf = ConvertInto; type ShouldEndSession = pallet_session::PeriodicSessions; type NextSessionRotation = pallet_session::PeriodicSessions; type SessionManager = Invulnerables; diff --git a/pallets/invulnerables/src/tests.rs b/pallets/invulnerables/src/tests.rs index 928aff0bb..88d4aba4f 100644 --- a/pallets/invulnerables/src/tests.rs +++ b/pallets/invulnerables/src/tests.rs @@ -28,7 +28,6 @@ use { #[test] fn basic_setup_works() { new_test_ext().execute_with(|| { - // genesis should sort input assert_eq!(Invulnerables::invulnerables(), vec![1, 2]); }); } diff --git a/primitives/traits/src/lib.rs b/primitives/traits/src/lib.rs index f7bbd8f48..9894616de 100644 --- a/primitives/traits/src/lib.rs +++ b/primitives/traits/src/lib.rs @@ -37,12 +37,13 @@ use { pallet_prelude::{Decode, DispatchResultWithPostInfo, Encode, Get, MaxEncodedLen, Weight}, BoundedVec, }, + scale_info::TypeInfo, serde::{Deserialize, Serialize}, sp_core::H256, sp_runtime::{ app_crypto::sp_core, traits::{CheckedAdd, CheckedMul}, - ArithmeticError, DispatchResult, Perbill, + ArithmeticError, DispatchResult, Perbill, RuntimeDebug, }, sp_std::{collections::btree_set::BTreeSet, vec::Vec}, }; @@ -450,3 +451,53 @@ impl MaybeSelfChainBlockAuthor for () { None } } + +/// Information regarding the active era (era in used in session). +#[derive(Encode, Decode, RuntimeDebug, TypeInfo, MaxEncodedLen)] +pub struct ActiveEraInfo { + /// Index of era. + pub index: EraIndex, + /// Moment of start expressed as millisecond from `$UNIX_EPOCH`. + /// + /// Start can be none if start hasn't been set for the era yet, + /// Start is set on the first on_finalize of the era to guarantee usage of `Time`. + pub start: Option, +} + +/// Counter for the number of eras that have passed. +pub type EraIndex = u32; + +pub trait EraIndexProvider { + fn active_era() -> ActiveEraInfo; + fn era_to_session_start(era_index: EraIndex) -> Option; +} + +pub trait ValidatorProvider { + fn validators() -> Vec; +} + +pub trait InvulnerablesProvider { + fn invulnerables() -> Vec; +} + +pub trait OnEraStart { + fn on_era_start(_era_index: EraIndex, _session_start: u32) {} +} + +#[impl_trait_for_tuples::impl_for_tuples(5)] +impl OnEraStart for Tuple { + fn on_era_start(era_index: EraIndex, session_start: u32) { + for_tuples!( #( Tuple::on_era_start(era_index, session_start); )* ); + } +} + +pub trait OnEraEnd { + fn on_era_end(_era_index: EraIndex) {} +} + +#[impl_trait_for_tuples::impl_for_tuples(5)] +impl OnEraEnd for Tuple { + fn on_era_end(era_index: EraIndex) { + for_tuples!( #( Tuple::on_era_end(era_index); )* ); + } +} diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index dbf2b01d6..792cbdcfc 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -21,11 +21,13 @@ scale-info = { workspace = true, features = [ "derive" ] } # Own pallet-configuration = { workspace = true } pallet-data-preservers = { workspace = true } +pallet-external-validators = { workspace = true } pallet-foreign-asset-creator = { workspace = true } pallet-invulnerables = { workspace = true } pallet-pooled-staking = { workspace = true } pallet-registrar = { workspace = true } pallet-services-payment = { workspace = true } +pallet-session = { workspace = true } pallet-treasury = { workspace = true } # Moonkit @@ -68,12 +70,14 @@ std = [ "pallet-beefy-mmr/std", "pallet-configuration/std", "pallet-data-preservers/std", + "pallet-external-validators/std", "pallet-foreign-asset-creator/std", "pallet-invulnerables/std", "pallet-migrations/std", "pallet-pooled-staking/std", "pallet-registrar/std", "pallet-services-payment/std", + "pallet-session/std", "pallet-treasury/std", "pallet-xcm/std", "parity-scale-codec/std", @@ -92,6 +96,7 @@ runtime-benchmarks = [ "pallet-balances/runtime-benchmarks", "pallet-configuration/runtime-benchmarks", "pallet-data-preservers/runtime-benchmarks", + "pallet-external-validators/runtime-benchmarks", "pallet-foreign-asset-creator/runtime-benchmarks", "pallet-invulnerables/runtime-benchmarks", "pallet-migrations/runtime-benchmarks", @@ -112,12 +117,14 @@ try-runtime = [ "pallet-beefy-mmr/try-runtime", "pallet-configuration/try-runtime", "pallet-data-preservers/try-runtime", + "pallet-external-validators/try-runtime", "pallet-foreign-asset-creator/try-runtime", "pallet-invulnerables/try-runtime", "pallet-migrations/try-runtime", "pallet-pooled-staking/try-runtime", "pallet-registrar/try-runtime", "pallet-services-payment/try-runtime", + "pallet-session/try-runtime", "pallet-treasury/try-runtime", "pallet-xcm/try-runtime", "sp-runtime/try-runtime", diff --git a/runtime/common/src/migrations.rs b/runtime/common/src/migrations.rs index 90b9a9934..1eb5138b1 100644 --- a/runtime/common/src/migrations.rs +++ b/runtime/common/src/migrations.rs @@ -897,6 +897,51 @@ where } } +pub struct ExternalValidatorsInitialMigration(pub PhantomData); + +impl Migration for ExternalValidatorsInitialMigration +where + Runtime: pallet_external_validators::Config, + Runtime: pallet_session::Config< + ValidatorId = ::ValidatorId, + >, +{ + fn friendly_name(&self) -> &str { + "TM_ExternalValidatorsInitialMigration" + } + + fn migrate(&self, _available_weight: Weight) -> Weight { + use frame_support::pallet_prelude::*; + + // Set initial WhitelistedValidators to current validators from pallet session + let session_keys = pallet_session::QueuedKeys::::get(); + let session_validators = BoundedVec::truncate_from( + session_keys + .into_iter() + .map(|(validator, _keys)| validator) + .collect(), + ); + pallet_external_validators::WhitelistedValidators::::put(session_validators); + + // Kill storage of ValidatorManager pallet + let pallet_prefix: &[u8] = b"ValidatorManager"; + let _ = clear_storage_prefix(pallet_prefix, b"", b"", None, None); + + // One db read and one db write per element, plus the on-chain storage + Runtime::DbWeight::get().reads_writes(1, 1) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade(&self) -> Result, sp_runtime::DispatchError> { + Ok(vec![]) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(&self, _state: Vec) -> Result<(), sp_runtime::DispatchError> { + Ok(()) + } +} + pub struct FlashboxMigrations(PhantomData); impl GetMigrations for FlashboxMigrations @@ -1070,9 +1115,19 @@ pub struct DancelightMigrations(PhantomData); impl GetMigrations for DancelightMigrations where Runtime: frame_system::Config, + Runtime: pallet_external_validators::Config, + Runtime: pallet_session::Config< + ValidatorId = ::ValidatorId, + >, { fn get_migrations() -> Vec> { let migrate_mmr_leaf_pallet = MigrateMMRLeafPallet::(Default::default()); - vec![Box::new(migrate_mmr_leaf_pallet)] + let migrate_external_validators = + ExternalValidatorsInitialMigration::(Default::default()); + + vec![ + Box::new(migrate_mmr_leaf_pallet), + Box::new(migrate_external_validators), + ] } } diff --git a/runtime/dancebox/src/lib.rs b/runtime/dancebox/src/lib.rs index a275c237c..6f5eb2ed6 100644 --- a/runtime/dancebox/src/lib.rs +++ b/runtime/dancebox/src/lib.rs @@ -97,8 +97,8 @@ use { sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, traits::{ - AccountIdConversion, AccountIdLookup, BlakeTwo256, Block as BlockT, Hash as HashT, - IdentityLookup, Verify, + AccountIdConversion, AccountIdLookup, BlakeTwo256, Block as BlockT, ConvertInto, + Hash as HashT, IdentityLookup, Verify, }, transaction_validity::{TransactionSource, TransactionValidity}, AccountId32, ApplyExtrinsicResult, @@ -726,7 +726,7 @@ impl pallet_session::Config for Runtime { type RuntimeEvent = RuntimeEvent; type ValidatorId = CollatorId; // we don't have stash and controller, thus we don't need the convert as well. - type ValidatorIdOf = pallet_invulnerables::IdentityCollator; + type ValidatorIdOf = ConvertInto; type ShouldEndSession = pallet_session::PeriodicSessions; type NextSessionRotation = pallet_session::PeriodicSessions; type SessionManager = CollatorsFromInvulnerablesAndThenFromStaking; @@ -1123,7 +1123,7 @@ impl pallet_invulnerables::Config for Runtime { type UpdateOrigin = EnsureRoot; type MaxInvulnerables = MaxInvulnerables; type CollatorId = ::AccountId; - type CollatorIdOf = pallet_invulnerables::IdentityCollator; + type CollatorIdOf = ConvertInto; type CollatorRegistration = Session; type WeightInfo = weights::pallet_invulnerables::SubstrateWeight; #[cfg(feature = "runtime-benchmarks")] diff --git a/runtime/flashbox/src/lib.rs b/runtime/flashbox/src/lib.rs index 1963ca6fb..0d8b4ac60 100644 --- a/runtime/flashbox/src/lib.rs +++ b/runtime/flashbox/src/lib.rs @@ -88,8 +88,8 @@ use { sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, traits::{ - AccountIdConversion, AccountIdLookup, BlakeTwo256, Block as BlockT, IdentityLookup, - Verify, + AccountIdConversion, AccountIdLookup, BlakeTwo256, Block as BlockT, ConvertInto, + IdentityLookup, Verify, }, transaction_validity::{TransactionSource, TransactionValidity}, AccountId32, ApplyExtrinsicResult, @@ -608,7 +608,7 @@ impl pallet_session::Config for Runtime { type RuntimeEvent = RuntimeEvent; type ValidatorId = ::AccountId; // we don't have stash and controller, thus we don't need the convert as well. - type ValidatorIdOf = pallet_invulnerables::IdentityCollator; + type ValidatorIdOf = ConvertInto; type ShouldEndSession = pallet_session::PeriodicSessions; type NextSessionRotation = pallet_session::PeriodicSessions; type SessionManager = CollatorsFromInvulnerables; @@ -971,7 +971,7 @@ impl pallet_invulnerables::Config for Runtime { type UpdateOrigin = EnsureRoot; type MaxInvulnerables = MaxInvulnerables; type CollatorId = CollatorId; - type CollatorIdOf = pallet_invulnerables::IdentityCollator; + type CollatorIdOf = ConvertInto; type CollatorRegistration = Session; type WeightInfo = weights::pallet_invulnerables::SubstrateWeight; #[cfg(feature = "runtime-benchmarks")] diff --git a/solo-chains/runtime/dancelight/Cargo.toml b/solo-chains/runtime/dancelight/Cargo.toml index c6d094c71..56da752ae 100644 --- a/solo-chains/runtime/dancelight/Cargo.toml +++ b/solo-chains/runtime/dancelight/Cargo.toml @@ -71,6 +71,7 @@ pallet-collective = { workspace = true } pallet-conviction-voting = { workspace = true } pallet-democracy = { workspace = true } pallet-elections-phragmen = { workspace = true } +pallet-external-validators = { workspace = true } pallet-grandpa = { workspace = true } pallet-identity = { workspace = true } pallet-initializer = { workspace = true } @@ -207,6 +208,7 @@ std = [ "pallet-data-preservers/std", "pallet-democracy/std", "pallet-elections-phragmen/std", + "pallet-external-validators/std", "pallet-grandpa/std", "pallet-identity/std", "pallet-inflation-rewards/std", @@ -307,6 +309,7 @@ runtime-benchmarks = [ "pallet-data-preservers/runtime-benchmarks", "pallet-democracy/runtime-benchmarks", "pallet-elections-phragmen/runtime-benchmarks", + "pallet-external-validators/runtime-benchmarks", "pallet-grandpa/runtime-benchmarks", "pallet-identity/runtime-benchmarks", "pallet-inflation-rewards/runtime-benchmarks", @@ -373,6 +376,7 @@ try-runtime = [ "pallet-data-preservers/try-runtime", "pallet-democracy/try-runtime", "pallet-elections-phragmen/try-runtime", + "pallet-external-validators/try-runtime", "pallet-grandpa/try-runtime", "pallet-identity/try-runtime", "pallet-inflation-rewards/try-runtime", diff --git a/solo-chains/runtime/dancelight/src/genesis_config_presets.rs b/solo-chains/runtime/dancelight/src/genesis_config_presets.rs index cb2da717c..7134acdcc 100644 --- a/solo-chains/runtime/dancelight/src/genesis_config_presets.rs +++ b/solo-chains/runtime/dancelight/src/genesis_config_presets.rs @@ -409,7 +409,16 @@ fn dancelight_testnet_genesis( "collatorConfiguration": crate::CollatorConfigurationConfig { config: host_configuration, ..Default::default() - } + }, + "externalValidators": crate::ExternalValidatorsConfig { + skip_external_validators: false, + whitelisted_validators: initial_authorities + .iter() + .map(|x| { + x.stash.clone() + }) + .collect::>(), + }, }) } diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index 788cf9418..e6813e680 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -79,7 +79,10 @@ use { serde::{Deserialize, Serialize}, sp_core::{storage::well_known_keys as StorageWellKnownKeys, Get}, sp_genesis_builder::PresetId, - sp_runtime::{traits::BlockNumberProvider, AccountId32}, + sp_runtime::{ + traits::{BlockNumberProvider, ConvertInto}, + AccountId32, + }, sp_std::{ cmp::Ordering, collections::{btree_map::BTreeMap, btree_set::BTreeSet, vec_deque::VecDeque}, @@ -162,7 +165,6 @@ use { mod tests; pub mod genesis_config_presets; -mod validator_manager; impl_runtime_weights!(dancelight_runtime_constants); @@ -469,7 +471,7 @@ impl pallet_session::Config for Runtime { type ValidatorIdOf = ValidatorIdOf; type ShouldEndSession = Babe; type NextSessionRotation = Babe; - type SessionManager = pallet_session::historical::NoteHistoricalRoot; + type SessionManager = pallet_session::historical::NoteHistoricalRoot; type SessionHandler = ::KeyTypeIdProviders; type Keys = SessionKeys; type WeightInfo = (); @@ -488,7 +490,6 @@ impl pallet_session::historical::Config for Runtime { } parameter_types! { - pub const SessionsPerEra: SessionIndex = 6; pub const BondingDuration: sp_staking::EraIndex = 28; } @@ -1210,14 +1211,25 @@ impl pallet_beefy_mmr::Config for Runtime { impl paras_sudo_wrapper::Config for Runtime {} parameter_types! { - pub const PermanentSlotLeasePeriodLength: u32 = 365; - pub const TemporarySlotLeasePeriodLength: u32 = 5; - pub const MaxTemporarySlotPerLeasePeriod: u32 = 5; + pub const SessionsPerEra: SessionIndex = runtime_common::prod_or_fast!(6, 3); } -impl validator_manager::Config for Runtime { +impl pallet_external_validators::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type PrivilegedOrigin = EnsureRoot; + type UpdateOrigin = EnsureRoot; + type HistoryDepth = ConstU32<84>; + type MaxWhitelistedValidators = MaxWhitelistedValidators; + type MaxExternalValidators = MaxExternalValidators; + type ValidatorId = AccountId; + type ValidatorIdOf = ValidatorIdOf; + type ValidatorRegistration = Session; + type UnixTime = Timestamp; + type SessionsPerEra = SessionsPerEra; + type OnEraStart = (); + type OnEraEnd = (); + type WeightInfo = weights::pallet_external_validators::SubstrateWeight; + #[cfg(feature = "runtime-benchmarks")] + type Currency = Balances; } impl pallet_sudo::Config for Runtime { @@ -1244,6 +1256,8 @@ impl pallet_asset_rate::Config for Runtime { parameter_types! { pub const MaxInvulnerables: u32 = 100; + pub const MaxWhitelistedValidators: u32 = 100; + pub const MaxExternalValidators: u32 = 100; } impl pallet_invulnerables::Config for Runtime { @@ -1251,7 +1265,7 @@ impl pallet_invulnerables::Config for Runtime { type UpdateOrigin = EnsureRoot; type MaxInvulnerables = MaxInvulnerables; type CollatorId = ::AccountId; - type CollatorIdOf = pallet_invulnerables::IdentityCollator; + type CollatorIdOf = ConvertInto; type CollatorRegistration = Session; type WeightInfo = (); #[cfg(feature = "runtime-benchmarks")] @@ -1526,6 +1540,9 @@ construct_runtime! { ServicesPayment: pallet_services_payment = 18, DataPreservers: pallet_data_preservers = 19, + // Validator stuff + ExternalValidators: pallet_external_validators = 20, + // Session management Session: pallet_session = 30, Grandpa: pallet_grandpa = 31, @@ -1603,9 +1620,6 @@ construct_runtime! { ParasSudoWrapper: paras_sudo_wrapper = 250, - // Validator Manager pallet. - ValidatorManager: validator_manager = 252, - // Root testing pallet. RootTesting: pallet_root_testing = 249, @@ -1925,6 +1939,7 @@ mod benches { [pallet_author_noting, AuthorNoting] [pallet_registrar, ContainerRegistrar] [pallet_collator_assignment, TanssiCollatorAssignment] + [pallet_external_validators, ExternalValidators] // XCM [pallet_xcm, PalletXcmExtrinsicsBenchmark::] [pallet_xcm_benchmarks::fungible, pallet_xcm_benchmarks::fungible::Pallet::] diff --git a/solo-chains/runtime/dancelight/src/tests/common/mod.rs b/solo-chains/runtime/dancelight/src/tests/common/mod.rs index aad6788ca..9be0b6bc7 100644 --- a/solo-chains/runtime/dancelight/src/tests/common/mod.rs +++ b/solo-chains/runtime/dancelight/src/tests/common/mod.rs @@ -635,6 +635,17 @@ impl ExtBuilder { non_authority_keys.extend(collator_keys) } + pallet_external_validators::GenesisConfig:: { + skip_external_validators: false, + whitelisted_validators: self + .validators + .iter() + .map(|(account, _)| account.clone()) + .collect(), + } + .assimilate_storage(&mut t) + .unwrap(); + pallet_session::GenesisConfig:: { keys, non_authority_keys, diff --git a/solo-chains/runtime/dancelight/src/tests/external_validators_tests.rs b/solo-chains/runtime/dancelight/src/tests/external_validators_tests.rs new file mode 100644 index 000000000..7ffae844d --- /dev/null +++ b/solo-chains/runtime/dancelight/src/tests/external_validators_tests.rs @@ -0,0 +1,633 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +#![cfg(test)] + +use { + crate::{ + tests::common::*, ExternalValidators, MaxExternalValidators, SessionKeys, SessionsPerEra, + }, + frame_support::{assert_ok, traits::fungible::Mutate}, + pallet_external_validators::Forcing, + std::{collections::HashMap, ops::RangeInclusive}, +}; + +fn assert_validators_do_not_change( + validators: &HashMap>, + session_range: RangeInclusive, +) { + let first_validators = &validators[session_range.start()]; + for session in session_range { + let current_validators = &validators[&session]; + assert_eq!( + current_validators, first_validators, + "Validators have changed in session {}", + session + ); + } +} + +fn active_era_session_start() -> u32 { + let active_era = pallet_external_validators::ActiveEra::::get() + .map(|x| x.index) + .unwrap_or(0); + + pallet_external_validators::ErasStartSessionIndex::::get(active_era).unwrap() +} + +fn active_era_index() -> u32 { + ExternalValidators::active_era().map(|x| x.index).unwrap() +} + +#[test] +fn whitelisted_validators_priority() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + // SessionsPerEra depends on fast-runtime feature, this test should pass regardless + let sessions_per_era = SessionsPerEra::get(); + + let mut external_validators = vec![]; + let max_validators = MaxExternalValidators::get(); + // Try to insert 105 mock validators (max is 100, so last 5 will not be in the pallet) + for i in 0..(max_validators + 5) { + let mock_validator = AccountId::from([0x10 + i as u8; 32]); + let mock_keys = get_authority_keys_from_seed(&mock_validator.to_string(), None); + + assert_ok!(Balances::mint_into(&mock_validator, 10_000 * UNIT)); + assert_ok!(Session::set_keys( + origin_of(mock_validator.clone()), + SessionKeys { + babe: mock_keys.babe.clone(), + grandpa: mock_keys.grandpa.clone(), + para_validator: mock_keys.para_validator.clone(), + para_assignment: mock_keys.para_assignment.clone(), + authority_discovery: mock_keys.authority_discovery.clone(), + beefy: mock_keys.beefy.clone(), + nimbus: mock_keys.nimbus.clone(), + }, + vec![] + )); + external_validators.push(mock_validator); + } + + ExternalValidators::set_external_validators(external_validators).unwrap(); + + run_to_session(sessions_per_era); + let validators = Session::validators(); + + // 2 whitelisted validators (Alice, Bob), and 100 external validators + assert_eq!(validators.len(), 2 + max_validators as usize); + assert_eq!( + &validators[..2], + &[AccountId::from(ALICE), AccountId::from(BOB)] + ); + }); +} + +#[test] +fn validators_only_change_once_per_era() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + // SessionsPerEra depends on fast-runtime feature, this test should pass regardless + let sessions_per_era = SessionsPerEra::get(); + let mut session_validators = HashMap::new(); + + for session in 1u32..=(sessions_per_era * 2 + 1) { + // For every session: + // * Create a new validator account, MockValidatorN, mint balance, and insert keys + // * Set this validator as the only "external validator" + // * Run to session start + // * Pallet session wants to know validators for the next session (session + 1), so: + // * If the next session is in the same era as the previous session: validators do not change + // * If the next session is in a new era: new validators will be set to [Alice, Bob, MockValidatorN] + // and stored as QueuedKeys in pallet session. + // So validators for session N will be [Alice, Bob, MockValidator(N-1)] + let mock_validator = AccountId::from([0x10 + session as u8; 32]); + let mock_keys = get_authority_keys_from_seed(&mock_validator.to_string(), None); + + assert_ok!(Balances::mint_into(&mock_validator, 10_000 * UNIT)); + assert_ok!(Session::set_keys( + origin_of(mock_validator.clone()), + SessionKeys { + babe: mock_keys.babe.clone(), + grandpa: mock_keys.grandpa.clone(), + para_validator: mock_keys.para_validator.clone(), + para_assignment: mock_keys.para_assignment.clone(), + authority_discovery: mock_keys.authority_discovery.clone(), + beefy: mock_keys.beefy.clone(), + nimbus: mock_keys.nimbus.clone(), + }, + vec![] + )); + + ExternalValidators::set_external_validators(vec![mock_validator]).unwrap(); + + run_to_session(session); + let validators = Session::validators(); + session_validators.insert(session, validators); + } + + // Example with 1 era = 6 sessions + // session_range => validators + // [0, 5] => Alice, Bob + // [6, 11] => Alice, Bob, 0x15 + // [12, ..] => Alice, Bob, 0x1b + assert_eq!( + session_validators[&1], + vec![AccountId::from(ALICE), AccountId::from(BOB)] + ); + assert_eq!( + session_validators[&sessions_per_era], + vec![ + AccountId::from(ALICE), + AccountId::from(BOB), + AccountId::from([0x10 + sessions_per_era as u8 - 1; 32]) + ] + ); + assert_eq!( + session_validators[&(sessions_per_era * 2)], + vec![ + AccountId::from(ALICE), + AccountId::from(BOB), + AccountId::from([0x10 + sessions_per_era as u8 * 2 - 1; 32]) + ] + ); + // Also, validators cannot change inside an era + assert_validators_do_not_change(&session_validators, 1..=(sessions_per_era - 1)); + assert_validators_do_not_change( + &session_validators, + sessions_per_era..=(sessions_per_era * 2 - 1), + ); + assert_validators_do_not_change( + &session_validators, + (sessions_per_era * 2)..=(sessions_per_era * 2 + 1), + ); + }); +} + +#[test] +fn external_validators_can_be_disabled() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + // SessionsPerEra depends on fast-runtime feature, this test should pass regardless + let sessions_per_era = SessionsPerEra::get(); + + let mock_validator = AccountId::from([0x10; 32]); + let mock_keys = get_authority_keys_from_seed(&mock_validator.to_string(), None); + + assert_ok!(Balances::mint_into(&mock_validator, 10_000 * UNIT)); + assert_ok!(Session::set_keys( + origin_of(mock_validator.clone()), + SessionKeys { + babe: mock_keys.babe.clone(), + grandpa: mock_keys.grandpa.clone(), + para_validator: mock_keys.para_validator.clone(), + para_assignment: mock_keys.para_assignment.clone(), + authority_discovery: mock_keys.authority_discovery.clone(), + beefy: mock_keys.beefy.clone(), + nimbus: mock_keys.nimbus.clone(), + }, + vec![] + )); + + ExternalValidators::set_external_validators(vec![mock_validator.clone()]).unwrap(); + assert_ok!(ExternalValidators::skip_external_validators( + root_origin(), + true + )); + + run_to_session(sessions_per_era); + let validators = Session::validators(); + + // Only whitelisted validators get selected + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB)] + ); + + // Enable external validators for next session + assert_ok!(ExternalValidators::skip_external_validators( + root_origin(), + false + )); + + run_to_session(2 * sessions_per_era); + let validators = Session::validators(); + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB), mock_validator] + ); + }); +} + +#[test] +fn no_duplicate_validators() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + // SessionsPerEra depends on fast-runtime feature, this test should pass regardless + let sessions_per_era = SessionsPerEra::get(); + + // Alice is both a whitelisted validator and an external validator + ExternalValidators::set_external_validators(vec![AccountId::from(ALICE)]).unwrap(); + + run_to_session(sessions_per_era); + let validators = Session::validators(); + + // 2 whitelisted validators (Alice, Bob), Alice does not appear twice + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB)] + ); + }); +} + +#[test] +fn default_era_changes() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + // SessionsPerEra depends on fast-runtime feature, this test should pass regardless + let sessions_per_era = SessionsPerEra::get(); + + if sessions_per_era != 6 { + log::error!("Ignoring test default_era_changes because it doesn't work with sessions_per_era={}. Compile without fast-runtime feature and try again.", sessions_per_era); + return; + } + + let mut data = vec![]; + let mut prev_validators = Session::validators(); + + for session in 1u32..=(sessions_per_era * 2 + 1) { + // For every session: + // * Create a new validator account, MockValidatorN, mint balance, and insert keys + // * Set this validator as the only "external validator" + // * Run to session start + // * Pallet session wants to know validators for the next session (session + 1), so: + // * If the next session is in the same era as the previous session: validators do not change + // * If the next session is in a new era: new validators will be set to [Alice, Bob, MockValidatorN] + // and stored as QueuedKeys in pallet session. + // So validators for session N will be [Alice, Bob, MockValidator(N-1)] + let mock_validator = AccountId::from([0x10 + session as u8; 32]); + let mock_keys = get_authority_keys_from_seed(&mock_validator.to_string(), None); + + assert_ok!(Balances::mint_into(&mock_validator, 10_000 * UNIT)); + assert_ok!(Session::set_keys( + origin_of(mock_validator.clone()), + SessionKeys { + babe: mock_keys.babe.clone(), + grandpa: mock_keys.grandpa.clone(), + para_validator: mock_keys.para_validator.clone(), + para_assignment: mock_keys.para_assignment.clone(), + authority_discovery: mock_keys.authority_discovery.clone(), + beefy: mock_keys.beefy.clone(), + nimbus: mock_keys.nimbus.clone(), + }, + vec![] + )); + + ExternalValidators::set_external_validators(vec![mock_validator]).unwrap(); + + run_to_session(session); + let validators = Session::validators(); + let validators_changed = validators != prev_validators; + prev_validators = validators; + data.push(( + session, + ExternalValidators::current_era().unwrap(), + active_era_index(), + active_era_session_start(), + validators_changed, + )); + } + + // (session, current_era, active_era, active_era_session_start, new_validators) + let expected = vec![ + (1, 0, 0, 0, false), + (2, 0, 0, 0, false), + (3, 0, 0, 0, false), + (4, 0, 0, 0, false), + (5, 1, 0, 0, false), + (6, 1, 1, 6, true), + (7, 1, 1, 6, false), + (8, 1, 1, 6, false), + (9, 1, 1, 6, false), + (10, 1, 1, 6, false), + (11, 2, 1, 6, false), + (12, 2, 2, 12, true), + (13, 2, 2, 12, false), + ]; + + assert_eq!(data, expected); + }); +} + +#[test] +fn babe_session_works() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_session(2); + + let session = Session::current_index(); + + // If pallet_external_validators returns empty validators, pallet_session will skip some + // sessions and the reported session will be 7 instead of 2 + assert_eq!(session, 2); + }); +} + +mod force_eras { + use super::*; + + #[test] + fn force_new_era() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + // SessionsPerEra depends on fast-runtime feature, this test should pass regardless + let sessions_per_era = SessionsPerEra::get(); + + let mock_validator = AccountId::from([0x10; 32]); + let mock_keys = get_authority_keys_from_seed(&mock_validator.to_string(), None); + + assert_ok!(Balances::mint_into(&mock_validator, 10_000 * UNIT)); + assert_ok!(Session::set_keys( + origin_of(mock_validator.clone()), + SessionKeys { + babe: mock_keys.babe.clone(), + grandpa: mock_keys.grandpa.clone(), + para_validator: mock_keys.para_validator.clone(), + para_assignment: mock_keys.para_assignment.clone(), + authority_discovery: mock_keys.authority_discovery.clone(), + beefy: mock_keys.beefy.clone(), + nimbus: mock_keys.nimbus.clone(), + }, + vec![] + )); + + ExternalValidators::set_external_validators(vec![mock_validator.clone()]).unwrap(); + assert_eq!(ExternalValidators::current_era(), Some(0)); + assert_ok!(ExternalValidators::force_era( + root_origin(), + Forcing::ForceNew + )); + // Still era 1, until next session + assert_eq!(ExternalValidators::current_era(), Some(0)); + assert_eq!(Session::current_index(), 0); + + run_to_session(1); + assert_eq!(Session::current_index(), 1); + // Era changes in session 1, but validators will change in session 2 + assert_eq!(ExternalValidators::current_era(), Some(1)); + let validators = Session::validators(); + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB),] + ); + + run_to_session(2); + // Validators change now + assert_eq!(ExternalValidators::current_era(), Some(1)); + let validators = Session::validators(); + assert_eq!( + validators, + vec![ + AccountId::from(ALICE), + AccountId::from(BOB), + mock_validator.clone() + ] + ); + + // Change external validators again + ExternalValidators::set_external_validators(vec![]).unwrap(); + run_to_session(1 + sessions_per_era - 1); + // Validators will not change until `sessions_per_era` sessions later + // With sessions_per_era=6, era will change in session 7, validators will change in + // session 8, this is session 6 + assert_eq!(ExternalValidators::current_era(), Some(1)); + let validators = Session::validators(); + assert_eq!( + validators, + vec![ + AccountId::from(ALICE), + AccountId::from(BOB), + mock_validator.clone() + ] + ); + + run_to_session(1 + sessions_per_era); + // This is session 7, new era but not new validators + assert_eq!(ExternalValidators::current_era(), Some(2)); + assert_eq!(active_era_index(), 1); + let validators = Session::validators(); + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB), mock_validator] + ); + + run_to_session(1 + sessions_per_era + 1); + // This is session 8, validators will change now + assert_eq!(ExternalValidators::current_era(), Some(2)); + assert_eq!(active_era_index(), 2); + let validators = Session::validators(); + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB)] + ); + }); + } + + #[test] + fn force_no_eras() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + // SessionsPerEra depends on fast-runtime feature, this test should pass regardless + let sessions_per_era = SessionsPerEra::get(); + + let mock_validator = AccountId::from([0x10; 32]); + let mock_keys = get_authority_keys_from_seed(&mock_validator.to_string(), None); + + assert_ok!(Balances::mint_into(&mock_validator, 10_000 * UNIT)); + assert_ok!(Session::set_keys( + origin_of(mock_validator.clone()), + SessionKeys { + babe: mock_keys.babe.clone(), + grandpa: mock_keys.grandpa.clone(), + para_validator: mock_keys.para_validator.clone(), + para_assignment: mock_keys.para_assignment.clone(), + authority_discovery: mock_keys.authority_discovery.clone(), + beefy: mock_keys.beefy.clone(), + nimbus: mock_keys.nimbus.clone(), + }, + vec![] + )); + + ExternalValidators::set_external_validators(vec![mock_validator.clone()]).unwrap(); + // Validators will never change + assert_eq!(ExternalValidators::current_era(), Some(0)); + assert_ok!(ExternalValidators::force_era( + root_origin(), + Forcing::ForceNone + )); + + run_to_session(sessions_per_era); + assert_eq!(ExternalValidators::current_era(), Some(0)); + let validators = Session::validators(); + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB)] + ); + }); + } + + #[test] + fn force_new_era_always() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .build() + .execute_with(|| { + run_to_block(2); + + let mock_validator = AccountId::from([0x10; 32]); + let mock_keys = get_authority_keys_from_seed(&mock_validator.to_string(), None); + + assert_ok!(Balances::mint_into(&mock_validator, 10_000 * UNIT)); + assert_ok!(Session::set_keys( + origin_of(mock_validator.clone()), + SessionKeys { + babe: mock_keys.babe.clone(), + grandpa: mock_keys.grandpa.clone(), + para_validator: mock_keys.para_validator.clone(), + para_assignment: mock_keys.para_assignment.clone(), + authority_discovery: mock_keys.authority_discovery.clone(), + beefy: mock_keys.beefy.clone(), + nimbus: mock_keys.nimbus.clone(), + }, + vec![] + )); + + ExternalValidators::set_external_validators(vec![mock_validator.clone()]).unwrap(); + // Validators will change on every session + assert_eq!(ExternalValidators::current_era(), Some(0)); + assert_ok!(ExternalValidators::force_era( + root_origin(), + Forcing::ForceAlways + )); + + run_to_session(2); + assert_eq!(ExternalValidators::current_era(), Some(2)); + let validators = Session::validators(); + assert_eq!( + validators, + vec![ + AccountId::from(ALICE), + AccountId::from(BOB), + mock_validator.clone() + ] + ); + + ExternalValidators::set_external_validators(vec![]).unwrap(); + run_to_session(4); + assert_eq!(ExternalValidators::current_era(), Some(4)); + let validators = Session::validators(); + assert_eq!( + validators, + vec![AccountId::from(ALICE), AccountId::from(BOB)] + ); + }); + } +} diff --git a/solo-chains/runtime/dancelight/src/tests/migrations_test.rs b/solo-chains/runtime/dancelight/src/tests/migrations_test.rs index 3db642a3d..a25866281 100644 --- a/solo-chains/runtime/dancelight/src/tests/migrations_test.rs +++ b/solo-chains/runtime/dancelight/src/tests/migrations_test.rs @@ -15,12 +15,13 @@ // along with Tanssi. If not, see use crate::tests::common::ExtBuilder; -use crate::{BeefyMmrLeaf, PalletInfo, Runtime}; +use crate::{BeefyMmrLeaf, ExternalValidators, PalletInfo, Runtime, Session}; use beefy_primitives::mmr::BeefyAuthoritySet; +use frame_support::migration::clear_storage_prefix; use frame_support::storage::unhashed; use frame_support::traits::PalletInfo as _; use pallet_migrations::Migration; -use tanssi_runtime_common::migrations::MigrateMMRLeafPallet; +use tanssi_runtime_common::migrations::{ExternalValidatorsInitialMigration, MigrateMMRLeafPallet}; use xcm::v3::Weight; #[test] @@ -72,3 +73,45 @@ fn test_migration_mmr_leaf_pallet_renaming() { ); }); } + +#[test] +fn test_migration_external_validators_pallet() { + ExtBuilder::default().build().execute_with(|| { + let migrate_external_validators = + ExternalValidatorsInitialMigration::(Default::default()); + let old_pallet_name = b"ValidatorManager"; + + // Kill storage of ExternalValidators pallet, because this migration will initialize this pallet + let _ = clear_storage_prefix(b"ExternalValidators", b"", b"", None, None); + + // Simulate adding data to the old pallet storage + // The value is not used for anything, we only care that it is removed by the migration. + let old_storage_key = + frame_support::storage::storage_prefix(old_pallet_name, b"ValidatorsToAdd"); + let expected_validators: Vec = vec![5, 6]; + unhashed::put(&old_storage_key, &expected_validators); + + // Run migration + let _used_weight = migrate_external_validators.migrate(Weight::MAX); + + // Assert that ValidatorManager pallet prefix is empty after migration + let old_pallet_key = frame_support::storage::storage_prefix(old_pallet_name, b""); + let old_storage_exists = unhashed::contains_prefixed_key(&old_pallet_key); + assert!( + !old_storage_exists, + "Old pallet storage should be cleared after migration" + ); + + // Assert that ExternalValidators has the validators from ValidatorManager + let migrated_validators = ExternalValidators::validators(); + let empty = vec![]; + assert_ne!( + migrated_validators, empty, + "ExternalValidators should not be empty after migration" + ); + + // ExternalValidators should be equal to validators from Session::queued_keys + let expected_validators: Vec<_> = Session::queued_keys().into_iter().map(|x| x.0).collect(); + assert_eq!(migrated_validators, expected_validators); + }); +} diff --git a/solo-chains/runtime/dancelight/src/tests/mod.rs b/solo-chains/runtime/dancelight/src/tests/mod.rs index 1945ada25..b74850346 100644 --- a/solo-chains/runtime/dancelight/src/tests/mod.rs +++ b/solo-chains/runtime/dancelight/src/tests/mod.rs @@ -26,6 +26,7 @@ mod collator_assignment_tests; mod common; mod core_scheduling_tests; mod ethereum_client; +mod external_validators_tests; mod inflation_rewards; mod integration_test; mod migrations_test; diff --git a/solo-chains/runtime/dancelight/src/validator_manager.rs b/solo-chains/runtime/dancelight/src/validator_manager.rs deleted file mode 100644 index 638fb9abe..000000000 --- a/solo-chains/runtime/dancelight/src/validator_manager.rs +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (C) Moondance Labs Ltd. -// This file is part of Tanssi. - -// Tanssi is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Tanssi is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Tanssi. If not, see - -//! A pallet for managing validators on Dancelight. - -use {sp_staking::SessionIndex, sp_std::vec::Vec}; - -pub use pallet::*; - -type Session = pallet_session::Pallet; - -#[frame_support::pallet] -pub mod pallet { - use { - super::*, - frame_support::{dispatch::DispatchResult, pallet_prelude::*, traits::EnsureOrigin}, - frame_system::pallet_prelude::*, - }; - - #[pallet::pallet] - pub struct Pallet(_); - - /// Configuration for the parachain proposer. - #[pallet::config] - pub trait Config: frame_system::Config + pallet_session::Config { - /// The overreaching event type. - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - - /// Privileged origin that can add or remove validators. - type PrivilegedOrigin: EnsureOrigin<::RuntimeOrigin>; - } - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - /// New validators were added to the set. - ValidatorsRegistered(Vec), - /// Validators were removed from the set. - ValidatorsDeregistered(Vec), - } - - /// Validators that should be retired, because their Parachain was deregistered. - #[pallet::storage] - #[pallet::unbounded] - pub(crate) type ValidatorsToRetire = - StorageValue<_, Vec, ValueQuery>; - - /// Validators that should be added. - #[pallet::storage] - #[pallet::unbounded] - pub(crate) type ValidatorsToAdd = StorageValue<_, Vec, ValueQuery>; - - #[pallet::call] - impl Pallet { - /// Add new validators to the set. - /// - /// The new validators will be active from current session + 2. - #[pallet::call_index(0)] - #[pallet::weight({100_000})] - pub fn register_validators( - origin: OriginFor, - validators: Vec, - ) -> DispatchResult { - T::PrivilegedOrigin::ensure_origin(origin)?; - - validators - .clone() - .into_iter() - .for_each(ValidatorsToAdd::::append); - - Self::deposit_event(Event::ValidatorsRegistered(validators)); - Ok(()) - } - - /// Remove validators from the set. - /// - /// The removed validators will be deactivated from current session + 2. - #[pallet::call_index(1)] - #[pallet::weight({100_000})] - pub fn deregister_validators( - origin: OriginFor, - validators: Vec, - ) -> DispatchResult { - T::PrivilegedOrigin::ensure_origin(origin)?; - - validators - .clone() - .into_iter() - .for_each(ValidatorsToRetire::::append); - - Self::deposit_event(Event::ValidatorsDeregistered(validators)); - Ok(()) - } - } -} - -impl pallet_session::SessionManager for Pallet { - fn new_session(new_index: SessionIndex) -> Option> { - if new_index <= 1 { - return None; - } - - let mut validators = Session::::validators(); - - ValidatorsToRetire::::take().iter().for_each(|v| { - if let Some(pos) = validators.iter().position(|r| r == v) { - validators.swap_remove(pos); - } - }); - - ValidatorsToAdd::::take().into_iter().for_each(|v| { - if !validators.contains(&v) { - validators.push(v); - } - }); - - Some(validators) - } - - fn end_session(_: SessionIndex) {} - - fn start_session(_start_index: SessionIndex) {} -} - -impl pallet_session::historical::SessionManager for Pallet { - fn new_session(new_index: SessionIndex) -> Option> { - >::new_session(new_index) - .map(|r| r.into_iter().map(|v| (v, Default::default())).collect()) - } - - fn start_session(start_index: SessionIndex) { - >::start_session(start_index) - } - - fn end_session(end_index: SessionIndex) { - >::end_session(end_index) - } -} diff --git a/solo-chains/runtime/dancelight/src/weights/mod.rs b/solo-chains/runtime/dancelight/src/weights/mod.rs index e3ddec0e9..f8eb4f314 100644 --- a/solo-chains/runtime/dancelight/src/weights/mod.rs +++ b/solo-chains/runtime/dancelight/src/weights/mod.rs @@ -20,6 +20,7 @@ pub mod pallet_author_noting; pub mod pallet_balances; pub mod pallet_collator_assignment; pub mod pallet_conviction_voting; +pub mod pallet_external_validators; pub mod pallet_identity; pub mod pallet_message_queue; pub mod pallet_multisig; diff --git a/solo-chains/runtime/dancelight/src/weights/pallet_external_validators.rs b/solo-chains/runtime/dancelight/src/weights/pallet_external_validators.rs new file mode 100644 index 000000000..f243a0807 --- /dev/null +++ b/solo-chains/runtime/dancelight/src/weights/pallet_external_validators.rs @@ -0,0 +1,132 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + + +//! Autogenerated weights for pallet_external_validators +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 42.0.0 +//! DATE: 2024-10-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `tomasz-XPS-15-9520`, CPU: `12th Gen Intel(R) Core(TM) i7-12700H` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dancelight-dev"), DB CACHE: 1024 + +// Executed Command: +// target/release/tanssi-relay +// benchmark +// pallet +// --execution=wasm +// --wasm-execution=compiled +// --pallet +// pallet_external_validators +// --extrinsic +// * +// --chain=dancelight-dev +// --steps +// 50 +// --repeat +// 20 +// --template=benchmarking/frame-weight-runtime-template.hbs +// --json-file +// raw.json +// --output +// tmp/dancelight_weights/pallet_external_validators.rs + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weights for pallet_external_validators using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl pallet_external_validators::WeightInfo for SubstrateWeight { + /// Storage: `ExternalValidators::SkipExternalValidators` (r:0 w:1) + /// Proof: `ExternalValidators::SkipExternalValidators` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + fn skip_external_validators() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 1_248_000 picoseconds. + Weight::from_parts(1_324_000, 0) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `Session::NextKeys` (r:1 w:0) + /// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:1) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `b` is `[1, 99]`. + fn add_whitelisted(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `845 + b * (36 ±0)` + // Estimated: `4687 + b * (37 ±0)` + // Minimum execution time: 12_017_000 picoseconds. + Weight::from_parts(16_811_430, 4687) + // Standard Error: 1_421 + .saturating_add(Weight::from_parts(63_946, 0).saturating_mul(b.into())) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + .saturating_add(Weight::from_parts(0, 37).saturating_mul(b.into())) + } + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:1) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `b` is `[1, 100]`. + fn remove_whitelisted(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `137 + b * (32 ±0)` + // Estimated: `4687` + // Minimum execution time: 6_567_000 picoseconds. + Weight::from_parts(8_563_085, 4687) + // Standard Error: 582 + .saturating_add(Weight::from_parts(36_793, 0).saturating_mul(b.into())) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `ExternalValidators::ForceEra` (r:0 w:1) + /// Proof: `ExternalValidators::ForceEra` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + fn force_era() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 4_426_000 picoseconds. + Weight::from_parts(4_781_000, 0) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `ExternalValidators::ForceEra` (r:1 w:0) + /// Proof: `ExternalValidators::ForceEra` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::EraSessionStart` (r:1 w:1) + /// Proof: `ExternalValidators::EraSessionStart` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::ActiveEra` (r:1 w:1) + /// Proof: `ExternalValidators::ActiveEra` (`max_values`: Some(1), `max_size`: Some(13), added: 508, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::WhitelistedValidators` (r:1 w:0) + /// Proof: `ExternalValidators::WhitelistedValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::SkipExternalValidators` (r:1 w:0) + /// Proof: `ExternalValidators::SkipExternalValidators` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidators::ExternalValidators` (r:1 w:0) + /// Proof: `ExternalValidators::ExternalValidators` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `MaxEncodedLen`) + /// The range of component `r` is `[1, 100]`. + fn new_session(r: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `137 + r * (32 ±0)` + // Estimated: `4687` + // Minimum execution time: 8_153_000 picoseconds. + Weight::from_parts(10_186_440, 4687) + // Standard Error: 563 + .saturating_add(Weight::from_parts(25_107, 0).saturating_mul(r.into())) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } +} diff --git a/test/suites/dev-tanssi-relay/external-validators/test-external-validators.ts b/test/suites/dev-tanssi-relay/external-validators/test-external-validators.ts new file mode 100644 index 000000000..e4fd720cf --- /dev/null +++ b/test/suites/dev-tanssi-relay/external-validators/test-external-validators.ts @@ -0,0 +1,47 @@ +import "@tanssi/api-augment"; +import { describeSuite, expect, beforeAll } from "@moonwall/cli"; +import { ApiPromise, Keyring } from "@polkadot/api"; +import { jumpToSession } from "util/block"; + +describeSuite({ + id: "DTR1501", + title: "External validators tests", + foundationMethods: "dev", + + testCases: ({ it, context }) => { + let polkadotJs: ApiPromise; + + beforeAll(async () => { + polkadotJs = context.polkadotJs(); + }); + + it({ + id: "E01", + title: "Collator should rotate", + test: async function () { + const keyring = new Keyring({ type: "sr25519" }); + const alice = keyring.addFromUri("//Alice", { name: "Alice default" }); + const aliceStash = keyring.addFromUri("//Alice//stash"); + const bob = keyring.addFromUri("//Bob", { name: "Bob default" }); + const validators = (await polkadotJs.query.session.validators()).toJSON(); + + expect(validators).to.deep.equal([aliceStash.address]); + + const tx = await polkadotJs.tx.sudo + .sudo(polkadotJs.tx.externalValidators.addWhitelisted(bob.address)) + .signAsync(alice); + await context.createBlock([tx]); + + await jumpToSession(context, 2); + + const validators2 = (await polkadotJs.query.session.validators()).toJSON(); + expect(validators2).to.deep.equal([aliceStash.address]); + + await jumpToSession(context, 3); + + const validators3 = (await polkadotJs.query.session.validators()).toJSON(); + expect(validators3).to.deep.equal([aliceStash.address, bob.address]); + }, + }); + }, +}); diff --git a/typescript-api/src/dancebox/interfaces/augment-api-events.ts b/typescript-api/src/dancebox/interfaces/augment-api-events.ts index d46a5c2cb..ccdfeb8d4 100644 --- a/typescript-api/src/dancebox/interfaces/augment-api-events.ts +++ b/typescript-api/src/dancebox/interfaces/augment-api-events.ts @@ -439,21 +439,10 @@ declare module "@polkadot/api-base/types/events" { [key: string]: AugmentedEvent; }; invulnerables: { - /** - * An account was unable to be added to the Invulnerables because they did not have keys registered. Other - * Invulnerables may have been set. - */ - InvalidInvulnerableSkipped: AugmentedEvent; /** A new Invulnerable was added. */ InvulnerableAdded: AugmentedEvent; /** An Invulnerable was removed. */ InvulnerableRemoved: AugmentedEvent; - /** New Invulnerables were set. */ - NewInvulnerables: AugmentedEvent< - ApiType, - [invulnerables: Vec], - { invulnerables: Vec } - >; /** Generic event */ [key: string]: AugmentedEvent; }; diff --git a/typescript-api/src/dancebox/interfaces/augment-api-query.ts b/typescript-api/src/dancebox/interfaces/augment-api-query.ts index 0e0514b72..be35c4363 100644 --- a/typescript-api/src/dancebox/interfaces/augment-api-query.ts +++ b/typescript-api/src/dancebox/interfaces/augment-api-query.ts @@ -501,7 +501,7 @@ declare module "@polkadot/api-base/types/storage" { [key: string]: QueryableStorageEntry; }; invulnerables: { - /** The invulnerable, permissioned collators. This list must be sorted. */ + /** The invulnerable, permissioned collators. */ invulnerables: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** Generic query */ diff --git a/typescript-api/src/dancebox/interfaces/augment-api-tx.ts b/typescript-api/src/dancebox/interfaces/augment-api-tx.ts index 7ca609313..e43d61d3f 100644 --- a/typescript-api/src/dancebox/interfaces/augment-api-tx.ts +++ b/typescript-api/src/dancebox/interfaces/augment-api-tx.ts @@ -1868,7 +1868,7 @@ declare module "@polkadot/api-base/types/submittable" { [AccountId32] >; /** - * Remove an account `who` from the list of `Invulnerables` collators. `Invulnerables` must be sorted. + * Remove an account `who` from the list of `Invulnerables` collators. * * The origin for this call must be the `UpdateOrigin`. */ diff --git a/typescript-api/src/dancebox/interfaces/lookup.ts b/typescript-api/src/dancebox/interfaces/lookup.ts index 72e911226..1fff1c43a 100644 --- a/typescript-api/src/dancebox/interfaces/lookup.ts +++ b/typescript-api/src/dancebox/interfaces/lookup.ts @@ -693,21 +693,15 @@ export default { /** Lookup68: pallet_invulnerables::pallet::Event */ PalletInvulnerablesEvent: { _enum: { - NewInvulnerables: { - invulnerables: "Vec", - }, InvulnerableAdded: { accountId: "AccountId32", }, InvulnerableRemoved: { accountId: "AccountId32", }, - InvalidInvulnerableSkipped: { - accountId: "AccountId32", - }, }, }, - /** Lookup70: pallet_session::pallet::Event */ + /** Lookup69: pallet_session::pallet::Event */ PalletSessionEvent: { _enum: { NewSession: { @@ -715,7 +709,7 @@ export default { }, }, }, - /** Lookup71: pallet_pooled_staking::pallet::Event */ + /** Lookup70: pallet_pooled_staking::pallet::Event */ PalletPooledStakingEvent: { _enum: { UpdatedCandidatePosition: { @@ -810,11 +804,11 @@ export default { }, }, }, - /** Lookup73: pallet_pooled_staking::pallet::TargetPool */ + /** Lookup72: pallet_pooled_staking::pallet::TargetPool */ PalletPooledStakingTargetPool: { _enum: ["AutoCompounding", "ManualRewards"], }, - /** Lookup74: pallet_inflation_rewards::pallet::Event */ + /** Lookup73: pallet_inflation_rewards::pallet::Event */ PalletInflationRewardsEvent: { _enum: { RewardedOrchestrator: { @@ -828,7 +822,7 @@ export default { }, }, }, - /** Lookup75: pallet_treasury::pallet::Event */ + /** Lookup74: pallet_treasury::pallet::Event */ PalletTreasuryEvent: { _enum: { Spending: { @@ -881,7 +875,7 @@ export default { }, }, }, - /** Lookup76: cumulus_pallet_xcmp_queue::pallet::Event */ + /** Lookup75: cumulus_pallet_xcmp_queue::pallet::Event */ CumulusPalletXcmpQueueEvent: { _enum: { XcmpMessageSent: { @@ -889,7 +883,7 @@ export default { }, }, }, - /** Lookup77: cumulus_pallet_xcm::pallet::Event */ + /** Lookup76: cumulus_pallet_xcm::pallet::Event */ CumulusPalletXcmEvent: { _enum: { InvalidFormat: "[u8;32]", @@ -897,7 +891,7 @@ export default { ExecutedDownward: "([u8;32],StagingXcmV4TraitsOutcome)", }, }, - /** Lookup78: staging_xcm::v4::traits::Outcome */ + /** Lookup77: staging_xcm::v4::traits::Outcome */ StagingXcmV4TraitsOutcome: { _enum: { Complete: { @@ -912,7 +906,7 @@ export default { }, }, }, - /** Lookup79: xcm::v3::traits::Error */ + /** Lookup78: xcm::v3::traits::Error */ XcmV3TraitsError: { _enum: { Overflow: "Null", @@ -957,7 +951,7 @@ export default { ExceedsStackLimit: "Null", }, }, - /** Lookup80: pallet_xcm::pallet::Event */ + /** Lookup79: pallet_xcm::pallet::Event */ PalletXcmEvent: { _enum: { Attempted: { @@ -1080,26 +1074,26 @@ export default { }, }, }, - /** Lookup81: staging_xcm::v4::location::Location */ + /** Lookup80: staging_xcm::v4::location::Location */ StagingXcmV4Location: { parents: "u8", interior: "StagingXcmV4Junctions", }, - /** Lookup82: staging_xcm::v4::junctions::Junctions */ + /** Lookup81: staging_xcm::v4::junctions::Junctions */ StagingXcmV4Junctions: { _enum: { Here: "Null", - X1: "[Lookup84;1]", - X2: "[Lookup84;2]", - X3: "[Lookup84;3]", - X4: "[Lookup84;4]", - X5: "[Lookup84;5]", - X6: "[Lookup84;6]", - X7: "[Lookup84;7]", - X8: "[Lookup84;8]", + X1: "[Lookup83;1]", + X2: "[Lookup83;2]", + X3: "[Lookup83;3]", + X4: "[Lookup83;4]", + X5: "[Lookup83;5]", + X6: "[Lookup83;6]", + X7: "[Lookup83;7]", + X8: "[Lookup83;8]", }, }, - /** Lookup84: staging_xcm::v4::junction::Junction */ + /** Lookup83: staging_xcm::v4::junction::Junction */ StagingXcmV4Junction: { _enum: { Parachain: "Compact", @@ -1129,7 +1123,7 @@ export default { GlobalConsensus: "StagingXcmV4JunctionNetworkId", }, }, - /** Lookup87: staging_xcm::v4::junction::NetworkId */ + /** Lookup86: staging_xcm::v4::junction::NetworkId */ StagingXcmV4JunctionNetworkId: { _enum: { ByGenesis: "[u8;32]", @@ -1150,7 +1144,7 @@ export default { PolkadotBulletin: "Null", }, }, - /** Lookup90: xcm::v3::junction::BodyId */ + /** Lookup89: xcm::v3::junction::BodyId */ XcmV3JunctionBodyId: { _enum: { Unit: "Null", @@ -1165,7 +1159,7 @@ export default { Treasury: "Null", }, }, - /** Lookup91: xcm::v3::junction::BodyPart */ + /** Lookup90: xcm::v3::junction::BodyPart */ XcmV3JunctionBodyPart: { _enum: { Voice: "Null", @@ -1186,9 +1180,9 @@ export default { }, }, }, - /** Lookup99: staging_xcm::v4::Xcm */ + /** Lookup98: staging_xcm::v4::Xcm */ StagingXcmV4Xcm: "Vec", - /** Lookup101: staging_xcm::v4::Instruction */ + /** Lookup100: staging_xcm::v4::Instruction */ StagingXcmV4Instruction: { _enum: { WithdrawAsset: "StagingXcmV4AssetAssets", @@ -1328,23 +1322,23 @@ export default { }, }, }, - /** Lookup102: staging_xcm::v4::asset::Assets */ + /** Lookup101: staging_xcm::v4::asset::Assets */ StagingXcmV4AssetAssets: "Vec", - /** Lookup104: staging_xcm::v4::asset::Asset */ + /** Lookup103: staging_xcm::v4::asset::Asset */ StagingXcmV4Asset: { id: "StagingXcmV4AssetAssetId", fun: "StagingXcmV4AssetFungibility", }, - /** Lookup105: staging_xcm::v4::asset::AssetId */ + /** Lookup104: staging_xcm::v4::asset::AssetId */ StagingXcmV4AssetAssetId: "StagingXcmV4Location", - /** Lookup106: staging_xcm::v4::asset::Fungibility */ + /** Lookup105: staging_xcm::v4::asset::Fungibility */ StagingXcmV4AssetFungibility: { _enum: { Fungible: "Compact", NonFungible: "StagingXcmV4AssetAssetInstance", }, }, - /** Lookup107: staging_xcm::v4::asset::AssetInstance */ + /** Lookup106: staging_xcm::v4::asset::AssetInstance */ StagingXcmV4AssetAssetInstance: { _enum: { Undefined: "Null", @@ -1355,7 +1349,7 @@ export default { Array32: "[u8;32]", }, }, - /** Lookup110: staging_xcm::v4::Response */ + /** Lookup109: staging_xcm::v4::Response */ StagingXcmV4Response: { _enum: { Null: "Null", @@ -1366,7 +1360,7 @@ export default { DispatchResult: "XcmV3MaybeErrorCode", }, }, - /** Lookup114: staging_xcm::v4::PalletInfo */ + /** Lookup113: staging_xcm::v4::PalletInfo */ StagingXcmV4PalletInfo: { index: "Compact", name: "Bytes", @@ -1375,7 +1369,7 @@ export default { minor: "Compact", patch: "Compact", }, - /** Lookup117: xcm::v3::MaybeErrorCode */ + /** Lookup116: xcm::v3::MaybeErrorCode */ XcmV3MaybeErrorCode: { _enum: { Success: "Null", @@ -1383,28 +1377,28 @@ export default { TruncatedError: "Bytes", }, }, - /** Lookup120: xcm::v3::OriginKind */ + /** Lookup119: xcm::v3::OriginKind */ XcmV3OriginKind: { _enum: ["Native", "SovereignAccount", "Superuser", "Xcm"], }, - /** Lookup121: xcm::double_encoded::DoubleEncoded */ + /** Lookup120: xcm::double_encoded::DoubleEncoded */ XcmDoubleEncoded: { encoded: "Bytes", }, - /** Lookup122: staging_xcm::v4::QueryResponseInfo */ + /** Lookup121: staging_xcm::v4::QueryResponseInfo */ StagingXcmV4QueryResponseInfo: { destination: "StagingXcmV4Location", queryId: "Compact", maxWeight: "SpWeightsWeightV2Weight", }, - /** Lookup123: staging_xcm::v4::asset::AssetFilter */ + /** Lookup122: staging_xcm::v4::asset::AssetFilter */ StagingXcmV4AssetAssetFilter: { _enum: { Definite: "StagingXcmV4AssetAssets", Wild: "StagingXcmV4AssetWildAsset", }, }, - /** Lookup124: staging_xcm::v4::asset::WildAsset */ + /** Lookup123: staging_xcm::v4::asset::WildAsset */ StagingXcmV4AssetWildAsset: { _enum: { All: "Null", @@ -1420,18 +1414,18 @@ export default { }, }, }, - /** Lookup125: staging_xcm::v4::asset::WildFungibility */ + /** Lookup124: staging_xcm::v4::asset::WildFungibility */ StagingXcmV4AssetWildFungibility: { _enum: ["Fungible", "NonFungible"], }, - /** Lookup126: xcm::v3::WeightLimit */ + /** Lookup125: xcm::v3::WeightLimit */ XcmV3WeightLimit: { _enum: { Unlimited: "Null", Limited: "SpWeightsWeightV2Weight", }, }, - /** Lookup127: xcm::VersionedAssets */ + /** Lookup126: xcm::VersionedAssets */ XcmVersionedAssets: { _enum: { __Unused0: "Null", @@ -1441,26 +1435,26 @@ export default { V4: "StagingXcmV4AssetAssets", }, }, - /** Lookup128: xcm::v2::multiasset::MultiAssets */ + /** Lookup127: xcm::v2::multiasset::MultiAssets */ XcmV2MultiassetMultiAssets: "Vec", - /** Lookup130: xcm::v2::multiasset::MultiAsset */ + /** Lookup129: xcm::v2::multiasset::MultiAsset */ XcmV2MultiAsset: { id: "XcmV2MultiassetAssetId", fun: "XcmV2MultiassetFungibility", }, - /** Lookup131: xcm::v2::multiasset::AssetId */ + /** Lookup130: xcm::v2::multiasset::AssetId */ XcmV2MultiassetAssetId: { _enum: { Concrete: "XcmV2MultiLocation", Abstract: "Bytes", }, }, - /** Lookup132: xcm::v2::multilocation::MultiLocation */ + /** Lookup131: xcm::v2::multilocation::MultiLocation */ XcmV2MultiLocation: { parents: "u8", interior: "XcmV2MultilocationJunctions", }, - /** Lookup133: xcm::v2::multilocation::Junctions */ + /** Lookup132: xcm::v2::multilocation::Junctions */ XcmV2MultilocationJunctions: { _enum: { Here: "Null", @@ -1474,7 +1468,7 @@ export default { X8: "(XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction)", }, }, - /** Lookup134: xcm::v2::junction::Junction */ + /** Lookup133: xcm::v2::junction::Junction */ XcmV2Junction: { _enum: { Parachain: "Compact", @@ -1500,7 +1494,7 @@ export default { }, }, }, - /** Lookup135: xcm::v2::NetworkId */ + /** Lookup134: xcm::v2::NetworkId */ XcmV2NetworkId: { _enum: { Any: "Null", @@ -1509,7 +1503,7 @@ export default { Kusama: "Null", }, }, - /** Lookup137: xcm::v2::BodyId */ + /** Lookup136: xcm::v2::BodyId */ XcmV2BodyId: { _enum: { Unit: "Null", @@ -1524,7 +1518,7 @@ export default { Treasury: "Null", }, }, - /** Lookup138: xcm::v2::BodyPart */ + /** Lookup137: xcm::v2::BodyPart */ XcmV2BodyPart: { _enum: { Voice: "Null", @@ -1545,14 +1539,14 @@ export default { }, }, }, - /** Lookup139: xcm::v2::multiasset::Fungibility */ + /** Lookup138: xcm::v2::multiasset::Fungibility */ XcmV2MultiassetFungibility: { _enum: { Fungible: "Compact", NonFungible: "XcmV2MultiassetAssetInstance", }, }, - /** Lookup140: xcm::v2::multiasset::AssetInstance */ + /** Lookup139: xcm::v2::multiasset::AssetInstance */ XcmV2MultiassetAssetInstance: { _enum: { Undefined: "Null", @@ -1564,26 +1558,26 @@ export default { Blob: "Bytes", }, }, - /** Lookup141: xcm::v3::multiasset::MultiAssets */ + /** Lookup140: xcm::v3::multiasset::MultiAssets */ XcmV3MultiassetMultiAssets: "Vec", - /** Lookup143: xcm::v3::multiasset::MultiAsset */ + /** Lookup142: xcm::v3::multiasset::MultiAsset */ XcmV3MultiAsset: { id: "XcmV3MultiassetAssetId", fun: "XcmV3MultiassetFungibility", }, - /** Lookup144: xcm::v3::multiasset::AssetId */ + /** Lookup143: xcm::v3::multiasset::AssetId */ XcmV3MultiassetAssetId: { _enum: { Concrete: "StagingXcmV3MultiLocation", Abstract: "[u8;32]", }, }, - /** Lookup145: staging_xcm::v3::multilocation::MultiLocation */ + /** Lookup144: staging_xcm::v3::multilocation::MultiLocation */ StagingXcmV3MultiLocation: { parents: "u8", interior: "XcmV3Junctions", }, - /** Lookup146: xcm::v3::junctions::Junctions */ + /** Lookup145: xcm::v3::junctions::Junctions */ XcmV3Junctions: { _enum: { Here: "Null", @@ -1597,7 +1591,7 @@ export default { X8: "(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)", }, }, - /** Lookup147: xcm::v3::junction::Junction */ + /** Lookup146: xcm::v3::junction::Junction */ XcmV3Junction: { _enum: { Parachain: "Compact", @@ -1627,7 +1621,7 @@ export default { GlobalConsensus: "XcmV3JunctionNetworkId", }, }, - /** Lookup149: xcm::v3::junction::NetworkId */ + /** Lookup148: xcm::v3::junction::NetworkId */ XcmV3JunctionNetworkId: { _enum: { ByGenesis: "[u8;32]", @@ -1648,14 +1642,14 @@ export default { PolkadotBulletin: "Null", }, }, - /** Lookup150: xcm::v3::multiasset::Fungibility */ + /** Lookup149: xcm::v3::multiasset::Fungibility */ XcmV3MultiassetFungibility: { _enum: { Fungible: "Compact", NonFungible: "XcmV3MultiassetAssetInstance", }, }, - /** Lookup151: xcm::v3::multiasset::AssetInstance */ + /** Lookup150: xcm::v3::multiasset::AssetInstance */ XcmV3MultiassetAssetInstance: { _enum: { Undefined: "Null", @@ -1666,7 +1660,7 @@ export default { Array32: "[u8;32]", }, }, - /** Lookup152: xcm::VersionedLocation */ + /** Lookup151: xcm::VersionedLocation */ XcmVersionedLocation: { _enum: { __Unused0: "Null", @@ -1676,7 +1670,7 @@ export default { V4: "StagingXcmV4Location", }, }, - /** Lookup153: pallet_assets::pallet::Event */ + /** Lookup152: pallet_assets::pallet::Event */ PalletAssetsEvent: { _enum: { Created: { @@ -1800,7 +1794,7 @@ export default { }, }, }, - /** Lookup154: pallet_foreign_asset_creator::pallet::Event */ + /** Lookup153: pallet_foreign_asset_creator::pallet::Event */ PalletForeignAssetCreatorEvent: { _enum: { ForeignAssetCreated: { @@ -1821,7 +1815,7 @@ export default { }, }, }, - /** Lookup155: pallet_asset_rate::pallet::Event */ + /** Lookup154: pallet_asset_rate::pallet::Event */ PalletAssetRateEvent: { _enum: { AssetRateCreated: { @@ -1841,7 +1835,7 @@ export default { }, }, }, - /** Lookup157: pallet_message_queue::pallet::Event */ + /** Lookup156: pallet_message_queue::pallet::Event */ PalletMessageQueueEvent: { _enum: { ProcessingFailed: { @@ -1867,7 +1861,7 @@ export default { }, }, }, - /** Lookup158: cumulus_primitives_core::AggregateMessageOrigin */ + /** Lookup157: cumulus_primitives_core::AggregateMessageOrigin */ CumulusPrimitivesCoreAggregateMessageOrigin: { _enum: { Here: "Null", @@ -1875,7 +1869,7 @@ export default { Sibling: "u32", }, }, - /** Lookup159: frame_support::traits::messages::ProcessMessageError */ + /** Lookup158: frame_support::traits::messages::ProcessMessageError */ FrameSupportMessagesProcessMessageError: { _enum: { BadFormat: "Null", @@ -1886,7 +1880,7 @@ export default { StackLimitReached: "Null", }, }, - /** Lookup160: pallet_xcm_core_buyer::pallet::Event */ + /** Lookup159: pallet_xcm_core_buyer::pallet::Event */ PalletXcmCoreBuyerEvent: { _enum: { BuyCoreXcmSent: { @@ -1905,11 +1899,11 @@ export default { }, }, }, - /** Lookup162: pallet_root_testing::pallet::Event */ + /** Lookup161: pallet_root_testing::pallet::Event */ PalletRootTestingEvent: { _enum: ["DefensiveTestCall"], }, - /** Lookup163: frame_system::Phase */ + /** Lookup162: frame_system::Phase */ FrameSystemPhase: { _enum: { ApplyExtrinsic: "u32", @@ -1917,17 +1911,17 @@ export default { Initialization: "Null", }, }, - /** Lookup167: frame_system::LastRuntimeUpgradeInfo */ + /** Lookup166: frame_system::LastRuntimeUpgradeInfo */ FrameSystemLastRuntimeUpgradeInfo: { specVersion: "Compact", specName: "Text", }, - /** Lookup169: frame_system::CodeUpgradeAuthorization */ + /** Lookup168: frame_system::CodeUpgradeAuthorization */ FrameSystemCodeUpgradeAuthorization: { codeHash: "H256", checkVersion: "bool", }, - /** Lookup170: frame_system::pallet::Call */ + /** Lookup169: frame_system::pallet::Call */ FrameSystemCall: { _enum: { remark: { @@ -1970,41 +1964,41 @@ export default { }, }, }, - /** Lookup174: frame_system::limits::BlockWeights */ + /** Lookup173: frame_system::limits::BlockWeights */ FrameSystemLimitsBlockWeights: { baseBlock: "SpWeightsWeightV2Weight", maxBlock: "SpWeightsWeightV2Weight", perClass: "FrameSupportDispatchPerDispatchClassWeightsPerClass", }, - /** Lookup175: frame_support::dispatch::PerDispatchClass */ + /** Lookup174: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassWeightsPerClass: { normal: "FrameSystemLimitsWeightsPerClass", operational: "FrameSystemLimitsWeightsPerClass", mandatory: "FrameSystemLimitsWeightsPerClass", }, - /** Lookup176: frame_system::limits::WeightsPerClass */ + /** Lookup175: frame_system::limits::WeightsPerClass */ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: "SpWeightsWeightV2Weight", maxExtrinsic: "Option", maxTotal: "Option", reserved: "Option", }, - /** Lookup178: frame_system::limits::BlockLength */ + /** Lookup177: frame_system::limits::BlockLength */ FrameSystemLimitsBlockLength: { max: "FrameSupportDispatchPerDispatchClassU32", }, - /** Lookup179: frame_support::dispatch::PerDispatchClass */ + /** Lookup178: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassU32: { normal: "u32", operational: "u32", mandatory: "u32", }, - /** Lookup180: sp_weights::RuntimeDbWeight */ + /** Lookup179: sp_weights::RuntimeDbWeight */ SpWeightsRuntimeDbWeight: { read: "u64", write: "u64", }, - /** Lookup181: sp_version::RuntimeVersion */ + /** Lookup180: sp_version::RuntimeVersion */ SpVersionRuntimeVersion: { specName: "Text", implName: "Text", @@ -2015,7 +2009,7 @@ export default { transactionVersion: "u32", stateVersion: "u8", }, - /** Lookup185: frame_system::pallet::Error */ + /** Lookup184: frame_system::pallet::Error */ FrameSystemError: { _enum: [ "InvalidSpecName", @@ -2029,49 +2023,49 @@ export default { "Unauthorized", ], }, - /** Lookup187: cumulus_pallet_parachain_system::unincluded_segment::Ancestor */ + /** Lookup186: cumulus_pallet_parachain_system::unincluded_segment::Ancestor */ CumulusPalletParachainSystemUnincludedSegmentAncestor: { usedBandwidth: "CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth", paraHeadHash: "Option", consumedGoAheadSignal: "Option", }, - /** Lookup188: cumulus_pallet_parachain_system::unincluded_segment::UsedBandwidth */ + /** Lookup187: cumulus_pallet_parachain_system::unincluded_segment::UsedBandwidth */ CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth: { umpMsgCount: "u32", umpTotalBytes: "u32", hrmpOutgoing: "BTreeMap", }, - /** Lookup190: cumulus_pallet_parachain_system::unincluded_segment::HrmpChannelUpdate */ + /** Lookup189: cumulus_pallet_parachain_system::unincluded_segment::HrmpChannelUpdate */ CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate: { msgCount: "u32", totalBytes: "u32", }, - /** Lookup195: polkadot_primitives::v7::UpgradeGoAhead */ + /** Lookup194: polkadot_primitives::v7::UpgradeGoAhead */ PolkadotPrimitivesV7UpgradeGoAhead: { _enum: ["Abort", "GoAhead"], }, - /** Lookup196: cumulus_pallet_parachain_system::unincluded_segment::SegmentTracker */ + /** Lookup195: cumulus_pallet_parachain_system::unincluded_segment::SegmentTracker */ CumulusPalletParachainSystemUnincludedSegmentSegmentTracker: { usedBandwidth: "CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth", hrmpWatermark: "Option", consumedGoAheadSignal: "Option", }, - /** Lookup197: polkadot_primitives::v7::PersistedValidationData */ + /** Lookup196: polkadot_primitives::v7::PersistedValidationData */ PolkadotPrimitivesV7PersistedValidationData: { parentHead: "Bytes", relayParentNumber: "u32", relayParentStorageRoot: "H256", maxPovSize: "u32", }, - /** Lookup200: polkadot_primitives::v7::UpgradeRestriction */ + /** Lookup199: polkadot_primitives::v7::UpgradeRestriction */ PolkadotPrimitivesV7UpgradeRestriction: { _enum: ["Present"], }, - /** Lookup201: sp_trie::storage_proof::StorageProof */ + /** Lookup200: sp_trie::storage_proof::StorageProof */ SpTrieStorageProof: { trieNodes: "BTreeSet", }, - /** Lookup203: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot */ + /** Lookup202: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot */ CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: { dmqMqcHead: "H256", relayDispatchQueueRemainingCapacity: @@ -2079,12 +2073,12 @@ export default { ingressChannels: "Vec<(u32,PolkadotPrimitivesV7AbridgedHrmpChannel)>", egressChannels: "Vec<(u32,PolkadotPrimitivesV7AbridgedHrmpChannel)>", }, - /** Lookup204: cumulus_pallet_parachain_system::relay_state_snapshot::RelayDispatchQueueRemainingCapacity */ + /** Lookup203: cumulus_pallet_parachain_system::relay_state_snapshot::RelayDispatchQueueRemainingCapacity */ CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity: { remainingCount: "u32", remainingSize: "u32", }, - /** Lookup207: polkadot_primitives::v7::AbridgedHrmpChannel */ + /** Lookup206: polkadot_primitives::v7::AbridgedHrmpChannel */ PolkadotPrimitivesV7AbridgedHrmpChannel: { maxCapacity: "u32", maxTotalSize: "u32", @@ -2093,7 +2087,7 @@ export default { totalSize: "u32", mqcHead: "Option", }, - /** Lookup208: polkadot_primitives::v7::AbridgedHostConfiguration */ + /** Lookup207: polkadot_primitives::v7::AbridgedHostConfiguration */ PolkadotPrimitivesV7AbridgedHostConfiguration: { maxCodeSize: "u32", maxHeadDataSize: "u32", @@ -2106,17 +2100,17 @@ export default { validationUpgradeDelay: "u32", asyncBackingParams: "PolkadotPrimitivesV7AsyncBackingAsyncBackingParams", }, - /** Lookup209: polkadot_primitives::v7::async_backing::AsyncBackingParams */ + /** Lookup208: polkadot_primitives::v7::async_backing::AsyncBackingParams */ PolkadotPrimitivesV7AsyncBackingAsyncBackingParams: { maxCandidateDepth: "u32", allowedAncestryLen: "u32", }, - /** Lookup215: polkadot_core_primitives::OutboundHrmpMessage */ + /** Lookup214: polkadot_core_primitives::OutboundHrmpMessage */ PolkadotCorePrimitivesOutboundHrmpMessage: { recipient: "u32", data: "Bytes", }, - /** Lookup216: cumulus_pallet_parachain_system::pallet::Call */ + /** Lookup215: cumulus_pallet_parachain_system::pallet::Call */ CumulusPalletParachainSystemCall: { _enum: { set_validation_data: { @@ -2134,24 +2128,24 @@ export default { }, }, }, - /** Lookup217: cumulus_primitives_parachain_inherent::ParachainInherentData */ + /** Lookup216: cumulus_primitives_parachain_inherent::ParachainInherentData */ CumulusPrimitivesParachainInherentParachainInherentData: { validationData: "PolkadotPrimitivesV7PersistedValidationData", relayChainState: "SpTrieStorageProof", downwardMessages: "Vec", horizontalMessages: "BTreeMap>", }, - /** Lookup219: polkadot_core_primitives::InboundDownwardMessage */ + /** Lookup218: polkadot_core_primitives::InboundDownwardMessage */ PolkadotCorePrimitivesInboundDownwardMessage: { sentAt: "u32", msg: "Bytes", }, - /** Lookup222: polkadot_core_primitives::InboundHrmpMessage */ + /** Lookup221: polkadot_core_primitives::InboundHrmpMessage */ PolkadotCorePrimitivesInboundHrmpMessage: { sentAt: "u32", data: "Bytes", }, - /** Lookup225: cumulus_pallet_parachain_system::pallet::Error */ + /** Lookup224: cumulus_pallet_parachain_system::pallet::Error */ CumulusPalletParachainSystemError: { _enum: [ "OverlappingUpgrades", @@ -2164,7 +2158,7 @@ export default { "Unauthorized", ], }, - /** Lookup226: pallet_timestamp::pallet::Call */ + /** Lookup225: pallet_timestamp::pallet::Call */ PalletTimestampCall: { _enum: { set: { @@ -2172,9 +2166,9 @@ export default { }, }, }, - /** Lookup227: staging_parachain_info::pallet::Call */ + /** Lookup226: staging_parachain_info::pallet::Call */ StagingParachainInfoCall: "Null", - /** Lookup228: pallet_sudo::pallet::Call */ + /** Lookup227: pallet_sudo::pallet::Call */ PalletSudoCall: { _enum: { sudo: { @@ -2197,7 +2191,7 @@ export default { remove_key: "Null", }, }, - /** Lookup230: pallet_utility::pallet::Call */ + /** Lookup229: pallet_utility::pallet::Call */ PalletUtilityCall: { _enum: { batch: { @@ -2223,7 +2217,7 @@ export default { }, }, }, - /** Lookup232: dancebox_runtime::OriginCaller */ + /** Lookup231: dancebox_runtime::OriginCaller */ DanceboxRuntimeOriginCaller: { _enum: { system: "FrameSupportDispatchRawOrigin", @@ -2282,7 +2276,7 @@ export default { PolkadotXcm: "PalletXcmOrigin", }, }, - /** Lookup233: frame_support::dispatch::RawOrigin */ + /** Lookup232: frame_support::dispatch::RawOrigin */ FrameSupportDispatchRawOrigin: { _enum: { Root: "Null", @@ -2290,23 +2284,23 @@ export default { None: "Null", }, }, - /** Lookup234: cumulus_pallet_xcm::pallet::Origin */ + /** Lookup233: cumulus_pallet_xcm::pallet::Origin */ CumulusPalletXcmOrigin: { _enum: { Relay: "Null", SiblingParachain: "u32", }, }, - /** Lookup235: pallet_xcm::pallet::Origin */ + /** Lookup234: pallet_xcm::pallet::Origin */ PalletXcmOrigin: { _enum: { Xcm: "StagingXcmV4Location", Response: "StagingXcmV4Location", }, }, - /** Lookup236: sp_core::Void */ + /** Lookup235: sp_core::Void */ SpCoreVoid: "Null", - /** Lookup237: pallet_proxy::pallet::Call */ + /** Lookup236: pallet_proxy::pallet::Call */ PalletProxyCall: { _enum: { proxy: { @@ -2357,11 +2351,11 @@ export default { }, }, }, - /** Lookup241: pallet_maintenance_mode::pallet::Call */ + /** Lookup240: pallet_maintenance_mode::pallet::Call */ PalletMaintenanceModeCall: { _enum: ["enter_maintenance_mode", "resume_normal_operation"], }, - /** Lookup242: pallet_tx_pause::pallet::Call */ + /** Lookup241: pallet_tx_pause::pallet::Call */ PalletTxPauseCall: { _enum: { pause: { @@ -2372,7 +2366,7 @@ export default { }, }, }, - /** Lookup243: pallet_balances::pallet::Call */ + /** Lookup242: pallet_balances::pallet::Call */ PalletBalancesCall: { _enum: { transfer_allow_death: { diff --git a/typescript-api/src/dancebox/interfaces/types-lookup.ts b/typescript-api/src/dancebox/interfaces/types-lookup.ts index 83576cf07..2492ddbeb 100644 --- a/typescript-api/src/dancebox/interfaces/types-lookup.ts +++ b/typescript-api/src/dancebox/interfaces/types-lookup.ts @@ -979,10 +979,6 @@ declare module "@polkadot/types/lookup" { /** @name PalletInvulnerablesEvent (68) */ interface PalletInvulnerablesEvent extends Enum { - readonly isNewInvulnerables: boolean; - readonly asNewInvulnerables: { - readonly invulnerables: Vec; - } & Struct; readonly isInvulnerableAdded: boolean; readonly asInvulnerableAdded: { readonly accountId: AccountId32; @@ -991,14 +987,10 @@ declare module "@polkadot/types/lookup" { readonly asInvulnerableRemoved: { readonly accountId: AccountId32; } & Struct; - readonly isInvalidInvulnerableSkipped: boolean; - readonly asInvalidInvulnerableSkipped: { - readonly accountId: AccountId32; - } & Struct; - readonly type: "NewInvulnerables" | "InvulnerableAdded" | "InvulnerableRemoved" | "InvalidInvulnerableSkipped"; + readonly type: "InvulnerableAdded" | "InvulnerableRemoved"; } - /** @name PalletSessionEvent (70) */ + /** @name PalletSessionEvent (69) */ interface PalletSessionEvent extends Enum { readonly isNewSession: boolean; readonly asNewSession: { @@ -1007,7 +999,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewSession"; } - /** @name PalletPooledStakingEvent (71) */ + /** @name PalletPooledStakingEvent (70) */ interface PalletPooledStakingEvent extends Enum { readonly isUpdatedCandidatePosition: boolean; readonly asUpdatedCandidatePosition: { @@ -1132,14 +1124,14 @@ declare module "@polkadot/types/lookup" { | "SwappedPool"; } - /** @name PalletPooledStakingTargetPool (73) */ + /** @name PalletPooledStakingTargetPool (72) */ interface PalletPooledStakingTargetPool extends Enum { readonly isAutoCompounding: boolean; readonly isManualRewards: boolean; readonly type: "AutoCompounding" | "ManualRewards"; } - /** @name PalletInflationRewardsEvent (74) */ + /** @name PalletInflationRewardsEvent (73) */ interface PalletInflationRewardsEvent extends Enum { readonly isRewardedOrchestrator: boolean; readonly asRewardedOrchestrator: { @@ -1155,7 +1147,7 @@ declare module "@polkadot/types/lookup" { readonly type: "RewardedOrchestrator" | "RewardedContainer"; } - /** @name PalletTreasuryEvent (75) */ + /** @name PalletTreasuryEvent (74) */ interface PalletTreasuryEvent extends Enum { readonly isSpending: boolean; readonly asSpending: { @@ -1232,7 +1224,7 @@ declare module "@polkadot/types/lookup" { | "SpendProcessed"; } - /** @name CumulusPalletXcmpQueueEvent (76) */ + /** @name CumulusPalletXcmpQueueEvent (75) */ interface CumulusPalletXcmpQueueEvent extends Enum { readonly isXcmpMessageSent: boolean; readonly asXcmpMessageSent: { @@ -1241,7 +1233,7 @@ declare module "@polkadot/types/lookup" { readonly type: "XcmpMessageSent"; } - /** @name CumulusPalletXcmEvent (77) */ + /** @name CumulusPalletXcmEvent (76) */ interface CumulusPalletXcmEvent extends Enum { readonly isInvalidFormat: boolean; readonly asInvalidFormat: U8aFixed; @@ -1252,7 +1244,7 @@ declare module "@polkadot/types/lookup" { readonly type: "InvalidFormat" | "UnsupportedVersion" | "ExecutedDownward"; } - /** @name StagingXcmV4TraitsOutcome (78) */ + /** @name StagingXcmV4TraitsOutcome (77) */ interface StagingXcmV4TraitsOutcome extends Enum { readonly isComplete: boolean; readonly asComplete: { @@ -1270,7 +1262,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Complete" | "Incomplete" | "Error"; } - /** @name XcmV3TraitsError (79) */ + /** @name XcmV3TraitsError (78) */ interface XcmV3TraitsError extends Enum { readonly isOverflow: boolean; readonly isUnimplemented: boolean; @@ -1357,7 +1349,7 @@ declare module "@polkadot/types/lookup" { | "ExceedsStackLimit"; } - /** @name PalletXcmEvent (80) */ + /** @name PalletXcmEvent (79) */ interface PalletXcmEvent extends Enum { readonly isAttempted: boolean; readonly asAttempted: { @@ -1522,13 +1514,13 @@ declare module "@polkadot/types/lookup" { | "VersionMigrationFinished"; } - /** @name StagingXcmV4Location (81) */ + /** @name StagingXcmV4Location (80) */ interface StagingXcmV4Location extends Struct { readonly parents: u8; readonly interior: StagingXcmV4Junctions; } - /** @name StagingXcmV4Junctions (82) */ + /** @name StagingXcmV4Junctions (81) */ interface StagingXcmV4Junctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -1550,7 +1542,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name StagingXcmV4Junction (84) */ + /** @name StagingXcmV4Junction (83) */ interface StagingXcmV4Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -1599,7 +1591,7 @@ declare module "@polkadot/types/lookup" { | "GlobalConsensus"; } - /** @name StagingXcmV4JunctionNetworkId (87) */ + /** @name StagingXcmV4JunctionNetworkId (86) */ interface StagingXcmV4JunctionNetworkId extends Enum { readonly isByGenesis: boolean; readonly asByGenesis: U8aFixed; @@ -1634,7 +1626,7 @@ declare module "@polkadot/types/lookup" { | "PolkadotBulletin"; } - /** @name XcmV3JunctionBodyId (90) */ + /** @name XcmV3JunctionBodyId (89) */ interface XcmV3JunctionBodyId extends Enum { readonly isUnit: boolean; readonly isMoniker: boolean; @@ -1661,7 +1653,7 @@ declare module "@polkadot/types/lookup" { | "Treasury"; } - /** @name XcmV3JunctionBodyPart (91) */ + /** @name XcmV3JunctionBodyPart (90) */ interface XcmV3JunctionBodyPart extends Enum { readonly isVoice: boolean; readonly isMembers: boolean; @@ -1686,10 +1678,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Voice" | "Members" | "Fraction" | "AtLeastProportion" | "MoreThanProportion"; } - /** @name StagingXcmV4Xcm (99) */ + /** @name StagingXcmV4Xcm (98) */ interface StagingXcmV4Xcm extends Vec {} - /** @name StagingXcmV4Instruction (101) */ + /** @name StagingXcmV4Instruction (100) */ interface StagingXcmV4Instruction extends Enum { readonly isWithdrawAsset: boolean; readonly asWithdrawAsset: StagingXcmV4AssetAssets; @@ -1919,19 +1911,19 @@ declare module "@polkadot/types/lookup" { | "UnpaidExecution"; } - /** @name StagingXcmV4AssetAssets (102) */ + /** @name StagingXcmV4AssetAssets (101) */ interface StagingXcmV4AssetAssets extends Vec {} - /** @name StagingXcmV4Asset (104) */ + /** @name StagingXcmV4Asset (103) */ interface StagingXcmV4Asset extends Struct { readonly id: StagingXcmV4AssetAssetId; readonly fun: StagingXcmV4AssetFungibility; } - /** @name StagingXcmV4AssetAssetId (105) */ + /** @name StagingXcmV4AssetAssetId (104) */ interface StagingXcmV4AssetAssetId extends StagingXcmV4Location {} - /** @name StagingXcmV4AssetFungibility (106) */ + /** @name StagingXcmV4AssetFungibility (105) */ interface StagingXcmV4AssetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -1940,7 +1932,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name StagingXcmV4AssetAssetInstance (107) */ + /** @name StagingXcmV4AssetAssetInstance (106) */ interface StagingXcmV4AssetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -1956,7 +1948,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32"; } - /** @name StagingXcmV4Response (110) */ + /** @name StagingXcmV4Response (109) */ interface StagingXcmV4Response extends Enum { readonly isNull: boolean; readonly isAssets: boolean; @@ -1972,7 +1964,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Null" | "Assets" | "ExecutionResult" | "Version" | "PalletsInfo" | "DispatchResult"; } - /** @name StagingXcmV4PalletInfo (114) */ + /** @name StagingXcmV4PalletInfo (113) */ interface StagingXcmV4PalletInfo extends Struct { readonly index: Compact; readonly name: Bytes; @@ -1982,7 +1974,7 @@ declare module "@polkadot/types/lookup" { readonly patch: Compact; } - /** @name XcmV3MaybeErrorCode (117) */ + /** @name XcmV3MaybeErrorCode (116) */ interface XcmV3MaybeErrorCode extends Enum { readonly isSuccess: boolean; readonly isError: boolean; @@ -1992,7 +1984,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Success" | "Error" | "TruncatedError"; } - /** @name XcmV3OriginKind (120) */ + /** @name XcmV3OriginKind (119) */ interface XcmV3OriginKind extends Enum { readonly isNative: boolean; readonly isSovereignAccount: boolean; @@ -2001,19 +1993,19 @@ declare module "@polkadot/types/lookup" { readonly type: "Native" | "SovereignAccount" | "Superuser" | "Xcm"; } - /** @name XcmDoubleEncoded (121) */ + /** @name XcmDoubleEncoded (120) */ interface XcmDoubleEncoded extends Struct { readonly encoded: Bytes; } - /** @name StagingXcmV4QueryResponseInfo (122) */ + /** @name StagingXcmV4QueryResponseInfo (121) */ interface StagingXcmV4QueryResponseInfo extends Struct { readonly destination: StagingXcmV4Location; readonly queryId: Compact; readonly maxWeight: SpWeightsWeightV2Weight; } - /** @name StagingXcmV4AssetAssetFilter (123) */ + /** @name StagingXcmV4AssetAssetFilter (122) */ interface StagingXcmV4AssetAssetFilter extends Enum { readonly isDefinite: boolean; readonly asDefinite: StagingXcmV4AssetAssets; @@ -2022,7 +2014,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Definite" | "Wild"; } - /** @name StagingXcmV4AssetWildAsset (124) */ + /** @name StagingXcmV4AssetWildAsset (123) */ interface StagingXcmV4AssetWildAsset extends Enum { readonly isAll: boolean; readonly isAllOf: boolean; @@ -2041,14 +2033,14 @@ declare module "@polkadot/types/lookup" { readonly type: "All" | "AllOf" | "AllCounted" | "AllOfCounted"; } - /** @name StagingXcmV4AssetWildFungibility (125) */ + /** @name StagingXcmV4AssetWildFungibility (124) */ interface StagingXcmV4AssetWildFungibility extends Enum { readonly isFungible: boolean; readonly isNonFungible: boolean; readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV3WeightLimit (126) */ + /** @name XcmV3WeightLimit (125) */ interface XcmV3WeightLimit extends Enum { readonly isUnlimited: boolean; readonly isLimited: boolean; @@ -2056,7 +2048,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unlimited" | "Limited"; } - /** @name XcmVersionedAssets (127) */ + /** @name XcmVersionedAssets (126) */ interface XcmVersionedAssets extends Enum { readonly isV2: boolean; readonly asV2: XcmV2MultiassetMultiAssets; @@ -2067,16 +2059,16 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name XcmV2MultiassetMultiAssets (128) */ + /** @name XcmV2MultiassetMultiAssets (127) */ interface XcmV2MultiassetMultiAssets extends Vec {} - /** @name XcmV2MultiAsset (130) */ + /** @name XcmV2MultiAsset (129) */ interface XcmV2MultiAsset extends Struct { readonly id: XcmV2MultiassetAssetId; readonly fun: XcmV2MultiassetFungibility; } - /** @name XcmV2MultiassetAssetId (131) */ + /** @name XcmV2MultiassetAssetId (130) */ interface XcmV2MultiassetAssetId extends Enum { readonly isConcrete: boolean; readonly asConcrete: XcmV2MultiLocation; @@ -2085,13 +2077,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Concrete" | "Abstract"; } - /** @name XcmV2MultiLocation (132) */ + /** @name XcmV2MultiLocation (131) */ interface XcmV2MultiLocation extends Struct { readonly parents: u8; readonly interior: XcmV2MultilocationJunctions; } - /** @name XcmV2MultilocationJunctions (133) */ + /** @name XcmV2MultilocationJunctions (132) */ interface XcmV2MultilocationJunctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -2128,7 +2120,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name XcmV2Junction (134) */ + /** @name XcmV2Junction (133) */ interface XcmV2Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -2171,7 +2163,7 @@ declare module "@polkadot/types/lookup" { | "Plurality"; } - /** @name XcmV2NetworkId (135) */ + /** @name XcmV2NetworkId (134) */ interface XcmV2NetworkId extends Enum { readonly isAny: boolean; readonly isNamed: boolean; @@ -2181,7 +2173,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Any" | "Named" | "Polkadot" | "Kusama"; } - /** @name XcmV2BodyId (137) */ + /** @name XcmV2BodyId (136) */ interface XcmV2BodyId extends Enum { readonly isUnit: boolean; readonly isNamed: boolean; @@ -2208,7 +2200,7 @@ declare module "@polkadot/types/lookup" { | "Treasury"; } - /** @name XcmV2BodyPart (138) */ + /** @name XcmV2BodyPart (137) */ interface XcmV2BodyPart extends Enum { readonly isVoice: boolean; readonly isMembers: boolean; @@ -2233,7 +2225,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Voice" | "Members" | "Fraction" | "AtLeastProportion" | "MoreThanProportion"; } - /** @name XcmV2MultiassetFungibility (139) */ + /** @name XcmV2MultiassetFungibility (138) */ interface XcmV2MultiassetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -2242,7 +2234,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV2MultiassetAssetInstance (140) */ + /** @name XcmV2MultiassetAssetInstance (139) */ interface XcmV2MultiassetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -2260,16 +2252,16 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32" | "Blob"; } - /** @name XcmV3MultiassetMultiAssets (141) */ + /** @name XcmV3MultiassetMultiAssets (140) */ interface XcmV3MultiassetMultiAssets extends Vec {} - /** @name XcmV3MultiAsset (143) */ + /** @name XcmV3MultiAsset (142) */ interface XcmV3MultiAsset extends Struct { readonly id: XcmV3MultiassetAssetId; readonly fun: XcmV3MultiassetFungibility; } - /** @name XcmV3MultiassetAssetId (144) */ + /** @name XcmV3MultiassetAssetId (143) */ interface XcmV3MultiassetAssetId extends Enum { readonly isConcrete: boolean; readonly asConcrete: StagingXcmV3MultiLocation; @@ -2278,13 +2270,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Concrete" | "Abstract"; } - /** @name StagingXcmV3MultiLocation (145) */ + /** @name StagingXcmV3MultiLocation (144) */ interface StagingXcmV3MultiLocation extends Struct { readonly parents: u8; readonly interior: XcmV3Junctions; } - /** @name XcmV3Junctions (146) */ + /** @name XcmV3Junctions (145) */ interface XcmV3Junctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -2321,7 +2313,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name XcmV3Junction (147) */ + /** @name XcmV3Junction (146) */ interface XcmV3Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -2370,7 +2362,7 @@ declare module "@polkadot/types/lookup" { | "GlobalConsensus"; } - /** @name XcmV3JunctionNetworkId (149) */ + /** @name XcmV3JunctionNetworkId (148) */ interface XcmV3JunctionNetworkId extends Enum { readonly isByGenesis: boolean; readonly asByGenesis: U8aFixed; @@ -2405,7 +2397,7 @@ declare module "@polkadot/types/lookup" { | "PolkadotBulletin"; } - /** @name XcmV3MultiassetFungibility (150) */ + /** @name XcmV3MultiassetFungibility (149) */ interface XcmV3MultiassetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -2414,7 +2406,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV3MultiassetAssetInstance (151) */ + /** @name XcmV3MultiassetAssetInstance (150) */ interface XcmV3MultiassetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -2430,7 +2422,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32"; } - /** @name XcmVersionedLocation (152) */ + /** @name XcmVersionedLocation (151) */ interface XcmVersionedLocation extends Enum { readonly isV2: boolean; readonly asV2: XcmV2MultiLocation; @@ -2441,7 +2433,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name PalletAssetsEvent (153) */ + /** @name PalletAssetsEvent (152) */ interface PalletAssetsEvent extends Enum { readonly isCreated: boolean; readonly asCreated: { @@ -2617,7 +2609,7 @@ declare module "@polkadot/types/lookup" { | "Withdrawn"; } - /** @name PalletForeignAssetCreatorEvent (154) */ + /** @name PalletForeignAssetCreatorEvent (153) */ interface PalletForeignAssetCreatorEvent extends Enum { readonly isForeignAssetCreated: boolean; readonly asForeignAssetCreated: { @@ -2646,7 +2638,7 @@ declare module "@polkadot/types/lookup" { | "ForeignAssetDestroyed"; } - /** @name PalletAssetRateEvent (155) */ + /** @name PalletAssetRateEvent (154) */ interface PalletAssetRateEvent extends Enum { readonly isAssetRateCreated: boolean; readonly asAssetRateCreated: { @@ -2666,7 +2658,7 @@ declare module "@polkadot/types/lookup" { readonly type: "AssetRateCreated" | "AssetRateRemoved" | "AssetRateUpdated"; } - /** @name PalletMessageQueueEvent (157) */ + /** @name PalletMessageQueueEvent (156) */ interface PalletMessageQueueEvent extends Enum { readonly isProcessingFailed: boolean; readonly asProcessingFailed: { @@ -2696,7 +2688,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ProcessingFailed" | "Processed" | "OverweightEnqueued" | "PageReaped"; } - /** @name CumulusPrimitivesCoreAggregateMessageOrigin (158) */ + /** @name CumulusPrimitivesCoreAggregateMessageOrigin (157) */ interface CumulusPrimitivesCoreAggregateMessageOrigin extends Enum { readonly isHere: boolean; readonly isParent: boolean; @@ -2705,7 +2697,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "Parent" | "Sibling"; } - /** @name FrameSupportMessagesProcessMessageError (159) */ + /** @name FrameSupportMessagesProcessMessageError (158) */ interface FrameSupportMessagesProcessMessageError extends Enum { readonly isBadFormat: boolean; readonly isCorrupt: boolean; @@ -2717,7 +2709,7 @@ declare module "@polkadot/types/lookup" { readonly type: "BadFormat" | "Corrupt" | "Unsupported" | "Overweight" | "Yield" | "StackLimitReached"; } - /** @name PalletXcmCoreBuyerEvent (160) */ + /** @name PalletXcmCoreBuyerEvent (159) */ interface PalletXcmCoreBuyerEvent extends Enum { readonly isBuyCoreXcmSent: boolean; readonly asBuyCoreXcmSent: { @@ -2744,13 +2736,13 @@ declare module "@polkadot/types/lookup" { | "CleanedUpExpiredInFlightOrderEntries"; } - /** @name PalletRootTestingEvent (162) */ + /** @name PalletRootTestingEvent (161) */ interface PalletRootTestingEvent extends Enum { readonly isDefensiveTestCall: boolean; readonly type: "DefensiveTestCall"; } - /** @name FrameSystemPhase (163) */ + /** @name FrameSystemPhase (162) */ interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -2759,19 +2751,19 @@ declare module "@polkadot/types/lookup" { readonly type: "ApplyExtrinsic" | "Finalization" | "Initialization"; } - /** @name FrameSystemLastRuntimeUpgradeInfo (167) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (166) */ interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemCodeUpgradeAuthorization (169) */ + /** @name FrameSystemCodeUpgradeAuthorization (168) */ interface FrameSystemCodeUpgradeAuthorization extends Struct { readonly codeHash: H256; readonly checkVersion: bool; } - /** @name FrameSystemCall (170) */ + /** @name FrameSystemCall (169) */ interface FrameSystemCall extends Enum { readonly isRemark: boolean; readonly asRemark: { @@ -2832,21 +2824,21 @@ declare module "@polkadot/types/lookup" { | "ApplyAuthorizedUpgrade"; } - /** @name FrameSystemLimitsBlockWeights (174) */ + /** @name FrameSystemLimitsBlockWeights (173) */ interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: SpWeightsWeightV2Weight; readonly maxBlock: SpWeightsWeightV2Weight; readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass; } - /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (175) */ + /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (174) */ interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (176) */ + /** @name FrameSystemLimitsWeightsPerClass (175) */ interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: SpWeightsWeightV2Weight; readonly maxExtrinsic: Option; @@ -2854,25 +2846,25 @@ declare module "@polkadot/types/lookup" { readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (178) */ + /** @name FrameSystemLimitsBlockLength (177) */ interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportDispatchPerDispatchClassU32; } - /** @name FrameSupportDispatchPerDispatchClassU32 (179) */ + /** @name FrameSupportDispatchPerDispatchClassU32 (178) */ interface FrameSupportDispatchPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name SpWeightsRuntimeDbWeight (180) */ + /** @name SpWeightsRuntimeDbWeight (179) */ interface SpWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (181) */ + /** @name SpVersionRuntimeVersion (180) */ interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -2884,7 +2876,7 @@ declare module "@polkadot/types/lookup" { readonly stateVersion: u8; } - /** @name FrameSystemError (185) */ + /** @name FrameSystemError (184) */ interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -2907,41 +2899,41 @@ declare module "@polkadot/types/lookup" { | "Unauthorized"; } - /** @name CumulusPalletParachainSystemUnincludedSegmentAncestor (187) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentAncestor (186) */ interface CumulusPalletParachainSystemUnincludedSegmentAncestor extends Struct { readonly usedBandwidth: CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth; readonly paraHeadHash: Option; readonly consumedGoAheadSignal: Option; } - /** @name CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth (188) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth (187) */ interface CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth extends Struct { readonly umpMsgCount: u32; readonly umpTotalBytes: u32; readonly hrmpOutgoing: BTreeMap; } - /** @name CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate (190) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate (189) */ interface CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate extends Struct { readonly msgCount: u32; readonly totalBytes: u32; } - /** @name PolkadotPrimitivesV7UpgradeGoAhead (195) */ + /** @name PolkadotPrimitivesV7UpgradeGoAhead (194) */ interface PolkadotPrimitivesV7UpgradeGoAhead extends Enum { readonly isAbort: boolean; readonly isGoAhead: boolean; readonly type: "Abort" | "GoAhead"; } - /** @name CumulusPalletParachainSystemUnincludedSegmentSegmentTracker (196) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentSegmentTracker (195) */ interface CumulusPalletParachainSystemUnincludedSegmentSegmentTracker extends Struct { readonly usedBandwidth: CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth; readonly hrmpWatermark: Option; readonly consumedGoAheadSignal: Option; } - /** @name PolkadotPrimitivesV7PersistedValidationData (197) */ + /** @name PolkadotPrimitivesV7PersistedValidationData (196) */ interface PolkadotPrimitivesV7PersistedValidationData extends Struct { readonly parentHead: Bytes; readonly relayParentNumber: u32; @@ -2949,18 +2941,18 @@ declare module "@polkadot/types/lookup" { readonly maxPovSize: u32; } - /** @name PolkadotPrimitivesV7UpgradeRestriction (200) */ + /** @name PolkadotPrimitivesV7UpgradeRestriction (199) */ interface PolkadotPrimitivesV7UpgradeRestriction extends Enum { readonly isPresent: boolean; readonly type: "Present"; } - /** @name SpTrieStorageProof (201) */ + /** @name SpTrieStorageProof (200) */ interface SpTrieStorageProof extends Struct { readonly trieNodes: BTreeSet; } - /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (203) */ + /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (202) */ interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct { readonly dmqMqcHead: H256; readonly relayDispatchQueueRemainingCapacity: CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity; @@ -2968,13 +2960,13 @@ declare module "@polkadot/types/lookup" { readonly egressChannels: Vec>; } - /** @name CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity (204) */ + /** @name CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity (203) */ interface CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity extends Struct { readonly remainingCount: u32; readonly remainingSize: u32; } - /** @name PolkadotPrimitivesV7AbridgedHrmpChannel (207) */ + /** @name PolkadotPrimitivesV7AbridgedHrmpChannel (206) */ interface PolkadotPrimitivesV7AbridgedHrmpChannel extends Struct { readonly maxCapacity: u32; readonly maxTotalSize: u32; @@ -2984,7 +2976,7 @@ declare module "@polkadot/types/lookup" { readonly mqcHead: Option; } - /** @name PolkadotPrimitivesV7AbridgedHostConfiguration (208) */ + /** @name PolkadotPrimitivesV7AbridgedHostConfiguration (207) */ interface PolkadotPrimitivesV7AbridgedHostConfiguration extends Struct { readonly maxCodeSize: u32; readonly maxHeadDataSize: u32; @@ -2998,19 +2990,19 @@ declare module "@polkadot/types/lookup" { readonly asyncBackingParams: PolkadotPrimitivesV7AsyncBackingAsyncBackingParams; } - /** @name PolkadotPrimitivesV7AsyncBackingAsyncBackingParams (209) */ + /** @name PolkadotPrimitivesV7AsyncBackingAsyncBackingParams (208) */ interface PolkadotPrimitivesV7AsyncBackingAsyncBackingParams extends Struct { readonly maxCandidateDepth: u32; readonly allowedAncestryLen: u32; } - /** @name PolkadotCorePrimitivesOutboundHrmpMessage (215) */ + /** @name PolkadotCorePrimitivesOutboundHrmpMessage (214) */ interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct { readonly recipient: u32; readonly data: Bytes; } - /** @name CumulusPalletParachainSystemCall (216) */ + /** @name CumulusPalletParachainSystemCall (215) */ interface CumulusPalletParachainSystemCall extends Enum { readonly isSetValidationData: boolean; readonly asSetValidationData: { @@ -3032,7 +3024,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SetValidationData" | "SudoSendUpwardMessage" | "AuthorizeUpgrade" | "EnactAuthorizedUpgrade"; } - /** @name CumulusPrimitivesParachainInherentParachainInherentData (217) */ + /** @name CumulusPrimitivesParachainInherentParachainInherentData (216) */ interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct { readonly validationData: PolkadotPrimitivesV7PersistedValidationData; readonly relayChainState: SpTrieStorageProof; @@ -3040,19 +3032,19 @@ declare module "@polkadot/types/lookup" { readonly horizontalMessages: BTreeMap>; } - /** @name PolkadotCorePrimitivesInboundDownwardMessage (219) */ + /** @name PolkadotCorePrimitivesInboundDownwardMessage (218) */ interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct { readonly sentAt: u32; readonly msg: Bytes; } - /** @name PolkadotCorePrimitivesInboundHrmpMessage (222) */ + /** @name PolkadotCorePrimitivesInboundHrmpMessage (221) */ interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct { readonly sentAt: u32; readonly data: Bytes; } - /** @name CumulusPalletParachainSystemError (225) */ + /** @name CumulusPalletParachainSystemError (224) */ interface CumulusPalletParachainSystemError extends Enum { readonly isOverlappingUpgrades: boolean; readonly isProhibitedByPolkadot: boolean; @@ -3073,7 +3065,7 @@ declare module "@polkadot/types/lookup" { | "Unauthorized"; } - /** @name PalletTimestampCall (226) */ + /** @name PalletTimestampCall (225) */ interface PalletTimestampCall extends Enum { readonly isSet: boolean; readonly asSet: { @@ -3082,10 +3074,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Set"; } - /** @name StagingParachainInfoCall (227) */ + /** @name StagingParachainInfoCall (226) */ type StagingParachainInfoCall = Null; - /** @name PalletSudoCall (228) */ + /** @name PalletSudoCall (227) */ interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -3109,7 +3101,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Sudo" | "SudoUncheckedWeight" | "SetKey" | "SudoAs" | "RemoveKey"; } - /** @name PalletUtilityCall (230) */ + /** @name PalletUtilityCall (229) */ interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -3141,7 +3133,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Batch" | "AsDerivative" | "BatchAll" | "DispatchAs" | "ForceBatch" | "WithWeight"; } - /** @name DanceboxRuntimeOriginCaller (232) */ + /** @name DanceboxRuntimeOriginCaller (231) */ interface DanceboxRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSupportDispatchRawOrigin; @@ -3153,7 +3145,7 @@ declare module "@polkadot/types/lookup" { readonly type: "System" | "Void" | "CumulusXcm" | "PolkadotXcm"; } - /** @name FrameSupportDispatchRawOrigin (233) */ + /** @name FrameSupportDispatchRawOrigin (232) */ interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -3162,7 +3154,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Root" | "Signed" | "None"; } - /** @name CumulusPalletXcmOrigin (234) */ + /** @name CumulusPalletXcmOrigin (233) */ interface CumulusPalletXcmOrigin extends Enum { readonly isRelay: boolean; readonly isSiblingParachain: boolean; @@ -3170,7 +3162,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Relay" | "SiblingParachain"; } - /** @name PalletXcmOrigin (235) */ + /** @name PalletXcmOrigin (234) */ interface PalletXcmOrigin extends Enum { readonly isXcm: boolean; readonly asXcm: StagingXcmV4Location; @@ -3179,10 +3171,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Xcm" | "Response"; } - /** @name SpCoreVoid (236) */ + /** @name SpCoreVoid (235) */ type SpCoreVoid = Null; - /** @name PalletProxyCall (237) */ + /** @name PalletProxyCall (236) */ interface PalletProxyCall extends Enum { readonly isProxy: boolean; readonly asProxy: { @@ -3252,14 +3244,14 @@ declare module "@polkadot/types/lookup" { | "ProxyAnnounced"; } - /** @name PalletMaintenanceModeCall (241) */ + /** @name PalletMaintenanceModeCall (240) */ interface PalletMaintenanceModeCall extends Enum { readonly isEnterMaintenanceMode: boolean; readonly isResumeNormalOperation: boolean; readonly type: "EnterMaintenanceMode" | "ResumeNormalOperation"; } - /** @name PalletTxPauseCall (242) */ + /** @name PalletTxPauseCall (241) */ interface PalletTxPauseCall extends Enum { readonly isPause: boolean; readonly asPause: { @@ -3272,7 +3264,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pause" | "Unpause"; } - /** @name PalletBalancesCall (243) */ + /** @name PalletBalancesCall (242) */ interface PalletBalancesCall extends Enum { readonly isTransferAllowDeath: boolean; readonly asTransferAllowDeath: { diff --git a/typescript-api/src/dancelight/interfaces/augment-api-consts.ts b/typescript-api/src/dancelight/interfaces/augment-api-consts.ts index 6a5c3382f..dc0004bb4 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-consts.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-consts.ts @@ -133,6 +133,28 @@ declare module "@polkadot/api-base/types/consts" { /** Generic const */ [key: string]: Codec; }; + externalValidators: { + /** + * Number of eras to keep in history. + * + * Following information is kept for eras in `[current_era - HistoryDepth, current_era]`: `ErasStartSessionIndex` + * + * Must be more than the number of eras delayed by session. I.e. active era must always be in history. I.e. + * `active_era > current_era - history_depth` must be guaranteed. + * + * If migrating an existing pallet from storage value to config value, this should be set to same value or greater + * as in storage. + */ + historyDepth: u32 & AugmentedConst; + /** Maximum number of external validators. */ + maxExternalValidators: u32 & AugmentedConst; + /** Maximum number of whitelisted validators. */ + maxWhitelistedValidators: u32 & AugmentedConst; + /** Number of sessions per era. */ + sessionsPerEra: u32 & AugmentedConst; + /** Generic const */ + [key: string]: Codec; + }; fellowshipReferenda: { /** * Quantization level for the referendum wakeup scheduler. A higher number will result in fewer storage diff --git a/typescript-api/src/dancelight/interfaces/augment-api-errors.ts b/typescript-api/src/dancelight/interfaces/augment-api-errors.ts index ddcc575ff..e41215365 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-errors.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-errors.ts @@ -229,6 +229,20 @@ declare module "@polkadot/api-base/types/errors" { /** Generic error */ [key: string]: AugmentedError; }; + externalValidators: { + /** Account is already whitelisted. */ + AlreadyWhitelisted: AugmentedError; + /** Account does not have keys registered */ + NoKeysRegistered: AugmentedError; + /** Account is not whitelisted. */ + NotWhitelisted: AugmentedError; + /** There are too many whitelisted validators. */ + TooManyWhitelisted: AugmentedError; + /** Unable to derive validator id from account id */ + UnableToDeriveValidatorId: AugmentedError; + /** Generic error */ + [key: string]: AugmentedError; + }; fellowshipCollective: { /** Account is already a member. */ AlreadyMember: AugmentedError; diff --git a/typescript-api/src/dancelight/interfaces/augment-api-events.ts b/typescript-api/src/dancelight/interfaces/augment-api-events.ts index 1d1ff8bf6..b96506f9e 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-events.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-events.ts @@ -19,6 +19,7 @@ import type { FrameSupportPreimagesBounded, FrameSupportTokensMiscBalanceStatus, PalletConvictionVotingTally, + PalletExternalValidatorsForcing, PalletMultisigTimepoint, PalletRankedCollectiveTally, PalletRankedCollectiveVoteRecord, @@ -211,6 +212,22 @@ declare module "@polkadot/api-base/types/events" { /** Generic event */ [key: string]: AugmentedEvent; }; + externalValidators: { + /** A new force era mode was set. */ + ForceEra: AugmentedEvent< + ApiType, + [mode: PalletExternalValidatorsForcing], + { mode: PalletExternalValidatorsForcing } + >; + /** A new era has started. */ + NewEra: AugmentedEvent; + /** A new whitelisted validator was added. */ + WhitelistedValidatorAdded: AugmentedEvent; + /** A whitelisted validator was removed. */ + WhitelistedValidatorRemoved: AugmentedEvent; + /** Generic event */ + [key: string]: AugmentedEvent; + }; fellowshipCollective: { /** A member `who` has been added. */ MemberAdded: AugmentedEvent; @@ -1070,21 +1087,10 @@ declare module "@polkadot/api-base/types/events" { [key: string]: AugmentedEvent; }; tanssiInvulnerables: { - /** - * An account was unable to be added to the Invulnerables because they did not have keys registered. Other - * Invulnerables may have been set. - */ - InvalidInvulnerableSkipped: AugmentedEvent; /** A new Invulnerable was added. */ InvulnerableAdded: AugmentedEvent; /** An Invulnerable was removed. */ InvulnerableRemoved: AugmentedEvent; - /** New Invulnerables were set. */ - NewInvulnerables: AugmentedEvent< - ApiType, - [invulnerables: Vec], - { invulnerables: Vec } - >; /** Generic event */ [key: string]: AugmentedEvent; }; @@ -1169,14 +1175,6 @@ declare module "@polkadot/api-base/types/events" { /** Generic event */ [key: string]: AugmentedEvent; }; - validatorManager: { - /** Validators were removed from the set. */ - ValidatorsDeregistered: AugmentedEvent]>; - /** New validators were added to the set. */ - ValidatorsRegistered: AugmentedEvent]>; - /** Generic event */ - [key: string]: AugmentedEvent; - }; whitelist: { CallWhitelisted: AugmentedEvent; WhitelistedCallDispatched: AugmentedEvent< diff --git a/typescript-api/src/dancelight/interfaces/augment-api-query.ts b/typescript-api/src/dancelight/interfaces/augment-api-query.ts index 231d1abb2..ad9e5579f 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-query.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-query.ts @@ -47,6 +47,7 @@ import type { PalletConfigurationHostConfiguration, PalletConvictionVotingVoteVoting, PalletDataPreserversRegisteredProfile, + PalletExternalValidatorsForcing, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityAuthorityProperties, @@ -120,6 +121,7 @@ import type { SpWeightsWeightV2Weight, StagingXcmV4Instruction, StagingXcmV4Xcm, + TpTraitsActiveEraInfo, TpTraitsContainerChainBlockInfo, TpTraitsParathreadParams, XcmVersionedAssetId, @@ -673,6 +675,42 @@ declare module "@polkadot/api-base/types/storage" { /** Generic query */ [key: string]: QueryableStorageEntry; }; + externalValidators: { + /** The active era information, it holds index and start. */ + activeEra: AugmentedQuery Observable>, []> & + QueryableStorageEntry; + /** + * The current era information, it is either ActiveEra or ActiveEra + 1 if the new era validators have been + * queued. + */ + currentEra: AugmentedQuery Observable>, []> & QueryableStorageEntry; + /** + * The session index at which the era start for the last [`Config::HistoryDepth`] eras. + * + * Note: This tracks the starting session (i.e. session index when era start being active) for the eras in + * `[CurrentEra - HISTORY_DEPTH, CurrentEra]`. + */ + erasStartSessionIndex: AugmentedQuery< + ApiType, + (arg: u32 | AnyNumber | Uint8Array) => Observable>, + [u32] + > & + QueryableStorageEntry; + /** Validators set using storage proofs from another blockchain. Ignored if `SkipExternalValidators` is true. */ + externalValidators: AugmentedQuery Observable>, []> & + QueryableStorageEntry; + /** Mode of era forcing. */ + forceEra: AugmentedQuery Observable, []> & + QueryableStorageEntry; + /** Allow to disable external validators. */ + skipExternalValidators: AugmentedQuery Observable, []> & + QueryableStorageEntry; + /** Fixed validators set by root/governance. Have priority over the external validators. */ + whitelistedValidators: AugmentedQuery Observable>, []> & + QueryableStorageEntry; + /** Generic query */ + [key: string]: QueryableStorageEntry; + }; fellowshipCollective: { /** The index of each ranks's member into the group of members who have at least that rank. */ idToIndex: AugmentedQuery< @@ -2083,7 +2121,7 @@ declare module "@polkadot/api-base/types/storage" { [key: string]: QueryableStorageEntry; }; tanssiInvulnerables: { - /** The invulnerable, permissioned collators. This list must be sorted. */ + /** The invulnerable, permissioned collators. */ invulnerables: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** Generic query */ @@ -2135,16 +2173,6 @@ declare module "@polkadot/api-base/types/storage" { /** Generic query */ [key: string]: QueryableStorageEntry; }; - validatorManager: { - /** Validators that should be added. */ - validatorsToAdd: AugmentedQuery Observable>, []> & - QueryableStorageEntry; - /** Validators that should be retired, because their Parachain was deregistered. */ - validatorsToRetire: AugmentedQuery Observable>, []> & - QueryableStorageEntry; - /** Generic query */ - [key: string]: QueryableStorageEntry; - }; whitelist: { whitelistedCall: AugmentedQuery< ApiType, diff --git a/typescript-api/src/dancelight/interfaces/augment-api-tx.ts b/typescript-api/src/dancelight/interfaces/augment-api-tx.ts index 23910c442..12d597a23 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-tx.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-tx.ts @@ -29,6 +29,7 @@ import type { PalletConvictionVotingConviction, PalletConvictionVotingVoteAccountVote, PalletDataPreserversProfile, + PalletExternalValidatorsForcing, PalletIdentityJudgement, PalletIdentityLegacyIdentityInfo, PalletMigrationsHistoricCleanupSelector, @@ -1274,6 +1275,51 @@ declare module "@polkadot/api-base/types/submittable" { /** Generic tx */ [key: string]: SubmittableExtrinsicFunction; }; + externalValidators: { + /** + * Add a new account `who` to the list of `WhitelistedValidators`. + * + * The origin for this call must be the `UpdateOrigin`. + */ + addWhitelisted: AugmentedSubmittable< + (who: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, + [AccountId32] + >; + /** Force when the next era will start. Possible values: next session, never, same as always. */ + forceEra: AugmentedSubmittable< + ( + mode: + | PalletExternalValidatorsForcing + | "NotForcing" + | "ForceNew" + | "ForceNone" + | "ForceAlways" + | number + | Uint8Array + ) => SubmittableExtrinsic, + [PalletExternalValidatorsForcing] + >; + /** + * Remove an account `who` from the list of `WhitelistedValidators` collators. + * + * The origin for this call must be the `UpdateOrigin`. + */ + removeWhitelisted: AugmentedSubmittable< + (who: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, + [AccountId32] + >; + /** + * Allow to ignore external validators and use only whitelisted ones. + * + * The origin for this call must be the `UpdateOrigin`. + */ + skipExternalValidators: AugmentedSubmittable< + (skip: bool | boolean | Uint8Array) => SubmittableExtrinsic, + [bool] + >; + /** Generic tx */ + [key: string]: SubmittableExtrinsicFunction; + }; fellowshipCollective: { /** * Introduce a new member. @@ -3956,7 +4002,7 @@ declare module "@polkadot/api-base/types/submittable" { [AccountId32] >; /** - * Remove an account `who` from the list of `Invulnerables` collators. `Invulnerables` must be sorted. + * Remove an account `who` from the list of `Invulnerables` collators. * * The origin for this call must be the `UpdateOrigin`. */ @@ -4294,28 +4340,6 @@ declare module "@polkadot/api-base/types/submittable" { /** Generic tx */ [key: string]: SubmittableExtrinsicFunction; }; - validatorManager: { - /** - * Remove validators from the set. - * - * The removed validators will be deactivated from current session + 2. - */ - deregisterValidators: AugmentedSubmittable< - (validators: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, - [Vec] - >; - /** - * Add new validators to the set. - * - * The new validators will be active from current session + 2. - */ - registerValidators: AugmentedSubmittable< - (validators: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, - [Vec] - >; - /** Generic tx */ - [key: string]: SubmittableExtrinsicFunction; - }; whitelist: { dispatchWhitelistedCall: AugmentedSubmittable< ( diff --git a/typescript-api/src/dancelight/interfaces/lookup.ts b/typescript-api/src/dancelight/interfaces/lookup.ts index 50aea4de4..ad1e3967e 100644 --- a/typescript-api/src/dancelight/interfaces/lookup.ts +++ b/typescript-api/src/dancelight/interfaces/lookup.ts @@ -331,21 +331,15 @@ export default { /** Lookup46: pallet_invulnerables::pallet::Event */ PalletInvulnerablesEvent: { _enum: { - NewInvulnerables: { - invulnerables: "Vec", - }, InvulnerableAdded: { accountId: "AccountId32", }, InvulnerableRemoved: { accountId: "AccountId32", }, - InvalidInvulnerableSkipped: { - accountId: "AccountId32", - }, }, }, - /** Lookup48: pallet_collator_assignment::pallet::Event */ + /** Lookup47: pallet_collator_assignment::pallet::Event */ PalletCollatorAssignmentEvent: { _enum: { NewPendingAssignment: { @@ -355,7 +349,7 @@ export default { }, }, }, - /** Lookup49: pallet_author_noting::pallet::Event */ + /** Lookup48: pallet_author_noting::pallet::Event */ PalletAuthorNotingEvent: { _enum: { LatestAuthorChanged: { @@ -369,7 +363,7 @@ export default { }, }, }, - /** Lookup51: pallet_services_payment::pallet::Event */ + /** Lookup50: pallet_services_payment::pallet::Event */ PalletServicesPaymentEvent: { _enum: { CreditsPurchased: { @@ -408,7 +402,7 @@ export default { }, }, }, - /** Lookup54: pallet_data_preservers::pallet::Event */ + /** Lookup53: pallet_data_preservers::pallet::Event */ PalletDataPreserversEvent: { _enum: { BootNodesChanged: { @@ -438,7 +432,28 @@ export default { }, }, }, - /** Lookup55: pallet_session::pallet::Event */ + /** Lookup54: pallet_external_validators::pallet::Event */ + PalletExternalValidatorsEvent: { + _enum: { + WhitelistedValidatorAdded: { + accountId: "AccountId32", + }, + WhitelistedValidatorRemoved: { + accountId: "AccountId32", + }, + NewEra: { + era: "u32", + }, + ForceEra: { + mode: "PalletExternalValidatorsForcing", + }, + }, + }, + /** Lookup55: pallet_external_validators::Forcing */ + PalletExternalValidatorsForcing: { + _enum: ["NotForcing", "ForceNew", "ForceNone", "ForceAlways"], + }, + /** Lookup56: pallet_session::pallet::Event */ PalletSessionEvent: { _enum: { NewSession: { @@ -446,7 +461,7 @@ export default { }, }, }, - /** Lookup56: pallet_grandpa::pallet::Event */ + /** Lookup57: pallet_grandpa::pallet::Event */ PalletGrandpaEvent: { _enum: { NewAuthorities: { @@ -456,9 +471,9 @@ export default { Resumed: "Null", }, }, - /** Lookup59: sp_consensus_grandpa::app::Public */ + /** Lookup60: sp_consensus_grandpa::app::Public */ SpConsensusGrandpaAppPublic: "[u8;32]", - /** Lookup60: pallet_inflation_rewards::pallet::Event */ + /** Lookup61: pallet_inflation_rewards::pallet::Event */ PalletInflationRewardsEvent: { _enum: { RewardedOrchestrator: { @@ -472,7 +487,7 @@ export default { }, }, }, - /** Lookup61: pallet_treasury::pallet::Event */ + /** Lookup62: pallet_treasury::pallet::Event */ PalletTreasuryEvent: { _enum: { Spending: { @@ -525,14 +540,14 @@ export default { }, }, }, - /** Lookup63: pallet_conviction_voting::pallet::Event */ + /** Lookup64: pallet_conviction_voting::pallet::Event */ PalletConvictionVotingEvent: { _enum: { Delegated: "(AccountId32,AccountId32)", Undelegated: "AccountId32", }, }, - /** Lookup64: pallet_referenda::pallet::Event */ + /** Lookup65: pallet_referenda::pallet::Event */ PalletReferendaEvent: { _enum: { Submitted: { @@ -611,7 +626,7 @@ export default { }, }, /** - * Lookup66: frame_support::traits::preimages::Bounded */ FrameSupportPreimagesBounded: { @@ -632,7 +647,7 @@ export default { }, }, }, - /** Lookup68: frame_system::pallet::Call */ + /** Lookup69: frame_system::pallet::Call */ FrameSystemCall: { _enum: { remark: { @@ -675,7 +690,7 @@ export default { }, }, }, - /** Lookup72: pallet_babe::pallet::Call */ + /** Lookup73: pallet_babe::pallet::Call */ PalletBabeCall: { _enum: { report_equivocation: { @@ -692,7 +707,7 @@ export default { }, }, /** - * Lookup73: sp_consensus_slots::EquivocationProof, + * Lookup74: sp_consensus_slots::EquivocationProof, * sp_consensus_babe::app::Public> */ SpConsensusSlotsEquivocationProof: { @@ -701,7 +716,7 @@ export default { firstHeader: "SpRuntimeHeader", secondHeader: "SpRuntimeHeader", }, - /** Lookup74: sp_runtime::generic::header::Header */ + /** Lookup75: sp_runtime::generic::header::Header */ SpRuntimeHeader: { parentHash: "H256", number: "Compact", @@ -709,15 +724,15 @@ export default { extrinsicsRoot: "H256", digest: "SpRuntimeDigest", }, - /** Lookup76: sp_consensus_babe::app::Public */ + /** Lookup77: sp_consensus_babe::app::Public */ SpConsensusBabeAppPublic: "[u8;32]", - /** Lookup77: sp_session::MembershipProof */ + /** Lookup78: sp_session::MembershipProof */ SpSessionMembershipProof: { session: "u32", trieNodes: "Vec", validatorCount: "u32", }, - /** Lookup78: sp_consensus_babe::digests::NextConfigDescriptor */ + /** Lookup79: sp_consensus_babe::digests::NextConfigDescriptor */ SpConsensusBabeDigestsNextConfigDescriptor: { _enum: { __Unused0: "Null", @@ -727,11 +742,11 @@ export default { }, }, }, - /** Lookup80: sp_consensus_babe::AllowedSlots */ + /** Lookup81: sp_consensus_babe::AllowedSlots */ SpConsensusBabeAllowedSlots: { _enum: ["PrimarySlots", "PrimaryAndSecondaryPlainSlots", "PrimaryAndSecondaryVRFSlots"], }, - /** Lookup81: pallet_timestamp::pallet::Call */ + /** Lookup82: pallet_timestamp::pallet::Call */ PalletTimestampCall: { _enum: { set: { @@ -739,7 +754,7 @@ export default { }, }, }, - /** Lookup82: pallet_balances::pallet::Call */ + /** Lookup83: pallet_balances::pallet::Call */ PalletBalancesCall: { _enum: { transfer_allow_death: { @@ -782,11 +797,11 @@ export default { }, }, }, - /** Lookup87: pallet_balances::types::AdjustmentDirection */ + /** Lookup89: pallet_balances::types::AdjustmentDirection */ PalletBalancesAdjustmentDirection: { _enum: ["Increase", "Decrease"], }, - /** Lookup88: pallet_parameters::pallet::Call */ + /** Lookup90: pallet_parameters::pallet::Call */ PalletParametersCall: { _enum: { set_parameter: { @@ -794,20 +809,20 @@ export default { }, }, }, - /** Lookup89: dancelight_runtime::RuntimeParameters */ + /** Lookup91: dancelight_runtime::RuntimeParameters */ DancelightRuntimeRuntimeParameters: { _enum: { Preimage: "DancelightRuntimeDynamicParamsPreimageParameters", }, }, - /** Lookup90: dancelight_runtime::dynamic_params::preimage::Parameters */ + /** Lookup92: dancelight_runtime::dynamic_params::preimage::Parameters */ DancelightRuntimeDynamicParamsPreimageParameters: { _enum: { BaseDeposit: "(DancelightRuntimeDynamicParamsPreimageBaseDeposit,Option)", ByteDeposit: "(DancelightRuntimeDynamicParamsPreimageByteDeposit,Option)", }, }, - /** Lookup91: pallet_registrar::pallet::Call */ + /** Lookup93: pallet_registrar::pallet::Call */ PalletRegistrarCall: { _enum: { register: { @@ -858,7 +873,7 @@ export default { }, }, }, - /** Lookup92: dp_container_chain_genesis_data::ContainerChainGenesisData */ + /** Lookup94: dp_container_chain_genesis_data::ContainerChainGenesisData */ DpContainerChainGenesisDataContainerChainGenesisData: { storage: "Vec", name: "Bytes", @@ -867,36 +882,36 @@ export default { extensions: "Bytes", properties: "DpContainerChainGenesisDataProperties", }, - /** Lookup94: dp_container_chain_genesis_data::ContainerChainGenesisDataItem */ + /** Lookup96: dp_container_chain_genesis_data::ContainerChainGenesisDataItem */ DpContainerChainGenesisDataContainerChainGenesisDataItem: { key: "Bytes", value: "Bytes", }, - /** Lookup96: dp_container_chain_genesis_data::Properties */ + /** Lookup98: dp_container_chain_genesis_data::Properties */ DpContainerChainGenesisDataProperties: { tokenMetadata: "DpContainerChainGenesisDataTokenMetadata", isEthereum: "bool", }, - /** Lookup97: dp_container_chain_genesis_data::TokenMetadata */ + /** Lookup99: dp_container_chain_genesis_data::TokenMetadata */ DpContainerChainGenesisDataTokenMetadata: { tokenSymbol: "Bytes", ss58Format: "u32", tokenDecimals: "u32", }, - /** Lookup101: tp_traits::SlotFrequency */ + /** Lookup103: tp_traits::SlotFrequency */ TpTraitsSlotFrequency: { min: "u32", max: "u32", }, - /** Lookup103: tp_traits::ParathreadParams */ + /** Lookup105: tp_traits::ParathreadParams */ TpTraitsParathreadParams: { slotFrequency: "TpTraitsSlotFrequency", }, - /** Lookup104: sp_trie::storage_proof::StorageProof */ + /** Lookup106: sp_trie::storage_proof::StorageProof */ SpTrieStorageProof: { trieNodes: "BTreeSet", }, - /** Lookup106: sp_runtime::MultiSignature */ + /** Lookup108: sp_runtime::MultiSignature */ SpRuntimeMultiSignature: { _enum: { Ed25519: "[u8;64]", @@ -904,7 +919,7 @@ export default { Ecdsa: "[u8;65]", }, }, - /** Lookup109: pallet_configuration::pallet::Call */ + /** Lookup111: pallet_configuration::pallet::Call */ PalletConfigurationCall: { _enum: { set_max_collators: { @@ -1004,7 +1019,7 @@ export default { }, }, }, - /** Lookup112: pallet_invulnerables::pallet::Call */ + /** Lookup114: pallet_invulnerables::pallet::Call */ PalletInvulnerablesCall: { _enum: { __Unused0: "Null", @@ -1016,11 +1031,11 @@ export default { }, }, }, - /** Lookup113: pallet_collator_assignment::pallet::Call */ + /** Lookup115: pallet_collator_assignment::pallet::Call */ PalletCollatorAssignmentCall: "Null", - /** Lookup114: pallet_authority_assignment::pallet::Call */ + /** Lookup116: pallet_authority_assignment::pallet::Call */ PalletAuthorityAssignmentCall: "Null", - /** Lookup115: pallet_author_noting::pallet::Call */ + /** Lookup117: pallet_author_noting::pallet::Call */ PalletAuthorNotingCall: { _enum: { set_latest_author_data: { @@ -1037,7 +1052,7 @@ export default { }, }, }, - /** Lookup116: pallet_services_payment::pallet::Call */ + /** Lookup118: pallet_services_payment::pallet::Call */ PalletServicesPaymentCall: { _enum: { purchase_credits: { @@ -1070,7 +1085,7 @@ export default { }, }, }, - /** Lookup117: pallet_data_preservers::pallet::Call */ + /** Lookup119: pallet_data_preservers::pallet::Call */ PalletDataPreserversCall: { _enum: { __Unused0: "Null", @@ -1111,14 +1126,14 @@ export default { }, }, }, - /** Lookup118: pallet_data_preservers::types::Profile */ + /** Lookup120: pallet_data_preservers::types::Profile */ PalletDataPreserversProfile: { url: "Bytes", paraIds: "PalletDataPreserversParaIdsFilter", mode: "PalletDataPreserversProfileMode", assignmentRequest: "DancelightRuntimePreserversAssignmentPaymentRequest", }, - /** Lookup120: pallet_data_preservers::types::ParaIdsFilter */ + /** Lookup122: pallet_data_preservers::types::ParaIdsFilter */ PalletDataPreserversParaIdsFilter: { _enum: { AnyParaId: "Null", @@ -1126,7 +1141,7 @@ export default { Blacklist: "BTreeSet", }, }, - /** Lookup124: pallet_data_preservers::types::ProfileMode */ + /** Lookup126: pallet_data_preservers::types::ProfileMode */ PalletDataPreserversProfileMode: { _enum: { Bootnode: "Null", @@ -1135,19 +1150,36 @@ export default { }, }, }, - /** Lookup125: dancelight_runtime::PreserversAssignmentPaymentRequest */ + /** Lookup127: dancelight_runtime::PreserversAssignmentPaymentRequest */ DancelightRuntimePreserversAssignmentPaymentRequest: { _enum: ["Free"], }, - /** Lookup126: dancelight_runtime::PreserversAssignmentPaymentExtra */ + /** Lookup128: dancelight_runtime::PreserversAssignmentPaymentExtra */ DancelightRuntimePreserversAssignmentPaymentExtra: { _enum: ["Free"], }, - /** Lookup127: dancelight_runtime::PreserversAssignmentPaymentWitness */ + /** Lookup129: dancelight_runtime::PreserversAssignmentPaymentWitness */ DancelightRuntimePreserversAssignmentPaymentWitness: { _enum: ["Free"], }, - /** Lookup128: pallet_session::pallet::Call */ + /** Lookup130: pallet_external_validators::pallet::Call */ + PalletExternalValidatorsCall: { + _enum: { + skip_external_validators: { + skip: "bool", + }, + add_whitelisted: { + who: "AccountId32", + }, + remove_whitelisted: { + who: "AccountId32", + }, + force_era: { + mode: "PalletExternalValidatorsForcing", + }, + }, + }, + /** Lookup131: pallet_session::pallet::Call */ PalletSessionCall: { _enum: { set_keys: { @@ -1160,7 +1192,7 @@ export default { purge_keys: "Null", }, }, - /** Lookup129: dancelight_runtime::SessionKeys */ + /** Lookup132: dancelight_runtime::SessionKeys */ DancelightRuntimeSessionKeys: { grandpa: "SpConsensusGrandpaAppPublic", babe: "SpConsensusBabeAppPublic", @@ -1170,17 +1202,17 @@ export default { beefy: "SpConsensusBeefyEcdsaCryptoPublic", nimbus: "NimbusPrimitivesNimbusCryptoPublic", }, - /** Lookup130: polkadot_primitives::v7::validator_app::Public */ + /** Lookup133: polkadot_primitives::v7::validator_app::Public */ PolkadotPrimitivesV7ValidatorAppPublic: "[u8;32]", - /** Lookup131: polkadot_primitives::v7::assignment_app::Public */ + /** Lookup134: polkadot_primitives::v7::assignment_app::Public */ PolkadotPrimitivesV7AssignmentAppPublic: "[u8;32]", - /** Lookup132: sp_authority_discovery::app::Public */ + /** Lookup135: sp_authority_discovery::app::Public */ SpAuthorityDiscoveryAppPublic: "[u8;32]", - /** Lookup133: sp_consensus_beefy::ecdsa_crypto::Public */ + /** Lookup136: sp_consensus_beefy::ecdsa_crypto::Public */ SpConsensusBeefyEcdsaCryptoPublic: "[u8;33]", - /** Lookup135: nimbus_primitives::nimbus_crypto::Public */ + /** Lookup138: nimbus_primitives::nimbus_crypto::Public */ NimbusPrimitivesNimbusCryptoPublic: "[u8;32]", - /** Lookup136: pallet_grandpa::pallet::Call */ + /** Lookup139: pallet_grandpa::pallet::Call */ PalletGrandpaCall: { _enum: { report_equivocation: { @@ -1197,12 +1229,12 @@ export default { }, }, }, - /** Lookup137: sp_consensus_grandpa::EquivocationProof */ + /** Lookup140: sp_consensus_grandpa::EquivocationProof */ SpConsensusGrandpaEquivocationProof: { setId: "u64", equivocation: "SpConsensusGrandpaEquivocation", }, - /** Lookup138: sp_consensus_grandpa::Equivocation */ + /** Lookup141: sp_consensus_grandpa::Equivocation */ SpConsensusGrandpaEquivocation: { _enum: { Prevote: "FinalityGrandpaEquivocationPrevote", @@ -1210,7 +1242,7 @@ export default { }, }, /** - * Lookup139: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> */ FinalityGrandpaEquivocationPrevote: { @@ -1219,15 +1251,15 @@ export default { first: "(FinalityGrandpaPrevote,SpConsensusGrandpaAppSignature)", second: "(FinalityGrandpaPrevote,SpConsensusGrandpaAppSignature)", }, - /** Lookup140: finality_grandpa::Prevote */ + /** Lookup143: finality_grandpa::Prevote */ FinalityGrandpaPrevote: { targetHash: "H256", targetNumber: "u32", }, - /** Lookup141: sp_consensus_grandpa::app::Signature */ + /** Lookup144: sp_consensus_grandpa::app::Signature */ SpConsensusGrandpaAppSignature: "[u8;64]", /** - * Lookup143: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> */ FinalityGrandpaEquivocationPrecommit: { @@ -1236,12 +1268,12 @@ export default { first: "(FinalityGrandpaPrecommit,SpConsensusGrandpaAppSignature)", second: "(FinalityGrandpaPrecommit,SpConsensusGrandpaAppSignature)", }, - /** Lookup144: finality_grandpa::Precommit */ + /** Lookup147: finality_grandpa::Precommit */ FinalityGrandpaPrecommit: { targetHash: "H256", targetNumber: "u32", }, - /** Lookup146: pallet_treasury::pallet::Call */ + /** Lookup149: pallet_treasury::pallet::Call */ PalletTreasuryCall: { _enum: { __Unused0: "Null", @@ -1271,7 +1303,7 @@ export default { }, }, }, - /** Lookup148: pallet_conviction_voting::pallet::Call */ + /** Lookup151: pallet_conviction_voting::pallet::Call */ PalletConvictionVotingCall: { _enum: { vote: { @@ -1302,7 +1334,7 @@ export default { }, }, }, - /** Lookup149: pallet_conviction_voting::vote::AccountVote */ + /** Lookup152: pallet_conviction_voting::vote::AccountVote */ PalletConvictionVotingVoteAccountVote: { _enum: { Standard: { @@ -1320,11 +1352,11 @@ export default { }, }, }, - /** Lookup151: pallet_conviction_voting::conviction::Conviction */ + /** Lookup154: pallet_conviction_voting::conviction::Conviction */ PalletConvictionVotingConviction: { _enum: ["None", "Locked1x", "Locked2x", "Locked3x", "Locked4x", "Locked5x", "Locked6x"], }, - /** Lookup153: pallet_referenda::pallet::Call */ + /** Lookup156: pallet_referenda::pallet::Call */ PalletReferendaCall: { _enum: { submit: { @@ -1359,7 +1391,7 @@ export default { }, }, }, - /** Lookup154: dancelight_runtime::OriginCaller */ + /** Lookup157: dancelight_runtime::OriginCaller */ DancelightRuntimeOriginCaller: { _enum: { system: "FrameSupportDispatchRawOrigin", @@ -1455,7 +1487,7 @@ export default { XcmPallet: "PalletXcmOrigin", }, }, - /** Lookup155: frame_support::dispatch::RawOrigin */ + /** Lookup158: frame_support::dispatch::RawOrigin */ FrameSupportDispatchRawOrigin: { _enum: { Root: "Null", @@ -1463,7 +1495,7 @@ export default { None: "Null", }, }, - /** Lookup156: dancelight_runtime::governance::origins::pallet_custom_origins::Origin */ + /** Lookup159: dancelight_runtime::governance::origins::pallet_custom_origins::Origin */ DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin: { _enum: [ "StakingAdmin", @@ -1495,39 +1527,39 @@ export default { "Fellowship9Dan", ], }, - /** Lookup157: polkadot_runtime_parachains::origin::pallet::Origin */ + /** Lookup160: polkadot_runtime_parachains::origin::pallet::Origin */ PolkadotRuntimeParachainsOriginPalletOrigin: { _enum: { Parachain: "u32", }, }, - /** Lookup158: pallet_xcm::pallet::Origin */ + /** Lookup161: pallet_xcm::pallet::Origin */ PalletXcmOrigin: { _enum: { Xcm: "StagingXcmV4Location", Response: "StagingXcmV4Location", }, }, - /** Lookup159: staging_xcm::v4::location::Location */ + /** Lookup162: staging_xcm::v4::location::Location */ StagingXcmV4Location: { parents: "u8", interior: "StagingXcmV4Junctions", }, - /** Lookup160: staging_xcm::v4::junctions::Junctions */ + /** Lookup163: staging_xcm::v4::junctions::Junctions */ StagingXcmV4Junctions: { _enum: { Here: "Null", - X1: "[Lookup162;1]", - X2: "[Lookup162;2]", - X3: "[Lookup162;3]", - X4: "[Lookup162;4]", - X5: "[Lookup162;5]", - X6: "[Lookup162;6]", - X7: "[Lookup162;7]", - X8: "[Lookup162;8]", + X1: "[Lookup165;1]", + X2: "[Lookup165;2]", + X3: "[Lookup165;3]", + X4: "[Lookup165;4]", + X5: "[Lookup165;5]", + X6: "[Lookup165;6]", + X7: "[Lookup165;7]", + X8: "[Lookup165;8]", }, }, - /** Lookup162: staging_xcm::v4::junction::Junction */ + /** Lookup165: staging_xcm::v4::junction::Junction */ StagingXcmV4Junction: { _enum: { Parachain: "Compact", @@ -1557,7 +1589,7 @@ export default { GlobalConsensus: "StagingXcmV4JunctionNetworkId", }, }, - /** Lookup164: staging_xcm::v4::junction::NetworkId */ + /** Lookup167: staging_xcm::v4::junction::NetworkId */ StagingXcmV4JunctionNetworkId: { _enum: { ByGenesis: "[u8;32]", @@ -1578,7 +1610,7 @@ export default { PolkadotBulletin: "Null", }, }, - /** Lookup165: xcm::v3::junction::BodyId */ + /** Lookup168: xcm::v3::junction::BodyId */ XcmV3JunctionBodyId: { _enum: { Unit: "Null", @@ -1593,7 +1625,7 @@ export default { Treasury: "Null", }, }, - /** Lookup166: xcm::v3::junction::BodyPart */ + /** Lookup169: xcm::v3::junction::BodyPart */ XcmV3JunctionBodyPart: { _enum: { Voice: "Null", @@ -1614,16 +1646,16 @@ export default { }, }, }, - /** Lookup174: sp_core::Void */ + /** Lookup177: sp_core::Void */ SpCoreVoid: "Null", - /** Lookup175: frame_support::traits::schedule::DispatchTime */ + /** Lookup178: frame_support::traits::schedule::DispatchTime */ FrameSupportScheduleDispatchTime: { _enum: { At: "u32", After: "u32", }, }, - /** Lookup177: pallet_ranked_collective::pallet::Call */ + /** Lookup180: pallet_ranked_collective::pallet::Call */ PalletRankedCollectiveCall: { _enum: { add_member: { @@ -1653,7 +1685,7 @@ export default { }, }, }, - /** Lookup179: pallet_whitelist::pallet::Call */ + /** Lookup182: pallet_whitelist::pallet::Call */ PalletWhitelistCall: { _enum: { whitelist_call: { @@ -1672,7 +1704,7 @@ export default { }, }, }, - /** Lookup180: polkadot_runtime_parachains::configuration::pallet::Call */ + /** Lookup183: polkadot_runtime_parachains::configuration::pallet::Call */ PolkadotRuntimeParachainsConfigurationPalletCall: { _enum: { set_validation_upgrade_cooldown: { @@ -1971,14 +2003,14 @@ export default { }, }, }, - /** Lookup181: polkadot_primitives::v7::async_backing::AsyncBackingParams */ + /** Lookup184: polkadot_primitives::v7::async_backing::AsyncBackingParams */ PolkadotPrimitivesV7AsyncBackingAsyncBackingParams: { maxCandidateDepth: "u32", allowedAncestryLen: "u32", }, - /** Lookup182: polkadot_primitives::v7::executor_params::ExecutorParams */ + /** Lookup185: polkadot_primitives::v7::executor_params::ExecutorParams */ PolkadotPrimitivesV7ExecutorParams: "Vec", - /** Lookup184: polkadot_primitives::v7::executor_params::ExecutorParam */ + /** Lookup187: polkadot_primitives::v7::executor_params::ExecutorParam */ PolkadotPrimitivesV7ExecutorParamsExecutorParam: { _enum: { __Unused0: "Null", @@ -1991,19 +2023,19 @@ export default { WasmExtBulkMemory: "Null", }, }, - /** Lookup185: polkadot_primitives::v7::PvfPrepKind */ + /** Lookup188: polkadot_primitives::v7::PvfPrepKind */ PolkadotPrimitivesV7PvfPrepKind: { _enum: ["Precheck", "Prepare"], }, - /** Lookup186: polkadot_primitives::v7::PvfExecKind */ + /** Lookup189: polkadot_primitives::v7::PvfExecKind */ PolkadotPrimitivesV7PvfExecKind: { _enum: ["Backing", "Approval"], }, - /** Lookup187: polkadot_primitives::v7::ApprovalVotingParams */ + /** Lookup190: polkadot_primitives::v7::ApprovalVotingParams */ PolkadotPrimitivesV7ApprovalVotingParams: { maxApprovalCoalesceCount: "u32", }, - /** Lookup188: polkadot_primitives::vstaging::SchedulerParams */ + /** Lookup191: polkadot_primitives::vstaging::SchedulerParams */ PolkadotPrimitivesVstagingSchedulerParams: { groupRotationFrequency: "u32", parasAvailabilityPeriod: "u32", @@ -2017,11 +2049,11 @@ export default { onDemandBaseFee: "u128", ttl: "u32", }, - /** Lookup189: polkadot_runtime_parachains::shared::pallet::Call */ + /** Lookup192: polkadot_runtime_parachains::shared::pallet::Call */ PolkadotRuntimeParachainsSharedPalletCall: "Null", - /** Lookup190: polkadot_runtime_parachains::inclusion::pallet::Call */ + /** Lookup193: polkadot_runtime_parachains::inclusion::pallet::Call */ PolkadotRuntimeParachainsInclusionPalletCall: "Null", - /** Lookup191: polkadot_runtime_parachains::paras_inherent::pallet::Call */ + /** Lookup194: polkadot_runtime_parachains::paras_inherent::pallet::Call */ PolkadotRuntimeParachainsParasInherentPalletCall: { _enum: { enter: { @@ -2029,7 +2061,7 @@ export default { }, }, }, - /** Lookup192: polkadot_primitives::v7::InherentData> */ + /** Lookup195: polkadot_primitives::v7::InherentData> */ PolkadotPrimitivesV7InherentData: { bitfields: "Vec", backedCandidates: "Vec", @@ -2037,7 +2069,7 @@ export default { parentHeader: "SpRuntimeHeader", }, /** - * Lookup194: polkadot_primitives::v7::signed::UncheckedSigned */ PolkadotPrimitivesV7SignedUncheckedSigned: { @@ -2045,22 +2077,22 @@ export default { validatorIndex: "u32", signature: "PolkadotPrimitivesV7ValidatorAppSignature", }, - /** Lookup197: bitvec::order::Lsb0 */ + /** Lookup200: bitvec::order::Lsb0 */ BitvecOrderLsb0: "Null", - /** Lookup199: polkadot_primitives::v7::validator_app::Signature */ + /** Lookup202: polkadot_primitives::v7::validator_app::Signature */ PolkadotPrimitivesV7ValidatorAppSignature: "[u8;64]", - /** Lookup201: polkadot_primitives::v7::BackedCandidate */ + /** Lookup204: polkadot_primitives::v7::BackedCandidate */ PolkadotPrimitivesV7BackedCandidate: { candidate: "PolkadotPrimitivesV7CommittedCandidateReceipt", validityVotes: "Vec", validatorIndices: "BitVec", }, - /** Lookup202: polkadot_primitives::v7::CommittedCandidateReceipt */ + /** Lookup205: polkadot_primitives::v7::CommittedCandidateReceipt */ PolkadotPrimitivesV7CommittedCandidateReceipt: { descriptor: "PolkadotPrimitivesV7CandidateDescriptor", commitments: "PolkadotPrimitivesV7CandidateCommitments", }, - /** Lookup203: polkadot_primitives::v7::CandidateDescriptor */ + /** Lookup206: polkadot_primitives::v7::CandidateDescriptor */ PolkadotPrimitivesV7CandidateDescriptor: { paraId: "u32", relayParent: "H256", @@ -2072,11 +2104,11 @@ export default { paraHead: "H256", validationCodeHash: "H256", }, - /** Lookup204: polkadot_primitives::v7::collator_app::Public */ + /** Lookup207: polkadot_primitives::v7::collator_app::Public */ PolkadotPrimitivesV7CollatorAppPublic: "[u8;32]", - /** Lookup205: polkadot_primitives::v7::collator_app::Signature */ + /** Lookup208: polkadot_primitives::v7::collator_app::Signature */ PolkadotPrimitivesV7CollatorAppSignature: "[u8;64]", - /** Lookup207: polkadot_primitives::v7::CandidateCommitments */ + /** Lookup210: polkadot_primitives::v7::CandidateCommitments */ PolkadotPrimitivesV7CandidateCommitments: { upwardMessages: "Vec", horizontalMessages: "Vec", @@ -2085,12 +2117,12 @@ export default { processedDownwardMessages: "u32", hrmpWatermark: "u32", }, - /** Lookup210: polkadot_core_primitives::OutboundHrmpMessage */ + /** Lookup213: polkadot_core_primitives::OutboundHrmpMessage */ PolkadotCorePrimitivesOutboundHrmpMessage: { recipient: "u32", data: "Bytes", }, - /** Lookup215: polkadot_primitives::v7::ValidityAttestation */ + /** Lookup218: polkadot_primitives::v7::ValidityAttestation */ PolkadotPrimitivesV7ValidityAttestation: { _enum: { __Unused0: "Null", @@ -2098,20 +2130,20 @@ export default { Explicit: "PolkadotPrimitivesV7ValidatorAppSignature", }, }, - /** Lookup217: polkadot_primitives::v7::DisputeStatementSet */ + /** Lookup220: polkadot_primitives::v7::DisputeStatementSet */ PolkadotPrimitivesV7DisputeStatementSet: { candidateHash: "H256", session: "u32", statements: "Vec<(PolkadotPrimitivesV7DisputeStatement,u32,PolkadotPrimitivesV7ValidatorAppSignature)>", }, - /** Lookup221: polkadot_primitives::v7::DisputeStatement */ + /** Lookup224: polkadot_primitives::v7::DisputeStatement */ PolkadotPrimitivesV7DisputeStatement: { _enum: { Valid: "PolkadotPrimitivesV7ValidDisputeStatementKind", Invalid: "PolkadotPrimitivesV7InvalidDisputeStatementKind", }, }, - /** Lookup222: polkadot_primitives::v7::ValidDisputeStatementKind */ + /** Lookup225: polkadot_primitives::v7::ValidDisputeStatementKind */ PolkadotPrimitivesV7ValidDisputeStatementKind: { _enum: { Explicit: "Null", @@ -2121,11 +2153,11 @@ export default { ApprovalCheckingMultipleCandidates: "Vec", }, }, - /** Lookup224: polkadot_primitives::v7::InvalidDisputeStatementKind */ + /** Lookup227: polkadot_primitives::v7::InvalidDisputeStatementKind */ PolkadotPrimitivesV7InvalidDisputeStatementKind: { _enum: ["Explicit"], }, - /** Lookup225: polkadot_runtime_parachains::paras::pallet::Call */ + /** Lookup228: polkadot_runtime_parachains::paras::pallet::Call */ PolkadotRuntimeParachainsParasPalletCall: { _enum: { force_set_current_code: { @@ -2164,14 +2196,14 @@ export default { }, }, }, - /** Lookup226: polkadot_primitives::v7::PvfCheckStatement */ + /** Lookup229: polkadot_primitives::v7::PvfCheckStatement */ PolkadotPrimitivesV7PvfCheckStatement: { accept: "bool", subject: "H256", sessionIndex: "u32", validatorIndex: "u32", }, - /** Lookup227: polkadot_runtime_parachains::initializer::pallet::Call */ + /** Lookup230: polkadot_runtime_parachains::initializer::pallet::Call */ PolkadotRuntimeParachainsInitializerPalletCall: { _enum: { force_approve: { @@ -2179,7 +2211,7 @@ export default { }, }, }, - /** Lookup228: polkadot_runtime_parachains::hrmp::pallet::Call */ + /** Lookup231: polkadot_runtime_parachains::hrmp::pallet::Call */ PolkadotRuntimeParachainsHrmpPalletCall: { _enum: { hrmp_init_open_channel: { @@ -2227,16 +2259,16 @@ export default { }, }, }, - /** Lookup229: polkadot_parachain_primitives::primitives::HrmpChannelId */ + /** Lookup232: polkadot_parachain_primitives::primitives::HrmpChannelId */ PolkadotParachainPrimitivesPrimitivesHrmpChannelId: { sender: "u32", recipient: "u32", }, - /** Lookup230: polkadot_runtime_parachains::disputes::pallet::Call */ + /** Lookup233: polkadot_runtime_parachains::disputes::pallet::Call */ PolkadotRuntimeParachainsDisputesPalletCall: { _enum: ["force_unfreeze"], }, - /** Lookup231: polkadot_runtime_parachains::disputes::slashing::pallet::Call */ + /** Lookup234: polkadot_runtime_parachains::disputes::slashing::pallet::Call */ PolkadotRuntimeParachainsDisputesSlashingPalletCall: { _enum: { report_dispute_lost_unsigned: { @@ -2245,23 +2277,23 @@ export default { }, }, }, - /** Lookup232: polkadot_primitives::v7::slashing::DisputeProof */ + /** Lookup235: polkadot_primitives::v7::slashing::DisputeProof */ PolkadotPrimitivesV7SlashingDisputeProof: { timeSlot: "PolkadotPrimitivesV7SlashingDisputesTimeSlot", kind: "PolkadotPrimitivesV7SlashingSlashingOffenceKind", validatorIndex: "u32", validatorId: "PolkadotPrimitivesV7ValidatorAppPublic", }, - /** Lookup233: polkadot_primitives::v7::slashing::DisputesTimeSlot */ + /** Lookup236: polkadot_primitives::v7::slashing::DisputesTimeSlot */ PolkadotPrimitivesV7SlashingDisputesTimeSlot: { sessionIndex: "u32", candidateHash: "H256", }, - /** Lookup234: polkadot_primitives::v7::slashing::SlashingOffenceKind */ + /** Lookup237: polkadot_primitives::v7::slashing::SlashingOffenceKind */ PolkadotPrimitivesV7SlashingSlashingOffenceKind: { _enum: ["ForInvalid", "AgainstValid"], }, - /** Lookup235: pallet_message_queue::pallet::Call */ + /** Lookup238: pallet_message_queue::pallet::Call */ PalletMessageQueueCall: { _enum: { reap_page: { @@ -2276,19 +2308,19 @@ export default { }, }, }, - /** Lookup236: polkadot_runtime_parachains::inclusion::AggregateMessageOrigin */ + /** Lookup239: polkadot_runtime_parachains::inclusion::AggregateMessageOrigin */ PolkadotRuntimeParachainsInclusionAggregateMessageOrigin: { _enum: { Ump: "PolkadotRuntimeParachainsInclusionUmpQueueId", }, }, - /** Lookup237: polkadot_runtime_parachains::inclusion::UmpQueueId */ + /** Lookup240: polkadot_runtime_parachains::inclusion::UmpQueueId */ PolkadotRuntimeParachainsInclusionUmpQueueId: { _enum: { Para: "u32", }, }, - /** Lookup238: polkadot_runtime_parachains::assigner_on_demand::pallet::Call */ + /** Lookup241: polkadot_runtime_parachains::assigner_on_demand::pallet::Call */ PolkadotRuntimeParachainsAssignerOnDemandPalletCall: { _enum: { place_order_allow_death: { @@ -2301,7 +2333,7 @@ export default { }, }, }, - /** Lookup239: polkadot_runtime_common::paras_registrar::pallet::Call */ + /** Lookup242: polkadot_runtime_common::paras_registrar::pallet::Call */ PolkadotRuntimeCommonParasRegistrarPalletCall: { _enum: { register: { @@ -2340,7 +2372,7 @@ export default { }, }, }, - /** Lookup240: pallet_utility::pallet::Call */ + /** Lookup243: pallet_utility::pallet::Call */ PalletUtilityCall: { _enum: { batch: { @@ -2366,7 +2398,7 @@ export default { }, }, }, - /** Lookup242: pallet_identity::pallet::Call */ + /** Lookup245: pallet_identity::pallet::Call */ PalletIdentityCall: { _enum: { add_registrar: { @@ -2449,7 +2481,7 @@ export default { }, }, }, - /** Lookup243: pallet_identity::legacy::IdentityInfo */ + /** Lookup246: pallet_identity::legacy::IdentityInfo */ PalletIdentityLegacyIdentityInfo: { additional: "Vec<(Data,Data)>", display: "Data", @@ -2461,7 +2493,7 @@ export default { image: "Data", twitter: "Data", }, - /** Lookup280: pallet_identity::types::Judgement */ + /** Lookup283: pallet_identity::types::Judgement */ PalletIdentityJudgement: { _enum: { Unknown: "Null", @@ -2473,7 +2505,7 @@ export default { Erroneous: "Null", }, }, - /** Lookup283: pallet_scheduler::pallet::Call */ + /** Lookup286: pallet_scheduler::pallet::Call */ PalletSchedulerCall: { _enum: { schedule: { @@ -2527,7 +2559,7 @@ export default { }, }, }, - /** Lookup286: pallet_proxy::pallet::Call */ + /** Lookup289: pallet_proxy::pallet::Call */ PalletProxyCall: { _enum: { proxy: { @@ -2578,7 +2610,7 @@ export default { }, }, }, - /** Lookup288: dancelight_runtime::ProxyType */ + /** Lookup291: dancelight_runtime::ProxyType */ DancelightRuntimeProxyType: { _enum: [ "Any", @@ -2591,7 +2623,7 @@ export default { "SudoRegistrar", ], }, - /** Lookup289: pallet_multisig::pallet::Call */ + /** Lookup292: pallet_multisig::pallet::Call */ PalletMultisigCall: { _enum: { as_multi_threshold_1: { @@ -2620,12 +2652,12 @@ export default { }, }, }, - /** Lookup291: pallet_multisig::Timepoint */ + /** Lookup294: pallet_multisig::Timepoint */ PalletMultisigTimepoint: { height: "u32", index: "u32", }, - /** Lookup292: pallet_preimage::pallet::Call */ + /** Lookup295: pallet_preimage::pallet::Call */ PalletPreimageCall: { _enum: { note_preimage: { @@ -2654,7 +2686,7 @@ export default { }, }, }, - /** Lookup294: pallet_asset_rate::pallet::Call */ + /** Lookup297: pallet_asset_rate::pallet::Call */ PalletAssetRateCall: { _enum: { create: { @@ -2670,7 +2702,7 @@ export default { }, }, }, - /** Lookup296: pallet_xcm::pallet::Call */ + /** Lookup299: pallet_xcm::pallet::Call */ PalletXcmCall: { _enum: { send: { @@ -2745,7 +2777,7 @@ export default { }, }, }, - /** Lookup297: xcm::VersionedLocation */ + /** Lookup300: xcm::VersionedLocation */ XcmVersionedLocation: { _enum: { __Unused0: "Null", @@ -2755,12 +2787,12 @@ export default { V4: "StagingXcmV4Location", }, }, - /** Lookup298: xcm::v2::multilocation::MultiLocation */ + /** Lookup301: xcm::v2::multilocation::MultiLocation */ XcmV2MultiLocation: { parents: "u8", interior: "XcmV2MultilocationJunctions", }, - /** Lookup299: xcm::v2::multilocation::Junctions */ + /** Lookup302: xcm::v2::multilocation::Junctions */ XcmV2MultilocationJunctions: { _enum: { Here: "Null", @@ -2774,7 +2806,7 @@ export default { X8: "(XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction)", }, }, - /** Lookup300: xcm::v2::junction::Junction */ + /** Lookup303: xcm::v2::junction::Junction */ XcmV2Junction: { _enum: { Parachain: "Compact", @@ -2800,7 +2832,7 @@ export default { }, }, }, - /** Lookup301: xcm::v2::NetworkId */ + /** Lookup304: xcm::v2::NetworkId */ XcmV2NetworkId: { _enum: { Any: "Null", @@ -2809,7 +2841,7 @@ export default { Kusama: "Null", }, }, - /** Lookup303: xcm::v2::BodyId */ + /** Lookup306: xcm::v2::BodyId */ XcmV2BodyId: { _enum: { Unit: "Null", @@ -2824,7 +2856,7 @@ export default { Treasury: "Null", }, }, - /** Lookup304: xcm::v2::BodyPart */ + /** Lookup307: xcm::v2::BodyPart */ XcmV2BodyPart: { _enum: { Voice: "Null", @@ -2845,12 +2877,12 @@ export default { }, }, }, - /** Lookup305: staging_xcm::v3::multilocation::MultiLocation */ + /** Lookup308: staging_xcm::v3::multilocation::MultiLocation */ StagingXcmV3MultiLocation: { parents: "u8", interior: "XcmV3Junctions", }, - /** Lookup306: xcm::v3::junctions::Junctions */ + /** Lookup309: xcm::v3::junctions::Junctions */ XcmV3Junctions: { _enum: { Here: "Null", @@ -2864,7 +2896,7 @@ export default { X8: "(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)", }, }, - /** Lookup307: xcm::v3::junction::Junction */ + /** Lookup310: xcm::v3::junction::Junction */ XcmV3Junction: { _enum: { Parachain: "Compact", @@ -2894,7 +2926,7 @@ export default { GlobalConsensus: "XcmV3JunctionNetworkId", }, }, - /** Lookup309: xcm::v3::junction::NetworkId */ + /** Lookup312: xcm::v3::junction::NetworkId */ XcmV3JunctionNetworkId: { _enum: { ByGenesis: "[u8;32]", @@ -2915,7 +2947,7 @@ export default { PolkadotBulletin: "Null", }, }, - /** Lookup310: xcm::VersionedXcm */ + /** Lookup313: xcm::VersionedXcm */ XcmVersionedXcm: { _enum: { __Unused0: "Null", @@ -2925,9 +2957,9 @@ export default { V4: "StagingXcmV4Xcm", }, }, - /** Lookup311: xcm::v2::Xcm */ + /** Lookup314: xcm::v2::Xcm */ XcmV2Xcm: "Vec", - /** Lookup313: xcm::v2::Instruction */ + /** Lookup316: xcm::v2::Instruction */ XcmV2Instruction: { _enum: { WithdrawAsset: "XcmV2MultiassetMultiAssets", @@ -3023,28 +3055,28 @@ export default { UnsubscribeVersion: "Null", }, }, - /** Lookup314: xcm::v2::multiasset::MultiAssets */ + /** Lookup317: xcm::v2::multiasset::MultiAssets */ XcmV2MultiassetMultiAssets: "Vec", - /** Lookup316: xcm::v2::multiasset::MultiAsset */ + /** Lookup319: xcm::v2::multiasset::MultiAsset */ XcmV2MultiAsset: { id: "XcmV2MultiassetAssetId", fun: "XcmV2MultiassetFungibility", }, - /** Lookup317: xcm::v2::multiasset::AssetId */ + /** Lookup320: xcm::v2::multiasset::AssetId */ XcmV2MultiassetAssetId: { _enum: { Concrete: "XcmV2MultiLocation", Abstract: "Bytes", }, }, - /** Lookup318: xcm::v2::multiasset::Fungibility */ + /** Lookup321: xcm::v2::multiasset::Fungibility */ XcmV2MultiassetFungibility: { _enum: { Fungible: "Compact", NonFungible: "XcmV2MultiassetAssetInstance", }, }, - /** Lookup319: xcm::v2::multiasset::AssetInstance */ + /** Lookup322: xcm::v2::multiasset::AssetInstance */ XcmV2MultiassetAssetInstance: { _enum: { Undefined: "Null", @@ -3056,7 +3088,7 @@ export default { Blob: "Bytes", }, }, - /** Lookup320: xcm::v2::Response */ + /** Lookup323: xcm::v2::Response */ XcmV2Response: { _enum: { Null: "Null", @@ -3065,7 +3097,7 @@ export default { Version: "u32", }, }, - /** Lookup323: xcm::v2::traits::Error */ + /** Lookup326: xcm::v2::traits::Error */ XcmV2TraitsError: { _enum: { Overflow: "Null", @@ -3096,22 +3128,22 @@ export default { WeightNotComputable: "Null", }, }, - /** Lookup324: xcm::v2::OriginKind */ + /** Lookup327: xcm::v2::OriginKind */ XcmV2OriginKind: { _enum: ["Native", "SovereignAccount", "Superuser", "Xcm"], }, - /** Lookup325: xcm::double_encoded::DoubleEncoded */ + /** Lookup328: xcm::double_encoded::DoubleEncoded */ XcmDoubleEncoded: { encoded: "Bytes", }, - /** Lookup326: xcm::v2::multiasset::MultiAssetFilter */ + /** Lookup329: xcm::v2::multiasset::MultiAssetFilter */ XcmV2MultiassetMultiAssetFilter: { _enum: { Definite: "XcmV2MultiassetMultiAssets", Wild: "XcmV2MultiassetWildMultiAsset", }, }, - /** Lookup327: xcm::v2::multiasset::WildMultiAsset */ + /** Lookup330: xcm::v2::multiasset::WildMultiAsset */ XcmV2MultiassetWildMultiAsset: { _enum: { All: "Null", @@ -3121,20 +3153,20 @@ export default { }, }, }, - /** Lookup328: xcm::v2::multiasset::WildFungibility */ + /** Lookup331: xcm::v2::multiasset::WildFungibility */ XcmV2MultiassetWildFungibility: { _enum: ["Fungible", "NonFungible"], }, - /** Lookup329: xcm::v2::WeightLimit */ + /** Lookup332: xcm::v2::WeightLimit */ XcmV2WeightLimit: { _enum: { Unlimited: "Null", Limited: "Compact", }, }, - /** Lookup330: xcm::v3::Xcm */ + /** Lookup333: xcm::v3::Xcm */ XcmV3Xcm: "Vec", - /** Lookup332: xcm::v3::Instruction */ + /** Lookup335: xcm::v3::Instruction */ XcmV3Instruction: { _enum: { WithdrawAsset: "XcmV3MultiassetMultiAssets", @@ -3274,28 +3306,28 @@ export default { }, }, }, - /** Lookup333: xcm::v3::multiasset::MultiAssets */ + /** Lookup336: xcm::v3::multiasset::MultiAssets */ XcmV3MultiassetMultiAssets: "Vec", - /** Lookup335: xcm::v3::multiasset::MultiAsset */ + /** Lookup338: xcm::v3::multiasset::MultiAsset */ XcmV3MultiAsset: { id: "XcmV3MultiassetAssetId", fun: "XcmV3MultiassetFungibility", }, - /** Lookup336: xcm::v3::multiasset::AssetId */ + /** Lookup339: xcm::v3::multiasset::AssetId */ XcmV3MultiassetAssetId: { _enum: { Concrete: "StagingXcmV3MultiLocation", Abstract: "[u8;32]", }, }, - /** Lookup337: xcm::v3::multiasset::Fungibility */ + /** Lookup340: xcm::v3::multiasset::Fungibility */ XcmV3MultiassetFungibility: { _enum: { Fungible: "Compact", NonFungible: "XcmV3MultiassetAssetInstance", }, }, - /** Lookup338: xcm::v3::multiasset::AssetInstance */ + /** Lookup341: xcm::v3::multiasset::AssetInstance */ XcmV3MultiassetAssetInstance: { _enum: { Undefined: "Null", @@ -3306,7 +3338,7 @@ export default { Array32: "[u8;32]", }, }, - /** Lookup339: xcm::v3::Response */ + /** Lookup342: xcm::v3::Response */ XcmV3Response: { _enum: { Null: "Null", @@ -3317,7 +3349,7 @@ export default { DispatchResult: "XcmV3MaybeErrorCode", }, }, - /** Lookup342: xcm::v3::traits::Error */ + /** Lookup345: xcm::v3::traits::Error */ XcmV3TraitsError: { _enum: { Overflow: "Null", @@ -3362,7 +3394,7 @@ export default { ExceedsStackLimit: "Null", }, }, - /** Lookup344: xcm::v3::PalletInfo */ + /** Lookup347: xcm::v3::PalletInfo */ XcmV3PalletInfo: { index: "Compact", name: "Bytes", @@ -3371,7 +3403,7 @@ export default { minor: "Compact", patch: "Compact", }, - /** Lookup347: xcm::v3::MaybeErrorCode */ + /** Lookup350: xcm::v3::MaybeErrorCode */ XcmV3MaybeErrorCode: { _enum: { Success: "Null", @@ -3379,24 +3411,24 @@ export default { TruncatedError: "Bytes", }, }, - /** Lookup350: xcm::v3::OriginKind */ + /** Lookup353: xcm::v3::OriginKind */ XcmV3OriginKind: { _enum: ["Native", "SovereignAccount", "Superuser", "Xcm"], }, - /** Lookup351: xcm::v3::QueryResponseInfo */ + /** Lookup354: xcm::v3::QueryResponseInfo */ XcmV3QueryResponseInfo: { destination: "StagingXcmV3MultiLocation", queryId: "Compact", maxWeight: "SpWeightsWeightV2Weight", }, - /** Lookup352: xcm::v3::multiasset::MultiAssetFilter */ + /** Lookup355: xcm::v3::multiasset::MultiAssetFilter */ XcmV3MultiassetMultiAssetFilter: { _enum: { Definite: "XcmV3MultiassetMultiAssets", Wild: "XcmV3MultiassetWildMultiAsset", }, }, - /** Lookup353: xcm::v3::multiasset::WildMultiAsset */ + /** Lookup356: xcm::v3::multiasset::WildMultiAsset */ XcmV3MultiassetWildMultiAsset: { _enum: { All: "Null", @@ -3412,20 +3444,20 @@ export default { }, }, }, - /** Lookup354: xcm::v3::multiasset::WildFungibility */ + /** Lookup357: xcm::v3::multiasset::WildFungibility */ XcmV3MultiassetWildFungibility: { _enum: ["Fungible", "NonFungible"], }, - /** Lookup355: xcm::v3::WeightLimit */ + /** Lookup358: xcm::v3::WeightLimit */ XcmV3WeightLimit: { _enum: { Unlimited: "Null", Limited: "SpWeightsWeightV2Weight", }, }, - /** Lookup356: staging_xcm::v4::Xcm */ + /** Lookup359: staging_xcm::v4::Xcm */ StagingXcmV4Xcm: "Vec", - /** Lookup358: staging_xcm::v4::Instruction */ + /** Lookup361: staging_xcm::v4::Instruction */ StagingXcmV4Instruction: { _enum: { WithdrawAsset: "StagingXcmV4AssetAssets", @@ -3565,23 +3597,23 @@ export default { }, }, }, - /** Lookup359: staging_xcm::v4::asset::Assets */ + /** Lookup362: staging_xcm::v4::asset::Assets */ StagingXcmV4AssetAssets: "Vec", - /** Lookup361: staging_xcm::v4::asset::Asset */ + /** Lookup364: staging_xcm::v4::asset::Asset */ StagingXcmV4Asset: { id: "StagingXcmV4AssetAssetId", fun: "StagingXcmV4AssetFungibility", }, - /** Lookup362: staging_xcm::v4::asset::AssetId */ + /** Lookup365: staging_xcm::v4::asset::AssetId */ StagingXcmV4AssetAssetId: "StagingXcmV4Location", - /** Lookup363: staging_xcm::v4::asset::Fungibility */ + /** Lookup366: staging_xcm::v4::asset::Fungibility */ StagingXcmV4AssetFungibility: { _enum: { Fungible: "Compact", NonFungible: "StagingXcmV4AssetAssetInstance", }, }, - /** Lookup364: staging_xcm::v4::asset::AssetInstance */ + /** Lookup367: staging_xcm::v4::asset::AssetInstance */ StagingXcmV4AssetAssetInstance: { _enum: { Undefined: "Null", @@ -3592,7 +3624,7 @@ export default { Array32: "[u8;32]", }, }, - /** Lookup365: staging_xcm::v4::Response */ + /** Lookup368: staging_xcm::v4::Response */ StagingXcmV4Response: { _enum: { Null: "Null", @@ -3603,7 +3635,7 @@ export default { DispatchResult: "XcmV3MaybeErrorCode", }, }, - /** Lookup367: staging_xcm::v4::PalletInfo */ + /** Lookup370: staging_xcm::v4::PalletInfo */ StagingXcmV4PalletInfo: { index: "Compact", name: "Bytes", @@ -3612,20 +3644,20 @@ export default { minor: "Compact", patch: "Compact", }, - /** Lookup371: staging_xcm::v4::QueryResponseInfo */ + /** Lookup374: staging_xcm::v4::QueryResponseInfo */ StagingXcmV4QueryResponseInfo: { destination: "StagingXcmV4Location", queryId: "Compact", maxWeight: "SpWeightsWeightV2Weight", }, - /** Lookup372: staging_xcm::v4::asset::AssetFilter */ + /** Lookup375: staging_xcm::v4::asset::AssetFilter */ StagingXcmV4AssetAssetFilter: { _enum: { Definite: "StagingXcmV4AssetAssets", Wild: "StagingXcmV4AssetWildAsset", }, }, - /** Lookup373: staging_xcm::v4::asset::WildAsset */ + /** Lookup376: staging_xcm::v4::asset::WildAsset */ StagingXcmV4AssetWildAsset: { _enum: { All: "Null", @@ -3641,11 +3673,11 @@ export default { }, }, }, - /** Lookup374: staging_xcm::v4::asset::WildFungibility */ + /** Lookup377: staging_xcm::v4::asset::WildFungibility */ StagingXcmV4AssetWildFungibility: { _enum: ["Fungible", "NonFungible"], }, - /** Lookup375: xcm::VersionedAssets */ + /** Lookup378: xcm::VersionedAssets */ XcmVersionedAssets: { _enum: { __Unused0: "Null", @@ -3655,7 +3687,7 @@ export default { V4: "StagingXcmV4AssetAssets", }, }, - /** Lookup387: staging_xcm_executor::traits::asset_transfer::TransferType */ + /** Lookup390: staging_xcm_executor::traits::asset_transfer::TransferType */ StagingXcmExecutorAssetTransferTransferType: { _enum: { Teleport: "Null", @@ -3664,7 +3696,7 @@ export default { RemoteReserve: "XcmVersionedLocation", }, }, - /** Lookup388: xcm::VersionedAssetId */ + /** Lookup391: xcm::VersionedAssetId */ XcmVersionedAssetId: { _enum: { __Unused0: "Null", @@ -3674,7 +3706,7 @@ export default { V4: "StagingXcmV4AssetAssetId", }, }, - /** Lookup389: pallet_migrations::pallet::Call */ + /** Lookup392: pallet_migrations::pallet::Call */ PalletMigrationsCall: { _enum: { force_set_cursor: { @@ -3691,20 +3723,20 @@ export default { }, }, }, - /** Lookup391: pallet_migrations::MigrationCursor, BlockNumber> */ + /** Lookup394: pallet_migrations::MigrationCursor, BlockNumber> */ PalletMigrationsMigrationCursor: { _enum: { Active: "PalletMigrationsActiveCursor", Stuck: "Null", }, }, - /** Lookup393: pallet_migrations::ActiveCursor, BlockNumber> */ + /** Lookup396: pallet_migrations::ActiveCursor, BlockNumber> */ PalletMigrationsActiveCursor: { index: "u32", innerCursor: "Option", startedAt: "u32", }, - /** Lookup395: pallet_migrations::HistoricCleanupSelector> */ + /** Lookup398: pallet_migrations::HistoricCleanupSelector> */ PalletMigrationsHistoricCleanupSelector: { _enum: { Specific: "Vec", @@ -3714,7 +3746,7 @@ export default { }, }, }, - /** Lookup398: pallet_beefy::pallet::Call */ + /** Lookup401: pallet_beefy::pallet::Call */ PalletBeefyCall: { _enum: { report_double_voting: { @@ -3747,17 +3779,17 @@ export default { }, }, /** - * Lookup399: sp_consensus_beefy::DoubleVotingProof */ SpConsensusBeefyDoubleVotingProof: { first: "SpConsensusBeefyVoteMessage", second: "SpConsensusBeefyVoteMessage", }, - /** Lookup400: sp_consensus_beefy::ecdsa_crypto::Signature */ + /** Lookup403: sp_consensus_beefy::ecdsa_crypto::Signature */ SpConsensusBeefyEcdsaCryptoSignature: "[u8;65]", /** - * Lookup401: sp_consensus_beefy::VoteMessage */ SpConsensusBeefyVoteMessage: { @@ -3765,16 +3797,16 @@ export default { id: "SpConsensusBeefyEcdsaCryptoPublic", signature: "SpConsensusBeefyEcdsaCryptoSignature", }, - /** Lookup402: sp_consensus_beefy::commitment::Commitment */ + /** Lookup405: sp_consensus_beefy::commitment::Commitment */ SpConsensusBeefyCommitment: { payload: "SpConsensusBeefyPayload", blockNumber: "u32", validatorSetId: "u64", }, - /** Lookup403: sp_consensus_beefy::payload::Payload */ + /** Lookup406: sp_consensus_beefy::payload::Payload */ SpConsensusBeefyPayload: "Vec<([u8;2],Bytes)>", /** - * Lookup406: sp_consensus_beefy::ForkVotingProof, + * Lookup409: sp_consensus_beefy::ForkVotingProof, * sp_consensus_beefy::ecdsa_crypto::Public, sp_mmr_primitives::AncestryProof> */ SpConsensusBeefyForkVotingProof: { @@ -3782,18 +3814,18 @@ export default { ancestryProof: "SpMmrPrimitivesAncestryProof", header: "SpRuntimeHeader", }, - /** Lookup407: sp_mmr_primitives::AncestryProof */ + /** Lookup410: sp_mmr_primitives::AncestryProof */ SpMmrPrimitivesAncestryProof: { prevPeaks: "Vec", prevLeafCount: "u64", leafCount: "u64", items: "Vec<(u64,H256)>", }, - /** Lookup410: sp_consensus_beefy::FutureBlockVotingProof */ + /** Lookup413: sp_consensus_beefy::FutureBlockVotingProof */ SpConsensusBeefyFutureBlockVotingProof: { vote: "SpConsensusBeefyVoteMessage", }, - /** Lookup411: snowbridge_pallet_ethereum_client::pallet::Call */ + /** Lookup414: snowbridge_pallet_ethereum_client::pallet::Call */ SnowbridgePalletEthereumClientCall: { _enum: { force_checkpoint: { @@ -3808,7 +3840,7 @@ export default { }, }, }, - /** Lookup412: snowbridge_beacon_primitives::updates::CheckpointUpdate */ + /** Lookup415: snowbridge_beacon_primitives::updates::CheckpointUpdate */ SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate: { header: "SnowbridgeBeaconPrimitivesBeaconHeader", currentSyncCommittee: "SnowbridgeBeaconPrimitivesSyncCommittee", @@ -3817,7 +3849,7 @@ export default { blockRootsRoot: "H256", blockRootsBranch: "Vec", }, - /** Lookup413: snowbridge_beacon_primitives::types::BeaconHeader */ + /** Lookup416: snowbridge_beacon_primitives::types::BeaconHeader */ SnowbridgeBeaconPrimitivesBeaconHeader: { slot: "u64", proposerIndex: "u64", @@ -3825,14 +3857,14 @@ export default { stateRoot: "H256", bodyRoot: "H256", }, - /** Lookup414: snowbridge_beacon_primitives::types::SyncCommittee */ + /** Lookup417: snowbridge_beacon_primitives::types::SyncCommittee */ SnowbridgeBeaconPrimitivesSyncCommittee: { pubkeys: "[[u8;48];512]", aggregatePubkey: "SnowbridgeBeaconPrimitivesPublicKey", }, - /** Lookup416: snowbridge_beacon_primitives::types::PublicKey */ + /** Lookup419: snowbridge_beacon_primitives::types::PublicKey */ SnowbridgeBeaconPrimitivesPublicKey: "[u8;48]", - /** Lookup418: snowbridge_beacon_primitives::updates::Update */ + /** Lookup421: snowbridge_beacon_primitives::updates::Update */ SnowbridgeBeaconPrimitivesUpdatesUpdate: { attestedHeader: "SnowbridgeBeaconPrimitivesBeaconHeader", syncAggregate: "SnowbridgeBeaconPrimitivesSyncAggregate", @@ -3843,23 +3875,23 @@ export default { blockRootsRoot: "H256", blockRootsBranch: "Vec", }, - /** Lookup419: snowbridge_beacon_primitives::types::SyncAggregate */ + /** Lookup422: snowbridge_beacon_primitives::types::SyncAggregate */ SnowbridgeBeaconPrimitivesSyncAggregate: { syncCommitteeBits: "[u8;64]", syncCommitteeSignature: "SnowbridgeBeaconPrimitivesSignature", }, - /** Lookup420: snowbridge_beacon_primitives::types::Signature */ + /** Lookup423: snowbridge_beacon_primitives::types::Signature */ SnowbridgeBeaconPrimitivesSignature: "[u8;96]", - /** Lookup423: snowbridge_beacon_primitives::updates::NextSyncCommitteeUpdate */ + /** Lookup426: snowbridge_beacon_primitives::updates::NextSyncCommitteeUpdate */ SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate: { nextSyncCommittee: "SnowbridgeBeaconPrimitivesSyncCommittee", nextSyncCommitteeBranch: "Vec", }, - /** Lookup424: snowbridge_core::operating_mode::BasicOperatingMode */ + /** Lookup427: snowbridge_core::operating_mode::BasicOperatingMode */ SnowbridgeCoreOperatingModeBasicOperatingMode: { _enum: ["Normal", "Halted"], }, - /** Lookup425: polkadot_runtime_common::paras_sudo_wrapper::pallet::Call */ + /** Lookup428: polkadot_runtime_common::paras_sudo_wrapper::pallet::Call */ PolkadotRuntimeCommonParasSudoWrapperPalletCall: { _enum: { sudo_schedule_para_initialize: { @@ -3887,24 +3919,13 @@ export default { }, }, }, - /** Lookup426: polkadot_runtime_parachains::paras::ParaGenesisArgs */ + /** Lookup429: polkadot_runtime_parachains::paras::ParaGenesisArgs */ PolkadotRuntimeParachainsParasParaGenesisArgs: { genesisHead: "Bytes", validationCode: "Bytes", paraKind: "bool", }, - /** Lookup427: dancelight_runtime::validator_manager::pallet::Call */ - DancelightRuntimeValidatorManagerPalletCall: { - _enum: { - register_validators: { - validators: "Vec", - }, - deregister_validators: { - validators: "Vec", - }, - }, - }, - /** Lookup428: pallet_root_testing::pallet::Call */ + /** Lookup430: pallet_root_testing::pallet::Call */ PalletRootTestingCall: { _enum: { fill_block: { @@ -3913,7 +3934,7 @@ export default { trigger_defensive: "Null", }, }, - /** Lookup429: pallet_sudo::pallet::Call */ + /** Lookup431: pallet_sudo::pallet::Call */ PalletSudoCall: { _enum: { sudo: { @@ -3936,15 +3957,15 @@ export default { remove_key: "Null", }, }, - /** Lookup430: sp_runtime::traits::BlakeTwo256 */ + /** Lookup432: sp_runtime::traits::BlakeTwo256 */ SpRuntimeBlakeTwo256: "Null", - /** Lookup432: pallet_conviction_voting::types::Tally */ + /** Lookup434: pallet_conviction_voting::types::Tally */ PalletConvictionVotingTally: { ayes: "u128", nays: "u128", support: "u128", }, - /** Lookup433: pallet_ranked_collective::pallet::Event */ + /** Lookup435: pallet_ranked_collective::pallet::Event */ PalletRankedCollectiveEvent: { _enum: { MemberAdded: { @@ -3970,20 +3991,20 @@ export default { }, }, }, - /** Lookup434: pallet_ranked_collective::VoteRecord */ + /** Lookup436: pallet_ranked_collective::VoteRecord */ PalletRankedCollectiveVoteRecord: { _enum: { Aye: "u32", Nay: "u32", }, }, - /** Lookup435: pallet_ranked_collective::Tally */ + /** Lookup437: pallet_ranked_collective::Tally */ PalletRankedCollectiveTally: { bareAyes: "u32", ayes: "u32", nays: "u32", }, - /** Lookup437: pallet_whitelist::pallet::Event */ + /** Lookup439: pallet_whitelist::pallet::Event */ PalletWhitelistEvent: { _enum: { CallWhitelisted: { @@ -3998,17 +4019,17 @@ export default { }, }, }, - /** Lookup439: frame_support::dispatch::PostDispatchInfo */ + /** Lookup441: frame_support::dispatch::PostDispatchInfo */ FrameSupportDispatchPostDispatchInfo: { actualWeight: "Option", paysFee: "FrameSupportDispatchPays", }, - /** Lookup441: sp_runtime::DispatchErrorWithPostInfo */ + /** Lookup443: sp_runtime::DispatchErrorWithPostInfo */ SpRuntimeDispatchErrorWithPostInfo: { postInfo: "FrameSupportDispatchPostDispatchInfo", error: "SpRuntimeDispatchError", }, - /** Lookup442: polkadot_runtime_parachains::inclusion::pallet::Event */ + /** Lookup444: polkadot_runtime_parachains::inclusion::pallet::Event */ PolkadotRuntimeParachainsInclusionPalletEvent: { _enum: { CandidateBacked: "(PolkadotPrimitivesV7CandidateReceipt,Bytes,u32,u32)", @@ -4020,12 +4041,12 @@ export default { }, }, }, - /** Lookup443: polkadot_primitives::v7::CandidateReceipt */ + /** Lookup445: polkadot_primitives::v7::CandidateReceipt */ PolkadotPrimitivesV7CandidateReceipt: { descriptor: "PolkadotPrimitivesV7CandidateDescriptor", commitmentsHash: "H256", }, - /** Lookup446: polkadot_runtime_parachains::paras::pallet::Event */ + /** Lookup448: polkadot_runtime_parachains::paras::pallet::Event */ PolkadotRuntimeParachainsParasPalletEvent: { _enum: { CurrentCodeUpdated: "u32", @@ -4038,7 +4059,7 @@ export default { PvfCheckRejected: "(H256,u32)", }, }, - /** Lookup447: polkadot_runtime_parachains::hrmp::pallet::Event */ + /** Lookup449: polkadot_runtime_parachains::hrmp::pallet::Event */ PolkadotRuntimeParachainsHrmpPalletEvent: { _enum: { OpenChannelRequested: { @@ -4077,7 +4098,7 @@ export default { }, }, }, - /** Lookup448: polkadot_runtime_parachains::disputes::pallet::Event */ + /** Lookup450: polkadot_runtime_parachains::disputes::pallet::Event */ PolkadotRuntimeParachainsDisputesPalletEvent: { _enum: { DisputeInitiated: "(H256,PolkadotRuntimeParachainsDisputesDisputeLocation)", @@ -4085,15 +4106,15 @@ export default { Revert: "u32", }, }, - /** Lookup449: polkadot_runtime_parachains::disputes::DisputeLocation */ + /** Lookup451: polkadot_runtime_parachains::disputes::DisputeLocation */ PolkadotRuntimeParachainsDisputesDisputeLocation: { _enum: ["Local", "Remote"], }, - /** Lookup450: polkadot_runtime_parachains::disputes::DisputeResult */ + /** Lookup452: polkadot_runtime_parachains::disputes::DisputeResult */ PolkadotRuntimeParachainsDisputesDisputeResult: { _enum: ["Valid", "Invalid"], }, - /** Lookup451: pallet_message_queue::pallet::Event */ + /** Lookup453: pallet_message_queue::pallet::Event */ PalletMessageQueueEvent: { _enum: { ProcessingFailed: { @@ -4119,7 +4140,7 @@ export default { }, }, }, - /** Lookup452: frame_support::traits::messages::ProcessMessageError */ + /** Lookup454: frame_support::traits::messages::ProcessMessageError */ FrameSupportMessagesProcessMessageError: { _enum: { BadFormat: "Null", @@ -4130,7 +4151,7 @@ export default { StackLimitReached: "Null", }, }, - /** Lookup453: polkadot_runtime_parachains::assigner_on_demand::pallet::Event */ + /** Lookup455: polkadot_runtime_parachains::assigner_on_demand::pallet::Event */ PolkadotRuntimeParachainsAssignerOnDemandPalletEvent: { _enum: { OnDemandOrderPlaced: { @@ -4143,7 +4164,7 @@ export default { }, }, }, - /** Lookup454: polkadot_runtime_common::paras_registrar::pallet::Event */ + /** Lookup456: polkadot_runtime_common::paras_registrar::pallet::Event */ PolkadotRuntimeCommonParasRegistrarPalletEvent: { _enum: { Registered: { @@ -4163,7 +4184,7 @@ export default { }, }, }, - /** Lookup455: pallet_utility::pallet::Event */ + /** Lookup457: pallet_utility::pallet::Event */ PalletUtilityEvent: { _enum: { BatchInterrupted: { @@ -4181,7 +4202,7 @@ export default { }, }, }, - /** Lookup457: pallet_identity::pallet::Event */ + /** Lookup459: pallet_identity::pallet::Event */ PalletIdentityEvent: { _enum: { IdentitySet: { @@ -4253,7 +4274,7 @@ export default { }, }, }, - /** Lookup458: pallet_scheduler::pallet::Event */ + /** Lookup460: pallet_scheduler::pallet::Event */ PalletSchedulerEvent: { _enum: { Scheduled: { @@ -4297,7 +4318,7 @@ export default { }, }, }, - /** Lookup460: pallet_proxy::pallet::Event */ + /** Lookup462: pallet_proxy::pallet::Event */ PalletProxyEvent: { _enum: { ProxyExecuted: { @@ -4328,7 +4349,7 @@ export default { }, }, }, - /** Lookup461: pallet_multisig::pallet::Event */ + /** Lookup463: pallet_multisig::pallet::Event */ PalletMultisigEvent: { _enum: { NewMultisig: { @@ -4357,7 +4378,7 @@ export default { }, }, }, - /** Lookup462: pallet_preimage::pallet::Event */ + /** Lookup464: pallet_preimage::pallet::Event */ PalletPreimageEvent: { _enum: { Noted: { @@ -4380,7 +4401,7 @@ export default { }, }, }, - /** Lookup463: pallet_asset_rate::pallet::Event */ + /** Lookup465: pallet_asset_rate::pallet::Event */ PalletAssetRateEvent: { _enum: { AssetRateCreated: { @@ -4400,7 +4421,7 @@ export default { }, }, }, - /** Lookup464: pallet_xcm::pallet::Event */ + /** Lookup466: pallet_xcm::pallet::Event */ PalletXcmEvent: { _enum: { Attempted: { @@ -4523,7 +4544,7 @@ export default { }, }, }, - /** Lookup465: staging_xcm::v4::traits::Outcome */ + /** Lookup467: staging_xcm::v4::traits::Outcome */ StagingXcmV4TraitsOutcome: { _enum: { Complete: { @@ -4538,7 +4559,7 @@ export default { }, }, }, - /** Lookup466: pallet_migrations::pallet::Event */ + /** Lookup468: pallet_migrations::pallet::Event */ PalletMigrationsEvent: { _enum: { RuntimeUpgradeStarted: "Null", @@ -4560,7 +4581,7 @@ export default { }, }, }, - /** Lookup468: snowbridge_pallet_ethereum_client::pallet::Event */ + /** Lookup470: snowbridge_pallet_ethereum_client::pallet::Event */ SnowbridgePalletEthereumClientEvent: { _enum: { BeaconHeaderImported: { @@ -4575,18 +4596,11 @@ export default { }, }, }, - /** Lookup469: dancelight_runtime::validator_manager::pallet::Event */ - DancelightRuntimeValidatorManagerPalletEvent: { - _enum: { - ValidatorsRegistered: "Vec", - ValidatorsDeregistered: "Vec", - }, - }, - /** Lookup470: pallet_root_testing::pallet::Event */ + /** Lookup471: pallet_root_testing::pallet::Event */ PalletRootTestingEvent: { _enum: ["DefensiveTestCall"], }, - /** Lookup471: pallet_sudo::pallet::Event */ + /** Lookup472: pallet_sudo::pallet::Event */ PalletSudoEvent: { _enum: { Sudid: { @@ -4605,7 +4619,7 @@ export default { }, }, }, - /** Lookup472: frame_system::Phase */ + /** Lookup473: frame_system::Phase */ FrameSystemPhase: { _enum: { ApplyExtrinsic: "u32", @@ -4613,51 +4627,51 @@ export default { Initialization: "Null", }, }, - /** Lookup474: frame_system::LastRuntimeUpgradeInfo */ + /** Lookup475: frame_system::LastRuntimeUpgradeInfo */ FrameSystemLastRuntimeUpgradeInfo: { specVersion: "Compact", specName: "Text", }, - /** Lookup476: frame_system::CodeUpgradeAuthorization */ + /** Lookup477: frame_system::CodeUpgradeAuthorization */ FrameSystemCodeUpgradeAuthorization: { codeHash: "H256", checkVersion: "bool", }, - /** Lookup477: frame_system::limits::BlockWeights */ + /** Lookup478: frame_system::limits::BlockWeights */ FrameSystemLimitsBlockWeights: { baseBlock: "SpWeightsWeightV2Weight", maxBlock: "SpWeightsWeightV2Weight", perClass: "FrameSupportDispatchPerDispatchClassWeightsPerClass", }, - /** Lookup478: frame_support::dispatch::PerDispatchClass */ + /** Lookup479: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassWeightsPerClass: { normal: "FrameSystemLimitsWeightsPerClass", operational: "FrameSystemLimitsWeightsPerClass", mandatory: "FrameSystemLimitsWeightsPerClass", }, - /** Lookup479: frame_system::limits::WeightsPerClass */ + /** Lookup480: frame_system::limits::WeightsPerClass */ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: "SpWeightsWeightV2Weight", maxExtrinsic: "Option", maxTotal: "Option", reserved: "Option", }, - /** Lookup480: frame_system::limits::BlockLength */ + /** Lookup481: frame_system::limits::BlockLength */ FrameSystemLimitsBlockLength: { max: "FrameSupportDispatchPerDispatchClassU32", }, - /** Lookup481: frame_support::dispatch::PerDispatchClass */ + /** Lookup482: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassU32: { normal: "u32", operational: "u32", mandatory: "u32", }, - /** Lookup482: sp_weights::RuntimeDbWeight */ + /** Lookup483: sp_weights::RuntimeDbWeight */ SpWeightsRuntimeDbWeight: { read: "u64", write: "u64", }, - /** Lookup483: sp_version::RuntimeVersion */ + /** Lookup484: sp_version::RuntimeVersion */ SpVersionRuntimeVersion: { specName: "Text", implName: "Text", @@ -4668,7 +4682,7 @@ export default { transactionVersion: "u32", stateVersion: "u8", }, - /** Lookup487: frame_system::pallet::Error */ + /** Lookup488: frame_system::pallet::Error */ FrameSystemError: { _enum: [ "InvalidSpecName", @@ -4682,7 +4696,7 @@ export default { "Unauthorized", ], }, - /** Lookup494: sp_consensus_babe::digests::PreDigest */ + /** Lookup495: sp_consensus_babe::digests::PreDigest */ SpConsensusBabeDigestsPreDigest: { _enum: { __Unused0: "Null", @@ -4691,34 +4705,34 @@ export default { SecondaryVRF: "SpConsensusBabeDigestsSecondaryVRFPreDigest", }, }, - /** Lookup495: sp_consensus_babe::digests::PrimaryPreDigest */ + /** Lookup496: sp_consensus_babe::digests::PrimaryPreDigest */ SpConsensusBabeDigestsPrimaryPreDigest: { authorityIndex: "u32", slot: "u64", vrfSignature: "SpCoreSr25519VrfVrfSignature", }, - /** Lookup496: sp_core::sr25519::vrf::VrfSignature */ + /** Lookup497: sp_core::sr25519::vrf::VrfSignature */ SpCoreSr25519VrfVrfSignature: { preOutput: "[u8;32]", proof: "[u8;64]", }, - /** Lookup497: sp_consensus_babe::digests::SecondaryPlainPreDigest */ + /** Lookup498: sp_consensus_babe::digests::SecondaryPlainPreDigest */ SpConsensusBabeDigestsSecondaryPlainPreDigest: { authorityIndex: "u32", slot: "u64", }, - /** Lookup498: sp_consensus_babe::digests::SecondaryVRFPreDigest */ + /** Lookup499: sp_consensus_babe::digests::SecondaryVRFPreDigest */ SpConsensusBabeDigestsSecondaryVRFPreDigest: { authorityIndex: "u32", slot: "u64", vrfSignature: "SpCoreSr25519VrfVrfSignature", }, - /** Lookup499: sp_consensus_babe::BabeEpochConfiguration */ + /** Lookup500: sp_consensus_babe::BabeEpochConfiguration */ SpConsensusBabeBabeEpochConfiguration: { c: "(u64,u64)", allowedSlots: "SpConsensusBabeAllowedSlots", }, - /** Lookup503: pallet_babe::pallet::Error */ + /** Lookup504: pallet_babe::pallet::Error */ PalletBabeError: { _enum: [ "InvalidEquivocationProof", @@ -4727,22 +4741,22 @@ export default { "InvalidConfiguration", ], }, - /** Lookup505: pallet_balances::types::BalanceLock */ + /** Lookup506: pallet_balances::types::BalanceLock */ PalletBalancesBalanceLock: { id: "[u8;8]", amount: "u128", reasons: "PalletBalancesReasons", }, - /** Lookup506: pallet_balances::types::Reasons */ + /** Lookup507: pallet_balances::types::Reasons */ PalletBalancesReasons: { _enum: ["Fee", "Misc", "All"], }, - /** Lookup509: pallet_balances::types::ReserveData */ + /** Lookup510: pallet_balances::types::ReserveData */ PalletBalancesReserveData: { id: "[u8;8]", amount: "u128", }, - /** Lookup513: dancelight_runtime::RuntimeHoldReason */ + /** Lookup514: dancelight_runtime::RuntimeHoldReason */ DancelightRuntimeRuntimeHoldReason: { _enum: { __Unused0: "Null", @@ -4833,24 +4847,24 @@ export default { Preimage: "PalletPreimageHoldReason", }, }, - /** Lookup514: pallet_registrar::pallet::HoldReason */ + /** Lookup515: pallet_registrar::pallet::HoldReason */ PalletRegistrarHoldReason: { _enum: ["RegistrarDeposit"], }, - /** Lookup515: pallet_data_preservers::pallet::HoldReason */ + /** Lookup516: pallet_data_preservers::pallet::HoldReason */ PalletDataPreserversHoldReason: { _enum: ["ProfileDeposit"], }, - /** Lookup516: pallet_preimage::pallet::HoldReason */ + /** Lookup517: pallet_preimage::pallet::HoldReason */ PalletPreimageHoldReason: { _enum: ["Preimage"], }, - /** Lookup519: frame_support::traits::tokens::misc::IdAmount */ + /** Lookup520: frame_support::traits::tokens::misc::IdAmount */ FrameSupportTokensMiscIdAmount: { id: "Null", amount: "u128", }, - /** Lookup521: pallet_balances::pallet::Error */ + /** Lookup522: pallet_balances::pallet::Error */ PalletBalancesError: { _enum: [ "VestingBalance", @@ -4867,21 +4881,21 @@ export default { "DeltaZero", ], }, - /** Lookup522: pallet_transaction_payment::Releases */ + /** Lookup523: pallet_transaction_payment::Releases */ PalletTransactionPaymentReleases: { _enum: ["V1Ancient", "V2"], }, - /** Lookup523: sp_staking::offence::OffenceDetails */ + /** Lookup524: sp_staking::offence::OffenceDetails */ SpStakingOffenceOffenceDetails: { offender: "(AccountId32,Null)", reporters: "Vec", }, - /** Lookup535: pallet_registrar::pallet::DepositInfo */ + /** Lookup536: pallet_registrar::pallet::DepositInfo */ PalletRegistrarDepositInfo: { creator: "AccountId32", deposit: "u128", }, - /** Lookup536: pallet_registrar::pallet::Error */ + /** Lookup537: pallet_registrar::pallet::Error */ PalletRegistrarError: { _enum: [ "ParaIdAlreadyRegistered", @@ -4903,7 +4917,7 @@ export default { "WasmCodeNecessary", ], }, - /** Lookup537: pallet_configuration::HostConfiguration */ + /** Lookup538: pallet_configuration::HostConfiguration */ PalletConfigurationHostConfiguration: { maxCollators: "u32", minOrchestratorCollators: "u32", @@ -4915,11 +4929,11 @@ export default { targetContainerChainFullness: "Perbill", maxParachainCoresPercentage: "Option", }, - /** Lookup540: pallet_configuration::pallet::Error */ + /** Lookup541: pallet_configuration::pallet::Error */ PalletConfigurationError: { _enum: ["InvalidNewValue"], }, - /** Lookup542: pallet_invulnerables::pallet::Error */ + /** Lookup543: pallet_invulnerables::pallet::Error */ PalletInvulnerablesError: { _enum: [ "TooManyInvulnerables", @@ -4929,23 +4943,23 @@ export default { "UnableToDeriveCollatorId", ], }, - /** Lookup543: dp_collator_assignment::AssignedCollators */ + /** Lookup544: dp_collator_assignment::AssignedCollators */ DpCollatorAssignmentAssignedCollatorsAccountId32: { orchestratorChain: "Vec", containerChains: "BTreeMap>", }, - /** Lookup548: dp_collator_assignment::AssignedCollators */ + /** Lookup549: dp_collator_assignment::AssignedCollators */ DpCollatorAssignmentAssignedCollatorsPublic: { orchestratorChain: "Vec", containerChains: "BTreeMap>", }, - /** Lookup556: tp_traits::ContainerChainBlockInfo */ + /** Lookup557: tp_traits::ContainerChainBlockInfo */ TpTraitsContainerChainBlockInfo: { blockNumber: "u32", author: "AccountId32", latestSlotNumber: "u64", }, - /** Lookup557: pallet_author_noting::pallet::Error */ + /** Lookup558: pallet_author_noting::pallet::Error */ PalletAuthorNotingError: { _enum: [ "FailedReading", @@ -4957,18 +4971,18 @@ export default { "NonAuraDigest", ], }, - /** Lookup558: pallet_services_payment::pallet::Error */ + /** Lookup559: pallet_services_payment::pallet::Error */ PalletServicesPaymentError: { _enum: ["InsufficientFundsToPurchaseCredits", "InsufficientCredits", "CreditPriceTooExpensive"], }, - /** Lookup559: pallet_data_preservers::types::RegisteredProfile */ + /** Lookup560: pallet_data_preservers::types::RegisteredProfile */ PalletDataPreserversRegisteredProfile: { account: "AccountId32", deposit: "u128", profile: "PalletDataPreserversProfile", assignment: "Option<(u32,DancelightRuntimePreserversAssignmentPaymentWitness)>", }, - /** Lookup565: pallet_data_preservers::pallet::Error */ + /** Lookup566: pallet_data_preservers::pallet::Error */ PalletDataPreserversError: { _enum: [ "NoBootNodes", @@ -4983,13 +4997,28 @@ export default { "CantDeleteAssignedProfile", ], }, - /** Lookup570: sp_core::crypto::KeyTypeId */ + /** Lookup569: tp_traits::ActiveEraInfo */ + TpTraitsActiveEraInfo: { + index: "u32", + start: "Option", + }, + /** Lookup571: pallet_external_validators::pallet::Error */ + PalletExternalValidatorsError: { + _enum: [ + "TooManyWhitelisted", + "AlreadyWhitelisted", + "NotWhitelisted", + "NoKeysRegistered", + "UnableToDeriveValidatorId", + ], + }, + /** Lookup576: sp_core::crypto::KeyTypeId */ SpCoreCryptoKeyTypeId: "[u8;4]", - /** Lookup571: pallet_session::pallet::Error */ + /** Lookup577: pallet_session::pallet::Error */ PalletSessionError: { _enum: ["InvalidProof", "NoAssociatedValidatorId", "DuplicatedKey", "NoKeys", "NoAccount"], }, - /** Lookup572: pallet_grandpa::StoredState */ + /** Lookup578: pallet_grandpa::StoredState */ PalletGrandpaStoredState: { _enum: { Live: "Null", @@ -5004,14 +5033,14 @@ export default { }, }, }, - /** Lookup573: pallet_grandpa::StoredPendingChange */ + /** Lookup579: pallet_grandpa::StoredPendingChange */ PalletGrandpaStoredPendingChange: { scheduledAt: "u32", delay: "u32", nextAuthorities: "Vec<(SpConsensusGrandpaAppPublic,u64)>", forced: "Option", }, - /** Lookup575: pallet_grandpa::pallet::Error */ + /** Lookup581: pallet_grandpa::pallet::Error */ PalletGrandpaError: { _enum: [ "PauseFailed", @@ -5023,12 +5052,12 @@ export default { "DuplicateOffenceReport", ], }, - /** Lookup578: pallet_inflation_rewards::pallet::ChainsToRewardValue */ + /** Lookup584: pallet_inflation_rewards::pallet::ChainsToRewardValue */ PalletInflationRewardsChainsToRewardValue: { paraIds: "Vec", rewardsPerChain: "u128", }, - /** Lookup579: pallet_treasury::Proposal */ + /** Lookup585: pallet_treasury::Proposal */ PalletTreasuryProposal: { proposer: "AccountId32", value: "u128", @@ -5036,7 +5065,7 @@ export default { bond: "u128", }, /** - * Lookup581: pallet_treasury::SpendStatus */ PalletTreasurySpendStatus: { @@ -5047,7 +5076,7 @@ export default { expireAt: "u32", status: "PalletTreasuryPaymentState", }, - /** Lookup582: pallet_treasury::PaymentState */ + /** Lookup588: pallet_treasury::PaymentState */ PalletTreasuryPaymentState: { _enum: { Pending: "Null", @@ -5057,9 +5086,9 @@ export default { Failed: "Null", }, }, - /** Lookup584: frame_support::PalletId */ + /** Lookup590: frame_support::PalletId */ FrameSupportPalletId: "[u8;8]", - /** Lookup585: pallet_treasury::pallet::Error */ + /** Lookup591: pallet_treasury::pallet::Error */ PalletTreasuryError: { _enum: [ "InvalidIndex", @@ -5076,7 +5105,7 @@ export default { ], }, /** - * Lookup587: pallet_conviction_voting::vote::Voting */ PalletConvictionVotingVoteVoting: { @@ -5085,20 +5114,20 @@ export default { Delegating: "PalletConvictionVotingVoteDelegating", }, }, - /** Lookup588: pallet_conviction_voting::vote::Casting */ + /** Lookup594: pallet_conviction_voting::vote::Casting */ PalletConvictionVotingVoteCasting: { votes: "Vec<(u32,PalletConvictionVotingVoteAccountVote)>", delegations: "PalletConvictionVotingDelegations", prior: "PalletConvictionVotingVotePriorLock", }, - /** Lookup592: pallet_conviction_voting::types::Delegations */ + /** Lookup598: pallet_conviction_voting::types::Delegations */ PalletConvictionVotingDelegations: { votes: "u128", capital: "u128", }, - /** Lookup593: pallet_conviction_voting::vote::PriorLock */ + /** Lookup599: pallet_conviction_voting::vote::PriorLock */ PalletConvictionVotingVotePriorLock: "(u32,u128)", - /** Lookup594: pallet_conviction_voting::vote::Delegating */ + /** Lookup600: pallet_conviction_voting::vote::Delegating */ PalletConvictionVotingVoteDelegating: { balance: "u128", target: "AccountId32", @@ -5106,7 +5135,7 @@ export default { delegations: "PalletConvictionVotingDelegations", prior: "PalletConvictionVotingVotePriorLock", }, - /** Lookup598: pallet_conviction_voting::pallet::Error */ + /** Lookup604: pallet_conviction_voting::pallet::Error */ PalletConvictionVotingError: { _enum: [ "NotOngoing", @@ -5124,7 +5153,7 @@ export default { ], }, /** - * Lookup599: pallet_referenda::types::ReferendumInfo, * Balance, pallet_conviction_voting::types::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5139,7 +5168,7 @@ export default { }, }, /** - * Lookup600: pallet_referenda::types::ReferendumStatus, * Balance, pallet_conviction_voting::types::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5156,17 +5185,17 @@ export default { inQueue: "bool", alarm: "Option<(u32,(u32,u32))>", }, - /** Lookup601: pallet_referenda::types::Deposit */ + /** Lookup607: pallet_referenda::types::Deposit */ PalletReferendaDeposit: { who: "AccountId32", amount: "u128", }, - /** Lookup604: pallet_referenda::types::DecidingStatus */ + /** Lookup610: pallet_referenda::types::DecidingStatus */ PalletReferendaDecidingStatus: { since: "u32", confirming: "Option", }, - /** Lookup612: pallet_referenda::types::TrackInfo */ + /** Lookup618: pallet_referenda::types::TrackInfo */ PalletReferendaTrackInfo: { name: "Text", maxDeciding: "u32", @@ -5178,7 +5207,7 @@ export default { minApproval: "PalletReferendaCurve", minSupport: "PalletReferendaCurve", }, - /** Lookup613: pallet_referenda::types::Curve */ + /** Lookup619: pallet_referenda::types::Curve */ PalletReferendaCurve: { _enum: { LinearDecreasing: { @@ -5199,7 +5228,7 @@ export default { }, }, }, - /** Lookup616: pallet_referenda::pallet::Error */ + /** Lookup622: pallet_referenda::pallet::Error */ PalletReferendaError: { _enum: [ "NotOngoing", @@ -5218,11 +5247,11 @@ export default { "PreimageStoredWithDifferentLength", ], }, - /** Lookup617: pallet_ranked_collective::MemberRecord */ + /** Lookup623: pallet_ranked_collective::MemberRecord */ PalletRankedCollectiveMemberRecord: { rank: "u16", }, - /** Lookup622: pallet_ranked_collective::pallet::Error */ + /** Lookup628: pallet_ranked_collective::pallet::Error */ PalletRankedCollectiveError: { _enum: [ "AlreadyMember", @@ -5239,7 +5268,7 @@ export default { ], }, /** - * Lookup623: pallet_referenda::types::ReferendumInfo, * Balance, pallet_ranked_collective::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5254,7 +5283,7 @@ export default { }, }, /** - * Lookup624: pallet_referenda::types::ReferendumStatus, * Balance, pallet_ranked_collective::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5271,7 +5300,7 @@ export default { inQueue: "bool", alarm: "Option<(u32,(u32,u32))>", }, - /** Lookup627: pallet_whitelist::pallet::Error */ + /** Lookup633: pallet_whitelist::pallet::Error */ PalletWhitelistError: { _enum: [ "UnavailablePreImage", @@ -5281,7 +5310,7 @@ export default { "CallAlreadyWhitelisted", ], }, - /** Lookup628: polkadot_runtime_parachains::configuration::HostConfiguration */ + /** Lookup634: polkadot_runtime_parachains::configuration::HostConfiguration */ PolkadotRuntimeParachainsConfigurationHostConfiguration: { maxCodeSize: "u32", maxHeadDataSize: "u32", @@ -5319,16 +5348,16 @@ export default { approvalVotingParams: "PolkadotPrimitivesV7ApprovalVotingParams", schedulerParams: "PolkadotPrimitivesVstagingSchedulerParams", }, - /** Lookup631: polkadot_runtime_parachains::configuration::pallet::Error */ + /** Lookup637: polkadot_runtime_parachains::configuration::pallet::Error */ PolkadotRuntimeParachainsConfigurationPalletError: { _enum: ["InvalidNewValue"], }, - /** Lookup634: polkadot_runtime_parachains::shared::AllowedRelayParentsTracker */ + /** Lookup640: polkadot_runtime_parachains::shared::AllowedRelayParentsTracker */ PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker: { buffer: "Vec<(H256,H256)>", latestNumber: "u32", }, - /** Lookup638: polkadot_runtime_parachains::inclusion::CandidatePendingAvailability */ + /** Lookup644: polkadot_runtime_parachains::inclusion::CandidatePendingAvailability */ PolkadotRuntimeParachainsInclusionCandidatePendingAvailability: { _alias: { hash_: "hash", @@ -5343,7 +5372,7 @@ export default { backedInNumber: "u32", backingGroup: "u32", }, - /** Lookup639: polkadot_runtime_parachains::inclusion::pallet::Error */ + /** Lookup645: polkadot_runtime_parachains::inclusion::pallet::Error */ PolkadotRuntimeParachainsInclusionPalletError: { _enum: [ "ValidatorIndexOutOfBounds", @@ -5366,14 +5395,14 @@ export default { "ParaHeadMismatch", ], }, - /** Lookup640: polkadot_primitives::v7::ScrapedOnChainVotes */ + /** Lookup646: polkadot_primitives::v7::ScrapedOnChainVotes */ PolkadotPrimitivesV7ScrapedOnChainVotes: { session: "u32", backingValidatorsPerCandidate: "Vec<(PolkadotPrimitivesV7CandidateReceipt,Vec<(u32,PolkadotPrimitivesV7ValidityAttestation)>)>", disputes: "Vec", }, - /** Lookup645: polkadot_runtime_parachains::paras_inherent::pallet::Error */ + /** Lookup651: polkadot_runtime_parachains::paras_inherent::pallet::Error */ PolkadotRuntimeParachainsParasInherentPalletError: { _enum: [ "TooManyInclusionInherents", @@ -5383,20 +5412,20 @@ export default { "UnscheduledCandidate", ], }, - /** Lookup648: polkadot_runtime_parachains::scheduler::pallet::CoreOccupied */ + /** Lookup654: polkadot_runtime_parachains::scheduler::pallet::CoreOccupied */ PolkadotRuntimeParachainsSchedulerPalletCoreOccupied: { _enum: { Free: "Null", Paras: "PolkadotRuntimeParachainsSchedulerPalletParasEntry", }, }, - /** Lookup649: polkadot_runtime_parachains::scheduler::pallet::ParasEntry */ + /** Lookup655: polkadot_runtime_parachains::scheduler::pallet::ParasEntry */ PolkadotRuntimeParachainsSchedulerPalletParasEntry: { assignment: "PolkadotRuntimeParachainsSchedulerCommonAssignment", availabilityTimeouts: "u32", ttl: "u32", }, - /** Lookup650: polkadot_runtime_parachains::scheduler::common::Assignment */ + /** Lookup656: polkadot_runtime_parachains::scheduler::common::Assignment */ PolkadotRuntimeParachainsSchedulerCommonAssignment: { _enum: { Pool: { @@ -5406,7 +5435,7 @@ export default { Bulk: "u32", }, }, - /** Lookup655: polkadot_runtime_parachains::paras::PvfCheckActiveVoteState */ + /** Lookup661: polkadot_runtime_parachains::paras::PvfCheckActiveVoteState */ PolkadotRuntimeParachainsParasPvfCheckActiveVoteState: { votesAccept: "BitVec", votesReject: "BitVec", @@ -5414,7 +5443,7 @@ export default { createdAt: "u32", causes: "Vec", }, - /** Lookup657: polkadot_runtime_parachains::paras::PvfCheckCause */ + /** Lookup663: polkadot_runtime_parachains::paras::PvfCheckCause */ PolkadotRuntimeParachainsParasPvfCheckCause: { _enum: { Onboarding: "u32", @@ -5425,11 +5454,11 @@ export default { }, }, }, - /** Lookup658: polkadot_runtime_parachains::paras::UpgradeStrategy */ + /** Lookup664: polkadot_runtime_parachains::paras::UpgradeStrategy */ PolkadotRuntimeParachainsParasUpgradeStrategy: { _enum: ["SetGoAheadSignal", "ApplyAtExpectedBlock"], }, - /** Lookup660: polkadot_runtime_parachains::paras::ParaLifecycle */ + /** Lookup666: polkadot_runtime_parachains::paras::ParaLifecycle */ PolkadotRuntimeParachainsParasParaLifecycle: { _enum: [ "Onboarding", @@ -5441,25 +5470,25 @@ export default { "OffboardingParachain", ], }, - /** Lookup662: polkadot_runtime_parachains::paras::ParaPastCodeMeta */ + /** Lookup668: polkadot_runtime_parachains::paras::ParaPastCodeMeta */ PolkadotRuntimeParachainsParasParaPastCodeMeta: { upgradeTimes: "Vec", lastPruned: "Option", }, - /** Lookup664: polkadot_runtime_parachains::paras::ReplacementTimes */ + /** Lookup670: polkadot_runtime_parachains::paras::ReplacementTimes */ PolkadotRuntimeParachainsParasReplacementTimes: { expectedAt: "u32", activatedAt: "u32", }, - /** Lookup666: polkadot_primitives::v7::UpgradeGoAhead */ + /** Lookup672: polkadot_primitives::v7::UpgradeGoAhead */ PolkadotPrimitivesV7UpgradeGoAhead: { _enum: ["Abort", "GoAhead"], }, - /** Lookup667: polkadot_primitives::v7::UpgradeRestriction */ + /** Lookup673: polkadot_primitives::v7::UpgradeRestriction */ PolkadotPrimitivesV7UpgradeRestriction: { _enum: ["Present"], }, - /** Lookup668: polkadot_runtime_parachains::paras::pallet::Error */ + /** Lookup674: polkadot_runtime_parachains::paras::pallet::Error */ PolkadotRuntimeParachainsParasPalletError: { _enum: [ "NotRegistered", @@ -5477,18 +5506,18 @@ export default { "InvalidCode", ], }, - /** Lookup670: polkadot_runtime_parachains::initializer::BufferedSessionChange */ + /** Lookup676: polkadot_runtime_parachains::initializer::BufferedSessionChange */ PolkadotRuntimeParachainsInitializerBufferedSessionChange: { validators: "Vec", queued: "Vec", sessionIndex: "u32", }, - /** Lookup672: polkadot_core_primitives::InboundDownwardMessage */ + /** Lookup678: polkadot_core_primitives::InboundDownwardMessage */ PolkadotCorePrimitivesInboundDownwardMessage: { sentAt: "u32", msg: "Bytes", }, - /** Lookup673: polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest */ + /** Lookup679: polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest */ PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest: { confirmed: "bool", age: "u32", @@ -5497,7 +5526,7 @@ export default { maxCapacity: "u32", maxTotalSize: "u32", }, - /** Lookup675: polkadot_runtime_parachains::hrmp::HrmpChannel */ + /** Lookup681: polkadot_runtime_parachains::hrmp::HrmpChannel */ PolkadotRuntimeParachainsHrmpHrmpChannel: { maxCapacity: "u32", maxTotalSize: "u32", @@ -5508,12 +5537,12 @@ export default { senderDeposit: "u128", recipientDeposit: "u128", }, - /** Lookup677: polkadot_core_primitives::InboundHrmpMessage */ + /** Lookup683: polkadot_core_primitives::InboundHrmpMessage */ PolkadotCorePrimitivesInboundHrmpMessage: { sentAt: "u32", data: "Bytes", }, - /** Lookup680: polkadot_runtime_parachains::hrmp::pallet::Error */ + /** Lookup686: polkadot_runtime_parachains::hrmp::pallet::Error */ PolkadotRuntimeParachainsHrmpPalletError: { _enum: [ "OpenHrmpChannelToSelf", @@ -5538,7 +5567,7 @@ export default { "ChannelCreationNotAuthorized", ], }, - /** Lookup682: polkadot_primitives::v7::SessionInfo */ + /** Lookup688: polkadot_primitives::v7::SessionInfo */ PolkadotPrimitivesV7SessionInfo: { activeValidatorIndices: "Vec", randomSeed: "[u8;32]", @@ -5555,20 +5584,20 @@ export default { neededApprovals: "u32", }, /** - * Lookup683: polkadot_primitives::v7::IndexedVec */ PolkadotPrimitivesV7IndexedVecValidatorIndex: "Vec", - /** Lookup684: polkadot_primitives::v7::IndexedVec */ + /** Lookup690: polkadot_primitives::v7::IndexedVec */ PolkadotPrimitivesV7IndexedVecGroupIndex: "Vec>", - /** Lookup686: polkadot_primitives::v7::DisputeState */ + /** Lookup692: polkadot_primitives::v7::DisputeState */ PolkadotPrimitivesV7DisputeState: { validatorsFor: "BitVec", validatorsAgainst: "BitVec", start: "u32", concludedAt: "Option", }, - /** Lookup688: polkadot_runtime_parachains::disputes::pallet::Error */ + /** Lookup694: polkadot_runtime_parachains::disputes::pallet::Error */ PolkadotRuntimeParachainsDisputesPalletError: { _enum: [ "DuplicateDisputeStatementSets", @@ -5582,7 +5611,7 @@ export default { "UnconfirmedDispute", ], }, - /** Lookup689: polkadot_primitives::v7::slashing::PendingSlashes */ + /** Lookup695: polkadot_primitives::v7::slashing::PendingSlashes */ PolkadotPrimitivesV7SlashingPendingSlashes: { _alias: { keys_: "keys", @@ -5590,7 +5619,7 @@ export default { keys_: "BTreeMap", kind: "PolkadotPrimitivesV7SlashingSlashingOffenceKind", }, - /** Lookup693: polkadot_runtime_parachains::disputes::slashing::pallet::Error */ + /** Lookup699: polkadot_runtime_parachains::disputes::slashing::pallet::Error */ PolkadotRuntimeParachainsDisputesSlashingPalletError: { _enum: [ "InvalidKeyOwnershipProof", @@ -5601,7 +5630,7 @@ export default { "DuplicateSlashingReport", ], }, - /** Lookup694: pallet_message_queue::BookState */ + /** Lookup700: pallet_message_queue::BookState */ PalletMessageQueueBookState: { _alias: { size_: "size", @@ -5613,12 +5642,12 @@ export default { messageCount: "u64", size_: "u64", }, - /** Lookup696: pallet_message_queue::Neighbours */ + /** Lookup702: pallet_message_queue::Neighbours */ PalletMessageQueueNeighbours: { prev: "PolkadotRuntimeParachainsInclusionAggregateMessageOrigin", next: "PolkadotRuntimeParachainsInclusionAggregateMessageOrigin", }, - /** Lookup698: pallet_message_queue::Page */ + /** Lookup704: pallet_message_queue::Page */ PalletMessageQueuePage: { remaining: "u32", remainingSize: "u32", @@ -5627,7 +5656,7 @@ export default { last: "u32", heap: "Bytes", }, - /** Lookup700: pallet_message_queue::pallet::Error */ + /** Lookup706: pallet_message_queue::pallet::Error */ PalletMessageQueueError: { _enum: [ "NotReapable", @@ -5641,38 +5670,38 @@ export default { "RecursiveDisallowed", ], }, - /** Lookup701: polkadot_runtime_parachains::assigner_on_demand::types::CoreAffinityCount */ + /** Lookup707: polkadot_runtime_parachains::assigner_on_demand::types::CoreAffinityCount */ PolkadotRuntimeParachainsAssignerOnDemandTypesCoreAffinityCount: { coreIndex: "u32", count: "u32", }, - /** Lookup702: polkadot_runtime_parachains::assigner_on_demand::types::QueueStatusType */ + /** Lookup708: polkadot_runtime_parachains::assigner_on_demand::types::QueueStatusType */ PolkadotRuntimeParachainsAssignerOnDemandTypesQueueStatusType: { traffic: "u128", nextIndex: "u32", smallestIndex: "u32", freedIndices: "BinaryHeapReverseQueueIndex", }, - /** Lookup704: BinaryHeap */ + /** Lookup710: BinaryHeap */ BinaryHeapReverseQueueIndex: "Vec", - /** Lookup707: BinaryHeap */ + /** Lookup713: BinaryHeap */ BinaryHeapEnqueuedOrder: "Vec", - /** Lookup708: polkadot_runtime_parachains::assigner_on_demand::types::EnqueuedOrder */ + /** Lookup714: polkadot_runtime_parachains::assigner_on_demand::types::EnqueuedOrder */ PolkadotRuntimeParachainsAssignerOnDemandTypesEnqueuedOrder: { paraId: "u32", idx: "u32", }, - /** Lookup712: polkadot_runtime_parachains::assigner_on_demand::pallet::Error */ + /** Lookup718: polkadot_runtime_parachains::assigner_on_demand::pallet::Error */ PolkadotRuntimeParachainsAssignerOnDemandPalletError: { _enum: ["QueueFull", "SpotPriceHigherThanMaxAmount"], }, - /** Lookup713: polkadot_runtime_common::paras_registrar::ParaInfo */ + /** Lookup719: polkadot_runtime_common::paras_registrar::ParaInfo */ PolkadotRuntimeCommonParasRegistrarParaInfo: { manager: "AccountId32", deposit: "u128", locked: "Option", }, - /** Lookup715: polkadot_runtime_common::paras_registrar::pallet::Error */ + /** Lookup721: polkadot_runtime_common::paras_registrar::pallet::Error */ PolkadotRuntimeCommonParasRegistrarPalletError: { _enum: [ "NotRegistered", @@ -5691,12 +5720,12 @@ export default { "CannotSwap", ], }, - /** Lookup716: pallet_utility::pallet::Error */ + /** Lookup722: pallet_utility::pallet::Error */ PalletUtilityError: { _enum: ["TooManyCalls"], }, /** - * Lookup718: pallet_identity::types::Registration> */ PalletIdentityRegistration: { @@ -5704,18 +5733,18 @@ export default { deposit: "u128", info: "PalletIdentityLegacyIdentityInfo", }, - /** Lookup727: pallet_identity::types::RegistrarInfo */ + /** Lookup733: pallet_identity::types::RegistrarInfo */ PalletIdentityRegistrarInfo: { account: "AccountId32", fee: "u128", fields: "u64", }, - /** Lookup729: pallet_identity::types::AuthorityProperties> */ + /** Lookup735: pallet_identity::types::AuthorityProperties> */ PalletIdentityAuthorityProperties: { suffix: "Bytes", allocation: "u32", }, - /** Lookup732: pallet_identity::pallet::Error */ + /** Lookup738: pallet_identity::pallet::Error */ PalletIdentityError: { _enum: [ "TooManySubAccounts", @@ -5747,7 +5776,7 @@ export default { ], }, /** - * Lookup735: pallet_scheduler::Scheduled, * BlockNumber, dancelight_runtime::OriginCaller, sp_core::crypto::AccountId32> */ @@ -5758,29 +5787,29 @@ export default { maybePeriodic: "Option<(u32,u32)>", origin: "DancelightRuntimeOriginCaller", }, - /** Lookup737: pallet_scheduler::RetryConfig */ + /** Lookup743: pallet_scheduler::RetryConfig */ PalletSchedulerRetryConfig: { totalRetries: "u8", remaining: "u8", period: "u32", }, - /** Lookup738: pallet_scheduler::pallet::Error */ + /** Lookup744: pallet_scheduler::pallet::Error */ PalletSchedulerError: { _enum: ["FailedToSchedule", "NotFound", "TargetBlockNumberInPast", "RescheduleNoChange", "Named"], }, - /** Lookup741: pallet_proxy::ProxyDefinition */ + /** Lookup747: pallet_proxy::ProxyDefinition */ PalletProxyProxyDefinition: { delegate: "AccountId32", proxyType: "DancelightRuntimeProxyType", delay: "u32", }, - /** Lookup745: pallet_proxy::Announcement */ + /** Lookup751: pallet_proxy::Announcement */ PalletProxyAnnouncement: { real: "AccountId32", callHash: "H256", height: "u32", }, - /** Lookup747: pallet_proxy::pallet::Error */ + /** Lookup753: pallet_proxy::pallet::Error */ PalletProxyError: { _enum: [ "TooMany", @@ -5793,14 +5822,14 @@ export default { "NoSelfProxy", ], }, - /** Lookup749: pallet_multisig::Multisig */ + /** Lookup755: pallet_multisig::Multisig */ PalletMultisigMultisig: { when: "PalletMultisigTimepoint", deposit: "u128", depositor: "AccountId32", approvals: "Vec", }, - /** Lookup751: pallet_multisig::pallet::Error */ + /** Lookup757: pallet_multisig::pallet::Error */ PalletMultisigError: { _enum: [ "MinimumThreshold", @@ -5819,7 +5848,7 @@ export default { "AlreadyStored", ], }, - /** Lookup752: pallet_preimage::OldRequestStatus */ + /** Lookup758: pallet_preimage::OldRequestStatus */ PalletPreimageOldRequestStatus: { _enum: { Unrequested: { @@ -5834,7 +5863,7 @@ export default { }, }, /** - * Lookup755: pallet_preimage::RequestStatus> */ PalletPreimageRequestStatus: { @@ -5850,7 +5879,7 @@ export default { }, }, }, - /** Lookup760: pallet_preimage::pallet::Error */ + /** Lookup766: pallet_preimage::pallet::Error */ PalletPreimageError: { _enum: [ "TooBig", @@ -5864,11 +5893,11 @@ export default { "NoCost", ], }, - /** Lookup761: pallet_asset_rate::pallet::Error */ + /** Lookup767: pallet_asset_rate::pallet::Error */ PalletAssetRateError: { _enum: ["UnknownAssetKind", "AlreadyExists", "Overflow"], }, - /** Lookup762: pallet_xcm::pallet::QueryStatus */ + /** Lookup768: pallet_xcm::pallet::QueryStatus */ PalletXcmQueryStatus: { _enum: { Pending: { @@ -5887,7 +5916,7 @@ export default { }, }, }, - /** Lookup766: xcm::VersionedResponse */ + /** Lookup772: xcm::VersionedResponse */ XcmVersionedResponse: { _enum: { __Unused0: "Null", @@ -5897,7 +5926,7 @@ export default { V4: "StagingXcmV4Response", }, }, - /** Lookup772: pallet_xcm::pallet::VersionMigrationStage */ + /** Lookup778: pallet_xcm::pallet::VersionMigrationStage */ PalletXcmVersionMigrationStage: { _enum: { MigrateSupportedVersion: "Null", @@ -5906,14 +5935,14 @@ export default { MigrateAndNotifyOldTargets: "Null", }, }, - /** Lookup774: pallet_xcm::pallet::RemoteLockedFungibleRecord */ + /** Lookup780: pallet_xcm::pallet::RemoteLockedFungibleRecord */ PalletXcmRemoteLockedFungibleRecord: { amount: "u128", owner: "XcmVersionedLocation", locker: "XcmVersionedLocation", consumers: "Vec<(Null,u128)>", }, - /** Lookup781: pallet_xcm::pallet::Error */ + /** Lookup787: pallet_xcm::pallet::Error */ PalletXcmError: { _enum: [ "Unreachable", @@ -5943,11 +5972,11 @@ export default { "LocalExecutionIncomplete", ], }, - /** Lookup782: pallet_migrations::pallet::Error */ + /** Lookup788: pallet_migrations::pallet::Error */ PalletMigrationsError: { _enum: ["PreimageMissing", "WrongUpperBound", "PreimageIsTooBig", "PreimageAlreadyExists"], }, - /** Lookup786: pallet_beefy::pallet::Error */ + /** Lookup792: pallet_beefy::pallet::Error */ PalletBeefyError: { _enum: [ "InvalidKeyOwnershipProof", @@ -5959,43 +5988,43 @@ export default { "InvalidConfiguration", ], }, - /** Lookup787: sp_consensus_beefy::mmr::BeefyAuthoritySet */ + /** Lookup793: sp_consensus_beefy::mmr::BeefyAuthoritySet */ SpConsensusBeefyMmrBeefyAuthoritySet: { id: "u64", len: "u32", keysetCommitment: "H256", }, - /** Lookup788: snowbridge_beacon_primitives::types::CompactBeaconState */ + /** Lookup794: snowbridge_beacon_primitives::types::CompactBeaconState */ SnowbridgeBeaconPrimitivesCompactBeaconState: { slot: "Compact", blockRootsRoot: "H256", }, - /** Lookup789: snowbridge_beacon_primitives::types::SyncCommitteePrepared */ + /** Lookup795: snowbridge_beacon_primitives::types::SyncCommitteePrepared */ SnowbridgeBeaconPrimitivesSyncCommitteePrepared: { root: "H256", - pubkeys: "[Lookup791;512]", + pubkeys: "[Lookup797;512]", aggregatePubkey: "SnowbridgeMilagroBlsKeysPublicKey", }, - /** Lookup791: snowbridge_milagro_bls::keys::PublicKey */ + /** Lookup797: snowbridge_milagro_bls::keys::PublicKey */ SnowbridgeMilagroBlsKeysPublicKey: { point: "SnowbridgeAmclBls381Ecp", }, - /** Lookup792: snowbridge_amcl::bls381::ecp::ECP */ + /** Lookup798: snowbridge_amcl::bls381::ecp::ECP */ SnowbridgeAmclBls381Ecp: { x: "SnowbridgeAmclBls381Fp", y: "SnowbridgeAmclBls381Fp", z: "SnowbridgeAmclBls381Fp", }, - /** Lookup793: snowbridge_amcl::bls381::fp::FP */ + /** Lookup799: snowbridge_amcl::bls381::fp::FP */ SnowbridgeAmclBls381Fp: { x: "SnowbridgeAmclBls381Big", xes: "i32", }, - /** Lookup794: snowbridge_amcl::bls381::big::Big */ + /** Lookup800: snowbridge_amcl::bls381::big::Big */ SnowbridgeAmclBls381Big: { w: "[i32;14]", }, - /** Lookup797: snowbridge_beacon_primitives::types::ForkVersions */ + /** Lookup803: snowbridge_beacon_primitives::types::ForkVersions */ SnowbridgeBeaconPrimitivesForkVersions: { genesis: "SnowbridgeBeaconPrimitivesFork", altair: "SnowbridgeBeaconPrimitivesFork", @@ -6003,12 +6032,12 @@ export default { capella: "SnowbridgeBeaconPrimitivesFork", deneb: "SnowbridgeBeaconPrimitivesFork", }, - /** Lookup798: snowbridge_beacon_primitives::types::Fork */ + /** Lookup804: snowbridge_beacon_primitives::types::Fork */ SnowbridgeBeaconPrimitivesFork: { version: "[u8;4]", epoch: "u64", }, - /** Lookup799: snowbridge_pallet_ethereum_client::pallet::Error */ + /** Lookup805: snowbridge_pallet_ethereum_client::pallet::Error */ SnowbridgePalletEthereumClientError: { _enum: { SkippedSyncCommitteePeriod: "Null", @@ -6038,11 +6067,11 @@ export default { Halted: "Null", }, }, - /** Lookup800: snowbridge_beacon_primitives::bls::BlsError */ + /** Lookup806: snowbridge_beacon_primitives::bls::BlsError */ SnowbridgeBeaconPrimitivesBlsBlsError: { _enum: ["InvalidSignature", "InvalidPublicKey", "InvalidAggregatePublicKeys", "SignatureVerificationFailed"], }, - /** Lookup801: polkadot_runtime_common::paras_sudo_wrapper::pallet::Error */ + /** Lookup807: polkadot_runtime_common::paras_sudo_wrapper::pallet::Error */ PolkadotRuntimeCommonParasSudoWrapperPalletError: { _enum: [ "ParaDoesntExist", @@ -6056,32 +6085,32 @@ export default { "TooManyCores", ], }, - /** Lookup802: pallet_sudo::pallet::Error */ + /** Lookup808: pallet_sudo::pallet::Error */ PalletSudoError: { _enum: ["RequireSudo"], }, - /** Lookup805: frame_system::extensions::check_non_zero_sender::CheckNonZeroSender */ + /** Lookup811: frame_system::extensions::check_non_zero_sender::CheckNonZeroSender */ FrameSystemExtensionsCheckNonZeroSender: "Null", - /** Lookup806: frame_system::extensions::check_spec_version::CheckSpecVersion */ + /** Lookup812: frame_system::extensions::check_spec_version::CheckSpecVersion */ FrameSystemExtensionsCheckSpecVersion: "Null", - /** Lookup807: frame_system::extensions::check_tx_version::CheckTxVersion */ + /** Lookup813: frame_system::extensions::check_tx_version::CheckTxVersion */ FrameSystemExtensionsCheckTxVersion: "Null", - /** Lookup808: frame_system::extensions::check_genesis::CheckGenesis */ + /** Lookup814: frame_system::extensions::check_genesis::CheckGenesis */ FrameSystemExtensionsCheckGenesis: "Null", - /** Lookup811: frame_system::extensions::check_nonce::CheckNonce */ + /** Lookup817: frame_system::extensions::check_nonce::CheckNonce */ FrameSystemExtensionsCheckNonce: "Compact", - /** Lookup812: frame_system::extensions::check_weight::CheckWeight */ + /** Lookup818: frame_system::extensions::check_weight::CheckWeight */ FrameSystemExtensionsCheckWeight: "Null", - /** Lookup813: pallet_transaction_payment::ChargeTransactionPayment */ + /** Lookup819: pallet_transaction_payment::ChargeTransactionPayment */ PalletTransactionPaymentChargeTransactionPayment: "Compact", - /** Lookup814: frame_metadata_hash_extension::CheckMetadataHash */ + /** Lookup820: frame_metadata_hash_extension::CheckMetadataHash */ FrameMetadataHashExtensionCheckMetadataHash: { mode: "FrameMetadataHashExtensionMode", }, - /** Lookup815: frame_metadata_hash_extension::Mode */ + /** Lookup821: frame_metadata_hash_extension::Mode */ FrameMetadataHashExtensionMode: { _enum: ["Disabled", "Enabled"], }, - /** Lookup816: dancelight_runtime::Runtime */ + /** Lookup822: dancelight_runtime::Runtime */ DancelightRuntimeRuntime: "Null", }; diff --git a/typescript-api/src/dancelight/interfaces/registry.ts b/typescript-api/src/dancelight/interfaces/registry.ts index f16d3482e..69cf32fa3 100644 --- a/typescript-api/src/dancelight/interfaces/registry.ts +++ b/typescript-api/src/dancelight/interfaces/registry.ts @@ -26,8 +26,6 @@ import type { DancelightRuntimeRuntimeParametersKey, DancelightRuntimeRuntimeParametersValue, DancelightRuntimeSessionKeys, - DancelightRuntimeValidatorManagerPalletCall, - DancelightRuntimeValidatorManagerPalletEvent, DpCollatorAssignmentAssignedCollatorsAccountId32, DpCollatorAssignmentAssignedCollatorsPublic, DpContainerChainGenesisDataContainerChainGenesisData, @@ -115,6 +113,10 @@ import type { PalletDataPreserversProfile, PalletDataPreserversProfileMode, PalletDataPreserversRegisteredProfile, + PalletExternalValidatorsCall, + PalletExternalValidatorsError, + PalletExternalValidatorsEvent, + PalletExternalValidatorsForcing, PalletGrandpaCall, PalletGrandpaError, PalletGrandpaEvent, @@ -403,6 +405,7 @@ import type { StagingXcmV4Response, StagingXcmV4TraitsOutcome, StagingXcmV4Xcm, + TpTraitsActiveEraInfo, TpTraitsContainerChainBlockInfo, TpTraitsParathreadParams, TpTraitsSlotFrequency, @@ -478,8 +481,6 @@ declare module "@polkadot/types/types/registry" { DancelightRuntimeRuntimeParametersKey: DancelightRuntimeRuntimeParametersKey; DancelightRuntimeRuntimeParametersValue: DancelightRuntimeRuntimeParametersValue; DancelightRuntimeSessionKeys: DancelightRuntimeSessionKeys; - DancelightRuntimeValidatorManagerPalletCall: DancelightRuntimeValidatorManagerPalletCall; - DancelightRuntimeValidatorManagerPalletEvent: DancelightRuntimeValidatorManagerPalletEvent; DpCollatorAssignmentAssignedCollatorsAccountId32: DpCollatorAssignmentAssignedCollatorsAccountId32; DpCollatorAssignmentAssignedCollatorsPublic: DpCollatorAssignmentAssignedCollatorsPublic; DpContainerChainGenesisDataContainerChainGenesisData: DpContainerChainGenesisDataContainerChainGenesisData; @@ -567,6 +568,10 @@ declare module "@polkadot/types/types/registry" { PalletDataPreserversProfile: PalletDataPreserversProfile; PalletDataPreserversProfileMode: PalletDataPreserversProfileMode; PalletDataPreserversRegisteredProfile: PalletDataPreserversRegisteredProfile; + PalletExternalValidatorsCall: PalletExternalValidatorsCall; + PalletExternalValidatorsError: PalletExternalValidatorsError; + PalletExternalValidatorsEvent: PalletExternalValidatorsEvent; + PalletExternalValidatorsForcing: PalletExternalValidatorsForcing; PalletGrandpaCall: PalletGrandpaCall; PalletGrandpaError: PalletGrandpaError; PalletGrandpaEvent: PalletGrandpaEvent; @@ -855,6 +860,7 @@ declare module "@polkadot/types/types/registry" { StagingXcmV4Response: StagingXcmV4Response; StagingXcmV4TraitsOutcome: StagingXcmV4TraitsOutcome; StagingXcmV4Xcm: StagingXcmV4Xcm; + TpTraitsActiveEraInfo: TpTraitsActiveEraInfo; TpTraitsContainerChainBlockInfo: TpTraitsContainerChainBlockInfo; TpTraitsParathreadParams: TpTraitsParathreadParams; TpTraitsSlotFrequency: TpTraitsSlotFrequency; diff --git a/typescript-api/src/dancelight/interfaces/types-lookup.ts b/typescript-api/src/dancelight/interfaces/types-lookup.ts index 5e17f3fae..ff5f90d32 100644 --- a/typescript-api/src/dancelight/interfaces/types-lookup.ts +++ b/typescript-api/src/dancelight/interfaces/types-lookup.ts @@ -491,10 +491,6 @@ declare module "@polkadot/types/lookup" { /** @name PalletInvulnerablesEvent (46) */ interface PalletInvulnerablesEvent extends Enum { - readonly isNewInvulnerables: boolean; - readonly asNewInvulnerables: { - readonly invulnerables: Vec; - } & Struct; readonly isInvulnerableAdded: boolean; readonly asInvulnerableAdded: { readonly accountId: AccountId32; @@ -503,14 +499,10 @@ declare module "@polkadot/types/lookup" { readonly asInvulnerableRemoved: { readonly accountId: AccountId32; } & Struct; - readonly isInvalidInvulnerableSkipped: boolean; - readonly asInvalidInvulnerableSkipped: { - readonly accountId: AccountId32; - } & Struct; - readonly type: "NewInvulnerables" | "InvulnerableAdded" | "InvulnerableRemoved" | "InvalidInvulnerableSkipped"; + readonly type: "InvulnerableAdded" | "InvulnerableRemoved"; } - /** @name PalletCollatorAssignmentEvent (48) */ + /** @name PalletCollatorAssignmentEvent (47) */ interface PalletCollatorAssignmentEvent extends Enum { readonly isNewPendingAssignment: boolean; readonly asNewPendingAssignment: { @@ -521,7 +513,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewPendingAssignment"; } - /** @name PalletAuthorNotingEvent (49) */ + /** @name PalletAuthorNotingEvent (48) */ interface PalletAuthorNotingEvent extends Enum { readonly isLatestAuthorChanged: boolean; readonly asLatestAuthorChanged: { @@ -537,7 +529,7 @@ declare module "@polkadot/types/lookup" { readonly type: "LatestAuthorChanged" | "RemovedAuthorData"; } - /** @name PalletServicesPaymentEvent (51) */ + /** @name PalletServicesPaymentEvent (50) */ interface PalletServicesPaymentEvent extends Enum { readonly isCreditsPurchased: boolean; readonly asCreditsPurchased: { @@ -592,7 +584,7 @@ declare module "@polkadot/types/lookup" { | "CollatorAssignmentCreditsSet"; } - /** @name PalletDataPreserversEvent (54) */ + /** @name PalletDataPreserversEvent (53) */ interface PalletDataPreserversEvent extends Enum { readonly isBootNodesChanged: boolean; readonly asBootNodesChanged: { @@ -634,7 +626,37 @@ declare module "@polkadot/types/lookup" { | "AssignmentStopped"; } - /** @name PalletSessionEvent (55) */ + /** @name PalletExternalValidatorsEvent (54) */ + interface PalletExternalValidatorsEvent extends Enum { + readonly isWhitelistedValidatorAdded: boolean; + readonly asWhitelistedValidatorAdded: { + readonly accountId: AccountId32; + } & Struct; + readonly isWhitelistedValidatorRemoved: boolean; + readonly asWhitelistedValidatorRemoved: { + readonly accountId: AccountId32; + } & Struct; + readonly isNewEra: boolean; + readonly asNewEra: { + readonly era: u32; + } & Struct; + readonly isForceEra: boolean; + readonly asForceEra: { + readonly mode: PalletExternalValidatorsForcing; + } & Struct; + readonly type: "WhitelistedValidatorAdded" | "WhitelistedValidatorRemoved" | "NewEra" | "ForceEra"; + } + + /** @name PalletExternalValidatorsForcing (55) */ + interface PalletExternalValidatorsForcing extends Enum { + readonly isNotForcing: boolean; + readonly isForceNew: boolean; + readonly isForceNone: boolean; + readonly isForceAlways: boolean; + readonly type: "NotForcing" | "ForceNew" | "ForceNone" | "ForceAlways"; + } + + /** @name PalletSessionEvent (56) */ interface PalletSessionEvent extends Enum { readonly isNewSession: boolean; readonly asNewSession: { @@ -643,7 +665,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewSession"; } - /** @name PalletGrandpaEvent (56) */ + /** @name PalletGrandpaEvent (57) */ interface PalletGrandpaEvent extends Enum { readonly isNewAuthorities: boolean; readonly asNewAuthorities: { @@ -654,10 +676,10 @@ declare module "@polkadot/types/lookup" { readonly type: "NewAuthorities" | "Paused" | "Resumed"; } - /** @name SpConsensusGrandpaAppPublic (59) */ + /** @name SpConsensusGrandpaAppPublic (60) */ interface SpConsensusGrandpaAppPublic extends U8aFixed {} - /** @name PalletInflationRewardsEvent (60) */ + /** @name PalletInflationRewardsEvent (61) */ interface PalletInflationRewardsEvent extends Enum { readonly isRewardedOrchestrator: boolean; readonly asRewardedOrchestrator: { @@ -673,7 +695,7 @@ declare module "@polkadot/types/lookup" { readonly type: "RewardedOrchestrator" | "RewardedContainer"; } - /** @name PalletTreasuryEvent (61) */ + /** @name PalletTreasuryEvent (62) */ interface PalletTreasuryEvent extends Enum { readonly isSpending: boolean; readonly asSpending: { @@ -750,7 +772,7 @@ declare module "@polkadot/types/lookup" { | "SpendProcessed"; } - /** @name PalletConvictionVotingEvent (63) */ + /** @name PalletConvictionVotingEvent (64) */ interface PalletConvictionVotingEvent extends Enum { readonly isDelegated: boolean; readonly asDelegated: ITuple<[AccountId32, AccountId32]>; @@ -759,7 +781,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Delegated" | "Undelegated"; } - /** @name PalletReferendaEvent (64) */ + /** @name PalletReferendaEvent (65) */ interface PalletReferendaEvent extends Enum { readonly isSubmitted: boolean; readonly asSubmitted: { @@ -863,7 +885,7 @@ declare module "@polkadot/types/lookup" { | "MetadataCleared"; } - /** @name FrameSupportPreimagesBounded (66) */ + /** @name FrameSupportPreimagesBounded (67) */ interface FrameSupportPreimagesBounded extends Enum { readonly isLegacy: boolean; readonly asLegacy: { @@ -879,7 +901,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Legacy" | "Inline" | "Lookup"; } - /** @name FrameSystemCall (68) */ + /** @name FrameSystemCall (69) */ interface FrameSystemCall extends Enum { readonly isRemark: boolean; readonly asRemark: { @@ -940,7 +962,7 @@ declare module "@polkadot/types/lookup" { | "ApplyAuthorizedUpgrade"; } - /** @name PalletBabeCall (72) */ + /** @name PalletBabeCall (73) */ interface PalletBabeCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -959,7 +981,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ReportEquivocation" | "ReportEquivocationUnsigned" | "PlanConfigChange"; } - /** @name SpConsensusSlotsEquivocationProof (73) */ + /** @name SpConsensusSlotsEquivocationProof (74) */ interface SpConsensusSlotsEquivocationProof extends Struct { readonly offender: SpConsensusBabeAppPublic; readonly slot: u64; @@ -967,7 +989,7 @@ declare module "@polkadot/types/lookup" { readonly secondHeader: SpRuntimeHeader; } - /** @name SpRuntimeHeader (74) */ + /** @name SpRuntimeHeader (75) */ interface SpRuntimeHeader extends Struct { readonly parentHash: H256; readonly number: Compact; @@ -976,17 +998,17 @@ declare module "@polkadot/types/lookup" { readonly digest: SpRuntimeDigest; } - /** @name SpConsensusBabeAppPublic (76) */ + /** @name SpConsensusBabeAppPublic (77) */ interface SpConsensusBabeAppPublic extends U8aFixed {} - /** @name SpSessionMembershipProof (77) */ + /** @name SpSessionMembershipProof (78) */ interface SpSessionMembershipProof extends Struct { readonly session: u32; readonly trieNodes: Vec; readonly validatorCount: u32; } - /** @name SpConsensusBabeDigestsNextConfigDescriptor (78) */ + /** @name SpConsensusBabeDigestsNextConfigDescriptor (79) */ interface SpConsensusBabeDigestsNextConfigDescriptor extends Enum { readonly isV1: boolean; readonly asV1: { @@ -996,7 +1018,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V1"; } - /** @name SpConsensusBabeAllowedSlots (80) */ + /** @name SpConsensusBabeAllowedSlots (81) */ interface SpConsensusBabeAllowedSlots extends Enum { readonly isPrimarySlots: boolean; readonly isPrimaryAndSecondaryPlainSlots: boolean; @@ -1004,7 +1026,7 @@ declare module "@polkadot/types/lookup" { readonly type: "PrimarySlots" | "PrimaryAndSecondaryPlainSlots" | "PrimaryAndSecondaryVRFSlots"; } - /** @name PalletTimestampCall (81) */ + /** @name PalletTimestampCall (82) */ interface PalletTimestampCall extends Enum { readonly isSet: boolean; readonly asSet: { @@ -1013,7 +1035,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Set"; } - /** @name PalletBalancesCall (82) */ + /** @name PalletBalancesCall (83) */ interface PalletBalancesCall extends Enum { readonly isTransferAllowDeath: boolean; readonly asTransferAllowDeath: { @@ -1072,14 +1094,14 @@ declare module "@polkadot/types/lookup" { | "Burn"; } - /** @name PalletBalancesAdjustmentDirection (87) */ + /** @name PalletBalancesAdjustmentDirection (89) */ interface PalletBalancesAdjustmentDirection extends Enum { readonly isIncrease: boolean; readonly isDecrease: boolean; readonly type: "Increase" | "Decrease"; } - /** @name PalletParametersCall (88) */ + /** @name PalletParametersCall (90) */ interface PalletParametersCall extends Enum { readonly isSetParameter: boolean; readonly asSetParameter: { @@ -1088,14 +1110,14 @@ declare module "@polkadot/types/lookup" { readonly type: "SetParameter"; } - /** @name DancelightRuntimeRuntimeParameters (89) */ + /** @name DancelightRuntimeRuntimeParameters (91) */ interface DancelightRuntimeRuntimeParameters extends Enum { readonly isPreimage: boolean; readonly asPreimage: DancelightRuntimeDynamicParamsPreimageParameters; readonly type: "Preimage"; } - /** @name DancelightRuntimeDynamicParamsPreimageParameters (90) */ + /** @name DancelightRuntimeDynamicParamsPreimageParameters (92) */ interface DancelightRuntimeDynamicParamsPreimageParameters extends Enum { readonly isBaseDeposit: boolean; readonly asBaseDeposit: ITuple<[DancelightRuntimeDynamicParamsPreimageBaseDeposit, Option]>; @@ -1104,7 +1126,7 @@ declare module "@polkadot/types/lookup" { readonly type: "BaseDeposit" | "ByteDeposit"; } - /** @name PalletRegistrarCall (91) */ + /** @name PalletRegistrarCall (93) */ interface PalletRegistrarCall extends Enum { readonly isRegister: boolean; readonly asRegister: { @@ -1174,7 +1196,7 @@ declare module "@polkadot/types/lookup" { | "DeregisterWithRelayProof"; } - /** @name DpContainerChainGenesisDataContainerChainGenesisData (92) */ + /** @name DpContainerChainGenesisDataContainerChainGenesisData (94) */ interface DpContainerChainGenesisDataContainerChainGenesisData extends Struct { readonly storage: Vec; readonly name: Bytes; @@ -1184,42 +1206,42 @@ declare module "@polkadot/types/lookup" { readonly properties: DpContainerChainGenesisDataProperties; } - /** @name DpContainerChainGenesisDataContainerChainGenesisDataItem (94) */ + /** @name DpContainerChainGenesisDataContainerChainGenesisDataItem (96) */ interface DpContainerChainGenesisDataContainerChainGenesisDataItem extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name DpContainerChainGenesisDataProperties (96) */ + /** @name DpContainerChainGenesisDataProperties (98) */ interface DpContainerChainGenesisDataProperties extends Struct { readonly tokenMetadata: DpContainerChainGenesisDataTokenMetadata; readonly isEthereum: bool; } - /** @name DpContainerChainGenesisDataTokenMetadata (97) */ + /** @name DpContainerChainGenesisDataTokenMetadata (99) */ interface DpContainerChainGenesisDataTokenMetadata extends Struct { readonly tokenSymbol: Bytes; readonly ss58Format: u32; readonly tokenDecimals: u32; } - /** @name TpTraitsSlotFrequency (101) */ + /** @name TpTraitsSlotFrequency (103) */ interface TpTraitsSlotFrequency extends Struct { readonly min: u32; readonly max: u32; } - /** @name TpTraitsParathreadParams (103) */ + /** @name TpTraitsParathreadParams (105) */ interface TpTraitsParathreadParams extends Struct { readonly slotFrequency: TpTraitsSlotFrequency; } - /** @name SpTrieStorageProof (104) */ + /** @name SpTrieStorageProof (106) */ interface SpTrieStorageProof extends Struct { readonly trieNodes: BTreeSet; } - /** @name SpRuntimeMultiSignature (106) */ + /** @name SpRuntimeMultiSignature (108) */ interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: U8aFixed; @@ -1230,7 +1252,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ed25519" | "Sr25519" | "Ecdsa"; } - /** @name PalletConfigurationCall (109) */ + /** @name PalletConfigurationCall (111) */ interface PalletConfigurationCall extends Enum { readonly isSetMaxCollators: boolean; readonly asSetMaxCollators: { @@ -1285,7 +1307,7 @@ declare module "@polkadot/types/lookup" { | "SetBypassConsistencyCheck"; } - /** @name PalletInvulnerablesCall (112) */ + /** @name PalletInvulnerablesCall (114) */ interface PalletInvulnerablesCall extends Enum { readonly isAddInvulnerable: boolean; readonly asAddInvulnerable: { @@ -1298,13 +1320,13 @@ declare module "@polkadot/types/lookup" { readonly type: "AddInvulnerable" | "RemoveInvulnerable"; } - /** @name PalletCollatorAssignmentCall (113) */ + /** @name PalletCollatorAssignmentCall (115) */ type PalletCollatorAssignmentCall = Null; - /** @name PalletAuthorityAssignmentCall (114) */ + /** @name PalletAuthorityAssignmentCall (116) */ type PalletAuthorityAssignmentCall = Null; - /** @name PalletAuthorNotingCall (115) */ + /** @name PalletAuthorNotingCall (117) */ interface PalletAuthorNotingCall extends Enum { readonly isSetLatestAuthorData: boolean; readonly asSetLatestAuthorData: { @@ -1324,7 +1346,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SetLatestAuthorData" | "SetAuthor" | "KillAuthorData"; } - /** @name PalletServicesPaymentCall (116) */ + /** @name PalletServicesPaymentCall (118) */ interface PalletServicesPaymentCall extends Enum { readonly isPurchaseCredits: boolean; readonly asPurchaseCredits: { @@ -1371,7 +1393,7 @@ declare module "@polkadot/types/lookup" { | "SetMaxTip"; } - /** @name PalletDataPreserversCall (117) */ + /** @name PalletDataPreserversCall (119) */ interface PalletDataPreserversCall extends Enum { readonly isCreateProfile: boolean; readonly asCreateProfile: { @@ -1429,7 +1451,7 @@ declare module "@polkadot/types/lookup" { | "ForceStartAssignment"; } - /** @name PalletDataPreserversProfile (118) */ + /** @name PalletDataPreserversProfile (120) */ interface PalletDataPreserversProfile extends Struct { readonly url: Bytes; readonly paraIds: PalletDataPreserversParaIdsFilter; @@ -1437,7 +1459,7 @@ declare module "@polkadot/types/lookup" { readonly assignmentRequest: DancelightRuntimePreserversAssignmentPaymentRequest; } - /** @name PalletDataPreserversParaIdsFilter (120) */ + /** @name PalletDataPreserversParaIdsFilter (122) */ interface PalletDataPreserversParaIdsFilter extends Enum { readonly isAnyParaId: boolean; readonly isWhitelist: boolean; @@ -1447,7 +1469,7 @@ declare module "@polkadot/types/lookup" { readonly type: "AnyParaId" | "Whitelist" | "Blacklist"; } - /** @name PalletDataPreserversProfileMode (124) */ + /** @name PalletDataPreserversProfileMode (126) */ interface PalletDataPreserversProfileMode extends Enum { readonly isBootnode: boolean; readonly isRpc: boolean; @@ -1457,25 +1479,46 @@ declare module "@polkadot/types/lookup" { readonly type: "Bootnode" | "Rpc"; } - /** @name DancelightRuntimePreserversAssignmentPaymentRequest (125) */ + /** @name DancelightRuntimePreserversAssignmentPaymentRequest (127) */ interface DancelightRuntimePreserversAssignmentPaymentRequest extends Enum { readonly isFree: boolean; readonly type: "Free"; } - /** @name DancelightRuntimePreserversAssignmentPaymentExtra (126) */ + /** @name DancelightRuntimePreserversAssignmentPaymentExtra (128) */ interface DancelightRuntimePreserversAssignmentPaymentExtra extends Enum { readonly isFree: boolean; readonly type: "Free"; } - /** @name DancelightRuntimePreserversAssignmentPaymentWitness (127) */ + /** @name DancelightRuntimePreserversAssignmentPaymentWitness (129) */ interface DancelightRuntimePreserversAssignmentPaymentWitness extends Enum { readonly isFree: boolean; readonly type: "Free"; } - /** @name PalletSessionCall (128) */ + /** @name PalletExternalValidatorsCall (130) */ + interface PalletExternalValidatorsCall extends Enum { + readonly isSkipExternalValidators: boolean; + readonly asSkipExternalValidators: { + readonly skip: bool; + } & Struct; + readonly isAddWhitelisted: boolean; + readonly asAddWhitelisted: { + readonly who: AccountId32; + } & Struct; + readonly isRemoveWhitelisted: boolean; + readonly asRemoveWhitelisted: { + readonly who: AccountId32; + } & Struct; + readonly isForceEra: boolean; + readonly asForceEra: { + readonly mode: PalletExternalValidatorsForcing; + } & Struct; + readonly type: "SkipExternalValidators" | "AddWhitelisted" | "RemoveWhitelisted" | "ForceEra"; + } + + /** @name PalletSessionCall (131) */ interface PalletSessionCall extends Enum { readonly isSetKeys: boolean; readonly asSetKeys: { @@ -1486,7 +1529,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SetKeys" | "PurgeKeys"; } - /** @name DancelightRuntimeSessionKeys (129) */ + /** @name DancelightRuntimeSessionKeys (132) */ interface DancelightRuntimeSessionKeys extends Struct { readonly grandpa: SpConsensusGrandpaAppPublic; readonly babe: SpConsensusBabeAppPublic; @@ -1497,22 +1540,22 @@ declare module "@polkadot/types/lookup" { readonly nimbus: NimbusPrimitivesNimbusCryptoPublic; } - /** @name PolkadotPrimitivesV7ValidatorAppPublic (130) */ + /** @name PolkadotPrimitivesV7ValidatorAppPublic (133) */ interface PolkadotPrimitivesV7ValidatorAppPublic extends U8aFixed {} - /** @name PolkadotPrimitivesV7AssignmentAppPublic (131) */ + /** @name PolkadotPrimitivesV7AssignmentAppPublic (134) */ interface PolkadotPrimitivesV7AssignmentAppPublic extends U8aFixed {} - /** @name SpAuthorityDiscoveryAppPublic (132) */ + /** @name SpAuthorityDiscoveryAppPublic (135) */ interface SpAuthorityDiscoveryAppPublic extends U8aFixed {} - /** @name SpConsensusBeefyEcdsaCryptoPublic (133) */ + /** @name SpConsensusBeefyEcdsaCryptoPublic (136) */ interface SpConsensusBeefyEcdsaCryptoPublic extends U8aFixed {} - /** @name NimbusPrimitivesNimbusCryptoPublic (135) */ + /** @name NimbusPrimitivesNimbusCryptoPublic (138) */ interface NimbusPrimitivesNimbusCryptoPublic extends U8aFixed {} - /** @name PalletGrandpaCall (136) */ + /** @name PalletGrandpaCall (139) */ interface PalletGrandpaCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -1532,13 +1575,13 @@ declare module "@polkadot/types/lookup" { readonly type: "ReportEquivocation" | "ReportEquivocationUnsigned" | "NoteStalled"; } - /** @name SpConsensusGrandpaEquivocationProof (137) */ + /** @name SpConsensusGrandpaEquivocationProof (140) */ interface SpConsensusGrandpaEquivocationProof extends Struct { readonly setId: u64; readonly equivocation: SpConsensusGrandpaEquivocation; } - /** @name SpConsensusGrandpaEquivocation (138) */ + /** @name SpConsensusGrandpaEquivocation (141) */ interface SpConsensusGrandpaEquivocation extends Enum { readonly isPrevote: boolean; readonly asPrevote: FinalityGrandpaEquivocationPrevote; @@ -1547,7 +1590,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Prevote" | "Precommit"; } - /** @name FinalityGrandpaEquivocationPrevote (139) */ + /** @name FinalityGrandpaEquivocationPrevote (142) */ interface FinalityGrandpaEquivocationPrevote extends Struct { readonly roundNumber: u64; readonly identity: SpConsensusGrandpaAppPublic; @@ -1555,16 +1598,16 @@ declare module "@polkadot/types/lookup" { readonly second: ITuple<[FinalityGrandpaPrevote, SpConsensusGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrevote (140) */ + /** @name FinalityGrandpaPrevote (143) */ interface FinalityGrandpaPrevote extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpConsensusGrandpaAppSignature (141) */ + /** @name SpConsensusGrandpaAppSignature (144) */ interface SpConsensusGrandpaAppSignature extends U8aFixed {} - /** @name FinalityGrandpaEquivocationPrecommit (143) */ + /** @name FinalityGrandpaEquivocationPrecommit (146) */ interface FinalityGrandpaEquivocationPrecommit extends Struct { readonly roundNumber: u64; readonly identity: SpConsensusGrandpaAppPublic; @@ -1572,13 +1615,13 @@ declare module "@polkadot/types/lookup" { readonly second: ITuple<[FinalityGrandpaPrecommit, SpConsensusGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrecommit (144) */ + /** @name FinalityGrandpaPrecommit (147) */ interface FinalityGrandpaPrecommit extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name PalletTreasuryCall (146) */ + /** @name PalletTreasuryCall (149) */ interface PalletTreasuryCall extends Enum { readonly isSpendLocal: boolean; readonly asSpendLocal: { @@ -1611,7 +1654,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SpendLocal" | "RemoveApproval" | "Spend" | "Payout" | "CheckStatus" | "VoidSpend"; } - /** @name PalletConvictionVotingCall (148) */ + /** @name PalletConvictionVotingCall (151) */ interface PalletConvictionVotingCall extends Enum { readonly isVote: boolean; readonly asVote: { @@ -1648,7 +1691,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Vote" | "Delegate" | "Undelegate" | "Unlock" | "RemoveVote" | "RemoveOtherVote"; } - /** @name PalletConvictionVotingVoteAccountVote (149) */ + /** @name PalletConvictionVotingVoteAccountVote (152) */ interface PalletConvictionVotingVoteAccountVote extends Enum { readonly isStandard: boolean; readonly asStandard: { @@ -1669,7 +1712,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Standard" | "Split" | "SplitAbstain"; } - /** @name PalletConvictionVotingConviction (151) */ + /** @name PalletConvictionVotingConviction (154) */ interface PalletConvictionVotingConviction extends Enum { readonly isNone: boolean; readonly isLocked1x: boolean; @@ -1681,7 +1724,7 @@ declare module "@polkadot/types/lookup" { readonly type: "None" | "Locked1x" | "Locked2x" | "Locked3x" | "Locked4x" | "Locked5x" | "Locked6x"; } - /** @name PalletReferendaCall (153) */ + /** @name PalletReferendaCall (156) */ interface PalletReferendaCall extends Enum { readonly isSubmit: boolean; readonly asSubmit: { @@ -1734,7 +1777,7 @@ declare module "@polkadot/types/lookup" { | "SetMetadata"; } - /** @name DancelightRuntimeOriginCaller (154) */ + /** @name DancelightRuntimeOriginCaller (157) */ interface DancelightRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSupportDispatchRawOrigin; @@ -1748,7 +1791,7 @@ declare module "@polkadot/types/lookup" { readonly type: "System" | "Void" | "Origins" | "ParachainsOrigin" | "XcmPallet"; } - /** @name FrameSupportDispatchRawOrigin (155) */ + /** @name FrameSupportDispatchRawOrigin (158) */ interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -1757,7 +1800,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Root" | "Signed" | "None"; } - /** @name DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin (156) */ + /** @name DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin (159) */ interface DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin extends Enum { readonly isStakingAdmin: boolean; readonly isTreasurer: boolean; @@ -1816,14 +1859,14 @@ declare module "@polkadot/types/lookup" { | "Fellowship9Dan"; } - /** @name PolkadotRuntimeParachainsOriginPalletOrigin (157) */ + /** @name PolkadotRuntimeParachainsOriginPalletOrigin (160) */ interface PolkadotRuntimeParachainsOriginPalletOrigin extends Enum { readonly isParachain: boolean; readonly asParachain: u32; readonly type: "Parachain"; } - /** @name PalletXcmOrigin (158) */ + /** @name PalletXcmOrigin (161) */ interface PalletXcmOrigin extends Enum { readonly isXcm: boolean; readonly asXcm: StagingXcmV4Location; @@ -1832,13 +1875,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Xcm" | "Response"; } - /** @name StagingXcmV4Location (159) */ + /** @name StagingXcmV4Location (162) */ interface StagingXcmV4Location extends Struct { readonly parents: u8; readonly interior: StagingXcmV4Junctions; } - /** @name StagingXcmV4Junctions (160) */ + /** @name StagingXcmV4Junctions (163) */ interface StagingXcmV4Junctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -1860,7 +1903,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name StagingXcmV4Junction (162) */ + /** @name StagingXcmV4Junction (165) */ interface StagingXcmV4Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -1909,7 +1952,7 @@ declare module "@polkadot/types/lookup" { | "GlobalConsensus"; } - /** @name StagingXcmV4JunctionNetworkId (164) */ + /** @name StagingXcmV4JunctionNetworkId (167) */ interface StagingXcmV4JunctionNetworkId extends Enum { readonly isByGenesis: boolean; readonly asByGenesis: U8aFixed; @@ -1944,7 +1987,7 @@ declare module "@polkadot/types/lookup" { | "PolkadotBulletin"; } - /** @name XcmV3JunctionBodyId (165) */ + /** @name XcmV3JunctionBodyId (168) */ interface XcmV3JunctionBodyId extends Enum { readonly isUnit: boolean; readonly isMoniker: boolean; @@ -1971,7 +2014,7 @@ declare module "@polkadot/types/lookup" { | "Treasury"; } - /** @name XcmV3JunctionBodyPart (166) */ + /** @name XcmV3JunctionBodyPart (169) */ interface XcmV3JunctionBodyPart extends Enum { readonly isVoice: boolean; readonly isMembers: boolean; @@ -1996,10 +2039,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Voice" | "Members" | "Fraction" | "AtLeastProportion" | "MoreThanProportion"; } - /** @name SpCoreVoid (174) */ + /** @name SpCoreVoid (177) */ type SpCoreVoid = Null; - /** @name FrameSupportScheduleDispatchTime (175) */ + /** @name FrameSupportScheduleDispatchTime (178) */ interface FrameSupportScheduleDispatchTime extends Enum { readonly isAt: boolean; readonly asAt: u32; @@ -2008,7 +2051,7 @@ declare module "@polkadot/types/lookup" { readonly type: "At" | "After"; } - /** @name PalletRankedCollectiveCall (177) */ + /** @name PalletRankedCollectiveCall (180) */ interface PalletRankedCollectiveCall extends Enum { readonly isAddMember: boolean; readonly asAddMember: { @@ -2052,7 +2095,7 @@ declare module "@polkadot/types/lookup" { | "ExchangeMember"; } - /** @name PalletWhitelistCall (179) */ + /** @name PalletWhitelistCall (182) */ interface PalletWhitelistCall extends Enum { readonly isWhitelistCall: boolean; readonly asWhitelistCall: { @@ -2079,7 +2122,7 @@ declare module "@polkadot/types/lookup" { | "DispatchWhitelistedCallWithPreimage"; } - /** @name PolkadotRuntimeParachainsConfigurationPalletCall (180) */ + /** @name PolkadotRuntimeParachainsConfigurationPalletCall (183) */ interface PolkadotRuntimeParachainsConfigurationPalletCall extends Enum { readonly isSetValidationUpgradeCooldown: boolean; readonly asSetValidationUpgradeCooldown: { @@ -2325,16 +2368,16 @@ declare module "@polkadot/types/lookup" { | "SetSchedulerParams"; } - /** @name PolkadotPrimitivesV7AsyncBackingAsyncBackingParams (181) */ + /** @name PolkadotPrimitivesV7AsyncBackingAsyncBackingParams (184) */ interface PolkadotPrimitivesV7AsyncBackingAsyncBackingParams extends Struct { readonly maxCandidateDepth: u32; readonly allowedAncestryLen: u32; } - /** @name PolkadotPrimitivesV7ExecutorParams (182) */ + /** @name PolkadotPrimitivesV7ExecutorParams (185) */ interface PolkadotPrimitivesV7ExecutorParams extends Vec {} - /** @name PolkadotPrimitivesV7ExecutorParamsExecutorParam (184) */ + /** @name PolkadotPrimitivesV7ExecutorParamsExecutorParam (187) */ interface PolkadotPrimitivesV7ExecutorParamsExecutorParam extends Enum { readonly isMaxMemoryPages: boolean; readonly asMaxMemoryPages: u32; @@ -2359,26 +2402,26 @@ declare module "@polkadot/types/lookup" { | "WasmExtBulkMemory"; } - /** @name PolkadotPrimitivesV7PvfPrepKind (185) */ + /** @name PolkadotPrimitivesV7PvfPrepKind (188) */ interface PolkadotPrimitivesV7PvfPrepKind extends Enum { readonly isPrecheck: boolean; readonly isPrepare: boolean; readonly type: "Precheck" | "Prepare"; } - /** @name PolkadotPrimitivesV7PvfExecKind (186) */ + /** @name PolkadotPrimitivesV7PvfExecKind (189) */ interface PolkadotPrimitivesV7PvfExecKind extends Enum { readonly isBacking: boolean; readonly isApproval: boolean; readonly type: "Backing" | "Approval"; } - /** @name PolkadotPrimitivesV7ApprovalVotingParams (187) */ + /** @name PolkadotPrimitivesV7ApprovalVotingParams (190) */ interface PolkadotPrimitivesV7ApprovalVotingParams extends Struct { readonly maxApprovalCoalesceCount: u32; } - /** @name PolkadotPrimitivesVstagingSchedulerParams (188) */ + /** @name PolkadotPrimitivesVstagingSchedulerParams (191) */ interface PolkadotPrimitivesVstagingSchedulerParams extends Struct { readonly groupRotationFrequency: u32; readonly parasAvailabilityPeriod: u32; @@ -2393,13 +2436,13 @@ declare module "@polkadot/types/lookup" { readonly ttl: u32; } - /** @name PolkadotRuntimeParachainsSharedPalletCall (189) */ + /** @name PolkadotRuntimeParachainsSharedPalletCall (192) */ type PolkadotRuntimeParachainsSharedPalletCall = Null; - /** @name PolkadotRuntimeParachainsInclusionPalletCall (190) */ + /** @name PolkadotRuntimeParachainsInclusionPalletCall (193) */ type PolkadotRuntimeParachainsInclusionPalletCall = Null; - /** @name PolkadotRuntimeParachainsParasInherentPalletCall (191) */ + /** @name PolkadotRuntimeParachainsParasInherentPalletCall (194) */ interface PolkadotRuntimeParachainsParasInherentPalletCall extends Enum { readonly isEnter: boolean; readonly asEnter: { @@ -2408,7 +2451,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Enter"; } - /** @name PolkadotPrimitivesV7InherentData (192) */ + /** @name PolkadotPrimitivesV7InherentData (195) */ interface PolkadotPrimitivesV7InherentData extends Struct { readonly bitfields: Vec; readonly backedCandidates: Vec; @@ -2416,33 +2459,33 @@ declare module "@polkadot/types/lookup" { readonly parentHeader: SpRuntimeHeader; } - /** @name PolkadotPrimitivesV7SignedUncheckedSigned (194) */ + /** @name PolkadotPrimitivesV7SignedUncheckedSigned (197) */ interface PolkadotPrimitivesV7SignedUncheckedSigned extends Struct { readonly payload: BitVec; readonly validatorIndex: u32; readonly signature: PolkadotPrimitivesV7ValidatorAppSignature; } - /** @name BitvecOrderLsb0 (197) */ + /** @name BitvecOrderLsb0 (200) */ type BitvecOrderLsb0 = Null; - /** @name PolkadotPrimitivesV7ValidatorAppSignature (199) */ + /** @name PolkadotPrimitivesV7ValidatorAppSignature (202) */ interface PolkadotPrimitivesV7ValidatorAppSignature extends U8aFixed {} - /** @name PolkadotPrimitivesV7BackedCandidate (201) */ + /** @name PolkadotPrimitivesV7BackedCandidate (204) */ interface PolkadotPrimitivesV7BackedCandidate extends Struct { readonly candidate: PolkadotPrimitivesV7CommittedCandidateReceipt; readonly validityVotes: Vec; readonly validatorIndices: BitVec; } - /** @name PolkadotPrimitivesV7CommittedCandidateReceipt (202) */ + /** @name PolkadotPrimitivesV7CommittedCandidateReceipt (205) */ interface PolkadotPrimitivesV7CommittedCandidateReceipt extends Struct { readonly descriptor: PolkadotPrimitivesV7CandidateDescriptor; readonly commitments: PolkadotPrimitivesV7CandidateCommitments; } - /** @name PolkadotPrimitivesV7CandidateDescriptor (203) */ + /** @name PolkadotPrimitivesV7CandidateDescriptor (206) */ interface PolkadotPrimitivesV7CandidateDescriptor extends Struct { readonly paraId: u32; readonly relayParent: H256; @@ -2455,13 +2498,13 @@ declare module "@polkadot/types/lookup" { readonly validationCodeHash: H256; } - /** @name PolkadotPrimitivesV7CollatorAppPublic (204) */ + /** @name PolkadotPrimitivesV7CollatorAppPublic (207) */ interface PolkadotPrimitivesV7CollatorAppPublic extends U8aFixed {} - /** @name PolkadotPrimitivesV7CollatorAppSignature (205) */ + /** @name PolkadotPrimitivesV7CollatorAppSignature (208) */ interface PolkadotPrimitivesV7CollatorAppSignature extends U8aFixed {} - /** @name PolkadotPrimitivesV7CandidateCommitments (207) */ + /** @name PolkadotPrimitivesV7CandidateCommitments (210) */ interface PolkadotPrimitivesV7CandidateCommitments extends Struct { readonly upwardMessages: Vec; readonly horizontalMessages: Vec; @@ -2471,13 +2514,13 @@ declare module "@polkadot/types/lookup" { readonly hrmpWatermark: u32; } - /** @name PolkadotCorePrimitivesOutboundHrmpMessage (210) */ + /** @name PolkadotCorePrimitivesOutboundHrmpMessage (213) */ interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct { readonly recipient: u32; readonly data: Bytes; } - /** @name PolkadotPrimitivesV7ValidityAttestation (215) */ + /** @name PolkadotPrimitivesV7ValidityAttestation (218) */ interface PolkadotPrimitivesV7ValidityAttestation extends Enum { readonly isImplicit: boolean; readonly asImplicit: PolkadotPrimitivesV7ValidatorAppSignature; @@ -2486,7 +2529,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Implicit" | "Explicit"; } - /** @name PolkadotPrimitivesV7DisputeStatementSet (217) */ + /** @name PolkadotPrimitivesV7DisputeStatementSet (220) */ interface PolkadotPrimitivesV7DisputeStatementSet extends Struct { readonly candidateHash: H256; readonly session: u32; @@ -2495,7 +2538,7 @@ declare module "@polkadot/types/lookup" { >; } - /** @name PolkadotPrimitivesV7DisputeStatement (221) */ + /** @name PolkadotPrimitivesV7DisputeStatement (224) */ interface PolkadotPrimitivesV7DisputeStatement extends Enum { readonly isValid: boolean; readonly asValid: PolkadotPrimitivesV7ValidDisputeStatementKind; @@ -2504,7 +2547,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Valid" | "Invalid"; } - /** @name PolkadotPrimitivesV7ValidDisputeStatementKind (222) */ + /** @name PolkadotPrimitivesV7ValidDisputeStatementKind (225) */ interface PolkadotPrimitivesV7ValidDisputeStatementKind extends Enum { readonly isExplicit: boolean; readonly isBackingSeconded: boolean; @@ -2522,13 +2565,13 @@ declare module "@polkadot/types/lookup" { | "ApprovalCheckingMultipleCandidates"; } - /** @name PolkadotPrimitivesV7InvalidDisputeStatementKind (224) */ + /** @name PolkadotPrimitivesV7InvalidDisputeStatementKind (227) */ interface PolkadotPrimitivesV7InvalidDisputeStatementKind extends Enum { readonly isExplicit: boolean; readonly type: "Explicit"; } - /** @name PolkadotRuntimeParachainsParasPalletCall (225) */ + /** @name PolkadotRuntimeParachainsParasPalletCall (228) */ interface PolkadotRuntimeParachainsParasPalletCall extends Enum { readonly isForceSetCurrentCode: boolean; readonly asForceSetCurrentCode: { @@ -2585,7 +2628,7 @@ declare module "@polkadot/types/lookup" { | "ForceSetMostRecentContext"; } - /** @name PolkadotPrimitivesV7PvfCheckStatement (226) */ + /** @name PolkadotPrimitivesV7PvfCheckStatement (229) */ interface PolkadotPrimitivesV7PvfCheckStatement extends Struct { readonly accept: bool; readonly subject: H256; @@ -2593,7 +2636,7 @@ declare module "@polkadot/types/lookup" { readonly validatorIndex: u32; } - /** @name PolkadotRuntimeParachainsInitializerPalletCall (227) */ + /** @name PolkadotRuntimeParachainsInitializerPalletCall (230) */ interface PolkadotRuntimeParachainsInitializerPalletCall extends Enum { readonly isForceApprove: boolean; readonly asForceApprove: { @@ -2602,7 +2645,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceApprove"; } - /** @name PolkadotRuntimeParachainsHrmpPalletCall (228) */ + /** @name PolkadotRuntimeParachainsHrmpPalletCall (231) */ interface PolkadotRuntimeParachainsHrmpPalletCall extends Enum { readonly isHrmpInitOpenChannel: boolean; readonly asHrmpInitOpenChannel: { @@ -2672,19 +2715,19 @@ declare module "@polkadot/types/lookup" { | "EstablishChannelWithSystem"; } - /** @name PolkadotParachainPrimitivesPrimitivesHrmpChannelId (229) */ + /** @name PolkadotParachainPrimitivesPrimitivesHrmpChannelId (232) */ interface PolkadotParachainPrimitivesPrimitivesHrmpChannelId extends Struct { readonly sender: u32; readonly recipient: u32; } - /** @name PolkadotRuntimeParachainsDisputesPalletCall (230) */ + /** @name PolkadotRuntimeParachainsDisputesPalletCall (233) */ interface PolkadotRuntimeParachainsDisputesPalletCall extends Enum { readonly isForceUnfreeze: boolean; readonly type: "ForceUnfreeze"; } - /** @name PolkadotRuntimeParachainsDisputesSlashingPalletCall (231) */ + /** @name PolkadotRuntimeParachainsDisputesSlashingPalletCall (234) */ interface PolkadotRuntimeParachainsDisputesSlashingPalletCall extends Enum { readonly isReportDisputeLostUnsigned: boolean; readonly asReportDisputeLostUnsigned: { @@ -2694,7 +2737,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ReportDisputeLostUnsigned"; } - /** @name PolkadotPrimitivesV7SlashingDisputeProof (232) */ + /** @name PolkadotPrimitivesV7SlashingDisputeProof (235) */ interface PolkadotPrimitivesV7SlashingDisputeProof extends Struct { readonly timeSlot: PolkadotPrimitivesV7SlashingDisputesTimeSlot; readonly kind: PolkadotPrimitivesV7SlashingSlashingOffenceKind; @@ -2702,20 +2745,20 @@ declare module "@polkadot/types/lookup" { readonly validatorId: PolkadotPrimitivesV7ValidatorAppPublic; } - /** @name PolkadotPrimitivesV7SlashingDisputesTimeSlot (233) */ + /** @name PolkadotPrimitivesV7SlashingDisputesTimeSlot (236) */ interface PolkadotPrimitivesV7SlashingDisputesTimeSlot extends Struct { readonly sessionIndex: u32; readonly candidateHash: H256; } - /** @name PolkadotPrimitivesV7SlashingSlashingOffenceKind (234) */ + /** @name PolkadotPrimitivesV7SlashingSlashingOffenceKind (237) */ interface PolkadotPrimitivesV7SlashingSlashingOffenceKind extends Enum { readonly isForInvalid: boolean; readonly isAgainstValid: boolean; readonly type: "ForInvalid" | "AgainstValid"; } - /** @name PalletMessageQueueCall (235) */ + /** @name PalletMessageQueueCall (238) */ interface PalletMessageQueueCall extends Enum { readonly isReapPage: boolean; readonly asReapPage: { @@ -2732,21 +2775,21 @@ declare module "@polkadot/types/lookup" { readonly type: "ReapPage" | "ExecuteOverweight"; } - /** @name PolkadotRuntimeParachainsInclusionAggregateMessageOrigin (236) */ + /** @name PolkadotRuntimeParachainsInclusionAggregateMessageOrigin (239) */ interface PolkadotRuntimeParachainsInclusionAggregateMessageOrigin extends Enum { readonly isUmp: boolean; readonly asUmp: PolkadotRuntimeParachainsInclusionUmpQueueId; readonly type: "Ump"; } - /** @name PolkadotRuntimeParachainsInclusionUmpQueueId (237) */ + /** @name PolkadotRuntimeParachainsInclusionUmpQueueId (240) */ interface PolkadotRuntimeParachainsInclusionUmpQueueId extends Enum { readonly isPara: boolean; readonly asPara: u32; readonly type: "Para"; } - /** @name PolkadotRuntimeParachainsAssignerOnDemandPalletCall (238) */ + /** @name PolkadotRuntimeParachainsAssignerOnDemandPalletCall (241) */ interface PolkadotRuntimeParachainsAssignerOnDemandPalletCall extends Enum { readonly isPlaceOrderAllowDeath: boolean; readonly asPlaceOrderAllowDeath: { @@ -2761,7 +2804,7 @@ declare module "@polkadot/types/lookup" { readonly type: "PlaceOrderAllowDeath" | "PlaceOrderKeepAlive"; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletCall (239) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletCall (242) */ interface PolkadotRuntimeCommonParasRegistrarPalletCall extends Enum { readonly isRegister: boolean; readonly asRegister: { @@ -2817,7 +2860,7 @@ declare module "@polkadot/types/lookup" { | "SetCurrentHead"; } - /** @name PalletUtilityCall (240) */ + /** @name PalletUtilityCall (243) */ interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -2849,7 +2892,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Batch" | "AsDerivative" | "BatchAll" | "DispatchAs" | "ForceBatch" | "WithWeight"; } - /** @name PalletIdentityCall (242) */ + /** @name PalletIdentityCall (245) */ interface PalletIdentityCall extends Enum { readonly isAddRegistrar: boolean; readonly asAddRegistrar: { @@ -2971,7 +3014,7 @@ declare module "@polkadot/types/lookup" { | "RemoveDanglingUsername"; } - /** @name PalletIdentityLegacyIdentityInfo (243) */ + /** @name PalletIdentityLegacyIdentityInfo (246) */ interface PalletIdentityLegacyIdentityInfo extends Struct { readonly additional: Vec>; readonly display: Data; @@ -2984,7 +3027,7 @@ declare module "@polkadot/types/lookup" { readonly twitter: Data; } - /** @name PalletIdentityJudgement (280) */ + /** @name PalletIdentityJudgement (283) */ interface PalletIdentityJudgement extends Enum { readonly isUnknown: boolean; readonly isFeePaid: boolean; @@ -2997,7 +3040,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unknown" | "FeePaid" | "Reasonable" | "KnownGood" | "OutOfDate" | "LowQuality" | "Erroneous"; } - /** @name PalletSchedulerCall (283) */ + /** @name PalletSchedulerCall (286) */ interface PalletSchedulerCall extends Enum { readonly isSchedule: boolean; readonly asSchedule: { @@ -3071,7 +3114,7 @@ declare module "@polkadot/types/lookup" { | "CancelRetryNamed"; } - /** @name PalletProxyCall (286) */ + /** @name PalletProxyCall (289) */ interface PalletProxyCall extends Enum { readonly isProxy: boolean; readonly asProxy: { @@ -3141,7 +3184,7 @@ declare module "@polkadot/types/lookup" { | "ProxyAnnounced"; } - /** @name DancelightRuntimeProxyType (288) */ + /** @name DancelightRuntimeProxyType (291) */ interface DancelightRuntimeProxyType extends Enum { readonly isAny: boolean; readonly isNonTransfer: boolean; @@ -3162,7 +3205,7 @@ declare module "@polkadot/types/lookup" { | "SudoRegistrar"; } - /** @name PalletMultisigCall (289) */ + /** @name PalletMultisigCall (292) */ interface PalletMultisigCall extends Enum { readonly isAsMultiThreshold1: boolean; readonly asAsMultiThreshold1: { @@ -3195,13 +3238,13 @@ declare module "@polkadot/types/lookup" { readonly type: "AsMultiThreshold1" | "AsMulti" | "ApproveAsMulti" | "CancelAsMulti"; } - /** @name PalletMultisigTimepoint (291) */ + /** @name PalletMultisigTimepoint (294) */ interface PalletMultisigTimepoint extends Struct { readonly height: u32; readonly index: u32; } - /** @name PalletPreimageCall (292) */ + /** @name PalletPreimageCall (295) */ interface PalletPreimageCall extends Enum { readonly isNotePreimage: boolean; readonly asNotePreimage: { @@ -3226,7 +3269,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NotePreimage" | "UnnotePreimage" | "RequestPreimage" | "UnrequestPreimage" | "EnsureUpdated"; } - /** @name PalletAssetRateCall (294) */ + /** @name PalletAssetRateCall (297) */ interface PalletAssetRateCall extends Enum { readonly isCreate: boolean; readonly asCreate: { @@ -3245,7 +3288,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Create" | "Update" | "Remove"; } - /** @name PalletXcmCall (296) */ + /** @name PalletXcmCall (299) */ interface PalletXcmCall extends Enum { readonly isSend: boolean; readonly asSend: { @@ -3348,7 +3391,7 @@ declare module "@polkadot/types/lookup" { | "TransferAssetsUsingTypeAndThen"; } - /** @name XcmVersionedLocation (297) */ + /** @name XcmVersionedLocation (300) */ interface XcmVersionedLocation extends Enum { readonly isV2: boolean; readonly asV2: XcmV2MultiLocation; @@ -3359,13 +3402,13 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name XcmV2MultiLocation (298) */ + /** @name XcmV2MultiLocation (301) */ interface XcmV2MultiLocation extends Struct { readonly parents: u8; readonly interior: XcmV2MultilocationJunctions; } - /** @name XcmV2MultilocationJunctions (299) */ + /** @name XcmV2MultilocationJunctions (302) */ interface XcmV2MultilocationJunctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -3402,7 +3445,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name XcmV2Junction (300) */ + /** @name XcmV2Junction (303) */ interface XcmV2Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -3445,7 +3488,7 @@ declare module "@polkadot/types/lookup" { | "Plurality"; } - /** @name XcmV2NetworkId (301) */ + /** @name XcmV2NetworkId (304) */ interface XcmV2NetworkId extends Enum { readonly isAny: boolean; readonly isNamed: boolean; @@ -3455,7 +3498,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Any" | "Named" | "Polkadot" | "Kusama"; } - /** @name XcmV2BodyId (303) */ + /** @name XcmV2BodyId (306) */ interface XcmV2BodyId extends Enum { readonly isUnit: boolean; readonly isNamed: boolean; @@ -3482,7 +3525,7 @@ declare module "@polkadot/types/lookup" { | "Treasury"; } - /** @name XcmV2BodyPart (304) */ + /** @name XcmV2BodyPart (307) */ interface XcmV2BodyPart extends Enum { readonly isVoice: boolean; readonly isMembers: boolean; @@ -3507,13 +3550,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Voice" | "Members" | "Fraction" | "AtLeastProportion" | "MoreThanProportion"; } - /** @name StagingXcmV3MultiLocation (305) */ + /** @name StagingXcmV3MultiLocation (308) */ interface StagingXcmV3MultiLocation extends Struct { readonly parents: u8; readonly interior: XcmV3Junctions; } - /** @name XcmV3Junctions (306) */ + /** @name XcmV3Junctions (309) */ interface XcmV3Junctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -3550,7 +3593,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name XcmV3Junction (307) */ + /** @name XcmV3Junction (310) */ interface XcmV3Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -3599,7 +3642,7 @@ declare module "@polkadot/types/lookup" { | "GlobalConsensus"; } - /** @name XcmV3JunctionNetworkId (309) */ + /** @name XcmV3JunctionNetworkId (312) */ interface XcmV3JunctionNetworkId extends Enum { readonly isByGenesis: boolean; readonly asByGenesis: U8aFixed; @@ -3634,7 +3677,7 @@ declare module "@polkadot/types/lookup" { | "PolkadotBulletin"; } - /** @name XcmVersionedXcm (310) */ + /** @name XcmVersionedXcm (313) */ interface XcmVersionedXcm extends Enum { readonly isV2: boolean; readonly asV2: XcmV2Xcm; @@ -3645,10 +3688,10 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name XcmV2Xcm (311) */ + /** @name XcmV2Xcm (314) */ interface XcmV2Xcm extends Vec {} - /** @name XcmV2Instruction (313) */ + /** @name XcmV2Instruction (316) */ interface XcmV2Instruction extends Enum { readonly isWithdrawAsset: boolean; readonly asWithdrawAsset: XcmV2MultiassetMultiAssets; @@ -3796,16 +3839,16 @@ declare module "@polkadot/types/lookup" { | "UnsubscribeVersion"; } - /** @name XcmV2MultiassetMultiAssets (314) */ + /** @name XcmV2MultiassetMultiAssets (317) */ interface XcmV2MultiassetMultiAssets extends Vec {} - /** @name XcmV2MultiAsset (316) */ + /** @name XcmV2MultiAsset (319) */ interface XcmV2MultiAsset extends Struct { readonly id: XcmV2MultiassetAssetId; readonly fun: XcmV2MultiassetFungibility; } - /** @name XcmV2MultiassetAssetId (317) */ + /** @name XcmV2MultiassetAssetId (320) */ interface XcmV2MultiassetAssetId extends Enum { readonly isConcrete: boolean; readonly asConcrete: XcmV2MultiLocation; @@ -3814,7 +3857,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Concrete" | "Abstract"; } - /** @name XcmV2MultiassetFungibility (318) */ + /** @name XcmV2MultiassetFungibility (321) */ interface XcmV2MultiassetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -3823,7 +3866,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV2MultiassetAssetInstance (319) */ + /** @name XcmV2MultiassetAssetInstance (322) */ interface XcmV2MultiassetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -3841,7 +3884,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32" | "Blob"; } - /** @name XcmV2Response (320) */ + /** @name XcmV2Response (323) */ interface XcmV2Response extends Enum { readonly isNull: boolean; readonly isAssets: boolean; @@ -3853,7 +3896,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Null" | "Assets" | "ExecutionResult" | "Version"; } - /** @name XcmV2TraitsError (323) */ + /** @name XcmV2TraitsError (326) */ interface XcmV2TraitsError extends Enum { readonly isOverflow: boolean; readonly isUnimplemented: boolean; @@ -3912,7 +3955,7 @@ declare module "@polkadot/types/lookup" { | "WeightNotComputable"; } - /** @name XcmV2OriginKind (324) */ + /** @name XcmV2OriginKind (327) */ interface XcmV2OriginKind extends Enum { readonly isNative: boolean; readonly isSovereignAccount: boolean; @@ -3921,12 +3964,12 @@ declare module "@polkadot/types/lookup" { readonly type: "Native" | "SovereignAccount" | "Superuser" | "Xcm"; } - /** @name XcmDoubleEncoded (325) */ + /** @name XcmDoubleEncoded (328) */ interface XcmDoubleEncoded extends Struct { readonly encoded: Bytes; } - /** @name XcmV2MultiassetMultiAssetFilter (326) */ + /** @name XcmV2MultiassetMultiAssetFilter (329) */ interface XcmV2MultiassetMultiAssetFilter extends Enum { readonly isDefinite: boolean; readonly asDefinite: XcmV2MultiassetMultiAssets; @@ -3935,7 +3978,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Definite" | "Wild"; } - /** @name XcmV2MultiassetWildMultiAsset (327) */ + /** @name XcmV2MultiassetWildMultiAsset (330) */ interface XcmV2MultiassetWildMultiAsset extends Enum { readonly isAll: boolean; readonly isAllOf: boolean; @@ -3946,14 +3989,14 @@ declare module "@polkadot/types/lookup" { readonly type: "All" | "AllOf"; } - /** @name XcmV2MultiassetWildFungibility (328) */ + /** @name XcmV2MultiassetWildFungibility (331) */ interface XcmV2MultiassetWildFungibility extends Enum { readonly isFungible: boolean; readonly isNonFungible: boolean; readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV2WeightLimit (329) */ + /** @name XcmV2WeightLimit (332) */ interface XcmV2WeightLimit extends Enum { readonly isUnlimited: boolean; readonly isLimited: boolean; @@ -3961,10 +4004,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Unlimited" | "Limited"; } - /** @name XcmV3Xcm (330) */ + /** @name XcmV3Xcm (333) */ interface XcmV3Xcm extends Vec {} - /** @name XcmV3Instruction (332) */ + /** @name XcmV3Instruction (335) */ interface XcmV3Instruction extends Enum { readonly isWithdrawAsset: boolean; readonly asWithdrawAsset: XcmV3MultiassetMultiAssets; @@ -4194,16 +4237,16 @@ declare module "@polkadot/types/lookup" { | "UnpaidExecution"; } - /** @name XcmV3MultiassetMultiAssets (333) */ + /** @name XcmV3MultiassetMultiAssets (336) */ interface XcmV3MultiassetMultiAssets extends Vec {} - /** @name XcmV3MultiAsset (335) */ + /** @name XcmV3MultiAsset (338) */ interface XcmV3MultiAsset extends Struct { readonly id: XcmV3MultiassetAssetId; readonly fun: XcmV3MultiassetFungibility; } - /** @name XcmV3MultiassetAssetId (336) */ + /** @name XcmV3MultiassetAssetId (339) */ interface XcmV3MultiassetAssetId extends Enum { readonly isConcrete: boolean; readonly asConcrete: StagingXcmV3MultiLocation; @@ -4212,7 +4255,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Concrete" | "Abstract"; } - /** @name XcmV3MultiassetFungibility (337) */ + /** @name XcmV3MultiassetFungibility (340) */ interface XcmV3MultiassetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -4221,7 +4264,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV3MultiassetAssetInstance (338) */ + /** @name XcmV3MultiassetAssetInstance (341) */ interface XcmV3MultiassetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -4237,7 +4280,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32"; } - /** @name XcmV3Response (339) */ + /** @name XcmV3Response (342) */ interface XcmV3Response extends Enum { readonly isNull: boolean; readonly isAssets: boolean; @@ -4253,7 +4296,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Null" | "Assets" | "ExecutionResult" | "Version" | "PalletsInfo" | "DispatchResult"; } - /** @name XcmV3TraitsError (342) */ + /** @name XcmV3TraitsError (345) */ interface XcmV3TraitsError extends Enum { readonly isOverflow: boolean; readonly isUnimplemented: boolean; @@ -4340,7 +4383,7 @@ declare module "@polkadot/types/lookup" { | "ExceedsStackLimit"; } - /** @name XcmV3PalletInfo (344) */ + /** @name XcmV3PalletInfo (347) */ interface XcmV3PalletInfo extends Struct { readonly index: Compact; readonly name: Bytes; @@ -4350,7 +4393,7 @@ declare module "@polkadot/types/lookup" { readonly patch: Compact; } - /** @name XcmV3MaybeErrorCode (347) */ + /** @name XcmV3MaybeErrorCode (350) */ interface XcmV3MaybeErrorCode extends Enum { readonly isSuccess: boolean; readonly isError: boolean; @@ -4360,7 +4403,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Success" | "Error" | "TruncatedError"; } - /** @name XcmV3OriginKind (350) */ + /** @name XcmV3OriginKind (353) */ interface XcmV3OriginKind extends Enum { readonly isNative: boolean; readonly isSovereignAccount: boolean; @@ -4369,14 +4412,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Native" | "SovereignAccount" | "Superuser" | "Xcm"; } - /** @name XcmV3QueryResponseInfo (351) */ + /** @name XcmV3QueryResponseInfo (354) */ interface XcmV3QueryResponseInfo extends Struct { readonly destination: StagingXcmV3MultiLocation; readonly queryId: Compact; readonly maxWeight: SpWeightsWeightV2Weight; } - /** @name XcmV3MultiassetMultiAssetFilter (352) */ + /** @name XcmV3MultiassetMultiAssetFilter (355) */ interface XcmV3MultiassetMultiAssetFilter extends Enum { readonly isDefinite: boolean; readonly asDefinite: XcmV3MultiassetMultiAssets; @@ -4385,7 +4428,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Definite" | "Wild"; } - /** @name XcmV3MultiassetWildMultiAsset (353) */ + /** @name XcmV3MultiassetWildMultiAsset (356) */ interface XcmV3MultiassetWildMultiAsset extends Enum { readonly isAll: boolean; readonly isAllOf: boolean; @@ -4404,14 +4447,14 @@ declare module "@polkadot/types/lookup" { readonly type: "All" | "AllOf" | "AllCounted" | "AllOfCounted"; } - /** @name XcmV3MultiassetWildFungibility (354) */ + /** @name XcmV3MultiassetWildFungibility (357) */ interface XcmV3MultiassetWildFungibility extends Enum { readonly isFungible: boolean; readonly isNonFungible: boolean; readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV3WeightLimit (355) */ + /** @name XcmV3WeightLimit (358) */ interface XcmV3WeightLimit extends Enum { readonly isUnlimited: boolean; readonly isLimited: boolean; @@ -4419,10 +4462,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Unlimited" | "Limited"; } - /** @name StagingXcmV4Xcm (356) */ + /** @name StagingXcmV4Xcm (359) */ interface StagingXcmV4Xcm extends Vec {} - /** @name StagingXcmV4Instruction (358) */ + /** @name StagingXcmV4Instruction (361) */ interface StagingXcmV4Instruction extends Enum { readonly isWithdrawAsset: boolean; readonly asWithdrawAsset: StagingXcmV4AssetAssets; @@ -4652,19 +4695,19 @@ declare module "@polkadot/types/lookup" { | "UnpaidExecution"; } - /** @name StagingXcmV4AssetAssets (359) */ + /** @name StagingXcmV4AssetAssets (362) */ interface StagingXcmV4AssetAssets extends Vec {} - /** @name StagingXcmV4Asset (361) */ + /** @name StagingXcmV4Asset (364) */ interface StagingXcmV4Asset extends Struct { readonly id: StagingXcmV4AssetAssetId; readonly fun: StagingXcmV4AssetFungibility; } - /** @name StagingXcmV4AssetAssetId (362) */ + /** @name StagingXcmV4AssetAssetId (365) */ interface StagingXcmV4AssetAssetId extends StagingXcmV4Location {} - /** @name StagingXcmV4AssetFungibility (363) */ + /** @name StagingXcmV4AssetFungibility (366) */ interface StagingXcmV4AssetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -4673,7 +4716,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name StagingXcmV4AssetAssetInstance (364) */ + /** @name StagingXcmV4AssetAssetInstance (367) */ interface StagingXcmV4AssetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -4689,7 +4732,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32"; } - /** @name StagingXcmV4Response (365) */ + /** @name StagingXcmV4Response (368) */ interface StagingXcmV4Response extends Enum { readonly isNull: boolean; readonly isAssets: boolean; @@ -4705,7 +4748,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Null" | "Assets" | "ExecutionResult" | "Version" | "PalletsInfo" | "DispatchResult"; } - /** @name StagingXcmV4PalletInfo (367) */ + /** @name StagingXcmV4PalletInfo (370) */ interface StagingXcmV4PalletInfo extends Struct { readonly index: Compact; readonly name: Bytes; @@ -4715,14 +4758,14 @@ declare module "@polkadot/types/lookup" { readonly patch: Compact; } - /** @name StagingXcmV4QueryResponseInfo (371) */ + /** @name StagingXcmV4QueryResponseInfo (374) */ interface StagingXcmV4QueryResponseInfo extends Struct { readonly destination: StagingXcmV4Location; readonly queryId: Compact; readonly maxWeight: SpWeightsWeightV2Weight; } - /** @name StagingXcmV4AssetAssetFilter (372) */ + /** @name StagingXcmV4AssetAssetFilter (375) */ interface StagingXcmV4AssetAssetFilter extends Enum { readonly isDefinite: boolean; readonly asDefinite: StagingXcmV4AssetAssets; @@ -4731,7 +4774,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Definite" | "Wild"; } - /** @name StagingXcmV4AssetWildAsset (373) */ + /** @name StagingXcmV4AssetWildAsset (376) */ interface StagingXcmV4AssetWildAsset extends Enum { readonly isAll: boolean; readonly isAllOf: boolean; @@ -4750,14 +4793,14 @@ declare module "@polkadot/types/lookup" { readonly type: "All" | "AllOf" | "AllCounted" | "AllOfCounted"; } - /** @name StagingXcmV4AssetWildFungibility (374) */ + /** @name StagingXcmV4AssetWildFungibility (377) */ interface StagingXcmV4AssetWildFungibility extends Enum { readonly isFungible: boolean; readonly isNonFungible: boolean; readonly type: "Fungible" | "NonFungible"; } - /** @name XcmVersionedAssets (375) */ + /** @name XcmVersionedAssets (378) */ interface XcmVersionedAssets extends Enum { readonly isV2: boolean; readonly asV2: XcmV2MultiassetMultiAssets; @@ -4768,7 +4811,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name StagingXcmExecutorAssetTransferTransferType (387) */ + /** @name StagingXcmExecutorAssetTransferTransferType (390) */ interface StagingXcmExecutorAssetTransferTransferType extends Enum { readonly isTeleport: boolean; readonly isLocalReserve: boolean; @@ -4778,7 +4821,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Teleport" | "LocalReserve" | "DestinationReserve" | "RemoteReserve"; } - /** @name XcmVersionedAssetId (388) */ + /** @name XcmVersionedAssetId (391) */ interface XcmVersionedAssetId extends Enum { readonly isV3: boolean; readonly asV3: XcmV3MultiassetAssetId; @@ -4787,7 +4830,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V3" | "V4"; } - /** @name PalletMigrationsCall (389) */ + /** @name PalletMigrationsCall (392) */ interface PalletMigrationsCall extends Enum { readonly isForceSetCursor: boolean; readonly asForceSetCursor: { @@ -4807,7 +4850,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceSetCursor" | "ForceSetActiveCursor" | "ForceOnboardMbms" | "ClearHistoric"; } - /** @name PalletMigrationsMigrationCursor (391) */ + /** @name PalletMigrationsMigrationCursor (394) */ interface PalletMigrationsMigrationCursor extends Enum { readonly isActive: boolean; readonly asActive: PalletMigrationsActiveCursor; @@ -4815,14 +4858,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Active" | "Stuck"; } - /** @name PalletMigrationsActiveCursor (393) */ + /** @name PalletMigrationsActiveCursor (396) */ interface PalletMigrationsActiveCursor extends Struct { readonly index: u32; readonly innerCursor: Option; readonly startedAt: u32; } - /** @name PalletMigrationsHistoricCleanupSelector (395) */ + /** @name PalletMigrationsHistoricCleanupSelector (398) */ interface PalletMigrationsHistoricCleanupSelector extends Enum { readonly isSpecific: boolean; readonly asSpecific: Vec; @@ -4834,7 +4877,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Specific" | "Wildcard"; } - /** @name PalletBeefyCall (398) */ + /** @name PalletBeefyCall (401) */ interface PalletBeefyCall extends Enum { readonly isReportDoubleVoting: boolean; readonly asReportDoubleVoting: { @@ -4880,40 +4923,40 @@ declare module "@polkadot/types/lookup" { | "ReportFutureBlockVotingUnsigned"; } - /** @name SpConsensusBeefyDoubleVotingProof (399) */ + /** @name SpConsensusBeefyDoubleVotingProof (402) */ interface SpConsensusBeefyDoubleVotingProof extends Struct { readonly first: SpConsensusBeefyVoteMessage; readonly second: SpConsensusBeefyVoteMessage; } - /** @name SpConsensusBeefyEcdsaCryptoSignature (400) */ + /** @name SpConsensusBeefyEcdsaCryptoSignature (403) */ interface SpConsensusBeefyEcdsaCryptoSignature extends U8aFixed {} - /** @name SpConsensusBeefyVoteMessage (401) */ + /** @name SpConsensusBeefyVoteMessage (404) */ interface SpConsensusBeefyVoteMessage extends Struct { readonly commitment: SpConsensusBeefyCommitment; readonly id: SpConsensusBeefyEcdsaCryptoPublic; readonly signature: SpConsensusBeefyEcdsaCryptoSignature; } - /** @name SpConsensusBeefyCommitment (402) */ + /** @name SpConsensusBeefyCommitment (405) */ interface SpConsensusBeefyCommitment extends Struct { readonly payload: SpConsensusBeefyPayload; readonly blockNumber: u32; readonly validatorSetId: u64; } - /** @name SpConsensusBeefyPayload (403) */ + /** @name SpConsensusBeefyPayload (406) */ interface SpConsensusBeefyPayload extends Vec> {} - /** @name SpConsensusBeefyForkVotingProof (406) */ + /** @name SpConsensusBeefyForkVotingProof (409) */ interface SpConsensusBeefyForkVotingProof extends Struct { readonly vote: SpConsensusBeefyVoteMessage; readonly ancestryProof: SpMmrPrimitivesAncestryProof; readonly header: SpRuntimeHeader; } - /** @name SpMmrPrimitivesAncestryProof (407) */ + /** @name SpMmrPrimitivesAncestryProof (410) */ interface SpMmrPrimitivesAncestryProof extends Struct { readonly prevPeaks: Vec; readonly prevLeafCount: u64; @@ -4921,12 +4964,12 @@ declare module "@polkadot/types/lookup" { readonly items: Vec>; } - /** @name SpConsensusBeefyFutureBlockVotingProof (410) */ + /** @name SpConsensusBeefyFutureBlockVotingProof (413) */ interface SpConsensusBeefyFutureBlockVotingProof extends Struct { readonly vote: SpConsensusBeefyVoteMessage; } - /** @name SnowbridgePalletEthereumClientCall (411) */ + /** @name SnowbridgePalletEthereumClientCall (414) */ interface SnowbridgePalletEthereumClientCall extends Enum { readonly isForceCheckpoint: boolean; readonly asForceCheckpoint: { @@ -4943,7 +4986,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceCheckpoint" | "Submit" | "SetOperatingMode"; } - /** @name SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate (412) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate (415) */ interface SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate extends Struct { readonly header: SnowbridgeBeaconPrimitivesBeaconHeader; readonly currentSyncCommittee: SnowbridgeBeaconPrimitivesSyncCommittee; @@ -4953,7 +4996,7 @@ declare module "@polkadot/types/lookup" { readonly blockRootsBranch: Vec; } - /** @name SnowbridgeBeaconPrimitivesBeaconHeader (413) */ + /** @name SnowbridgeBeaconPrimitivesBeaconHeader (416) */ interface SnowbridgeBeaconPrimitivesBeaconHeader extends Struct { readonly slot: u64; readonly proposerIndex: u64; @@ -4962,16 +5005,16 @@ declare module "@polkadot/types/lookup" { readonly bodyRoot: H256; } - /** @name SnowbridgeBeaconPrimitivesSyncCommittee (414) */ + /** @name SnowbridgeBeaconPrimitivesSyncCommittee (417) */ interface SnowbridgeBeaconPrimitivesSyncCommittee extends Struct { readonly pubkeys: Vec; readonly aggregatePubkey: SnowbridgeBeaconPrimitivesPublicKey; } - /** @name SnowbridgeBeaconPrimitivesPublicKey (416) */ + /** @name SnowbridgeBeaconPrimitivesPublicKey (419) */ interface SnowbridgeBeaconPrimitivesPublicKey extends U8aFixed {} - /** @name SnowbridgeBeaconPrimitivesUpdatesUpdate (418) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesUpdate (421) */ interface SnowbridgeBeaconPrimitivesUpdatesUpdate extends Struct { readonly attestedHeader: SnowbridgeBeaconPrimitivesBeaconHeader; readonly syncAggregate: SnowbridgeBeaconPrimitivesSyncAggregate; @@ -4983,29 +5026,29 @@ declare module "@polkadot/types/lookup" { readonly blockRootsBranch: Vec; } - /** @name SnowbridgeBeaconPrimitivesSyncAggregate (419) */ + /** @name SnowbridgeBeaconPrimitivesSyncAggregate (422) */ interface SnowbridgeBeaconPrimitivesSyncAggregate extends Struct { readonly syncCommitteeBits: U8aFixed; readonly syncCommitteeSignature: SnowbridgeBeaconPrimitivesSignature; } - /** @name SnowbridgeBeaconPrimitivesSignature (420) */ + /** @name SnowbridgeBeaconPrimitivesSignature (423) */ interface SnowbridgeBeaconPrimitivesSignature extends U8aFixed {} - /** @name SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate (423) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate (426) */ interface SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate extends Struct { readonly nextSyncCommittee: SnowbridgeBeaconPrimitivesSyncCommittee; readonly nextSyncCommitteeBranch: Vec; } - /** @name SnowbridgeCoreOperatingModeBasicOperatingMode (424) */ + /** @name SnowbridgeCoreOperatingModeBasicOperatingMode (427) */ interface SnowbridgeCoreOperatingModeBasicOperatingMode extends Enum { readonly isNormal: boolean; readonly isHalted: boolean; readonly type: "Normal" | "Halted"; } - /** @name PolkadotRuntimeCommonParasSudoWrapperPalletCall (425) */ + /** @name PolkadotRuntimeCommonParasSudoWrapperPalletCall (428) */ interface PolkadotRuntimeCommonParasSudoWrapperPalletCall extends Enum { readonly isSudoScheduleParaInitialize: boolean; readonly asSudoScheduleParaInitialize: { @@ -5045,27 +5088,14 @@ declare module "@polkadot/types/lookup" { | "SudoEstablishHrmpChannel"; } - /** @name PolkadotRuntimeParachainsParasParaGenesisArgs (426) */ + /** @name PolkadotRuntimeParachainsParasParaGenesisArgs (429) */ interface PolkadotRuntimeParachainsParasParaGenesisArgs extends Struct { readonly genesisHead: Bytes; readonly validationCode: Bytes; readonly paraKind: bool; } - /** @name DancelightRuntimeValidatorManagerPalletCall (427) */ - interface DancelightRuntimeValidatorManagerPalletCall extends Enum { - readonly isRegisterValidators: boolean; - readonly asRegisterValidators: { - readonly validators: Vec; - } & Struct; - readonly isDeregisterValidators: boolean; - readonly asDeregisterValidators: { - readonly validators: Vec; - } & Struct; - readonly type: "RegisterValidators" | "DeregisterValidators"; - } - - /** @name PalletRootTestingCall (428) */ + /** @name PalletRootTestingCall (430) */ interface PalletRootTestingCall extends Enum { readonly isFillBlock: boolean; readonly asFillBlock: { @@ -5075,7 +5105,7 @@ declare module "@polkadot/types/lookup" { readonly type: "FillBlock" | "TriggerDefensive"; } - /** @name PalletSudoCall (429) */ + /** @name PalletSudoCall (431) */ interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -5099,17 +5129,17 @@ declare module "@polkadot/types/lookup" { readonly type: "Sudo" | "SudoUncheckedWeight" | "SetKey" | "SudoAs" | "RemoveKey"; } - /** @name SpRuntimeBlakeTwo256 (430) */ + /** @name SpRuntimeBlakeTwo256 (432) */ type SpRuntimeBlakeTwo256 = Null; - /** @name PalletConvictionVotingTally (432) */ + /** @name PalletConvictionVotingTally (434) */ interface PalletConvictionVotingTally extends Struct { readonly ayes: u128; readonly nays: u128; readonly support: u128; } - /** @name PalletRankedCollectiveEvent (433) */ + /** @name PalletRankedCollectiveEvent (435) */ interface PalletRankedCollectiveEvent extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: { @@ -5140,7 +5170,7 @@ declare module "@polkadot/types/lookup" { readonly type: "MemberAdded" | "RankChanged" | "MemberRemoved" | "Voted" | "MemberExchanged"; } - /** @name PalletRankedCollectiveVoteRecord (434) */ + /** @name PalletRankedCollectiveVoteRecord (436) */ interface PalletRankedCollectiveVoteRecord extends Enum { readonly isAye: boolean; readonly asAye: u32; @@ -5149,14 +5179,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Aye" | "Nay"; } - /** @name PalletRankedCollectiveTally (435) */ + /** @name PalletRankedCollectiveTally (437) */ interface PalletRankedCollectiveTally extends Struct { readonly bareAyes: u32; readonly ayes: u32; readonly nays: u32; } - /** @name PalletWhitelistEvent (437) */ + /** @name PalletWhitelistEvent (439) */ interface PalletWhitelistEvent extends Enum { readonly isCallWhitelisted: boolean; readonly asCallWhitelisted: { @@ -5174,19 +5204,19 @@ declare module "@polkadot/types/lookup" { readonly type: "CallWhitelisted" | "WhitelistedCallRemoved" | "WhitelistedCallDispatched"; } - /** @name FrameSupportDispatchPostDispatchInfo (439) */ + /** @name FrameSupportDispatchPostDispatchInfo (441) */ interface FrameSupportDispatchPostDispatchInfo extends Struct { readonly actualWeight: Option; readonly paysFee: FrameSupportDispatchPays; } - /** @name SpRuntimeDispatchErrorWithPostInfo (441) */ + /** @name SpRuntimeDispatchErrorWithPostInfo (443) */ interface SpRuntimeDispatchErrorWithPostInfo extends Struct { readonly postInfo: FrameSupportDispatchPostDispatchInfo; readonly error: SpRuntimeDispatchError; } - /** @name PolkadotRuntimeParachainsInclusionPalletEvent (442) */ + /** @name PolkadotRuntimeParachainsInclusionPalletEvent (444) */ interface PolkadotRuntimeParachainsInclusionPalletEvent extends Enum { readonly isCandidateBacked: boolean; readonly asCandidateBacked: ITuple<[PolkadotPrimitivesV7CandidateReceipt, Bytes, u32, u32]>; @@ -5202,13 +5232,13 @@ declare module "@polkadot/types/lookup" { readonly type: "CandidateBacked" | "CandidateIncluded" | "CandidateTimedOut" | "UpwardMessagesReceived"; } - /** @name PolkadotPrimitivesV7CandidateReceipt (443) */ + /** @name PolkadotPrimitivesV7CandidateReceipt (445) */ interface PolkadotPrimitivesV7CandidateReceipt extends Struct { readonly descriptor: PolkadotPrimitivesV7CandidateDescriptor; readonly commitmentsHash: H256; } - /** @name PolkadotRuntimeParachainsParasPalletEvent (446) */ + /** @name PolkadotRuntimeParachainsParasPalletEvent (448) */ interface PolkadotRuntimeParachainsParasPalletEvent extends Enum { readonly isCurrentCodeUpdated: boolean; readonly asCurrentCodeUpdated: u32; @@ -5237,7 +5267,7 @@ declare module "@polkadot/types/lookup" { | "PvfCheckRejected"; } - /** @name PolkadotRuntimeParachainsHrmpPalletEvent (447) */ + /** @name PolkadotRuntimeParachainsHrmpPalletEvent (449) */ interface PolkadotRuntimeParachainsHrmpPalletEvent extends Enum { readonly isOpenChannelRequested: boolean; readonly asOpenChannelRequested: { @@ -5290,7 +5320,7 @@ declare module "@polkadot/types/lookup" { | "OpenChannelDepositsUpdated"; } - /** @name PolkadotRuntimeParachainsDisputesPalletEvent (448) */ + /** @name PolkadotRuntimeParachainsDisputesPalletEvent (450) */ interface PolkadotRuntimeParachainsDisputesPalletEvent extends Enum { readonly isDisputeInitiated: boolean; readonly asDisputeInitiated: ITuple<[H256, PolkadotRuntimeParachainsDisputesDisputeLocation]>; @@ -5301,21 +5331,21 @@ declare module "@polkadot/types/lookup" { readonly type: "DisputeInitiated" | "DisputeConcluded" | "Revert"; } - /** @name PolkadotRuntimeParachainsDisputesDisputeLocation (449) */ + /** @name PolkadotRuntimeParachainsDisputesDisputeLocation (451) */ interface PolkadotRuntimeParachainsDisputesDisputeLocation extends Enum { readonly isLocal: boolean; readonly isRemote: boolean; readonly type: "Local" | "Remote"; } - /** @name PolkadotRuntimeParachainsDisputesDisputeResult (450) */ + /** @name PolkadotRuntimeParachainsDisputesDisputeResult (452) */ interface PolkadotRuntimeParachainsDisputesDisputeResult extends Enum { readonly isValid: boolean; readonly isInvalid: boolean; readonly type: "Valid" | "Invalid"; } - /** @name PalletMessageQueueEvent (451) */ + /** @name PalletMessageQueueEvent (453) */ interface PalletMessageQueueEvent extends Enum { readonly isProcessingFailed: boolean; readonly asProcessingFailed: { @@ -5345,7 +5375,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ProcessingFailed" | "Processed" | "OverweightEnqueued" | "PageReaped"; } - /** @name FrameSupportMessagesProcessMessageError (452) */ + /** @name FrameSupportMessagesProcessMessageError (454) */ interface FrameSupportMessagesProcessMessageError extends Enum { readonly isBadFormat: boolean; readonly isCorrupt: boolean; @@ -5357,7 +5387,7 @@ declare module "@polkadot/types/lookup" { readonly type: "BadFormat" | "Corrupt" | "Unsupported" | "Overweight" | "Yield" | "StackLimitReached"; } - /** @name PolkadotRuntimeParachainsAssignerOnDemandPalletEvent (453) */ + /** @name PolkadotRuntimeParachainsAssignerOnDemandPalletEvent (455) */ interface PolkadotRuntimeParachainsAssignerOnDemandPalletEvent extends Enum { readonly isOnDemandOrderPlaced: boolean; readonly asOnDemandOrderPlaced: { @@ -5372,7 +5402,7 @@ declare module "@polkadot/types/lookup" { readonly type: "OnDemandOrderPlaced" | "SpotPriceSet"; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletEvent (454) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletEvent (456) */ interface PolkadotRuntimeCommonParasRegistrarPalletEvent extends Enum { readonly isRegistered: boolean; readonly asRegistered: { @@ -5396,7 +5426,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Registered" | "Deregistered" | "Reserved" | "Swapped"; } - /** @name PalletUtilityEvent (455) */ + /** @name PalletUtilityEvent (457) */ interface PalletUtilityEvent extends Enum { readonly isBatchInterrupted: boolean; readonly asBatchInterrupted: { @@ -5423,7 +5453,7 @@ declare module "@polkadot/types/lookup" { | "DispatchedAs"; } - /** @name PalletIdentityEvent (457) */ + /** @name PalletIdentityEvent (459) */ interface PalletIdentityEvent extends Enum { readonly isIdentitySet: boolean; readonly asIdentitySet: { @@ -5529,7 +5559,7 @@ declare module "@polkadot/types/lookup" { | "DanglingUsernameRemoved"; } - /** @name PalletSchedulerEvent (458) */ + /** @name PalletSchedulerEvent (460) */ interface PalletSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: { @@ -5591,7 +5621,7 @@ declare module "@polkadot/types/lookup" { | "PermanentlyOverweight"; } - /** @name PalletProxyEvent (460) */ + /** @name PalletProxyEvent (462) */ interface PalletProxyEvent extends Enum { readonly isProxyExecuted: boolean; readonly asProxyExecuted: { @@ -5627,7 +5657,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ProxyExecuted" | "PureCreated" | "Announced" | "ProxyAdded" | "ProxyRemoved"; } - /** @name PalletMultisigEvent (461) */ + /** @name PalletMultisigEvent (463) */ interface PalletMultisigEvent extends Enum { readonly isNewMultisig: boolean; readonly asNewMultisig: { @@ -5660,7 +5690,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewMultisig" | "MultisigApproval" | "MultisigExecuted" | "MultisigCancelled"; } - /** @name PalletPreimageEvent (462) */ + /** @name PalletPreimageEvent (464) */ interface PalletPreimageEvent extends Enum { readonly isNoted: boolean; readonly asNoted: { @@ -5677,7 +5707,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Noted" | "Requested" | "Cleared"; } - /** @name PalletAssetRateEvent (463) */ + /** @name PalletAssetRateEvent (465) */ interface PalletAssetRateEvent extends Enum { readonly isAssetRateCreated: boolean; readonly asAssetRateCreated: { @@ -5697,7 +5727,7 @@ declare module "@polkadot/types/lookup" { readonly type: "AssetRateCreated" | "AssetRateRemoved" | "AssetRateUpdated"; } - /** @name PalletXcmEvent (464) */ + /** @name PalletXcmEvent (466) */ interface PalletXcmEvent extends Enum { readonly isAttempted: boolean; readonly asAttempted: { @@ -5862,7 +5892,7 @@ declare module "@polkadot/types/lookup" { | "VersionMigrationFinished"; } - /** @name StagingXcmV4TraitsOutcome (465) */ + /** @name StagingXcmV4TraitsOutcome (467) */ interface StagingXcmV4TraitsOutcome extends Enum { readonly isComplete: boolean; readonly asComplete: { @@ -5880,7 +5910,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Complete" | "Incomplete" | "Error"; } - /** @name PalletMigrationsEvent (466) */ + /** @name PalletMigrationsEvent (468) */ interface PalletMigrationsEvent extends Enum { readonly isRuntimeUpgradeStarted: boolean; readonly isRuntimeUpgradeCompleted: boolean; @@ -5913,7 +5943,7 @@ declare module "@polkadot/types/lookup" { | "FailedToResumeIdleXcmExecution"; } - /** @name SnowbridgePalletEthereumClientEvent (468) */ + /** @name SnowbridgePalletEthereumClientEvent (470) */ interface SnowbridgePalletEthereumClientEvent extends Enum { readonly isBeaconHeaderImported: boolean; readonly asBeaconHeaderImported: { @@ -5931,22 +5961,13 @@ declare module "@polkadot/types/lookup" { readonly type: "BeaconHeaderImported" | "SyncCommitteeUpdated" | "OperatingModeChanged"; } - /** @name DancelightRuntimeValidatorManagerPalletEvent (469) */ - interface DancelightRuntimeValidatorManagerPalletEvent extends Enum { - readonly isValidatorsRegistered: boolean; - readonly asValidatorsRegistered: Vec; - readonly isValidatorsDeregistered: boolean; - readonly asValidatorsDeregistered: Vec; - readonly type: "ValidatorsRegistered" | "ValidatorsDeregistered"; - } - - /** @name PalletRootTestingEvent (470) */ + /** @name PalletRootTestingEvent (471) */ interface PalletRootTestingEvent extends Enum { readonly isDefensiveTestCall: boolean; readonly type: "DefensiveTestCall"; } - /** @name PalletSudoEvent (471) */ + /** @name PalletSudoEvent (472) */ interface PalletSudoEvent extends Enum { readonly isSudid: boolean; readonly asSudid: { @@ -5965,7 +5986,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Sudid" | "KeyChanged" | "KeyRemoved" | "SudoAsDone"; } - /** @name FrameSystemPhase (472) */ + /** @name FrameSystemPhase (473) */ interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -5974,33 +5995,33 @@ declare module "@polkadot/types/lookup" { readonly type: "ApplyExtrinsic" | "Finalization" | "Initialization"; } - /** @name FrameSystemLastRuntimeUpgradeInfo (474) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (475) */ interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemCodeUpgradeAuthorization (476) */ + /** @name FrameSystemCodeUpgradeAuthorization (477) */ interface FrameSystemCodeUpgradeAuthorization extends Struct { readonly codeHash: H256; readonly checkVersion: bool; } - /** @name FrameSystemLimitsBlockWeights (477) */ + /** @name FrameSystemLimitsBlockWeights (478) */ interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: SpWeightsWeightV2Weight; readonly maxBlock: SpWeightsWeightV2Weight; readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass; } - /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (478) */ + /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (479) */ interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (479) */ + /** @name FrameSystemLimitsWeightsPerClass (480) */ interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: SpWeightsWeightV2Weight; readonly maxExtrinsic: Option; @@ -6008,25 +6029,25 @@ declare module "@polkadot/types/lookup" { readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (480) */ + /** @name FrameSystemLimitsBlockLength (481) */ interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportDispatchPerDispatchClassU32; } - /** @name FrameSupportDispatchPerDispatchClassU32 (481) */ + /** @name FrameSupportDispatchPerDispatchClassU32 (482) */ interface FrameSupportDispatchPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name SpWeightsRuntimeDbWeight (482) */ + /** @name SpWeightsRuntimeDbWeight (483) */ interface SpWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (483) */ + /** @name SpVersionRuntimeVersion (484) */ interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -6038,7 +6059,7 @@ declare module "@polkadot/types/lookup" { readonly stateVersion: u8; } - /** @name FrameSystemError (487) */ + /** @name FrameSystemError (488) */ interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -6061,7 +6082,7 @@ declare module "@polkadot/types/lookup" { | "Unauthorized"; } - /** @name SpConsensusBabeDigestsPreDigest (494) */ + /** @name SpConsensusBabeDigestsPreDigest (495) */ interface SpConsensusBabeDigestsPreDigest extends Enum { readonly isPrimary: boolean; readonly asPrimary: SpConsensusBabeDigestsPrimaryPreDigest; @@ -6072,39 +6093,39 @@ declare module "@polkadot/types/lookup" { readonly type: "Primary" | "SecondaryPlain" | "SecondaryVRF"; } - /** @name SpConsensusBabeDigestsPrimaryPreDigest (495) */ + /** @name SpConsensusBabeDigestsPrimaryPreDigest (496) */ interface SpConsensusBabeDigestsPrimaryPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; readonly vrfSignature: SpCoreSr25519VrfVrfSignature; } - /** @name SpCoreSr25519VrfVrfSignature (496) */ + /** @name SpCoreSr25519VrfVrfSignature (497) */ interface SpCoreSr25519VrfVrfSignature extends Struct { readonly preOutput: U8aFixed; readonly proof: U8aFixed; } - /** @name SpConsensusBabeDigestsSecondaryPlainPreDigest (497) */ + /** @name SpConsensusBabeDigestsSecondaryPlainPreDigest (498) */ interface SpConsensusBabeDigestsSecondaryPlainPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; } - /** @name SpConsensusBabeDigestsSecondaryVRFPreDigest (498) */ + /** @name SpConsensusBabeDigestsSecondaryVRFPreDigest (499) */ interface SpConsensusBabeDigestsSecondaryVRFPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; readonly vrfSignature: SpCoreSr25519VrfVrfSignature; } - /** @name SpConsensusBabeBabeEpochConfiguration (499) */ + /** @name SpConsensusBabeBabeEpochConfiguration (500) */ interface SpConsensusBabeBabeEpochConfiguration extends Struct { readonly c: ITuple<[u64, u64]>; readonly allowedSlots: SpConsensusBabeAllowedSlots; } - /** @name PalletBabeError (503) */ + /** @name PalletBabeError (504) */ interface PalletBabeError extends Enum { readonly isInvalidEquivocationProof: boolean; readonly isInvalidKeyOwnershipProof: boolean; @@ -6117,14 +6138,14 @@ declare module "@polkadot/types/lookup" { | "InvalidConfiguration"; } - /** @name PalletBalancesBalanceLock (505) */ + /** @name PalletBalancesBalanceLock (506) */ interface PalletBalancesBalanceLock extends Struct { readonly id: U8aFixed; readonly amount: u128; readonly reasons: PalletBalancesReasons; } - /** @name PalletBalancesReasons (506) */ + /** @name PalletBalancesReasons (507) */ interface PalletBalancesReasons extends Enum { readonly isFee: boolean; readonly isMisc: boolean; @@ -6132,13 +6153,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Fee" | "Misc" | "All"; } - /** @name PalletBalancesReserveData (509) */ + /** @name PalletBalancesReserveData (510) */ interface PalletBalancesReserveData extends Struct { readonly id: U8aFixed; readonly amount: u128; } - /** @name DancelightRuntimeRuntimeHoldReason (513) */ + /** @name DancelightRuntimeRuntimeHoldReason (514) */ interface DancelightRuntimeRuntimeHoldReason extends Enum { readonly isContainerRegistrar: boolean; readonly asContainerRegistrar: PalletRegistrarHoldReason; @@ -6149,31 +6170,31 @@ declare module "@polkadot/types/lookup" { readonly type: "ContainerRegistrar" | "DataPreservers" | "Preimage"; } - /** @name PalletRegistrarHoldReason (514) */ + /** @name PalletRegistrarHoldReason (515) */ interface PalletRegistrarHoldReason extends Enum { readonly isRegistrarDeposit: boolean; readonly type: "RegistrarDeposit"; } - /** @name PalletDataPreserversHoldReason (515) */ + /** @name PalletDataPreserversHoldReason (516) */ interface PalletDataPreserversHoldReason extends Enum { readonly isProfileDeposit: boolean; readonly type: "ProfileDeposit"; } - /** @name PalletPreimageHoldReason (516) */ + /** @name PalletPreimageHoldReason (517) */ interface PalletPreimageHoldReason extends Enum { readonly isPreimage: boolean; readonly type: "Preimage"; } - /** @name FrameSupportTokensMiscIdAmount (519) */ + /** @name FrameSupportTokensMiscIdAmount (520) */ interface FrameSupportTokensMiscIdAmount extends Struct { readonly id: Null; readonly amount: u128; } - /** @name PalletBalancesError (521) */ + /** @name PalletBalancesError (522) */ interface PalletBalancesError extends Enum { readonly isVestingBalance: boolean; readonly isLiquidityRestrictions: boolean; @@ -6202,26 +6223,26 @@ declare module "@polkadot/types/lookup" { | "DeltaZero"; } - /** @name PalletTransactionPaymentReleases (522) */ + /** @name PalletTransactionPaymentReleases (523) */ interface PalletTransactionPaymentReleases extends Enum { readonly isV1Ancient: boolean; readonly isV2: boolean; readonly type: "V1Ancient" | "V2"; } - /** @name SpStakingOffenceOffenceDetails (523) */ + /** @name SpStakingOffenceOffenceDetails (524) */ interface SpStakingOffenceOffenceDetails extends Struct { readonly offender: ITuple<[AccountId32, Null]>; readonly reporters: Vec; } - /** @name PalletRegistrarDepositInfo (535) */ + /** @name PalletRegistrarDepositInfo (536) */ interface PalletRegistrarDepositInfo extends Struct { readonly creator: AccountId32; readonly deposit: u128; } - /** @name PalletRegistrarError (536) */ + /** @name PalletRegistrarError (537) */ interface PalletRegistrarError extends Enum { readonly isParaIdAlreadyRegistered: boolean; readonly isParaIdNotRegistered: boolean; @@ -6260,7 +6281,7 @@ declare module "@polkadot/types/lookup" { | "WasmCodeNecessary"; } - /** @name PalletConfigurationHostConfiguration (537) */ + /** @name PalletConfigurationHostConfiguration (538) */ interface PalletConfigurationHostConfiguration extends Struct { readonly maxCollators: u32; readonly minOrchestratorCollators: u32; @@ -6273,13 +6294,13 @@ declare module "@polkadot/types/lookup" { readonly maxParachainCoresPercentage: Option; } - /** @name PalletConfigurationError (540) */ + /** @name PalletConfigurationError (541) */ interface PalletConfigurationError extends Enum { readonly isInvalidNewValue: boolean; readonly type: "InvalidNewValue"; } - /** @name PalletInvulnerablesError (542) */ + /** @name PalletInvulnerablesError (543) */ interface PalletInvulnerablesError extends Enum { readonly isTooManyInvulnerables: boolean; readonly isAlreadyInvulnerable: boolean; @@ -6294,26 +6315,26 @@ declare module "@polkadot/types/lookup" { | "UnableToDeriveCollatorId"; } - /** @name DpCollatorAssignmentAssignedCollatorsAccountId32 (543) */ + /** @name DpCollatorAssignmentAssignedCollatorsAccountId32 (544) */ interface DpCollatorAssignmentAssignedCollatorsAccountId32 extends Struct { readonly orchestratorChain: Vec; readonly containerChains: BTreeMap>; } - /** @name DpCollatorAssignmentAssignedCollatorsPublic (548) */ + /** @name DpCollatorAssignmentAssignedCollatorsPublic (549) */ interface DpCollatorAssignmentAssignedCollatorsPublic extends Struct { readonly orchestratorChain: Vec; readonly containerChains: BTreeMap>; } - /** @name TpTraitsContainerChainBlockInfo (556) */ + /** @name TpTraitsContainerChainBlockInfo (557) */ interface TpTraitsContainerChainBlockInfo extends Struct { readonly blockNumber: u32; readonly author: AccountId32; readonly latestSlotNumber: u64; } - /** @name PalletAuthorNotingError (557) */ + /** @name PalletAuthorNotingError (558) */ interface PalletAuthorNotingError extends Enum { readonly isFailedReading: boolean; readonly isFailedDecodingHeader: boolean; @@ -6332,7 +6353,7 @@ declare module "@polkadot/types/lookup" { | "NonAuraDigest"; } - /** @name PalletServicesPaymentError (558) */ + /** @name PalletServicesPaymentError (559) */ interface PalletServicesPaymentError extends Enum { readonly isInsufficientFundsToPurchaseCredits: boolean; readonly isInsufficientCredits: boolean; @@ -6340,7 +6361,7 @@ declare module "@polkadot/types/lookup" { readonly type: "InsufficientFundsToPurchaseCredits" | "InsufficientCredits" | "CreditPriceTooExpensive"; } - /** @name PalletDataPreserversRegisteredProfile (559) */ + /** @name PalletDataPreserversRegisteredProfile (560) */ interface PalletDataPreserversRegisteredProfile extends Struct { readonly account: AccountId32; readonly deposit: u128; @@ -6348,7 +6369,7 @@ declare module "@polkadot/types/lookup" { readonly assignment: Option>; } - /** @name PalletDataPreserversError (565) */ + /** @name PalletDataPreserversError (566) */ interface PalletDataPreserversError extends Enum { readonly isNoBootNodes: boolean; readonly isUnknownProfileId: boolean; @@ -6373,10 +6394,31 @@ declare module "@polkadot/types/lookup" { | "CantDeleteAssignedProfile"; } - /** @name SpCoreCryptoKeyTypeId (570) */ + /** @name TpTraitsActiveEraInfo (569) */ + interface TpTraitsActiveEraInfo extends Struct { + readonly index: u32; + readonly start: Option; + } + + /** @name PalletExternalValidatorsError (571) */ + interface PalletExternalValidatorsError extends Enum { + readonly isTooManyWhitelisted: boolean; + readonly isAlreadyWhitelisted: boolean; + readonly isNotWhitelisted: boolean; + readonly isNoKeysRegistered: boolean; + readonly isUnableToDeriveValidatorId: boolean; + readonly type: + | "TooManyWhitelisted" + | "AlreadyWhitelisted" + | "NotWhitelisted" + | "NoKeysRegistered" + | "UnableToDeriveValidatorId"; + } + + /** @name SpCoreCryptoKeyTypeId (576) */ interface SpCoreCryptoKeyTypeId extends U8aFixed {} - /** @name PalletSessionError (571) */ + /** @name PalletSessionError (577) */ interface PalletSessionError extends Enum { readonly isInvalidProof: boolean; readonly isNoAssociatedValidatorId: boolean; @@ -6386,7 +6428,7 @@ declare module "@polkadot/types/lookup" { readonly type: "InvalidProof" | "NoAssociatedValidatorId" | "DuplicatedKey" | "NoKeys" | "NoAccount"; } - /** @name PalletGrandpaStoredState (572) */ + /** @name PalletGrandpaStoredState (578) */ interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -6403,7 +6445,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Live" | "PendingPause" | "Paused" | "PendingResume"; } - /** @name PalletGrandpaStoredPendingChange (573) */ + /** @name PalletGrandpaStoredPendingChange (579) */ interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -6411,7 +6453,7 @@ declare module "@polkadot/types/lookup" { readonly forced: Option; } - /** @name PalletGrandpaError (575) */ + /** @name PalletGrandpaError (581) */ interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -6430,13 +6472,13 @@ declare module "@polkadot/types/lookup" { | "DuplicateOffenceReport"; } - /** @name PalletInflationRewardsChainsToRewardValue (578) */ + /** @name PalletInflationRewardsChainsToRewardValue (584) */ interface PalletInflationRewardsChainsToRewardValue extends Struct { readonly paraIds: Vec; readonly rewardsPerChain: u128; } - /** @name PalletTreasuryProposal (579) */ + /** @name PalletTreasuryProposal (585) */ interface PalletTreasuryProposal extends Struct { readonly proposer: AccountId32; readonly value: u128; @@ -6444,7 +6486,7 @@ declare module "@polkadot/types/lookup" { readonly bond: u128; } - /** @name PalletTreasurySpendStatus (581) */ + /** @name PalletTreasurySpendStatus (587) */ interface PalletTreasurySpendStatus extends Struct { readonly assetKind: Null; readonly amount: u128; @@ -6454,7 +6496,7 @@ declare module "@polkadot/types/lookup" { readonly status: PalletTreasuryPaymentState; } - /** @name PalletTreasuryPaymentState (582) */ + /** @name PalletTreasuryPaymentState (588) */ interface PalletTreasuryPaymentState extends Enum { readonly isPending: boolean; readonly isAttempted: boolean; @@ -6465,10 +6507,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Pending" | "Attempted" | "Failed"; } - /** @name FrameSupportPalletId (584) */ + /** @name FrameSupportPalletId (590) */ interface FrameSupportPalletId extends U8aFixed {} - /** @name PalletTreasuryError (585) */ + /** @name PalletTreasuryError (591) */ interface PalletTreasuryError extends Enum { readonly isInvalidIndex: boolean; readonly isTooManyApprovals: boolean; @@ -6495,7 +6537,7 @@ declare module "@polkadot/types/lookup" { | "Inconclusive"; } - /** @name PalletConvictionVotingVoteVoting (587) */ + /** @name PalletConvictionVotingVoteVoting (593) */ interface PalletConvictionVotingVoteVoting extends Enum { readonly isCasting: boolean; readonly asCasting: PalletConvictionVotingVoteCasting; @@ -6504,23 +6546,23 @@ declare module "@polkadot/types/lookup" { readonly type: "Casting" | "Delegating"; } - /** @name PalletConvictionVotingVoteCasting (588) */ + /** @name PalletConvictionVotingVoteCasting (594) */ interface PalletConvictionVotingVoteCasting extends Struct { readonly votes: Vec>; readonly delegations: PalletConvictionVotingDelegations; readonly prior: PalletConvictionVotingVotePriorLock; } - /** @name PalletConvictionVotingDelegations (592) */ + /** @name PalletConvictionVotingDelegations (598) */ interface PalletConvictionVotingDelegations extends Struct { readonly votes: u128; readonly capital: u128; } - /** @name PalletConvictionVotingVotePriorLock (593) */ + /** @name PalletConvictionVotingVotePriorLock (599) */ interface PalletConvictionVotingVotePriorLock extends ITuple<[u32, u128]> {} - /** @name PalletConvictionVotingVoteDelegating (594) */ + /** @name PalletConvictionVotingVoteDelegating (600) */ interface PalletConvictionVotingVoteDelegating extends Struct { readonly balance: u128; readonly target: AccountId32; @@ -6529,7 +6571,7 @@ declare module "@polkadot/types/lookup" { readonly prior: PalletConvictionVotingVotePriorLock; } - /** @name PalletConvictionVotingError (598) */ + /** @name PalletConvictionVotingError (604) */ interface PalletConvictionVotingError extends Enum { readonly isNotOngoing: boolean; readonly isNotVoter: boolean; @@ -6558,7 +6600,7 @@ declare module "@polkadot/types/lookup" { | "BadClass"; } - /** @name PalletReferendaReferendumInfoConvictionVotingTally (599) */ + /** @name PalletReferendaReferendumInfoConvictionVotingTally (605) */ interface PalletReferendaReferendumInfoConvictionVotingTally extends Enum { readonly isOngoing: boolean; readonly asOngoing: PalletReferendaReferendumStatusConvictionVotingTally; @@ -6575,7 +6617,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ongoing" | "Approved" | "Rejected" | "Cancelled" | "TimedOut" | "Killed"; } - /** @name PalletReferendaReferendumStatusConvictionVotingTally (600) */ + /** @name PalletReferendaReferendumStatusConvictionVotingTally (606) */ interface PalletReferendaReferendumStatusConvictionVotingTally extends Struct { readonly track: u16; readonly origin: DancelightRuntimeOriginCaller; @@ -6590,19 +6632,19 @@ declare module "@polkadot/types/lookup" { readonly alarm: Option]>>; } - /** @name PalletReferendaDeposit (601) */ + /** @name PalletReferendaDeposit (607) */ interface PalletReferendaDeposit extends Struct { readonly who: AccountId32; readonly amount: u128; } - /** @name PalletReferendaDecidingStatus (604) */ + /** @name PalletReferendaDecidingStatus (610) */ interface PalletReferendaDecidingStatus extends Struct { readonly since: u32; readonly confirming: Option; } - /** @name PalletReferendaTrackInfo (612) */ + /** @name PalletReferendaTrackInfo (618) */ interface PalletReferendaTrackInfo extends Struct { readonly name: Text; readonly maxDeciding: u32; @@ -6615,7 +6657,7 @@ declare module "@polkadot/types/lookup" { readonly minSupport: PalletReferendaCurve; } - /** @name PalletReferendaCurve (613) */ + /** @name PalletReferendaCurve (619) */ interface PalletReferendaCurve extends Enum { readonly isLinearDecreasing: boolean; readonly asLinearDecreasing: { @@ -6639,7 +6681,7 @@ declare module "@polkadot/types/lookup" { readonly type: "LinearDecreasing" | "SteppedDecreasing" | "Reciprocal"; } - /** @name PalletReferendaError (616) */ + /** @name PalletReferendaError (622) */ interface PalletReferendaError extends Enum { readonly isNotOngoing: boolean; readonly isHasDeposit: boolean; @@ -6672,12 +6714,12 @@ declare module "@polkadot/types/lookup" { | "PreimageStoredWithDifferentLength"; } - /** @name PalletRankedCollectiveMemberRecord (617) */ + /** @name PalletRankedCollectiveMemberRecord (623) */ interface PalletRankedCollectiveMemberRecord extends Struct { readonly rank: u16; } - /** @name PalletRankedCollectiveError (622) */ + /** @name PalletRankedCollectiveError (628) */ interface PalletRankedCollectiveError extends Enum { readonly isAlreadyMember: boolean; readonly isNotMember: boolean; @@ -6704,7 +6746,7 @@ declare module "@polkadot/types/lookup" { | "TooManyMembers"; } - /** @name PalletReferendaReferendumInfoRankedCollectiveTally (623) */ + /** @name PalletReferendaReferendumInfoRankedCollectiveTally (629) */ interface PalletReferendaReferendumInfoRankedCollectiveTally extends Enum { readonly isOngoing: boolean; readonly asOngoing: PalletReferendaReferendumStatusRankedCollectiveTally; @@ -6721,7 +6763,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ongoing" | "Approved" | "Rejected" | "Cancelled" | "TimedOut" | "Killed"; } - /** @name PalletReferendaReferendumStatusRankedCollectiveTally (624) */ + /** @name PalletReferendaReferendumStatusRankedCollectiveTally (630) */ interface PalletReferendaReferendumStatusRankedCollectiveTally extends Struct { readonly track: u16; readonly origin: DancelightRuntimeOriginCaller; @@ -6736,7 +6778,7 @@ declare module "@polkadot/types/lookup" { readonly alarm: Option]>>; } - /** @name PalletWhitelistError (627) */ + /** @name PalletWhitelistError (633) */ interface PalletWhitelistError extends Enum { readonly isUnavailablePreImage: boolean; readonly isUndecodableCall: boolean; @@ -6751,7 +6793,7 @@ declare module "@polkadot/types/lookup" { | "CallAlreadyWhitelisted"; } - /** @name PolkadotRuntimeParachainsConfigurationHostConfiguration (628) */ + /** @name PolkadotRuntimeParachainsConfigurationHostConfiguration (634) */ interface PolkadotRuntimeParachainsConfigurationHostConfiguration extends Struct { readonly maxCodeSize: u32; readonly maxHeadDataSize: u32; @@ -6790,19 +6832,19 @@ declare module "@polkadot/types/lookup" { readonly schedulerParams: PolkadotPrimitivesVstagingSchedulerParams; } - /** @name PolkadotRuntimeParachainsConfigurationPalletError (631) */ + /** @name PolkadotRuntimeParachainsConfigurationPalletError (637) */ interface PolkadotRuntimeParachainsConfigurationPalletError extends Enum { readonly isInvalidNewValue: boolean; readonly type: "InvalidNewValue"; } - /** @name PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker (634) */ + /** @name PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker (640) */ interface PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker extends Struct { readonly buffer: Vec>; readonly latestNumber: u32; } - /** @name PolkadotRuntimeParachainsInclusionCandidatePendingAvailability (638) */ + /** @name PolkadotRuntimeParachainsInclusionCandidatePendingAvailability (644) */ interface PolkadotRuntimeParachainsInclusionCandidatePendingAvailability extends Struct { readonly core: u32; readonly hash_: H256; @@ -6815,7 +6857,7 @@ declare module "@polkadot/types/lookup" { readonly backingGroup: u32; } - /** @name PolkadotRuntimeParachainsInclusionPalletError (639) */ + /** @name PolkadotRuntimeParachainsInclusionPalletError (645) */ interface PolkadotRuntimeParachainsInclusionPalletError extends Enum { readonly isValidatorIndexOutOfBounds: boolean; readonly isUnscheduledCandidate: boolean; @@ -6856,7 +6898,7 @@ declare module "@polkadot/types/lookup" { | "ParaHeadMismatch"; } - /** @name PolkadotPrimitivesV7ScrapedOnChainVotes (640) */ + /** @name PolkadotPrimitivesV7ScrapedOnChainVotes (646) */ interface PolkadotPrimitivesV7ScrapedOnChainVotes extends Struct { readonly session: u32; readonly backingValidatorsPerCandidate: Vec< @@ -6865,7 +6907,7 @@ declare module "@polkadot/types/lookup" { readonly disputes: Vec; } - /** @name PolkadotRuntimeParachainsParasInherentPalletError (645) */ + /** @name PolkadotRuntimeParachainsParasInherentPalletError (651) */ interface PolkadotRuntimeParachainsParasInherentPalletError extends Enum { readonly isTooManyInclusionInherents: boolean; readonly isInvalidParentHeader: boolean; @@ -6880,7 +6922,7 @@ declare module "@polkadot/types/lookup" { | "UnscheduledCandidate"; } - /** @name PolkadotRuntimeParachainsSchedulerPalletCoreOccupied (648) */ + /** @name PolkadotRuntimeParachainsSchedulerPalletCoreOccupied (654) */ interface PolkadotRuntimeParachainsSchedulerPalletCoreOccupied extends Enum { readonly isFree: boolean; readonly isParas: boolean; @@ -6888,14 +6930,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Free" | "Paras"; } - /** @name PolkadotRuntimeParachainsSchedulerPalletParasEntry (649) */ + /** @name PolkadotRuntimeParachainsSchedulerPalletParasEntry (655) */ interface PolkadotRuntimeParachainsSchedulerPalletParasEntry extends Struct { readonly assignment: PolkadotRuntimeParachainsSchedulerCommonAssignment; readonly availabilityTimeouts: u32; readonly ttl: u32; } - /** @name PolkadotRuntimeParachainsSchedulerCommonAssignment (650) */ + /** @name PolkadotRuntimeParachainsSchedulerCommonAssignment (656) */ interface PolkadotRuntimeParachainsSchedulerCommonAssignment extends Enum { readonly isPool: boolean; readonly asPool: { @@ -6907,7 +6949,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pool" | "Bulk"; } - /** @name PolkadotRuntimeParachainsParasPvfCheckActiveVoteState (655) */ + /** @name PolkadotRuntimeParachainsParasPvfCheckActiveVoteState (661) */ interface PolkadotRuntimeParachainsParasPvfCheckActiveVoteState extends Struct { readonly votesAccept: BitVec; readonly votesReject: BitVec; @@ -6916,7 +6958,7 @@ declare module "@polkadot/types/lookup" { readonly causes: Vec; } - /** @name PolkadotRuntimeParachainsParasPvfCheckCause (657) */ + /** @name PolkadotRuntimeParachainsParasPvfCheckCause (663) */ interface PolkadotRuntimeParachainsParasPvfCheckCause extends Enum { readonly isOnboarding: boolean; readonly asOnboarding: u32; @@ -6929,14 +6971,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Onboarding" | "Upgrade"; } - /** @name PolkadotRuntimeParachainsParasUpgradeStrategy (658) */ + /** @name PolkadotRuntimeParachainsParasUpgradeStrategy (664) */ interface PolkadotRuntimeParachainsParasUpgradeStrategy extends Enum { readonly isSetGoAheadSignal: boolean; readonly isApplyAtExpectedBlock: boolean; readonly type: "SetGoAheadSignal" | "ApplyAtExpectedBlock"; } - /** @name PolkadotRuntimeParachainsParasParaLifecycle (660) */ + /** @name PolkadotRuntimeParachainsParasParaLifecycle (666) */ interface PolkadotRuntimeParachainsParasParaLifecycle extends Enum { readonly isOnboarding: boolean; readonly isParathread: boolean; @@ -6955,32 +6997,32 @@ declare module "@polkadot/types/lookup" { | "OffboardingParachain"; } - /** @name PolkadotRuntimeParachainsParasParaPastCodeMeta (662) */ + /** @name PolkadotRuntimeParachainsParasParaPastCodeMeta (668) */ interface PolkadotRuntimeParachainsParasParaPastCodeMeta extends Struct { readonly upgradeTimes: Vec; readonly lastPruned: Option; } - /** @name PolkadotRuntimeParachainsParasReplacementTimes (664) */ + /** @name PolkadotRuntimeParachainsParasReplacementTimes (670) */ interface PolkadotRuntimeParachainsParasReplacementTimes extends Struct { readonly expectedAt: u32; readonly activatedAt: u32; } - /** @name PolkadotPrimitivesV7UpgradeGoAhead (666) */ + /** @name PolkadotPrimitivesV7UpgradeGoAhead (672) */ interface PolkadotPrimitivesV7UpgradeGoAhead extends Enum { readonly isAbort: boolean; readonly isGoAhead: boolean; readonly type: "Abort" | "GoAhead"; } - /** @name PolkadotPrimitivesV7UpgradeRestriction (667) */ + /** @name PolkadotPrimitivesV7UpgradeRestriction (673) */ interface PolkadotPrimitivesV7UpgradeRestriction extends Enum { readonly isPresent: boolean; readonly type: "Present"; } - /** @name PolkadotRuntimeParachainsParasPalletError (668) */ + /** @name PolkadotRuntimeParachainsParasPalletError (674) */ interface PolkadotRuntimeParachainsParasPalletError extends Enum { readonly isNotRegistered: boolean; readonly isCannotOnboard: boolean; @@ -7011,20 +7053,20 @@ declare module "@polkadot/types/lookup" { | "InvalidCode"; } - /** @name PolkadotRuntimeParachainsInitializerBufferedSessionChange (670) */ + /** @name PolkadotRuntimeParachainsInitializerBufferedSessionChange (676) */ interface PolkadotRuntimeParachainsInitializerBufferedSessionChange extends Struct { readonly validators: Vec; readonly queued: Vec; readonly sessionIndex: u32; } - /** @name PolkadotCorePrimitivesInboundDownwardMessage (672) */ + /** @name PolkadotCorePrimitivesInboundDownwardMessage (678) */ interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct { readonly sentAt: u32; readonly msg: Bytes; } - /** @name PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest (673) */ + /** @name PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest (679) */ interface PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest extends Struct { readonly confirmed: bool; readonly age: u32; @@ -7034,7 +7076,7 @@ declare module "@polkadot/types/lookup" { readonly maxTotalSize: u32; } - /** @name PolkadotRuntimeParachainsHrmpHrmpChannel (675) */ + /** @name PolkadotRuntimeParachainsHrmpHrmpChannel (681) */ interface PolkadotRuntimeParachainsHrmpHrmpChannel extends Struct { readonly maxCapacity: u32; readonly maxTotalSize: u32; @@ -7046,13 +7088,13 @@ declare module "@polkadot/types/lookup" { readonly recipientDeposit: u128; } - /** @name PolkadotCorePrimitivesInboundHrmpMessage (677) */ + /** @name PolkadotCorePrimitivesInboundHrmpMessage (683) */ interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct { readonly sentAt: u32; readonly data: Bytes; } - /** @name PolkadotRuntimeParachainsHrmpPalletError (680) */ + /** @name PolkadotRuntimeParachainsHrmpPalletError (686) */ interface PolkadotRuntimeParachainsHrmpPalletError extends Enum { readonly isOpenHrmpChannelToSelf: boolean; readonly isOpenHrmpChannelInvalidRecipient: boolean; @@ -7097,7 +7139,7 @@ declare module "@polkadot/types/lookup" { | "ChannelCreationNotAuthorized"; } - /** @name PolkadotPrimitivesV7SessionInfo (682) */ + /** @name PolkadotPrimitivesV7SessionInfo (688) */ interface PolkadotPrimitivesV7SessionInfo extends Struct { readonly activeValidatorIndices: Vec; readonly randomSeed: U8aFixed; @@ -7114,13 +7156,13 @@ declare module "@polkadot/types/lookup" { readonly neededApprovals: u32; } - /** @name PolkadotPrimitivesV7IndexedVecValidatorIndex (683) */ + /** @name PolkadotPrimitivesV7IndexedVecValidatorIndex (689) */ interface PolkadotPrimitivesV7IndexedVecValidatorIndex extends Vec {} - /** @name PolkadotPrimitivesV7IndexedVecGroupIndex (684) */ + /** @name PolkadotPrimitivesV7IndexedVecGroupIndex (690) */ interface PolkadotPrimitivesV7IndexedVecGroupIndex extends Vec> {} - /** @name PolkadotPrimitivesV7DisputeState (686) */ + /** @name PolkadotPrimitivesV7DisputeState (692) */ interface PolkadotPrimitivesV7DisputeState extends Struct { readonly validatorsFor: BitVec; readonly validatorsAgainst: BitVec; @@ -7128,7 +7170,7 @@ declare module "@polkadot/types/lookup" { readonly concludedAt: Option; } - /** @name PolkadotRuntimeParachainsDisputesPalletError (688) */ + /** @name PolkadotRuntimeParachainsDisputesPalletError (694) */ interface PolkadotRuntimeParachainsDisputesPalletError extends Enum { readonly isDuplicateDisputeStatementSets: boolean; readonly isAncientDisputeStatement: boolean; @@ -7151,13 +7193,13 @@ declare module "@polkadot/types/lookup" { | "UnconfirmedDispute"; } - /** @name PolkadotPrimitivesV7SlashingPendingSlashes (689) */ + /** @name PolkadotPrimitivesV7SlashingPendingSlashes (695) */ interface PolkadotPrimitivesV7SlashingPendingSlashes extends Struct { readonly keys_: BTreeMap; readonly kind: PolkadotPrimitivesV7SlashingSlashingOffenceKind; } - /** @name PolkadotRuntimeParachainsDisputesSlashingPalletError (693) */ + /** @name PolkadotRuntimeParachainsDisputesSlashingPalletError (699) */ interface PolkadotRuntimeParachainsDisputesSlashingPalletError extends Enum { readonly isInvalidKeyOwnershipProof: boolean; readonly isInvalidSessionIndex: boolean; @@ -7174,7 +7216,7 @@ declare module "@polkadot/types/lookup" { | "DuplicateSlashingReport"; } - /** @name PalletMessageQueueBookState (694) */ + /** @name PalletMessageQueueBookState (700) */ interface PalletMessageQueueBookState extends Struct { readonly begin: u32; readonly end: u32; @@ -7184,13 +7226,13 @@ declare module "@polkadot/types/lookup" { readonly size_: u64; } - /** @name PalletMessageQueueNeighbours (696) */ + /** @name PalletMessageQueueNeighbours (702) */ interface PalletMessageQueueNeighbours extends Struct { readonly prev: PolkadotRuntimeParachainsInclusionAggregateMessageOrigin; readonly next: PolkadotRuntimeParachainsInclusionAggregateMessageOrigin; } - /** @name PalletMessageQueuePage (698) */ + /** @name PalletMessageQueuePage (704) */ interface PalletMessageQueuePage extends Struct { readonly remaining: u32; readonly remainingSize: u32; @@ -7200,7 +7242,7 @@ declare module "@polkadot/types/lookup" { readonly heap: Bytes; } - /** @name PalletMessageQueueError (700) */ + /** @name PalletMessageQueueError (706) */ interface PalletMessageQueueError extends Enum { readonly isNotReapable: boolean; readonly isNoPage: boolean; @@ -7223,13 +7265,13 @@ declare module "@polkadot/types/lookup" { | "RecursiveDisallowed"; } - /** @name PolkadotRuntimeParachainsAssignerOnDemandTypesCoreAffinityCount (701) */ + /** @name PolkadotRuntimeParachainsAssignerOnDemandTypesCoreAffinityCount (707) */ interface PolkadotRuntimeParachainsAssignerOnDemandTypesCoreAffinityCount extends Struct { readonly coreIndex: u32; readonly count: u32; } - /** @name PolkadotRuntimeParachainsAssignerOnDemandTypesQueueStatusType (702) */ + /** @name PolkadotRuntimeParachainsAssignerOnDemandTypesQueueStatusType (708) */ interface PolkadotRuntimeParachainsAssignerOnDemandTypesQueueStatusType extends Struct { readonly traffic: u128; readonly nextIndex: u32; @@ -7237,33 +7279,33 @@ declare module "@polkadot/types/lookup" { readonly freedIndices: BinaryHeapReverseQueueIndex; } - /** @name BinaryHeapReverseQueueIndex (704) */ + /** @name BinaryHeapReverseQueueIndex (710) */ interface BinaryHeapReverseQueueIndex extends Vec {} - /** @name BinaryHeapEnqueuedOrder (707) */ + /** @name BinaryHeapEnqueuedOrder (713) */ interface BinaryHeapEnqueuedOrder extends Vec {} - /** @name PolkadotRuntimeParachainsAssignerOnDemandTypesEnqueuedOrder (708) */ + /** @name PolkadotRuntimeParachainsAssignerOnDemandTypesEnqueuedOrder (714) */ interface PolkadotRuntimeParachainsAssignerOnDemandTypesEnqueuedOrder extends Struct { readonly paraId: u32; readonly idx: u32; } - /** @name PolkadotRuntimeParachainsAssignerOnDemandPalletError (712) */ + /** @name PolkadotRuntimeParachainsAssignerOnDemandPalletError (718) */ interface PolkadotRuntimeParachainsAssignerOnDemandPalletError extends Enum { readonly isQueueFull: boolean; readonly isSpotPriceHigherThanMaxAmount: boolean; readonly type: "QueueFull" | "SpotPriceHigherThanMaxAmount"; } - /** @name PolkadotRuntimeCommonParasRegistrarParaInfo (713) */ + /** @name PolkadotRuntimeCommonParasRegistrarParaInfo (719) */ interface PolkadotRuntimeCommonParasRegistrarParaInfo extends Struct { readonly manager: AccountId32; readonly deposit: u128; readonly locked: Option; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletError (715) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletError (721) */ interface PolkadotRuntimeCommonParasRegistrarPalletError extends Enum { readonly isNotRegistered: boolean; readonly isAlreadyRegistered: boolean; @@ -7296,33 +7338,33 @@ declare module "@polkadot/types/lookup" { | "CannotSwap"; } - /** @name PalletUtilityError (716) */ + /** @name PalletUtilityError (722) */ interface PalletUtilityError extends Enum { readonly isTooManyCalls: boolean; readonly type: "TooManyCalls"; } - /** @name PalletIdentityRegistration (718) */ + /** @name PalletIdentityRegistration (724) */ interface PalletIdentityRegistration extends Struct { readonly judgements: Vec>; readonly deposit: u128; readonly info: PalletIdentityLegacyIdentityInfo; } - /** @name PalletIdentityRegistrarInfo (727) */ + /** @name PalletIdentityRegistrarInfo (733) */ interface PalletIdentityRegistrarInfo extends Struct { readonly account: AccountId32; readonly fee: u128; readonly fields: u64; } - /** @name PalletIdentityAuthorityProperties (729) */ + /** @name PalletIdentityAuthorityProperties (735) */ interface PalletIdentityAuthorityProperties extends Struct { readonly suffix: Bytes; readonly allocation: u32; } - /** @name PalletIdentityError (732) */ + /** @name PalletIdentityError (738) */ interface PalletIdentityError extends Enum { readonly isTooManySubAccounts: boolean; readonly isNotFound: boolean; @@ -7379,7 +7421,7 @@ declare module "@polkadot/types/lookup" { | "NotExpired"; } - /** @name PalletSchedulerScheduled (735) */ + /** @name PalletSchedulerScheduled (741) */ interface PalletSchedulerScheduled extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -7388,14 +7430,14 @@ declare module "@polkadot/types/lookup" { readonly origin: DancelightRuntimeOriginCaller; } - /** @name PalletSchedulerRetryConfig (737) */ + /** @name PalletSchedulerRetryConfig (743) */ interface PalletSchedulerRetryConfig extends Struct { readonly totalRetries: u8; readonly remaining: u8; readonly period: u32; } - /** @name PalletSchedulerError (738) */ + /** @name PalletSchedulerError (744) */ interface PalletSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -7405,21 +7447,21 @@ declare module "@polkadot/types/lookup" { readonly type: "FailedToSchedule" | "NotFound" | "TargetBlockNumberInPast" | "RescheduleNoChange" | "Named"; } - /** @name PalletProxyProxyDefinition (741) */ + /** @name PalletProxyProxyDefinition (747) */ interface PalletProxyProxyDefinition extends Struct { readonly delegate: AccountId32; readonly proxyType: DancelightRuntimeProxyType; readonly delay: u32; } - /** @name PalletProxyAnnouncement (745) */ + /** @name PalletProxyAnnouncement (751) */ interface PalletProxyAnnouncement extends Struct { readonly real: AccountId32; readonly callHash: H256; readonly height: u32; } - /** @name PalletProxyError (747) */ + /** @name PalletProxyError (753) */ interface PalletProxyError extends Enum { readonly isTooMany: boolean; readonly isNotFound: boolean; @@ -7440,7 +7482,7 @@ declare module "@polkadot/types/lookup" { | "NoSelfProxy"; } - /** @name PalletMultisigMultisig (749) */ + /** @name PalletMultisigMultisig (755) */ interface PalletMultisigMultisig extends Struct { readonly when: PalletMultisigTimepoint; readonly deposit: u128; @@ -7448,7 +7490,7 @@ declare module "@polkadot/types/lookup" { readonly approvals: Vec; } - /** @name PalletMultisigError (751) */ + /** @name PalletMultisigError (757) */ interface PalletMultisigError extends Enum { readonly isMinimumThreshold: boolean; readonly isAlreadyApproved: boolean; @@ -7481,7 +7523,7 @@ declare module "@polkadot/types/lookup" { | "AlreadyStored"; } - /** @name PalletPreimageOldRequestStatus (752) */ + /** @name PalletPreimageOldRequestStatus (758) */ interface PalletPreimageOldRequestStatus extends Enum { readonly isUnrequested: boolean; readonly asUnrequested: { @@ -7497,7 +7539,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unrequested" | "Requested"; } - /** @name PalletPreimageRequestStatus (755) */ + /** @name PalletPreimageRequestStatus (761) */ interface PalletPreimageRequestStatus extends Enum { readonly isUnrequested: boolean; readonly asUnrequested: { @@ -7513,7 +7555,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unrequested" | "Requested"; } - /** @name PalletPreimageError (760) */ + /** @name PalletPreimageError (766) */ interface PalletPreimageError extends Enum { readonly isTooBig: boolean; readonly isAlreadyNoted: boolean; @@ -7536,7 +7578,7 @@ declare module "@polkadot/types/lookup" { | "NoCost"; } - /** @name PalletAssetRateError (761) */ + /** @name PalletAssetRateError (767) */ interface PalletAssetRateError extends Enum { readonly isUnknownAssetKind: boolean; readonly isAlreadyExists: boolean; @@ -7544,7 +7586,7 @@ declare module "@polkadot/types/lookup" { readonly type: "UnknownAssetKind" | "AlreadyExists" | "Overflow"; } - /** @name PalletXcmQueryStatus (762) */ + /** @name PalletXcmQueryStatus (768) */ interface PalletXcmQueryStatus extends Enum { readonly isPending: boolean; readonly asPending: { @@ -7566,7 +7608,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pending" | "VersionNotifier" | "Ready"; } - /** @name XcmVersionedResponse (766) */ + /** @name XcmVersionedResponse (772) */ interface XcmVersionedResponse extends Enum { readonly isV2: boolean; readonly asV2: XcmV2Response; @@ -7577,7 +7619,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name PalletXcmVersionMigrationStage (772) */ + /** @name PalletXcmVersionMigrationStage (778) */ interface PalletXcmVersionMigrationStage extends Enum { readonly isMigrateSupportedVersion: boolean; readonly isMigrateVersionNotifiers: boolean; @@ -7591,7 +7633,7 @@ declare module "@polkadot/types/lookup" { | "MigrateAndNotifyOldTargets"; } - /** @name PalletXcmRemoteLockedFungibleRecord (774) */ + /** @name PalletXcmRemoteLockedFungibleRecord (780) */ interface PalletXcmRemoteLockedFungibleRecord extends Struct { readonly amount: u128; readonly owner: XcmVersionedLocation; @@ -7599,7 +7641,7 @@ declare module "@polkadot/types/lookup" { readonly consumers: Vec>; } - /** @name PalletXcmError (781) */ + /** @name PalletXcmError (787) */ interface PalletXcmError extends Enum { readonly isUnreachable: boolean; readonly isSendFailure: boolean; @@ -7652,7 +7694,7 @@ declare module "@polkadot/types/lookup" { | "LocalExecutionIncomplete"; } - /** @name PalletMigrationsError (782) */ + /** @name PalletMigrationsError (788) */ interface PalletMigrationsError extends Enum { readonly isPreimageMissing: boolean; readonly isWrongUpperBound: boolean; @@ -7661,7 +7703,7 @@ declare module "@polkadot/types/lookup" { readonly type: "PreimageMissing" | "WrongUpperBound" | "PreimageIsTooBig" | "PreimageAlreadyExists"; } - /** @name PalletBeefyError (786) */ + /** @name PalletBeefyError (792) */ interface PalletBeefyError extends Enum { readonly isInvalidKeyOwnershipProof: boolean; readonly isInvalidDoubleVotingProof: boolean; @@ -7680,50 +7722,50 @@ declare module "@polkadot/types/lookup" { | "InvalidConfiguration"; } - /** @name SpConsensusBeefyMmrBeefyAuthoritySet (787) */ + /** @name SpConsensusBeefyMmrBeefyAuthoritySet (793) */ interface SpConsensusBeefyMmrBeefyAuthoritySet extends Struct { readonly id: u64; readonly len: u32; readonly keysetCommitment: H256; } - /** @name SnowbridgeBeaconPrimitivesCompactBeaconState (788) */ + /** @name SnowbridgeBeaconPrimitivesCompactBeaconState (794) */ interface SnowbridgeBeaconPrimitivesCompactBeaconState extends Struct { readonly slot: Compact; readonly blockRootsRoot: H256; } - /** @name SnowbridgeBeaconPrimitivesSyncCommitteePrepared (789) */ + /** @name SnowbridgeBeaconPrimitivesSyncCommitteePrepared (795) */ interface SnowbridgeBeaconPrimitivesSyncCommitteePrepared extends Struct { readonly root: H256; readonly pubkeys: Vec; readonly aggregatePubkey: SnowbridgeMilagroBlsKeysPublicKey; } - /** @name SnowbridgeMilagroBlsKeysPublicKey (791) */ + /** @name SnowbridgeMilagroBlsKeysPublicKey (797) */ interface SnowbridgeMilagroBlsKeysPublicKey extends Struct { readonly point: SnowbridgeAmclBls381Ecp; } - /** @name SnowbridgeAmclBls381Ecp (792) */ + /** @name SnowbridgeAmclBls381Ecp (798) */ interface SnowbridgeAmclBls381Ecp extends Struct { readonly x: SnowbridgeAmclBls381Fp; readonly y: SnowbridgeAmclBls381Fp; readonly z: SnowbridgeAmclBls381Fp; } - /** @name SnowbridgeAmclBls381Fp (793) */ + /** @name SnowbridgeAmclBls381Fp (799) */ interface SnowbridgeAmclBls381Fp extends Struct { readonly x: SnowbridgeAmclBls381Big; readonly xes: i32; } - /** @name SnowbridgeAmclBls381Big (794) */ + /** @name SnowbridgeAmclBls381Big (800) */ interface SnowbridgeAmclBls381Big extends Struct { readonly w: Vec; } - /** @name SnowbridgeBeaconPrimitivesForkVersions (797) */ + /** @name SnowbridgeBeaconPrimitivesForkVersions (803) */ interface SnowbridgeBeaconPrimitivesForkVersions extends Struct { readonly genesis: SnowbridgeBeaconPrimitivesFork; readonly altair: SnowbridgeBeaconPrimitivesFork; @@ -7732,13 +7774,13 @@ declare module "@polkadot/types/lookup" { readonly deneb: SnowbridgeBeaconPrimitivesFork; } - /** @name SnowbridgeBeaconPrimitivesFork (798) */ + /** @name SnowbridgeBeaconPrimitivesFork (804) */ interface SnowbridgeBeaconPrimitivesFork extends Struct { readonly version: U8aFixed; readonly epoch: u64; } - /** @name SnowbridgePalletEthereumClientError (799) */ + /** @name SnowbridgePalletEthereumClientError (805) */ interface SnowbridgePalletEthereumClientError extends Enum { readonly isSkippedSyncCommitteePeriod: boolean; readonly isSyncCommitteeUpdateRequired: boolean; @@ -7794,7 +7836,7 @@ declare module "@polkadot/types/lookup" { | "Halted"; } - /** @name SnowbridgeBeaconPrimitivesBlsBlsError (800) */ + /** @name SnowbridgeBeaconPrimitivesBlsBlsError (806) */ interface SnowbridgeBeaconPrimitivesBlsBlsError extends Enum { readonly isInvalidSignature: boolean; readonly isInvalidPublicKey: boolean; @@ -7807,7 +7849,7 @@ declare module "@polkadot/types/lookup" { | "SignatureVerificationFailed"; } - /** @name PolkadotRuntimeCommonParasSudoWrapperPalletError (801) */ + /** @name PolkadotRuntimeCommonParasSudoWrapperPalletError (807) */ interface PolkadotRuntimeCommonParasSudoWrapperPalletError extends Enum { readonly isParaDoesntExist: boolean; readonly isParaAlreadyExists: boolean; @@ -7830,45 +7872,45 @@ declare module "@polkadot/types/lookup" { | "TooManyCores"; } - /** @name PalletSudoError (802) */ + /** @name PalletSudoError (808) */ interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: "RequireSudo"; } - /** @name FrameSystemExtensionsCheckNonZeroSender (805) */ + /** @name FrameSystemExtensionsCheckNonZeroSender (811) */ type FrameSystemExtensionsCheckNonZeroSender = Null; - /** @name FrameSystemExtensionsCheckSpecVersion (806) */ + /** @name FrameSystemExtensionsCheckSpecVersion (812) */ type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckTxVersion (807) */ + /** @name FrameSystemExtensionsCheckTxVersion (813) */ type FrameSystemExtensionsCheckTxVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (808) */ + /** @name FrameSystemExtensionsCheckGenesis (814) */ type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (811) */ + /** @name FrameSystemExtensionsCheckNonce (817) */ interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name FrameSystemExtensionsCheckWeight (812) */ + /** @name FrameSystemExtensionsCheckWeight (818) */ type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTransactionPaymentChargeTransactionPayment (813) */ + /** @name PalletTransactionPaymentChargeTransactionPayment (819) */ interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name FrameMetadataHashExtensionCheckMetadataHash (814) */ + /** @name FrameMetadataHashExtensionCheckMetadataHash (820) */ interface FrameMetadataHashExtensionCheckMetadataHash extends Struct { readonly mode: FrameMetadataHashExtensionMode; } - /** @name FrameMetadataHashExtensionMode (815) */ + /** @name FrameMetadataHashExtensionMode (821) */ interface FrameMetadataHashExtensionMode extends Enum { readonly isDisabled: boolean; readonly isEnabled: boolean; readonly type: "Disabled" | "Enabled"; } - /** @name DancelightRuntimeRuntime (816) */ + /** @name DancelightRuntimeRuntime (822) */ type DancelightRuntimeRuntime = Null; } // declare module diff --git a/typescript-api/src/flashbox/interfaces/augment-api-events.ts b/typescript-api/src/flashbox/interfaces/augment-api-events.ts index 4d57e2607..249655f77 100644 --- a/typescript-api/src/flashbox/interfaces/augment-api-events.ts +++ b/typescript-api/src/flashbox/interfaces/augment-api-events.ts @@ -6,7 +6,7 @@ import "@polkadot/api-base/types/events"; import type { ApiTypes, AugmentedEvent } from "@polkadot/api-base/types"; -import type { Bytes, Null, Option, Result, U8aFixed, Vec, bool, u128, u16, u32, u64 } from "@polkadot/types-codec"; +import type { Bytes, Null, Option, Result, U8aFixed, bool, u128, u16, u32, u64 } from "@polkadot/types-codec"; import type { ITuple } from "@polkadot/types-codec/types"; import type { AccountId32, H256 } from "@polkadot/types/interfaces/runtime"; import type { @@ -255,21 +255,10 @@ declare module "@polkadot/api-base/types/events" { [key: string]: AugmentedEvent; }; invulnerables: { - /** - * An account was unable to be added to the Invulnerables because they did not have keys registered. Other - * Invulnerables may have been set. - */ - InvalidInvulnerableSkipped: AugmentedEvent; /** A new Invulnerable was added. */ InvulnerableAdded: AugmentedEvent; /** An Invulnerable was removed. */ InvulnerableRemoved: AugmentedEvent; - /** New Invulnerables were set. */ - NewInvulnerables: AugmentedEvent< - ApiType, - [invulnerables: Vec], - { invulnerables: Vec } - >; /** Generic event */ [key: string]: AugmentedEvent; }; diff --git a/typescript-api/src/flashbox/interfaces/augment-api-query.ts b/typescript-api/src/flashbox/interfaces/augment-api-query.ts index d4923af5a..147f8285e 100644 --- a/typescript-api/src/flashbox/interfaces/augment-api-query.ts +++ b/typescript-api/src/flashbox/interfaces/augment-api-query.ts @@ -381,7 +381,7 @@ declare module "@polkadot/api-base/types/storage" { [key: string]: QueryableStorageEntry; }; invulnerables: { - /** The invulnerable, permissioned collators. This list must be sorted. */ + /** The invulnerable, permissioned collators. */ invulnerables: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** Generic query */ diff --git a/typescript-api/src/flashbox/interfaces/augment-api-tx.ts b/typescript-api/src/flashbox/interfaces/augment-api-tx.ts index 71a8aac1f..17d534bdc 100644 --- a/typescript-api/src/flashbox/interfaces/augment-api-tx.ts +++ b/typescript-api/src/flashbox/interfaces/augment-api-tx.ts @@ -876,7 +876,7 @@ declare module "@polkadot/api-base/types/submittable" { [AccountId32] >; /** - * Remove an account `who` from the list of `Invulnerables` collators. `Invulnerables` must be sorted. + * Remove an account `who` from the list of `Invulnerables` collators. * * The origin for this call must be the `UpdateOrigin`. */ diff --git a/typescript-api/src/flashbox/interfaces/lookup.ts b/typescript-api/src/flashbox/interfaces/lookup.ts index 3b213e26a..229c9d593 100644 --- a/typescript-api/src/flashbox/interfaces/lookup.ts +++ b/typescript-api/src/flashbox/interfaces/lookup.ts @@ -683,21 +683,15 @@ export default { /** Lookup68: pallet_invulnerables::pallet::Event */ PalletInvulnerablesEvent: { _enum: { - NewInvulnerables: { - invulnerables: "Vec", - }, InvulnerableAdded: { accountId: "AccountId32", }, InvulnerableRemoved: { accountId: "AccountId32", }, - InvalidInvulnerableSkipped: { - accountId: "AccountId32", - }, }, }, - /** Lookup70: pallet_session::pallet::Event */ + /** Lookup69: pallet_session::pallet::Event */ PalletSessionEvent: { _enum: { NewSession: { @@ -705,7 +699,7 @@ export default { }, }, }, - /** Lookup71: pallet_inflation_rewards::pallet::Event */ + /** Lookup70: pallet_inflation_rewards::pallet::Event */ PalletInflationRewardsEvent: { _enum: { RewardedOrchestrator: { @@ -719,7 +713,7 @@ export default { }, }, }, - /** Lookup72: pallet_treasury::pallet::Event */ + /** Lookup71: pallet_treasury::pallet::Event */ PalletTreasuryEvent: { _enum: { Spending: { @@ -772,11 +766,11 @@ export default { }, }, }, - /** Lookup73: pallet_root_testing::pallet::Event */ + /** Lookup72: pallet_root_testing::pallet::Event */ PalletRootTestingEvent: { _enum: ["DefensiveTestCall"], }, - /** Lookup74: frame_system::Phase */ + /** Lookup73: frame_system::Phase */ FrameSystemPhase: { _enum: { ApplyExtrinsic: "u32", @@ -784,17 +778,17 @@ export default { Initialization: "Null", }, }, - /** Lookup78: frame_system::LastRuntimeUpgradeInfo */ + /** Lookup77: frame_system::LastRuntimeUpgradeInfo */ FrameSystemLastRuntimeUpgradeInfo: { specVersion: "Compact", specName: "Text", }, - /** Lookup81: frame_system::CodeUpgradeAuthorization */ + /** Lookup80: frame_system::CodeUpgradeAuthorization */ FrameSystemCodeUpgradeAuthorization: { codeHash: "H256", checkVersion: "bool", }, - /** Lookup82: frame_system::pallet::Call */ + /** Lookup81: frame_system::pallet::Call */ FrameSystemCall: { _enum: { remark: { @@ -837,41 +831,41 @@ export default { }, }, }, - /** Lookup86: frame_system::limits::BlockWeights */ + /** Lookup85: frame_system::limits::BlockWeights */ FrameSystemLimitsBlockWeights: { baseBlock: "SpWeightsWeightV2Weight", maxBlock: "SpWeightsWeightV2Weight", perClass: "FrameSupportDispatchPerDispatchClassWeightsPerClass", }, - /** Lookup87: frame_support::dispatch::PerDispatchClass */ + /** Lookup86: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassWeightsPerClass: { normal: "FrameSystemLimitsWeightsPerClass", operational: "FrameSystemLimitsWeightsPerClass", mandatory: "FrameSystemLimitsWeightsPerClass", }, - /** Lookup88: frame_system::limits::WeightsPerClass */ + /** Lookup87: frame_system::limits::WeightsPerClass */ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: "SpWeightsWeightV2Weight", maxExtrinsic: "Option", maxTotal: "Option", reserved: "Option", }, - /** Lookup90: frame_system::limits::BlockLength */ + /** Lookup89: frame_system::limits::BlockLength */ FrameSystemLimitsBlockLength: { max: "FrameSupportDispatchPerDispatchClassU32", }, - /** Lookup91: frame_support::dispatch::PerDispatchClass */ + /** Lookup90: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassU32: { normal: "u32", operational: "u32", mandatory: "u32", }, - /** Lookup92: sp_weights::RuntimeDbWeight */ + /** Lookup91: sp_weights::RuntimeDbWeight */ SpWeightsRuntimeDbWeight: { read: "u64", write: "u64", }, - /** Lookup93: sp_version::RuntimeVersion */ + /** Lookup92: sp_version::RuntimeVersion */ SpVersionRuntimeVersion: { specName: "Text", implName: "Text", @@ -882,7 +876,7 @@ export default { transactionVersion: "u32", stateVersion: "u8", }, - /** Lookup98: frame_system::pallet::Error */ + /** Lookup97: frame_system::pallet::Error */ FrameSystemError: { _enum: [ "InvalidSpecName", @@ -896,49 +890,49 @@ export default { "Unauthorized", ], }, - /** Lookup100: cumulus_pallet_parachain_system::unincluded_segment::Ancestor */ + /** Lookup99: cumulus_pallet_parachain_system::unincluded_segment::Ancestor */ CumulusPalletParachainSystemUnincludedSegmentAncestor: { usedBandwidth: "CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth", paraHeadHash: "Option", consumedGoAheadSignal: "Option", }, - /** Lookup101: cumulus_pallet_parachain_system::unincluded_segment::UsedBandwidth */ + /** Lookup100: cumulus_pallet_parachain_system::unincluded_segment::UsedBandwidth */ CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth: { umpMsgCount: "u32", umpTotalBytes: "u32", hrmpOutgoing: "BTreeMap", }, - /** Lookup103: cumulus_pallet_parachain_system::unincluded_segment::HrmpChannelUpdate */ + /** Lookup102: cumulus_pallet_parachain_system::unincluded_segment::HrmpChannelUpdate */ CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate: { msgCount: "u32", totalBytes: "u32", }, - /** Lookup108: polkadot_primitives::v7::UpgradeGoAhead */ + /** Lookup107: polkadot_primitives::v7::UpgradeGoAhead */ PolkadotPrimitivesV7UpgradeGoAhead: { _enum: ["Abort", "GoAhead"], }, - /** Lookup109: cumulus_pallet_parachain_system::unincluded_segment::SegmentTracker */ + /** Lookup108: cumulus_pallet_parachain_system::unincluded_segment::SegmentTracker */ CumulusPalletParachainSystemUnincludedSegmentSegmentTracker: { usedBandwidth: "CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth", hrmpWatermark: "Option", consumedGoAheadSignal: "Option", }, - /** Lookup111: polkadot_primitives::v7::PersistedValidationData */ + /** Lookup110: polkadot_primitives::v7::PersistedValidationData */ PolkadotPrimitivesV7PersistedValidationData: { parentHead: "Bytes", relayParentNumber: "u32", relayParentStorageRoot: "H256", maxPovSize: "u32", }, - /** Lookup114: polkadot_primitives::v7::UpgradeRestriction */ + /** Lookup113: polkadot_primitives::v7::UpgradeRestriction */ PolkadotPrimitivesV7UpgradeRestriction: { _enum: ["Present"], }, - /** Lookup115: sp_trie::storage_proof::StorageProof */ + /** Lookup114: sp_trie::storage_proof::StorageProof */ SpTrieStorageProof: { trieNodes: "BTreeSet", }, - /** Lookup117: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot */ + /** Lookup116: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot */ CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: { dmqMqcHead: "H256", relayDispatchQueueRemainingCapacity: @@ -946,12 +940,12 @@ export default { ingressChannels: "Vec<(u32,PolkadotPrimitivesV7AbridgedHrmpChannel)>", egressChannels: "Vec<(u32,PolkadotPrimitivesV7AbridgedHrmpChannel)>", }, - /** Lookup118: cumulus_pallet_parachain_system::relay_state_snapshot::RelayDispatchQueueRemainingCapacity */ + /** Lookup117: cumulus_pallet_parachain_system::relay_state_snapshot::RelayDispatchQueueRemainingCapacity */ CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity: { remainingCount: "u32", remainingSize: "u32", }, - /** Lookup121: polkadot_primitives::v7::AbridgedHrmpChannel */ + /** Lookup120: polkadot_primitives::v7::AbridgedHrmpChannel */ PolkadotPrimitivesV7AbridgedHrmpChannel: { maxCapacity: "u32", maxTotalSize: "u32", @@ -960,7 +954,7 @@ export default { totalSize: "u32", mqcHead: "Option", }, - /** Lookup122: polkadot_primitives::v7::AbridgedHostConfiguration */ + /** Lookup121: polkadot_primitives::v7::AbridgedHostConfiguration */ PolkadotPrimitivesV7AbridgedHostConfiguration: { maxCodeSize: "u32", maxHeadDataSize: "u32", @@ -973,17 +967,17 @@ export default { validationUpgradeDelay: "u32", asyncBackingParams: "PolkadotPrimitivesV7AsyncBackingAsyncBackingParams", }, - /** Lookup123: polkadot_primitives::v7::async_backing::AsyncBackingParams */ + /** Lookup122: polkadot_primitives::v7::async_backing::AsyncBackingParams */ PolkadotPrimitivesV7AsyncBackingAsyncBackingParams: { maxCandidateDepth: "u32", allowedAncestryLen: "u32", }, - /** Lookup129: polkadot_core_primitives::OutboundHrmpMessage */ + /** Lookup128: polkadot_core_primitives::OutboundHrmpMessage */ PolkadotCorePrimitivesOutboundHrmpMessage: { recipient: "u32", data: "Bytes", }, - /** Lookup131: cumulus_pallet_parachain_system::pallet::Call */ + /** Lookup130: cumulus_pallet_parachain_system::pallet::Call */ CumulusPalletParachainSystemCall: { _enum: { set_validation_data: { @@ -1001,24 +995,24 @@ export default { }, }, }, - /** Lookup132: cumulus_primitives_parachain_inherent::ParachainInherentData */ + /** Lookup131: cumulus_primitives_parachain_inherent::ParachainInherentData */ CumulusPrimitivesParachainInherentParachainInherentData: { validationData: "PolkadotPrimitivesV7PersistedValidationData", relayChainState: "SpTrieStorageProof", downwardMessages: "Vec", horizontalMessages: "BTreeMap>", }, - /** Lookup134: polkadot_core_primitives::InboundDownwardMessage */ + /** Lookup133: polkadot_core_primitives::InboundDownwardMessage */ PolkadotCorePrimitivesInboundDownwardMessage: { sentAt: "u32", msg: "Bytes", }, - /** Lookup137: polkadot_core_primitives::InboundHrmpMessage */ + /** Lookup136: polkadot_core_primitives::InboundHrmpMessage */ PolkadotCorePrimitivesInboundHrmpMessage: { sentAt: "u32", data: "Bytes", }, - /** Lookup140: cumulus_pallet_parachain_system::pallet::Error */ + /** Lookup139: cumulus_pallet_parachain_system::pallet::Error */ CumulusPalletParachainSystemError: { _enum: [ "OverlappingUpgrades", @@ -1031,7 +1025,7 @@ export default { "Unauthorized", ], }, - /** Lookup141: pallet_timestamp::pallet::Call */ + /** Lookup140: pallet_timestamp::pallet::Call */ PalletTimestampCall: { _enum: { set: { @@ -1039,9 +1033,9 @@ export default { }, }, }, - /** Lookup142: staging_parachain_info::pallet::Call */ + /** Lookup141: staging_parachain_info::pallet::Call */ StagingParachainInfoCall: "Null", - /** Lookup143: pallet_sudo::pallet::Call */ + /** Lookup142: pallet_sudo::pallet::Call */ PalletSudoCall: { _enum: { sudo: { @@ -1064,7 +1058,7 @@ export default { remove_key: "Null", }, }, - /** Lookup145: pallet_utility::pallet::Call */ + /** Lookup144: pallet_utility::pallet::Call */ PalletUtilityCall: { _enum: { batch: { @@ -1090,14 +1084,14 @@ export default { }, }, }, - /** Lookup147: flashbox_runtime::OriginCaller */ + /** Lookup146: flashbox_runtime::OriginCaller */ FlashboxRuntimeOriginCaller: { _enum: { system: "FrameSupportDispatchRawOrigin", Void: "SpCoreVoid", }, }, - /** Lookup148: frame_support::dispatch::RawOrigin */ + /** Lookup147: frame_support::dispatch::RawOrigin */ FrameSupportDispatchRawOrigin: { _enum: { Root: "Null", @@ -1105,9 +1099,9 @@ export default { None: "Null", }, }, - /** Lookup149: sp_core::Void */ + /** Lookup148: sp_core::Void */ SpCoreVoid: "Null", - /** Lookup150: pallet_proxy::pallet::Call */ + /** Lookup149: pallet_proxy::pallet::Call */ PalletProxyCall: { _enum: { proxy: { @@ -1158,11 +1152,11 @@ export default { }, }, }, - /** Lookup155: pallet_maintenance_mode::pallet::Call */ + /** Lookup154: pallet_maintenance_mode::pallet::Call */ PalletMaintenanceModeCall: { _enum: ["enter_maintenance_mode", "resume_normal_operation"], }, - /** Lookup156: pallet_tx_pause::pallet::Call */ + /** Lookup155: pallet_tx_pause::pallet::Call */ PalletTxPauseCall: { _enum: { pause: { @@ -1173,7 +1167,7 @@ export default { }, }, }, - /** Lookup157: pallet_balances::pallet::Call */ + /** Lookup156: pallet_balances::pallet::Call */ PalletBalancesCall: { _enum: { transfer_allow_death: { diff --git a/typescript-api/src/flashbox/interfaces/types-lookup.ts b/typescript-api/src/flashbox/interfaces/types-lookup.ts index 96cf9d880..322abaf5c 100644 --- a/typescript-api/src/flashbox/interfaces/types-lookup.ts +++ b/typescript-api/src/flashbox/interfaces/types-lookup.ts @@ -977,10 +977,6 @@ declare module "@polkadot/types/lookup" { /** @name PalletInvulnerablesEvent (68) */ interface PalletInvulnerablesEvent extends Enum { - readonly isNewInvulnerables: boolean; - readonly asNewInvulnerables: { - readonly invulnerables: Vec; - } & Struct; readonly isInvulnerableAdded: boolean; readonly asInvulnerableAdded: { readonly accountId: AccountId32; @@ -989,14 +985,10 @@ declare module "@polkadot/types/lookup" { readonly asInvulnerableRemoved: { readonly accountId: AccountId32; } & Struct; - readonly isInvalidInvulnerableSkipped: boolean; - readonly asInvalidInvulnerableSkipped: { - readonly accountId: AccountId32; - } & Struct; - readonly type: "NewInvulnerables" | "InvulnerableAdded" | "InvulnerableRemoved" | "InvalidInvulnerableSkipped"; + readonly type: "InvulnerableAdded" | "InvulnerableRemoved"; } - /** @name PalletSessionEvent (70) */ + /** @name PalletSessionEvent (69) */ interface PalletSessionEvent extends Enum { readonly isNewSession: boolean; readonly asNewSession: { @@ -1005,7 +997,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewSession"; } - /** @name PalletInflationRewardsEvent (71) */ + /** @name PalletInflationRewardsEvent (70) */ interface PalletInflationRewardsEvent extends Enum { readonly isRewardedOrchestrator: boolean; readonly asRewardedOrchestrator: { @@ -1021,7 +1013,7 @@ declare module "@polkadot/types/lookup" { readonly type: "RewardedOrchestrator" | "RewardedContainer"; } - /** @name PalletTreasuryEvent (72) */ + /** @name PalletTreasuryEvent (71) */ interface PalletTreasuryEvent extends Enum { readonly isSpending: boolean; readonly asSpending: { @@ -1098,13 +1090,13 @@ declare module "@polkadot/types/lookup" { | "SpendProcessed"; } - /** @name PalletRootTestingEvent (73) */ + /** @name PalletRootTestingEvent (72) */ interface PalletRootTestingEvent extends Enum { readonly isDefensiveTestCall: boolean; readonly type: "DefensiveTestCall"; } - /** @name FrameSystemPhase (74) */ + /** @name FrameSystemPhase (73) */ interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -1113,19 +1105,19 @@ declare module "@polkadot/types/lookup" { readonly type: "ApplyExtrinsic" | "Finalization" | "Initialization"; } - /** @name FrameSystemLastRuntimeUpgradeInfo (78) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (77) */ interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemCodeUpgradeAuthorization (81) */ + /** @name FrameSystemCodeUpgradeAuthorization (80) */ interface FrameSystemCodeUpgradeAuthorization extends Struct { readonly codeHash: H256; readonly checkVersion: bool; } - /** @name FrameSystemCall (82) */ + /** @name FrameSystemCall (81) */ interface FrameSystemCall extends Enum { readonly isRemark: boolean; readonly asRemark: { @@ -1186,21 +1178,21 @@ declare module "@polkadot/types/lookup" { | "ApplyAuthorizedUpgrade"; } - /** @name FrameSystemLimitsBlockWeights (86) */ + /** @name FrameSystemLimitsBlockWeights (85) */ interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: SpWeightsWeightV2Weight; readonly maxBlock: SpWeightsWeightV2Weight; readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass; } - /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (87) */ + /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (86) */ interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (88) */ + /** @name FrameSystemLimitsWeightsPerClass (87) */ interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: SpWeightsWeightV2Weight; readonly maxExtrinsic: Option; @@ -1208,25 +1200,25 @@ declare module "@polkadot/types/lookup" { readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (90) */ + /** @name FrameSystemLimitsBlockLength (89) */ interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportDispatchPerDispatchClassU32; } - /** @name FrameSupportDispatchPerDispatchClassU32 (91) */ + /** @name FrameSupportDispatchPerDispatchClassU32 (90) */ interface FrameSupportDispatchPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name SpWeightsRuntimeDbWeight (92) */ + /** @name SpWeightsRuntimeDbWeight (91) */ interface SpWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (93) */ + /** @name SpVersionRuntimeVersion (92) */ interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -1238,7 +1230,7 @@ declare module "@polkadot/types/lookup" { readonly stateVersion: u8; } - /** @name FrameSystemError (98) */ + /** @name FrameSystemError (97) */ interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -1261,41 +1253,41 @@ declare module "@polkadot/types/lookup" { | "Unauthorized"; } - /** @name CumulusPalletParachainSystemUnincludedSegmentAncestor (100) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentAncestor (99) */ interface CumulusPalletParachainSystemUnincludedSegmentAncestor extends Struct { readonly usedBandwidth: CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth; readonly paraHeadHash: Option; readonly consumedGoAheadSignal: Option; } - /** @name CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth (101) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth (100) */ interface CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth extends Struct { readonly umpMsgCount: u32; readonly umpTotalBytes: u32; readonly hrmpOutgoing: BTreeMap; } - /** @name CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate (103) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate (102) */ interface CumulusPalletParachainSystemUnincludedSegmentHrmpChannelUpdate extends Struct { readonly msgCount: u32; readonly totalBytes: u32; } - /** @name PolkadotPrimitivesV7UpgradeGoAhead (108) */ + /** @name PolkadotPrimitivesV7UpgradeGoAhead (107) */ interface PolkadotPrimitivesV7UpgradeGoAhead extends Enum { readonly isAbort: boolean; readonly isGoAhead: boolean; readonly type: "Abort" | "GoAhead"; } - /** @name CumulusPalletParachainSystemUnincludedSegmentSegmentTracker (109) */ + /** @name CumulusPalletParachainSystemUnincludedSegmentSegmentTracker (108) */ interface CumulusPalletParachainSystemUnincludedSegmentSegmentTracker extends Struct { readonly usedBandwidth: CumulusPalletParachainSystemUnincludedSegmentUsedBandwidth; readonly hrmpWatermark: Option; readonly consumedGoAheadSignal: Option; } - /** @name PolkadotPrimitivesV7PersistedValidationData (111) */ + /** @name PolkadotPrimitivesV7PersistedValidationData (110) */ interface PolkadotPrimitivesV7PersistedValidationData extends Struct { readonly parentHead: Bytes; readonly relayParentNumber: u32; @@ -1303,18 +1295,18 @@ declare module "@polkadot/types/lookup" { readonly maxPovSize: u32; } - /** @name PolkadotPrimitivesV7UpgradeRestriction (114) */ + /** @name PolkadotPrimitivesV7UpgradeRestriction (113) */ interface PolkadotPrimitivesV7UpgradeRestriction extends Enum { readonly isPresent: boolean; readonly type: "Present"; } - /** @name SpTrieStorageProof (115) */ + /** @name SpTrieStorageProof (114) */ interface SpTrieStorageProof extends Struct { readonly trieNodes: BTreeSet; } - /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (117) */ + /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (116) */ interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct { readonly dmqMqcHead: H256; readonly relayDispatchQueueRemainingCapacity: CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity; @@ -1322,13 +1314,13 @@ declare module "@polkadot/types/lookup" { readonly egressChannels: Vec>; } - /** @name CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity (118) */ + /** @name CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity (117) */ interface CumulusPalletParachainSystemRelayStateSnapshotRelayDispatchQueueRemainingCapacity extends Struct { readonly remainingCount: u32; readonly remainingSize: u32; } - /** @name PolkadotPrimitivesV7AbridgedHrmpChannel (121) */ + /** @name PolkadotPrimitivesV7AbridgedHrmpChannel (120) */ interface PolkadotPrimitivesV7AbridgedHrmpChannel extends Struct { readonly maxCapacity: u32; readonly maxTotalSize: u32; @@ -1338,7 +1330,7 @@ declare module "@polkadot/types/lookup" { readonly mqcHead: Option; } - /** @name PolkadotPrimitivesV7AbridgedHostConfiguration (122) */ + /** @name PolkadotPrimitivesV7AbridgedHostConfiguration (121) */ interface PolkadotPrimitivesV7AbridgedHostConfiguration extends Struct { readonly maxCodeSize: u32; readonly maxHeadDataSize: u32; @@ -1352,19 +1344,19 @@ declare module "@polkadot/types/lookup" { readonly asyncBackingParams: PolkadotPrimitivesV7AsyncBackingAsyncBackingParams; } - /** @name PolkadotPrimitivesV7AsyncBackingAsyncBackingParams (123) */ + /** @name PolkadotPrimitivesV7AsyncBackingAsyncBackingParams (122) */ interface PolkadotPrimitivesV7AsyncBackingAsyncBackingParams extends Struct { readonly maxCandidateDepth: u32; readonly allowedAncestryLen: u32; } - /** @name PolkadotCorePrimitivesOutboundHrmpMessage (129) */ + /** @name PolkadotCorePrimitivesOutboundHrmpMessage (128) */ interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct { readonly recipient: u32; readonly data: Bytes; } - /** @name CumulusPalletParachainSystemCall (131) */ + /** @name CumulusPalletParachainSystemCall (130) */ interface CumulusPalletParachainSystemCall extends Enum { readonly isSetValidationData: boolean; readonly asSetValidationData: { @@ -1386,7 +1378,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SetValidationData" | "SudoSendUpwardMessage" | "AuthorizeUpgrade" | "EnactAuthorizedUpgrade"; } - /** @name CumulusPrimitivesParachainInherentParachainInherentData (132) */ + /** @name CumulusPrimitivesParachainInherentParachainInherentData (131) */ interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct { readonly validationData: PolkadotPrimitivesV7PersistedValidationData; readonly relayChainState: SpTrieStorageProof; @@ -1394,19 +1386,19 @@ declare module "@polkadot/types/lookup" { readonly horizontalMessages: BTreeMap>; } - /** @name PolkadotCorePrimitivesInboundDownwardMessage (134) */ + /** @name PolkadotCorePrimitivesInboundDownwardMessage (133) */ interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct { readonly sentAt: u32; readonly msg: Bytes; } - /** @name PolkadotCorePrimitivesInboundHrmpMessage (137) */ + /** @name PolkadotCorePrimitivesInboundHrmpMessage (136) */ interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct { readonly sentAt: u32; readonly data: Bytes; } - /** @name CumulusPalletParachainSystemError (140) */ + /** @name CumulusPalletParachainSystemError (139) */ interface CumulusPalletParachainSystemError extends Enum { readonly isOverlappingUpgrades: boolean; readonly isProhibitedByPolkadot: boolean; @@ -1427,7 +1419,7 @@ declare module "@polkadot/types/lookup" { | "Unauthorized"; } - /** @name PalletTimestampCall (141) */ + /** @name PalletTimestampCall (140) */ interface PalletTimestampCall extends Enum { readonly isSet: boolean; readonly asSet: { @@ -1436,10 +1428,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Set"; } - /** @name StagingParachainInfoCall (142) */ + /** @name StagingParachainInfoCall (141) */ type StagingParachainInfoCall = Null; - /** @name PalletSudoCall (143) */ + /** @name PalletSudoCall (142) */ interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -1463,7 +1455,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Sudo" | "SudoUncheckedWeight" | "SetKey" | "SudoAs" | "RemoveKey"; } - /** @name PalletUtilityCall (145) */ + /** @name PalletUtilityCall (144) */ interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -1495,7 +1487,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Batch" | "AsDerivative" | "BatchAll" | "DispatchAs" | "ForceBatch" | "WithWeight"; } - /** @name FlashboxRuntimeOriginCaller (147) */ + /** @name FlashboxRuntimeOriginCaller (146) */ interface FlashboxRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSupportDispatchRawOrigin; @@ -1503,7 +1495,7 @@ declare module "@polkadot/types/lookup" { readonly type: "System" | "Void"; } - /** @name FrameSupportDispatchRawOrigin (148) */ + /** @name FrameSupportDispatchRawOrigin (147) */ interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -1512,10 +1504,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Root" | "Signed" | "None"; } - /** @name SpCoreVoid (149) */ + /** @name SpCoreVoid (148) */ type SpCoreVoid = Null; - /** @name PalletProxyCall (150) */ + /** @name PalletProxyCall (149) */ interface PalletProxyCall extends Enum { readonly isProxy: boolean; readonly asProxy: { @@ -1585,14 +1577,14 @@ declare module "@polkadot/types/lookup" { | "ProxyAnnounced"; } - /** @name PalletMaintenanceModeCall (155) */ + /** @name PalletMaintenanceModeCall (154) */ interface PalletMaintenanceModeCall extends Enum { readonly isEnterMaintenanceMode: boolean; readonly isResumeNormalOperation: boolean; readonly type: "EnterMaintenanceMode" | "ResumeNormalOperation"; } - /** @name PalletTxPauseCall (156) */ + /** @name PalletTxPauseCall (155) */ interface PalletTxPauseCall extends Enum { readonly isPause: boolean; readonly asPause: { @@ -1605,7 +1597,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pause" | "Unpause"; } - /** @name PalletBalancesCall (157) */ + /** @name PalletBalancesCall (156) */ interface PalletBalancesCall extends Enum { readonly isTransferAllowDeath: boolean; readonly asTransferAllowDeath: {