From 5ef127ed7e24b449d658a47965f6cfd293aa9a21 Mon Sep 17 00:00:00 2001 From: Agusrodri Date: Mon, 30 Dec 2024 15:41:17 -0800 Subject: [PATCH 01/26] first approach --- .../bridge/src/custom_do_process_message.rs | 1 + primitives/bridge/src/lib.rs | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/primitives/bridge/src/custom_do_process_message.rs b/primitives/bridge/src/custom_do_process_message.rs index 0a15634d1..5cd3be031 100644 --- a/primitives/bridge/src/custom_do_process_message.rs +++ b/primitives/bridge/src/custom_do_process_message.rs @@ -153,6 +153,7 @@ impl ConstantGasMeter { Command::Test { .. } => 60_000, // TODO: revisit gas cost Command::ReportRewards { .. } => 60_000, + Command::ReportSlashes { .. } => 60_000, } } } diff --git a/primitives/bridge/src/lib.rs b/primitives/bridge/src/lib.rs index 62835bb9e..3c6665fa0 100644 --- a/primitives/bridge/src/lib.rs +++ b/primitives/bridge/src/lib.rs @@ -79,6 +79,12 @@ pub enum Command { // merkle root of vec![(validatorId, rewardPoints)] rewards_merkle_root: H256, }, + ReportSlashes { + // index of the era we are sending info of + era_index: u32, + // vec of tuples: (validatorId, slash_fraction) + slashes: Vec<([u8; 32], u32)> + } } impl Command { @@ -88,6 +94,7 @@ impl Command { // Starting from 32 to keep compatibility with Snowbridge Command enum Command::Test { .. } => 32, Command::ReportRewards { .. } => 33, + Command::ReportSlashes { .. } => 34, } } @@ -117,6 +124,27 @@ impl Command { rewards_mr_token, ])]) } + Command::ReportSlashes { era_index, slashes } => { + let era_index_token = Token::Uint(U256::from(*era_index)); + let mut slashes_tokens_vec: Vec = vec![]; + + for slash in slashes.into_iter() { + let account_token = Token::FixedBytes(slash.0.to_vec()); + let slash_fraction_token = Token::Uint(U256::from(slash.1)); + let tuple_token = Token::Tuple(vec![ + account_token, + slash_fraction_token + ]); + + slashes_tokens_vec.push(tuple_token); + } + + let slashes_tokens_tuple = Token::Tuple(slashes_tokens_vec); + ethabi::encode(&[Token::Tuple(vec![ + era_index_token, + slashes_tokens_tuple + ])]) + } } } } From 4f32c33610b5b7f5675a315ccb07b900aa574cf9 Mon Sep 17 00:00:00 2001 From: Agusrodri Date: Tue, 31 Dec 2024 06:14:59 -0800 Subject: [PATCH 02/26] start adding on_era_end to ExternalValidatorSlashes --- pallets/external-validator-slashes/src/lib.rs | 88 ++++++++++++++++++- primitives/bridge/src/lib.rs | 18 ++-- solo-chains/runtime/dancelight/src/lib.rs | 2 +- 3 files changed, 94 insertions(+), 14 deletions(-) diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index a88b953f7..862c045d5 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -49,7 +49,7 @@ use { }; use snowbridge_core::ChannelId; -use tp_bridge::{Command, Message, ValidateMessage}; +use tp_bridge::{Command, DeliverMessage, Message, ValidateMessage}; pub use pallet::*; @@ -67,7 +67,6 @@ pub mod weights; pub mod pallet { use super::*; pub use crate::weights::WeightInfo; - use tp_bridge::DeliverMessage; #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] @@ -191,6 +190,13 @@ pub mod pallet { pub type Slashes = StorageMap<_, Twox64Concat, EraIndex, Vec>, ValueQuery>; + /// All unreported slashes that will be processed in the future. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn unreported_slashes)] + pub type UnreportedSlashes = + StorageValue<_, Vec>, ValueQuery>; + #[pallet::call] impl Pallet { /// Cancel a slash that was deferred for a later era @@ -485,6 +491,84 @@ impl OnEraStart for Pallet { } } +impl tp_traits::OnEraEnd for Pallet { + fn on_era_end(era_index: EraIndex) { + // Send up to SLASH_PAGE_SIZE slashes per era + // TODO: should this be a runtime const? + const SLASH_PAGE_SIZE: usize = 20; + + let era_slashes = Slashes::::get(era_index); + let unreported_slashes = UnreportedSlashes::::get(); + + let free_slashing_space = SLASH_PAGE_SIZE.saturating_sub(unreported_slashes.len()); + + let mut slashes_to_send: Vec<_> = vec![]; + + for unreported_slash in unreported_slashes.iter() { + // TODO: check if validator.clone().encode() matches with the actual account bytes. + slashes_to_send.push(( + unreported_slash.validator.clone().encode(), + unreported_slash.percentage.deconstruct(), + )); + } + + // TODO: optimize code logic + if era_slashes.len() > free_slashing_space { + let limit = era_slashes.len().saturating_div(free_slashing_space); + let (slashes_to_include_send, slashes_to_unreport) = era_slashes.split_at(limit); + + for slash_to_include in slashes_to_include_send.iter() { + slashes_to_send.push(( + slash_to_include.validator.clone().encode(), + slash_to_include.percentage.deconstruct(), + )); + } + + UnreportedSlashes::::mutate(|unreported_slashes| { + unreported_slashes.append(&mut slashes_to_unreport.to_vec()); + }); + } else { + for slash in era_slashes.iter() { + slashes_to_send.push(( + slash.validator.clone().encode(), + slash.percentage.deconstruct(), + )); + } + } + + let command = Command::ReportSlashes { + era_index, + slashes: slashes_to_send, + }; + + let channel_id: ChannelId = snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL; + + let outbound_message = Message { + id: None, + channel_id, + command, + }; + + // Validate and deliver the message + match T::ValidateMessage::validate(&outbound_message) { + Ok((ticket, _fee)) => { + if let Err(err) = T::OutboundQueue::deliver(ticket) { + log::error!(target: "ext_validators_slashes", "OutboundQueue delivery of message failed. {err:?}"); + } + } + Err(err) => { + log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); + } + } + + // TODO: bench + /* frame_system::Pallet::::register_extra_weight_unchecked( + T::WeightInfo::on_era_end(), + DispatchClass::Mandatory, + ); */ + } +} + impl Pallet { /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. fn confirm_unconfirmed_slashes(active_era: EraIndex) { diff --git a/primitives/bridge/src/lib.rs b/primitives/bridge/src/lib.rs index 3c6665fa0..9763d4d7a 100644 --- a/primitives/bridge/src/lib.rs +++ b/primitives/bridge/src/lib.rs @@ -83,8 +83,8 @@ pub enum Command { // index of the era we are sending info of era_index: u32, // vec of tuples: (validatorId, slash_fraction) - slashes: Vec<([u8; 32], u32)> - } + slashes: Vec<(Vec, u32)>, + }, } impl Command { @@ -129,21 +129,17 @@ impl Command { let mut slashes_tokens_vec: Vec = vec![]; for slash in slashes.into_iter() { - let account_token = Token::FixedBytes(slash.0.to_vec()); + // TODO: we could probably do some conversion here to ensure the account + // has 32 bytes. + let account_token = Token::Bytes(slash.0.clone()); let slash_fraction_token = Token::Uint(U256::from(slash.1)); - let tuple_token = Token::Tuple(vec![ - account_token, - slash_fraction_token - ]); + let tuple_token = Token::Tuple(vec![account_token, slash_fraction_token]); slashes_tokens_vec.push(tuple_token); } let slashes_tokens_tuple = Token::Tuple(slashes_tokens_vec); - ethabi::encode(&[Token::Tuple(vec![ - era_index_token, - slashes_tokens_tuple - ])]) + ethabi::encode(&[Token::Tuple(vec![era_index_token, slashes_tokens_tuple])]) } } } diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index 98b2255b7..bf40a2d43 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -1344,7 +1344,7 @@ impl pallet_external_validators::Config for Runtime { type UnixTime = Timestamp; type SessionsPerEra = SessionsPerEra; type OnEraStart = (ExternalValidatorSlashes, ExternalValidatorsRewards); - type OnEraEnd = ExternalValidatorsRewards; + type OnEraEnd = (ExternalValidatorSlashes, ExternalValidatorsRewards); type WeightInfo = weights::pallet_external_validators::SubstrateWeight; #[cfg(feature = "runtime-benchmarks")] type Currency = Balances; From 56be7fc3c98455f33713e27c18868fb6959174e3 Mon Sep 17 00:00:00 2001 From: girazoki Date: Tue, 7 Jan 2025 16:17:37 +0100 Subject: [PATCH 03/26] add timestamp for era --- Cargo.lock | 1 + pallets/external-validator-slashes/Cargo.toml | 1 + pallets/external-validator-slashes/src/lib.rs | 4 ++++ pallets/external-validator-slashes/src/mock.rs | 16 ++++++++++++++++ primitives/bridge/src/lib.rs | 15 +++++++++++++-- solo-chains/runtime/dancelight/src/lib.rs | 1 + 6 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f3b8b8b93..5493c650a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9590,6 +9590,7 @@ dependencies = [ "log", "pallet-session", "pallet-staking", + "pallet-timestamp", "parity-scale-codec", "scale-info", "snowbridge-core", diff --git a/pallets/external-validator-slashes/Cargo.toml b/pallets/external-validator-slashes/Cargo.toml index 15b69549e..6b800ac86 100644 --- a/pallets/external-validator-slashes/Cargo.toml +++ b/pallets/external-validator-slashes/Cargo.toml @@ -30,6 +30,7 @@ tp-bridge = { workspace = true } tp-traits = { workspace = true } [dev-dependencies] +pallet-timestamp = { workspace = true } sp-core = { workspace = true } sp-io = { workspace = true } diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index 862c045d5..7109bf9e7 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -135,6 +135,9 @@ pub mod pallet { Ticket = <::ValidateMessage as ValidateMessage>::Ticket, >; + /// Provider to retrieve the current block timestamp. + type TimestampProvider: Get; + /// The weight information of this pallet. type WeightInfo: WeightInfo; } @@ -537,6 +540,7 @@ impl tp_traits::OnEraEnd for Pallet { } let command = Command::ReportSlashes { + timestamp: T::TimestampProvider::get(), era_index, slashes: slashes_to_send, }; diff --git a/pallets/external-validator-slashes/src/mock.rs b/pallets/external-validator-slashes/src/mock.rs index 4ff2fa60f..b2effd977 100644 --- a/pallets/external-validator-slashes/src/mock.rs +++ b/pallets/external-validator-slashes/src/mock.rs @@ -43,9 +43,17 @@ frame_support::construct_runtime!( Session: pallet_session, Historical: pallet_session::historical, ExternalValidatorSlashes: external_validator_slashes, + Timestamp: pallet_timestamp, } ); +impl pallet_timestamp::Config for Test { + type Moment = u64; + type OnTimestampSet = (); + type MinimumPeriod = ConstU64<5>; + type WeightInfo = (); +} + impl system::Config for Test { type BaseCallFilter = frame_support::traits::Everything; type BlockWeights = (); @@ -214,6 +222,13 @@ impl SendMessageFeeProvider for MockOkOutboundQueue { } } +pub struct TimestampProvider; +impl Get for TimestampProvider { + fn get() -> u64 { + Timestamp::get() + } +} + parameter_types! { pub const BondingDuration: u32 = 5u32; } @@ -230,6 +245,7 @@ impl external_validator_slashes::Config for Test { type InvulnerablesProvider = MockInvulnerableProvider; type ValidateMessage = (); type OutboundQueue = MockOkOutboundQueue; + type TimestampProvider = TimestampProvider; type WeightInfo = (); } diff --git a/primitives/bridge/src/lib.rs b/primitives/bridge/src/lib.rs index 9763d4d7a..12f971176 100644 --- a/primitives/bridge/src/lib.rs +++ b/primitives/bridge/src/lib.rs @@ -80,6 +80,8 @@ pub enum Command { rewards_merkle_root: H256, }, ReportSlashes { + // block timestamp + timestamp: u64, // index of the era we are sending info of era_index: u32, // vec of tuples: (validatorId, slash_fraction) @@ -124,7 +126,12 @@ impl Command { rewards_mr_token, ])]) } - Command::ReportSlashes { era_index, slashes } => { + Command::ReportSlashes { + timestamp, + era_index, + slashes, + } => { + let timestamp_token = Token::Uint(U256::from(*timestamp)); let era_index_token = Token::Uint(U256::from(*era_index)); let mut slashes_tokens_vec: Vec = vec![]; @@ -139,7 +146,11 @@ impl Command { } let slashes_tokens_tuple = Token::Tuple(slashes_tokens_vec); - ethabi::encode(&[Token::Tuple(vec![era_index_token, slashes_tokens_tuple])]) + ethabi::encode(&[Token::Tuple(vec![ + timestamp_token, + era_index_token, + slashes_tokens_tuple, + ])]) } } } diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index bf40a2d43..e62ede291 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -1384,6 +1384,7 @@ impl pallet_external_validator_slashes::Config for Runtime { type InvulnerablesProvider = ExternalValidators; type ValidateMessage = tp_bridge::MessageValidator; type OutboundQueue = tp_bridge::CustomSendMessage; + type TimestampProvider = TimestampProvider; type WeightInfo = weights::pallet_external_validator_slashes::SubstrateWeight; } From c2c907facc20879493351ac9ed7ce8c8ec55ff46 Mon Sep 17 00:00:00 2001 From: girazoki Date: Tue, 7 Jan 2025 17:17:45 +0100 Subject: [PATCH 04/26] send slashes once they are confirmed --- pallets/external-validator-slashes/src/lib.rs | 135 ++++++++---------- 1 file changed, 58 insertions(+), 77 deletions(-) diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index 7109bf9e7..b591cb718 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -494,98 +494,79 @@ impl OnEraStart for Pallet { } } -impl tp_traits::OnEraEnd for Pallet { - fn on_era_end(era_index: EraIndex) { - // Send up to SLASH_PAGE_SIZE slashes per era - // TODO: should this be a runtime const? +impl Pallet { + /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. + /// In this case, we also send (or schedule for sending) slashes to ethereum + fn confirm_unconfirmed_slashes(active_era: EraIndex) { const SLASH_PAGE_SIZE: usize = 20; + + Slashes::::mutate(&active_era, |era_slashes| { - let era_slashes = Slashes::::get(era_index); - let unreported_slashes = UnreportedSlashes::::get(); - - let free_slashing_space = SLASH_PAGE_SIZE.saturating_sub(unreported_slashes.len()); - - let mut slashes_to_send: Vec<_> = vec![]; + let unreported_slashes = UnreportedSlashes::::get(); - for unreported_slash in unreported_slashes.iter() { - // TODO: check if validator.clone().encode() matches with the actual account bytes. - slashes_to_send.push(( - unreported_slash.validator.clone().encode(), - unreported_slash.percentage.deconstruct(), - )); - } + let free_slashing_space = SLASH_PAGE_SIZE.saturating_sub(unreported_slashes.len()); - // TODO: optimize code logic - if era_slashes.len() > free_slashing_space { - let limit = era_slashes.len().saturating_div(free_slashing_space); - let (slashes_to_include_send, slashes_to_unreport) = era_slashes.split_at(limit); + let mut slashes_to_send: Vec<_> = vec![]; - for slash_to_include in slashes_to_include_send.iter() { + for unreported_slash in unreported_slashes.iter() { + // TODO: check if validator.clone().encode() matches with the actual account bytes. slashes_to_send.push(( - slash_to_include.validator.clone().encode(), - slash_to_include.percentage.deconstruct(), + unreported_slash.validator.clone().encode(), + unreported_slash.percentage.deconstruct(), )); } - UnreportedSlashes::::mutate(|unreported_slashes| { - unreported_slashes.append(&mut slashes_to_unreport.to_vec()); - }); - } else { - for slash in era_slashes.iter() { - slashes_to_send.push(( - slash.validator.clone().encode(), - slash.percentage.deconstruct(), - )); - } - } - - let command = Command::ReportSlashes { - timestamp: T::TimestampProvider::get(), - era_index, - slashes: slashes_to_send, - }; + // TODO: optimize code logic + if era_slashes.len() > free_slashing_space { + let limit = era_slashes.len().saturating_div(free_slashing_space); + let (slashes_to_include_send, slashes_to_unreport) = era_slashes.split_at(limit); - let channel_id: ChannelId = snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL; - - let outbound_message = Message { - id: None, - channel_id, - command, - }; + for slash_to_include in slashes_to_include_send.iter() { + slashes_to_send.push(( + slash_to_include.validator.clone().encode(), + slash_to_include.percentage.deconstruct(), + )); + } - // Validate and deliver the message - match T::ValidateMessage::validate(&outbound_message) { - Ok((ticket, _fee)) => { - if let Err(err) = T::OutboundQueue::deliver(ticket) { - log::error!(target: "ext_validators_slashes", "OutboundQueue delivery of message failed. {err:?}"); + UnreportedSlashes::::mutate(|unreported_slashes| { + unreported_slashes.append(&mut slashes_to_unreport.to_vec()); + }); + } else { + for slash in era_slashes { + slash.confirmed = true; + slashes_to_send.push(( + slash.validator.clone().encode(), + slash.percentage.deconstruct(), + )); } } - Err(err) => { - log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); - } - } - // TODO: bench - /* frame_system::Pallet::::register_extra_weight_unchecked( - T::WeightInfo::on_era_end(), - DispatchClass::Mandatory, - ); */ - } -} + let command = Command::ReportSlashes { + // TODO: change this + timestamp: T::TimestampProvider::get(), + era_index: active_era, + slashes: slashes_to_send, + }; -impl Pallet { - /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. - fn confirm_unconfirmed_slashes(active_era: EraIndex) { - Slashes::::mutate(&active_era, |era_slashes| { - log!( - log::Level::Debug, - "found {} slashes scheduled to be confirmed in era {:?}", - era_slashes.len(), - active_era, - ); - for slash in era_slashes { - slash.confirmed = true; - } + let channel_id: ChannelId = snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL; + + let outbound_message = Message { + id: None, + channel_id, + command, + }; + + // Validate and deliver the message + match T::ValidateMessage::validate(&outbound_message) { + Ok((ticket, _fee)) => { + if let Err(err) = T::OutboundQueue::deliver(ticket) { + log::error!(target: "ext_validators_slashes", "OutboundQueue delivery of message failed. {err:?}"); + } + } + Err(err) => { + log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); + } + }; }); } } From 6dad16d56f1ef9d668043e939bc6a84ee2cf8ee6 Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 8 Jan 2025 10:28:48 +0100 Subject: [PATCH 05/26] apply slashes next era --- pallets/external-validator-slashes/src/lib.rs | 9 ++++++--- pallets/external-validator-slashes/src/tests.rs | 6 +++--- solo-chains/runtime/dancelight/src/lib.rs | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index b591cb718..db6977e04 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -431,9 +431,13 @@ where ); // Cover slash defer duration equal to 0 + // Slashes are applied at the end of the current era if slash_defer_duration == 0 { - Slashes::::mutate(slash_era, move |for_now| for_now.push(slash)); + Slashes::::mutate(active_era.saturating_add(One::one()), move |for_now| { + for_now.push(slash) + }); } else { + // Else, slashes are applied after slash_defer_period since the slashed era Slashes::::mutate( slash_era .saturating_add(slash_defer_duration) @@ -499,9 +503,8 @@ impl Pallet { /// In this case, we also send (or schedule for sending) slashes to ethereum fn confirm_unconfirmed_slashes(active_era: EraIndex) { const SLASH_PAGE_SIZE: usize = 20; - - Slashes::::mutate(&active_era, |era_slashes| { + Slashes::::mutate(&active_era, |era_slashes| { let unreported_slashes = UnreportedSlashes::::get(); let free_slashing_space = SLASH_PAGE_SIZE.saturating_sub(unreported_slashes.len()); diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index 5609346e4..c5e340998 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -267,10 +267,10 @@ fn test_on_offence_defer_period_0() { 0, ); - let slash_era = 0; - + // The era in which it is going to be slashed should be the active era +1 + let era_to_slash = 2; assert_eq!( - Slashes::::get(slash_era), + Slashes::::get(era_to_slash), vec![Slash { validator: 3, percentage: Perbill::from_percent(75), diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index e62ede291..fc881780e 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -1344,7 +1344,7 @@ impl pallet_external_validators::Config for Runtime { type UnixTime = Timestamp; type SessionsPerEra = SessionsPerEra; type OnEraStart = (ExternalValidatorSlashes, ExternalValidatorsRewards); - type OnEraEnd = (ExternalValidatorSlashes, ExternalValidatorsRewards); + type OnEraEnd = ExternalValidatorsRewards; type WeightInfo = weights::pallet_external_validators::SubstrateWeight; #[cfg(feature = "runtime-benchmarks")] type Currency = Balances; From 2db810f5e2b5171be9e6c97b66a5eeac62291fb1 Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 8 Jan 2025 13:39:28 +0100 Subject: [PATCH 06/26] first test sending messages --- pallets/external-validator-slashes/src/lib.rs | 46 ++++++++++--------- .../external-validator-slashes/src/mock.rs | 9 ++++ .../external-validator-slashes/src/tests.rs | 7 ++- 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index db6977e04..1e552a14e 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -544,32 +544,34 @@ impl Pallet { } } - let command = Command::ReportSlashes { - // TODO: change this - timestamp: T::TimestampProvider::get(), - era_index: active_era, - slashes: slashes_to_send, - }; + if slashes_to_send.len() > 0 { + let command = Command::ReportSlashes { + // TODO: change this + timestamp: T::TimestampProvider::get(), + era_index: active_era, + slashes: slashes_to_send, + }; - let channel_id: ChannelId = snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL; + let channel_id: ChannelId = snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL; - let outbound_message = Message { - id: None, - channel_id, - command, - }; + let outbound_message = Message { + id: None, + channel_id, + command, + }; - // Validate and deliver the message - match T::ValidateMessage::validate(&outbound_message) { - Ok((ticket, _fee)) => { - if let Err(err) = T::OutboundQueue::deliver(ticket) { - log::error!(target: "ext_validators_slashes", "OutboundQueue delivery of message failed. {err:?}"); + // Validate and deliver the message + match T::ValidateMessage::validate(&outbound_message) { + Ok((ticket, _fee)) => { + if let Err(err) = T::OutboundQueue::deliver(ticket) { + log::error!(target: "ext_validators_slashes", "OutboundQueue delivery of message failed. {err:?}"); + } } - } - Err(err) => { - log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); - } - }; + Err(err) => { + log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); + } + }; + } }); } } diff --git a/pallets/external-validator-slashes/src/mock.rs b/pallets/external-validator-slashes/src/mock.rs index b2effd977..085c40859 100644 --- a/pallets/external-validator-slashes/src/mock.rs +++ b/pallets/external-validator-slashes/src/mock.rs @@ -124,6 +124,8 @@ pub struct MockEraIndexProvider; thread_local! { pub static ERA_INDEX: RefCell = const { RefCell::new(0) }; pub static DEFER_PERIOD: RefCell = const { RefCell::new(2) }; + pub static SENT_ETHEREUM_MESSAGE_NONCE: RefCell = const { RefCell::new(0) }; + } impl MockEraIndexProvider { @@ -205,11 +207,18 @@ impl DeferPeriodGetter { } } +pub fn sent_ethereum_message_nonce() -> u64 { + SENT_ETHEREUM_MESSAGE_NONCE.with(|q| (*q.borrow()).clone()) +} + pub struct MockOkOutboundQueue; impl tp_bridge::DeliverMessage for MockOkOutboundQueue { type Ticket = (); fn deliver(_: Self::Ticket) -> Result { + // Every time we hit deliver, increment the nonce + SENT_ETHEREUM_MESSAGE_NONCE.with(|r| *r.borrow_mut() = r.take() + 1); + Ok(H256::zero()) } } diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index c5e340998..6c2dfec7d 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -16,7 +16,9 @@ use { super::*, - crate::mock::{new_test_ext, ExternalValidatorSlashes, RuntimeOrigin, Test}, + crate::mock::{ + new_test_ext, sent_ethereum_message_nonce, ExternalValidatorSlashes, RuntimeOrigin, Test, + }, frame_support::{assert_noop, assert_ok}, }; @@ -279,6 +281,9 @@ fn test_on_offence_defer_period_0() { slash_id: 0 }] ); + start_era(2, 2); + + assert_eq!(sent_ethereum_message_nonce(), 1); }); } From 803cb10415c6a09f8902b1ee104b1ddfb54c7ce2 Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 8 Jan 2025 13:41:34 +0100 Subject: [PATCH 07/26] modify more tests --- pallets/external-validator-slashes/src/lib.rs | 2 +- pallets/external-validator-slashes/src/tests.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index 1e552a14e..fbb950cd9 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -276,7 +276,7 @@ pub mod pallet { // If we defer duration is 0, we immediately apply and confirm let era_to_consider = if slash_defer_duration == 0 { - era + era.saturating_add(One::one()) } else { era.saturating_add(slash_defer_duration) .saturating_add(One::one()) diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index 6c2dfec7d..a7b96c081 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -222,8 +222,9 @@ fn defer_period_of_zero_confirms_immediately_slashes() { 1u64, Perbill::from_percent(75) )); + let era_to_slash = 1; assert_eq!( - Slashes::::get(0), + Slashes::::get(era_to_slash), vec![Slash { validator: 1, percentage: Perbill::from_percent(75), From 4bbf695be797b8838e620045ef4a116ae910d868 Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 8 Jan 2025 13:51:01 +0100 Subject: [PATCH 08/26] more tests --- .../external-validator-slashes/src/tests.rs | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index a7b96c081..5c5a6f2a3 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -17,9 +17,11 @@ use { super::*, crate::mock::{ - new_test_ext, sent_ethereum_message_nonce, ExternalValidatorSlashes, RuntimeOrigin, Test, + new_test_ext, sent_ethereum_message_nonce, DeferPeriodGetter, ExternalValidatorSlashes, + RuntimeOrigin, Test, }, frame_support::{assert_noop, assert_ok}, + mock::MockEraIndexProvider, }; #[test] @@ -33,7 +35,7 @@ fn root_can_inject_manual_offence() { Perbill::from_percent(75) )); assert_eq!( - Slashes::::get(3), + Slashes::::get(get_slashing_era(0)), vec![Slash { validator: 1, percentage: Perbill::from_percent(75), @@ -95,7 +97,7 @@ fn root_can_cance_deferred_slash() { vec![0] )); - assert_eq!(Slashes::::get(3), vec![]); + assert_eq!(Slashes::::get(get_slashing_era(0)), vec![]); }); } @@ -135,7 +137,7 @@ fn test_after_bonding_period_we_can_remove_slashes() { )); assert_eq!( - Slashes::::get(3), + Slashes::::get(get_slashing_era(0)), vec![Slash { validator: 1, percentage: Perbill::from_percent(75), @@ -152,7 +154,7 @@ fn test_after_bonding_period_we_can_remove_slashes() { // whenever we start the 6th era, we can remove everything from era 3 Pallet::::on_era_start(9, 9); - assert_eq!(Slashes::::get(3), vec![]); + assert_eq!(Slashes::::get(get_slashing_era(0)), vec![]); }); } @@ -170,13 +172,8 @@ fn test_on_offence_injects_offences() { &[Perbill::from_percent(75)], 0, ); - // current era (1) + defer period + 1 - let slash_era = 0 - .saturating_add(crate::mock::DeferPeriodGetter::get()) - .saturating_add(One::one()); - assert_eq!( - Slashes::::get(slash_era), + Slashes::::get(get_slashing_era(0)), vec![Slash { validator: 3, percentage: Perbill::from_percent(75), @@ -202,12 +199,8 @@ fn test_on_offence_does_not_work_for_invulnerables() { &[Perbill::from_percent(75)], 0, ); - // current era (1) + defer period + 1 - let slash_era = 1 - .saturating_add(crate::mock::DeferPeriodGetter::get()) - .saturating_add(One::one()); - assert_eq!(Slashes::::get(slash_era), vec![]); + assert_eq!(Slashes::::get(get_slashing_era(1)), vec![]); }); } @@ -222,9 +215,8 @@ fn defer_period_of_zero_confirms_immediately_slashes() { 1u64, Perbill::from_percent(75) )); - let era_to_slash = 1; assert_eq!( - Slashes::::get(era_to_slash), + Slashes::::get(get_slashing_era(0)), vec![Slash { validator: 1, percentage: Perbill::from_percent(75), @@ -270,10 +262,8 @@ fn test_on_offence_defer_period_0() { 0, ); - // The era in which it is going to be slashed should be the active era +1 - let era_to_slash = 2; assert_eq!( - Slashes::::get(era_to_slash), + Slashes::::get(get_slashing_era(1)), vec![Slash { validator: 3, percentage: Perbill::from_percent(75), @@ -292,3 +282,13 @@ fn start_era(era_index: EraIndex, session_index: SessionIndex) { Pallet::::on_era_start(era_index, session_index); crate::mock::MockEraIndexProvider::with_era(era_index); } + +fn get_slashing_era(slash_era: EraIndex) -> EraIndex { + if DeferPeriodGetter::get() > 0 { + slash_era + .saturating_add(DeferPeriodGetter::get()) + .saturating_add(1) + } else { + MockEraIndexProvider::active_era().index.saturating_add(1) + } +} From 84495b67f68e4bc3eba2a5df1b8eb1124b918507 Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 8 Jan 2025 15:46:36 +0100 Subject: [PATCH 09/26] more tests for jeremy --- pallets/external-validator-slashes/src/lib.rs | 2 + .../external-validator-slashes/src/mock.rs | 13 ++- .../external-validator-slashes/src/tests.rs | 94 ++++++++++++++++++- 3 files changed, 106 insertions(+), 3 deletions(-) diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index fbb950cd9..da660b8ac 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -522,6 +522,7 @@ impl Pallet { // TODO: optimize code logic if era_slashes.len() > free_slashing_space { let limit = era_slashes.len().saturating_div(free_slashing_space); + let (slashes_to_include_send, slashes_to_unreport) = era_slashes.split_at(limit); for slash_to_include in slashes_to_include_send.iter() { @@ -530,6 +531,7 @@ impl Pallet { slash_to_include.percentage.deconstruct(), )); } + //print!("Unreported slashes appending {:?}", slashes_to_unreport); UnreportedSlashes::::mutate(|unreported_slashes| { unreported_slashes.append(&mut slashes_to_unreport.to_vec()); diff --git a/pallets/external-validator-slashes/src/mock.rs b/pallets/external-validator-slashes/src/mock.rs index 085c40859..75e708917 100644 --- a/pallets/external-validator-slashes/src/mock.rs +++ b/pallets/external-validator-slashes/src/mock.rs @@ -18,7 +18,7 @@ use { crate as external_validator_slashes, frame_support::{ parameter_types, - traits::{ConstU16, ConstU64, Get}, + traits::{ConstU16, ConstU64, Get, OnInitialize, OnFinalize}, }, frame_system as system, snowbridge_core::outbound::{SendError, SendMessageFeeProvider}, @@ -283,3 +283,14 @@ impl sp_runtime::traits::Convert> for IdentityValidator { Some(a) } } + +/// Rolls forward one block. Returns the new block number. +#[allow(dead_code)] +pub(crate) fn roll_one_block() -> u64 { + ExternalValidatorSlashes::on_finalize(System::block_number()); + System::on_finalize(System::block_number()); + System::set_block_number(System::block_number() + 1); + System::on_initialize(System::block_number()); + ExternalValidatorSlashes::on_initialize(System::block_number()); + System::block_number() +} diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index 5c5a6f2a3..3cd539960 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -17,8 +17,7 @@ use { super::*, crate::mock::{ - new_test_ext, sent_ethereum_message_nonce, DeferPeriodGetter, ExternalValidatorSlashes, - RuntimeOrigin, Test, + new_test_ext, sent_ethereum_message_nonce, DeferPeriodGetter, ExternalValidatorSlashes, roll_one_block, Test, RuntimeOrigin }, frame_support::{assert_noop, assert_ok}, mock::MockEraIndexProvider, @@ -278,6 +277,97 @@ fn test_on_offence_defer_period_0() { }); } +#[test] +fn test_on_offence_defer_period_0_messages_get_queued() { + new_test_ext().execute_with(|| { + crate::mock::DeferPeriodGetter::with_defer_period(0); + start_era(0, 0); + start_era(1, 1); + // The limit is 20, + for i in 0..25 { + Pallet::::on_offence( + &[OffenceDetails { + // 1 and 2 are invulnerables + offender: (3 + i, ()), + reporters: vec![], + }], + &[Perbill::from_percent(75)], + 0, + ); + } + + assert_eq!(Slashes::::get(get_slashing_era(1)).len(), 25); + start_era(2, 2); + assert_eq!(UnreportedSlashes::::get().len(), 25); + + // this triggers on_initialize + roll_one_block(); + assert_eq!(sent_ethereum_message_nonce(), 1); + assert_eq!(UnreportedSlashes::::get().len(), 5); + + roll_one_block(); + assert_eq!(sent_ethereum_message_nonce(), 2); + assert_eq!(UnreportedSlashes::::get().len(), 0); + }); +} + +#[test] +fn test_on_offence_defer_period_0_messages_get_queued_across_eras() { + new_test_ext().execute_with(|| { + crate::mock::DeferPeriodGetter::with_defer_period(0); + start_era(0, 0); + start_era(1, 1); + // The limit is 20, + for i in 0..25 { + Pallet::::on_offence( + &[OffenceDetails { + // 1 and 2 are invulnerables + offender: (3 + i, ()), + reporters: vec![], + }], + &[Perbill::from_percent(75)], + 0, + ); + } + assert_eq!(Slashes::::get(get_slashing_era(1)).len(), 25); + start_era(2, 2); + assert_eq!(UnreportedSlashes::::get().len(), 25); + + // this triggers on_initialize + roll_one_block(); + assert_eq!(sent_ethereum_message_nonce(), 1); + assert_eq!(UnreportedSlashes::::get().len(), 5); + + // We have 5 non-dispatched, which should accumulate + // We shoulld have 30 after we initialie era 3 + for i in 0..25 { + Pallet::::on_offence( + &[OffenceDetails { + // 1 and 2 are invulnerables + offender: (3 + i, ()), + reporters: vec![], + }], + &[Perbill::from_percent(75)], + 0, + ); + } + + start_era(3, 3); + assert_eq!(UnreportedSlashes::::get().len(), 30); + + // this triggers on_initialize + roll_one_block(); + assert_eq!(UnreportedSlashes::::get().len(), 10); + assert_eq!(sent_ethereum_message_nonce(), 2); + + // this triggers on_initialize + roll_one_block(); + assert_eq!(UnreportedSlashes::::get().len(), 0); + assert_eq!(sent_ethereum_message_nonce(), 3); + + }); +} + fn start_era(era_index: EraIndex, session_index: SessionIndex) { Pallet::::on_era_start(era_index, session_index); crate::mock::MockEraIndexProvider::with_era(era_index); From 21db529f4f973a68a6a419bf79e45de7a3bff5ee Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 8 Jan 2025 16:00:22 +0100 Subject: [PATCH 10/26] fix tests --- pallets/external-validator-slashes/src/tests.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index 3cd539960..30dc68a03 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -272,6 +272,8 @@ fn test_on_offence_defer_period_0() { }] ); start_era(2, 2); + // One on-initialize should be needed to dispatch messages + roll_one_block(); assert_eq!(sent_ethereum_message_nonce(), 1); }); @@ -348,7 +350,8 @@ fn test_on_offence_defer_period_0_messages_get_queued_across_eras() { reporters: vec![], }], &[Perbill::from_percent(75)], - 0, + // Inject for slashing session 1 + 2, ); } From e6478007186fc375c646c6f8c03db4343d33fdcc Mon Sep 17 00:00:00 2001 From: nanocryk <6422796+nanocryk@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:17:26 +0100 Subject: [PATCH 11/26] Simplify slashes queue processing (#800) * simplify slash process queue and process a page every block * on process page in on_initialize * fix one test --- pallets/external-validator-slashes/src/lib.rs | 132 +++++++++--------- .../external-validator-slashes/src/mock.rs | 3 +- .../external-validator-slashes/src/tests.rs | 17 ++- solo-chains/runtime/dancelight/src/lib.rs | 1 + 4 files changed, 75 insertions(+), 78 deletions(-) diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index da660b8ac..603bc4bb2 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -43,6 +43,7 @@ use { offence::{OffenceDetails, OnOffenceHandler}, EraIndex, SessionIndex, }, + sp_std::collections::vec_deque::VecDeque, sp_std::vec, sp_std::vec::Vec, tp_traits::{EraIndexProvider, InvulnerablesProvider, OnEraStart}, @@ -138,6 +139,9 @@ pub mod pallet { /// Provider to retrieve the current block timestamp. type TimestampProvider: Get; + /// How many queued slashes are being processed per block. + type QueuedSlashesProcessedPerBlock: Get; + /// The weight information of this pallet. type WeightInfo: WeightInfo; } @@ -197,8 +201,8 @@ pub mod pallet { #[pallet::storage] #[pallet::unbounded] #[pallet::getter(fn unreported_slashes)] - pub type UnreportedSlashes = - StorageValue<_, Vec>, ValueQuery>; + pub type UnreportedSlashesQueue = + StorageValue<_, VecDeque>, ValueQuery>; #[pallet::call] impl Pallet { @@ -339,6 +343,19 @@ pub mod pallet { Ok(()) } } + + #[pallet::hooks] + impl Hooks> for Pallet { + fn on_initialize(_n: BlockNumberFor) -> Weight { + let weight = Weight::zero(); + + Self::process_slashes_queue_page(); + + // TODO: Weight + + weight + } + } } /// This is intended to be used with `FilterHistoricalOffences`. @@ -494,87 +511,66 @@ impl OnEraStart for Pallet { } }); - Self::confirm_unconfirmed_slashes(era_index); + Self::add_era_slashes_to_queue(era_index); } } impl Pallet { - /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. - /// In this case, we also send (or schedule for sending) slashes to ethereum - fn confirm_unconfirmed_slashes(active_era: EraIndex) { - const SLASH_PAGE_SIZE: usize = 20; + fn add_era_slashes_to_queue(active_era: EraIndex) { + let mut slashes: VecDeque<_> = Slashes::::take(&active_era).into(); - Slashes::::mutate(&active_era, |era_slashes| { - let unreported_slashes = UnreportedSlashes::::get(); + UnreportedSlashesQueue::::mutate(|queue| queue.append(&mut slashes)); + } - let free_slashing_space = SLASH_PAGE_SIZE.saturating_sub(unreported_slashes.len()); + fn process_slashes_queue_page() { + let mut slashes_to_send: Vec<_> = vec![]; + let era_index = T::EraIndexProvider::active_era().index; - let mut slashes_to_send: Vec<_> = vec![]; + // prepare up to QueuedSlashesProcessedPerBlock slashes to be sent + for _ in 0..(T::QueuedSlashesProcessedPerBlock::get() as usize) { + let Some(slash) = UnreportedSlashesQueue::::mutate(VecDeque::pop_front) else { + // no more slashes to process in the queue + break; + }; - for unreported_slash in unreported_slashes.iter() { - // TODO: check if validator.clone().encode() matches with the actual account bytes. - slashes_to_send.push(( - unreported_slash.validator.clone().encode(), - unreported_slash.percentage.deconstruct(), - )); - } + // TODO: check if validator.clone().encode() matches with the actual account bytes. + slashes_to_send.push(( + slash.validator.clone().encode(), + slash.percentage.deconstruct(), + )); + } + + if slashes_to_send.is_empty() { + return; + } - // TODO: optimize code logic - if era_slashes.len() > free_slashing_space { - let limit = era_slashes.len().saturating_div(free_slashing_space); + // Build command with slashes. + let command = Command::ReportSlashes { + // TODO: change this + timestamp: T::TimestampProvider::get(), + era_index, + slashes: slashes_to_send, + }; - let (slashes_to_include_send, slashes_to_unreport) = era_slashes.split_at(limit); + let channel_id: ChannelId = snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL; - for slash_to_include in slashes_to_include_send.iter() { - slashes_to_send.push(( - slash_to_include.validator.clone().encode(), - slash_to_include.percentage.deconstruct(), - )); - } - //print!("Unreported slashes appending {:?}", slashes_to_unreport); + let outbound_message = Message { + id: None, + channel_id, + command, + }; - UnreportedSlashes::::mutate(|unreported_slashes| { - unreported_slashes.append(&mut slashes_to_unreport.to_vec()); - }); - } else { - for slash in era_slashes { - slash.confirmed = true; - slashes_to_send.push(( - slash.validator.clone().encode(), - slash.percentage.deconstruct(), - )); + // Validate and deliver the message + match T::ValidateMessage::validate(&outbound_message) { + Ok((ticket, _fee)) => { + if let Err(err) = T::OutboundQueue::deliver(ticket) { + log::error!(target: "ext_validators_slashes", "OutboundQueue delivery of message failed. {err:?}"); } } - - if slashes_to_send.len() > 0 { - let command = Command::ReportSlashes { - // TODO: change this - timestamp: T::TimestampProvider::get(), - era_index: active_era, - slashes: slashes_to_send, - }; - - let channel_id: ChannelId = snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL; - - let outbound_message = Message { - id: None, - channel_id, - command, - }; - - // Validate and deliver the message - match T::ValidateMessage::validate(&outbound_message) { - Ok((ticket, _fee)) => { - if let Err(err) = T::OutboundQueue::deliver(ticket) { - log::error!(target: "ext_validators_slashes", "OutboundQueue delivery of message failed. {err:?}"); - } - } - Err(err) => { - log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); - } - }; + Err(err) => { + log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); } - }); + }; } } diff --git a/pallets/external-validator-slashes/src/mock.rs b/pallets/external-validator-slashes/src/mock.rs index 75e708917..d6d5f75ce 100644 --- a/pallets/external-validator-slashes/src/mock.rs +++ b/pallets/external-validator-slashes/src/mock.rs @@ -18,7 +18,7 @@ use { crate as external_validator_slashes, frame_support::{ parameter_types, - traits::{ConstU16, ConstU64, Get, OnInitialize, OnFinalize}, + traits::{ConstU16, ConstU32, ConstU64, Get, Hooks}, }, frame_system as system, snowbridge_core::outbound::{SendError, SendMessageFeeProvider}, @@ -255,6 +255,7 @@ impl external_validator_slashes::Config for Test { type ValidateMessage = (); type OutboundQueue = MockOkOutboundQueue; type TimestampProvider = TimestampProvider; + type QueuedSlashesProcessedPerBlock = ConstU32<20>; type WeightInfo = (); } diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index 30dc68a03..be756ef94 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -272,7 +272,6 @@ fn test_on_offence_defer_period_0() { }] ); start_era(2, 2); - // One on-initialize should be needed to dispatch messages roll_one_block(); assert_eq!(sent_ethereum_message_nonce(), 1); @@ -300,16 +299,16 @@ fn test_on_offence_defer_period_0_messages_get_queued() { assert_eq!(Slashes::::get(get_slashing_era(1)).len(), 25); start_era(2, 2); - assert_eq!(UnreportedSlashes::::get().len(), 25); + assert_eq!(UnreportedSlashesQueue::::get().len(), 25); // this triggers on_initialize roll_one_block(); assert_eq!(sent_ethereum_message_nonce(), 1); - assert_eq!(UnreportedSlashes::::get().len(), 5); + assert_eq!(UnreportedSlashesQueue::::get().len(), 5); roll_one_block(); assert_eq!(sent_ethereum_message_nonce(), 2); - assert_eq!(UnreportedSlashes::::get().len(), 0); + assert_eq!(UnreportedSlashesQueue::::get().len(), 0); }); } @@ -333,12 +332,12 @@ fn test_on_offence_defer_period_0_messages_get_queued_across_eras() { } assert_eq!(Slashes::::get(get_slashing_era(1)).len(), 25); start_era(2, 2); - assert_eq!(UnreportedSlashes::::get().len(), 25); + assert_eq!(UnreportedSlashesQueue::::get().len(), 25); // this triggers on_initialize roll_one_block(); assert_eq!(sent_ethereum_message_nonce(), 1); - assert_eq!(UnreportedSlashes::::get().len(), 5); + assert_eq!(UnreportedSlashesQueue::::get().len(), 5); // We have 5 non-dispatched, which should accumulate // We shoulld have 30 after we initialie era 3 @@ -356,16 +355,16 @@ fn test_on_offence_defer_period_0_messages_get_queued_across_eras() { } start_era(3, 3); - assert_eq!(UnreportedSlashes::::get().len(), 30); + assert_eq!(UnreportedSlashesQueue::::get().len(), 30); // this triggers on_initialize roll_one_block(); - assert_eq!(UnreportedSlashes::::get().len(), 10); + assert_eq!(UnreportedSlashesQueue::::get().len(), 10); assert_eq!(sent_ethereum_message_nonce(), 2); // this triggers on_initialize roll_one_block(); - assert_eq!(UnreportedSlashes::::get().len(), 0); + assert_eq!(UnreportedSlashesQueue::::get().len(), 0); assert_eq!(sent_ethereum_message_nonce(), 3); }); diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index fc881780e..e8e467c4b 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -1385,6 +1385,7 @@ impl pallet_external_validator_slashes::Config for Runtime { type ValidateMessage = tp_bridge::MessageValidator; type OutboundQueue = tp_bridge::CustomSendMessage; type TimestampProvider = TimestampProvider; + type QueuedSlashesProcessedPerBlock = ConstU32<20>; type WeightInfo = weights::pallet_external_validator_slashes::SubstrateWeight; } From 7663992fed1c70d9de1d974f767740c5c831fef9 Mon Sep 17 00:00:00 2001 From: girazoki Date: Thu, 9 Jan 2025 14:54:25 +0100 Subject: [PATCH 12/26] first integrationt test working --- .../runtime/dancelight/src/lib.rs | 5 +- .../dancelight/src/tests/common/mod.rs | 8 +- .../runtime/dancelight/src/tests/slashes.rs | 115 +++++++++++++++++- pallets/external-validator-slashes/src/lib.rs | 4 +- .../external-validator-slashes/src/tests.rs | 6 +- 5 files changed, 129 insertions(+), 9 deletions(-) diff --git a/chains/orchestrator-relays/runtime/dancelight/src/lib.rs b/chains/orchestrator-relays/runtime/dancelight/src/lib.rs index dd3ac9ddc..f5ef7d643 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/lib.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/lib.rs @@ -1356,7 +1356,7 @@ impl SessionInterface for DancelightSessionInterface { parameter_types! { pub const SessionsPerEra: SessionIndex = runtime_common::prod_or_fast!(6, 3); - pub const SlashDeferDuration: EraIndex = runtime_common::prod_or_fast!(27, 2); + pub const SlashDeferDuration: EraIndex = runtime_common::prod_or_fast!(0, 0); } impl pallet_external_validators::Config for Runtime { @@ -1825,6 +1825,8 @@ construct_runtime! { ExternalValidatorSlashes: pallet_external_validator_slashes = 21, ExternalValidatorsRewards: pallet_external_validators_rewards = 22, + EthereumOutboundQueue: snowbridge_pallet_outbound_queue = 26, + // Session management Session: pallet_session = 30, Grandpa: pallet_grandpa = 31, @@ -1891,7 +1893,6 @@ construct_runtime! { // Bridging stuff EthereumInboundQueue: snowbridge_pallet_inbound_queue = 91, - EthereumOutboundQueue: snowbridge_pallet_outbound_queue = 101, EthereumSystem: snowbridge_pallet_system = 103, // Migration stuff diff --git a/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs b/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs index 6bd3027b0..c29fc5bc7 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs @@ -17,7 +17,7 @@ #![allow(dead_code)] use { - crate::{BlockProductionCost, CollatorAssignmentCost, RuntimeCall}, + crate::{BlockProductionCost, CollatorAssignmentCost, ExternalValidatorSlashes, RuntimeCall}, babe_primitives::{ digests::{PreDigest, SecondaryPlainPreDigest}, BABE_ENGINE_ID, @@ -237,9 +237,13 @@ pub fn start_block() -> RunSummary { // Initialize the new block Babe::on_initialize(System::block_number()); ContainerRegistrar::on_initialize(System::block_number()); + ExternalValidatorSlashes::on_initialize(System::block_number()); + Session::on_initialize(System::block_number()); + Initializer::on_initialize(System::block_number()); TanssiCollatorAssignment::on_initialize(System::block_number()); + MessageQueue::on_initialize(System::block_number()); let current_issuance = Balances::total_issuance(); InflationRewards::on_initialize(System::block_number()); @@ -253,7 +257,6 @@ pub fn start_block() -> RunSummary { Beefy::on_initialize(System::block_number()); Mmr::on_initialize(System::block_number()); BeefyMmrLeaf::on_initialize(System::block_number()); - RunSummary { inflation: new_issuance - current_issuance, } @@ -1232,6 +1235,7 @@ pub fn set_dummy_boot_node(para_manager: RuntimeOrigin, para_id: ParaId) { "profile should be correctly assigned" ); } +use crate::MessageQueue; use milagro_bls::Keypair; pub fn generate_ethereum_pub_keys(n: u32) -> Vec { let mut keys = vec![]; diff --git a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs index 8ee1214ba..2ec723688 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs @@ -21,7 +21,7 @@ use { crate::tests::common::*, crate::{ BondingDuration, ExternalValidatorSlashes, ExternalValidators, Grandpa, Historical, - SessionsPerEra, SlashDeferDuration, + RuntimeEvent, SessionsPerEra, SlashDeferDuration, }, frame_support::{assert_noop, assert_ok}, sp_core::H256, @@ -357,6 +357,119 @@ fn test_slashes_cannot_be_cancelled_after_defer_period() { }); } +use parity_scale_codec::Encode; +use snowbridge_core::{Channel, PRIMARY_GOVERNANCE_CHANNEL}; +use sp_core::twox_64; +#[test] +fn test_slashes_are_sent_to_ethereum() { + sp_tracing::try_init_simple(); + 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 channel_id = PRIMARY_GOVERNANCE_CHANNEL.encode(); + + // Insert PRIMARY_GOVERNANCE_CHANNEL channel id into storage. + let mut combined_channel_id_key = Vec::new(); + let hashed_key = twox_64(&channel_id); + + combined_channel_id_key.extend_from_slice(&hashed_key); + combined_channel_id_key.extend_from_slice(PRIMARY_GOVERNANCE_CHANNEL.as_ref()); + + let mut full_storage_key = Vec::new(); + full_storage_key.extend_from_slice(&frame_support::storage::storage_prefix( + b"EthereumSystem", + b"Channels", + )); + full_storage_key.extend_from_slice(&combined_channel_id_key); + + let channel = Channel { + agent_id: H256::default(), + para_id: 1000u32.into(), + }; + + frame_support::storage::unhashed::put(&full_storage_key, &channel); + + assert_ok!(ExternalValidators::remove_whitelisted( + RuntimeOrigin::root(), + AccountId::from(ALICE) + )); + + inject_babe_slash(&AccountId::from(ALICE).to_string()); + + let reports = pallet_offences::Reports::::iter().collect::>(); + assert_eq!(reports.len(), 1); + assert_eq!(ExternalValidators::current_era().unwrap(), 0); + + let deferred_era = + ExternalValidators::current_era().unwrap() + SlashDeferDuration::get() + 1; + + let slashes = ExternalValidatorSlashes::slashes(deferred_era); + assert_eq!(slashes.len(), 1); + assert_eq!(slashes[0].validator, AccountId::from(ALICE)); + + let session_in_which_slashes_are_sent = + (ExternalValidators::current_era().unwrap() + SlashDeferDuration::get() + 1) + * SessionsPerEra::get(); + run_to_session(session_in_which_slashes_are_sent); + + let outbound_msg_queue_event = System::events() + .iter() + .filter(|r| match r.event { + RuntimeEvent::EthereumOutboundQueue( + snowbridge_pallet_outbound_queue::Event::MessageQueued { .. }, + ) => true, + _ => false, + }) + .count(); + + // We have two reasons for sending messages: + // 1, because on_era_end sends rewards + // 2, because on_era_start sends slashes + // Both session ends and session starts are done on_initialize of frame-sesssion + assert_eq!( + outbound_msg_queue_event, 1, + "MessageQueued event should be emitted" + ); + + // Slashes start being sent after the era block + // They are scheduled as unprocessedSlashes + run_block(); + + let outbound_msg_queue_event = System::events() + .iter() + .filter(|r| match r.event { + RuntimeEvent::EthereumOutboundQueue( + snowbridge_pallet_outbound_queue::Event::MessageQueued { .. }, + ) => true, + _ => false, + }) + .count(); + + // This one is related to slashes + assert_eq!( + outbound_msg_queue_event, 1, + "MessageQueued event should be emitted" + ); + + // EthereumOutboundQueue -> queue_message -> MessageQQueuePallet (queue) + // MessageQueuePallet on_initialize -> dispatch queue -> process_message -> EthereumOutboundQueue_process_message + let nonce = snowbridge_pallet_outbound_queue::Nonce::::get( + snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL, + ); + + // We dispatched 2 already + assert_eq!(nonce, 2); + }); +} + fn inject_babe_slash(seed: &str) { let babe_key = get_pair_from_seed::(seed); let equivocation_proof = generate_babe_equivocation_proof(&babe_key); diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index 603bc4bb2..c605bf28f 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -349,6 +349,7 @@ pub mod pallet { fn on_initialize(_n: BlockNumberFor) -> Weight { let weight = Weight::zero(); + log::info!("inside on-initialize"); Self::process_slashes_queue_page(); // TODO: Weight @@ -478,6 +479,7 @@ impl OnEraStart for Pallet { // let's put 1000 as a conservative measure const REMOVE_LIMIT: u32 = 1000; + log::info!("on era start"); let bonding_duration = T::BondingDuration::get(); BondedEras::::mutate(|bonded| { @@ -517,7 +519,7 @@ impl OnEraStart for Pallet { impl Pallet { fn add_era_slashes_to_queue(active_era: EraIndex) { - let mut slashes: VecDeque<_> = Slashes::::take(&active_era).into(); + let mut slashes: VecDeque<_> = Slashes::::get(&active_era).into(); UnreportedSlashesQueue::::mutate(|queue| queue.append(&mut slashes)); } diff --git a/pallets/external-validator-slashes/src/tests.rs b/pallets/external-validator-slashes/src/tests.rs index be756ef94..b84a7f9bf 100644 --- a/pallets/external-validator-slashes/src/tests.rs +++ b/pallets/external-validator-slashes/src/tests.rs @@ -17,7 +17,8 @@ use { super::*, crate::mock::{ - new_test_ext, sent_ethereum_message_nonce, DeferPeriodGetter, ExternalValidatorSlashes, roll_one_block, Test, RuntimeOrigin + new_test_ext, roll_one_block, sent_ethereum_message_nonce, DeferPeriodGetter, + ExternalValidatorSlashes, RuntimeOrigin, Test, }, frame_support::{assert_noop, assert_ok}, mock::MockEraIndexProvider, @@ -353,7 +354,7 @@ fn test_on_offence_defer_period_0_messages_get_queued_across_eras() { 2, ); } - + start_era(3, 3); assert_eq!(UnreportedSlashesQueue::::get().len(), 30); @@ -366,7 +367,6 @@ fn test_on_offence_defer_period_0_messages_get_queued_across_eras() { roll_one_block(); assert_eq!(UnreportedSlashesQueue::::get().len(), 0); assert_eq!(sent_ethereum_message_nonce(), 3); - }); } From 0272f9385969048edb97ca6bc7b5dc3cdace40fa Mon Sep 17 00:00:00 2001 From: girazoki Date: Thu, 9 Jan 2025 16:13:07 +0100 Subject: [PATCH 13/26] more tests --- .../runtime/dancelight/src/lib.rs | 2 +- .../runtime/dancelight/src/tests/slashes.rs | 144 ++++++++++++++++++ 2 files changed, 145 insertions(+), 1 deletion(-) diff --git a/chains/orchestrator-relays/runtime/dancelight/src/lib.rs b/chains/orchestrator-relays/runtime/dancelight/src/lib.rs index f5ef7d643..10efdd1f8 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/lib.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/lib.rs @@ -1412,7 +1412,7 @@ impl pallet_external_validator_slashes::Config for Runtime { type ValidateMessage = tp_bridge::MessageValidator; type OutboundQueue = tp_bridge::CustomSendMessage; type TimestampProvider = TimestampProvider; - type QueuedSlashesProcessedPerBlock = ConstU32<20>; + type QueuedSlashesProcessedPerBlock = ConstU32<10>; type WeightInfo = weights::pallet_external_validator_slashes::SubstrateWeight; } diff --git a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs index 2ec723688..d3031f52a 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs @@ -470,6 +470,150 @@ fn test_slashes_are_sent_to_ethereum() { }); } +use frame_support::traits::Get; + +#[test] +fn test_slashes_are_sent_to_ethereum_accumulatedly() { + sp_tracing::try_init_simple(); + 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 channel_id = PRIMARY_GOVERNANCE_CHANNEL.encode(); + + // Insert PRIMARY_GOVERNANCE_CHANNEL channel id into storage. + let mut combined_channel_id_key = Vec::new(); + let hashed_key = twox_64(&channel_id); + + combined_channel_id_key.extend_from_slice(&hashed_key); + combined_channel_id_key.extend_from_slice(PRIMARY_GOVERNANCE_CHANNEL.as_ref()); + + let mut full_storage_key = Vec::new(); + full_storage_key.extend_from_slice(&frame_support::storage::storage_prefix( + b"EthereumSystem", + b"Channels", + )); + full_storage_key.extend_from_slice(&combined_channel_id_key); + + let channel = Channel { + agent_id: H256::default(), + para_id: 1000u32.into(), + }; + + frame_support::storage::unhashed::put(&full_storage_key, &channel); + + // We can inject arbitraqry slashes for arbitary accounts with root + let page_limit: u32 = ::QueuedSlashesProcessedPerBlock::get(); + for i in 0..page_limit +1 { + assert_ok!(ExternalValidatorSlashes::force_inject_slash( + RuntimeOrigin::root(), + 0, + AccountId::new(H256::from_low_u64_be(i as u64).to_fixed_bytes()), + Perbill::from_percent(75) + )); + } + + let deferred_era = ExternalValidators::current_era().unwrap() + SlashDeferDuration::get() + 1; + + let slashes = ExternalValidatorSlashes::slashes(deferred_era); + assert_eq!(slashes.len() as u32, page_limit +1); + + let session_in_which_slashes_are_sent = + (ExternalValidators::current_era().unwrap() + SlashDeferDuration::get() + 1) + * SessionsPerEra::get(); + run_to_session(session_in_which_slashes_are_sent); + + let outbound_msg_queue_event = System::events() + .iter() + .filter(|r| match r.event { + RuntimeEvent::EthereumOutboundQueue( + snowbridge_pallet_outbound_queue::Event::MessageQueued { .. }, + ) => true, + _ => false, + }) + .count(); + + // We have two reasons for sending messages: + // 1, because on_era_end sends rewards + // 2, because on_era_start sends slashes + // Both session ends and session starts are done on_initialize of frame-sesssion + assert_eq!( + outbound_msg_queue_event, 1, + "MessageQueued event should be emitted" + ); + + // We still have all slashes as unprocessed + let unprocessed_slashes = ExternalValidatorSlashes::unreported_slashes(); + assert_eq!(unprocessed_slashes.len() as u32, page_limit +1); + + + // Slashes start being sent after the era block + // They are scheduled as unprocessedSlashes + run_block(); + + let outbound_msg_queue_event = System::events() + .iter() + .filter(|r| match r.event { + RuntimeEvent::EthereumOutboundQueue( + snowbridge_pallet_outbound_queue::Event::MessageQueued { .. }, + ) => true, + _ => false, + }) + .count(); + + let unprocessed_slashes = ExternalValidatorSlashes::unreported_slashes(); + + // This one is related to slashes + assert_eq!( + outbound_msg_queue_event, 1, + "MessageQueued event should be emitted" + ); + + // We still should have one pending unprocessed slash, to be sent in the next block + assert_eq!(unprocessed_slashes.len() as u32, 1); + + run_block(); + + let outbound_msg_queue_event = System::events() + .iter() + .filter(|r| match r.event { + RuntimeEvent::EthereumOutboundQueue( + snowbridge_pallet_outbound_queue::Event::MessageQueued { .. }, + ) => true, + _ => false, + }) + .count(); + + let unprocessed_slashes = ExternalValidatorSlashes::unreported_slashes(); + + // This one is related to slashes + assert_eq!( + outbound_msg_queue_event, 1, + "MessageQueued event should be emitted" + ); + + // Now we should have 0 + assert_eq!(unprocessed_slashes.len() as u32, 0); + + // EthereumOutboundQueue -> queue_message -> MessageQQueuePallet (queue) + // MessageQueuePallet on_initialize -> dispatch queue -> process_message -> EthereumOutboundQueue_process_message + let nonce = snowbridge_pallet_outbound_queue::Nonce::::get( + snowbridge_core::PRIMARY_GOVERNANCE_CHANNEL, + ); + + // We dispatched 3 already + // 1 reward + 2 slashes + assert_eq!(nonce, 3); + }); +} + fn inject_babe_slash(seed: &str) { let babe_key = get_pair_from_seed::(seed); let equivocation_proof = generate_babe_equivocation_proof(&babe_key); From 2c1e4bedd2a151f837a20e600a56d08405031b3b Mon Sep 17 00:00:00 2001 From: girazoki Date: Thu, 9 Jan 2025 16:26:45 +0100 Subject: [PATCH 14/26] slashes --- .../runtime/dancelight/src/tests/slashes.rs | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs index d3031f52a..9f1e38f88 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs @@ -614,6 +614,116 @@ fn test_slashes_are_sent_to_ethereum_accumulatedly() { }); } +#[test] +fn test_slashes_are_sent_to_ethereum_accumulate_until_next_era() { + sp_tracing::try_init_simple(); + 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 channel_id = PRIMARY_GOVERNANCE_CHANNEL.encode(); + + // Insert PRIMARY_GOVERNANCE_CHANNEL channel id into storage. + let mut combined_channel_id_key = Vec::new(); + let hashed_key = twox_64(&channel_id); + + combined_channel_id_key.extend_from_slice(&hashed_key); + combined_channel_id_key.extend_from_slice(PRIMARY_GOVERNANCE_CHANNEL.as_ref()); + + let mut full_storage_key = Vec::new(); + full_storage_key.extend_from_slice(&frame_support::storage::storage_prefix( + b"EthereumSystem", + b"Channels", + )); + full_storage_key.extend_from_slice(&combined_channel_id_key); + + let channel = Channel { + agent_id: H256::default(), + para_id: 1000u32.into(), + }; + + frame_support::storage::unhashed::put(&full_storage_key, &channel); + + // We can inject arbitraqry slashes for arbitary accounts with root + let page_limit: u32 = ::QueuedSlashesProcessedPerBlock::get(); + + let blocks_in_era = crate::EpochDurationInBlocks::get() * SessionsPerEra::get(); + let total_slashes_to_inject = blocks_in_era*page_limit +1; + for i in 0..total_slashes_to_inject { + assert_ok!(ExternalValidatorSlashes::force_inject_slash( + RuntimeOrigin::root(), + 0, + AccountId::new(H256::from_low_u64_be(i as u64).to_fixed_bytes()), + Perbill::from_percent(75) + )); + } + + let deferred_era = ExternalValidators::current_era().unwrap() + SlashDeferDuration::get() + 1; + + let slashes = ExternalValidatorSlashes::slashes(deferred_era); + assert_eq!(slashes.len() as u32, total_slashes_to_inject); + + let session_in_which_slashes_are_sent = + (ExternalValidators::current_era().unwrap() + SlashDeferDuration::get() + 1) + * SessionsPerEra::get(); + run_to_session(session_in_which_slashes_are_sent); + + let outbound_msg_queue_event = System::events() + .iter() + .filter(|r| match r.event { + RuntimeEvent::EthereumOutboundQueue( + snowbridge_pallet_outbound_queue::Event::MessageQueued { .. }, + ) => true, + _ => false, + }) + .count(); + + // We have two reasons for sending messages: + // 1, because on_era_end sends rewards + // 2, because on_era_start sends slashes + // Both session ends and session starts are done on_initialize of frame-sesssion + assert_eq!( + outbound_msg_queue_event, 1, + "MessageQueued event should be emitted" + ); + + // We still have all slashes as unprocessed + let unprocessed_slashes = ExternalValidatorSlashes::unreported_slashes(); + assert_eq!(unprocessed_slashes.len() as u32, total_slashes_to_inject); + + // Running to the next era, but we should still have unprocessed + run_to_session((ExternalValidators::current_era().unwrap() +1)*SessionsPerEra::get()); + + let unprocessed_slashes = ExternalValidatorSlashes::unreported_slashes(); + + // We still should have one pending unprocessed slash, to be sent in the next block + assert_eq!(unprocessed_slashes.len() as u32, 1); + + // And in this case, we have 2 events + // the rewards one plus the one where we sent remaining slashes + let outbound_msg_queue_event = System::events() + .iter() + .filter(|r| match r.event { + RuntimeEvent::EthereumOutboundQueue( + snowbridge_pallet_outbound_queue::Event::MessageQueued { .. }, + ) => true, + _ => false, + }) + .count(); + assert_eq!( + outbound_msg_queue_event, 2, + "MessageQueued event should be emitted" + ); + }); +} + fn inject_babe_slash(seed: &str) { let babe_key = get_pair_from_seed::(seed); let equivocation_proof = generate_babe_equivocation_proof(&babe_key); From cc90357ce81dbfa5b32073c2af1835696d347c70 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 10:07:35 +0100 Subject: [PATCH 15/26] test we are sending message to eth --- ...st_slashes_are_confirmed_after_defer_period.ts | 15 +++++++++++++++ test/util/constants.ts | 2 ++ 2 files changed, 17 insertions(+) diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts index 9b27c56e7..13428b1c5 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts @@ -6,6 +6,7 @@ import { Keyring } from "@polkadot/keyring"; import { u8aToHex } from "@polkadot/util"; import { jumpToSession } from "../../../util/block"; import { generateBabeEquivocationProof } from "../../../util/slashes"; +import { PRIMARY_GOVERNANCE_CHANNEL_ID } from "../../../util/constants"; describeSuite({ id: "DTR1304", @@ -90,8 +91,22 @@ describeSuite({ const expectedSlashesAfterDefer = await polkadotJs.query.externalValidatorSlashes.slashes( DeferPeriod + 1 ); + // We should have unprocessed messages + const expectedUnprocessedMessages = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect (expectedUnprocessedMessages.length).to.be.eq(1); expect(expectedSlashesAfterDefer.length).to.be.eq(1); expect(expectedSlashesAfterDefer[0].confirmed.toHuman()).to.be.true; + + // In the next block we should send the slashes. For this we will confirm: + // A: that the unprocessed slashes decrease + // B: that the nonce of the primary channel increases + const primaryChannelNonceBefore = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID) + + await context.createBlock(); + const expectedUnprocessedMessagesAfterOneBlock = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + const primaryChannelNonceAfter = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID); + expect (primaryChannelNonceAfter.toBigInt()).toBe(primaryChannelNonceBefore.toBigInt()+ 1n); + expect (expectedUnprocessedMessagesAfterOneBlock.length).to.be.eq(0); }, }); }, diff --git a/test/util/constants.ts b/test/util/constants.ts index 903eea96d..c25bace68 100644 --- a/test/util/constants.ts +++ b/test/util/constants.ts @@ -10,3 +10,5 @@ export const STATEMINT_LOCATION_EXAMPLE = { X3: [{ Parachain: 1000 }, { PalletInstance: 50 }, { GeneralIndex: 0n }], }, }; + +export const PRIMARY_GOVERNANCE_CHANNEL_ID="0x0000000000000000000000000000000000000000000000000000000000000001" \ No newline at end of file From 62115b033b517f70977d0bdb99111b31d085bdeb Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 11:15:52 +0100 Subject: [PATCH 16/26] new integration test --- pallets/external-validator-slashes/src/lib.rs | 3 +- ...t_slashes_are_acummulated_across_blocks.ts | 84 +++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index c605bf28f..f931b6224 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -140,6 +140,7 @@ pub mod pallet { type TimestampProvider: Get; /// How many queued slashes are being processed per block. + #[pallet::constant] type QueuedSlashesProcessedPerBlock: Get; /// The weight information of this pallet. @@ -349,7 +350,6 @@ pub mod pallet { fn on_initialize(_n: BlockNumberFor) -> Weight { let weight = Weight::zero(); - log::info!("inside on-initialize"); Self::process_slashes_queue_page(); // TODO: Weight @@ -479,7 +479,6 @@ impl OnEraStart for Pallet { // let's put 1000 as a conservative measure const REMOVE_LIMIT: u32 = 1000; - log::info!("on era start"); let bonding_duration = T::BondingDuration::get(); BondedEras::::mutate(|bonded| { diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts new file mode 100644 index 000000000..29878e0e5 --- /dev/null +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts @@ -0,0 +1,84 @@ +import "@tanssi/api-augment"; +import { describeSuite, expect, beforeAll } from "@moonwall/cli"; +import { ApiPromise } from "@polkadot/api"; +import { KeyringPair, generateKeyringPair } from "@moonwall/util"; +import { Keyring } from "@polkadot/keyring"; +import { jumpToSession } from "../../../util/block"; +import { PRIMARY_GOVERNANCE_CHANNEL_ID } from "../../../util/constants"; + +describeSuite({ + id: "DTR1307", + title: "Slashes are accumulated based on max slashes sent per block", + foundationMethods: "dev", + testCases: ({ it, context }) => { + let polkadotJs: ApiPromise; + let alice: KeyringPair; + let aliceBabePair: KeyringPair; + let aliceStash: KeyringPair; + beforeAll(async () => { + const keyringBabe = new Keyring({ type: "sr25519" }); + aliceBabePair = keyringBabe.addFromUri("//Alice"); + polkadotJs = context.polkadotJs(); + alice = context.keyring.alice; + aliceStash = keyringBabe.addFromUri("//Alice//stash"); + }); + it({ + id: "E01", + title: "Slashes are accumulated across blocks", + test: async function () { + // we need to start at least one sesssion to start eras + await jumpToSession(context, 1); + // Let's inject slashes N+1 slashes, where N is the max slashes to send per block + // With force inject slash, we can inject a slash for any account + const maxSlashesPerMessage = (await polkadotJs.consts.externalValidatorSlashes.queuedSlashesProcessedPerBlock).toNumber(); + const slashesToInject = maxSlashesPerMessage +1; + let aliceNonce = (await polkadotJs.query.system.account(alice.address)).nonce.toNumber(); + + for (let i = 0; i < slashesToInject; i++) { + const randomAccount = generateKeyringPair("sr25519"); + await polkadotJs.tx.sudo + .sudo(polkadotJs.tx.externalValidatorSlashes.forceInjectSlash(0, randomAccount.address, 1000)) + .signAndSend(alice, { nonce: aliceNonce++ }); + } + await context.createBlock(); + + // Slash item should be there + const DeferPeriod = (await polkadotJs.consts.externalValidatorSlashes.slashDeferDuration).toNumber(); + + // scheduled slashes + const expectedSlashes = await polkadotJs.query.externalValidatorSlashes.slashes(DeferPeriod + 1); + expect(expectedSlashes.length).to.be.eq(slashesToInject); + + const sessionsPerEra = await polkadotJs.consts.externalValidators.sessionsPerEra; + + const currentIndex = await polkadotJs.query.session.currentIndex(); + + const targetSession = currentIndex * (sessionsPerEra * (DeferPeriod + 1)); + + await jumpToSession(context, targetSession); + + // scheduled slashes + const expectedSlashesAfterDefer = await polkadotJs.query.externalValidatorSlashes.slashes( + DeferPeriod + 1 + ); + // We should have unprocessed messages + const expectedUnprocessedMessages = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect (expectedUnprocessedMessages.length).to.be.eq(slashesToInject); + expect(expectedSlashesAfterDefer.length).to.be.eq(slashesToInject); + expect(expectedSlashesAfterDefer[0].confirmed.toHuman()).to.be.true; + + // In the next block we should send the slashes. For this we will confirm: + // A: that the unprocessed slashes decrease + // B: that the nonce of the primary channel increases + const primaryChannelNonceBefore = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID) + + await context.createBlock(); + const expectedUnprocessedMessagesAfterOneBlock = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + const primaryChannelNonceAfter = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID); + expect (primaryChannelNonceAfter.toBigInt()).toBe(primaryChannelNonceBefore.toBigInt()+ 1n); + // However we stil should have one unprocessed message + expect (expectedUnprocessedMessagesAfterOneBlock.length).to.be.eq(1); + }, + }); + }, +}); From 018dd753ea7b12de43d094f5d44b4fe4aacd100f Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 11:40:44 +0100 Subject: [PATCH 17/26] slashes are accumulated across eras --- ...est_slashes_are_acummulated_across_eras.ts | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts new file mode 100644 index 000000000..bfcf4f9ca --- /dev/null +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts @@ -0,0 +1,88 @@ +import "@tanssi/api-augment"; +import { describeSuite, expect, beforeAll } from "@moonwall/cli"; +import { ApiPromise } from "@polkadot/api"; +import { KeyringPair, generateKeyringPair } from "@moonwall/util"; +import { Keyring } from "@polkadot/keyring"; +import { jumpToSession } from "../../../util/block"; +import { PRIMARY_GOVERNANCE_CHANNEL_ID } from "../../../util/constants"; + +describeSuite({ + id: "DTR1308", + title: "Slashes are accumulated across eras based on max slashes sent per block", + foundationMethods: "dev", + testCases: ({ it, context }) => { + let polkadotJs: ApiPromise; + let alice: KeyringPair; + let aliceBabePair: KeyringPair; + let aliceStash: KeyringPair; + beforeAll(async () => { + const keyringBabe = new Keyring({ type: "sr25519" }); + aliceBabePair = keyringBabe.addFromUri("//Alice"); + polkadotJs = context.polkadotJs(); + alice = context.keyring.alice; + aliceStash = keyringBabe.addFromUri("//Alice//stash"); + }); + it({ + id: "E01", + title: "Slashes are accumulated across eras", + test: async function () { + // we need to start at least one sesssion to start eras + await jumpToSession(context, 1); + // Let's inject slashes N+1 slashes, where N is the max slashes to send per block + // With force inject slash, we can inject a slash for any account + const maxSlashesPerMessage = (await polkadotJs.consts.externalValidatorSlashes.queuedSlashesProcessedPerBlock).toNumber(); + const epochDuration = (await polkadotJs.consts.babe.epochDuration).toNumber(); + const sessionsPerEra = await polkadotJs.consts.externalValidators.sessionsPerEra; + + const slashesToInject = (maxSlashesPerMessage*epochDuration*sessionsPerEra.toNumber()) +1; + let aliceNonce = (await polkadotJs.query.system.account(alice.address)).nonce.toNumber(); + + for (let i = 0; i < slashesToInject; i++) { + const randomAccount = generateKeyringPair("sr25519"); + await polkadotJs.tx.sudo + .sudo(polkadotJs.tx.externalValidatorSlashes.forceInjectSlash(0, randomAccount.address, 1000)) + .signAndSend(alice, { nonce: aliceNonce++ }); + } + await context.createBlock(); + + // Slash item should be there + const DeferPeriod = (await polkadotJs.consts.externalValidatorSlashes.slashDeferDuration).toNumber(); + + // scheduled slashes + const expectedSlashes = await polkadotJs.query.externalValidatorSlashes.slashes(DeferPeriod + 1); + expect(expectedSlashes.length).to.be.eq(slashesToInject); + + + const currentIndex = await polkadotJs.query.session.currentIndex(); + + const targetSession = currentIndex * (sessionsPerEra * (DeferPeriod + 1)); + + await jumpToSession(context, targetSession); + + // scheduled slashes + const expectedSlashesAfterDefer = await polkadotJs.query.externalValidatorSlashes.slashes( + DeferPeriod + 1 + ); + // We should have unprocessed messages + const expectedUnprocessedMessages = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect (expectedUnprocessedMessages.length).to.be.eq(slashesToInject); + expect(expectedSlashesAfterDefer.length).to.be.eq(slashesToInject); + expect(expectedSlashesAfterDefer[0].confirmed.toHuman()).to.be.true; + + // Now we will jump one entire era + // After one era, we should still have one slash to send + const currentIndexAfterSlashes = await polkadotJs.query.session.currentIndex(); + const targetSessionToNextEra = currentIndexAfterSlashes.toNumber() + sessionsPerEra.toNumber(); + console.log(currentIndexAfterSlashes.toBigInt()) + console.log(sessionsPerEra.toBigInt()) + console.log(targetSessionToNextEra) + + await jumpToSession(context, targetSessionToNextEra); + + // However we stil should have one unprocessed message + const expectedUnprocessedMessagesAfterOneEra = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect (expectedUnprocessedMessagesAfterOneEra.length).to.be.eq(1); + }, + }); + }, +}); From 034d3d1f799109f7f9cf465f2658fe3d0482127c Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 14:46:34 +0100 Subject: [PATCH 18/26] cleanup some tests --- .../dancelight/src/tests/common/mod.rs | 4 ++ .../src/tests/external_validators_tests.rs | 27 ------- .../runtime/dancelight/src/tests/slashes.rs | 70 ------------------- 3 files changed, 4 insertions(+), 97 deletions(-) diff --git a/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs b/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs index c29fc5bc7..9ee7ed2b9 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/tests/common/mod.rs @@ -677,6 +677,10 @@ impl ExtBuilder { .unwrap(); snowbridge_pallet_system::GenesisConfig:: { + // This is irrelevant, we can put any number here + // as long as it is a non-used para id + para_id: 1000u32.into(), + asset_hub_para_id: 1001u32.into(), ..Default::default() } .assimilate_storage(&mut t) diff --git a/chains/orchestrator-relays/runtime/dancelight/src/tests/external_validators_tests.rs b/chains/orchestrator-relays/runtime/dancelight/src/tests/external_validators_tests.rs index 2316e4949..5ed05c02e 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/tests/external_validators_tests.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/tests/external_validators_tests.rs @@ -23,10 +23,6 @@ use { }, frame_support::{assert_ok, traits::fungible::Mutate}, pallet_external_validators::Forcing, - parity_scale_codec::Encode, - snowbridge_core::{Channel, PRIMARY_GOVERNANCE_CHANNEL}, - sp_core::H256, - sp_io::hashing::twox_64, std::{collections::HashMap, ops::RangeInclusive}, }; @@ -710,29 +706,6 @@ fn external_validators_rewards_sends_message_on_era_end() { // SessionsPerEra depends on fast-runtime feature, this test should pass regardless let sessions_per_era = SessionsPerEra::get(); - let channel_id = PRIMARY_GOVERNANCE_CHANNEL.encode(); - - // Insert PRIMARY_GOVERNANCE_CHANNEL channel id into storage. - let mut combined_channel_id_key = Vec::new(); - let hashed_key = twox_64(&channel_id); - - combined_channel_id_key.extend_from_slice(&hashed_key); - combined_channel_id_key.extend_from_slice(PRIMARY_GOVERNANCE_CHANNEL.as_ref()); - - let mut full_storage_key = Vec::new(); - full_storage_key.extend_from_slice(&frame_support::storage::storage_prefix( - b"EthereumSystem", - b"Channels", - )); - full_storage_key.extend_from_slice(&combined_channel_id_key); - - let channel = Channel { - agent_id: H256::default(), - para_id: 1000u32.into(), - }; - - frame_support::storage::unhashed::put(&full_storage_key, &channel); - // This will call on_era_end for era 0 run_to_session(sessions_per_era); diff --git a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs index 9f1e38f88..7409175f5 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/tests/slashes.rs @@ -357,9 +357,6 @@ fn test_slashes_cannot_be_cancelled_after_defer_period() { }); } -use parity_scale_codec::Encode; -use snowbridge_core::{Channel, PRIMARY_GOVERNANCE_CHANNEL}; -use sp_core::twox_64; #[test] fn test_slashes_are_sent_to_ethereum() { sp_tracing::try_init_simple(); @@ -374,29 +371,6 @@ fn test_slashes_are_sent_to_ethereum() { .build() .execute_with(|| { run_to_block(2); - let channel_id = PRIMARY_GOVERNANCE_CHANNEL.encode(); - - // Insert PRIMARY_GOVERNANCE_CHANNEL channel id into storage. - let mut combined_channel_id_key = Vec::new(); - let hashed_key = twox_64(&channel_id); - - combined_channel_id_key.extend_from_slice(&hashed_key); - combined_channel_id_key.extend_from_slice(PRIMARY_GOVERNANCE_CHANNEL.as_ref()); - - let mut full_storage_key = Vec::new(); - full_storage_key.extend_from_slice(&frame_support::storage::storage_prefix( - b"EthereumSystem", - b"Channels", - )); - full_storage_key.extend_from_slice(&combined_channel_id_key); - - let channel = Channel { - agent_id: H256::default(), - para_id: 1000u32.into(), - }; - - frame_support::storage::unhashed::put(&full_storage_key, &channel); - assert_ok!(ExternalValidators::remove_whitelisted( RuntimeOrigin::root(), AccountId::from(ALICE) @@ -486,28 +460,6 @@ fn test_slashes_are_sent_to_ethereum_accumulatedly() { .build() .execute_with(|| { run_to_block(2); - let channel_id = PRIMARY_GOVERNANCE_CHANNEL.encode(); - - // Insert PRIMARY_GOVERNANCE_CHANNEL channel id into storage. - let mut combined_channel_id_key = Vec::new(); - let hashed_key = twox_64(&channel_id); - - combined_channel_id_key.extend_from_slice(&hashed_key); - combined_channel_id_key.extend_from_slice(PRIMARY_GOVERNANCE_CHANNEL.as_ref()); - - let mut full_storage_key = Vec::new(); - full_storage_key.extend_from_slice(&frame_support::storage::storage_prefix( - b"EthereumSystem", - b"Channels", - )); - full_storage_key.extend_from_slice(&combined_channel_id_key); - - let channel = Channel { - agent_id: H256::default(), - para_id: 1000u32.into(), - }; - - frame_support::storage::unhashed::put(&full_storage_key, &channel); // We can inject arbitraqry slashes for arbitary accounts with root let page_limit: u32 = ::QueuedSlashesProcessedPerBlock::get(); @@ -628,28 +580,6 @@ fn test_slashes_are_sent_to_ethereum_accumulate_until_next_era() { .build() .execute_with(|| { run_to_block(2); - let channel_id = PRIMARY_GOVERNANCE_CHANNEL.encode(); - - // Insert PRIMARY_GOVERNANCE_CHANNEL channel id into storage. - let mut combined_channel_id_key = Vec::new(); - let hashed_key = twox_64(&channel_id); - - combined_channel_id_key.extend_from_slice(&hashed_key); - combined_channel_id_key.extend_from_slice(PRIMARY_GOVERNANCE_CHANNEL.as_ref()); - - let mut full_storage_key = Vec::new(); - full_storage_key.extend_from_slice(&frame_support::storage::storage_prefix( - b"EthereumSystem", - b"Channels", - )); - full_storage_key.extend_from_slice(&combined_channel_id_key); - - let channel = Channel { - agent_id: H256::default(), - para_id: 1000u32.into(), - }; - - frame_support::storage::unhashed::put(&full_storage_key, &channel); // We can inject arbitraqry slashes for arbitary accounts with root let page_limit: u32 = ::QueuedSlashesProcessedPerBlock::get(); From 6b07ddf9bee1f122f4c6a453992cd03defd33058 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 14:56:50 +0100 Subject: [PATCH 19/26] zepter --- pallets/external-validator-slashes/Cargo.toml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pallets/external-validator-slashes/Cargo.toml b/pallets/external-validator-slashes/Cargo.toml index 6b800ac86..470b60e3e 100644 --- a/pallets/external-validator-slashes/Cargo.toml +++ b/pallets/external-validator-slashes/Cargo.toml @@ -30,7 +30,7 @@ tp-bridge = { workspace = true } tp-traits = { workspace = true } [dev-dependencies] -pallet-timestamp = { workspace = true } +pallet-timestamp = { workspace = true, features=["std"] } sp-core = { workspace = true } sp-io = { workspace = true } @@ -53,6 +53,7 @@ std = [ "sp-std/std", "tp-bridge/std", "tp-traits/std", + "pallet-timestamp/std" ] runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", @@ -64,6 +65,7 @@ runtime-benchmarks = [ "sp-staking/runtime-benchmarks", "tp-bridge/runtime-benchmarks", "tp-traits/runtime-benchmarks", + "pallet-timestamp/runtime-benchmarks" ] try-runtime = [ @@ -72,4 +74,5 @@ try-runtime = [ "pallet-session/try-runtime", "pallet-staking/try-runtime", "sp-runtime/try-runtime", -] + "pallet-timestamp/try-runtime" + ] From 0e27203771b63c29033a50eab5880329ca7c90f9 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 14:58:37 +0100 Subject: [PATCH 20/26] lint --- .../slashes/test_slashes_are_acummulated_across_blocks.ts | 5 ----- .../slashes/test_slashes_are_acummulated_across_eras.ts | 6 ------ 2 files changed, 11 deletions(-) diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts index 29878e0e5..ae3537714 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts @@ -13,14 +13,9 @@ describeSuite({ testCases: ({ it, context }) => { let polkadotJs: ApiPromise; let alice: KeyringPair; - let aliceBabePair: KeyringPair; - let aliceStash: KeyringPair; beforeAll(async () => { - const keyringBabe = new Keyring({ type: "sr25519" }); - aliceBabePair = keyringBabe.addFromUri("//Alice"); polkadotJs = context.polkadotJs(); alice = context.keyring.alice; - aliceStash = keyringBabe.addFromUri("//Alice//stash"); }); it({ id: "E01", diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts index bfcf4f9ca..ff8e3617a 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts @@ -4,7 +4,6 @@ import { ApiPromise } from "@polkadot/api"; import { KeyringPair, generateKeyringPair } from "@moonwall/util"; import { Keyring } from "@polkadot/keyring"; import { jumpToSession } from "../../../util/block"; -import { PRIMARY_GOVERNANCE_CHANNEL_ID } from "../../../util/constants"; describeSuite({ id: "DTR1308", @@ -13,14 +12,9 @@ describeSuite({ testCases: ({ it, context }) => { let polkadotJs: ApiPromise; let alice: KeyringPair; - let aliceBabePair: KeyringPair; - let aliceStash: KeyringPair; beforeAll(async () => { - const keyringBabe = new Keyring({ type: "sr25519" }); - aliceBabePair = keyringBabe.addFromUri("//Alice"); polkadotJs = context.polkadotJs(); alice = context.keyring.alice; - aliceStash = keyringBabe.addFromUri("//Alice//stash"); }); it({ id: "E01", From e1d527f4679728a64f19df95844dc4b92ae962b9 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 14:59:09 +0100 Subject: [PATCH 21/26] fmt --- ...t_slashes_are_acummulated_across_blocks.ts | 30 ++++++++++++------- ...est_slashes_are_acummulated_across_eras.ts | 27 +++++++++-------- ...lashes_are_confirmed_after_defer_period.ts | 20 ++++++++----- 3 files changed, 47 insertions(+), 30 deletions(-) diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts index ae3537714..9592d2d16 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts @@ -25,15 +25,17 @@ describeSuite({ await jumpToSession(context, 1); // Let's inject slashes N+1 slashes, where N is the max slashes to send per block // With force inject slash, we can inject a slash for any account - const maxSlashesPerMessage = (await polkadotJs.consts.externalValidatorSlashes.queuedSlashesProcessedPerBlock).toNumber(); - const slashesToInject = maxSlashesPerMessage +1; + const maxSlashesPerMessage = ( + await polkadotJs.consts.externalValidatorSlashes.queuedSlashesProcessedPerBlock + ).toNumber(); + const slashesToInject = maxSlashesPerMessage + 1; let aliceNonce = (await polkadotJs.query.system.account(alice.address)).nonce.toNumber(); for (let i = 0; i < slashesToInject; i++) { const randomAccount = generateKeyringPair("sr25519"); await polkadotJs.tx.sudo - .sudo(polkadotJs.tx.externalValidatorSlashes.forceInjectSlash(0, randomAccount.address, 1000)) - .signAndSend(alice, { nonce: aliceNonce++ }); + .sudo(polkadotJs.tx.externalValidatorSlashes.forceInjectSlash(0, randomAccount.address, 1000)) + .signAndSend(alice, { nonce: aliceNonce++ }); } await context.createBlock(); @@ -57,22 +59,28 @@ describeSuite({ DeferPeriod + 1 ); // We should have unprocessed messages - const expectedUnprocessedMessages = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); - expect (expectedUnprocessedMessages.length).to.be.eq(slashesToInject); + const expectedUnprocessedMessages = + await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect(expectedUnprocessedMessages.length).to.be.eq(slashesToInject); expect(expectedSlashesAfterDefer.length).to.be.eq(slashesToInject); expect(expectedSlashesAfterDefer[0].confirmed.toHuman()).to.be.true; // In the next block we should send the slashes. For this we will confirm: // A: that the unprocessed slashes decrease // B: that the nonce of the primary channel increases - const primaryChannelNonceBefore = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID) + const primaryChannelNonceBefore = await polkadotJs.query.ethereumOutboundQueue.nonce( + PRIMARY_GOVERNANCE_CHANNEL_ID + ); await context.createBlock(); - const expectedUnprocessedMessagesAfterOneBlock = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); - const primaryChannelNonceAfter = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID); - expect (primaryChannelNonceAfter.toBigInt()).toBe(primaryChannelNonceBefore.toBigInt()+ 1n); + const expectedUnprocessedMessagesAfterOneBlock = + await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + const primaryChannelNonceAfter = await polkadotJs.query.ethereumOutboundQueue.nonce( + PRIMARY_GOVERNANCE_CHANNEL_ID + ); + expect(primaryChannelNonceAfter.toBigInt()).toBe(primaryChannelNonceBefore.toBigInt() + 1n); // However we stil should have one unprocessed message - expect (expectedUnprocessedMessagesAfterOneBlock.length).to.be.eq(1); + expect(expectedUnprocessedMessagesAfterOneBlock.length).to.be.eq(1); }, }); }, diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts index ff8e3617a..5c2bc7050 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts @@ -24,18 +24,20 @@ describeSuite({ await jumpToSession(context, 1); // Let's inject slashes N+1 slashes, where N is the max slashes to send per block // With force inject slash, we can inject a slash for any account - const maxSlashesPerMessage = (await polkadotJs.consts.externalValidatorSlashes.queuedSlashesProcessedPerBlock).toNumber(); + const maxSlashesPerMessage = ( + await polkadotJs.consts.externalValidatorSlashes.queuedSlashesProcessedPerBlock + ).toNumber(); const epochDuration = (await polkadotJs.consts.babe.epochDuration).toNumber(); const sessionsPerEra = await polkadotJs.consts.externalValidators.sessionsPerEra; - const slashesToInject = (maxSlashesPerMessage*epochDuration*sessionsPerEra.toNumber()) +1; + const slashesToInject = maxSlashesPerMessage * epochDuration * sessionsPerEra.toNumber() + 1; let aliceNonce = (await polkadotJs.query.system.account(alice.address)).nonce.toNumber(); for (let i = 0; i < slashesToInject; i++) { const randomAccount = generateKeyringPair("sr25519"); await polkadotJs.tx.sudo - .sudo(polkadotJs.tx.externalValidatorSlashes.forceInjectSlash(0, randomAccount.address, 1000)) - .signAndSend(alice, { nonce: aliceNonce++ }); + .sudo(polkadotJs.tx.externalValidatorSlashes.forceInjectSlash(0, randomAccount.address, 1000)) + .signAndSend(alice, { nonce: aliceNonce++ }); } await context.createBlock(); @@ -46,7 +48,6 @@ describeSuite({ const expectedSlashes = await polkadotJs.query.externalValidatorSlashes.slashes(DeferPeriod + 1); expect(expectedSlashes.length).to.be.eq(slashesToInject); - const currentIndex = await polkadotJs.query.session.currentIndex(); const targetSession = currentIndex * (sessionsPerEra * (DeferPeriod + 1)); @@ -58,8 +59,9 @@ describeSuite({ DeferPeriod + 1 ); // We should have unprocessed messages - const expectedUnprocessedMessages = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); - expect (expectedUnprocessedMessages.length).to.be.eq(slashesToInject); + const expectedUnprocessedMessages = + await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect(expectedUnprocessedMessages.length).to.be.eq(slashesToInject); expect(expectedSlashesAfterDefer.length).to.be.eq(slashesToInject); expect(expectedSlashesAfterDefer[0].confirmed.toHuman()).to.be.true; @@ -67,15 +69,16 @@ describeSuite({ // After one era, we should still have one slash to send const currentIndexAfterSlashes = await polkadotJs.query.session.currentIndex(); const targetSessionToNextEra = currentIndexAfterSlashes.toNumber() + sessionsPerEra.toNumber(); - console.log(currentIndexAfterSlashes.toBigInt()) - console.log(sessionsPerEra.toBigInt()) - console.log(targetSessionToNextEra) + console.log(currentIndexAfterSlashes.toBigInt()); + console.log(sessionsPerEra.toBigInt()); + console.log(targetSessionToNextEra); await jumpToSession(context, targetSessionToNextEra); // However we stil should have one unprocessed message - const expectedUnprocessedMessagesAfterOneEra = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); - expect (expectedUnprocessedMessagesAfterOneEra.length).to.be.eq(1); + const expectedUnprocessedMessagesAfterOneEra = + await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect(expectedUnprocessedMessagesAfterOneEra.length).to.be.eq(1); }, }); }, diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts index 13428b1c5..807e1bfc0 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_confirmed_after_defer_period.ts @@ -92,21 +92,27 @@ describeSuite({ DeferPeriod + 1 ); // We should have unprocessed messages - const expectedUnprocessedMessages = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); - expect (expectedUnprocessedMessages.length).to.be.eq(1); + const expectedUnprocessedMessages = + await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + expect(expectedUnprocessedMessages.length).to.be.eq(1); expect(expectedSlashesAfterDefer.length).to.be.eq(1); expect(expectedSlashesAfterDefer[0].confirmed.toHuman()).to.be.true; // In the next block we should send the slashes. For this we will confirm: // A: that the unprocessed slashes decrease // B: that the nonce of the primary channel increases - const primaryChannelNonceBefore = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID) + const primaryChannelNonceBefore = await polkadotJs.query.ethereumOutboundQueue.nonce( + PRIMARY_GOVERNANCE_CHANNEL_ID + ); await context.createBlock(); - const expectedUnprocessedMessagesAfterOneBlock = await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); - const primaryChannelNonceAfter = await polkadotJs.query.ethereumOutboundQueue.nonce(PRIMARY_GOVERNANCE_CHANNEL_ID); - expect (primaryChannelNonceAfter.toBigInt()).toBe(primaryChannelNonceBefore.toBigInt()+ 1n); - expect (expectedUnprocessedMessagesAfterOneBlock.length).to.be.eq(0); + const expectedUnprocessedMessagesAfterOneBlock = + await polkadotJs.query.externalValidatorSlashes.unreportedSlashesQueue(); + const primaryChannelNonceAfter = await polkadotJs.query.ethereumOutboundQueue.nonce( + PRIMARY_GOVERNANCE_CHANNEL_ID + ); + expect(primaryChannelNonceAfter.toBigInt()).toBe(primaryChannelNonceBefore.toBigInt() + 1n); + expect(expectedUnprocessedMessagesAfterOneBlock.length).to.be.eq(0); }, }); }, From b7d4bd8e1787b1e0ba6758d37d922d4a0e687bab Mon Sep 17 00:00:00 2001 From: nanocryk <6422796+nanocryk@users.noreply.github.com> Date: Fri, 10 Jan 2025 15:02:48 +0100 Subject: [PATCH 22/26] Benchmark slashes queue processing (#801) * optimize storage writes and prepare bench * run bench locally --- .../pallet_external_validator_slashes.rs | 33 ++++++++++ .../src/benchmarking.rs | 24 +++++++ pallets/external-validator-slashes/src/lib.rs | 41 ++++++------ .../external-validator-slashes/src/weights.rs | 65 +++++++++++++++++++ 4 files changed, 144 insertions(+), 19 deletions(-) diff --git a/chains/orchestrator-relays/runtime/dancelight/src/weights/pallet_external_validator_slashes.rs b/chains/orchestrator-relays/runtime/dancelight/src/weights/pallet_external_validator_slashes.rs index 31c33b6eb..daee2f2f8 100644 --- a/chains/orchestrator-relays/runtime/dancelight/src/weights/pallet_external_validator_slashes.rs +++ b/chains/orchestrator-relays/runtime/dancelight/src/weights/pallet_external_validator_slashes.rs @@ -108,4 +108,37 @@ impl pallet_external_validator_slashes::WeightInfo for .saturating_add(T::DbWeight::get().reads(3_u64)) .saturating_add(T::DbWeight::get().writes(5_u64)) } + + + /// Storage: `ExternalValidators::ActiveEra` (r:1 w:0) + /// Proof: `ExternalValidators::ActiveEra` (`max_values`: Some(1), `max_size`: Some(13), added: 508, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidatorSlashes::UnreportedSlashesQueue` (r:1 w:1) + /// Proof: `ExternalValidatorSlashes::UnreportedSlashesQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Timestamp::Now` (r:1 w:0) + /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `EthereumSystem::Channels` (r:1 w:0) + /// Proof: `EthereumSystem::Channels` (`max_values`: None, `max_size`: Some(76), added: 2551, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0x3a72656c61795f64697370617463685f71756575655f72656d61696e696e675f` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a72656c61795f64697370617463685f71756575655f72656d61696e696e675f` (r:0 w:1) + /// Storage: `MessageQueue::Pages` (r:0 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(32845), added: 35320, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xf5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e` (r:0 w:1) + /// Proof: UNKNOWN KEY `0xf5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e` (r:0 w:1) + /// The range of component `s` is `[1, 200]`. + fn process_slashes_queue(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `393 + s * (42 ±0)` + // Estimated: `3601 + s * (42 ±0)` + // Minimum execution time: 46_622_000 picoseconds. + Weight::from_parts(72_326_163, 3601) + // Standard Error: 58_929 + .saturating_add(Weight::from_parts(2_894_084, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + .saturating_add(Weight::from_parts(0, 42).saturating_mul(s.into())) + } } \ No newline at end of file diff --git a/pallets/external-validator-slashes/src/benchmarking.rs b/pallets/external-validator-slashes/src/benchmarking.rs index 2946a173e..2d1430246 100644 --- a/pallets/external-validator-slashes/src/benchmarking.rs +++ b/pallets/external-validator-slashes/src/benchmarking.rs @@ -100,6 +100,30 @@ mod benchmarks { Ok(()) } + #[benchmark] + fn process_slashes_queue(s: Linear<1, 200>) -> Result<(), BenchmarkError> { + let mut queue = VecDeque::new(); + let dummy = || T::AccountId::decode(&mut TrailingZeroInput::zeroes()).unwrap(); + + for _ in 0..(s + 1) { + queue.push_back(Slash::::default_from(dummy())); + } + + UnreportedSlashesQueue::::set(queue); + + let processed; + + #[block] + { + processed = Pallet::::process_slashes_queue(s); + } + + assert_eq!(UnreportedSlashesQueue::::get().len(), 1); + assert_eq!(processed, s); + + Ok(()) + } + impl_benchmark_test_suite!( ExternalValidatorSlashes, crate::mock::new_test_ext(), diff --git a/pallets/external-validator-slashes/src/lib.rs b/pallets/external-validator-slashes/src/lib.rs index f931b6224..953c79a28 100644 --- a/pallets/external-validator-slashes/src/lib.rs +++ b/pallets/external-validator-slashes/src/lib.rs @@ -348,13 +348,10 @@ pub mod pallet { #[pallet::hooks] impl Hooks> for Pallet { fn on_initialize(_n: BlockNumberFor) -> Weight { - let weight = Weight::zero(); + log::info!("inside on-initialize"); - Self::process_slashes_queue_page(); - - // TODO: Weight - - weight + let processed = Self::process_slashes_queue(T::QueuedSlashesProcessedPerBlock::get()); + T::WeightInfo::process_slashes_queue(processed) } } } @@ -523,28 +520,32 @@ impl Pallet { UnreportedSlashesQueue::::mutate(|queue| queue.append(&mut slashes)); } - fn process_slashes_queue_page() { + fn process_slashes_queue(amount: u32) -> u32 { let mut slashes_to_send: Vec<_> = vec![]; let era_index = T::EraIndexProvider::active_era().index; // prepare up to QueuedSlashesProcessedPerBlock slashes to be sent - for _ in 0..(T::QueuedSlashesProcessedPerBlock::get() as usize) { - let Some(slash) = UnreportedSlashesQueue::::mutate(VecDeque::pop_front) else { - // no more slashes to process in the queue - break; - }; + UnreportedSlashesQueue::::mutate(|queue| { + for _ in 0..amount { + let Some(slash) = queue.pop_front() else { + // no more slashes to process in the queue + break; + }; - // TODO: check if validator.clone().encode() matches with the actual account bytes. - slashes_to_send.push(( - slash.validator.clone().encode(), - slash.percentage.deconstruct(), - )); - } + // TODO: check if validator.clone().encode() matches with the actual account bytes. + slashes_to_send.push(( + slash.validator.clone().encode(), + slash.percentage.deconstruct(), + )); + } + }); if slashes_to_send.is_empty() { - return; + return 0; } + let slashes_count = slashes_to_send.len() as u32; + // Build command with slashes. let command = Command::ReportSlashes { // TODO: change this @@ -572,6 +573,8 @@ impl Pallet { log::error!(target: "ext_validators_slashes", "OutboundQueue validation of message failed. {err:?}"); } }; + + slashes_count } } diff --git a/pallets/external-validator-slashes/src/weights.rs b/pallets/external-validator-slashes/src/weights.rs index 0f947248f..83317165f 100644 --- a/pallets/external-validator-slashes/src/weights.rs +++ b/pallets/external-validator-slashes/src/weights.rs @@ -56,6 +56,7 @@ pub trait WeightInfo { fn cancel_deferred_slash(s: u32, ) -> Weight; fn force_inject_slash() -> Weight; fn root_test_send_msg_to_eth() -> Weight; + fn process_slashes_queue(s: u32, ) -> Weight; } /// Weights for pallet_external_validator_slashes using the Substrate node and recommended hardware. @@ -102,6 +103,37 @@ impl WeightInfo for SubstrateWeight { .saturating_add(T::DbWeight::get().reads(3_u64)) .saturating_add(T::DbWeight::get().writes(5_u64)) } + /// Storage: `ExternalValidators::ActiveEra` (r:1 w:0) + /// Proof: `ExternalValidators::ActiveEra` (`max_values`: Some(1), `max_size`: Some(13), added: 508, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidatorSlashes::UnreportedSlashesQueue` (r:1 w:1) + /// Proof: `ExternalValidatorSlashes::UnreportedSlashesQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Timestamp::Now` (r:1 w:0) + /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `EthereumSystem::Channels` (r:1 w:0) + /// Proof: `EthereumSystem::Channels` (`max_values`: None, `max_size`: Some(76), added: 2551, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0x3a72656c61795f64697370617463685f71756575655f72656d61696e696e675f` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a72656c61795f64697370617463685f71756575655f72656d61696e696e675f` (r:0 w:1) + /// Storage: `MessageQueue::Pages` (r:0 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(32845), added: 35320, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xf5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e` (r:0 w:1) + /// Proof: UNKNOWN KEY `0xf5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e` (r:0 w:1) + /// The range of component `s` is `[1, 200]`. + fn process_slashes_queue(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `393 + s * (42 ±0)` + // Estimated: `3601 + s * (42 ±0)` + // Minimum execution time: 46_622_000 picoseconds. + Weight::from_parts(72_326_163, 3601) + // Standard Error: 58_929 + .saturating_add(Weight::from_parts(2_894_084, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + .saturating_add(Weight::from_parts(0, 42).saturating_mul(s.into())) + } } // For backwards compatibility and tests @@ -147,4 +179,37 @@ impl WeightInfo for () { .saturating_add(RocksDbWeight::get().reads(3_u64)) .saturating_add(RocksDbWeight::get().writes(5_u64)) } + + + /// Storage: `ExternalValidators::ActiveEra` (r:1 w:0) + /// Proof: `ExternalValidators::ActiveEra` (`max_values`: Some(1), `max_size`: Some(13), added: 508, mode: `MaxEncodedLen`) + /// Storage: `ExternalValidatorSlashes::UnreportedSlashesQueue` (r:1 w:1) + /// Proof: `ExternalValidatorSlashes::UnreportedSlashesQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Timestamp::Now` (r:1 w:0) + /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `EthereumSystem::Channels` (r:1 w:0) + /// Proof: `EthereumSystem::Channels` (`max_values`: None, `max_size`: Some(76), added: 2551, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0x3a72656c61795f64697370617463685f71756575655f72656d61696e696e675f` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a72656c61795f64697370617463685f71756575655f72656d61696e696e675f` (r:0 w:1) + /// Storage: `MessageQueue::Pages` (r:0 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(32845), added: 35320, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xf5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e` (r:0 w:1) + /// Proof: UNKNOWN KEY `0xf5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e` (r:0 w:1) + /// The range of component `s` is `[1, 200]`. + fn process_slashes_queue(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `393 + s * (42 ±0)` + // Estimated: `3601 + s * (42 ±0)` + // Minimum execution time: 46_622_000 picoseconds. + Weight::from_parts(72_326_163, 3601) + // Standard Error: 58_929 + .saturating_add(Weight::from_parts(2_894_084, 0).saturating_mul(s.into())) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + .saturating_add(Weight::from_parts(0, 42).saturating_mul(s.into())) + } } From 0ccdf17735bb16ff993744c590d50b03f116f745 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 15:03:24 +0100 Subject: [PATCH 23/26] fmt --- .../slashes/test_slashes_are_acummulated_across_blocks.ts | 1 - .../slashes/test_slashes_are_acummulated_across_eras.ts | 1 - test/util/constants.ts | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts index 9592d2d16..178d511e6 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_blocks.ts @@ -2,7 +2,6 @@ import "@tanssi/api-augment"; import { describeSuite, expect, beforeAll } from "@moonwall/cli"; import { ApiPromise } from "@polkadot/api"; import { KeyringPair, generateKeyringPair } from "@moonwall/util"; -import { Keyring } from "@polkadot/keyring"; import { jumpToSession } from "../../../util/block"; import { PRIMARY_GOVERNANCE_CHANNEL_ID } from "../../../util/constants"; diff --git a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts index 5c2bc7050..2a49aec4f 100644 --- a/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts +++ b/test/suites/dev-tanssi-relay/slashes/test_slashes_are_acummulated_across_eras.ts @@ -2,7 +2,6 @@ import "@tanssi/api-augment"; import { describeSuite, expect, beforeAll } from "@moonwall/cli"; import { ApiPromise } from "@polkadot/api"; import { KeyringPair, generateKeyringPair } from "@moonwall/util"; -import { Keyring } from "@polkadot/keyring"; import { jumpToSession } from "../../../util/block"; describeSuite({ diff --git a/test/util/constants.ts b/test/util/constants.ts index c25bace68..10f9c1f6f 100644 --- a/test/util/constants.ts +++ b/test/util/constants.ts @@ -11,4 +11,4 @@ export const STATEMINT_LOCATION_EXAMPLE = { }, }; -export const PRIMARY_GOVERNANCE_CHANNEL_ID="0x0000000000000000000000000000000000000000000000000000000000000001" \ No newline at end of file +export const PRIMARY_GOVERNANCE_CHANNEL_ID = "0x0000000000000000000000000000000000000000000000000000000000000001"; From ac2912e418b3b56b68dc9a8c300b004ca0cbe90b Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 15:03:43 +0100 Subject: [PATCH 24/26] ts-api --- .../interfaces/augment-api-consts.ts | 2 + .../interfaces/augment-api-query.ts | 7 + .../src/dancelight/interfaces/lookup.ts | 858 ++++++++--------- .../src/dancelight/interfaces/types-lookup.ts | 868 +++++++++--------- 4 files changed, 872 insertions(+), 863 deletions(-) diff --git a/typescript-api/src/dancelight/interfaces/augment-api-consts.ts b/typescript-api/src/dancelight/interfaces/augment-api-consts.ts index 3b04ac5eb..b6b3f13f9 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-consts.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-consts.ts @@ -183,6 +183,8 @@ declare module "@polkadot/api-base/types/consts" { externalValidatorSlashes: { /** Number of eras that staked funds must remain bonded for. */ bondingDuration: u32 & AugmentedConst; + /** How many queued slashes are being processed per block. */ + queuedSlashesProcessedPerBlock: u32 & AugmentedConst; /** * Number of eras that slashes are deferred by, after computation. * diff --git a/typescript-api/src/dancelight/interfaces/augment-api-query.ts b/typescript-api/src/dancelight/interfaces/augment-api-query.ts index 31258afa5..dd1f6c226 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-query.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-query.ts @@ -829,6 +829,13 @@ declare module "@polkadot/api-base/types/storage" { [u32] > & QueryableStorageEntry; + /** All unreported slashes that will be processed in the future. */ + unreportedSlashesQueue: AugmentedQuery< + ApiType, + () => Observable>, + [] + > & + QueryableStorageEntry; /** All slashing events on validators, mapped by era to the highest slash proportion and slash value of the era. */ validatorSlashInEra: AugmentedQuery< ApiType, diff --git a/typescript-api/src/dancelight/interfaces/lookup.ts b/typescript-api/src/dancelight/interfaces/lookup.ts index 7500c7b0a..21fb99572 100644 --- a/typescript-api/src/dancelight/interfaces/lookup.ts +++ b/typescript-api/src/dancelight/interfaces/lookup.ts @@ -483,7 +483,30 @@ export default { }, }, }, - /** Lookup60: pallet_session::pallet::Event */ + /** Lookup60: snowbridge_pallet_outbound_queue::pallet::Event */ + SnowbridgePalletOutboundQueueEvent: { + _enum: { + MessageQueued: { + id: "H256", + }, + MessageAccepted: { + id: "H256", + nonce: "u64", + }, + MessagesCommitted: { + root: "H256", + count: "u64", + }, + OperatingModeChanged: { + mode: "SnowbridgeCoreOperatingModeBasicOperatingMode", + }, + }, + }, + /** Lookup61: snowbridge_core::operating_mode::BasicOperatingMode */ + SnowbridgeCoreOperatingModeBasicOperatingMode: { + _enum: ["Normal", "Halted"], + }, + /** Lookup62: pallet_session::pallet::Event */ PalletSessionEvent: { _enum: { NewSession: { @@ -491,7 +514,7 @@ export default { }, }, }, - /** Lookup61: pallet_grandpa::pallet::Event */ + /** Lookup63: pallet_grandpa::pallet::Event */ PalletGrandpaEvent: { _enum: { NewAuthorities: { @@ -501,9 +524,9 @@ export default { Resumed: "Null", }, }, - /** Lookup64: sp_consensus_grandpa::app::Public */ + /** Lookup66: sp_consensus_grandpa::app::Public */ SpConsensusGrandpaAppPublic: "[u8;32]", - /** Lookup65: pallet_inflation_rewards::pallet::Event */ + /** Lookup67: pallet_inflation_rewards::pallet::Event */ PalletInflationRewardsEvent: { _enum: { RewardedOrchestrator: { @@ -517,7 +540,7 @@ export default { }, }, }, - /** Lookup66: pallet_pooled_staking::pallet::Event */ + /** Lookup68: pallet_pooled_staking::pallet::Event */ PalletPooledStakingEvent: { _enum: { UpdatedCandidatePosition: { @@ -612,11 +635,11 @@ export default { }, }, }, - /** Lookup68: pallet_pooled_staking::pallet::TargetPool */ + /** Lookup70: pallet_pooled_staking::pallet::TargetPool */ PalletPooledStakingTargetPool: { _enum: ["AutoCompounding", "ManualRewards"], }, - /** Lookup69: pallet_treasury::pallet::Event */ + /** Lookup71: pallet_treasury::pallet::Event */ PalletTreasuryEvent: { _enum: { Spending: { @@ -669,7 +692,7 @@ export default { }, }, }, - /** Lookup71: pallet_conviction_voting::pallet::Event */ + /** Lookup73: pallet_conviction_voting::pallet::Event */ PalletConvictionVotingEvent: { _enum: { Delegated: "(AccountId32,AccountId32)", @@ -684,7 +707,7 @@ export default { }, }, }, - /** Lookup72: pallet_conviction_voting::vote::AccountVote */ + /** Lookup74: pallet_conviction_voting::vote::AccountVote */ PalletConvictionVotingVoteAccountVote: { _enum: { Standard: { @@ -702,7 +725,7 @@ export default { }, }, }, - /** Lookup74: pallet_referenda::pallet::Event */ + /** Lookup76: pallet_referenda::pallet::Event */ PalletReferendaEvent: { _enum: { Submitted: { @@ -781,7 +804,7 @@ export default { }, }, /** - * Lookup76: frame_support::traits::preimages::Bounded */ FrameSupportPreimagesBounded: { @@ -802,7 +825,7 @@ export default { }, }, }, - /** Lookup78: frame_system::pallet::Call */ + /** Lookup80: frame_system::pallet::Call */ FrameSystemCall: { _enum: { remark: { @@ -845,7 +868,7 @@ export default { }, }, }, - /** Lookup82: pallet_babe::pallet::Call */ + /** Lookup84: pallet_babe::pallet::Call */ PalletBabeCall: { _enum: { report_equivocation: { @@ -862,7 +885,7 @@ export default { }, }, /** - * Lookup83: sp_consensus_slots::EquivocationProof, + * Lookup85: sp_consensus_slots::EquivocationProof, * sp_consensus_babe::app::Public> */ SpConsensusSlotsEquivocationProof: { @@ -871,7 +894,7 @@ export default { firstHeader: "SpRuntimeHeader", secondHeader: "SpRuntimeHeader", }, - /** Lookup84: sp_runtime::generic::header::Header */ + /** Lookup86: sp_runtime::generic::header::Header */ SpRuntimeHeader: { parentHash: "H256", number: "Compact", @@ -879,15 +902,15 @@ export default { extrinsicsRoot: "H256", digest: "SpRuntimeDigest", }, - /** Lookup86: sp_consensus_babe::app::Public */ + /** Lookup88: sp_consensus_babe::app::Public */ SpConsensusBabeAppPublic: "[u8;32]", - /** Lookup87: sp_session::MembershipProof */ + /** Lookup89: sp_session::MembershipProof */ SpSessionMembershipProof: { session: "u32", trieNodes: "Vec", validatorCount: "u32", }, - /** Lookup88: sp_consensus_babe::digests::NextConfigDescriptor */ + /** Lookup90: sp_consensus_babe::digests::NextConfigDescriptor */ SpConsensusBabeDigestsNextConfigDescriptor: { _enum: { __Unused0: "Null", @@ -897,11 +920,11 @@ export default { }, }, }, - /** Lookup90: sp_consensus_babe::AllowedSlots */ + /** Lookup92: sp_consensus_babe::AllowedSlots */ SpConsensusBabeAllowedSlots: { _enum: ["PrimarySlots", "PrimaryAndSecondaryPlainSlots", "PrimaryAndSecondaryVRFSlots"], }, - /** Lookup91: pallet_timestamp::pallet::Call */ + /** Lookup93: pallet_timestamp::pallet::Call */ PalletTimestampCall: { _enum: { set: { @@ -909,7 +932,7 @@ export default { }, }, }, - /** Lookup92: pallet_balances::pallet::Call */ + /** Lookup94: pallet_balances::pallet::Call */ PalletBalancesCall: { _enum: { transfer_allow_death: { @@ -952,11 +975,11 @@ export default { }, }, }, - /** Lookup98: pallet_balances::types::AdjustmentDirection */ + /** Lookup100: pallet_balances::types::AdjustmentDirection */ PalletBalancesAdjustmentDirection: { _enum: ["Increase", "Decrease"], }, - /** Lookup99: pallet_parameters::pallet::Call */ + /** Lookup101: pallet_parameters::pallet::Call */ PalletParametersCall: { _enum: { set_parameter: { @@ -964,20 +987,20 @@ export default { }, }, }, - /** Lookup100: dancelight_runtime::RuntimeParameters */ + /** Lookup102: dancelight_runtime::RuntimeParameters */ DancelightRuntimeRuntimeParameters: { _enum: { Preimage: "DancelightRuntimeDynamicParamsPreimageParameters", }, }, - /** Lookup101: dancelight_runtime::dynamic_params::preimage::Parameters */ + /** Lookup103: dancelight_runtime::dynamic_params::preimage::Parameters */ DancelightRuntimeDynamicParamsPreimageParameters: { _enum: { BaseDeposit: "(DancelightRuntimeDynamicParamsPreimageBaseDeposit,Option)", ByteDeposit: "(DancelightRuntimeDynamicParamsPreimageByteDeposit,Option)", }, }, - /** Lookup102: pallet_registrar::pallet::Call */ + /** Lookup104: pallet_registrar::pallet::Call */ PalletRegistrarCall: { _enum: { register: { @@ -1028,7 +1051,7 @@ export default { }, }, }, - /** Lookup103: dp_container_chain_genesis_data::ContainerChainGenesisData */ + /** Lookup105: dp_container_chain_genesis_data::ContainerChainGenesisData */ DpContainerChainGenesisDataContainerChainGenesisData: { storage: "Vec", name: "Bytes", @@ -1037,36 +1060,36 @@ export default { extensions: "Bytes", properties: "DpContainerChainGenesisDataProperties", }, - /** Lookup105: dp_container_chain_genesis_data::ContainerChainGenesisDataItem */ + /** Lookup107: dp_container_chain_genesis_data::ContainerChainGenesisDataItem */ DpContainerChainGenesisDataContainerChainGenesisDataItem: { key: "Bytes", value: "Bytes", }, - /** Lookup107: dp_container_chain_genesis_data::Properties */ + /** Lookup109: dp_container_chain_genesis_data::Properties */ DpContainerChainGenesisDataProperties: { tokenMetadata: "DpContainerChainGenesisDataTokenMetadata", isEthereum: "bool", }, - /** Lookup108: dp_container_chain_genesis_data::TokenMetadata */ + /** Lookup110: dp_container_chain_genesis_data::TokenMetadata */ DpContainerChainGenesisDataTokenMetadata: { tokenSymbol: "Bytes", ss58Format: "u32", tokenDecimals: "u32", }, - /** Lookup112: tp_traits::SlotFrequency */ + /** Lookup114: tp_traits::SlotFrequency */ TpTraitsSlotFrequency: { min: "u32", max: "u32", }, - /** Lookup114: tp_traits::ParathreadParams */ + /** Lookup116: tp_traits::ParathreadParams */ TpTraitsParathreadParams: { slotFrequency: "TpTraitsSlotFrequency", }, - /** Lookup115: sp_trie::storage_proof::StorageProof */ + /** Lookup117: sp_trie::storage_proof::StorageProof */ SpTrieStorageProof: { trieNodes: "BTreeSet", }, - /** Lookup117: sp_runtime::MultiSignature */ + /** Lookup119: sp_runtime::MultiSignature */ SpRuntimeMultiSignature: { _enum: { Ed25519: "[u8;64]", @@ -1074,7 +1097,7 @@ export default { Ecdsa: "[u8;65]", }, }, - /** Lookup120: pallet_configuration::pallet::Call */ + /** Lookup122: pallet_configuration::pallet::Call */ PalletConfigurationCall: { _enum: { set_max_collators: { @@ -1178,7 +1201,7 @@ export default { }, }, }, - /** Lookup123: pallet_invulnerables::pallet::Call */ + /** Lookup125: pallet_invulnerables::pallet::Call */ PalletInvulnerablesCall: { _enum: { __Unused0: "Null", @@ -1190,11 +1213,11 @@ export default { }, }, }, - /** Lookup124: pallet_collator_assignment::pallet::Call */ + /** Lookup126: pallet_collator_assignment::pallet::Call */ PalletCollatorAssignmentCall: "Null", - /** Lookup125: pallet_authority_assignment::pallet::Call */ + /** Lookup127: pallet_authority_assignment::pallet::Call */ PalletAuthorityAssignmentCall: "Null", - /** Lookup126: pallet_author_noting::pallet::Call */ + /** Lookup128: pallet_author_noting::pallet::Call */ PalletAuthorNotingCall: { _enum: { set_latest_author_data: { @@ -1211,7 +1234,7 @@ export default { }, }, }, - /** Lookup127: pallet_services_payment::pallet::Call */ + /** Lookup129: pallet_services_payment::pallet::Call */ PalletServicesPaymentCall: { _enum: { purchase_credits: { @@ -1244,7 +1267,7 @@ export default { }, }, }, - /** Lookup128: pallet_data_preservers::pallet::Call */ + /** Lookup130: pallet_data_preservers::pallet::Call */ PalletDataPreserversCall: { _enum: { __Unused0: "Null", @@ -1285,14 +1308,14 @@ export default { }, }, }, - /** Lookup129: pallet_data_preservers::types::Profile */ + /** Lookup131: pallet_data_preservers::types::Profile */ PalletDataPreserversProfile: { url: "Bytes", paraIds: "PalletDataPreserversParaIdsFilter", mode: "PalletDataPreserversProfileMode", assignmentRequest: "DancelightRuntimePreserversAssignmentPaymentRequest", }, - /** Lookup131: pallet_data_preservers::types::ParaIdsFilter */ + /** Lookup133: pallet_data_preservers::types::ParaIdsFilter */ PalletDataPreserversParaIdsFilter: { _enum: { AnyParaId: "Null", @@ -1300,7 +1323,7 @@ export default { Blacklist: "BTreeSet", }, }, - /** Lookup135: pallet_data_preservers::types::ProfileMode */ + /** Lookup137: pallet_data_preservers::types::ProfileMode */ PalletDataPreserversProfileMode: { _enum: { Bootnode: "Null", @@ -1309,19 +1332,19 @@ export default { }, }, }, - /** Lookup136: dancelight_runtime::PreserversAssignmentPaymentRequest */ + /** Lookup138: dancelight_runtime::PreserversAssignmentPaymentRequest */ DancelightRuntimePreserversAssignmentPaymentRequest: { _enum: ["Free"], }, - /** Lookup137: dancelight_runtime::PreserversAssignmentPaymentExtra */ + /** Lookup139: dancelight_runtime::PreserversAssignmentPaymentExtra */ DancelightRuntimePreserversAssignmentPaymentExtra: { _enum: ["Free"], }, - /** Lookup138: dancelight_runtime::PreserversAssignmentPaymentWitness */ + /** Lookup140: dancelight_runtime::PreserversAssignmentPaymentWitness */ DancelightRuntimePreserversAssignmentPaymentWitness: { _enum: ["Free"], }, - /** Lookup139: pallet_external_validators::pallet::Call */ + /** Lookup141: pallet_external_validators::pallet::Call */ PalletExternalValidatorsCall: { _enum: { skip_external_validators: { @@ -1338,7 +1361,7 @@ export default { }, }, }, - /** Lookup140: pallet_external_validator_slashes::pallet::Call */ + /** Lookup142: pallet_external_validator_slashes::pallet::Call */ PalletExternalValidatorSlashesCall: { _enum: { cancel_deferred_slash: { @@ -1357,7 +1380,15 @@ export default { }, }, }, - /** Lookup142: pallet_session::pallet::Call */ + /** Lookup144: snowbridge_pallet_outbound_queue::pallet::Call */ + SnowbridgePalletOutboundQueueCall: { + _enum: { + set_operating_mode: { + mode: "SnowbridgeCoreOperatingModeBasicOperatingMode", + }, + }, + }, + /** Lookup145: pallet_session::pallet::Call */ PalletSessionCall: { _enum: { set_keys: { @@ -1370,7 +1401,7 @@ export default { purge_keys: "Null", }, }, - /** Lookup143: dancelight_runtime::SessionKeys */ + /** Lookup146: dancelight_runtime::SessionKeys */ DancelightRuntimeSessionKeys: { grandpa: "SpConsensusGrandpaAppPublic", babe: "SpConsensusBabeAppPublic", @@ -1380,17 +1411,17 @@ export default { beefy: "SpConsensusBeefyEcdsaCryptoPublic", nimbus: "NimbusPrimitivesNimbusCryptoPublic", }, - /** Lookup144: polkadot_primitives::v8::validator_app::Public */ + /** Lookup147: polkadot_primitives::v8::validator_app::Public */ PolkadotPrimitivesV8ValidatorAppPublic: "[u8;32]", - /** Lookup145: polkadot_primitives::v8::assignment_app::Public */ + /** Lookup148: polkadot_primitives::v8::assignment_app::Public */ PolkadotPrimitivesV8AssignmentAppPublic: "[u8;32]", - /** Lookup146: sp_authority_discovery::app::Public */ + /** Lookup149: sp_authority_discovery::app::Public */ SpAuthorityDiscoveryAppPublic: "[u8;32]", - /** Lookup147: sp_consensus_beefy::ecdsa_crypto::Public */ + /** Lookup150: sp_consensus_beefy::ecdsa_crypto::Public */ SpConsensusBeefyEcdsaCryptoPublic: "[u8;33]", - /** Lookup149: nimbus_primitives::nimbus_crypto::Public */ + /** Lookup152: nimbus_primitives::nimbus_crypto::Public */ NimbusPrimitivesNimbusCryptoPublic: "[u8;32]", - /** Lookup150: pallet_grandpa::pallet::Call */ + /** Lookup153: pallet_grandpa::pallet::Call */ PalletGrandpaCall: { _enum: { report_equivocation: { @@ -1407,12 +1438,12 @@ export default { }, }, }, - /** Lookup151: sp_consensus_grandpa::EquivocationProof */ + /** Lookup154: sp_consensus_grandpa::EquivocationProof */ SpConsensusGrandpaEquivocationProof: { setId: "u64", equivocation: "SpConsensusGrandpaEquivocation", }, - /** Lookup152: sp_consensus_grandpa::Equivocation */ + /** Lookup155: sp_consensus_grandpa::Equivocation */ SpConsensusGrandpaEquivocation: { _enum: { Prevote: "FinalityGrandpaEquivocationPrevote", @@ -1420,7 +1451,7 @@ export default { }, }, /** - * Lookup153: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> */ FinalityGrandpaEquivocationPrevote: { @@ -1429,15 +1460,15 @@ export default { first: "(FinalityGrandpaPrevote,SpConsensusGrandpaAppSignature)", second: "(FinalityGrandpaPrevote,SpConsensusGrandpaAppSignature)", }, - /** Lookup154: finality_grandpa::Prevote */ + /** Lookup157: finality_grandpa::Prevote */ FinalityGrandpaPrevote: { targetHash: "H256", targetNumber: "u32", }, - /** Lookup155: sp_consensus_grandpa::app::Signature */ + /** Lookup158: sp_consensus_grandpa::app::Signature */ SpConsensusGrandpaAppSignature: "[u8;64]", /** - * Lookup157: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> */ FinalityGrandpaEquivocationPrecommit: { @@ -1446,12 +1477,12 @@ export default { first: "(FinalityGrandpaPrecommit,SpConsensusGrandpaAppSignature)", second: "(FinalityGrandpaPrecommit,SpConsensusGrandpaAppSignature)", }, - /** Lookup158: finality_grandpa::Precommit */ + /** Lookup161: finality_grandpa::Precommit */ FinalityGrandpaPrecommit: { targetHash: "H256", targetNumber: "u32", }, - /** Lookup160: pallet_pooled_staking::pallet::Call */ + /** Lookup163: pallet_pooled_staking::pallet::Call */ PalletPooledStakingCall: { _enum: { rebalance_hold: { @@ -1485,16 +1516,16 @@ export default { }, }, }, - /** Lookup161: pallet_pooled_staking::pallet::AllTargetPool */ + /** Lookup164: pallet_pooled_staking::pallet::AllTargetPool */ PalletPooledStakingAllTargetPool: { _enum: ["Joining", "AutoCompounding", "ManualRewards", "Leaving"], }, - /** Lookup163: pallet_pooled_staking::pallet::PendingOperationQuery */ + /** Lookup166: pallet_pooled_staking::pallet::PendingOperationQuery */ PalletPooledStakingPendingOperationQuery: { delegator: "AccountId32", operation: "PalletPooledStakingPendingOperationKey", }, - /** Lookup164: pallet_pooled_staking::pallet::PendingOperationKey */ + /** Lookup167: pallet_pooled_staking::pallet::PendingOperationKey */ PalletPooledStakingPendingOperationKey: { _enum: { JoiningAutoCompounding: { @@ -1511,14 +1542,14 @@ export default { }, }, }, - /** Lookup165: pallet_pooled_staking::pallet::SharesOrStake */ + /** Lookup168: pallet_pooled_staking::pallet::SharesOrStake */ PalletPooledStakingSharesOrStake: { _enum: { Shares: "u128", Stake: "u128", }, }, - /** Lookup168: pallet_treasury::pallet::Call */ + /** Lookup171: pallet_treasury::pallet::Call */ PalletTreasuryCall: { _enum: { __Unused0: "Null", @@ -1548,7 +1579,7 @@ export default { }, }, }, - /** Lookup169: pallet_conviction_voting::pallet::Call */ + /** Lookup172: pallet_conviction_voting::pallet::Call */ PalletConvictionVotingCall: { _enum: { vote: { @@ -1579,11 +1610,11 @@ export default { }, }, }, - /** Lookup170: pallet_conviction_voting::conviction::Conviction */ + /** Lookup173: pallet_conviction_voting::conviction::Conviction */ PalletConvictionVotingConviction: { _enum: ["None", "Locked1x", "Locked2x", "Locked3x", "Locked4x", "Locked5x", "Locked6x"], }, - /** Lookup172: pallet_referenda::pallet::Call */ + /** Lookup175: pallet_referenda::pallet::Call */ PalletReferendaCall: { _enum: { submit: { @@ -1618,7 +1649,7 @@ export default { }, }, }, - /** Lookup173: dancelight_runtime::OriginCaller */ + /** Lookup176: dancelight_runtime::OriginCaller */ DancelightRuntimeOriginCaller: { _enum: { system: "FrameSupportDispatchRawOrigin", @@ -1714,7 +1745,7 @@ export default { XcmPallet: "PalletXcmOrigin", }, }, - /** Lookup174: frame_support::dispatch::RawOrigin */ + /** Lookup177: frame_support::dispatch::RawOrigin */ FrameSupportDispatchRawOrigin: { _enum: { Root: "Null", @@ -1722,7 +1753,7 @@ export default { None: "Null", }, }, - /** Lookup175: dancelight_runtime::governance::origins::pallet_custom_origins::Origin */ + /** Lookup178: dancelight_runtime::governance::origins::pallet_custom_origins::Origin */ DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin: { _enum: [ "StakingAdmin", @@ -1754,39 +1785,39 @@ export default { "Fellowship9Dan", ], }, - /** Lookup176: polkadot_runtime_parachains::origin::pallet::Origin */ + /** Lookup179: polkadot_runtime_parachains::origin::pallet::Origin */ PolkadotRuntimeParachainsOriginPalletOrigin: { _enum: { Parachain: "u32", }, }, - /** Lookup177: pallet_xcm::pallet::Origin */ + /** Lookup180: pallet_xcm::pallet::Origin */ PalletXcmOrigin: { _enum: { Xcm: "StagingXcmV4Location", Response: "StagingXcmV4Location", }, }, - /** Lookup178: staging_xcm::v4::location::Location */ + /** Lookup181: staging_xcm::v4::location::Location */ StagingXcmV4Location: { parents: "u8", interior: "StagingXcmV4Junctions", }, - /** Lookup179: staging_xcm::v4::junctions::Junctions */ + /** Lookup182: staging_xcm::v4::junctions::Junctions */ StagingXcmV4Junctions: { _enum: { Here: "Null", - X1: "[Lookup181;1]", - X2: "[Lookup181;2]", - X3: "[Lookup181;3]", - X4: "[Lookup181;4]", - X5: "[Lookup181;5]", - X6: "[Lookup181;6]", - X7: "[Lookup181;7]", - X8: "[Lookup181;8]", + X1: "[Lookup184;1]", + X2: "[Lookup184;2]", + X3: "[Lookup184;3]", + X4: "[Lookup184;4]", + X5: "[Lookup184;5]", + X6: "[Lookup184;6]", + X7: "[Lookup184;7]", + X8: "[Lookup184;8]", }, }, - /** Lookup181: staging_xcm::v4::junction::Junction */ + /** Lookup184: staging_xcm::v4::junction::Junction */ StagingXcmV4Junction: { _enum: { Parachain: "Compact", @@ -1816,7 +1847,7 @@ export default { GlobalConsensus: "StagingXcmV4JunctionNetworkId", }, }, - /** Lookup183: staging_xcm::v4::junction::NetworkId */ + /** Lookup186: staging_xcm::v4::junction::NetworkId */ StagingXcmV4JunctionNetworkId: { _enum: { ByGenesis: "[u8;32]", @@ -1837,7 +1868,7 @@ export default { PolkadotBulletin: "Null", }, }, - /** Lookup184: xcm::v3::junction::BodyId */ + /** Lookup187: xcm::v3::junction::BodyId */ XcmV3JunctionBodyId: { _enum: { Unit: "Null", @@ -1852,7 +1883,7 @@ export default { Treasury: "Null", }, }, - /** Lookup185: xcm::v3::junction::BodyPart */ + /** Lookup188: xcm::v3::junction::BodyPart */ XcmV3JunctionBodyPart: { _enum: { Voice: "Null", @@ -1873,16 +1904,16 @@ export default { }, }, }, - /** Lookup193: sp_core::Void */ + /** Lookup196: sp_core::Void */ SpCoreVoid: "Null", - /** Lookup194: frame_support::traits::schedule::DispatchTime */ + /** Lookup197: frame_support::traits::schedule::DispatchTime */ FrameSupportScheduleDispatchTime: { _enum: { At: "u32", After: "u32", }, }, - /** Lookup196: pallet_ranked_collective::pallet::Call */ + /** Lookup199: pallet_ranked_collective::pallet::Call */ PalletRankedCollectiveCall: { _enum: { add_member: { @@ -1912,7 +1943,7 @@ export default { }, }, }, - /** Lookup198: pallet_whitelist::pallet::Call */ + /** Lookup201: pallet_whitelist::pallet::Call */ PalletWhitelistCall: { _enum: { whitelist_call: { @@ -1931,7 +1962,7 @@ export default { }, }, }, - /** Lookup199: polkadot_runtime_parachains::configuration::pallet::Call */ + /** Lookup202: polkadot_runtime_parachains::configuration::pallet::Call */ PolkadotRuntimeParachainsConfigurationPalletCall: { _enum: { set_validation_upgrade_cooldown: { @@ -2230,14 +2261,14 @@ export default { }, }, }, - /** Lookup200: polkadot_primitives::v8::async_backing::AsyncBackingParams */ + /** Lookup203: polkadot_primitives::v8::async_backing::AsyncBackingParams */ PolkadotPrimitivesV8AsyncBackingAsyncBackingParams: { maxCandidateDepth: "u32", allowedAncestryLen: "u32", }, - /** Lookup201: polkadot_primitives::v8::executor_params::ExecutorParams */ + /** Lookup204: polkadot_primitives::v8::executor_params::ExecutorParams */ PolkadotPrimitivesV8ExecutorParams: "Vec", - /** Lookup203: polkadot_primitives::v8::executor_params::ExecutorParam */ + /** Lookup206: polkadot_primitives::v8::executor_params::ExecutorParam */ PolkadotPrimitivesV8ExecutorParamsExecutorParam: { _enum: { __Unused0: "Null", @@ -2250,19 +2281,19 @@ export default { WasmExtBulkMemory: "Null", }, }, - /** Lookup204: polkadot_primitives::v8::PvfPrepKind */ + /** Lookup207: polkadot_primitives::v8::PvfPrepKind */ PolkadotPrimitivesV8PvfPrepKind: { _enum: ["Precheck", "Prepare"], }, - /** Lookup205: polkadot_primitives::v8::PvfExecKind */ + /** Lookup208: polkadot_primitives::v8::PvfExecKind */ PolkadotPrimitivesV8PvfExecKind: { _enum: ["Backing", "Approval"], }, - /** Lookup206: polkadot_primitives::v8::ApprovalVotingParams */ + /** Lookup209: polkadot_primitives::v8::ApprovalVotingParams */ PolkadotPrimitivesV8ApprovalVotingParams: { maxApprovalCoalesceCount: "u32", }, - /** Lookup207: polkadot_primitives::v8::SchedulerParams */ + /** Lookup210: polkadot_primitives::v8::SchedulerParams */ PolkadotPrimitivesV8SchedulerParams: { groupRotationFrequency: "u32", parasAvailabilityPeriod: "u32", @@ -2276,11 +2307,11 @@ export default { onDemandBaseFee: "u128", ttl: "u32", }, - /** Lookup208: polkadot_runtime_parachains::shared::pallet::Call */ + /** Lookup211: polkadot_runtime_parachains::shared::pallet::Call */ PolkadotRuntimeParachainsSharedPalletCall: "Null", - /** Lookup209: polkadot_runtime_parachains::inclusion::pallet::Call */ + /** Lookup212: polkadot_runtime_parachains::inclusion::pallet::Call */ PolkadotRuntimeParachainsInclusionPalletCall: "Null", - /** Lookup210: polkadot_runtime_parachains::paras_inherent::pallet::Call */ + /** Lookup213: polkadot_runtime_parachains::paras_inherent::pallet::Call */ PolkadotRuntimeParachainsParasInherentPalletCall: { _enum: { enter: { @@ -2288,7 +2319,7 @@ export default { }, }, }, - /** Lookup211: polkadot_primitives::v8::InherentData> */ + /** Lookup214: polkadot_primitives::v8::InherentData> */ PolkadotPrimitivesV8InherentData: { bitfields: "Vec", backedCandidates: "Vec", @@ -2296,7 +2327,7 @@ export default { parentHeader: "SpRuntimeHeader", }, /** - * Lookup213: polkadot_primitives::v8::signed::UncheckedSigned */ PolkadotPrimitivesV8SignedUncheckedSigned: { @@ -2304,22 +2335,22 @@ export default { validatorIndex: "u32", signature: "PolkadotPrimitivesV8ValidatorAppSignature", }, - /** Lookup216: bitvec::order::Lsb0 */ + /** Lookup219: bitvec::order::Lsb0 */ BitvecOrderLsb0: "Null", - /** Lookup218: polkadot_primitives::v8::validator_app::Signature */ + /** Lookup221: polkadot_primitives::v8::validator_app::Signature */ PolkadotPrimitivesV8ValidatorAppSignature: "[u8;64]", - /** Lookup220: polkadot_primitives::v8::BackedCandidate */ + /** Lookup223: polkadot_primitives::v8::BackedCandidate */ PolkadotPrimitivesV8BackedCandidate: { candidate: "PolkadotPrimitivesV8CommittedCandidateReceipt", validityVotes: "Vec", validatorIndices: "BitVec", }, - /** Lookup221: polkadot_primitives::v8::CommittedCandidateReceipt */ + /** Lookup224: polkadot_primitives::v8::CommittedCandidateReceipt */ PolkadotPrimitivesV8CommittedCandidateReceipt: { descriptor: "PolkadotPrimitivesV8CandidateDescriptor", commitments: "PolkadotPrimitivesV8CandidateCommitments", }, - /** Lookup222: polkadot_primitives::v8::CandidateDescriptor */ + /** Lookup225: polkadot_primitives::v8::CandidateDescriptor */ PolkadotPrimitivesV8CandidateDescriptor: { paraId: "u32", relayParent: "H256", @@ -2331,11 +2362,11 @@ export default { paraHead: "H256", validationCodeHash: "H256", }, - /** Lookup223: polkadot_primitives::v8::collator_app::Public */ + /** Lookup226: polkadot_primitives::v8::collator_app::Public */ PolkadotPrimitivesV8CollatorAppPublic: "[u8;32]", - /** Lookup224: polkadot_primitives::v8::collator_app::Signature */ + /** Lookup227: polkadot_primitives::v8::collator_app::Signature */ PolkadotPrimitivesV8CollatorAppSignature: "[u8;64]", - /** Lookup226: polkadot_primitives::v8::CandidateCommitments */ + /** Lookup229: polkadot_primitives::v8::CandidateCommitments */ PolkadotPrimitivesV8CandidateCommitments: { upwardMessages: "Vec", horizontalMessages: "Vec", @@ -2344,12 +2375,12 @@ export default { processedDownwardMessages: "u32", hrmpWatermark: "u32", }, - /** Lookup229: polkadot_core_primitives::OutboundHrmpMessage */ + /** Lookup232: polkadot_core_primitives::OutboundHrmpMessage */ PolkadotCorePrimitivesOutboundHrmpMessage: { recipient: "u32", data: "Bytes", }, - /** Lookup234: polkadot_primitives::v8::ValidityAttestation */ + /** Lookup237: polkadot_primitives::v8::ValidityAttestation */ PolkadotPrimitivesV8ValidityAttestation: { _enum: { __Unused0: "Null", @@ -2357,20 +2388,20 @@ export default { Explicit: "PolkadotPrimitivesV8ValidatorAppSignature", }, }, - /** Lookup236: polkadot_primitives::v8::DisputeStatementSet */ + /** Lookup239: polkadot_primitives::v8::DisputeStatementSet */ PolkadotPrimitivesV8DisputeStatementSet: { candidateHash: "H256", session: "u32", statements: "Vec<(PolkadotPrimitivesV8DisputeStatement,u32,PolkadotPrimitivesV8ValidatorAppSignature)>", }, - /** Lookup240: polkadot_primitives::v8::DisputeStatement */ + /** Lookup243: polkadot_primitives::v8::DisputeStatement */ PolkadotPrimitivesV8DisputeStatement: { _enum: { Valid: "PolkadotPrimitivesV8ValidDisputeStatementKind", Invalid: "PolkadotPrimitivesV8InvalidDisputeStatementKind", }, }, - /** Lookup241: polkadot_primitives::v8::ValidDisputeStatementKind */ + /** Lookup244: polkadot_primitives::v8::ValidDisputeStatementKind */ PolkadotPrimitivesV8ValidDisputeStatementKind: { _enum: { Explicit: "Null", @@ -2380,11 +2411,11 @@ export default { ApprovalCheckingMultipleCandidates: "Vec", }, }, - /** Lookup243: polkadot_primitives::v8::InvalidDisputeStatementKind */ + /** Lookup246: polkadot_primitives::v8::InvalidDisputeStatementKind */ PolkadotPrimitivesV8InvalidDisputeStatementKind: { _enum: ["Explicit"], }, - /** Lookup244: polkadot_runtime_parachains::paras::pallet::Call */ + /** Lookup247: polkadot_runtime_parachains::paras::pallet::Call */ PolkadotRuntimeParachainsParasPalletCall: { _enum: { force_set_current_code: { @@ -2423,14 +2454,14 @@ export default { }, }, }, - /** Lookup245: polkadot_primitives::v8::PvfCheckStatement */ + /** Lookup248: polkadot_primitives::v8::PvfCheckStatement */ PolkadotPrimitivesV8PvfCheckStatement: { accept: "bool", subject: "H256", sessionIndex: "u32", validatorIndex: "u32", }, - /** Lookup246: polkadot_runtime_parachains::initializer::pallet::Call */ + /** Lookup249: polkadot_runtime_parachains::initializer::pallet::Call */ PolkadotRuntimeParachainsInitializerPalletCall: { _enum: { force_approve: { @@ -2438,7 +2469,7 @@ export default { }, }, }, - /** Lookup247: polkadot_runtime_parachains::hrmp::pallet::Call */ + /** Lookup250: polkadot_runtime_parachains::hrmp::pallet::Call */ PolkadotRuntimeParachainsHrmpPalletCall: { _enum: { hrmp_init_open_channel: { @@ -2486,16 +2517,16 @@ export default { }, }, }, - /** Lookup248: polkadot_parachain_primitives::primitives::HrmpChannelId */ + /** Lookup251: polkadot_parachain_primitives::primitives::HrmpChannelId */ PolkadotParachainPrimitivesPrimitivesHrmpChannelId: { sender: "u32", recipient: "u32", }, - /** Lookup249: polkadot_runtime_parachains::disputes::pallet::Call */ + /** Lookup252: polkadot_runtime_parachains::disputes::pallet::Call */ PolkadotRuntimeParachainsDisputesPalletCall: { _enum: ["force_unfreeze"], }, - /** Lookup250: polkadot_runtime_parachains::disputes::slashing::pallet::Call */ + /** Lookup253: polkadot_runtime_parachains::disputes::slashing::pallet::Call */ PolkadotRuntimeParachainsDisputesSlashingPalletCall: { _enum: { report_dispute_lost_unsigned: { @@ -2504,23 +2535,23 @@ export default { }, }, }, - /** Lookup251: polkadot_primitives::v8::slashing::DisputeProof */ + /** Lookup254: polkadot_primitives::v8::slashing::DisputeProof */ PolkadotPrimitivesV8SlashingDisputeProof: { timeSlot: "PolkadotPrimitivesV8SlashingDisputesTimeSlot", kind: "PolkadotPrimitivesV8SlashingSlashingOffenceKind", validatorIndex: "u32", validatorId: "PolkadotPrimitivesV8ValidatorAppPublic", }, - /** Lookup252: polkadot_primitives::v8::slashing::DisputesTimeSlot */ + /** Lookup255: polkadot_primitives::v8::slashing::DisputesTimeSlot */ PolkadotPrimitivesV8SlashingDisputesTimeSlot: { sessionIndex: "u32", candidateHash: "H256", }, - /** Lookup253: polkadot_primitives::v8::slashing::SlashingOffenceKind */ + /** Lookup256: polkadot_primitives::v8::slashing::SlashingOffenceKind */ PolkadotPrimitivesV8SlashingSlashingOffenceKind: { _enum: ["ForInvalid", "AgainstValid"], }, - /** Lookup254: pallet_message_queue::pallet::Call */ + /** Lookup257: pallet_message_queue::pallet::Call */ PalletMessageQueueCall: { _enum: { reap_page: { @@ -2535,7 +2566,7 @@ export default { }, }, }, - /** Lookup255: dancelight_runtime::AggregateMessageOrigin */ + /** Lookup258: dancelight_runtime::AggregateMessageOrigin */ DancelightRuntimeAggregateMessageOrigin: { _enum: { Ump: "PolkadotRuntimeParachainsInclusionUmpQueueId", @@ -2543,15 +2574,15 @@ export default { SnowbridgeTanssi: "SnowbridgeCoreChannelId", }, }, - /** Lookup256: polkadot_runtime_parachains::inclusion::UmpQueueId */ + /** Lookup259: polkadot_runtime_parachains::inclusion::UmpQueueId */ PolkadotRuntimeParachainsInclusionUmpQueueId: { _enum: { Para: "u32", }, }, - /** Lookup257: snowbridge_core::ChannelId */ + /** Lookup260: snowbridge_core::ChannelId */ SnowbridgeCoreChannelId: "[u8;32]", - /** Lookup258: polkadot_runtime_parachains::on_demand::pallet::Call */ + /** Lookup261: polkadot_runtime_parachains::on_demand::pallet::Call */ PolkadotRuntimeParachainsOnDemandPalletCall: { _enum: { place_order_allow_death: { @@ -2564,7 +2595,7 @@ export default { }, }, }, - /** Lookup259: polkadot_runtime_common::paras_registrar::pallet::Call */ + /** Lookup262: polkadot_runtime_common::paras_registrar::pallet::Call */ PolkadotRuntimeCommonParasRegistrarPalletCall: { _enum: { register: { @@ -2603,7 +2634,7 @@ export default { }, }, }, - /** Lookup260: pallet_utility::pallet::Call */ + /** Lookup263: pallet_utility::pallet::Call */ PalletUtilityCall: { _enum: { batch: { @@ -2629,7 +2660,7 @@ export default { }, }, }, - /** Lookup262: pallet_identity::pallet::Call */ + /** Lookup265: pallet_identity::pallet::Call */ PalletIdentityCall: { _enum: { add_registrar: { @@ -2712,7 +2743,7 @@ export default { }, }, }, - /** Lookup263: pallet_identity::legacy::IdentityInfo */ + /** Lookup266: pallet_identity::legacy::IdentityInfo */ PalletIdentityLegacyIdentityInfo: { additional: "Vec<(Data,Data)>", display: "Data", @@ -2724,7 +2755,7 @@ export default { image: "Data", twitter: "Data", }, - /** Lookup300: pallet_identity::types::Judgement */ + /** Lookup303: pallet_identity::types::Judgement */ PalletIdentityJudgement: { _enum: { Unknown: "Null", @@ -2736,7 +2767,7 @@ export default { Erroneous: "Null", }, }, - /** Lookup303: pallet_scheduler::pallet::Call */ + /** Lookup306: pallet_scheduler::pallet::Call */ PalletSchedulerCall: { _enum: { schedule: { @@ -2790,7 +2821,7 @@ export default { }, }, }, - /** Lookup306: pallet_proxy::pallet::Call */ + /** Lookup309: pallet_proxy::pallet::Call */ PalletProxyCall: { _enum: { proxy: { @@ -2841,7 +2872,7 @@ export default { }, }, }, - /** Lookup308: dancelight_runtime::ProxyType */ + /** Lookup311: dancelight_runtime::ProxyType */ DancelightRuntimeProxyType: { _enum: [ "Any", @@ -2857,7 +2888,7 @@ export default { "Staking", ], }, - /** Lookup309: pallet_multisig::pallet::Call */ + /** Lookup312: pallet_multisig::pallet::Call */ PalletMultisigCall: { _enum: { as_multi_threshold_1: { @@ -2886,12 +2917,12 @@ export default { }, }, }, - /** Lookup311: pallet_multisig::Timepoint */ + /** Lookup314: pallet_multisig::Timepoint */ PalletMultisigTimepoint: { height: "u32", index: "u32", }, - /** Lookup312: pallet_preimage::pallet::Call */ + /** Lookup315: pallet_preimage::pallet::Call */ PalletPreimageCall: { _enum: { note_preimage: { @@ -2920,7 +2951,7 @@ export default { }, }, }, - /** Lookup314: pallet_asset_rate::pallet::Call */ + /** Lookup317: pallet_asset_rate::pallet::Call */ PalletAssetRateCall: { _enum: { create: { @@ -2936,7 +2967,7 @@ export default { }, }, }, - /** Lookup316: pallet_xcm::pallet::Call */ + /** Lookup319: pallet_xcm::pallet::Call */ PalletXcmCall: { _enum: { send: { @@ -3011,7 +3042,7 @@ export default { }, }, }, - /** Lookup317: xcm::VersionedLocation */ + /** Lookup320: xcm::VersionedLocation */ XcmVersionedLocation: { _enum: { __Unused0: "Null", @@ -3021,12 +3052,12 @@ export default { V4: "StagingXcmV4Location", }, }, - /** Lookup318: xcm::v2::multilocation::MultiLocation */ + /** Lookup321: xcm::v2::multilocation::MultiLocation */ XcmV2MultiLocation: { parents: "u8", interior: "XcmV2MultilocationJunctions", }, - /** Lookup319: xcm::v2::multilocation::Junctions */ + /** Lookup322: xcm::v2::multilocation::Junctions */ XcmV2MultilocationJunctions: { _enum: { Here: "Null", @@ -3040,7 +3071,7 @@ export default { X8: "(XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction,XcmV2Junction)", }, }, - /** Lookup320: xcm::v2::junction::Junction */ + /** Lookup323: xcm::v2::junction::Junction */ XcmV2Junction: { _enum: { Parachain: "Compact", @@ -3066,7 +3097,7 @@ export default { }, }, }, - /** Lookup321: xcm::v2::NetworkId */ + /** Lookup324: xcm::v2::NetworkId */ XcmV2NetworkId: { _enum: { Any: "Null", @@ -3075,7 +3106,7 @@ export default { Kusama: "Null", }, }, - /** Lookup323: xcm::v2::BodyId */ + /** Lookup326: xcm::v2::BodyId */ XcmV2BodyId: { _enum: { Unit: "Null", @@ -3090,7 +3121,7 @@ export default { Treasury: "Null", }, }, - /** Lookup324: xcm::v2::BodyPart */ + /** Lookup327: xcm::v2::BodyPart */ XcmV2BodyPart: { _enum: { Voice: "Null", @@ -3111,12 +3142,12 @@ export default { }, }, }, - /** Lookup325: staging_xcm::v3::multilocation::MultiLocation */ + /** Lookup328: staging_xcm::v3::multilocation::MultiLocation */ StagingXcmV3MultiLocation: { parents: "u8", interior: "XcmV3Junctions", }, - /** Lookup326: xcm::v3::junctions::Junctions */ + /** Lookup329: xcm::v3::junctions::Junctions */ XcmV3Junctions: { _enum: { Here: "Null", @@ -3130,7 +3161,7 @@ export default { X8: "(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)", }, }, - /** Lookup327: xcm::v3::junction::Junction */ + /** Lookup330: xcm::v3::junction::Junction */ XcmV3Junction: { _enum: { Parachain: "Compact", @@ -3160,7 +3191,7 @@ export default { GlobalConsensus: "XcmV3JunctionNetworkId", }, }, - /** Lookup329: xcm::v3::junction::NetworkId */ + /** Lookup332: xcm::v3::junction::NetworkId */ XcmV3JunctionNetworkId: { _enum: { ByGenesis: "[u8;32]", @@ -3181,7 +3212,7 @@ export default { PolkadotBulletin: "Null", }, }, - /** Lookup330: xcm::VersionedXcm */ + /** Lookup333: xcm::VersionedXcm */ XcmVersionedXcm: { _enum: { __Unused0: "Null", @@ -3191,9 +3222,9 @@ export default { V4: "StagingXcmV4Xcm", }, }, - /** Lookup331: xcm::v2::Xcm */ + /** Lookup334: xcm::v2::Xcm */ XcmV2Xcm: "Vec", - /** Lookup333: xcm::v2::Instruction */ + /** Lookup336: xcm::v2::Instruction */ XcmV2Instruction: { _enum: { WithdrawAsset: "XcmV2MultiassetMultiAssets", @@ -3289,28 +3320,28 @@ export default { UnsubscribeVersion: "Null", }, }, - /** Lookup334: xcm::v2::multiasset::MultiAssets */ + /** Lookup337: xcm::v2::multiasset::MultiAssets */ XcmV2MultiassetMultiAssets: "Vec", - /** Lookup336: xcm::v2::multiasset::MultiAsset */ + /** Lookup339: xcm::v2::multiasset::MultiAsset */ XcmV2MultiAsset: { id: "XcmV2MultiassetAssetId", fun: "XcmV2MultiassetFungibility", }, - /** Lookup337: xcm::v2::multiasset::AssetId */ + /** Lookup340: xcm::v2::multiasset::AssetId */ XcmV2MultiassetAssetId: { _enum: { Concrete: "XcmV2MultiLocation", Abstract: "Bytes", }, }, - /** Lookup338: xcm::v2::multiasset::Fungibility */ + /** Lookup341: xcm::v2::multiasset::Fungibility */ XcmV2MultiassetFungibility: { _enum: { Fungible: "Compact", NonFungible: "XcmV2MultiassetAssetInstance", }, }, - /** Lookup339: xcm::v2::multiasset::AssetInstance */ + /** Lookup342: xcm::v2::multiasset::AssetInstance */ XcmV2MultiassetAssetInstance: { _enum: { Undefined: "Null", @@ -3322,7 +3353,7 @@ export default { Blob: "Bytes", }, }, - /** Lookup340: xcm::v2::Response */ + /** Lookup343: xcm::v2::Response */ XcmV2Response: { _enum: { Null: "Null", @@ -3331,7 +3362,7 @@ export default { Version: "u32", }, }, - /** Lookup343: xcm::v2::traits::Error */ + /** Lookup346: xcm::v2::traits::Error */ XcmV2TraitsError: { _enum: { Overflow: "Null", @@ -3362,22 +3393,22 @@ export default { WeightNotComputable: "Null", }, }, - /** Lookup344: xcm::v2::OriginKind */ + /** Lookup347: xcm::v2::OriginKind */ XcmV2OriginKind: { _enum: ["Native", "SovereignAccount", "Superuser", "Xcm"], }, - /** Lookup345: xcm::double_encoded::DoubleEncoded */ + /** Lookup348: xcm::double_encoded::DoubleEncoded */ XcmDoubleEncoded: { encoded: "Bytes", }, - /** Lookup346: xcm::v2::multiasset::MultiAssetFilter */ + /** Lookup349: xcm::v2::multiasset::MultiAssetFilter */ XcmV2MultiassetMultiAssetFilter: { _enum: { Definite: "XcmV2MultiassetMultiAssets", Wild: "XcmV2MultiassetWildMultiAsset", }, }, - /** Lookup347: xcm::v2::multiasset::WildMultiAsset */ + /** Lookup350: xcm::v2::multiasset::WildMultiAsset */ XcmV2MultiassetWildMultiAsset: { _enum: { All: "Null", @@ -3387,20 +3418,20 @@ export default { }, }, }, - /** Lookup348: xcm::v2::multiasset::WildFungibility */ + /** Lookup351: xcm::v2::multiasset::WildFungibility */ XcmV2MultiassetWildFungibility: { _enum: ["Fungible", "NonFungible"], }, - /** Lookup349: xcm::v2::WeightLimit */ + /** Lookup352: xcm::v2::WeightLimit */ XcmV2WeightLimit: { _enum: { Unlimited: "Null", Limited: "Compact", }, }, - /** Lookup350: xcm::v3::Xcm */ + /** Lookup353: xcm::v3::Xcm */ XcmV3Xcm: "Vec", - /** Lookup352: xcm::v3::Instruction */ + /** Lookup355: xcm::v3::Instruction */ XcmV3Instruction: { _enum: { WithdrawAsset: "XcmV3MultiassetMultiAssets", @@ -3540,28 +3571,28 @@ export default { }, }, }, - /** Lookup353: xcm::v3::multiasset::MultiAssets */ + /** Lookup356: xcm::v3::multiasset::MultiAssets */ XcmV3MultiassetMultiAssets: "Vec", - /** Lookup355: xcm::v3::multiasset::MultiAsset */ + /** Lookup358: xcm::v3::multiasset::MultiAsset */ XcmV3MultiAsset: { id: "XcmV3MultiassetAssetId", fun: "XcmV3MultiassetFungibility", }, - /** Lookup356: xcm::v3::multiasset::AssetId */ + /** Lookup359: xcm::v3::multiasset::AssetId */ XcmV3MultiassetAssetId: { _enum: { Concrete: "StagingXcmV3MultiLocation", Abstract: "[u8;32]", }, }, - /** Lookup357: xcm::v3::multiasset::Fungibility */ + /** Lookup360: xcm::v3::multiasset::Fungibility */ XcmV3MultiassetFungibility: { _enum: { Fungible: "Compact", NonFungible: "XcmV3MultiassetAssetInstance", }, }, - /** Lookup358: xcm::v3::multiasset::AssetInstance */ + /** Lookup361: xcm::v3::multiasset::AssetInstance */ XcmV3MultiassetAssetInstance: { _enum: { Undefined: "Null", @@ -3572,7 +3603,7 @@ export default { Array32: "[u8;32]", }, }, - /** Lookup359: xcm::v3::Response */ + /** Lookup362: xcm::v3::Response */ XcmV3Response: { _enum: { Null: "Null", @@ -3583,7 +3614,7 @@ export default { DispatchResult: "XcmV3MaybeErrorCode", }, }, - /** Lookup362: xcm::v3::traits::Error */ + /** Lookup365: xcm::v3::traits::Error */ XcmV3TraitsError: { _enum: { Overflow: "Null", @@ -3628,7 +3659,7 @@ export default { ExceedsStackLimit: "Null", }, }, - /** Lookup364: xcm::v3::PalletInfo */ + /** Lookup367: xcm::v3::PalletInfo */ XcmV3PalletInfo: { index: "Compact", name: "Bytes", @@ -3637,7 +3668,7 @@ export default { minor: "Compact", patch: "Compact", }, - /** Lookup367: xcm::v3::MaybeErrorCode */ + /** Lookup370: xcm::v3::MaybeErrorCode */ XcmV3MaybeErrorCode: { _enum: { Success: "Null", @@ -3645,24 +3676,24 @@ export default { TruncatedError: "Bytes", }, }, - /** Lookup370: xcm::v3::OriginKind */ + /** Lookup373: xcm::v3::OriginKind */ XcmV3OriginKind: { _enum: ["Native", "SovereignAccount", "Superuser", "Xcm"], }, - /** Lookup371: xcm::v3::QueryResponseInfo */ + /** Lookup374: xcm::v3::QueryResponseInfo */ XcmV3QueryResponseInfo: { destination: "StagingXcmV3MultiLocation", queryId: "Compact", maxWeight: "SpWeightsWeightV2Weight", }, - /** Lookup372: xcm::v3::multiasset::MultiAssetFilter */ + /** Lookup375: xcm::v3::multiasset::MultiAssetFilter */ XcmV3MultiassetMultiAssetFilter: { _enum: { Definite: "XcmV3MultiassetMultiAssets", Wild: "XcmV3MultiassetWildMultiAsset", }, }, - /** Lookup373: xcm::v3::multiasset::WildMultiAsset */ + /** Lookup376: xcm::v3::multiasset::WildMultiAsset */ XcmV3MultiassetWildMultiAsset: { _enum: { All: "Null", @@ -3678,20 +3709,20 @@ export default { }, }, }, - /** Lookup374: xcm::v3::multiasset::WildFungibility */ + /** Lookup377: xcm::v3::multiasset::WildFungibility */ XcmV3MultiassetWildFungibility: { _enum: ["Fungible", "NonFungible"], }, - /** Lookup375: xcm::v3::WeightLimit */ + /** Lookup378: xcm::v3::WeightLimit */ XcmV3WeightLimit: { _enum: { Unlimited: "Null", Limited: "SpWeightsWeightV2Weight", }, }, - /** Lookup376: staging_xcm::v4::Xcm */ + /** Lookup379: staging_xcm::v4::Xcm */ StagingXcmV4Xcm: "Vec", - /** Lookup378: staging_xcm::v4::Instruction */ + /** Lookup381: staging_xcm::v4::Instruction */ StagingXcmV4Instruction: { _enum: { WithdrawAsset: "StagingXcmV4AssetAssets", @@ -3831,23 +3862,23 @@ export default { }, }, }, - /** Lookup379: staging_xcm::v4::asset::Assets */ + /** Lookup382: staging_xcm::v4::asset::Assets */ StagingXcmV4AssetAssets: "Vec", - /** Lookup381: staging_xcm::v4::asset::Asset */ + /** Lookup384: staging_xcm::v4::asset::Asset */ StagingXcmV4Asset: { id: "StagingXcmV4AssetAssetId", fun: "StagingXcmV4AssetFungibility", }, - /** Lookup382: staging_xcm::v4::asset::AssetId */ + /** Lookup385: staging_xcm::v4::asset::AssetId */ StagingXcmV4AssetAssetId: "StagingXcmV4Location", - /** Lookup383: staging_xcm::v4::asset::Fungibility */ + /** Lookup386: staging_xcm::v4::asset::Fungibility */ StagingXcmV4AssetFungibility: { _enum: { Fungible: "Compact", NonFungible: "StagingXcmV4AssetAssetInstance", }, }, - /** Lookup384: staging_xcm::v4::asset::AssetInstance */ + /** Lookup387: staging_xcm::v4::asset::AssetInstance */ StagingXcmV4AssetAssetInstance: { _enum: { Undefined: "Null", @@ -3858,7 +3889,7 @@ export default { Array32: "[u8;32]", }, }, - /** Lookup385: staging_xcm::v4::Response */ + /** Lookup388: staging_xcm::v4::Response */ StagingXcmV4Response: { _enum: { Null: "Null", @@ -3869,7 +3900,7 @@ export default { DispatchResult: "XcmV3MaybeErrorCode", }, }, - /** Lookup387: staging_xcm::v4::PalletInfo */ + /** Lookup390: staging_xcm::v4::PalletInfo */ StagingXcmV4PalletInfo: { index: "Compact", name: "Bytes", @@ -3878,20 +3909,20 @@ export default { minor: "Compact", patch: "Compact", }, - /** Lookup391: staging_xcm::v4::QueryResponseInfo */ + /** Lookup394: staging_xcm::v4::QueryResponseInfo */ StagingXcmV4QueryResponseInfo: { destination: "StagingXcmV4Location", queryId: "Compact", maxWeight: "SpWeightsWeightV2Weight", }, - /** Lookup392: staging_xcm::v4::asset::AssetFilter */ + /** Lookup395: staging_xcm::v4::asset::AssetFilter */ StagingXcmV4AssetAssetFilter: { _enum: { Definite: "StagingXcmV4AssetAssets", Wild: "StagingXcmV4AssetWildAsset", }, }, - /** Lookup393: staging_xcm::v4::asset::WildAsset */ + /** Lookup396: staging_xcm::v4::asset::WildAsset */ StagingXcmV4AssetWildAsset: { _enum: { All: "Null", @@ -3907,11 +3938,11 @@ export default { }, }, }, - /** Lookup394: staging_xcm::v4::asset::WildFungibility */ + /** Lookup397: staging_xcm::v4::asset::WildFungibility */ StagingXcmV4AssetWildFungibility: { _enum: ["Fungible", "NonFungible"], }, - /** Lookup395: xcm::VersionedAssets */ + /** Lookup398: xcm::VersionedAssets */ XcmVersionedAssets: { _enum: { __Unused0: "Null", @@ -3921,7 +3952,7 @@ export default { V4: "StagingXcmV4AssetAssets", }, }, - /** Lookup407: staging_xcm_executor::traits::asset_transfer::TransferType */ + /** Lookup410: staging_xcm_executor::traits::asset_transfer::TransferType */ StagingXcmExecutorAssetTransferTransferType: { _enum: { Teleport: "Null", @@ -3930,7 +3961,7 @@ export default { RemoteReserve: "XcmVersionedLocation", }, }, - /** Lookup408: xcm::VersionedAssetId */ + /** Lookup411: xcm::VersionedAssetId */ XcmVersionedAssetId: { _enum: { __Unused0: "Null", @@ -3940,7 +3971,7 @@ export default { V4: "StagingXcmV4AssetAssetId", }, }, - /** Lookup409: snowbridge_pallet_inbound_queue::pallet::Call */ + /** Lookup412: snowbridge_pallet_inbound_queue::pallet::Call */ SnowbridgePalletInboundQueueCall: { _enum: { submit: { @@ -3951,30 +3982,30 @@ export default { }, }, }, - /** Lookup410: snowbridge_core::inbound::Message */ + /** Lookup413: snowbridge_core::inbound::Message */ SnowbridgeCoreInboundMessage: { eventLog: "SnowbridgeCoreInboundLog", proof: "SnowbridgeCoreInboundProof", }, - /** Lookup411: snowbridge_core::inbound::Log */ + /** Lookup414: snowbridge_core::inbound::Log */ SnowbridgeCoreInboundLog: { address: "H160", topics: "Vec", data: "Bytes", }, - /** Lookup413: snowbridge_core::inbound::Proof */ + /** Lookup416: snowbridge_core::inbound::Proof */ SnowbridgeCoreInboundProof: { receiptProof: "(Vec,Vec)", executionProof: "SnowbridgeBeaconPrimitivesExecutionProof", }, - /** Lookup415: snowbridge_beacon_primitives::types::ExecutionProof */ + /** Lookup418: snowbridge_beacon_primitives::types::ExecutionProof */ SnowbridgeBeaconPrimitivesExecutionProof: { header: "SnowbridgeBeaconPrimitivesBeaconHeader", ancestryProof: "Option", executionHeader: "SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader", executionBranch: "Vec", }, - /** Lookup416: snowbridge_beacon_primitives::types::BeaconHeader */ + /** Lookup419: snowbridge_beacon_primitives::types::BeaconHeader */ SnowbridgeBeaconPrimitivesBeaconHeader: { slot: "u64", proposerIndex: "u64", @@ -3982,19 +4013,19 @@ export default { stateRoot: "H256", bodyRoot: "H256", }, - /** Lookup418: snowbridge_beacon_primitives::types::AncestryProof */ + /** Lookup421: snowbridge_beacon_primitives::types::AncestryProof */ SnowbridgeBeaconPrimitivesAncestryProof: { headerBranch: "Vec", finalizedBlockRoot: "H256", }, - /** Lookup419: snowbridge_beacon_primitives::types::VersionedExecutionPayloadHeader */ + /** Lookup422: snowbridge_beacon_primitives::types::VersionedExecutionPayloadHeader */ SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader: { _enum: { Capella: "SnowbridgeBeaconPrimitivesExecutionPayloadHeader", Deneb: "SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader", }, }, - /** Lookup420: snowbridge_beacon_primitives::types::ExecutionPayloadHeader */ + /** Lookup423: snowbridge_beacon_primitives::types::ExecutionPayloadHeader */ SnowbridgeBeaconPrimitivesExecutionPayloadHeader: { parentHash: "H256", feeRecipient: "H160", @@ -4012,7 +4043,7 @@ export default { transactionsRoot: "H256", withdrawalsRoot: "H256", }, - /** Lookup423: snowbridge_beacon_primitives::types::deneb::ExecutionPayloadHeader */ + /** Lookup426: snowbridge_beacon_primitives::types::deneb::ExecutionPayloadHeader */ SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader: { parentHash: "H256", feeRecipient: "H160", @@ -4032,19 +4063,7 @@ export default { blobGasUsed: "u64", excessBlobGas: "u64", }, - /** Lookup424: snowbridge_core::operating_mode::BasicOperatingMode */ - SnowbridgeCoreOperatingModeBasicOperatingMode: { - _enum: ["Normal", "Halted"], - }, - /** Lookup425: snowbridge_pallet_outbound_queue::pallet::Call */ - SnowbridgePalletOutboundQueueCall: { - _enum: { - set_operating_mode: { - mode: "SnowbridgeCoreOperatingModeBasicOperatingMode", - }, - }, - }, - /** Lookup426: snowbridge_pallet_system::pallet::Call */ + /** Lookup427: snowbridge_pallet_system::pallet::Call */ SnowbridgePalletSystemCall: { _enum: { upgrade: { @@ -4089,34 +4108,34 @@ export default { }, }, }, - /** Lookup428: snowbridge_core::outbound::v1::Initializer */ + /** Lookup429: snowbridge_core::outbound::v1::Initializer */ SnowbridgeCoreOutboundV1Initializer: { params: "Bytes", maximumRequiredGas: "u64", }, - /** Lookup429: snowbridge_core::outbound::v1::OperatingMode */ + /** Lookup430: snowbridge_core::outbound::v1::OperatingMode */ SnowbridgeCoreOutboundV1OperatingMode: { _enum: ["Normal", "RejectingOutboundMessages"], }, - /** Lookup430: snowbridge_core::pricing::PricingParameters */ + /** Lookup431: snowbridge_core::pricing::PricingParameters */ SnowbridgeCorePricingPricingParameters: { exchangeRate: "u128", rewards: "SnowbridgeCorePricingRewards", feePerGas: "U256", multiplier: "u128", }, - /** Lookup431: snowbridge_core::pricing::Rewards */ + /** Lookup432: snowbridge_core::pricing::Rewards */ SnowbridgeCorePricingRewards: { local: "u128", remote: "U256", }, - /** Lookup432: snowbridge_core::AssetMetadata */ + /** Lookup433: snowbridge_core::AssetMetadata */ SnowbridgeCoreAssetMetadata: { name: "Bytes", symbol: "Bytes", decimals: "u8", }, - /** Lookup433: pallet_migrations::pallet::Call */ + /** Lookup434: pallet_migrations::pallet::Call */ PalletMigrationsCall: { _enum: { force_set_cursor: { @@ -4133,20 +4152,20 @@ export default { }, }, }, - /** Lookup435: pallet_migrations::MigrationCursor, BlockNumber> */ + /** Lookup436: pallet_migrations::MigrationCursor, BlockNumber> */ PalletMigrationsMigrationCursor: { _enum: { Active: "PalletMigrationsActiveCursor", Stuck: "Null", }, }, - /** Lookup437: pallet_migrations::ActiveCursor, BlockNumber> */ + /** Lookup438: pallet_migrations::ActiveCursor, BlockNumber> */ PalletMigrationsActiveCursor: { index: "u32", innerCursor: "Option", startedAt: "u32", }, - /** Lookup439: pallet_migrations::HistoricCleanupSelector> */ + /** Lookup440: pallet_migrations::HistoricCleanupSelector> */ PalletMigrationsHistoricCleanupSelector: { _enum: { Specific: "Vec", @@ -4156,7 +4175,7 @@ export default { }, }, }, - /** Lookup442: pallet_beefy::pallet::Call */ + /** Lookup443: pallet_beefy::pallet::Call */ PalletBeefyCall: { _enum: { report_double_voting: { @@ -4189,17 +4208,17 @@ export default { }, }, /** - * Lookup443: sp_consensus_beefy::DoubleVotingProof */ SpConsensusBeefyDoubleVotingProof: { first: "SpConsensusBeefyVoteMessage", second: "SpConsensusBeefyVoteMessage", }, - /** Lookup444: sp_consensus_beefy::ecdsa_crypto::Signature */ + /** Lookup445: sp_consensus_beefy::ecdsa_crypto::Signature */ SpConsensusBeefyEcdsaCryptoSignature: "[u8;65]", /** - * Lookup445: sp_consensus_beefy::VoteMessage */ SpConsensusBeefyVoteMessage: { @@ -4207,16 +4226,16 @@ export default { id: "SpConsensusBeefyEcdsaCryptoPublic", signature: "SpConsensusBeefyEcdsaCryptoSignature", }, - /** Lookup446: sp_consensus_beefy::commitment::Commitment */ + /** Lookup447: sp_consensus_beefy::commitment::Commitment */ SpConsensusBeefyCommitment: { payload: "SpConsensusBeefyPayload", blockNumber: "u32", validatorSetId: "u64", }, - /** Lookup447: sp_consensus_beefy::payload::Payload */ + /** Lookup448: sp_consensus_beefy::payload::Payload */ SpConsensusBeefyPayload: "Vec<([u8;2],Bytes)>", /** - * Lookup450: sp_consensus_beefy::ForkVotingProof, + * Lookup451: sp_consensus_beefy::ForkVotingProof, * sp_consensus_beefy::ecdsa_crypto::Public, sp_mmr_primitives::AncestryProof> */ SpConsensusBeefyForkVotingProof: { @@ -4224,18 +4243,18 @@ export default { ancestryProof: "SpMmrPrimitivesAncestryProof", header: "SpRuntimeHeader", }, - /** Lookup451: sp_mmr_primitives::AncestryProof */ + /** Lookup452: sp_mmr_primitives::AncestryProof */ SpMmrPrimitivesAncestryProof: { prevPeaks: "Vec", prevLeafCount: "u64", leafCount: "u64", items: "Vec<(u64,H256)>", }, - /** Lookup454: sp_consensus_beefy::FutureBlockVotingProof */ + /** Lookup455: sp_consensus_beefy::FutureBlockVotingProof */ SpConsensusBeefyFutureBlockVotingProof: { vote: "SpConsensusBeefyVoteMessage", }, - /** Lookup455: snowbridge_pallet_ethereum_client::pallet::Call */ + /** Lookup456: snowbridge_pallet_ethereum_client::pallet::Call */ SnowbridgePalletEthereumClientCall: { _enum: { force_checkpoint: { @@ -4250,7 +4269,7 @@ export default { }, }, }, - /** Lookup456: snowbridge_beacon_primitives::updates::CheckpointUpdate */ + /** Lookup457: snowbridge_beacon_primitives::updates::CheckpointUpdate */ SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate: { header: "SnowbridgeBeaconPrimitivesBeaconHeader", currentSyncCommittee: "SnowbridgeBeaconPrimitivesSyncCommittee", @@ -4259,14 +4278,14 @@ export default { blockRootsRoot: "H256", blockRootsBranch: "Vec", }, - /** Lookup457: snowbridge_beacon_primitives::types::SyncCommittee */ + /** Lookup458: snowbridge_beacon_primitives::types::SyncCommittee */ SnowbridgeBeaconPrimitivesSyncCommittee: { pubkeys: "[[u8;48];512]", aggregatePubkey: "SnowbridgeBeaconPrimitivesPublicKey", }, - /** Lookup459: snowbridge_beacon_primitives::types::PublicKey */ + /** Lookup460: snowbridge_beacon_primitives::types::PublicKey */ SnowbridgeBeaconPrimitivesPublicKey: "[u8;48]", - /** Lookup461: snowbridge_beacon_primitives::updates::Update */ + /** Lookup462: snowbridge_beacon_primitives::updates::Update */ SnowbridgeBeaconPrimitivesUpdatesUpdate: { attestedHeader: "SnowbridgeBeaconPrimitivesBeaconHeader", syncAggregate: "SnowbridgeBeaconPrimitivesSyncAggregate", @@ -4277,19 +4296,19 @@ export default { blockRootsRoot: "H256", blockRootsBranch: "Vec", }, - /** Lookup462: snowbridge_beacon_primitives::types::SyncAggregate */ + /** Lookup463: snowbridge_beacon_primitives::types::SyncAggregate */ SnowbridgeBeaconPrimitivesSyncAggregate: { syncCommitteeBits: "[u8;64]", syncCommitteeSignature: "SnowbridgeBeaconPrimitivesSignature", }, - /** Lookup463: snowbridge_beacon_primitives::types::Signature */ + /** Lookup464: snowbridge_beacon_primitives::types::Signature */ SnowbridgeBeaconPrimitivesSignature: "[u8;96]", - /** Lookup466: snowbridge_beacon_primitives::updates::NextSyncCommitteeUpdate */ + /** Lookup467: snowbridge_beacon_primitives::updates::NextSyncCommitteeUpdate */ SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate: { nextSyncCommittee: "SnowbridgeBeaconPrimitivesSyncCommittee", nextSyncCommitteeBranch: "Vec", }, - /** Lookup467: polkadot_runtime_common::paras_sudo_wrapper::pallet::Call */ + /** Lookup468: polkadot_runtime_common::paras_sudo_wrapper::pallet::Call */ PolkadotRuntimeCommonParasSudoWrapperPalletCall: { _enum: { sudo_schedule_para_initialize: { @@ -4317,13 +4336,13 @@ export default { }, }, }, - /** Lookup468: polkadot_runtime_parachains::paras::ParaGenesisArgs */ + /** Lookup469: polkadot_runtime_parachains::paras::ParaGenesisArgs */ PolkadotRuntimeParachainsParasParaGenesisArgs: { genesisHead: "Bytes", validationCode: "Bytes", paraKind: "bool", }, - /** Lookup469: pallet_root_testing::pallet::Call */ + /** Lookup470: pallet_root_testing::pallet::Call */ PalletRootTestingCall: { _enum: { fill_block: { @@ -4332,7 +4351,7 @@ export default { trigger_defensive: "Null", }, }, - /** Lookup470: pallet_sudo::pallet::Call */ + /** Lookup471: pallet_sudo::pallet::Call */ PalletSudoCall: { _enum: { sudo: { @@ -4355,15 +4374,15 @@ export default { remove_key: "Null", }, }, - /** Lookup471: sp_runtime::traits::BlakeTwo256 */ + /** Lookup472: sp_runtime::traits::BlakeTwo256 */ SpRuntimeBlakeTwo256: "Null", - /** Lookup473: pallet_conviction_voting::types::Tally */ + /** Lookup474: pallet_conviction_voting::types::Tally */ PalletConvictionVotingTally: { ayes: "u128", nays: "u128", support: "u128", }, - /** Lookup474: pallet_ranked_collective::pallet::Event */ + /** Lookup475: pallet_ranked_collective::pallet::Event */ PalletRankedCollectiveEvent: { _enum: { MemberAdded: { @@ -4389,20 +4408,20 @@ export default { }, }, }, - /** Lookup475: pallet_ranked_collective::VoteRecord */ + /** Lookup476: pallet_ranked_collective::VoteRecord */ PalletRankedCollectiveVoteRecord: { _enum: { Aye: "u32", Nay: "u32", }, }, - /** Lookup476: pallet_ranked_collective::Tally */ + /** Lookup477: pallet_ranked_collective::Tally */ PalletRankedCollectiveTally: { bareAyes: "u32", ayes: "u32", nays: "u32", }, - /** Lookup478: pallet_whitelist::pallet::Event */ + /** Lookup479: pallet_whitelist::pallet::Event */ PalletWhitelistEvent: { _enum: { CallWhitelisted: { @@ -4417,17 +4436,17 @@ export default { }, }, }, - /** Lookup480: frame_support::dispatch::PostDispatchInfo */ + /** Lookup481: frame_support::dispatch::PostDispatchInfo */ FrameSupportDispatchPostDispatchInfo: { actualWeight: "Option", paysFee: "FrameSupportDispatchPays", }, - /** Lookup482: sp_runtime::DispatchErrorWithPostInfo */ + /** Lookup483: sp_runtime::DispatchErrorWithPostInfo */ SpRuntimeDispatchErrorWithPostInfo: { postInfo: "FrameSupportDispatchPostDispatchInfo", error: "SpRuntimeDispatchError", }, - /** Lookup483: polkadot_runtime_parachains::inclusion::pallet::Event */ + /** Lookup484: polkadot_runtime_parachains::inclusion::pallet::Event */ PolkadotRuntimeParachainsInclusionPalletEvent: { _enum: { CandidateBacked: "(PolkadotPrimitivesV8CandidateReceipt,Bytes,u32,u32)", @@ -4439,12 +4458,12 @@ export default { }, }, }, - /** Lookup484: polkadot_primitives::v8::CandidateReceipt */ + /** Lookup485: polkadot_primitives::v8::CandidateReceipt */ PolkadotPrimitivesV8CandidateReceipt: { descriptor: "PolkadotPrimitivesV8CandidateDescriptor", commitmentsHash: "H256", }, - /** Lookup487: polkadot_runtime_parachains::paras::pallet::Event */ + /** Lookup488: polkadot_runtime_parachains::paras::pallet::Event */ PolkadotRuntimeParachainsParasPalletEvent: { _enum: { CurrentCodeUpdated: "u32", @@ -4457,7 +4476,7 @@ export default { PvfCheckRejected: "(H256,u32)", }, }, - /** Lookup488: polkadot_runtime_parachains::hrmp::pallet::Event */ + /** Lookup489: polkadot_runtime_parachains::hrmp::pallet::Event */ PolkadotRuntimeParachainsHrmpPalletEvent: { _enum: { OpenChannelRequested: { @@ -4496,7 +4515,7 @@ export default { }, }, }, - /** Lookup489: polkadot_runtime_parachains::disputes::pallet::Event */ + /** Lookup490: polkadot_runtime_parachains::disputes::pallet::Event */ PolkadotRuntimeParachainsDisputesPalletEvent: { _enum: { DisputeInitiated: "(H256,PolkadotRuntimeParachainsDisputesDisputeLocation)", @@ -4504,15 +4523,15 @@ export default { Revert: "u32", }, }, - /** Lookup490: polkadot_runtime_parachains::disputes::DisputeLocation */ + /** Lookup491: polkadot_runtime_parachains::disputes::DisputeLocation */ PolkadotRuntimeParachainsDisputesDisputeLocation: { _enum: ["Local", "Remote"], }, - /** Lookup491: polkadot_runtime_parachains::disputes::DisputeResult */ + /** Lookup492: polkadot_runtime_parachains::disputes::DisputeResult */ PolkadotRuntimeParachainsDisputesDisputeResult: { _enum: ["Valid", "Invalid"], }, - /** Lookup492: pallet_message_queue::pallet::Event */ + /** Lookup493: pallet_message_queue::pallet::Event */ PalletMessageQueueEvent: { _enum: { ProcessingFailed: { @@ -4538,7 +4557,7 @@ export default { }, }, }, - /** Lookup493: frame_support::traits::messages::ProcessMessageError */ + /** Lookup494: frame_support::traits::messages::ProcessMessageError */ FrameSupportMessagesProcessMessageError: { _enum: { BadFormat: "Null", @@ -4549,7 +4568,7 @@ export default { StackLimitReached: "Null", }, }, - /** Lookup494: polkadot_runtime_parachains::on_demand::pallet::Event */ + /** Lookup495: polkadot_runtime_parachains::on_demand::pallet::Event */ PolkadotRuntimeParachainsOnDemandPalletEvent: { _enum: { OnDemandOrderPlaced: { @@ -4562,7 +4581,7 @@ export default { }, }, }, - /** Lookup495: polkadot_runtime_common::paras_registrar::pallet::Event */ + /** Lookup496: polkadot_runtime_common::paras_registrar::pallet::Event */ PolkadotRuntimeCommonParasRegistrarPalletEvent: { _enum: { Registered: { @@ -4582,7 +4601,7 @@ export default { }, }, }, - /** Lookup496: pallet_utility::pallet::Event */ + /** Lookup497: pallet_utility::pallet::Event */ PalletUtilityEvent: { _enum: { BatchInterrupted: { @@ -4600,7 +4619,7 @@ export default { }, }, }, - /** Lookup498: pallet_identity::pallet::Event */ + /** Lookup499: pallet_identity::pallet::Event */ PalletIdentityEvent: { _enum: { IdentitySet: { @@ -4672,7 +4691,7 @@ export default { }, }, }, - /** Lookup499: pallet_scheduler::pallet::Event */ + /** Lookup500: pallet_scheduler::pallet::Event */ PalletSchedulerEvent: { _enum: { Scheduled: { @@ -4716,7 +4735,7 @@ export default { }, }, }, - /** Lookup501: pallet_proxy::pallet::Event */ + /** Lookup502: pallet_proxy::pallet::Event */ PalletProxyEvent: { _enum: { ProxyExecuted: { @@ -4747,7 +4766,7 @@ export default { }, }, }, - /** Lookup502: pallet_multisig::pallet::Event */ + /** Lookup503: pallet_multisig::pallet::Event */ PalletMultisigEvent: { _enum: { NewMultisig: { @@ -4776,7 +4795,7 @@ export default { }, }, }, - /** Lookup503: pallet_preimage::pallet::Event */ + /** Lookup504: pallet_preimage::pallet::Event */ PalletPreimageEvent: { _enum: { Noted: { @@ -4799,7 +4818,7 @@ export default { }, }, }, - /** Lookup504: pallet_asset_rate::pallet::Event */ + /** Lookup505: pallet_asset_rate::pallet::Event */ PalletAssetRateEvent: { _enum: { AssetRateCreated: { @@ -4819,7 +4838,7 @@ export default { }, }, }, - /** Lookup505: pallet_xcm::pallet::Event */ + /** Lookup506: pallet_xcm::pallet::Event */ PalletXcmEvent: { _enum: { Attempted: { @@ -4942,7 +4961,7 @@ export default { }, }, }, - /** Lookup506: staging_xcm::v4::traits::Outcome */ + /** Lookup507: staging_xcm::v4::traits::Outcome */ StagingXcmV4TraitsOutcome: { _enum: { Complete: { @@ -4957,7 +4976,7 @@ export default { }, }, }, - /** Lookup507: snowbridge_pallet_inbound_queue::pallet::Event */ + /** Lookup508: snowbridge_pallet_inbound_queue::pallet::Event */ SnowbridgePalletInboundQueueEvent: { _enum: { MessageReceived: { @@ -4971,25 +4990,6 @@ export default { }, }, }, - /** Lookup508: snowbridge_pallet_outbound_queue::pallet::Event */ - SnowbridgePalletOutboundQueueEvent: { - _enum: { - MessageQueued: { - id: "H256", - }, - MessageAccepted: { - id: "H256", - nonce: "u64", - }, - MessagesCommitted: { - root: "H256", - count: "u64", - }, - OperatingModeChanged: { - mode: "SnowbridgeCoreOperatingModeBasicOperatingMode", - }, - }, - }, /** Lookup509: snowbridge_pallet_system::pallet::Event */ SnowbridgePalletSystemEvent: { _enum: { @@ -5517,13 +5517,28 @@ export default { total: "u32", individual: "BTreeMap", }, - /** Lookup626: sp_core::crypto::KeyTypeId */ + /** Lookup624: snowbridge_pallet_outbound_queue::types::CommittedMessage */ + SnowbridgePalletOutboundQueueCommittedMessage: { + channelId: "SnowbridgeCoreChannelId", + nonce: "Compact", + command: "u8", + params: "Bytes", + maxDispatchGas: "Compact", + maxFeePerGas: "Compact", + reward: "Compact", + id: "H256", + }, + /** Lookup625: snowbridge_pallet_outbound_queue::pallet::Error */ + SnowbridgePalletOutboundQueueError: { + _enum: ["MessageTooLarge", "Halted", "InvalidChannel"], + }, + /** Lookup629: sp_core::crypto::KeyTypeId */ SpCoreCryptoKeyTypeId: "[u8;4]", - /** Lookup627: pallet_session::pallet::Error */ + /** Lookup630: pallet_session::pallet::Error */ PalletSessionError: { _enum: ["InvalidProof", "NoAssociatedValidatorId", "DuplicatedKey", "NoKeys", "NoAccount"], }, - /** Lookup628: pallet_grandpa::StoredState */ + /** Lookup631: pallet_grandpa::StoredState */ PalletGrandpaStoredState: { _enum: { Live: "Null", @@ -5538,14 +5553,14 @@ export default { }, }, }, - /** Lookup629: pallet_grandpa::StoredPendingChange */ + /** Lookup632: pallet_grandpa::StoredPendingChange */ PalletGrandpaStoredPendingChange: { scheduledAt: "u32", delay: "u32", nextAuthorities: "Vec<(SpConsensusGrandpaAppPublic,u64)>", forced: "Option", }, - /** Lookup631: pallet_grandpa::pallet::Error */ + /** Lookup634: pallet_grandpa::pallet::Error */ PalletGrandpaError: { _enum: [ "PauseFailed", @@ -5557,17 +5572,17 @@ export default { "DuplicateOffenceReport", ], }, - /** Lookup634: pallet_inflation_rewards::pallet::ChainsToRewardValue */ + /** Lookup637: pallet_inflation_rewards::pallet::ChainsToRewardValue */ PalletInflationRewardsChainsToRewardValue: { paraIds: "Vec", rewardsPerChain: "u128", }, - /** Lookup636: pallet_pooled_staking::candidate::EligibleCandidate */ + /** Lookup639: pallet_pooled_staking::candidate::EligibleCandidate */ PalletPooledStakingCandidateEligibleCandidate: { candidate: "AccountId32", stake: "u128", }, - /** Lookup639: pallet_pooled_staking::pallet::PoolsKey */ + /** Lookup642: pallet_pooled_staking::pallet::PoolsKey */ PalletPooledStakingPoolsKey: { _enum: { CandidateTotalStake: "Null", @@ -5609,7 +5624,7 @@ export default { }, }, }, - /** Lookup641: pallet_pooled_staking::pallet::Error */ + /** Lookup644: pallet_pooled_staking::pallet::Error */ PalletPooledStakingError: { _enum: { InvalidPalletSetting: "Null", @@ -5628,7 +5643,7 @@ export default { SwapResultsInZeroShares: "Null", }, }, - /** Lookup642: pallet_treasury::Proposal */ + /** Lookup645: pallet_treasury::Proposal */ PalletTreasuryProposal: { proposer: "AccountId32", value: "u128", @@ -5636,7 +5651,7 @@ export default { bond: "u128", }, /** - * Lookup644: pallet_treasury::SpendStatus */ PalletTreasurySpendStatus: { @@ -5647,7 +5662,7 @@ export default { expireAt: "u32", status: "PalletTreasuryPaymentState", }, - /** Lookup645: pallet_treasury::PaymentState */ + /** Lookup648: pallet_treasury::PaymentState */ PalletTreasuryPaymentState: { _enum: { Pending: "Null", @@ -5657,9 +5672,9 @@ export default { Failed: "Null", }, }, - /** Lookup647: frame_support::PalletId */ + /** Lookup650: frame_support::PalletId */ FrameSupportPalletId: "[u8;8]", - /** Lookup648: pallet_treasury::pallet::Error */ + /** Lookup651: pallet_treasury::pallet::Error */ PalletTreasuryError: { _enum: [ "InvalidIndex", @@ -5676,7 +5691,7 @@ export default { ], }, /** - * Lookup650: pallet_conviction_voting::vote::Voting */ PalletConvictionVotingVoteVoting: { @@ -5685,20 +5700,20 @@ export default { Delegating: "PalletConvictionVotingVoteDelegating", }, }, - /** Lookup651: pallet_conviction_voting::vote::Casting */ + /** Lookup654: pallet_conviction_voting::vote::Casting */ PalletConvictionVotingVoteCasting: { votes: "Vec<(u32,PalletConvictionVotingVoteAccountVote)>", delegations: "PalletConvictionVotingDelegations", prior: "PalletConvictionVotingVotePriorLock", }, - /** Lookup655: pallet_conviction_voting::types::Delegations */ + /** Lookup658: pallet_conviction_voting::types::Delegations */ PalletConvictionVotingDelegations: { votes: "u128", capital: "u128", }, - /** Lookup656: pallet_conviction_voting::vote::PriorLock */ + /** Lookup659: pallet_conviction_voting::vote::PriorLock */ PalletConvictionVotingVotePriorLock: "(u32,u128)", - /** Lookup657: pallet_conviction_voting::vote::Delegating */ + /** Lookup660: pallet_conviction_voting::vote::Delegating */ PalletConvictionVotingVoteDelegating: { balance: "u128", target: "AccountId32", @@ -5706,7 +5721,7 @@ export default { delegations: "PalletConvictionVotingDelegations", prior: "PalletConvictionVotingVotePriorLock", }, - /** Lookup661: pallet_conviction_voting::pallet::Error */ + /** Lookup664: pallet_conviction_voting::pallet::Error */ PalletConvictionVotingError: { _enum: [ "NotOngoing", @@ -5724,7 +5739,7 @@ export default { ], }, /** - * Lookup662: pallet_referenda::types::ReferendumInfo, * Balance, pallet_conviction_voting::types::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5739,7 +5754,7 @@ export default { }, }, /** - * Lookup663: pallet_referenda::types::ReferendumStatus, * Balance, pallet_conviction_voting::types::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5756,17 +5771,17 @@ export default { inQueue: "bool", alarm: "Option<(u32,(u32,u32))>", }, - /** Lookup664: pallet_referenda::types::Deposit */ + /** Lookup667: pallet_referenda::types::Deposit */ PalletReferendaDeposit: { who: "AccountId32", amount: "u128", }, - /** Lookup667: pallet_referenda::types::DecidingStatus */ + /** Lookup670: pallet_referenda::types::DecidingStatus */ PalletReferendaDecidingStatus: { since: "u32", confirming: "Option", }, - /** Lookup675: pallet_referenda::types::TrackInfo */ + /** Lookup678: pallet_referenda::types::TrackInfo */ PalletReferendaTrackInfo: { name: "Text", maxDeciding: "u32", @@ -5778,7 +5793,7 @@ export default { minApproval: "PalletReferendaCurve", minSupport: "PalletReferendaCurve", }, - /** Lookup676: pallet_referenda::types::Curve */ + /** Lookup679: pallet_referenda::types::Curve */ PalletReferendaCurve: { _enum: { LinearDecreasing: { @@ -5799,7 +5814,7 @@ export default { }, }, }, - /** Lookup679: pallet_referenda::pallet::Error */ + /** Lookup682: pallet_referenda::pallet::Error */ PalletReferendaError: { _enum: [ "NotOngoing", @@ -5818,11 +5833,11 @@ export default { "PreimageStoredWithDifferentLength", ], }, - /** Lookup680: pallet_ranked_collective::MemberRecord */ + /** Lookup683: pallet_ranked_collective::MemberRecord */ PalletRankedCollectiveMemberRecord: { rank: "u16", }, - /** Lookup684: pallet_ranked_collective::pallet::Error */ + /** Lookup687: pallet_ranked_collective::pallet::Error */ PalletRankedCollectiveError: { _enum: [ "AlreadyMember", @@ -5839,7 +5854,7 @@ export default { ], }, /** - * Lookup685: pallet_referenda::types::ReferendumInfo, * Balance, pallet_ranked_collective::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5854,7 +5869,7 @@ export default { }, }, /** - * Lookup686: pallet_referenda::types::ReferendumStatus, * Balance, pallet_ranked_collective::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5871,7 +5886,7 @@ export default { inQueue: "bool", alarm: "Option<(u32,(u32,u32))>", }, - /** Lookup689: pallet_whitelist::pallet::Error */ + /** Lookup692: pallet_whitelist::pallet::Error */ PalletWhitelistError: { _enum: [ "UnavailablePreImage", @@ -5881,7 +5896,7 @@ export default { "CallAlreadyWhitelisted", ], }, - /** Lookup690: polkadot_runtime_parachains::configuration::HostConfiguration */ + /** Lookup693: polkadot_runtime_parachains::configuration::HostConfiguration */ PolkadotRuntimeParachainsConfigurationHostConfiguration: { maxCodeSize: "u32", maxHeadDataSize: "u32", @@ -5919,16 +5934,16 @@ export default { approvalVotingParams: "PolkadotPrimitivesV8ApprovalVotingParams", schedulerParams: "PolkadotPrimitivesV8SchedulerParams", }, - /** Lookup693: polkadot_runtime_parachains::configuration::pallet::Error */ + /** Lookup696: polkadot_runtime_parachains::configuration::pallet::Error */ PolkadotRuntimeParachainsConfigurationPalletError: { _enum: ["InvalidNewValue"], }, - /** Lookup696: polkadot_runtime_parachains::shared::AllowedRelayParentsTracker */ + /** Lookup699: polkadot_runtime_parachains::shared::AllowedRelayParentsTracker */ PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker: { buffer: "Vec<(H256,H256)>", latestNumber: "u32", }, - /** Lookup700: polkadot_runtime_parachains::inclusion::CandidatePendingAvailability */ + /** Lookup703: polkadot_runtime_parachains::inclusion::CandidatePendingAvailability */ PolkadotRuntimeParachainsInclusionCandidatePendingAvailability: { _alias: { hash_: "hash", @@ -5943,7 +5958,7 @@ export default { backedInNumber: "u32", backingGroup: "u32", }, - /** Lookup701: polkadot_runtime_parachains::inclusion::pallet::Error */ + /** Lookup704: polkadot_runtime_parachains::inclusion::pallet::Error */ PolkadotRuntimeParachainsInclusionPalletError: { _enum: [ "ValidatorIndexOutOfBounds", @@ -5965,14 +5980,14 @@ export default { "ParaHeadMismatch", ], }, - /** Lookup702: polkadot_primitives::v8::ScrapedOnChainVotes */ + /** Lookup705: polkadot_primitives::v8::ScrapedOnChainVotes */ PolkadotPrimitivesV8ScrapedOnChainVotes: { session: "u32", backingValidatorsPerCandidate: "Vec<(PolkadotPrimitivesV8CandidateReceipt,Vec<(u32,PolkadotPrimitivesV8ValidityAttestation)>)>", disputes: "Vec", }, - /** Lookup707: polkadot_runtime_parachains::paras_inherent::pallet::Error */ + /** Lookup710: polkadot_runtime_parachains::paras_inherent::pallet::Error */ PolkadotRuntimeParachainsParasInherentPalletError: { _enum: [ "TooManyInclusionInherents", @@ -5982,20 +5997,20 @@ export default { "UnscheduledCandidate", ], }, - /** Lookup710: polkadot_runtime_parachains::scheduler::pallet::CoreOccupied */ + /** Lookup713: polkadot_runtime_parachains::scheduler::pallet::CoreOccupied */ PolkadotRuntimeParachainsSchedulerPalletCoreOccupied: { _enum: { Free: "Null", Paras: "PolkadotRuntimeParachainsSchedulerPalletParasEntry", }, }, - /** Lookup711: polkadot_runtime_parachains::scheduler::pallet::ParasEntry */ + /** Lookup714: polkadot_runtime_parachains::scheduler::pallet::ParasEntry */ PolkadotRuntimeParachainsSchedulerPalletParasEntry: { assignment: "PolkadotRuntimeParachainsSchedulerCommonAssignment", availabilityTimeouts: "u32", ttl: "u32", }, - /** Lookup712: polkadot_runtime_parachains::scheduler::common::Assignment */ + /** Lookup715: polkadot_runtime_parachains::scheduler::common::Assignment */ PolkadotRuntimeParachainsSchedulerCommonAssignment: { _enum: { Pool: { @@ -6005,7 +6020,7 @@ export default { Bulk: "u32", }, }, - /** Lookup717: polkadot_runtime_parachains::paras::PvfCheckActiveVoteState */ + /** Lookup720: polkadot_runtime_parachains::paras::PvfCheckActiveVoteState */ PolkadotRuntimeParachainsParasPvfCheckActiveVoteState: { votesAccept: "BitVec", votesReject: "BitVec", @@ -6013,7 +6028,7 @@ export default { createdAt: "u32", causes: "Vec", }, - /** Lookup719: polkadot_runtime_parachains::paras::PvfCheckCause */ + /** Lookup722: polkadot_runtime_parachains::paras::PvfCheckCause */ PolkadotRuntimeParachainsParasPvfCheckCause: { _enum: { Onboarding: "u32", @@ -6024,11 +6039,11 @@ export default { }, }, }, - /** Lookup720: polkadot_runtime_parachains::paras::UpgradeStrategy */ + /** Lookup723: polkadot_runtime_parachains::paras::UpgradeStrategy */ PolkadotRuntimeParachainsParasUpgradeStrategy: { _enum: ["SetGoAheadSignal", "ApplyAtExpectedBlock"], }, - /** Lookup722: polkadot_runtime_parachains::paras::ParaLifecycle */ + /** Lookup725: polkadot_runtime_parachains::paras::ParaLifecycle */ PolkadotRuntimeParachainsParasParaLifecycle: { _enum: [ "Onboarding", @@ -6040,25 +6055,25 @@ export default { "OffboardingParachain", ], }, - /** Lookup724: polkadot_runtime_parachains::paras::ParaPastCodeMeta */ + /** Lookup727: polkadot_runtime_parachains::paras::ParaPastCodeMeta */ PolkadotRuntimeParachainsParasParaPastCodeMeta: { upgradeTimes: "Vec", lastPruned: "Option", }, - /** Lookup726: polkadot_runtime_parachains::paras::ReplacementTimes */ + /** Lookup729: polkadot_runtime_parachains::paras::ReplacementTimes */ PolkadotRuntimeParachainsParasReplacementTimes: { expectedAt: "u32", activatedAt: "u32", }, - /** Lookup728: polkadot_primitives::v8::UpgradeGoAhead */ + /** Lookup731: polkadot_primitives::v8::UpgradeGoAhead */ PolkadotPrimitivesV8UpgradeGoAhead: { _enum: ["Abort", "GoAhead"], }, - /** Lookup729: polkadot_primitives::v8::UpgradeRestriction */ + /** Lookup732: polkadot_primitives::v8::UpgradeRestriction */ PolkadotPrimitivesV8UpgradeRestriction: { _enum: ["Present"], }, - /** Lookup730: polkadot_runtime_parachains::paras::pallet::Error */ + /** Lookup733: polkadot_runtime_parachains::paras::pallet::Error */ PolkadotRuntimeParachainsParasPalletError: { _enum: [ "NotRegistered", @@ -6076,18 +6091,18 @@ export default { "InvalidCode", ], }, - /** Lookup732: polkadot_runtime_parachains::initializer::BufferedSessionChange */ + /** Lookup735: polkadot_runtime_parachains::initializer::BufferedSessionChange */ PolkadotRuntimeParachainsInitializerBufferedSessionChange: { validators: "Vec", queued: "Vec", sessionIndex: "u32", }, - /** Lookup734: polkadot_core_primitives::InboundDownwardMessage */ + /** Lookup737: polkadot_core_primitives::InboundDownwardMessage */ PolkadotCorePrimitivesInboundDownwardMessage: { sentAt: "u32", msg: "Bytes", }, - /** Lookup735: polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest */ + /** Lookup738: polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest */ PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest: { confirmed: "bool", age: "u32", @@ -6096,7 +6111,7 @@ export default { maxCapacity: "u32", maxTotalSize: "u32", }, - /** Lookup737: polkadot_runtime_parachains::hrmp::HrmpChannel */ + /** Lookup740: polkadot_runtime_parachains::hrmp::HrmpChannel */ PolkadotRuntimeParachainsHrmpHrmpChannel: { maxCapacity: "u32", maxTotalSize: "u32", @@ -6107,12 +6122,12 @@ export default { senderDeposit: "u128", recipientDeposit: "u128", }, - /** Lookup739: polkadot_core_primitives::InboundHrmpMessage */ + /** Lookup742: polkadot_core_primitives::InboundHrmpMessage */ PolkadotCorePrimitivesInboundHrmpMessage: { sentAt: "u32", data: "Bytes", }, - /** Lookup742: polkadot_runtime_parachains::hrmp::pallet::Error */ + /** Lookup745: polkadot_runtime_parachains::hrmp::pallet::Error */ PolkadotRuntimeParachainsHrmpPalletError: { _enum: [ "OpenHrmpChannelToSelf", @@ -6137,7 +6152,7 @@ export default { "ChannelCreationNotAuthorized", ], }, - /** Lookup744: polkadot_primitives::v8::SessionInfo */ + /** Lookup747: polkadot_primitives::v8::SessionInfo */ PolkadotPrimitivesV8SessionInfo: { activeValidatorIndices: "Vec", randomSeed: "[u8;32]", @@ -6154,20 +6169,20 @@ export default { neededApprovals: "u32", }, /** - * Lookup745: polkadot_primitives::v8::IndexedVec */ PolkadotPrimitivesV8IndexedVecValidatorIndex: "Vec", - /** Lookup746: polkadot_primitives::v8::IndexedVec */ + /** Lookup749: polkadot_primitives::v8::IndexedVec */ PolkadotPrimitivesV8IndexedVecGroupIndex: "Vec>", - /** Lookup748: polkadot_primitives::v8::DisputeState */ + /** Lookup751: polkadot_primitives::v8::DisputeState */ PolkadotPrimitivesV8DisputeState: { validatorsFor: "BitVec", validatorsAgainst: "BitVec", start: "u32", concludedAt: "Option", }, - /** Lookup750: polkadot_runtime_parachains::disputes::pallet::Error */ + /** Lookup753: polkadot_runtime_parachains::disputes::pallet::Error */ PolkadotRuntimeParachainsDisputesPalletError: { _enum: [ "DuplicateDisputeStatementSets", @@ -6181,7 +6196,7 @@ export default { "UnconfirmedDispute", ], }, - /** Lookup751: polkadot_primitives::v8::slashing::PendingSlashes */ + /** Lookup754: polkadot_primitives::v8::slashing::PendingSlashes */ PolkadotPrimitivesV8SlashingPendingSlashes: { _alias: { keys_: "keys", @@ -6189,7 +6204,7 @@ export default { keys_: "BTreeMap", kind: "PolkadotPrimitivesV8SlashingSlashingOffenceKind", }, - /** Lookup755: polkadot_runtime_parachains::disputes::slashing::pallet::Error */ + /** Lookup758: polkadot_runtime_parachains::disputes::slashing::pallet::Error */ PolkadotRuntimeParachainsDisputesSlashingPalletError: { _enum: [ "InvalidKeyOwnershipProof", @@ -6200,7 +6215,7 @@ export default { "DuplicateSlashingReport", ], }, - /** Lookup756: pallet_message_queue::BookState */ + /** Lookup759: pallet_message_queue::BookState */ PalletMessageQueueBookState: { _alias: { size_: "size", @@ -6212,12 +6227,12 @@ export default { messageCount: "u64", size_: "u64", }, - /** Lookup758: pallet_message_queue::Neighbours */ + /** Lookup761: pallet_message_queue::Neighbours */ PalletMessageQueueNeighbours: { prev: "DancelightRuntimeAggregateMessageOrigin", next: "DancelightRuntimeAggregateMessageOrigin", }, - /** Lookup760: pallet_message_queue::Page */ + /** Lookup763: pallet_message_queue::Page */ PalletMessageQueuePage: { remaining: "u32", remainingSize: "u32", @@ -6226,7 +6241,7 @@ export default { last: "u32", heap: "Bytes", }, - /** Lookup762: pallet_message_queue::pallet::Error */ + /** Lookup765: pallet_message_queue::pallet::Error */ PalletMessageQueueError: { _enum: [ "NotReapable", @@ -6240,38 +6255,38 @@ export default { "RecursiveDisallowed", ], }, - /** Lookup763: polkadot_runtime_parachains::on_demand::types::CoreAffinityCount */ + /** Lookup766: polkadot_runtime_parachains::on_demand::types::CoreAffinityCount */ PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount: { coreIndex: "u32", count: "u32", }, - /** Lookup764: polkadot_runtime_parachains::on_demand::types::QueueStatusType */ + /** Lookup767: polkadot_runtime_parachains::on_demand::types::QueueStatusType */ PolkadotRuntimeParachainsOnDemandTypesQueueStatusType: { traffic: "u128", nextIndex: "u32", smallestIndex: "u32", freedIndices: "BinaryHeapReverseQueueIndex", }, - /** Lookup766: BinaryHeap */ + /** Lookup769: BinaryHeap */ BinaryHeapReverseQueueIndex: "Vec", - /** Lookup769: BinaryHeap */ + /** Lookup772: BinaryHeap */ BinaryHeapEnqueuedOrder: "Vec", - /** Lookup770: polkadot_runtime_parachains::on_demand::types::EnqueuedOrder */ + /** Lookup773: polkadot_runtime_parachains::on_demand::types::EnqueuedOrder */ PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder: { paraId: "u32", idx: "u32", }, - /** Lookup774: polkadot_runtime_parachains::on_demand::pallet::Error */ + /** Lookup777: polkadot_runtime_parachains::on_demand::pallet::Error */ PolkadotRuntimeParachainsOnDemandPalletError: { _enum: ["QueueFull", "SpotPriceHigherThanMaxAmount"], }, - /** Lookup775: polkadot_runtime_common::paras_registrar::ParaInfo */ + /** Lookup778: polkadot_runtime_common::paras_registrar::ParaInfo */ PolkadotRuntimeCommonParasRegistrarParaInfo: { manager: "AccountId32", deposit: "u128", locked: "Option", }, - /** Lookup777: polkadot_runtime_common::paras_registrar::pallet::Error */ + /** Lookup780: polkadot_runtime_common::paras_registrar::pallet::Error */ PolkadotRuntimeCommonParasRegistrarPalletError: { _enum: [ "NotRegistered", @@ -6290,12 +6305,12 @@ export default { "CannotSwap", ], }, - /** Lookup778: pallet_utility::pallet::Error */ + /** Lookup781: pallet_utility::pallet::Error */ PalletUtilityError: { _enum: ["TooManyCalls"], }, /** - * Lookup780: pallet_identity::types::Registration> */ PalletIdentityRegistration: { @@ -6303,18 +6318,18 @@ export default { deposit: "u128", info: "PalletIdentityLegacyIdentityInfo", }, - /** Lookup789: pallet_identity::types::RegistrarInfo */ + /** Lookup792: pallet_identity::types::RegistrarInfo */ PalletIdentityRegistrarInfo: { account: "AccountId32", fee: "u128", fields: "u64", }, - /** Lookup791: pallet_identity::types::AuthorityProperties> */ + /** Lookup794: pallet_identity::types::AuthorityProperties> */ PalletIdentityAuthorityProperties: { suffix: "Bytes", allocation: "u32", }, - /** Lookup793: pallet_identity::pallet::Error */ + /** Lookup796: pallet_identity::pallet::Error */ PalletIdentityError: { _enum: [ "TooManySubAccounts", @@ -6346,7 +6361,7 @@ export default { ], }, /** - * Lookup796: pallet_scheduler::Scheduled, * BlockNumber, dancelight_runtime::OriginCaller, sp_core::crypto::AccountId32> */ @@ -6357,29 +6372,29 @@ export default { maybePeriodic: "Option<(u32,u32)>", origin: "DancelightRuntimeOriginCaller", }, - /** Lookup798: pallet_scheduler::RetryConfig */ + /** Lookup801: pallet_scheduler::RetryConfig */ PalletSchedulerRetryConfig: { totalRetries: "u8", remaining: "u8", period: "u32", }, - /** Lookup799: pallet_scheduler::pallet::Error */ + /** Lookup802: pallet_scheduler::pallet::Error */ PalletSchedulerError: { _enum: ["FailedToSchedule", "NotFound", "TargetBlockNumberInPast", "RescheduleNoChange", "Named"], }, - /** Lookup802: pallet_proxy::ProxyDefinition */ + /** Lookup805: pallet_proxy::ProxyDefinition */ PalletProxyProxyDefinition: { delegate: "AccountId32", proxyType: "DancelightRuntimeProxyType", delay: "u32", }, - /** Lookup806: pallet_proxy::Announcement */ + /** Lookup809: pallet_proxy::Announcement */ PalletProxyAnnouncement: { real: "AccountId32", callHash: "H256", height: "u32", }, - /** Lookup808: pallet_proxy::pallet::Error */ + /** Lookup811: pallet_proxy::pallet::Error */ PalletProxyError: { _enum: [ "TooMany", @@ -6392,14 +6407,14 @@ export default { "NoSelfProxy", ], }, - /** Lookup810: pallet_multisig::Multisig */ + /** Lookup813: pallet_multisig::Multisig */ PalletMultisigMultisig: { when: "PalletMultisigTimepoint", deposit: "u128", depositor: "AccountId32", approvals: "Vec", }, - /** Lookup812: pallet_multisig::pallet::Error */ + /** Lookup815: pallet_multisig::pallet::Error */ PalletMultisigError: { _enum: [ "MinimumThreshold", @@ -6418,7 +6433,7 @@ export default { "AlreadyStored", ], }, - /** Lookup813: pallet_preimage::OldRequestStatus */ + /** Lookup816: pallet_preimage::OldRequestStatus */ PalletPreimageOldRequestStatus: { _enum: { Unrequested: { @@ -6433,7 +6448,7 @@ export default { }, }, /** - * Lookup816: pallet_preimage::RequestStatus> */ PalletPreimageRequestStatus: { @@ -6449,7 +6464,7 @@ export default { }, }, }, - /** Lookup821: pallet_preimage::pallet::Error */ + /** Lookup824: pallet_preimage::pallet::Error */ PalletPreimageError: { _enum: [ "TooBig", @@ -6462,11 +6477,11 @@ export default { "TooFew", ], }, - /** Lookup822: pallet_asset_rate::pallet::Error */ + /** Lookup825: pallet_asset_rate::pallet::Error */ PalletAssetRateError: { _enum: ["UnknownAssetKind", "AlreadyExists", "Overflow"], }, - /** Lookup823: pallet_xcm::pallet::QueryStatus */ + /** Lookup826: pallet_xcm::pallet::QueryStatus */ PalletXcmQueryStatus: { _enum: { Pending: { @@ -6485,7 +6500,7 @@ export default { }, }, }, - /** Lookup827: xcm::VersionedResponse */ + /** Lookup830: xcm::VersionedResponse */ XcmVersionedResponse: { _enum: { __Unused0: "Null", @@ -6495,7 +6510,7 @@ export default { V4: "StagingXcmV4Response", }, }, - /** Lookup833: pallet_xcm::pallet::VersionMigrationStage */ + /** Lookup836: pallet_xcm::pallet::VersionMigrationStage */ PalletXcmVersionMigrationStage: { _enum: { MigrateSupportedVersion: "Null", @@ -6504,14 +6519,14 @@ export default { MigrateAndNotifyOldTargets: "Null", }, }, - /** Lookup835: pallet_xcm::pallet::RemoteLockedFungibleRecord */ + /** Lookup838: pallet_xcm::pallet::RemoteLockedFungibleRecord */ PalletXcmRemoteLockedFungibleRecord: { amount: "u128", owner: "XcmVersionedLocation", locker: "XcmVersionedLocation", consumers: "Vec<(Null,u128)>", }, - /** Lookup842: pallet_xcm::pallet::Error */ + /** Lookup845: pallet_xcm::pallet::Error */ PalletXcmError: { _enum: [ "Unreachable", @@ -6541,7 +6556,7 @@ export default { "LocalExecutionIncomplete", ], }, - /** Lookup843: snowbridge_pallet_inbound_queue::pallet::Error */ + /** Lookup846: snowbridge_pallet_inbound_queue::pallet::Error */ SnowbridgePalletInboundQueueError: { _enum: { InvalidGateway: "Null", @@ -6557,11 +6572,11 @@ export default { ConvertMessage: "SnowbridgeRouterPrimitivesInboundConvertMessageError", }, }, - /** Lookup844: snowbridge_core::inbound::VerificationError */ + /** Lookup847: snowbridge_core::inbound::VerificationError */ SnowbridgeCoreInboundVerificationError: { _enum: ["HeaderNotFound", "LogNotFound", "InvalidLog", "InvalidProof", "InvalidExecutionProof"], }, - /** Lookup845: snowbridge_pallet_inbound_queue::pallet::SendError */ + /** Lookup848: snowbridge_pallet_inbound_queue::pallet::SendError */ SnowbridgePalletInboundQueueSendError: { _enum: [ "NotApplicable", @@ -6573,25 +6588,10 @@ export default { "Fees", ], }, - /** Lookup846: snowbridge_router_primitives::inbound::ConvertMessageError */ + /** Lookup849: snowbridge_router_primitives::inbound::ConvertMessageError */ SnowbridgeRouterPrimitivesInboundConvertMessageError: { _enum: ["UnsupportedVersion", "InvalidDestination", "InvalidToken", "UnsupportedFeeAsset", "CannotReanchor"], }, - /** Lookup848: snowbridge_pallet_outbound_queue::types::CommittedMessage */ - SnowbridgePalletOutboundQueueCommittedMessage: { - channelId: "SnowbridgeCoreChannelId", - nonce: "Compact", - command: "u8", - params: "Bytes", - maxDispatchGas: "Compact", - maxFeePerGas: "Compact", - reward: "Compact", - id: "H256", - }, - /** Lookup849: snowbridge_pallet_outbound_queue::pallet::Error */ - SnowbridgePalletOutboundQueueError: { - _enum: ["MessageTooLarge", "Halted", "InvalidChannel"], - }, /** Lookup850: snowbridge_core::Channel */ SnowbridgeCoreChannel: { agentId: "H256", diff --git a/typescript-api/src/dancelight/interfaces/types-lookup.ts b/typescript-api/src/dancelight/interfaces/types-lookup.ts index 34eb03773..f1edc4be4 100644 --- a/typescript-api/src/dancelight/interfaces/types-lookup.ts +++ b/typescript-api/src/dancelight/interfaces/types-lookup.ts @@ -691,7 +691,37 @@ declare module "@polkadot/types/lookup" { readonly type: "SlashReported"; } - /** @name PalletSessionEvent (60) */ + /** @name SnowbridgePalletOutboundQueueEvent (60) */ + interface SnowbridgePalletOutboundQueueEvent extends Enum { + readonly isMessageQueued: boolean; + readonly asMessageQueued: { + readonly id: H256; + } & Struct; + readonly isMessageAccepted: boolean; + readonly asMessageAccepted: { + readonly id: H256; + readonly nonce: u64; + } & Struct; + readonly isMessagesCommitted: boolean; + readonly asMessagesCommitted: { + readonly root: H256; + readonly count: u64; + } & Struct; + readonly isOperatingModeChanged: boolean; + readonly asOperatingModeChanged: { + readonly mode: SnowbridgeCoreOperatingModeBasicOperatingMode; + } & Struct; + readonly type: "MessageQueued" | "MessageAccepted" | "MessagesCommitted" | "OperatingModeChanged"; + } + + /** @name SnowbridgeCoreOperatingModeBasicOperatingMode (61) */ + interface SnowbridgeCoreOperatingModeBasicOperatingMode extends Enum { + readonly isNormal: boolean; + readonly isHalted: boolean; + readonly type: "Normal" | "Halted"; + } + + /** @name PalletSessionEvent (62) */ interface PalletSessionEvent extends Enum { readonly isNewSession: boolean; readonly asNewSession: { @@ -700,7 +730,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewSession"; } - /** @name PalletGrandpaEvent (61) */ + /** @name PalletGrandpaEvent (63) */ interface PalletGrandpaEvent extends Enum { readonly isNewAuthorities: boolean; readonly asNewAuthorities: { @@ -711,10 +741,10 @@ declare module "@polkadot/types/lookup" { readonly type: "NewAuthorities" | "Paused" | "Resumed"; } - /** @name SpConsensusGrandpaAppPublic (64) */ + /** @name SpConsensusGrandpaAppPublic (66) */ interface SpConsensusGrandpaAppPublic extends U8aFixed {} - /** @name PalletInflationRewardsEvent (65) */ + /** @name PalletInflationRewardsEvent (67) */ interface PalletInflationRewardsEvent extends Enum { readonly isRewardedOrchestrator: boolean; readonly asRewardedOrchestrator: { @@ -730,7 +760,7 @@ declare module "@polkadot/types/lookup" { readonly type: "RewardedOrchestrator" | "RewardedContainer"; } - /** @name PalletPooledStakingEvent (66) */ + /** @name PalletPooledStakingEvent (68) */ interface PalletPooledStakingEvent extends Enum { readonly isUpdatedCandidatePosition: boolean; readonly asUpdatedCandidatePosition: { @@ -855,14 +885,14 @@ declare module "@polkadot/types/lookup" { | "SwappedPool"; } - /** @name PalletPooledStakingTargetPool (68) */ + /** @name PalletPooledStakingTargetPool (70) */ interface PalletPooledStakingTargetPool extends Enum { readonly isAutoCompounding: boolean; readonly isManualRewards: boolean; readonly type: "AutoCompounding" | "ManualRewards"; } - /** @name PalletTreasuryEvent (69) */ + /** @name PalletTreasuryEvent (71) */ interface PalletTreasuryEvent extends Enum { readonly isSpending: boolean; readonly asSpending: { @@ -939,7 +969,7 @@ declare module "@polkadot/types/lookup" { | "SpendProcessed"; } - /** @name PalletConvictionVotingEvent (71) */ + /** @name PalletConvictionVotingEvent (73) */ interface PalletConvictionVotingEvent extends Enum { readonly isDelegated: boolean; readonly asDelegated: ITuple<[AccountId32, AccountId32]>; @@ -958,7 +988,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Delegated" | "Undelegated" | "Voted" | "VoteRemoved"; } - /** @name PalletConvictionVotingVoteAccountVote (72) */ + /** @name PalletConvictionVotingVoteAccountVote (74) */ interface PalletConvictionVotingVoteAccountVote extends Enum { readonly isStandard: boolean; readonly asStandard: { @@ -979,7 +1009,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Standard" | "Split" | "SplitAbstain"; } - /** @name PalletReferendaEvent (74) */ + /** @name PalletReferendaEvent (76) */ interface PalletReferendaEvent extends Enum { readonly isSubmitted: boolean; readonly asSubmitted: { @@ -1083,7 +1113,7 @@ declare module "@polkadot/types/lookup" { | "MetadataCleared"; } - /** @name FrameSupportPreimagesBounded (76) */ + /** @name FrameSupportPreimagesBounded (78) */ interface FrameSupportPreimagesBounded extends Enum { readonly isLegacy: boolean; readonly asLegacy: { @@ -1099,7 +1129,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Legacy" | "Inline" | "Lookup"; } - /** @name FrameSystemCall (78) */ + /** @name FrameSystemCall (80) */ interface FrameSystemCall extends Enum { readonly isRemark: boolean; readonly asRemark: { @@ -1160,7 +1190,7 @@ declare module "@polkadot/types/lookup" { | "ApplyAuthorizedUpgrade"; } - /** @name PalletBabeCall (82) */ + /** @name PalletBabeCall (84) */ interface PalletBabeCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -1179,7 +1209,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ReportEquivocation" | "ReportEquivocationUnsigned" | "PlanConfigChange"; } - /** @name SpConsensusSlotsEquivocationProof (83) */ + /** @name SpConsensusSlotsEquivocationProof (85) */ interface SpConsensusSlotsEquivocationProof extends Struct { readonly offender: SpConsensusBabeAppPublic; readonly slot: u64; @@ -1187,7 +1217,7 @@ declare module "@polkadot/types/lookup" { readonly secondHeader: SpRuntimeHeader; } - /** @name SpRuntimeHeader (84) */ + /** @name SpRuntimeHeader (86) */ interface SpRuntimeHeader extends Struct { readonly parentHash: H256; readonly number: Compact; @@ -1196,17 +1226,17 @@ declare module "@polkadot/types/lookup" { readonly digest: SpRuntimeDigest; } - /** @name SpConsensusBabeAppPublic (86) */ + /** @name SpConsensusBabeAppPublic (88) */ interface SpConsensusBabeAppPublic extends U8aFixed {} - /** @name SpSessionMembershipProof (87) */ + /** @name SpSessionMembershipProof (89) */ interface SpSessionMembershipProof extends Struct { readonly session: u32; readonly trieNodes: Vec; readonly validatorCount: u32; } - /** @name SpConsensusBabeDigestsNextConfigDescriptor (88) */ + /** @name SpConsensusBabeDigestsNextConfigDescriptor (90) */ interface SpConsensusBabeDigestsNextConfigDescriptor extends Enum { readonly isV1: boolean; readonly asV1: { @@ -1216,7 +1246,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V1"; } - /** @name SpConsensusBabeAllowedSlots (90) */ + /** @name SpConsensusBabeAllowedSlots (92) */ interface SpConsensusBabeAllowedSlots extends Enum { readonly isPrimarySlots: boolean; readonly isPrimaryAndSecondaryPlainSlots: boolean; @@ -1224,7 +1254,7 @@ declare module "@polkadot/types/lookup" { readonly type: "PrimarySlots" | "PrimaryAndSecondaryPlainSlots" | "PrimaryAndSecondaryVRFSlots"; } - /** @name PalletTimestampCall (91) */ + /** @name PalletTimestampCall (93) */ interface PalletTimestampCall extends Enum { readonly isSet: boolean; readonly asSet: { @@ -1233,7 +1263,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Set"; } - /** @name PalletBalancesCall (92) */ + /** @name PalletBalancesCall (94) */ interface PalletBalancesCall extends Enum { readonly isTransferAllowDeath: boolean; readonly asTransferAllowDeath: { @@ -1292,14 +1322,14 @@ declare module "@polkadot/types/lookup" { | "Burn"; } - /** @name PalletBalancesAdjustmentDirection (98) */ + /** @name PalletBalancesAdjustmentDirection (100) */ interface PalletBalancesAdjustmentDirection extends Enum { readonly isIncrease: boolean; readonly isDecrease: boolean; readonly type: "Increase" | "Decrease"; } - /** @name PalletParametersCall (99) */ + /** @name PalletParametersCall (101) */ interface PalletParametersCall extends Enum { readonly isSetParameter: boolean; readonly asSetParameter: { @@ -1308,14 +1338,14 @@ declare module "@polkadot/types/lookup" { readonly type: "SetParameter"; } - /** @name DancelightRuntimeRuntimeParameters (100) */ + /** @name DancelightRuntimeRuntimeParameters (102) */ interface DancelightRuntimeRuntimeParameters extends Enum { readonly isPreimage: boolean; readonly asPreimage: DancelightRuntimeDynamicParamsPreimageParameters; readonly type: "Preimage"; } - /** @name DancelightRuntimeDynamicParamsPreimageParameters (101) */ + /** @name DancelightRuntimeDynamicParamsPreimageParameters (103) */ interface DancelightRuntimeDynamicParamsPreimageParameters extends Enum { readonly isBaseDeposit: boolean; readonly asBaseDeposit: ITuple<[DancelightRuntimeDynamicParamsPreimageBaseDeposit, Option]>; @@ -1324,7 +1354,7 @@ declare module "@polkadot/types/lookup" { readonly type: "BaseDeposit" | "ByteDeposit"; } - /** @name PalletRegistrarCall (102) */ + /** @name PalletRegistrarCall (104) */ interface PalletRegistrarCall extends Enum { readonly isRegister: boolean; readonly asRegister: { @@ -1394,7 +1424,7 @@ declare module "@polkadot/types/lookup" { | "DeregisterWithRelayProof"; } - /** @name DpContainerChainGenesisDataContainerChainGenesisData (103) */ + /** @name DpContainerChainGenesisDataContainerChainGenesisData (105) */ interface DpContainerChainGenesisDataContainerChainGenesisData extends Struct { readonly storage: Vec; readonly name: Bytes; @@ -1404,42 +1434,42 @@ declare module "@polkadot/types/lookup" { readonly properties: DpContainerChainGenesisDataProperties; } - /** @name DpContainerChainGenesisDataContainerChainGenesisDataItem (105) */ + /** @name DpContainerChainGenesisDataContainerChainGenesisDataItem (107) */ interface DpContainerChainGenesisDataContainerChainGenesisDataItem extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name DpContainerChainGenesisDataProperties (107) */ + /** @name DpContainerChainGenesisDataProperties (109) */ interface DpContainerChainGenesisDataProperties extends Struct { readonly tokenMetadata: DpContainerChainGenesisDataTokenMetadata; readonly isEthereum: bool; } - /** @name DpContainerChainGenesisDataTokenMetadata (108) */ + /** @name DpContainerChainGenesisDataTokenMetadata (110) */ interface DpContainerChainGenesisDataTokenMetadata extends Struct { readonly tokenSymbol: Bytes; readonly ss58Format: u32; readonly tokenDecimals: u32; } - /** @name TpTraitsSlotFrequency (112) */ + /** @name TpTraitsSlotFrequency (114) */ interface TpTraitsSlotFrequency extends Struct { readonly min: u32; readonly max: u32; } - /** @name TpTraitsParathreadParams (114) */ + /** @name TpTraitsParathreadParams (116) */ interface TpTraitsParathreadParams extends Struct { readonly slotFrequency: TpTraitsSlotFrequency; } - /** @name SpTrieStorageProof (115) */ + /** @name SpTrieStorageProof (117) */ interface SpTrieStorageProof extends Struct { readonly trieNodes: BTreeSet; } - /** @name SpRuntimeMultiSignature (117) */ + /** @name SpRuntimeMultiSignature (119) */ interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: U8aFixed; @@ -1450,7 +1480,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ed25519" | "Sr25519" | "Ecdsa"; } - /** @name PalletConfigurationCall (120) */ + /** @name PalletConfigurationCall (122) */ interface PalletConfigurationCall extends Enum { readonly isSetMaxCollators: boolean; readonly asSetMaxCollators: { @@ -1512,7 +1542,7 @@ declare module "@polkadot/types/lookup" { | "SetBypassConsistencyCheck"; } - /** @name PalletInvulnerablesCall (123) */ + /** @name PalletInvulnerablesCall (125) */ interface PalletInvulnerablesCall extends Enum { readonly isAddInvulnerable: boolean; readonly asAddInvulnerable: { @@ -1525,13 +1555,13 @@ declare module "@polkadot/types/lookup" { readonly type: "AddInvulnerable" | "RemoveInvulnerable"; } - /** @name PalletCollatorAssignmentCall (124) */ + /** @name PalletCollatorAssignmentCall (126) */ type PalletCollatorAssignmentCall = Null; - /** @name PalletAuthorityAssignmentCall (125) */ + /** @name PalletAuthorityAssignmentCall (127) */ type PalletAuthorityAssignmentCall = Null; - /** @name PalletAuthorNotingCall (126) */ + /** @name PalletAuthorNotingCall (128) */ interface PalletAuthorNotingCall extends Enum { readonly isSetLatestAuthorData: boolean; readonly asSetLatestAuthorData: { @@ -1551,7 +1581,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SetLatestAuthorData" | "SetAuthor" | "KillAuthorData"; } - /** @name PalletServicesPaymentCall (127) */ + /** @name PalletServicesPaymentCall (129) */ interface PalletServicesPaymentCall extends Enum { readonly isPurchaseCredits: boolean; readonly asPurchaseCredits: { @@ -1598,7 +1628,7 @@ declare module "@polkadot/types/lookup" { | "SetMaxTip"; } - /** @name PalletDataPreserversCall (128) */ + /** @name PalletDataPreserversCall (130) */ interface PalletDataPreserversCall extends Enum { readonly isCreateProfile: boolean; readonly asCreateProfile: { @@ -1656,7 +1686,7 @@ declare module "@polkadot/types/lookup" { | "ForceStartAssignment"; } - /** @name PalletDataPreserversProfile (129) */ + /** @name PalletDataPreserversProfile (131) */ interface PalletDataPreserversProfile extends Struct { readonly url: Bytes; readonly paraIds: PalletDataPreserversParaIdsFilter; @@ -1664,7 +1694,7 @@ declare module "@polkadot/types/lookup" { readonly assignmentRequest: DancelightRuntimePreserversAssignmentPaymentRequest; } - /** @name PalletDataPreserversParaIdsFilter (131) */ + /** @name PalletDataPreserversParaIdsFilter (133) */ interface PalletDataPreserversParaIdsFilter extends Enum { readonly isAnyParaId: boolean; readonly isWhitelist: boolean; @@ -1674,7 +1704,7 @@ declare module "@polkadot/types/lookup" { readonly type: "AnyParaId" | "Whitelist" | "Blacklist"; } - /** @name PalletDataPreserversProfileMode (135) */ + /** @name PalletDataPreserversProfileMode (137) */ interface PalletDataPreserversProfileMode extends Enum { readonly isBootnode: boolean; readonly isRpc: boolean; @@ -1684,25 +1714,25 @@ declare module "@polkadot/types/lookup" { readonly type: "Bootnode" | "Rpc"; } - /** @name DancelightRuntimePreserversAssignmentPaymentRequest (136) */ + /** @name DancelightRuntimePreserversAssignmentPaymentRequest (138) */ interface DancelightRuntimePreserversAssignmentPaymentRequest extends Enum { readonly isFree: boolean; readonly type: "Free"; } - /** @name DancelightRuntimePreserversAssignmentPaymentExtra (137) */ + /** @name DancelightRuntimePreserversAssignmentPaymentExtra (139) */ interface DancelightRuntimePreserversAssignmentPaymentExtra extends Enum { readonly isFree: boolean; readonly type: "Free"; } - /** @name DancelightRuntimePreserversAssignmentPaymentWitness (138) */ + /** @name DancelightRuntimePreserversAssignmentPaymentWitness (140) */ interface DancelightRuntimePreserversAssignmentPaymentWitness extends Enum { readonly isFree: boolean; readonly type: "Free"; } - /** @name PalletExternalValidatorsCall (139) */ + /** @name PalletExternalValidatorsCall (141) */ interface PalletExternalValidatorsCall extends Enum { readonly isSkipExternalValidators: boolean; readonly asSkipExternalValidators: { @@ -1723,7 +1753,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SkipExternalValidators" | "AddWhitelisted" | "RemoveWhitelisted" | "ForceEra"; } - /** @name PalletExternalValidatorSlashesCall (140) */ + /** @name PalletExternalValidatorSlashesCall (142) */ interface PalletExternalValidatorSlashesCall extends Enum { readonly isCancelDeferredSlash: boolean; readonly asCancelDeferredSlash: { @@ -1745,7 +1775,16 @@ declare module "@polkadot/types/lookup" { readonly type: "CancelDeferredSlash" | "ForceInjectSlash" | "RootTestSendMsgToEth"; } - /** @name PalletSessionCall (142) */ + /** @name SnowbridgePalletOutboundQueueCall (144) */ + interface SnowbridgePalletOutboundQueueCall extends Enum { + readonly isSetOperatingMode: boolean; + readonly asSetOperatingMode: { + readonly mode: SnowbridgeCoreOperatingModeBasicOperatingMode; + } & Struct; + readonly type: "SetOperatingMode"; + } + + /** @name PalletSessionCall (145) */ interface PalletSessionCall extends Enum { readonly isSetKeys: boolean; readonly asSetKeys: { @@ -1756,7 +1795,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SetKeys" | "PurgeKeys"; } - /** @name DancelightRuntimeSessionKeys (143) */ + /** @name DancelightRuntimeSessionKeys (146) */ interface DancelightRuntimeSessionKeys extends Struct { readonly grandpa: SpConsensusGrandpaAppPublic; readonly babe: SpConsensusBabeAppPublic; @@ -1767,22 +1806,22 @@ declare module "@polkadot/types/lookup" { readonly nimbus: NimbusPrimitivesNimbusCryptoPublic; } - /** @name PolkadotPrimitivesV8ValidatorAppPublic (144) */ + /** @name PolkadotPrimitivesV8ValidatorAppPublic (147) */ interface PolkadotPrimitivesV8ValidatorAppPublic extends U8aFixed {} - /** @name PolkadotPrimitivesV8AssignmentAppPublic (145) */ + /** @name PolkadotPrimitivesV8AssignmentAppPublic (148) */ interface PolkadotPrimitivesV8AssignmentAppPublic extends U8aFixed {} - /** @name SpAuthorityDiscoveryAppPublic (146) */ + /** @name SpAuthorityDiscoveryAppPublic (149) */ interface SpAuthorityDiscoveryAppPublic extends U8aFixed {} - /** @name SpConsensusBeefyEcdsaCryptoPublic (147) */ + /** @name SpConsensusBeefyEcdsaCryptoPublic (150) */ interface SpConsensusBeefyEcdsaCryptoPublic extends U8aFixed {} - /** @name NimbusPrimitivesNimbusCryptoPublic (149) */ + /** @name NimbusPrimitivesNimbusCryptoPublic (152) */ interface NimbusPrimitivesNimbusCryptoPublic extends U8aFixed {} - /** @name PalletGrandpaCall (150) */ + /** @name PalletGrandpaCall (153) */ interface PalletGrandpaCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -1802,13 +1841,13 @@ declare module "@polkadot/types/lookup" { readonly type: "ReportEquivocation" | "ReportEquivocationUnsigned" | "NoteStalled"; } - /** @name SpConsensusGrandpaEquivocationProof (151) */ + /** @name SpConsensusGrandpaEquivocationProof (154) */ interface SpConsensusGrandpaEquivocationProof extends Struct { readonly setId: u64; readonly equivocation: SpConsensusGrandpaEquivocation; } - /** @name SpConsensusGrandpaEquivocation (152) */ + /** @name SpConsensusGrandpaEquivocation (155) */ interface SpConsensusGrandpaEquivocation extends Enum { readonly isPrevote: boolean; readonly asPrevote: FinalityGrandpaEquivocationPrevote; @@ -1817,7 +1856,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Prevote" | "Precommit"; } - /** @name FinalityGrandpaEquivocationPrevote (153) */ + /** @name FinalityGrandpaEquivocationPrevote (156) */ interface FinalityGrandpaEquivocationPrevote extends Struct { readonly roundNumber: u64; readonly identity: SpConsensusGrandpaAppPublic; @@ -1825,16 +1864,16 @@ declare module "@polkadot/types/lookup" { readonly second: ITuple<[FinalityGrandpaPrevote, SpConsensusGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrevote (154) */ + /** @name FinalityGrandpaPrevote (157) */ interface FinalityGrandpaPrevote extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpConsensusGrandpaAppSignature (155) */ + /** @name SpConsensusGrandpaAppSignature (158) */ interface SpConsensusGrandpaAppSignature extends U8aFixed {} - /** @name FinalityGrandpaEquivocationPrecommit (157) */ + /** @name FinalityGrandpaEquivocationPrecommit (160) */ interface FinalityGrandpaEquivocationPrecommit extends Struct { readonly roundNumber: u64; readonly identity: SpConsensusGrandpaAppPublic; @@ -1842,13 +1881,13 @@ declare module "@polkadot/types/lookup" { readonly second: ITuple<[FinalityGrandpaPrecommit, SpConsensusGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrecommit (158) */ + /** @name FinalityGrandpaPrecommit (161) */ interface FinalityGrandpaPrecommit extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name PalletPooledStakingCall (160) */ + /** @name PalletPooledStakingCall (163) */ interface PalletPooledStakingCall extends Enum { readonly isRebalanceHold: boolean; readonly asRebalanceHold: { @@ -1896,7 +1935,7 @@ declare module "@polkadot/types/lookup" { | "SwapPool"; } - /** @name PalletPooledStakingAllTargetPool (161) */ + /** @name PalletPooledStakingAllTargetPool (164) */ interface PalletPooledStakingAllTargetPool extends Enum { readonly isJoining: boolean; readonly isAutoCompounding: boolean; @@ -1905,13 +1944,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Joining" | "AutoCompounding" | "ManualRewards" | "Leaving"; } - /** @name PalletPooledStakingPendingOperationQuery (163) */ + /** @name PalletPooledStakingPendingOperationQuery (166) */ interface PalletPooledStakingPendingOperationQuery extends Struct { readonly delegator: AccountId32; readonly operation: PalletPooledStakingPendingOperationKey; } - /** @name PalletPooledStakingPendingOperationKey (164) */ + /** @name PalletPooledStakingPendingOperationKey (167) */ interface PalletPooledStakingPendingOperationKey extends Enum { readonly isJoiningAutoCompounding: boolean; readonly asJoiningAutoCompounding: { @@ -1931,7 +1970,7 @@ declare module "@polkadot/types/lookup" { readonly type: "JoiningAutoCompounding" | "JoiningManualRewards" | "Leaving"; } - /** @name PalletPooledStakingSharesOrStake (165) */ + /** @name PalletPooledStakingSharesOrStake (168) */ interface PalletPooledStakingSharesOrStake extends Enum { readonly isShares: boolean; readonly asShares: u128; @@ -1940,7 +1979,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Shares" | "Stake"; } - /** @name PalletTreasuryCall (168) */ + /** @name PalletTreasuryCall (171) */ interface PalletTreasuryCall extends Enum { readonly isSpendLocal: boolean; readonly asSpendLocal: { @@ -1973,7 +2012,7 @@ declare module "@polkadot/types/lookup" { readonly type: "SpendLocal" | "RemoveApproval" | "Spend" | "Payout" | "CheckStatus" | "VoidSpend"; } - /** @name PalletConvictionVotingCall (169) */ + /** @name PalletConvictionVotingCall (172) */ interface PalletConvictionVotingCall extends Enum { readonly isVote: boolean; readonly asVote: { @@ -2010,7 +2049,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Vote" | "Delegate" | "Undelegate" | "Unlock" | "RemoveVote" | "RemoveOtherVote"; } - /** @name PalletConvictionVotingConviction (170) */ + /** @name PalletConvictionVotingConviction (173) */ interface PalletConvictionVotingConviction extends Enum { readonly isNone: boolean; readonly isLocked1x: boolean; @@ -2022,7 +2061,7 @@ declare module "@polkadot/types/lookup" { readonly type: "None" | "Locked1x" | "Locked2x" | "Locked3x" | "Locked4x" | "Locked5x" | "Locked6x"; } - /** @name PalletReferendaCall (172) */ + /** @name PalletReferendaCall (175) */ interface PalletReferendaCall extends Enum { readonly isSubmit: boolean; readonly asSubmit: { @@ -2075,7 +2114,7 @@ declare module "@polkadot/types/lookup" { | "SetMetadata"; } - /** @name DancelightRuntimeOriginCaller (173) */ + /** @name DancelightRuntimeOriginCaller (176) */ interface DancelightRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSupportDispatchRawOrigin; @@ -2089,7 +2128,7 @@ declare module "@polkadot/types/lookup" { readonly type: "System" | "Void" | "Origins" | "ParachainsOrigin" | "XcmPallet"; } - /** @name FrameSupportDispatchRawOrigin (174) */ + /** @name FrameSupportDispatchRawOrigin (177) */ interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -2098,7 +2137,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Root" | "Signed" | "None"; } - /** @name DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin (175) */ + /** @name DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin (178) */ interface DancelightRuntimeGovernanceOriginsPalletCustomOriginsOrigin extends Enum { readonly isStakingAdmin: boolean; readonly isTreasurer: boolean; @@ -2157,14 +2196,14 @@ declare module "@polkadot/types/lookup" { | "Fellowship9Dan"; } - /** @name PolkadotRuntimeParachainsOriginPalletOrigin (176) */ + /** @name PolkadotRuntimeParachainsOriginPalletOrigin (179) */ interface PolkadotRuntimeParachainsOriginPalletOrigin extends Enum { readonly isParachain: boolean; readonly asParachain: u32; readonly type: "Parachain"; } - /** @name PalletXcmOrigin (177) */ + /** @name PalletXcmOrigin (180) */ interface PalletXcmOrigin extends Enum { readonly isXcm: boolean; readonly asXcm: StagingXcmV4Location; @@ -2173,13 +2212,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Xcm" | "Response"; } - /** @name StagingXcmV4Location (178) */ + /** @name StagingXcmV4Location (181) */ interface StagingXcmV4Location extends Struct { readonly parents: u8; readonly interior: StagingXcmV4Junctions; } - /** @name StagingXcmV4Junctions (179) */ + /** @name StagingXcmV4Junctions (182) */ interface StagingXcmV4Junctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -2201,7 +2240,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name StagingXcmV4Junction (181) */ + /** @name StagingXcmV4Junction (184) */ interface StagingXcmV4Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -2250,7 +2289,7 @@ declare module "@polkadot/types/lookup" { | "GlobalConsensus"; } - /** @name StagingXcmV4JunctionNetworkId (183) */ + /** @name StagingXcmV4JunctionNetworkId (186) */ interface StagingXcmV4JunctionNetworkId extends Enum { readonly isByGenesis: boolean; readonly asByGenesis: U8aFixed; @@ -2285,7 +2324,7 @@ declare module "@polkadot/types/lookup" { | "PolkadotBulletin"; } - /** @name XcmV3JunctionBodyId (184) */ + /** @name XcmV3JunctionBodyId (187) */ interface XcmV3JunctionBodyId extends Enum { readonly isUnit: boolean; readonly isMoniker: boolean; @@ -2312,7 +2351,7 @@ declare module "@polkadot/types/lookup" { | "Treasury"; } - /** @name XcmV3JunctionBodyPart (185) */ + /** @name XcmV3JunctionBodyPart (188) */ interface XcmV3JunctionBodyPart extends Enum { readonly isVoice: boolean; readonly isMembers: boolean; @@ -2337,10 +2376,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Voice" | "Members" | "Fraction" | "AtLeastProportion" | "MoreThanProportion"; } - /** @name SpCoreVoid (193) */ + /** @name SpCoreVoid (196) */ type SpCoreVoid = Null; - /** @name FrameSupportScheduleDispatchTime (194) */ + /** @name FrameSupportScheduleDispatchTime (197) */ interface FrameSupportScheduleDispatchTime extends Enum { readonly isAt: boolean; readonly asAt: u32; @@ -2349,7 +2388,7 @@ declare module "@polkadot/types/lookup" { readonly type: "At" | "After"; } - /** @name PalletRankedCollectiveCall (196) */ + /** @name PalletRankedCollectiveCall (199) */ interface PalletRankedCollectiveCall extends Enum { readonly isAddMember: boolean; readonly asAddMember: { @@ -2393,7 +2432,7 @@ declare module "@polkadot/types/lookup" { | "ExchangeMember"; } - /** @name PalletWhitelistCall (198) */ + /** @name PalletWhitelistCall (201) */ interface PalletWhitelistCall extends Enum { readonly isWhitelistCall: boolean; readonly asWhitelistCall: { @@ -2420,7 +2459,7 @@ declare module "@polkadot/types/lookup" { | "DispatchWhitelistedCallWithPreimage"; } - /** @name PolkadotRuntimeParachainsConfigurationPalletCall (199) */ + /** @name PolkadotRuntimeParachainsConfigurationPalletCall (202) */ interface PolkadotRuntimeParachainsConfigurationPalletCall extends Enum { readonly isSetValidationUpgradeCooldown: boolean; readonly asSetValidationUpgradeCooldown: { @@ -2666,16 +2705,16 @@ declare module "@polkadot/types/lookup" { | "SetSchedulerParams"; } - /** @name PolkadotPrimitivesV8AsyncBackingAsyncBackingParams (200) */ + /** @name PolkadotPrimitivesV8AsyncBackingAsyncBackingParams (203) */ interface PolkadotPrimitivesV8AsyncBackingAsyncBackingParams extends Struct { readonly maxCandidateDepth: u32; readonly allowedAncestryLen: u32; } - /** @name PolkadotPrimitivesV8ExecutorParams (201) */ + /** @name PolkadotPrimitivesV8ExecutorParams (204) */ interface PolkadotPrimitivesV8ExecutorParams extends Vec {} - /** @name PolkadotPrimitivesV8ExecutorParamsExecutorParam (203) */ + /** @name PolkadotPrimitivesV8ExecutorParamsExecutorParam (206) */ interface PolkadotPrimitivesV8ExecutorParamsExecutorParam extends Enum { readonly isMaxMemoryPages: boolean; readonly asMaxMemoryPages: u32; @@ -2700,26 +2739,26 @@ declare module "@polkadot/types/lookup" { | "WasmExtBulkMemory"; } - /** @name PolkadotPrimitivesV8PvfPrepKind (204) */ + /** @name PolkadotPrimitivesV8PvfPrepKind (207) */ interface PolkadotPrimitivesV8PvfPrepKind extends Enum { readonly isPrecheck: boolean; readonly isPrepare: boolean; readonly type: "Precheck" | "Prepare"; } - /** @name PolkadotPrimitivesV8PvfExecKind (205) */ + /** @name PolkadotPrimitivesV8PvfExecKind (208) */ interface PolkadotPrimitivesV8PvfExecKind extends Enum { readonly isBacking: boolean; readonly isApproval: boolean; readonly type: "Backing" | "Approval"; } - /** @name PolkadotPrimitivesV8ApprovalVotingParams (206) */ + /** @name PolkadotPrimitivesV8ApprovalVotingParams (209) */ interface PolkadotPrimitivesV8ApprovalVotingParams extends Struct { readonly maxApprovalCoalesceCount: u32; } - /** @name PolkadotPrimitivesV8SchedulerParams (207) */ + /** @name PolkadotPrimitivesV8SchedulerParams (210) */ interface PolkadotPrimitivesV8SchedulerParams extends Struct { readonly groupRotationFrequency: u32; readonly parasAvailabilityPeriod: u32; @@ -2734,13 +2773,13 @@ declare module "@polkadot/types/lookup" { readonly ttl: u32; } - /** @name PolkadotRuntimeParachainsSharedPalletCall (208) */ + /** @name PolkadotRuntimeParachainsSharedPalletCall (211) */ type PolkadotRuntimeParachainsSharedPalletCall = Null; - /** @name PolkadotRuntimeParachainsInclusionPalletCall (209) */ + /** @name PolkadotRuntimeParachainsInclusionPalletCall (212) */ type PolkadotRuntimeParachainsInclusionPalletCall = Null; - /** @name PolkadotRuntimeParachainsParasInherentPalletCall (210) */ + /** @name PolkadotRuntimeParachainsParasInherentPalletCall (213) */ interface PolkadotRuntimeParachainsParasInherentPalletCall extends Enum { readonly isEnter: boolean; readonly asEnter: { @@ -2749,7 +2788,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Enter"; } - /** @name PolkadotPrimitivesV8InherentData (211) */ + /** @name PolkadotPrimitivesV8InherentData (214) */ interface PolkadotPrimitivesV8InherentData extends Struct { readonly bitfields: Vec; readonly backedCandidates: Vec; @@ -2757,33 +2796,33 @@ declare module "@polkadot/types/lookup" { readonly parentHeader: SpRuntimeHeader; } - /** @name PolkadotPrimitivesV8SignedUncheckedSigned (213) */ + /** @name PolkadotPrimitivesV8SignedUncheckedSigned (216) */ interface PolkadotPrimitivesV8SignedUncheckedSigned extends Struct { readonly payload: BitVec; readonly validatorIndex: u32; readonly signature: PolkadotPrimitivesV8ValidatorAppSignature; } - /** @name BitvecOrderLsb0 (216) */ + /** @name BitvecOrderLsb0 (219) */ type BitvecOrderLsb0 = Null; - /** @name PolkadotPrimitivesV8ValidatorAppSignature (218) */ + /** @name PolkadotPrimitivesV8ValidatorAppSignature (221) */ interface PolkadotPrimitivesV8ValidatorAppSignature extends U8aFixed {} - /** @name PolkadotPrimitivesV8BackedCandidate (220) */ + /** @name PolkadotPrimitivesV8BackedCandidate (223) */ interface PolkadotPrimitivesV8BackedCandidate extends Struct { readonly candidate: PolkadotPrimitivesV8CommittedCandidateReceipt; readonly validityVotes: Vec; readonly validatorIndices: BitVec; } - /** @name PolkadotPrimitivesV8CommittedCandidateReceipt (221) */ + /** @name PolkadotPrimitivesV8CommittedCandidateReceipt (224) */ interface PolkadotPrimitivesV8CommittedCandidateReceipt extends Struct { readonly descriptor: PolkadotPrimitivesV8CandidateDescriptor; readonly commitments: PolkadotPrimitivesV8CandidateCommitments; } - /** @name PolkadotPrimitivesV8CandidateDescriptor (222) */ + /** @name PolkadotPrimitivesV8CandidateDescriptor (225) */ interface PolkadotPrimitivesV8CandidateDescriptor extends Struct { readonly paraId: u32; readonly relayParent: H256; @@ -2796,13 +2835,13 @@ declare module "@polkadot/types/lookup" { readonly validationCodeHash: H256; } - /** @name PolkadotPrimitivesV8CollatorAppPublic (223) */ + /** @name PolkadotPrimitivesV8CollatorAppPublic (226) */ interface PolkadotPrimitivesV8CollatorAppPublic extends U8aFixed {} - /** @name PolkadotPrimitivesV8CollatorAppSignature (224) */ + /** @name PolkadotPrimitivesV8CollatorAppSignature (227) */ interface PolkadotPrimitivesV8CollatorAppSignature extends U8aFixed {} - /** @name PolkadotPrimitivesV8CandidateCommitments (226) */ + /** @name PolkadotPrimitivesV8CandidateCommitments (229) */ interface PolkadotPrimitivesV8CandidateCommitments extends Struct { readonly upwardMessages: Vec; readonly horizontalMessages: Vec; @@ -2812,13 +2851,13 @@ declare module "@polkadot/types/lookup" { readonly hrmpWatermark: u32; } - /** @name PolkadotCorePrimitivesOutboundHrmpMessage (229) */ + /** @name PolkadotCorePrimitivesOutboundHrmpMessage (232) */ interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct { readonly recipient: u32; readonly data: Bytes; } - /** @name PolkadotPrimitivesV8ValidityAttestation (234) */ + /** @name PolkadotPrimitivesV8ValidityAttestation (237) */ interface PolkadotPrimitivesV8ValidityAttestation extends Enum { readonly isImplicit: boolean; readonly asImplicit: PolkadotPrimitivesV8ValidatorAppSignature; @@ -2827,7 +2866,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Implicit" | "Explicit"; } - /** @name PolkadotPrimitivesV8DisputeStatementSet (236) */ + /** @name PolkadotPrimitivesV8DisputeStatementSet (239) */ interface PolkadotPrimitivesV8DisputeStatementSet extends Struct { readonly candidateHash: H256; readonly session: u32; @@ -2836,7 +2875,7 @@ declare module "@polkadot/types/lookup" { >; } - /** @name PolkadotPrimitivesV8DisputeStatement (240) */ + /** @name PolkadotPrimitivesV8DisputeStatement (243) */ interface PolkadotPrimitivesV8DisputeStatement extends Enum { readonly isValid: boolean; readonly asValid: PolkadotPrimitivesV8ValidDisputeStatementKind; @@ -2845,7 +2884,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Valid" | "Invalid"; } - /** @name PolkadotPrimitivesV8ValidDisputeStatementKind (241) */ + /** @name PolkadotPrimitivesV8ValidDisputeStatementKind (244) */ interface PolkadotPrimitivesV8ValidDisputeStatementKind extends Enum { readonly isExplicit: boolean; readonly isBackingSeconded: boolean; @@ -2863,13 +2902,13 @@ declare module "@polkadot/types/lookup" { | "ApprovalCheckingMultipleCandidates"; } - /** @name PolkadotPrimitivesV8InvalidDisputeStatementKind (243) */ + /** @name PolkadotPrimitivesV8InvalidDisputeStatementKind (246) */ interface PolkadotPrimitivesV8InvalidDisputeStatementKind extends Enum { readonly isExplicit: boolean; readonly type: "Explicit"; } - /** @name PolkadotRuntimeParachainsParasPalletCall (244) */ + /** @name PolkadotRuntimeParachainsParasPalletCall (247) */ interface PolkadotRuntimeParachainsParasPalletCall extends Enum { readonly isForceSetCurrentCode: boolean; readonly asForceSetCurrentCode: { @@ -2926,7 +2965,7 @@ declare module "@polkadot/types/lookup" { | "ForceSetMostRecentContext"; } - /** @name PolkadotPrimitivesV8PvfCheckStatement (245) */ + /** @name PolkadotPrimitivesV8PvfCheckStatement (248) */ interface PolkadotPrimitivesV8PvfCheckStatement extends Struct { readonly accept: bool; readonly subject: H256; @@ -2934,7 +2973,7 @@ declare module "@polkadot/types/lookup" { readonly validatorIndex: u32; } - /** @name PolkadotRuntimeParachainsInitializerPalletCall (246) */ + /** @name PolkadotRuntimeParachainsInitializerPalletCall (249) */ interface PolkadotRuntimeParachainsInitializerPalletCall extends Enum { readonly isForceApprove: boolean; readonly asForceApprove: { @@ -2943,7 +2982,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceApprove"; } - /** @name PolkadotRuntimeParachainsHrmpPalletCall (247) */ + /** @name PolkadotRuntimeParachainsHrmpPalletCall (250) */ interface PolkadotRuntimeParachainsHrmpPalletCall extends Enum { readonly isHrmpInitOpenChannel: boolean; readonly asHrmpInitOpenChannel: { @@ -3013,19 +3052,19 @@ declare module "@polkadot/types/lookup" { | "EstablishChannelWithSystem"; } - /** @name PolkadotParachainPrimitivesPrimitivesHrmpChannelId (248) */ + /** @name PolkadotParachainPrimitivesPrimitivesHrmpChannelId (251) */ interface PolkadotParachainPrimitivesPrimitivesHrmpChannelId extends Struct { readonly sender: u32; readonly recipient: u32; } - /** @name PolkadotRuntimeParachainsDisputesPalletCall (249) */ + /** @name PolkadotRuntimeParachainsDisputesPalletCall (252) */ interface PolkadotRuntimeParachainsDisputesPalletCall extends Enum { readonly isForceUnfreeze: boolean; readonly type: "ForceUnfreeze"; } - /** @name PolkadotRuntimeParachainsDisputesSlashingPalletCall (250) */ + /** @name PolkadotRuntimeParachainsDisputesSlashingPalletCall (253) */ interface PolkadotRuntimeParachainsDisputesSlashingPalletCall extends Enum { readonly isReportDisputeLostUnsigned: boolean; readonly asReportDisputeLostUnsigned: { @@ -3035,7 +3074,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ReportDisputeLostUnsigned"; } - /** @name PolkadotPrimitivesV8SlashingDisputeProof (251) */ + /** @name PolkadotPrimitivesV8SlashingDisputeProof (254) */ interface PolkadotPrimitivesV8SlashingDisputeProof extends Struct { readonly timeSlot: PolkadotPrimitivesV8SlashingDisputesTimeSlot; readonly kind: PolkadotPrimitivesV8SlashingSlashingOffenceKind; @@ -3043,20 +3082,20 @@ declare module "@polkadot/types/lookup" { readonly validatorId: PolkadotPrimitivesV8ValidatorAppPublic; } - /** @name PolkadotPrimitivesV8SlashingDisputesTimeSlot (252) */ + /** @name PolkadotPrimitivesV8SlashingDisputesTimeSlot (255) */ interface PolkadotPrimitivesV8SlashingDisputesTimeSlot extends Struct { readonly sessionIndex: u32; readonly candidateHash: H256; } - /** @name PolkadotPrimitivesV8SlashingSlashingOffenceKind (253) */ + /** @name PolkadotPrimitivesV8SlashingSlashingOffenceKind (256) */ interface PolkadotPrimitivesV8SlashingSlashingOffenceKind extends Enum { readonly isForInvalid: boolean; readonly isAgainstValid: boolean; readonly type: "ForInvalid" | "AgainstValid"; } - /** @name PalletMessageQueueCall (254) */ + /** @name PalletMessageQueueCall (257) */ interface PalletMessageQueueCall extends Enum { readonly isReapPage: boolean; readonly asReapPage: { @@ -3073,7 +3112,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ReapPage" | "ExecuteOverweight"; } - /** @name DancelightRuntimeAggregateMessageOrigin (255) */ + /** @name DancelightRuntimeAggregateMessageOrigin (258) */ interface DancelightRuntimeAggregateMessageOrigin extends Enum { readonly isUmp: boolean; readonly asUmp: PolkadotRuntimeParachainsInclusionUmpQueueId; @@ -3084,17 +3123,17 @@ declare module "@polkadot/types/lookup" { readonly type: "Ump" | "Snowbridge" | "SnowbridgeTanssi"; } - /** @name PolkadotRuntimeParachainsInclusionUmpQueueId (256) */ + /** @name PolkadotRuntimeParachainsInclusionUmpQueueId (259) */ interface PolkadotRuntimeParachainsInclusionUmpQueueId extends Enum { readonly isPara: boolean; readonly asPara: u32; readonly type: "Para"; } - /** @name SnowbridgeCoreChannelId (257) */ + /** @name SnowbridgeCoreChannelId (260) */ interface SnowbridgeCoreChannelId extends U8aFixed {} - /** @name PolkadotRuntimeParachainsOnDemandPalletCall (258) */ + /** @name PolkadotRuntimeParachainsOnDemandPalletCall (261) */ interface PolkadotRuntimeParachainsOnDemandPalletCall extends Enum { readonly isPlaceOrderAllowDeath: boolean; readonly asPlaceOrderAllowDeath: { @@ -3109,7 +3148,7 @@ declare module "@polkadot/types/lookup" { readonly type: "PlaceOrderAllowDeath" | "PlaceOrderKeepAlive"; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletCall (259) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletCall (262) */ interface PolkadotRuntimeCommonParasRegistrarPalletCall extends Enum { readonly isRegister: boolean; readonly asRegister: { @@ -3165,7 +3204,7 @@ declare module "@polkadot/types/lookup" { | "SetCurrentHead"; } - /** @name PalletUtilityCall (260) */ + /** @name PalletUtilityCall (263) */ interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -3197,7 +3236,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Batch" | "AsDerivative" | "BatchAll" | "DispatchAs" | "ForceBatch" | "WithWeight"; } - /** @name PalletIdentityCall (262) */ + /** @name PalletIdentityCall (265) */ interface PalletIdentityCall extends Enum { readonly isAddRegistrar: boolean; readonly asAddRegistrar: { @@ -3319,7 +3358,7 @@ declare module "@polkadot/types/lookup" { | "RemoveDanglingUsername"; } - /** @name PalletIdentityLegacyIdentityInfo (263) */ + /** @name PalletIdentityLegacyIdentityInfo (266) */ interface PalletIdentityLegacyIdentityInfo extends Struct { readonly additional: Vec>; readonly display: Data; @@ -3332,7 +3371,7 @@ declare module "@polkadot/types/lookup" { readonly twitter: Data; } - /** @name PalletIdentityJudgement (300) */ + /** @name PalletIdentityJudgement (303) */ interface PalletIdentityJudgement extends Enum { readonly isUnknown: boolean; readonly isFeePaid: boolean; @@ -3345,7 +3384,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unknown" | "FeePaid" | "Reasonable" | "KnownGood" | "OutOfDate" | "LowQuality" | "Erroneous"; } - /** @name PalletSchedulerCall (303) */ + /** @name PalletSchedulerCall (306) */ interface PalletSchedulerCall extends Enum { readonly isSchedule: boolean; readonly asSchedule: { @@ -3419,7 +3458,7 @@ declare module "@polkadot/types/lookup" { | "CancelRetryNamed"; } - /** @name PalletProxyCall (306) */ + /** @name PalletProxyCall (309) */ interface PalletProxyCall extends Enum { readonly isProxy: boolean; readonly asProxy: { @@ -3489,7 +3528,7 @@ declare module "@polkadot/types/lookup" { | "ProxyAnnounced"; } - /** @name DancelightRuntimeProxyType (308) */ + /** @name DancelightRuntimeProxyType (311) */ interface DancelightRuntimeProxyType extends Enum { readonly isAny: boolean; readonly isNonTransfer: boolean; @@ -3516,7 +3555,7 @@ declare module "@polkadot/types/lookup" { | "Staking"; } - /** @name PalletMultisigCall (309) */ + /** @name PalletMultisigCall (312) */ interface PalletMultisigCall extends Enum { readonly isAsMultiThreshold1: boolean; readonly asAsMultiThreshold1: { @@ -3549,13 +3588,13 @@ declare module "@polkadot/types/lookup" { readonly type: "AsMultiThreshold1" | "AsMulti" | "ApproveAsMulti" | "CancelAsMulti"; } - /** @name PalletMultisigTimepoint (311) */ + /** @name PalletMultisigTimepoint (314) */ interface PalletMultisigTimepoint extends Struct { readonly height: u32; readonly index: u32; } - /** @name PalletPreimageCall (312) */ + /** @name PalletPreimageCall (315) */ interface PalletPreimageCall extends Enum { readonly isNotePreimage: boolean; readonly asNotePreimage: { @@ -3580,7 +3619,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NotePreimage" | "UnnotePreimage" | "RequestPreimage" | "UnrequestPreimage" | "EnsureUpdated"; } - /** @name PalletAssetRateCall (314) */ + /** @name PalletAssetRateCall (317) */ interface PalletAssetRateCall extends Enum { readonly isCreate: boolean; readonly asCreate: { @@ -3599,7 +3638,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Create" | "Update" | "Remove"; } - /** @name PalletXcmCall (316) */ + /** @name PalletXcmCall (319) */ interface PalletXcmCall extends Enum { readonly isSend: boolean; readonly asSend: { @@ -3702,7 +3741,7 @@ declare module "@polkadot/types/lookup" { | "TransferAssetsUsingTypeAndThen"; } - /** @name XcmVersionedLocation (317) */ + /** @name XcmVersionedLocation (320) */ interface XcmVersionedLocation extends Enum { readonly isV2: boolean; readonly asV2: XcmV2MultiLocation; @@ -3713,13 +3752,13 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name XcmV2MultiLocation (318) */ + /** @name XcmV2MultiLocation (321) */ interface XcmV2MultiLocation extends Struct { readonly parents: u8; readonly interior: XcmV2MultilocationJunctions; } - /** @name XcmV2MultilocationJunctions (319) */ + /** @name XcmV2MultilocationJunctions (322) */ interface XcmV2MultilocationJunctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -3756,7 +3795,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name XcmV2Junction (320) */ + /** @name XcmV2Junction (323) */ interface XcmV2Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -3799,7 +3838,7 @@ declare module "@polkadot/types/lookup" { | "Plurality"; } - /** @name XcmV2NetworkId (321) */ + /** @name XcmV2NetworkId (324) */ interface XcmV2NetworkId extends Enum { readonly isAny: boolean; readonly isNamed: boolean; @@ -3809,7 +3848,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Any" | "Named" | "Polkadot" | "Kusama"; } - /** @name XcmV2BodyId (323) */ + /** @name XcmV2BodyId (326) */ interface XcmV2BodyId extends Enum { readonly isUnit: boolean; readonly isNamed: boolean; @@ -3836,7 +3875,7 @@ declare module "@polkadot/types/lookup" { | "Treasury"; } - /** @name XcmV2BodyPart (324) */ + /** @name XcmV2BodyPart (327) */ interface XcmV2BodyPart extends Enum { readonly isVoice: boolean; readonly isMembers: boolean; @@ -3861,13 +3900,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Voice" | "Members" | "Fraction" | "AtLeastProportion" | "MoreThanProportion"; } - /** @name StagingXcmV3MultiLocation (325) */ + /** @name StagingXcmV3MultiLocation (328) */ interface StagingXcmV3MultiLocation extends Struct { readonly parents: u8; readonly interior: XcmV3Junctions; } - /** @name XcmV3Junctions (326) */ + /** @name XcmV3Junctions (329) */ interface XcmV3Junctions extends Enum { readonly isHere: boolean; readonly isX1: boolean; @@ -3904,7 +3943,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Here" | "X1" | "X2" | "X3" | "X4" | "X5" | "X6" | "X7" | "X8"; } - /** @name XcmV3Junction (327) */ + /** @name XcmV3Junction (330) */ interface XcmV3Junction extends Enum { readonly isParachain: boolean; readonly asParachain: Compact; @@ -3953,7 +3992,7 @@ declare module "@polkadot/types/lookup" { | "GlobalConsensus"; } - /** @name XcmV3JunctionNetworkId (329) */ + /** @name XcmV3JunctionNetworkId (332) */ interface XcmV3JunctionNetworkId extends Enum { readonly isByGenesis: boolean; readonly asByGenesis: U8aFixed; @@ -3988,7 +4027,7 @@ declare module "@polkadot/types/lookup" { | "PolkadotBulletin"; } - /** @name XcmVersionedXcm (330) */ + /** @name XcmVersionedXcm (333) */ interface XcmVersionedXcm extends Enum { readonly isV2: boolean; readonly asV2: XcmV2Xcm; @@ -3999,10 +4038,10 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name XcmV2Xcm (331) */ + /** @name XcmV2Xcm (334) */ interface XcmV2Xcm extends Vec {} - /** @name XcmV2Instruction (333) */ + /** @name XcmV2Instruction (336) */ interface XcmV2Instruction extends Enum { readonly isWithdrawAsset: boolean; readonly asWithdrawAsset: XcmV2MultiassetMultiAssets; @@ -4150,16 +4189,16 @@ declare module "@polkadot/types/lookup" { | "UnsubscribeVersion"; } - /** @name XcmV2MultiassetMultiAssets (334) */ + /** @name XcmV2MultiassetMultiAssets (337) */ interface XcmV2MultiassetMultiAssets extends Vec {} - /** @name XcmV2MultiAsset (336) */ + /** @name XcmV2MultiAsset (339) */ interface XcmV2MultiAsset extends Struct { readonly id: XcmV2MultiassetAssetId; readonly fun: XcmV2MultiassetFungibility; } - /** @name XcmV2MultiassetAssetId (337) */ + /** @name XcmV2MultiassetAssetId (340) */ interface XcmV2MultiassetAssetId extends Enum { readonly isConcrete: boolean; readonly asConcrete: XcmV2MultiLocation; @@ -4168,7 +4207,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Concrete" | "Abstract"; } - /** @name XcmV2MultiassetFungibility (338) */ + /** @name XcmV2MultiassetFungibility (341) */ interface XcmV2MultiassetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -4177,7 +4216,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV2MultiassetAssetInstance (339) */ + /** @name XcmV2MultiassetAssetInstance (342) */ interface XcmV2MultiassetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -4195,7 +4234,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32" | "Blob"; } - /** @name XcmV2Response (340) */ + /** @name XcmV2Response (343) */ interface XcmV2Response extends Enum { readonly isNull: boolean; readonly isAssets: boolean; @@ -4207,7 +4246,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Null" | "Assets" | "ExecutionResult" | "Version"; } - /** @name XcmV2TraitsError (343) */ + /** @name XcmV2TraitsError (346) */ interface XcmV2TraitsError extends Enum { readonly isOverflow: boolean; readonly isUnimplemented: boolean; @@ -4266,7 +4305,7 @@ declare module "@polkadot/types/lookup" { | "WeightNotComputable"; } - /** @name XcmV2OriginKind (344) */ + /** @name XcmV2OriginKind (347) */ interface XcmV2OriginKind extends Enum { readonly isNative: boolean; readonly isSovereignAccount: boolean; @@ -4275,12 +4314,12 @@ declare module "@polkadot/types/lookup" { readonly type: "Native" | "SovereignAccount" | "Superuser" | "Xcm"; } - /** @name XcmDoubleEncoded (345) */ + /** @name XcmDoubleEncoded (348) */ interface XcmDoubleEncoded extends Struct { readonly encoded: Bytes; } - /** @name XcmV2MultiassetMultiAssetFilter (346) */ + /** @name XcmV2MultiassetMultiAssetFilter (349) */ interface XcmV2MultiassetMultiAssetFilter extends Enum { readonly isDefinite: boolean; readonly asDefinite: XcmV2MultiassetMultiAssets; @@ -4289,7 +4328,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Definite" | "Wild"; } - /** @name XcmV2MultiassetWildMultiAsset (347) */ + /** @name XcmV2MultiassetWildMultiAsset (350) */ interface XcmV2MultiassetWildMultiAsset extends Enum { readonly isAll: boolean; readonly isAllOf: boolean; @@ -4300,14 +4339,14 @@ declare module "@polkadot/types/lookup" { readonly type: "All" | "AllOf"; } - /** @name XcmV2MultiassetWildFungibility (348) */ + /** @name XcmV2MultiassetWildFungibility (351) */ interface XcmV2MultiassetWildFungibility extends Enum { readonly isFungible: boolean; readonly isNonFungible: boolean; readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV2WeightLimit (349) */ + /** @name XcmV2WeightLimit (352) */ interface XcmV2WeightLimit extends Enum { readonly isUnlimited: boolean; readonly isLimited: boolean; @@ -4315,10 +4354,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Unlimited" | "Limited"; } - /** @name XcmV3Xcm (350) */ + /** @name XcmV3Xcm (353) */ interface XcmV3Xcm extends Vec {} - /** @name XcmV3Instruction (352) */ + /** @name XcmV3Instruction (355) */ interface XcmV3Instruction extends Enum { readonly isWithdrawAsset: boolean; readonly asWithdrawAsset: XcmV3MultiassetMultiAssets; @@ -4548,16 +4587,16 @@ declare module "@polkadot/types/lookup" { | "UnpaidExecution"; } - /** @name XcmV3MultiassetMultiAssets (353) */ + /** @name XcmV3MultiassetMultiAssets (356) */ interface XcmV3MultiassetMultiAssets extends Vec {} - /** @name XcmV3MultiAsset (355) */ + /** @name XcmV3MultiAsset (358) */ interface XcmV3MultiAsset extends Struct { readonly id: XcmV3MultiassetAssetId; readonly fun: XcmV3MultiassetFungibility; } - /** @name XcmV3MultiassetAssetId (356) */ + /** @name XcmV3MultiassetAssetId (359) */ interface XcmV3MultiassetAssetId extends Enum { readonly isConcrete: boolean; readonly asConcrete: StagingXcmV3MultiLocation; @@ -4566,7 +4605,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Concrete" | "Abstract"; } - /** @name XcmV3MultiassetFungibility (357) */ + /** @name XcmV3MultiassetFungibility (360) */ interface XcmV3MultiassetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -4575,7 +4614,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV3MultiassetAssetInstance (358) */ + /** @name XcmV3MultiassetAssetInstance (361) */ interface XcmV3MultiassetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -4591,7 +4630,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32"; } - /** @name XcmV3Response (359) */ + /** @name XcmV3Response (362) */ interface XcmV3Response extends Enum { readonly isNull: boolean; readonly isAssets: boolean; @@ -4607,7 +4646,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Null" | "Assets" | "ExecutionResult" | "Version" | "PalletsInfo" | "DispatchResult"; } - /** @name XcmV3TraitsError (362) */ + /** @name XcmV3TraitsError (365) */ interface XcmV3TraitsError extends Enum { readonly isOverflow: boolean; readonly isUnimplemented: boolean; @@ -4694,7 +4733,7 @@ declare module "@polkadot/types/lookup" { | "ExceedsStackLimit"; } - /** @name XcmV3PalletInfo (364) */ + /** @name XcmV3PalletInfo (367) */ interface XcmV3PalletInfo extends Struct { readonly index: Compact; readonly name: Bytes; @@ -4704,7 +4743,7 @@ declare module "@polkadot/types/lookup" { readonly patch: Compact; } - /** @name XcmV3MaybeErrorCode (367) */ + /** @name XcmV3MaybeErrorCode (370) */ interface XcmV3MaybeErrorCode extends Enum { readonly isSuccess: boolean; readonly isError: boolean; @@ -4714,7 +4753,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Success" | "Error" | "TruncatedError"; } - /** @name XcmV3OriginKind (370) */ + /** @name XcmV3OriginKind (373) */ interface XcmV3OriginKind extends Enum { readonly isNative: boolean; readonly isSovereignAccount: boolean; @@ -4723,14 +4762,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Native" | "SovereignAccount" | "Superuser" | "Xcm"; } - /** @name XcmV3QueryResponseInfo (371) */ + /** @name XcmV3QueryResponseInfo (374) */ interface XcmV3QueryResponseInfo extends Struct { readonly destination: StagingXcmV3MultiLocation; readonly queryId: Compact; readonly maxWeight: SpWeightsWeightV2Weight; } - /** @name XcmV3MultiassetMultiAssetFilter (372) */ + /** @name XcmV3MultiassetMultiAssetFilter (375) */ interface XcmV3MultiassetMultiAssetFilter extends Enum { readonly isDefinite: boolean; readonly asDefinite: XcmV3MultiassetMultiAssets; @@ -4739,7 +4778,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Definite" | "Wild"; } - /** @name XcmV3MultiassetWildMultiAsset (373) */ + /** @name XcmV3MultiassetWildMultiAsset (376) */ interface XcmV3MultiassetWildMultiAsset extends Enum { readonly isAll: boolean; readonly isAllOf: boolean; @@ -4758,14 +4797,14 @@ declare module "@polkadot/types/lookup" { readonly type: "All" | "AllOf" | "AllCounted" | "AllOfCounted"; } - /** @name XcmV3MultiassetWildFungibility (374) */ + /** @name XcmV3MultiassetWildFungibility (377) */ interface XcmV3MultiassetWildFungibility extends Enum { readonly isFungible: boolean; readonly isNonFungible: boolean; readonly type: "Fungible" | "NonFungible"; } - /** @name XcmV3WeightLimit (375) */ + /** @name XcmV3WeightLimit (378) */ interface XcmV3WeightLimit extends Enum { readonly isUnlimited: boolean; readonly isLimited: boolean; @@ -4773,10 +4812,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Unlimited" | "Limited"; } - /** @name StagingXcmV4Xcm (376) */ + /** @name StagingXcmV4Xcm (379) */ interface StagingXcmV4Xcm extends Vec {} - /** @name StagingXcmV4Instruction (378) */ + /** @name StagingXcmV4Instruction (381) */ interface StagingXcmV4Instruction extends Enum { readonly isWithdrawAsset: boolean; readonly asWithdrawAsset: StagingXcmV4AssetAssets; @@ -5006,19 +5045,19 @@ declare module "@polkadot/types/lookup" { | "UnpaidExecution"; } - /** @name StagingXcmV4AssetAssets (379) */ + /** @name StagingXcmV4AssetAssets (382) */ interface StagingXcmV4AssetAssets extends Vec {} - /** @name StagingXcmV4Asset (381) */ + /** @name StagingXcmV4Asset (384) */ interface StagingXcmV4Asset extends Struct { readonly id: StagingXcmV4AssetAssetId; readonly fun: StagingXcmV4AssetFungibility; } - /** @name StagingXcmV4AssetAssetId (382) */ + /** @name StagingXcmV4AssetAssetId (385) */ interface StagingXcmV4AssetAssetId extends StagingXcmV4Location {} - /** @name StagingXcmV4AssetFungibility (383) */ + /** @name StagingXcmV4AssetFungibility (386) */ interface StagingXcmV4AssetFungibility extends Enum { readonly isFungible: boolean; readonly asFungible: Compact; @@ -5027,7 +5066,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Fungible" | "NonFungible"; } - /** @name StagingXcmV4AssetAssetInstance (384) */ + /** @name StagingXcmV4AssetAssetInstance (387) */ interface StagingXcmV4AssetAssetInstance extends Enum { readonly isUndefined: boolean; readonly isIndex: boolean; @@ -5043,7 +5082,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Undefined" | "Index" | "Array4" | "Array8" | "Array16" | "Array32"; } - /** @name StagingXcmV4Response (385) */ + /** @name StagingXcmV4Response (388) */ interface StagingXcmV4Response extends Enum { readonly isNull: boolean; readonly isAssets: boolean; @@ -5059,7 +5098,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Null" | "Assets" | "ExecutionResult" | "Version" | "PalletsInfo" | "DispatchResult"; } - /** @name StagingXcmV4PalletInfo (387) */ + /** @name StagingXcmV4PalletInfo (390) */ interface StagingXcmV4PalletInfo extends Struct { readonly index: Compact; readonly name: Bytes; @@ -5069,14 +5108,14 @@ declare module "@polkadot/types/lookup" { readonly patch: Compact; } - /** @name StagingXcmV4QueryResponseInfo (391) */ + /** @name StagingXcmV4QueryResponseInfo (394) */ interface StagingXcmV4QueryResponseInfo extends Struct { readonly destination: StagingXcmV4Location; readonly queryId: Compact; readonly maxWeight: SpWeightsWeightV2Weight; } - /** @name StagingXcmV4AssetAssetFilter (392) */ + /** @name StagingXcmV4AssetAssetFilter (395) */ interface StagingXcmV4AssetAssetFilter extends Enum { readonly isDefinite: boolean; readonly asDefinite: StagingXcmV4AssetAssets; @@ -5085,7 +5124,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Definite" | "Wild"; } - /** @name StagingXcmV4AssetWildAsset (393) */ + /** @name StagingXcmV4AssetWildAsset (396) */ interface StagingXcmV4AssetWildAsset extends Enum { readonly isAll: boolean; readonly isAllOf: boolean; @@ -5104,14 +5143,14 @@ declare module "@polkadot/types/lookup" { readonly type: "All" | "AllOf" | "AllCounted" | "AllOfCounted"; } - /** @name StagingXcmV4AssetWildFungibility (394) */ + /** @name StagingXcmV4AssetWildFungibility (397) */ interface StagingXcmV4AssetWildFungibility extends Enum { readonly isFungible: boolean; readonly isNonFungible: boolean; readonly type: "Fungible" | "NonFungible"; } - /** @name XcmVersionedAssets (395) */ + /** @name XcmVersionedAssets (398) */ interface XcmVersionedAssets extends Enum { readonly isV2: boolean; readonly asV2: XcmV2MultiassetMultiAssets; @@ -5122,7 +5161,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name StagingXcmExecutorAssetTransferTransferType (407) */ + /** @name StagingXcmExecutorAssetTransferTransferType (410) */ interface StagingXcmExecutorAssetTransferTransferType extends Enum { readonly isTeleport: boolean; readonly isLocalReserve: boolean; @@ -5132,7 +5171,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Teleport" | "LocalReserve" | "DestinationReserve" | "RemoteReserve"; } - /** @name XcmVersionedAssetId (408) */ + /** @name XcmVersionedAssetId (411) */ interface XcmVersionedAssetId extends Enum { readonly isV3: boolean; readonly asV3: XcmV3MultiassetAssetId; @@ -5141,7 +5180,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V3" | "V4"; } - /** @name SnowbridgePalletInboundQueueCall (409) */ + /** @name SnowbridgePalletInboundQueueCall (412) */ interface SnowbridgePalletInboundQueueCall extends Enum { readonly isSubmit: boolean; readonly asSubmit: { @@ -5154,26 +5193,26 @@ declare module "@polkadot/types/lookup" { readonly type: "Submit" | "SetOperatingMode"; } - /** @name SnowbridgeCoreInboundMessage (410) */ + /** @name SnowbridgeCoreInboundMessage (413) */ interface SnowbridgeCoreInboundMessage extends Struct { readonly eventLog: SnowbridgeCoreInboundLog; readonly proof: SnowbridgeCoreInboundProof; } - /** @name SnowbridgeCoreInboundLog (411) */ + /** @name SnowbridgeCoreInboundLog (414) */ interface SnowbridgeCoreInboundLog extends Struct { readonly address: H160; readonly topics: Vec; readonly data: Bytes; } - /** @name SnowbridgeCoreInboundProof (413) */ + /** @name SnowbridgeCoreInboundProof (416) */ interface SnowbridgeCoreInboundProof extends Struct { readonly receiptProof: ITuple<[Vec, Vec]>; readonly executionProof: SnowbridgeBeaconPrimitivesExecutionProof; } - /** @name SnowbridgeBeaconPrimitivesExecutionProof (415) */ + /** @name SnowbridgeBeaconPrimitivesExecutionProof (418) */ interface SnowbridgeBeaconPrimitivesExecutionProof extends Struct { readonly header: SnowbridgeBeaconPrimitivesBeaconHeader; readonly ancestryProof: Option; @@ -5181,7 +5220,7 @@ declare module "@polkadot/types/lookup" { readonly executionBranch: Vec; } - /** @name SnowbridgeBeaconPrimitivesBeaconHeader (416) */ + /** @name SnowbridgeBeaconPrimitivesBeaconHeader (419) */ interface SnowbridgeBeaconPrimitivesBeaconHeader extends Struct { readonly slot: u64; readonly proposerIndex: u64; @@ -5190,13 +5229,13 @@ declare module "@polkadot/types/lookup" { readonly bodyRoot: H256; } - /** @name SnowbridgeBeaconPrimitivesAncestryProof (418) */ + /** @name SnowbridgeBeaconPrimitivesAncestryProof (421) */ interface SnowbridgeBeaconPrimitivesAncestryProof extends Struct { readonly headerBranch: Vec; readonly finalizedBlockRoot: H256; } - /** @name SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader (419) */ + /** @name SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader (422) */ interface SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader extends Enum { readonly isCapella: boolean; readonly asCapella: SnowbridgeBeaconPrimitivesExecutionPayloadHeader; @@ -5205,7 +5244,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Capella" | "Deneb"; } - /** @name SnowbridgeBeaconPrimitivesExecutionPayloadHeader (420) */ + /** @name SnowbridgeBeaconPrimitivesExecutionPayloadHeader (423) */ interface SnowbridgeBeaconPrimitivesExecutionPayloadHeader extends Struct { readonly parentHash: H256; readonly feeRecipient: H160; @@ -5224,7 +5263,7 @@ declare module "@polkadot/types/lookup" { readonly withdrawalsRoot: H256; } - /** @name SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader (423) */ + /** @name SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader (426) */ interface SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader extends Struct { readonly parentHash: H256; readonly feeRecipient: H160; @@ -5245,23 +5284,7 @@ declare module "@polkadot/types/lookup" { readonly excessBlobGas: u64; } - /** @name SnowbridgeCoreOperatingModeBasicOperatingMode (424) */ - interface SnowbridgeCoreOperatingModeBasicOperatingMode extends Enum { - readonly isNormal: boolean; - readonly isHalted: boolean; - readonly type: "Normal" | "Halted"; - } - - /** @name SnowbridgePalletOutboundQueueCall (425) */ - interface SnowbridgePalletOutboundQueueCall extends Enum { - readonly isSetOperatingMode: boolean; - readonly asSetOperatingMode: { - readonly mode: SnowbridgeCoreOperatingModeBasicOperatingMode; - } & Struct; - readonly type: "SetOperatingMode"; - } - - /** @name SnowbridgePalletSystemCall (426) */ + /** @name SnowbridgePalletSystemCall (427) */ interface SnowbridgePalletSystemCall extends Enum { readonly isUpgrade: boolean; readonly asUpgrade: { @@ -5327,20 +5350,20 @@ declare module "@polkadot/types/lookup" { | "RegisterToken"; } - /** @name SnowbridgeCoreOutboundV1Initializer (428) */ + /** @name SnowbridgeCoreOutboundV1Initializer (429) */ interface SnowbridgeCoreOutboundV1Initializer extends Struct { readonly params: Bytes; readonly maximumRequiredGas: u64; } - /** @name SnowbridgeCoreOutboundV1OperatingMode (429) */ + /** @name SnowbridgeCoreOutboundV1OperatingMode (430) */ interface SnowbridgeCoreOutboundV1OperatingMode extends Enum { readonly isNormal: boolean; readonly isRejectingOutboundMessages: boolean; readonly type: "Normal" | "RejectingOutboundMessages"; } - /** @name SnowbridgeCorePricingPricingParameters (430) */ + /** @name SnowbridgeCorePricingPricingParameters (431) */ interface SnowbridgeCorePricingPricingParameters extends Struct { readonly exchangeRate: u128; readonly rewards: SnowbridgeCorePricingRewards; @@ -5348,20 +5371,20 @@ declare module "@polkadot/types/lookup" { readonly multiplier: u128; } - /** @name SnowbridgeCorePricingRewards (431) */ + /** @name SnowbridgeCorePricingRewards (432) */ interface SnowbridgeCorePricingRewards extends Struct { readonly local: u128; readonly remote: U256; } - /** @name SnowbridgeCoreAssetMetadata (432) */ + /** @name SnowbridgeCoreAssetMetadata (433) */ interface SnowbridgeCoreAssetMetadata extends Struct { readonly name: Bytes; readonly symbol: Bytes; readonly decimals: u8; } - /** @name PalletMigrationsCall (433) */ + /** @name PalletMigrationsCall (434) */ interface PalletMigrationsCall extends Enum { readonly isForceSetCursor: boolean; readonly asForceSetCursor: { @@ -5381,7 +5404,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceSetCursor" | "ForceSetActiveCursor" | "ForceOnboardMbms" | "ClearHistoric"; } - /** @name PalletMigrationsMigrationCursor (435) */ + /** @name PalletMigrationsMigrationCursor (436) */ interface PalletMigrationsMigrationCursor extends Enum { readonly isActive: boolean; readonly asActive: PalletMigrationsActiveCursor; @@ -5389,14 +5412,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Active" | "Stuck"; } - /** @name PalletMigrationsActiveCursor (437) */ + /** @name PalletMigrationsActiveCursor (438) */ interface PalletMigrationsActiveCursor extends Struct { readonly index: u32; readonly innerCursor: Option; readonly startedAt: u32; } - /** @name PalletMigrationsHistoricCleanupSelector (439) */ + /** @name PalletMigrationsHistoricCleanupSelector (440) */ interface PalletMigrationsHistoricCleanupSelector extends Enum { readonly isSpecific: boolean; readonly asSpecific: Vec; @@ -5408,7 +5431,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Specific" | "Wildcard"; } - /** @name PalletBeefyCall (442) */ + /** @name PalletBeefyCall (443) */ interface PalletBeefyCall extends Enum { readonly isReportDoubleVoting: boolean; readonly asReportDoubleVoting: { @@ -5454,40 +5477,40 @@ declare module "@polkadot/types/lookup" { | "ReportFutureBlockVotingUnsigned"; } - /** @name SpConsensusBeefyDoubleVotingProof (443) */ + /** @name SpConsensusBeefyDoubleVotingProof (444) */ interface SpConsensusBeefyDoubleVotingProof extends Struct { readonly first: SpConsensusBeefyVoteMessage; readonly second: SpConsensusBeefyVoteMessage; } - /** @name SpConsensusBeefyEcdsaCryptoSignature (444) */ + /** @name SpConsensusBeefyEcdsaCryptoSignature (445) */ interface SpConsensusBeefyEcdsaCryptoSignature extends U8aFixed {} - /** @name SpConsensusBeefyVoteMessage (445) */ + /** @name SpConsensusBeefyVoteMessage (446) */ interface SpConsensusBeefyVoteMessage extends Struct { readonly commitment: SpConsensusBeefyCommitment; readonly id: SpConsensusBeefyEcdsaCryptoPublic; readonly signature: SpConsensusBeefyEcdsaCryptoSignature; } - /** @name SpConsensusBeefyCommitment (446) */ + /** @name SpConsensusBeefyCommitment (447) */ interface SpConsensusBeefyCommitment extends Struct { readonly payload: SpConsensusBeefyPayload; readonly blockNumber: u32; readonly validatorSetId: u64; } - /** @name SpConsensusBeefyPayload (447) */ + /** @name SpConsensusBeefyPayload (448) */ interface SpConsensusBeefyPayload extends Vec> {} - /** @name SpConsensusBeefyForkVotingProof (450) */ + /** @name SpConsensusBeefyForkVotingProof (451) */ interface SpConsensusBeefyForkVotingProof extends Struct { readonly vote: SpConsensusBeefyVoteMessage; readonly ancestryProof: SpMmrPrimitivesAncestryProof; readonly header: SpRuntimeHeader; } - /** @name SpMmrPrimitivesAncestryProof (451) */ + /** @name SpMmrPrimitivesAncestryProof (452) */ interface SpMmrPrimitivesAncestryProof extends Struct { readonly prevPeaks: Vec; readonly prevLeafCount: u64; @@ -5495,12 +5518,12 @@ declare module "@polkadot/types/lookup" { readonly items: Vec>; } - /** @name SpConsensusBeefyFutureBlockVotingProof (454) */ + /** @name SpConsensusBeefyFutureBlockVotingProof (455) */ interface SpConsensusBeefyFutureBlockVotingProof extends Struct { readonly vote: SpConsensusBeefyVoteMessage; } - /** @name SnowbridgePalletEthereumClientCall (455) */ + /** @name SnowbridgePalletEthereumClientCall (456) */ interface SnowbridgePalletEthereumClientCall extends Enum { readonly isForceCheckpoint: boolean; readonly asForceCheckpoint: { @@ -5517,7 +5540,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceCheckpoint" | "Submit" | "SetOperatingMode"; } - /** @name SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate (456) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate (457) */ interface SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate extends Struct { readonly header: SnowbridgeBeaconPrimitivesBeaconHeader; readonly currentSyncCommittee: SnowbridgeBeaconPrimitivesSyncCommittee; @@ -5527,16 +5550,16 @@ declare module "@polkadot/types/lookup" { readonly blockRootsBranch: Vec; } - /** @name SnowbridgeBeaconPrimitivesSyncCommittee (457) */ + /** @name SnowbridgeBeaconPrimitivesSyncCommittee (458) */ interface SnowbridgeBeaconPrimitivesSyncCommittee extends Struct { readonly pubkeys: Vec; readonly aggregatePubkey: SnowbridgeBeaconPrimitivesPublicKey; } - /** @name SnowbridgeBeaconPrimitivesPublicKey (459) */ + /** @name SnowbridgeBeaconPrimitivesPublicKey (460) */ interface SnowbridgeBeaconPrimitivesPublicKey extends U8aFixed {} - /** @name SnowbridgeBeaconPrimitivesUpdatesUpdate (461) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesUpdate (462) */ interface SnowbridgeBeaconPrimitivesUpdatesUpdate extends Struct { readonly attestedHeader: SnowbridgeBeaconPrimitivesBeaconHeader; readonly syncAggregate: SnowbridgeBeaconPrimitivesSyncAggregate; @@ -5548,22 +5571,22 @@ declare module "@polkadot/types/lookup" { readonly blockRootsBranch: Vec; } - /** @name SnowbridgeBeaconPrimitivesSyncAggregate (462) */ + /** @name SnowbridgeBeaconPrimitivesSyncAggregate (463) */ interface SnowbridgeBeaconPrimitivesSyncAggregate extends Struct { readonly syncCommitteeBits: U8aFixed; readonly syncCommitteeSignature: SnowbridgeBeaconPrimitivesSignature; } - /** @name SnowbridgeBeaconPrimitivesSignature (463) */ + /** @name SnowbridgeBeaconPrimitivesSignature (464) */ interface SnowbridgeBeaconPrimitivesSignature extends U8aFixed {} - /** @name SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate (466) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate (467) */ interface SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate extends Struct { readonly nextSyncCommittee: SnowbridgeBeaconPrimitivesSyncCommittee; readonly nextSyncCommitteeBranch: Vec; } - /** @name PolkadotRuntimeCommonParasSudoWrapperPalletCall (467) */ + /** @name PolkadotRuntimeCommonParasSudoWrapperPalletCall (468) */ interface PolkadotRuntimeCommonParasSudoWrapperPalletCall extends Enum { readonly isSudoScheduleParaInitialize: boolean; readonly asSudoScheduleParaInitialize: { @@ -5603,14 +5626,14 @@ declare module "@polkadot/types/lookup" { | "SudoEstablishHrmpChannel"; } - /** @name PolkadotRuntimeParachainsParasParaGenesisArgs (468) */ + /** @name PolkadotRuntimeParachainsParasParaGenesisArgs (469) */ interface PolkadotRuntimeParachainsParasParaGenesisArgs extends Struct { readonly genesisHead: Bytes; readonly validationCode: Bytes; readonly paraKind: bool; } - /** @name PalletRootTestingCall (469) */ + /** @name PalletRootTestingCall (470) */ interface PalletRootTestingCall extends Enum { readonly isFillBlock: boolean; readonly asFillBlock: { @@ -5620,7 +5643,7 @@ declare module "@polkadot/types/lookup" { readonly type: "FillBlock" | "TriggerDefensive"; } - /** @name PalletSudoCall (470) */ + /** @name PalletSudoCall (471) */ interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -5644,17 +5667,17 @@ declare module "@polkadot/types/lookup" { readonly type: "Sudo" | "SudoUncheckedWeight" | "SetKey" | "SudoAs" | "RemoveKey"; } - /** @name SpRuntimeBlakeTwo256 (471) */ + /** @name SpRuntimeBlakeTwo256 (472) */ type SpRuntimeBlakeTwo256 = Null; - /** @name PalletConvictionVotingTally (473) */ + /** @name PalletConvictionVotingTally (474) */ interface PalletConvictionVotingTally extends Struct { readonly ayes: u128; readonly nays: u128; readonly support: u128; } - /** @name PalletRankedCollectiveEvent (474) */ + /** @name PalletRankedCollectiveEvent (475) */ interface PalletRankedCollectiveEvent extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: { @@ -5685,7 +5708,7 @@ declare module "@polkadot/types/lookup" { readonly type: "MemberAdded" | "RankChanged" | "MemberRemoved" | "Voted" | "MemberExchanged"; } - /** @name PalletRankedCollectiveVoteRecord (475) */ + /** @name PalletRankedCollectiveVoteRecord (476) */ interface PalletRankedCollectiveVoteRecord extends Enum { readonly isAye: boolean; readonly asAye: u32; @@ -5694,14 +5717,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Aye" | "Nay"; } - /** @name PalletRankedCollectiveTally (476) */ + /** @name PalletRankedCollectiveTally (477) */ interface PalletRankedCollectiveTally extends Struct { readonly bareAyes: u32; readonly ayes: u32; readonly nays: u32; } - /** @name PalletWhitelistEvent (478) */ + /** @name PalletWhitelistEvent (479) */ interface PalletWhitelistEvent extends Enum { readonly isCallWhitelisted: boolean; readonly asCallWhitelisted: { @@ -5719,19 +5742,19 @@ declare module "@polkadot/types/lookup" { readonly type: "CallWhitelisted" | "WhitelistedCallRemoved" | "WhitelistedCallDispatched"; } - /** @name FrameSupportDispatchPostDispatchInfo (480) */ + /** @name FrameSupportDispatchPostDispatchInfo (481) */ interface FrameSupportDispatchPostDispatchInfo extends Struct { readonly actualWeight: Option; readonly paysFee: FrameSupportDispatchPays; } - /** @name SpRuntimeDispatchErrorWithPostInfo (482) */ + /** @name SpRuntimeDispatchErrorWithPostInfo (483) */ interface SpRuntimeDispatchErrorWithPostInfo extends Struct { readonly postInfo: FrameSupportDispatchPostDispatchInfo; readonly error: SpRuntimeDispatchError; } - /** @name PolkadotRuntimeParachainsInclusionPalletEvent (483) */ + /** @name PolkadotRuntimeParachainsInclusionPalletEvent (484) */ interface PolkadotRuntimeParachainsInclusionPalletEvent extends Enum { readonly isCandidateBacked: boolean; readonly asCandidateBacked: ITuple<[PolkadotPrimitivesV8CandidateReceipt, Bytes, u32, u32]>; @@ -5747,13 +5770,13 @@ declare module "@polkadot/types/lookup" { readonly type: "CandidateBacked" | "CandidateIncluded" | "CandidateTimedOut" | "UpwardMessagesReceived"; } - /** @name PolkadotPrimitivesV8CandidateReceipt (484) */ + /** @name PolkadotPrimitivesV8CandidateReceipt (485) */ interface PolkadotPrimitivesV8CandidateReceipt extends Struct { readonly descriptor: PolkadotPrimitivesV8CandidateDescriptor; readonly commitmentsHash: H256; } - /** @name PolkadotRuntimeParachainsParasPalletEvent (487) */ + /** @name PolkadotRuntimeParachainsParasPalletEvent (488) */ interface PolkadotRuntimeParachainsParasPalletEvent extends Enum { readonly isCurrentCodeUpdated: boolean; readonly asCurrentCodeUpdated: u32; @@ -5782,7 +5805,7 @@ declare module "@polkadot/types/lookup" { | "PvfCheckRejected"; } - /** @name PolkadotRuntimeParachainsHrmpPalletEvent (488) */ + /** @name PolkadotRuntimeParachainsHrmpPalletEvent (489) */ interface PolkadotRuntimeParachainsHrmpPalletEvent extends Enum { readonly isOpenChannelRequested: boolean; readonly asOpenChannelRequested: { @@ -5835,7 +5858,7 @@ declare module "@polkadot/types/lookup" { | "OpenChannelDepositsUpdated"; } - /** @name PolkadotRuntimeParachainsDisputesPalletEvent (489) */ + /** @name PolkadotRuntimeParachainsDisputesPalletEvent (490) */ interface PolkadotRuntimeParachainsDisputesPalletEvent extends Enum { readonly isDisputeInitiated: boolean; readonly asDisputeInitiated: ITuple<[H256, PolkadotRuntimeParachainsDisputesDisputeLocation]>; @@ -5846,21 +5869,21 @@ declare module "@polkadot/types/lookup" { readonly type: "DisputeInitiated" | "DisputeConcluded" | "Revert"; } - /** @name PolkadotRuntimeParachainsDisputesDisputeLocation (490) */ + /** @name PolkadotRuntimeParachainsDisputesDisputeLocation (491) */ interface PolkadotRuntimeParachainsDisputesDisputeLocation extends Enum { readonly isLocal: boolean; readonly isRemote: boolean; readonly type: "Local" | "Remote"; } - /** @name PolkadotRuntimeParachainsDisputesDisputeResult (491) */ + /** @name PolkadotRuntimeParachainsDisputesDisputeResult (492) */ interface PolkadotRuntimeParachainsDisputesDisputeResult extends Enum { readonly isValid: boolean; readonly isInvalid: boolean; readonly type: "Valid" | "Invalid"; } - /** @name PalletMessageQueueEvent (492) */ + /** @name PalletMessageQueueEvent (493) */ interface PalletMessageQueueEvent extends Enum { readonly isProcessingFailed: boolean; readonly asProcessingFailed: { @@ -5890,7 +5913,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ProcessingFailed" | "Processed" | "OverweightEnqueued" | "PageReaped"; } - /** @name FrameSupportMessagesProcessMessageError (493) */ + /** @name FrameSupportMessagesProcessMessageError (494) */ interface FrameSupportMessagesProcessMessageError extends Enum { readonly isBadFormat: boolean; readonly isCorrupt: boolean; @@ -5902,7 +5925,7 @@ declare module "@polkadot/types/lookup" { readonly type: "BadFormat" | "Corrupt" | "Unsupported" | "Overweight" | "Yield" | "StackLimitReached"; } - /** @name PolkadotRuntimeParachainsOnDemandPalletEvent (494) */ + /** @name PolkadotRuntimeParachainsOnDemandPalletEvent (495) */ interface PolkadotRuntimeParachainsOnDemandPalletEvent extends Enum { readonly isOnDemandOrderPlaced: boolean; readonly asOnDemandOrderPlaced: { @@ -5917,7 +5940,7 @@ declare module "@polkadot/types/lookup" { readonly type: "OnDemandOrderPlaced" | "SpotPriceSet"; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletEvent (495) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletEvent (496) */ interface PolkadotRuntimeCommonParasRegistrarPalletEvent extends Enum { readonly isRegistered: boolean; readonly asRegistered: { @@ -5941,7 +5964,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Registered" | "Deregistered" | "Reserved" | "Swapped"; } - /** @name PalletUtilityEvent (496) */ + /** @name PalletUtilityEvent (497) */ interface PalletUtilityEvent extends Enum { readonly isBatchInterrupted: boolean; readonly asBatchInterrupted: { @@ -5968,7 +5991,7 @@ declare module "@polkadot/types/lookup" { | "DispatchedAs"; } - /** @name PalletIdentityEvent (498) */ + /** @name PalletIdentityEvent (499) */ interface PalletIdentityEvent extends Enum { readonly isIdentitySet: boolean; readonly asIdentitySet: { @@ -6074,7 +6097,7 @@ declare module "@polkadot/types/lookup" { | "DanglingUsernameRemoved"; } - /** @name PalletSchedulerEvent (499) */ + /** @name PalletSchedulerEvent (500) */ interface PalletSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: { @@ -6136,7 +6159,7 @@ declare module "@polkadot/types/lookup" { | "PermanentlyOverweight"; } - /** @name PalletProxyEvent (501) */ + /** @name PalletProxyEvent (502) */ interface PalletProxyEvent extends Enum { readonly isProxyExecuted: boolean; readonly asProxyExecuted: { @@ -6172,7 +6195,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ProxyExecuted" | "PureCreated" | "Announced" | "ProxyAdded" | "ProxyRemoved"; } - /** @name PalletMultisigEvent (502) */ + /** @name PalletMultisigEvent (503) */ interface PalletMultisigEvent extends Enum { readonly isNewMultisig: boolean; readonly asNewMultisig: { @@ -6205,7 +6228,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewMultisig" | "MultisigApproval" | "MultisigExecuted" | "MultisigCancelled"; } - /** @name PalletPreimageEvent (503) */ + /** @name PalletPreimageEvent (504) */ interface PalletPreimageEvent extends Enum { readonly isNoted: boolean; readonly asNoted: { @@ -6222,7 +6245,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Noted" | "Requested" | "Cleared"; } - /** @name PalletAssetRateEvent (504) */ + /** @name PalletAssetRateEvent (505) */ interface PalletAssetRateEvent extends Enum { readonly isAssetRateCreated: boolean; readonly asAssetRateCreated: { @@ -6242,7 +6265,7 @@ declare module "@polkadot/types/lookup" { readonly type: "AssetRateCreated" | "AssetRateRemoved" | "AssetRateUpdated"; } - /** @name PalletXcmEvent (505) */ + /** @name PalletXcmEvent (506) */ interface PalletXcmEvent extends Enum { readonly isAttempted: boolean; readonly asAttempted: { @@ -6407,7 +6430,7 @@ declare module "@polkadot/types/lookup" { | "VersionMigrationFinished"; } - /** @name StagingXcmV4TraitsOutcome (506) */ + /** @name StagingXcmV4TraitsOutcome (507) */ interface StagingXcmV4TraitsOutcome extends Enum { readonly isComplete: boolean; readonly asComplete: { @@ -6425,7 +6448,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Complete" | "Incomplete" | "Error"; } - /** @name SnowbridgePalletInboundQueueEvent (507) */ + /** @name SnowbridgePalletInboundQueueEvent (508) */ interface SnowbridgePalletInboundQueueEvent extends Enum { readonly isMessageReceived: boolean; readonly asMessageReceived: { @@ -6441,29 +6464,6 @@ declare module "@polkadot/types/lookup" { readonly type: "MessageReceived" | "OperatingModeChanged"; } - /** @name SnowbridgePalletOutboundQueueEvent (508) */ - interface SnowbridgePalletOutboundQueueEvent extends Enum { - readonly isMessageQueued: boolean; - readonly asMessageQueued: { - readonly id: H256; - } & Struct; - readonly isMessageAccepted: boolean; - readonly asMessageAccepted: { - readonly id: H256; - readonly nonce: u64; - } & Struct; - readonly isMessagesCommitted: boolean; - readonly asMessagesCommitted: { - readonly root: H256; - readonly count: u64; - } & Struct; - readonly isOperatingModeChanged: boolean; - readonly asOperatingModeChanged: { - readonly mode: SnowbridgeCoreOperatingModeBasicOperatingMode; - } & Struct; - readonly type: "MessageQueued" | "MessageAccepted" | "MessagesCommitted" | "OperatingModeChanged"; - } - /** @name SnowbridgePalletSystemEvent (509) */ interface SnowbridgePalletSystemEvent extends Enum { readonly isUpgrade: boolean; @@ -7076,10 +7076,30 @@ declare module "@polkadot/types/lookup" { readonly individual: BTreeMap; } - /** @name SpCoreCryptoKeyTypeId (626) */ + /** @name SnowbridgePalletOutboundQueueCommittedMessage (624) */ + interface SnowbridgePalletOutboundQueueCommittedMessage extends Struct { + readonly channelId: SnowbridgeCoreChannelId; + readonly nonce: Compact; + readonly command: u8; + readonly params: Bytes; + readonly maxDispatchGas: Compact; + readonly maxFeePerGas: Compact; + readonly reward: Compact; + readonly id: H256; + } + + /** @name SnowbridgePalletOutboundQueueError (625) */ + interface SnowbridgePalletOutboundQueueError extends Enum { + readonly isMessageTooLarge: boolean; + readonly isHalted: boolean; + readonly isInvalidChannel: boolean; + readonly type: "MessageTooLarge" | "Halted" | "InvalidChannel"; + } + + /** @name SpCoreCryptoKeyTypeId (629) */ interface SpCoreCryptoKeyTypeId extends U8aFixed {} - /** @name PalletSessionError (627) */ + /** @name PalletSessionError (630) */ interface PalletSessionError extends Enum { readonly isInvalidProof: boolean; readonly isNoAssociatedValidatorId: boolean; @@ -7089,7 +7109,7 @@ declare module "@polkadot/types/lookup" { readonly type: "InvalidProof" | "NoAssociatedValidatorId" | "DuplicatedKey" | "NoKeys" | "NoAccount"; } - /** @name PalletGrandpaStoredState (628) */ + /** @name PalletGrandpaStoredState (631) */ interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -7106,7 +7126,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Live" | "PendingPause" | "Paused" | "PendingResume"; } - /** @name PalletGrandpaStoredPendingChange (629) */ + /** @name PalletGrandpaStoredPendingChange (632) */ interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -7114,7 +7134,7 @@ declare module "@polkadot/types/lookup" { readonly forced: Option; } - /** @name PalletGrandpaError (631) */ + /** @name PalletGrandpaError (634) */ interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -7133,19 +7153,19 @@ declare module "@polkadot/types/lookup" { | "DuplicateOffenceReport"; } - /** @name PalletInflationRewardsChainsToRewardValue (634) */ + /** @name PalletInflationRewardsChainsToRewardValue (637) */ interface PalletInflationRewardsChainsToRewardValue extends Struct { readonly paraIds: Vec; readonly rewardsPerChain: u128; } - /** @name PalletPooledStakingCandidateEligibleCandidate (636) */ + /** @name PalletPooledStakingCandidateEligibleCandidate (639) */ interface PalletPooledStakingCandidateEligibleCandidate extends Struct { readonly candidate: AccountId32; readonly stake: u128; } - /** @name PalletPooledStakingPoolsKey (639) */ + /** @name PalletPooledStakingPoolsKey (642) */ interface PalletPooledStakingPoolsKey extends Enum { readonly isCandidateTotalStake: boolean; readonly isJoiningShares: boolean; @@ -7215,7 +7235,7 @@ declare module "@polkadot/types/lookup" { | "LeavingSharesHeldStake"; } - /** @name PalletPooledStakingError (641) */ + /** @name PalletPooledStakingError (644) */ interface PalletPooledStakingError extends Enum { readonly isInvalidPalletSetting: boolean; readonly isDisabledFeature: boolean; @@ -7249,7 +7269,7 @@ declare module "@polkadot/types/lookup" { | "SwapResultsInZeroShares"; } - /** @name PalletTreasuryProposal (642) */ + /** @name PalletTreasuryProposal (645) */ interface PalletTreasuryProposal extends Struct { readonly proposer: AccountId32; readonly value: u128; @@ -7257,7 +7277,7 @@ declare module "@polkadot/types/lookup" { readonly bond: u128; } - /** @name PalletTreasurySpendStatus (644) */ + /** @name PalletTreasurySpendStatus (647) */ interface PalletTreasurySpendStatus extends Struct { readonly assetKind: Null; readonly amount: u128; @@ -7267,7 +7287,7 @@ declare module "@polkadot/types/lookup" { readonly status: PalletTreasuryPaymentState; } - /** @name PalletTreasuryPaymentState (645) */ + /** @name PalletTreasuryPaymentState (648) */ interface PalletTreasuryPaymentState extends Enum { readonly isPending: boolean; readonly isAttempted: boolean; @@ -7278,10 +7298,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Pending" | "Attempted" | "Failed"; } - /** @name FrameSupportPalletId (647) */ + /** @name FrameSupportPalletId (650) */ interface FrameSupportPalletId extends U8aFixed {} - /** @name PalletTreasuryError (648) */ + /** @name PalletTreasuryError (651) */ interface PalletTreasuryError extends Enum { readonly isInvalidIndex: boolean; readonly isTooManyApprovals: boolean; @@ -7308,7 +7328,7 @@ declare module "@polkadot/types/lookup" { | "Inconclusive"; } - /** @name PalletConvictionVotingVoteVoting (650) */ + /** @name PalletConvictionVotingVoteVoting (653) */ interface PalletConvictionVotingVoteVoting extends Enum { readonly isCasting: boolean; readonly asCasting: PalletConvictionVotingVoteCasting; @@ -7317,23 +7337,23 @@ declare module "@polkadot/types/lookup" { readonly type: "Casting" | "Delegating"; } - /** @name PalletConvictionVotingVoteCasting (651) */ + /** @name PalletConvictionVotingVoteCasting (654) */ interface PalletConvictionVotingVoteCasting extends Struct { readonly votes: Vec>; readonly delegations: PalletConvictionVotingDelegations; readonly prior: PalletConvictionVotingVotePriorLock; } - /** @name PalletConvictionVotingDelegations (655) */ + /** @name PalletConvictionVotingDelegations (658) */ interface PalletConvictionVotingDelegations extends Struct { readonly votes: u128; readonly capital: u128; } - /** @name PalletConvictionVotingVotePriorLock (656) */ + /** @name PalletConvictionVotingVotePriorLock (659) */ interface PalletConvictionVotingVotePriorLock extends ITuple<[u32, u128]> {} - /** @name PalletConvictionVotingVoteDelegating (657) */ + /** @name PalletConvictionVotingVoteDelegating (660) */ interface PalletConvictionVotingVoteDelegating extends Struct { readonly balance: u128; readonly target: AccountId32; @@ -7342,7 +7362,7 @@ declare module "@polkadot/types/lookup" { readonly prior: PalletConvictionVotingVotePriorLock; } - /** @name PalletConvictionVotingError (661) */ + /** @name PalletConvictionVotingError (664) */ interface PalletConvictionVotingError extends Enum { readonly isNotOngoing: boolean; readonly isNotVoter: boolean; @@ -7371,7 +7391,7 @@ declare module "@polkadot/types/lookup" { | "BadClass"; } - /** @name PalletReferendaReferendumInfoConvictionVotingTally (662) */ + /** @name PalletReferendaReferendumInfoConvictionVotingTally (665) */ interface PalletReferendaReferendumInfoConvictionVotingTally extends Enum { readonly isOngoing: boolean; readonly asOngoing: PalletReferendaReferendumStatusConvictionVotingTally; @@ -7388,7 +7408,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ongoing" | "Approved" | "Rejected" | "Cancelled" | "TimedOut" | "Killed"; } - /** @name PalletReferendaReferendumStatusConvictionVotingTally (663) */ + /** @name PalletReferendaReferendumStatusConvictionVotingTally (666) */ interface PalletReferendaReferendumStatusConvictionVotingTally extends Struct { readonly track: u16; readonly origin: DancelightRuntimeOriginCaller; @@ -7403,19 +7423,19 @@ declare module "@polkadot/types/lookup" { readonly alarm: Option]>>; } - /** @name PalletReferendaDeposit (664) */ + /** @name PalletReferendaDeposit (667) */ interface PalletReferendaDeposit extends Struct { readonly who: AccountId32; readonly amount: u128; } - /** @name PalletReferendaDecidingStatus (667) */ + /** @name PalletReferendaDecidingStatus (670) */ interface PalletReferendaDecidingStatus extends Struct { readonly since: u32; readonly confirming: Option; } - /** @name PalletReferendaTrackInfo (675) */ + /** @name PalletReferendaTrackInfo (678) */ interface PalletReferendaTrackInfo extends Struct { readonly name: Text; readonly maxDeciding: u32; @@ -7428,7 +7448,7 @@ declare module "@polkadot/types/lookup" { readonly minSupport: PalletReferendaCurve; } - /** @name PalletReferendaCurve (676) */ + /** @name PalletReferendaCurve (679) */ interface PalletReferendaCurve extends Enum { readonly isLinearDecreasing: boolean; readonly asLinearDecreasing: { @@ -7452,7 +7472,7 @@ declare module "@polkadot/types/lookup" { readonly type: "LinearDecreasing" | "SteppedDecreasing" | "Reciprocal"; } - /** @name PalletReferendaError (679) */ + /** @name PalletReferendaError (682) */ interface PalletReferendaError extends Enum { readonly isNotOngoing: boolean; readonly isHasDeposit: boolean; @@ -7485,12 +7505,12 @@ declare module "@polkadot/types/lookup" { | "PreimageStoredWithDifferentLength"; } - /** @name PalletRankedCollectiveMemberRecord (680) */ + /** @name PalletRankedCollectiveMemberRecord (683) */ interface PalletRankedCollectiveMemberRecord extends Struct { readonly rank: u16; } - /** @name PalletRankedCollectiveError (684) */ + /** @name PalletRankedCollectiveError (687) */ interface PalletRankedCollectiveError extends Enum { readonly isAlreadyMember: boolean; readonly isNotMember: boolean; @@ -7517,7 +7537,7 @@ declare module "@polkadot/types/lookup" { | "TooManyMembers"; } - /** @name PalletReferendaReferendumInfoRankedCollectiveTally (685) */ + /** @name PalletReferendaReferendumInfoRankedCollectiveTally (688) */ interface PalletReferendaReferendumInfoRankedCollectiveTally extends Enum { readonly isOngoing: boolean; readonly asOngoing: PalletReferendaReferendumStatusRankedCollectiveTally; @@ -7534,7 +7554,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ongoing" | "Approved" | "Rejected" | "Cancelled" | "TimedOut" | "Killed"; } - /** @name PalletReferendaReferendumStatusRankedCollectiveTally (686) */ + /** @name PalletReferendaReferendumStatusRankedCollectiveTally (689) */ interface PalletReferendaReferendumStatusRankedCollectiveTally extends Struct { readonly track: u16; readonly origin: DancelightRuntimeOriginCaller; @@ -7549,7 +7569,7 @@ declare module "@polkadot/types/lookup" { readonly alarm: Option]>>; } - /** @name PalletWhitelistError (689) */ + /** @name PalletWhitelistError (692) */ interface PalletWhitelistError extends Enum { readonly isUnavailablePreImage: boolean; readonly isUndecodableCall: boolean; @@ -7564,7 +7584,7 @@ declare module "@polkadot/types/lookup" { | "CallAlreadyWhitelisted"; } - /** @name PolkadotRuntimeParachainsConfigurationHostConfiguration (690) */ + /** @name PolkadotRuntimeParachainsConfigurationHostConfiguration (693) */ interface PolkadotRuntimeParachainsConfigurationHostConfiguration extends Struct { readonly maxCodeSize: u32; readonly maxHeadDataSize: u32; @@ -7603,19 +7623,19 @@ declare module "@polkadot/types/lookup" { readonly schedulerParams: PolkadotPrimitivesV8SchedulerParams; } - /** @name PolkadotRuntimeParachainsConfigurationPalletError (693) */ + /** @name PolkadotRuntimeParachainsConfigurationPalletError (696) */ interface PolkadotRuntimeParachainsConfigurationPalletError extends Enum { readonly isInvalidNewValue: boolean; readonly type: "InvalidNewValue"; } - /** @name PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker (696) */ + /** @name PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker (699) */ interface PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker extends Struct { readonly buffer: Vec>; readonly latestNumber: u32; } - /** @name PolkadotRuntimeParachainsInclusionCandidatePendingAvailability (700) */ + /** @name PolkadotRuntimeParachainsInclusionCandidatePendingAvailability (703) */ interface PolkadotRuntimeParachainsInclusionCandidatePendingAvailability extends Struct { readonly core: u32; readonly hash_: H256; @@ -7628,7 +7648,7 @@ declare module "@polkadot/types/lookup" { readonly backingGroup: u32; } - /** @name PolkadotRuntimeParachainsInclusionPalletError (701) */ + /** @name PolkadotRuntimeParachainsInclusionPalletError (704) */ interface PolkadotRuntimeParachainsInclusionPalletError extends Enum { readonly isValidatorIndexOutOfBounds: boolean; readonly isUnscheduledCandidate: boolean; @@ -7667,7 +7687,7 @@ declare module "@polkadot/types/lookup" { | "ParaHeadMismatch"; } - /** @name PolkadotPrimitivesV8ScrapedOnChainVotes (702) */ + /** @name PolkadotPrimitivesV8ScrapedOnChainVotes (705) */ interface PolkadotPrimitivesV8ScrapedOnChainVotes extends Struct { readonly session: u32; readonly backingValidatorsPerCandidate: Vec< @@ -7676,7 +7696,7 @@ declare module "@polkadot/types/lookup" { readonly disputes: Vec; } - /** @name PolkadotRuntimeParachainsParasInherentPalletError (707) */ + /** @name PolkadotRuntimeParachainsParasInherentPalletError (710) */ interface PolkadotRuntimeParachainsParasInherentPalletError extends Enum { readonly isTooManyInclusionInherents: boolean; readonly isInvalidParentHeader: boolean; @@ -7691,7 +7711,7 @@ declare module "@polkadot/types/lookup" { | "UnscheduledCandidate"; } - /** @name PolkadotRuntimeParachainsSchedulerPalletCoreOccupied (710) */ + /** @name PolkadotRuntimeParachainsSchedulerPalletCoreOccupied (713) */ interface PolkadotRuntimeParachainsSchedulerPalletCoreOccupied extends Enum { readonly isFree: boolean; readonly isParas: boolean; @@ -7699,14 +7719,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Free" | "Paras"; } - /** @name PolkadotRuntimeParachainsSchedulerPalletParasEntry (711) */ + /** @name PolkadotRuntimeParachainsSchedulerPalletParasEntry (714) */ interface PolkadotRuntimeParachainsSchedulerPalletParasEntry extends Struct { readonly assignment: PolkadotRuntimeParachainsSchedulerCommonAssignment; readonly availabilityTimeouts: u32; readonly ttl: u32; } - /** @name PolkadotRuntimeParachainsSchedulerCommonAssignment (712) */ + /** @name PolkadotRuntimeParachainsSchedulerCommonAssignment (715) */ interface PolkadotRuntimeParachainsSchedulerCommonAssignment extends Enum { readonly isPool: boolean; readonly asPool: { @@ -7718,7 +7738,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pool" | "Bulk"; } - /** @name PolkadotRuntimeParachainsParasPvfCheckActiveVoteState (717) */ + /** @name PolkadotRuntimeParachainsParasPvfCheckActiveVoteState (720) */ interface PolkadotRuntimeParachainsParasPvfCheckActiveVoteState extends Struct { readonly votesAccept: BitVec; readonly votesReject: BitVec; @@ -7727,7 +7747,7 @@ declare module "@polkadot/types/lookup" { readonly causes: Vec; } - /** @name PolkadotRuntimeParachainsParasPvfCheckCause (719) */ + /** @name PolkadotRuntimeParachainsParasPvfCheckCause (722) */ interface PolkadotRuntimeParachainsParasPvfCheckCause extends Enum { readonly isOnboarding: boolean; readonly asOnboarding: u32; @@ -7740,14 +7760,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Onboarding" | "Upgrade"; } - /** @name PolkadotRuntimeParachainsParasUpgradeStrategy (720) */ + /** @name PolkadotRuntimeParachainsParasUpgradeStrategy (723) */ interface PolkadotRuntimeParachainsParasUpgradeStrategy extends Enum { readonly isSetGoAheadSignal: boolean; readonly isApplyAtExpectedBlock: boolean; readonly type: "SetGoAheadSignal" | "ApplyAtExpectedBlock"; } - /** @name PolkadotRuntimeParachainsParasParaLifecycle (722) */ + /** @name PolkadotRuntimeParachainsParasParaLifecycle (725) */ interface PolkadotRuntimeParachainsParasParaLifecycle extends Enum { readonly isOnboarding: boolean; readonly isParathread: boolean; @@ -7766,32 +7786,32 @@ declare module "@polkadot/types/lookup" { | "OffboardingParachain"; } - /** @name PolkadotRuntimeParachainsParasParaPastCodeMeta (724) */ + /** @name PolkadotRuntimeParachainsParasParaPastCodeMeta (727) */ interface PolkadotRuntimeParachainsParasParaPastCodeMeta extends Struct { readonly upgradeTimes: Vec; readonly lastPruned: Option; } - /** @name PolkadotRuntimeParachainsParasReplacementTimes (726) */ + /** @name PolkadotRuntimeParachainsParasReplacementTimes (729) */ interface PolkadotRuntimeParachainsParasReplacementTimes extends Struct { readonly expectedAt: u32; readonly activatedAt: u32; } - /** @name PolkadotPrimitivesV8UpgradeGoAhead (728) */ + /** @name PolkadotPrimitivesV8UpgradeGoAhead (731) */ interface PolkadotPrimitivesV8UpgradeGoAhead extends Enum { readonly isAbort: boolean; readonly isGoAhead: boolean; readonly type: "Abort" | "GoAhead"; } - /** @name PolkadotPrimitivesV8UpgradeRestriction (729) */ + /** @name PolkadotPrimitivesV8UpgradeRestriction (732) */ interface PolkadotPrimitivesV8UpgradeRestriction extends Enum { readonly isPresent: boolean; readonly type: "Present"; } - /** @name PolkadotRuntimeParachainsParasPalletError (730) */ + /** @name PolkadotRuntimeParachainsParasPalletError (733) */ interface PolkadotRuntimeParachainsParasPalletError extends Enum { readonly isNotRegistered: boolean; readonly isCannotOnboard: boolean; @@ -7822,20 +7842,20 @@ declare module "@polkadot/types/lookup" { | "InvalidCode"; } - /** @name PolkadotRuntimeParachainsInitializerBufferedSessionChange (732) */ + /** @name PolkadotRuntimeParachainsInitializerBufferedSessionChange (735) */ interface PolkadotRuntimeParachainsInitializerBufferedSessionChange extends Struct { readonly validators: Vec; readonly queued: Vec; readonly sessionIndex: u32; } - /** @name PolkadotCorePrimitivesInboundDownwardMessage (734) */ + /** @name PolkadotCorePrimitivesInboundDownwardMessage (737) */ interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct { readonly sentAt: u32; readonly msg: Bytes; } - /** @name PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest (735) */ + /** @name PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest (738) */ interface PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest extends Struct { readonly confirmed: bool; readonly age: u32; @@ -7845,7 +7865,7 @@ declare module "@polkadot/types/lookup" { readonly maxTotalSize: u32; } - /** @name PolkadotRuntimeParachainsHrmpHrmpChannel (737) */ + /** @name PolkadotRuntimeParachainsHrmpHrmpChannel (740) */ interface PolkadotRuntimeParachainsHrmpHrmpChannel extends Struct { readonly maxCapacity: u32; readonly maxTotalSize: u32; @@ -7857,13 +7877,13 @@ declare module "@polkadot/types/lookup" { readonly recipientDeposit: u128; } - /** @name PolkadotCorePrimitivesInboundHrmpMessage (739) */ + /** @name PolkadotCorePrimitivesInboundHrmpMessage (742) */ interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct { readonly sentAt: u32; readonly data: Bytes; } - /** @name PolkadotRuntimeParachainsHrmpPalletError (742) */ + /** @name PolkadotRuntimeParachainsHrmpPalletError (745) */ interface PolkadotRuntimeParachainsHrmpPalletError extends Enum { readonly isOpenHrmpChannelToSelf: boolean; readonly isOpenHrmpChannelInvalidRecipient: boolean; @@ -7908,7 +7928,7 @@ declare module "@polkadot/types/lookup" { | "ChannelCreationNotAuthorized"; } - /** @name PolkadotPrimitivesV8SessionInfo (744) */ + /** @name PolkadotPrimitivesV8SessionInfo (747) */ interface PolkadotPrimitivesV8SessionInfo extends Struct { readonly activeValidatorIndices: Vec; readonly randomSeed: U8aFixed; @@ -7925,13 +7945,13 @@ declare module "@polkadot/types/lookup" { readonly neededApprovals: u32; } - /** @name PolkadotPrimitivesV8IndexedVecValidatorIndex (745) */ + /** @name PolkadotPrimitivesV8IndexedVecValidatorIndex (748) */ interface PolkadotPrimitivesV8IndexedVecValidatorIndex extends Vec {} - /** @name PolkadotPrimitivesV8IndexedVecGroupIndex (746) */ + /** @name PolkadotPrimitivesV8IndexedVecGroupIndex (749) */ interface PolkadotPrimitivesV8IndexedVecGroupIndex extends Vec> {} - /** @name PolkadotPrimitivesV8DisputeState (748) */ + /** @name PolkadotPrimitivesV8DisputeState (751) */ interface PolkadotPrimitivesV8DisputeState extends Struct { readonly validatorsFor: BitVec; readonly validatorsAgainst: BitVec; @@ -7939,7 +7959,7 @@ declare module "@polkadot/types/lookup" { readonly concludedAt: Option; } - /** @name PolkadotRuntimeParachainsDisputesPalletError (750) */ + /** @name PolkadotRuntimeParachainsDisputesPalletError (753) */ interface PolkadotRuntimeParachainsDisputesPalletError extends Enum { readonly isDuplicateDisputeStatementSets: boolean; readonly isAncientDisputeStatement: boolean; @@ -7962,13 +7982,13 @@ declare module "@polkadot/types/lookup" { | "UnconfirmedDispute"; } - /** @name PolkadotPrimitivesV8SlashingPendingSlashes (751) */ + /** @name PolkadotPrimitivesV8SlashingPendingSlashes (754) */ interface PolkadotPrimitivesV8SlashingPendingSlashes extends Struct { readonly keys_: BTreeMap; readonly kind: PolkadotPrimitivesV8SlashingSlashingOffenceKind; } - /** @name PolkadotRuntimeParachainsDisputesSlashingPalletError (755) */ + /** @name PolkadotRuntimeParachainsDisputesSlashingPalletError (758) */ interface PolkadotRuntimeParachainsDisputesSlashingPalletError extends Enum { readonly isInvalidKeyOwnershipProof: boolean; readonly isInvalidSessionIndex: boolean; @@ -7985,7 +8005,7 @@ declare module "@polkadot/types/lookup" { | "DuplicateSlashingReport"; } - /** @name PalletMessageQueueBookState (756) */ + /** @name PalletMessageQueueBookState (759) */ interface PalletMessageQueueBookState extends Struct { readonly begin: u32; readonly end: u32; @@ -7995,13 +8015,13 @@ declare module "@polkadot/types/lookup" { readonly size_: u64; } - /** @name PalletMessageQueueNeighbours (758) */ + /** @name PalletMessageQueueNeighbours (761) */ interface PalletMessageQueueNeighbours extends Struct { readonly prev: DancelightRuntimeAggregateMessageOrigin; readonly next: DancelightRuntimeAggregateMessageOrigin; } - /** @name PalletMessageQueuePage (760) */ + /** @name PalletMessageQueuePage (763) */ interface PalletMessageQueuePage extends Struct { readonly remaining: u32; readonly remainingSize: u32; @@ -8011,7 +8031,7 @@ declare module "@polkadot/types/lookup" { readonly heap: Bytes; } - /** @name PalletMessageQueueError (762) */ + /** @name PalletMessageQueueError (765) */ interface PalletMessageQueueError extends Enum { readonly isNotReapable: boolean; readonly isNoPage: boolean; @@ -8034,13 +8054,13 @@ declare module "@polkadot/types/lookup" { | "RecursiveDisallowed"; } - /** @name PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount (763) */ + /** @name PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount (766) */ interface PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount extends Struct { readonly coreIndex: u32; readonly count: u32; } - /** @name PolkadotRuntimeParachainsOnDemandTypesQueueStatusType (764) */ + /** @name PolkadotRuntimeParachainsOnDemandTypesQueueStatusType (767) */ interface PolkadotRuntimeParachainsOnDemandTypesQueueStatusType extends Struct { readonly traffic: u128; readonly nextIndex: u32; @@ -8048,33 +8068,33 @@ declare module "@polkadot/types/lookup" { readonly freedIndices: BinaryHeapReverseQueueIndex; } - /** @name BinaryHeapReverseQueueIndex (766) */ + /** @name BinaryHeapReverseQueueIndex (769) */ interface BinaryHeapReverseQueueIndex extends Vec {} - /** @name BinaryHeapEnqueuedOrder (769) */ + /** @name BinaryHeapEnqueuedOrder (772) */ interface BinaryHeapEnqueuedOrder extends Vec {} - /** @name PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder (770) */ + /** @name PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder (773) */ interface PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder extends Struct { readonly paraId: u32; readonly idx: u32; } - /** @name PolkadotRuntimeParachainsOnDemandPalletError (774) */ + /** @name PolkadotRuntimeParachainsOnDemandPalletError (777) */ interface PolkadotRuntimeParachainsOnDemandPalletError extends Enum { readonly isQueueFull: boolean; readonly isSpotPriceHigherThanMaxAmount: boolean; readonly type: "QueueFull" | "SpotPriceHigherThanMaxAmount"; } - /** @name PolkadotRuntimeCommonParasRegistrarParaInfo (775) */ + /** @name PolkadotRuntimeCommonParasRegistrarParaInfo (778) */ interface PolkadotRuntimeCommonParasRegistrarParaInfo extends Struct { readonly manager: AccountId32; readonly deposit: u128; readonly locked: Option; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletError (777) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletError (780) */ interface PolkadotRuntimeCommonParasRegistrarPalletError extends Enum { readonly isNotRegistered: boolean; readonly isAlreadyRegistered: boolean; @@ -8107,33 +8127,33 @@ declare module "@polkadot/types/lookup" { | "CannotSwap"; } - /** @name PalletUtilityError (778) */ + /** @name PalletUtilityError (781) */ interface PalletUtilityError extends Enum { readonly isTooManyCalls: boolean; readonly type: "TooManyCalls"; } - /** @name PalletIdentityRegistration (780) */ + /** @name PalletIdentityRegistration (783) */ interface PalletIdentityRegistration extends Struct { readonly judgements: Vec>; readonly deposit: u128; readonly info: PalletIdentityLegacyIdentityInfo; } - /** @name PalletIdentityRegistrarInfo (789) */ + /** @name PalletIdentityRegistrarInfo (792) */ interface PalletIdentityRegistrarInfo extends Struct { readonly account: AccountId32; readonly fee: u128; readonly fields: u64; } - /** @name PalletIdentityAuthorityProperties (791) */ + /** @name PalletIdentityAuthorityProperties (794) */ interface PalletIdentityAuthorityProperties extends Struct { readonly suffix: Bytes; readonly allocation: u32; } - /** @name PalletIdentityError (793) */ + /** @name PalletIdentityError (796) */ interface PalletIdentityError extends Enum { readonly isTooManySubAccounts: boolean; readonly isNotFound: boolean; @@ -8190,7 +8210,7 @@ declare module "@polkadot/types/lookup" { | "NotExpired"; } - /** @name PalletSchedulerScheduled (796) */ + /** @name PalletSchedulerScheduled (799) */ interface PalletSchedulerScheduled extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -8199,14 +8219,14 @@ declare module "@polkadot/types/lookup" { readonly origin: DancelightRuntimeOriginCaller; } - /** @name PalletSchedulerRetryConfig (798) */ + /** @name PalletSchedulerRetryConfig (801) */ interface PalletSchedulerRetryConfig extends Struct { readonly totalRetries: u8; readonly remaining: u8; readonly period: u32; } - /** @name PalletSchedulerError (799) */ + /** @name PalletSchedulerError (802) */ interface PalletSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -8216,21 +8236,21 @@ declare module "@polkadot/types/lookup" { readonly type: "FailedToSchedule" | "NotFound" | "TargetBlockNumberInPast" | "RescheduleNoChange" | "Named"; } - /** @name PalletProxyProxyDefinition (802) */ + /** @name PalletProxyProxyDefinition (805) */ interface PalletProxyProxyDefinition extends Struct { readonly delegate: AccountId32; readonly proxyType: DancelightRuntimeProxyType; readonly delay: u32; } - /** @name PalletProxyAnnouncement (806) */ + /** @name PalletProxyAnnouncement (809) */ interface PalletProxyAnnouncement extends Struct { readonly real: AccountId32; readonly callHash: H256; readonly height: u32; } - /** @name PalletProxyError (808) */ + /** @name PalletProxyError (811) */ interface PalletProxyError extends Enum { readonly isTooMany: boolean; readonly isNotFound: boolean; @@ -8251,7 +8271,7 @@ declare module "@polkadot/types/lookup" { | "NoSelfProxy"; } - /** @name PalletMultisigMultisig (810) */ + /** @name PalletMultisigMultisig (813) */ interface PalletMultisigMultisig extends Struct { readonly when: PalletMultisigTimepoint; readonly deposit: u128; @@ -8259,7 +8279,7 @@ declare module "@polkadot/types/lookup" { readonly approvals: Vec; } - /** @name PalletMultisigError (812) */ + /** @name PalletMultisigError (815) */ interface PalletMultisigError extends Enum { readonly isMinimumThreshold: boolean; readonly isAlreadyApproved: boolean; @@ -8292,7 +8312,7 @@ declare module "@polkadot/types/lookup" { | "AlreadyStored"; } - /** @name PalletPreimageOldRequestStatus (813) */ + /** @name PalletPreimageOldRequestStatus (816) */ interface PalletPreimageOldRequestStatus extends Enum { readonly isUnrequested: boolean; readonly asUnrequested: { @@ -8308,7 +8328,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unrequested" | "Requested"; } - /** @name PalletPreimageRequestStatus (816) */ + /** @name PalletPreimageRequestStatus (819) */ interface PalletPreimageRequestStatus extends Enum { readonly isUnrequested: boolean; readonly asUnrequested: { @@ -8324,7 +8344,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unrequested" | "Requested"; } - /** @name PalletPreimageError (821) */ + /** @name PalletPreimageError (824) */ interface PalletPreimageError extends Enum { readonly isTooBig: boolean; readonly isAlreadyNoted: boolean; @@ -8345,7 +8365,7 @@ declare module "@polkadot/types/lookup" { | "TooFew"; } - /** @name PalletAssetRateError (822) */ + /** @name PalletAssetRateError (825) */ interface PalletAssetRateError extends Enum { readonly isUnknownAssetKind: boolean; readonly isAlreadyExists: boolean; @@ -8353,7 +8373,7 @@ declare module "@polkadot/types/lookup" { readonly type: "UnknownAssetKind" | "AlreadyExists" | "Overflow"; } - /** @name PalletXcmQueryStatus (823) */ + /** @name PalletXcmQueryStatus (826) */ interface PalletXcmQueryStatus extends Enum { readonly isPending: boolean; readonly asPending: { @@ -8375,7 +8395,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pending" | "VersionNotifier" | "Ready"; } - /** @name XcmVersionedResponse (827) */ + /** @name XcmVersionedResponse (830) */ interface XcmVersionedResponse extends Enum { readonly isV2: boolean; readonly asV2: XcmV2Response; @@ -8386,7 +8406,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name PalletXcmVersionMigrationStage (833) */ + /** @name PalletXcmVersionMigrationStage (836) */ interface PalletXcmVersionMigrationStage extends Enum { readonly isMigrateSupportedVersion: boolean; readonly isMigrateVersionNotifiers: boolean; @@ -8400,7 +8420,7 @@ declare module "@polkadot/types/lookup" { | "MigrateAndNotifyOldTargets"; } - /** @name PalletXcmRemoteLockedFungibleRecord (835) */ + /** @name PalletXcmRemoteLockedFungibleRecord (838) */ interface PalletXcmRemoteLockedFungibleRecord extends Struct { readonly amount: u128; readonly owner: XcmVersionedLocation; @@ -8408,7 +8428,7 @@ declare module "@polkadot/types/lookup" { readonly consumers: Vec>; } - /** @name PalletXcmError (842) */ + /** @name PalletXcmError (845) */ interface PalletXcmError extends Enum { readonly isUnreachable: boolean; readonly isSendFailure: boolean; @@ -8461,7 +8481,7 @@ declare module "@polkadot/types/lookup" { | "LocalExecutionIncomplete"; } - /** @name SnowbridgePalletInboundQueueError (843) */ + /** @name SnowbridgePalletInboundQueueError (846) */ interface SnowbridgePalletInboundQueueError extends Enum { readonly isInvalidGateway: boolean; readonly isInvalidEnvelope: boolean; @@ -8491,7 +8511,7 @@ declare module "@polkadot/types/lookup" { | "ConvertMessage"; } - /** @name SnowbridgeCoreInboundVerificationError (844) */ + /** @name SnowbridgeCoreInboundVerificationError (847) */ interface SnowbridgeCoreInboundVerificationError extends Enum { readonly isHeaderNotFound: boolean; readonly isLogNotFound: boolean; @@ -8501,7 +8521,7 @@ declare module "@polkadot/types/lookup" { readonly type: "HeaderNotFound" | "LogNotFound" | "InvalidLog" | "InvalidProof" | "InvalidExecutionProof"; } - /** @name SnowbridgePalletInboundQueueSendError (845) */ + /** @name SnowbridgePalletInboundQueueSendError (848) */ interface SnowbridgePalletInboundQueueSendError extends Enum { readonly isNotApplicable: boolean; readonly isNotRoutable: boolean; @@ -8520,7 +8540,7 @@ declare module "@polkadot/types/lookup" { | "Fees"; } - /** @name SnowbridgeRouterPrimitivesInboundConvertMessageError (846) */ + /** @name SnowbridgeRouterPrimitivesInboundConvertMessageError (849) */ interface SnowbridgeRouterPrimitivesInboundConvertMessageError extends Enum { readonly isUnsupportedVersion: boolean; readonly isInvalidDestination: boolean; @@ -8535,26 +8555,6 @@ declare module "@polkadot/types/lookup" { | "CannotReanchor"; } - /** @name SnowbridgePalletOutboundQueueCommittedMessage (848) */ - interface SnowbridgePalletOutboundQueueCommittedMessage extends Struct { - readonly channelId: SnowbridgeCoreChannelId; - readonly nonce: Compact; - readonly command: u8; - readonly params: Bytes; - readonly maxDispatchGas: Compact; - readonly maxFeePerGas: Compact; - readonly reward: Compact; - readonly id: H256; - } - - /** @name SnowbridgePalletOutboundQueueError (849) */ - interface SnowbridgePalletOutboundQueueError extends Enum { - readonly isMessageTooLarge: boolean; - readonly isHalted: boolean; - readonly isInvalidChannel: boolean; - readonly type: "MessageTooLarge" | "Halted" | "InvalidChannel"; - } - /** @name SnowbridgeCoreChannel (850) */ interface SnowbridgeCoreChannel extends Struct { readonly agentId: H256; From a067658c20ea0f3f53d2e2885c7ee42c78a7c2e7 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 15:09:58 +0100 Subject: [PATCH 25/26] toml-maid --- pallets/external-validator-slashes/Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pallets/external-validator-slashes/Cargo.toml b/pallets/external-validator-slashes/Cargo.toml index 470b60e3e..358971a46 100644 --- a/pallets/external-validator-slashes/Cargo.toml +++ b/pallets/external-validator-slashes/Cargo.toml @@ -30,7 +30,7 @@ tp-bridge = { workspace = true } tp-traits = { workspace = true } [dev-dependencies] -pallet-timestamp = { workspace = true, features=["std"] } +pallet-timestamp = { workspace = true, features = [ "std" ] } sp-core = { workspace = true } sp-io = { workspace = true } @@ -43,6 +43,7 @@ std = [ "log/std", "pallet-session/std", "pallet-staking/std", + "pallet-timestamp/std", "parity-scale-codec/std", "scale-info/std", "snowbridge-core/std", @@ -53,19 +54,18 @@ std = [ "sp-std/std", "tp-bridge/std", "tp-traits/std", - "pallet-timestamp/std" ] runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks", "pallet-staking/runtime-benchmarks", + "pallet-timestamp/runtime-benchmarks", "snowbridge-core/runtime-benchmarks", "sp-runtime/runtime-benchmarks", "sp-staking/runtime-benchmarks", "tp-bridge/runtime-benchmarks", "tp-traits/runtime-benchmarks", - "pallet-timestamp/runtime-benchmarks" ] try-runtime = [ @@ -73,6 +73,6 @@ try-runtime = [ "frame-system/try-runtime", "pallet-session/try-runtime", "pallet-staking/try-runtime", + "pallet-timestamp/try-runtime", "sp-runtime/try-runtime", - "pallet-timestamp/try-runtime" - ] +] From 0906182c24a0f52de51710336b50da1f7a7f1642 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 10 Jan 2025 15:25:59 +0100 Subject: [PATCH 26/26] fix clippy --- pallets/external-validator-slashes/src/mock.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pallets/external-validator-slashes/src/mock.rs b/pallets/external-validator-slashes/src/mock.rs index d6d5f75ce..b5b116580 100644 --- a/pallets/external-validator-slashes/src/mock.rs +++ b/pallets/external-validator-slashes/src/mock.rs @@ -208,7 +208,7 @@ impl DeferPeriodGetter { } pub fn sent_ethereum_message_nonce() -> u64 { - SENT_ETHEREUM_MESSAGE_NONCE.with(|q| (*q.borrow()).clone()) + SENT_ETHEREUM_MESSAGE_NONCE.with(|q| (*q.borrow())) } pub struct MockOkOutboundQueue;