diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_rococo_messages_to_bridge_hub_wococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_rococo_messages_to_bridge_hub_wococo.rs
index 9e4b5b15fd6d4609a66575ffa5d00e61e36d4911..18d9c31089c315473db5fa9e20e05b61dd24012c 100644
--- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_rococo_messages_to_bridge_hub_wococo.rs
+++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_rococo_messages_to_bridge_hub_wococo.rs
@@ -35,15 +35,15 @@ impl MessagesCliBridge for BridgeHubRococoToBridgeHubWococoMessagesCliBridge {
 substrate_relay_helper::generate_receive_message_proof_call_builder!(
 	BridgeHubRococoMessagesToBridgeHubWococoMessageLane,
 	BridgeHubRococoMessagesToBridgeHubWococoMessageLaneReceiveMessagesProofCallBuilder,
-	relay_bridge_hub_wococo_client::runtime::Call::BridgeRococoMessages,
-	relay_bridge_hub_wococo_client::runtime::BridgeRococoMessagesCall::receive_messages_proof
+	relay_bridge_hub_wococo_client::RuntimeCall::BridgeRococoMessages,
+	relay_bridge_hub_wococo_client::BridgeMessagesCall::receive_messages_proof
 );
 
 substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
 	BridgeHubRococoMessagesToBridgeHubWococoMessageLane,
 	BridgeHubRococoMessagesToBridgeHubWococoMessageLaneReceiveMessagesDeliveryProofCallBuilder,
-	relay_bridge_hub_rococo_client::runtime::Call::BridgeWococoMessages,
-	relay_bridge_hub_rococo_client::runtime::BridgeWococoMessagesCall::receive_messages_delivery_proof
+	relay_bridge_hub_rococo_client::RuntimeCall::BridgeWococoMessages,
+	relay_bridge_hub_rococo_client::BridgeMessagesCall::receive_messages_delivery_proof
 );
 
 /// Description of BridgeHubRococo -> BridgeHubWococo messages bridge.
diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_wococo_messages_to_bridge_hub_rococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_wococo_messages_to_bridge_hub_rococo.rs
index fb5a81c021e1984978afd8be2da265be2acd2b74..d327926823bf346c9673dceecc5ab3101e6c7af6 100644
--- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_wococo_messages_to_bridge_hub_rococo.rs
+++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/bridge_hub_wococo_messages_to_bridge_hub_rococo.rs
@@ -35,15 +35,15 @@ impl MessagesCliBridge for BridgeHubWococoToBridgeHubRococoMessagesCliBridge {
 substrate_relay_helper::generate_receive_message_proof_call_builder!(
 	BridgeHubWococoMessagesToBridgeHubRococoMessageLane,
 	BridgeHubWococoMessagesToBridgeHubRococoMessageLaneReceiveMessagesProofCallBuilder,
-	relay_bridge_hub_rococo_client::runtime::Call::BridgeWococoMessages,
-	relay_bridge_hub_rococo_client::runtime::BridgeWococoMessagesCall::receive_messages_proof
+	relay_bridge_hub_rococo_client::RuntimeCall::BridgeWococoMessages,
+	relay_bridge_hub_rococo_client::BridgeMessagesCall::receive_messages_proof
 );
 
 substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
 	BridgeHubWococoMessagesToBridgeHubRococoMessageLane,
 	BridgeHubWococoMessagesToBridgeHubRococoMessageLaneReceiveMessagesDeliveryProofCallBuilder,
-	relay_bridge_hub_wococo_client::runtime::Call::BridgeRococoMessages,
-	relay_bridge_hub_wococo_client::runtime::BridgeRococoMessagesCall::receive_messages_delivery_proof
+	relay_bridge_hub_wococo_client::RuntimeCall::BridgeRococoMessages,
+	relay_bridge_hub_wococo_client::BridgeMessagesCall::receive_messages_delivery_proof
 );
 
 /// Description of BridgeHubWococo -> BridgeHubRococo messages bridge.
diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs
index 2272144311c6d7154451e8be91e831ac343320e6..b7d17d931f84306d6d504440f26cb3cc48cf4455 100644
--- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs
+++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs
@@ -32,8 +32,8 @@ pub struct RococoFinalityToBridgeHubWococo;
 substrate_relay_helper::generate_submit_finality_proof_call_builder!(
 	RococoFinalityToBridgeHubWococo,
 	RococoFinalityToBridgeHubWococoCallBuilder,
-	relay_bridge_hub_wococo_client::runtime::Call::BridgeRococoGrandpa,
-	relay_bridge_hub_wococo_client::runtime::BridgeRococoGrandpaCall::submit_finality_proof
+	relay_bridge_hub_wococo_client::RuntimeCall::BridgeRococoGrandpa,
+	relay_bridge_hub_wococo_client::BridgeGrandpaCall::submit_finality_proof
 );
 
 #[async_trait]
diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_parachains_to_bridge_hub_wococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_parachains_to_bridge_hub_wococo.rs
index 78b4ff35a7d451b7183a2421b677487cc3d73a7d..b2704c092b845bb5a5bf6f3e67a1dc59c28afc87 100644
--- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_parachains_to_bridge_hub_wococo.rs
+++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_parachains_to_bridge_hub_wococo.rs
@@ -44,8 +44,8 @@ impl SubmitParachainHeadsCallBuilder<BridgeHubRococoToBridgeHubWococo>
 		parachains: Vec<(ParaId, ParaHash)>,
 		parachain_heads_proof: ParaHeadsProof,
 	) -> CallOf<relay_bridge_hub_wococo_client::BridgeHubWococo> {
-		relay_bridge_hub_wococo_client::runtime::Call::BridgeRococoParachain(
-			relay_bridge_hub_wococo_client::runtime::BridgeParachainCall::submit_parachain_heads {
+		relay_bridge_hub_wococo_client::RuntimeCall::BridgeRococoParachain(
+			relay_bridge_hub_wococo_client::BridgeParachainCall::submit_parachain_heads {
 				at_relay_block: (at_relay_block.0, at_relay_block.1),
 				parachains,
 				parachain_heads_proof,
diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs
index 3904300958216697d865d9e2f3f27040efc07104..206c83b815314974484babf0a48e6e20f9b8905d 100644
--- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs
+++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs
@@ -32,8 +32,8 @@ pub struct WococoFinalityToBridgeHubRococo;
 substrate_relay_helper::generate_submit_finality_proof_call_builder!(
 	WococoFinalityToBridgeHubRococo,
 	WococoFinalityToBridgeHubRococoCallBuilder,
-	relay_bridge_hub_rococo_client::runtime::Call::BridgeWococoGrandpa,
-	relay_bridge_hub_rococo_client::runtime::BridgeWococoGrandpaCall::submit_finality_proof
+	relay_bridge_hub_rococo_client::RuntimeCall::BridgeWococoGrandpa,
+	relay_bridge_hub_rococo_client::BridgeGrandpaCall::submit_finality_proof
 );
 
 #[async_trait]
diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_parachains_to_bridge_hub_rococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_parachains_to_bridge_hub_rococo.rs
index bc76e377c9214d11e21ec53f651d0b64c67b1a76..ca77857833d0b95e7403eea3a96887c11498d3cc 100644
--- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_parachains_to_bridge_hub_rococo.rs
+++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_parachains_to_bridge_hub_rococo.rs
@@ -44,8 +44,8 @@ impl SubmitParachainHeadsCallBuilder<BridgeHubWococoToBridgeHubRococo>
 		parachains: Vec<(ParaId, ParaHash)>,
 		parachain_heads_proof: ParaHeadsProof,
 	) -> CallOf<relay_bridge_hub_rococo_client::BridgeHubRococo> {
-		relay_bridge_hub_rococo_client::runtime::Call::BridgeWococoParachain(
-			bp_parachains::BridgeParachainCall::submit_parachain_heads {
+		relay_bridge_hub_rococo_client::RuntimeCall::BridgeWococoParachain(
+			relay_bridge_hub_rococo_client::BridgeParachainCall::submit_parachain_heads {
 				at_relay_block: (at_relay_block.0, at_relay_block.1),
 				parachains,
 				parachain_heads_proof,
diff --git a/bridges/relays/bin-substrate/src/cli/init_bridge.rs b/bridges/relays/bin-substrate/src/cli/init_bridge.rs
index 95cd02f6c6fcc3b1e97fde00d9fd7252679421d4..7b38d81227199f1bea1311940e0b8d16e6d02844 100644
--- a/bridges/relays/bin-substrate/src/cli/init_bridge.rs
+++ b/bridges/relays/bin-substrate/src/cli/init_bridge.rs
@@ -180,10 +180,8 @@ impl BridgeInitializer for RococoToBridgeHubWococoCliBridge {
 	fn encode_init_bridge(
 		init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
 	) -> <Self::Target as Chain>::Call {
-		relay_bridge_hub_wococo_client::runtime::Call::BridgeRococoGrandpa(
-			relay_bridge_hub_wococo_client::runtime::BridgeRococoGrandpaCall::initialize {
-				init_data,
-			},
+		relay_bridge_hub_wococo_client::RuntimeCall::BridgeRococoGrandpa(
+			relay_bridge_hub_wococo_client::BridgeGrandpaCall::initialize { init_data },
 		)
 	}
 }
@@ -194,10 +192,8 @@ impl BridgeInitializer for WococoToBridgeHubRococoCliBridge {
 	fn encode_init_bridge(
 		init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
 	) -> <Self::Target as Chain>::Call {
-		relay_bridge_hub_rococo_client::runtime::Call::BridgeWococoGrandpa(
-			relay_bridge_hub_rococo_client::runtime::BridgeWococoGrandpaCall::initialize {
-				init_data,
-			},
+		relay_bridge_hub_rococo_client::RuntimeCall::BridgeWococoGrandpa(
+			relay_bridge_hub_rococo_client::BridgeGrandpaCall::initialize { init_data },
 		)
 	}
 }
diff --git a/bridges/relays/client-bridge-hub-rococo/Cargo.toml b/bridges/relays/client-bridge-hub-rococo/Cargo.toml
index 5826a1321bc7260bffd4c09066292b5adbd58683..a901e029bf542184fdbcd0053cdef8bfff1200aa 100644
--- a/bridges/relays/client-bridge-hub-rococo/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-rococo/Cargo.toml
@@ -8,7 +8,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", features = ["derive"] }
 scale-info = { version = "2.6.0", default-features = false, features = ["derive"] }
-relay-substrate-client = { path = "../client-substrate" }
+subxt = { version = "0.28.0", default-features = false, features = [] }
 
 # Bridge dependencies
 
@@ -17,12 +17,15 @@ bp-bridge-hub-wococo = { path = "../../primitives/chain-bridge-hub-wococo" }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
+bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bp-runtime = { path = "../../primitives/runtime" }
 bp-wococo = { path = "../../primitives/chain-wococo" }
 
 bridge-runtime-common = { path = "../../bin/runtime-common" }
+relay-substrate-client = { path = "../client-substrate" }
 
 # Substrate Dependencies
 
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" }
+sp-weights = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/bridges/relays/client-bridge-hub-rococo/src/codegen_runtime.rs b/bridges/relays/client-bridge-hub-rococo/src/codegen_runtime.rs
new file mode 100644
index 0000000000000000000000000000000000000000..6488d923d75942bcf1b88174bf2d7d8625592c10
--- /dev/null
+++ b/bridges/relays/client-bridge-hub-rococo/src/codegen_runtime.rs
@@ -0,0 +1,3348 @@
+// Copyright 2019-2023 Parity Technologies (UK) Ltd.
+// This file is part of Parity Bridges Common.
+
+// Parity Bridges Common is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Parity Bridges Common is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Parity Bridges Common.  If not, see <http://www.gnu.org/licenses/>.
+
+//! Autogenerated runtime API
+//! THIS FILE WAS AUTOGENERATED USING parity-bridges-common::runtime-codegen
+//! EXECUTED COMMAND: target/debug/runtime-codegen --from-node-url
+//! wss://rococo-bridge-hub-rpc.polkadot.io:443
+
+#[allow(dead_code, unused_imports, non_camel_case_types)]
+#[allow(clippy::all)]
+pub mod api {
+	use super::api as root_mod;
+	pub mod runtime_types {
+		use super::runtime_types;
+		pub mod bounded_collections {
+			use super::runtime_types;
+			pub mod bounded_vec {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct BoundedVec<_0>(pub ::std::vec::Vec<_0>);
+			}
+			pub mod weak_bounded_vec {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct WeakBoundedVec<_0>(pub ::std::vec::Vec<_0>);
+			}
+		}
+		pub mod bp_header_chain {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum HeaderChainError {
+				#[codec(index = 0)]
+				UnknownHeader,
+				#[codec(index = 1)]
+				StorageProof(runtime_types::bp_runtime::storage_proof::Error),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct StoredHeaderData<_0, _1> {
+				pub number: _0,
+				pub state_root: _1,
+			}
+		}
+		pub mod bp_messages {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct DeliveredMessages {
+				pub begin: ::core::primitive::u64,
+				pub end: ::core::primitive::u64,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct InboundLaneData<_0> {
+				pub relayers: ::std::vec::Vec<runtime_types::bp_messages::UnrewardedRelayer<_0>>,
+				pub last_confirmed_nonce: ::core::primitive::u64,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct LaneId(pub [::core::primitive::u8; 4usize]);
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct MessageKey {
+				pub lane_id: runtime_types::bp_messages::LaneId,
+				pub nonce: ::core::primitive::u64,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum MessagesOperatingMode {
+				#[codec(index = 0)]
+				Basic(runtime_types::bp_runtime::BasicOperatingMode),
+				#[codec(index = 1)]
+				RejectingOutboundMessages,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct OutboundLaneData {
+				pub oldest_unpruned_nonce: ::core::primitive::u64,
+				pub latest_received_nonce: ::core::primitive::u64,
+				pub latest_generated_nonce: ::core::primitive::u64,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum ReceivalResult<_0> {
+				#[codec(index = 0)]
+				Dispatched(runtime_types::bp_runtime::messages::MessageDispatchResult<_0>),
+				#[codec(index = 1)]
+				InvalidNonce,
+				#[codec(index = 2)]
+				TooManyUnrewardedRelayers,
+				#[codec(index = 3)]
+				TooManyUnconfirmedMessages,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct ReceivedMessages<_0> {
+				pub lane: runtime_types::bp_messages::LaneId,
+				pub receive_results: ::std::vec::Vec<(
+					::core::primitive::u64,
+					runtime_types::bp_messages::ReceivalResult<_0>,
+				)>,
+				pub skipped_for_not_enough_weight: ::std::vec::Vec<::core::primitive::u64>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct UnrewardedRelayer<_0> {
+				pub relayer: _0,
+				pub messages: runtime_types::bp_messages::DeliveredMessages,
+			}
+		}
+		pub mod bp_parachains {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct BestParaHeadHash {
+				pub at_relay_block_number: ::core::primitive::u32,
+				pub head_hash: ::subxt::utils::H256,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct ParaInfo {
+				pub best_head_hash: runtime_types::bp_parachains::BestParaHeadHash,
+				pub next_imported_hash_position: ::core::primitive::u32,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct ParaStoredHeaderData(pub ::std::vec::Vec<::core::primitive::u8>);
+		}
+		pub mod bp_relayers {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum RewardsAccountOwner {
+				#[codec(index = 0)]
+				ThisChain,
+				#[codec(index = 1)]
+				BridgedChain,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct RewardsAccountParams {
+				pub lane_id: runtime_types::bp_messages::LaneId,
+				pub bridged_chain_id: [::core::primitive::u8; 4usize],
+				pub owner: runtime_types::bp_relayers::RewardsAccountOwner,
+			}
+		}
+		pub mod bp_runtime {
+			use super::runtime_types;
+			pub mod messages {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct MessageDispatchResult<_0> {
+					pub unspent_weight: ::sp_weights::Weight,
+					pub dispatch_level_result: _0,
+				}
+			}
+			pub mod storage_proof {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					DuplicateNodesInProof,
+					#[codec(index = 1)]
+					UnusedNodesInTheProof,
+					#[codec(index = 2)]
+					StorageRootMismatch,
+					#[codec(index = 3)]
+					StorageValueUnavailable,
+					#[codec(index = 4)]
+					StorageValueEmpty,
+					#[codec(index = 5)]
+					StorageValueDecodeFailed(runtime_types::bp_runtime::StrippableError),
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum BasicOperatingMode {
+				#[codec(index = 0)]
+				Normal,
+				#[codec(index = 1)]
+				Halted,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct HeaderId<_0, _1>(pub _1, pub _0);
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum OwnedBridgeModuleError {
+				#[codec(index = 0)]
+				Halted,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct StrippableError;
+		}
+		pub mod bridge_hub_rococo_runtime {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct BridgeRejectObsoleteHeadersAndMessages;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum OriginCaller {
+				#[codec(index = 0)]
+				system(
+					runtime_types::frame_support::dispatch::RawOrigin<
+						::sp_core::crypto::AccountId32,
+					>,
+				),
+				#[codec(index = 31)]
+				PolkadotXcm(runtime_types::pallet_xcm::pallet::Origin),
+				#[codec(index = 32)]
+				CumulusXcm(runtime_types::cumulus_pallet_xcm::pallet::Origin),
+				#[codec(index = 3)]
+				Void(runtime_types::sp_core::Void),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct Runtime;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum RuntimeCall {
+				#[codec(index = 0)]
+				System(runtime_types::frame_system::pallet::Call),
+				#[codec(index = 1)]
+				ParachainSystem(runtime_types::cumulus_pallet_parachain_system::pallet::Call),
+				#[codec(index = 2)]
+				Timestamp(runtime_types::pallet_timestamp::pallet::Call),
+				#[codec(index = 10)]
+				Balances(runtime_types::pallet_balances::pallet::Call),
+				#[codec(index = 21)]
+				CollatorSelection(runtime_types::pallet_collator_selection::pallet::Call),
+				#[codec(index = 22)]
+				Session(runtime_types::pallet_session::pallet::Call),
+				#[codec(index = 30)]
+				XcmpQueue(runtime_types::cumulus_pallet_xcmp_queue::pallet::Call),
+				#[codec(index = 31)]
+				PolkadotXcm(runtime_types::pallet_xcm::pallet::Call),
+				#[codec(index = 33)]
+				DmpQueue(runtime_types::cumulus_pallet_dmp_queue::pallet::Call),
+				#[codec(index = 40)]
+				Utility(runtime_types::pallet_utility::pallet::Call),
+				#[codec(index = 36)]
+				Multisig(runtime_types::pallet_multisig::pallet::Call),
+				#[codec(index = 41)]
+				BridgeWococoGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Call),
+				#[codec(index = 42)]
+				BridgeWococoParachain(runtime_types::pallet_bridge_parachains::pallet::Call),
+				#[codec(index = 46)]
+				BridgeWococoMessages(runtime_types::pallet_bridge_messages::pallet::Call),
+				#[codec(index = 43)]
+				BridgeRococoGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Call),
+				#[codec(index = 44)]
+				BridgeRococoParachain(runtime_types::pallet_bridge_parachains::pallet::Call),
+				#[codec(index = 45)]
+				BridgeRococoMessages(runtime_types::pallet_bridge_messages::pallet::Call),
+				#[codec(index = 47)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Call),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum RuntimeEvent {
+				#[codec(index = 0)]
+				System(runtime_types::frame_system::pallet::Event),
+				#[codec(index = 1)]
+				ParachainSystem(runtime_types::cumulus_pallet_parachain_system::pallet::Event),
+				#[codec(index = 10)]
+				Balances(runtime_types::pallet_balances::pallet::Event),
+				#[codec(index = 11)]
+				TransactionPayment(runtime_types::pallet_transaction_payment::pallet::Event),
+				#[codec(index = 21)]
+				CollatorSelection(runtime_types::pallet_collator_selection::pallet::Event),
+				#[codec(index = 22)]
+				Session(runtime_types::pallet_session::pallet::Event),
+				#[codec(index = 30)]
+				XcmpQueue(runtime_types::cumulus_pallet_xcmp_queue::pallet::Event),
+				#[codec(index = 31)]
+				PolkadotXcm(runtime_types::pallet_xcm::pallet::Event),
+				#[codec(index = 32)]
+				CumulusXcm(runtime_types::cumulus_pallet_xcm::pallet::Event),
+				#[codec(index = 33)]
+				DmpQueue(runtime_types::cumulus_pallet_dmp_queue::pallet::Event),
+				#[codec(index = 40)]
+				Utility(runtime_types::pallet_utility::pallet::Event),
+				#[codec(index = 36)]
+				Multisig(runtime_types::pallet_multisig::pallet::Event),
+				#[codec(index = 41)]
+				BridgeWococoGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Event),
+				#[codec(index = 42)]
+				BridgeWococoParachain(runtime_types::pallet_bridge_parachains::pallet::Event),
+				#[codec(index = 46)]
+				BridgeWococoMessages(runtime_types::pallet_bridge_messages::pallet::Event),
+				#[codec(index = 43)]
+				BridgeRococoGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Event),
+				#[codec(index = 44)]
+				BridgeRococoParachain(runtime_types::pallet_bridge_parachains::pallet::Event),
+				#[codec(index = 45)]
+				BridgeRococoMessages(runtime_types::pallet_bridge_messages::pallet::Event),
+				#[codec(index = 47)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Event),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct SessionKeys {
+				pub aura: runtime_types::sp_consensus_aura::sr25519::app_sr25519::Public,
+			}
+		}
+		pub mod bridge_runtime_common {
+			use super::runtime_types;
+			pub mod messages_xcm_extension {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum XcmBlobMessageDispatchResult {
+					#[codec(index = 0)]
+					InvalidPayload,
+					#[codec(index = 1)]
+					Dispatched,
+					#[codec(index = 2)]
+					NotDispatched,
+				}
+			}
+			pub mod refund_relayer_extension {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RefundBridgedParachainMessages;
+			}
+		}
+		pub mod cumulus_pallet_dmp_queue {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					service_overweight {
+						index: ::core::primitive::u64,
+						weight_limit: ::sp_weights::Weight,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					Unknown,
+					#[codec(index = 1)]
+					OverLimit,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					InvalidFormat { message_id: [::core::primitive::u8; 32usize] },
+					#[codec(index = 1)]
+					UnsupportedVersion { message_id: [::core::primitive::u8; 32usize] },
+					#[codec(index = 2)]
+					ExecutedDownward {
+						message_id: [::core::primitive::u8; 32usize],
+						outcome: runtime_types::xcm::v3::traits::Outcome,
+					},
+					#[codec(index = 3)]
+					WeightExhausted {
+						message_id: [::core::primitive::u8; 32usize],
+						remaining_weight: ::sp_weights::Weight,
+						required_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 4)]
+					OverweightEnqueued {
+						message_id: [::core::primitive::u8; 32usize],
+						overweight_index: ::core::primitive::u64,
+						required_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 5)]
+					OverweightServiced {
+						overweight_index: ::core::primitive::u64,
+						weight_used: ::sp_weights::Weight,
+					},
+					#[codec(index = 6)]
+					MaxMessagesExhausted { message_id: [::core::primitive::u8; 32usize] },
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct ConfigData {
+				pub max_individual: ::sp_weights::Weight,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct PageIndexData {
+				pub begin_used: ::core::primitive::u32,
+				pub end_used: ::core::primitive::u32,
+				pub overweight_count: ::core::primitive::u64,
+			}
+		}
+		pub mod cumulus_pallet_parachain_system {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					# [codec (index = 0)] set_validation_data { data : runtime_types :: cumulus_primitives_parachain_inherent :: ParachainInherentData , } , # [codec (index = 1)] sudo_send_upward_message { message : :: std :: vec :: Vec < :: core :: primitive :: u8 > , } , # [codec (index = 2)] authorize_upgrade { code_hash : :: subxt :: utils :: H256 , check_version : :: core :: primitive :: bool , } , # [codec (index = 3)] enact_authorized_upgrade { code : :: std :: vec :: Vec < :: core :: primitive :: u8 > , } , }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					OverlappingUpgrades,
+					#[codec(index = 1)]
+					ProhibitedByPolkadot,
+					#[codec(index = 2)]
+					TooBig,
+					#[codec(index = 3)]
+					ValidationDataNotAvailable,
+					#[codec(index = 4)]
+					HostConfigurationNotAvailable,
+					#[codec(index = 5)]
+					NotScheduled,
+					#[codec(index = 6)]
+					NothingAuthorized,
+					#[codec(index = 7)]
+					Unauthorized,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					ValidationFunctionStored,
+					#[codec(index = 1)]
+					ValidationFunctionApplied { relay_chain_block_num: ::core::primitive::u32 },
+					#[codec(index = 2)]
+					ValidationFunctionDiscarded,
+					#[codec(index = 3)]
+					UpgradeAuthorized { code_hash: ::subxt::utils::H256 },
+					#[codec(index = 4)]
+					DownwardMessagesReceived { count: ::core::primitive::u32 },
+					#[codec(index = 5)]
+					DownwardMessagesProcessed {
+						weight_used: ::sp_weights::Weight,
+						dmq_head: ::subxt::utils::H256,
+					},
+					#[codec(index = 6)]
+					UpwardMessageSent {
+						message_hash: ::core::option::Option<[::core::primitive::u8; 32usize]>,
+					},
+				}
+			}
+			pub mod relay_state_snapshot {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct MessagingStateSnapshot {
+					pub dmq_mqc_head: ::subxt::utils::H256,
+					pub relay_dispatch_queue_size: (::core::primitive::u32, ::core::primitive::u32),
+					pub ingress_channels: ::std::vec::Vec<(
+						runtime_types::polkadot_parachain::primitives::Id,
+						runtime_types::polkadot_primitives::v4::AbridgedHrmpChannel,
+					)>,
+					pub egress_channels: ::std::vec::Vec<(
+						runtime_types::polkadot_parachain::primitives::Id,
+						runtime_types::polkadot_primitives::v4::AbridgedHrmpChannel,
+					)>,
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct CodeUpgradeAuthorization {
+				pub code_hash: ::subxt::utils::H256,
+				pub check_version: ::core::primitive::bool,
+			}
+		}
+		pub mod cumulus_pallet_xcm {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					InvalidFormat([::core::primitive::u8; 32usize]),
+					#[codec(index = 1)]
+					UnsupportedVersion([::core::primitive::u8; 32usize]),
+					#[codec(index = 2)]
+					ExecutedDownward(
+						[::core::primitive::u8; 32usize],
+						runtime_types::xcm::v3::traits::Outcome,
+					),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Origin {
+					#[codec(index = 0)]
+					Relay,
+					#[codec(index = 1)]
+					SiblingParachain(runtime_types::polkadot_parachain::primitives::Id),
+				}
+			}
+		}
+		pub mod cumulus_pallet_xcmp_queue {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					service_overweight {
+						index: ::core::primitive::u64,
+						weight_limit: ::sp_weights::Weight,
+					},
+					#[codec(index = 1)]
+					suspend_xcm_execution,
+					#[codec(index = 2)]
+					resume_xcm_execution,
+					#[codec(index = 3)]
+					update_suspend_threshold { new: ::core::primitive::u32 },
+					#[codec(index = 4)]
+					update_drop_threshold { new: ::core::primitive::u32 },
+					#[codec(index = 5)]
+					update_resume_threshold { new: ::core::primitive::u32 },
+					#[codec(index = 6)]
+					update_threshold_weight { new: ::sp_weights::Weight },
+					#[codec(index = 7)]
+					update_weight_restrict_decay { new: ::sp_weights::Weight },
+					#[codec(index = 8)]
+					update_xcmp_max_individual_weight { new: ::sp_weights::Weight },
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					FailedToSend,
+					#[codec(index = 1)]
+					BadXcmOrigin,
+					#[codec(index = 2)]
+					BadXcm,
+					#[codec(index = 3)]
+					BadOverweightIndex,
+					#[codec(index = 4)]
+					WeightOverLimit,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					Success {
+						message_hash: ::core::option::Option<[::core::primitive::u8; 32usize]>,
+						weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 1)]
+					Fail {
+						message_hash: ::core::option::Option<[::core::primitive::u8; 32usize]>,
+						error: runtime_types::xcm::v3::traits::Error,
+						weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 2)]
+					BadVersion {
+						message_hash: ::core::option::Option<[::core::primitive::u8; 32usize]>,
+					},
+					#[codec(index = 3)]
+					BadFormat {
+						message_hash: ::core::option::Option<[::core::primitive::u8; 32usize]>,
+					},
+					#[codec(index = 4)]
+					XcmpMessageSent {
+						message_hash: ::core::option::Option<[::core::primitive::u8; 32usize]>,
+					},
+					#[codec(index = 5)]
+					OverweightEnqueued {
+						sender: runtime_types::polkadot_parachain::primitives::Id,
+						sent_at: ::core::primitive::u32,
+						index: ::core::primitive::u64,
+						required: ::sp_weights::Weight,
+					},
+					#[codec(index = 6)]
+					OverweightServiced { index: ::core::primitive::u64, used: ::sp_weights::Weight },
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct InboundChannelDetails {
+				pub sender: runtime_types::polkadot_parachain::primitives::Id,
+				pub state: runtime_types::cumulus_pallet_xcmp_queue::InboundState,
+				pub message_metadata: ::std::vec::Vec<(
+					::core::primitive::u32,
+					runtime_types::polkadot_parachain::primitives::XcmpMessageFormat,
+				)>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum InboundState {
+				#[codec(index = 0)]
+				Ok,
+				#[codec(index = 1)]
+				Suspended,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct OutboundChannelDetails {
+				pub recipient: runtime_types::polkadot_parachain::primitives::Id,
+				pub state: runtime_types::cumulus_pallet_xcmp_queue::OutboundState,
+				pub signals_exist: ::core::primitive::bool,
+				pub first_index: ::core::primitive::u16,
+				pub last_index: ::core::primitive::u16,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum OutboundState {
+				#[codec(index = 0)]
+				Ok,
+				#[codec(index = 1)]
+				Suspended,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct QueueConfigData {
+				pub suspend_threshold: ::core::primitive::u32,
+				pub drop_threshold: ::core::primitive::u32,
+				pub resume_threshold: ::core::primitive::u32,
+				pub threshold_weight: ::sp_weights::Weight,
+				pub weight_restrict_decay: ::sp_weights::Weight,
+				pub xcmp_max_individual_weight: ::sp_weights::Weight,
+			}
+		}
+		pub mod cumulus_primitives_parachain_inherent {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct MessageQueueChain(pub ::subxt::utils::H256);
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct ParachainInherentData {
+				pub validation_data:
+					runtime_types::polkadot_primitives::v4::PersistedValidationData<
+						::subxt::utils::H256,
+						::core::primitive::u32,
+					>,
+				pub relay_chain_state: runtime_types::sp_trie::storage_proof::StorageProof,
+				pub downward_messages: ::std::vec::Vec<
+					runtime_types::polkadot_core_primitives::InboundDownwardMessage<
+						::core::primitive::u32,
+					>,
+				>,
+				pub horizontal_messages: ::subxt::utils::KeyedVec<
+					runtime_types::polkadot_parachain::primitives::Id,
+					::std::vec::Vec<
+						runtime_types::polkadot_core_primitives::InboundHrmpMessage<
+							::core::primitive::u32,
+						>,
+					>,
+				>,
+			}
+		}
+		pub mod finality_grandpa {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct Commit<_0, _1, _2, _3> {
+				pub target_hash: _0,
+				pub target_number: _1,
+				pub precommits: ::std::vec::Vec<
+					runtime_types::finality_grandpa::SignedPrecommit<_0, _1, _2, _3>,
+				>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct Precommit<_0, _1> {
+				pub target_hash: _0,
+				pub target_number: _1,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct SignedPrecommit<_0, _1, _2, _3> {
+				pub precommit: runtime_types::finality_grandpa::Precommit<_0, _1>,
+				pub signature: _2,
+				pub id: _3,
+			}
+		}
+		pub mod frame_support {
+			use super::runtime_types;
+			pub mod dispatch {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum DispatchClass {
+					#[codec(index = 0)]
+					Normal,
+					#[codec(index = 1)]
+					Operational,
+					#[codec(index = 2)]
+					Mandatory,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct DispatchInfo {
+					pub weight: ::sp_weights::Weight,
+					pub class: runtime_types::frame_support::dispatch::DispatchClass,
+					pub pays_fee: runtime_types::frame_support::dispatch::Pays,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Pays {
+					#[codec(index = 0)]
+					Yes,
+					#[codec(index = 1)]
+					No,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct PerDispatchClass<_0> {
+					pub normal: _0,
+					pub operational: _0,
+					pub mandatory: _0,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum RawOrigin<_0> {
+					#[codec(index = 0)]
+					Root,
+					#[codec(index = 1)]
+					Signed(_0),
+					#[codec(index = 2)]
+					None,
+				}
+			}
+			pub mod traits {
+				use super::runtime_types;
+				pub mod tokens {
+					use super::runtime_types;
+					pub mod misc {
+						use super::runtime_types;
+						#[derive(
+							:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq,
+						)]
+						pub enum BalanceStatus {
+							#[codec(index = 0)]
+							Free,
+							#[codec(index = 1)]
+							Reserved,
+						}
+					}
+				}
+			}
+		}
+		pub mod frame_system {
+			use super::runtime_types;
+			pub mod extensions {
+				use super::runtime_types;
+				pub mod check_genesis {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct CheckGenesis;
+				}
+				pub mod check_mortality {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct CheckMortality(pub ::sp_runtime::generic::Era);
+				}
+				pub mod check_non_zero_sender {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct CheckNonZeroSender;
+				}
+				pub mod check_nonce {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct CheckNonce(#[codec(compact)] pub ::core::primitive::u32);
+				}
+				pub mod check_spec_version {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct CheckSpecVersion;
+				}
+				pub mod check_tx_version {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct CheckTxVersion;
+				}
+				pub mod check_weight {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct CheckWeight;
+				}
+			}
+			pub mod limits {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct BlockLength {
+					pub max: runtime_types::frame_support::dispatch::PerDispatchClass<
+						::core::primitive::u32,
+					>,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct BlockWeights {
+					pub base_block: ::sp_weights::Weight,
+					pub max_block: ::sp_weights::Weight,
+					pub per_class: runtime_types::frame_support::dispatch::PerDispatchClass<
+						runtime_types::frame_system::limits::WeightsPerClass,
+					>,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct WeightsPerClass {
+					pub base_extrinsic: ::sp_weights::Weight,
+					pub max_extrinsic: ::core::option::Option<::sp_weights::Weight>,
+					pub max_total: ::core::option::Option<::sp_weights::Weight>,
+					pub reserved: ::core::option::Option<::sp_weights::Weight>,
+				}
+			}
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					remark { remark: ::std::vec::Vec<::core::primitive::u8> },
+					#[codec(index = 1)]
+					set_heap_pages { pages: ::core::primitive::u64 },
+					#[codec(index = 2)]
+					set_code { code: ::std::vec::Vec<::core::primitive::u8> },
+					#[codec(index = 3)]
+					set_code_without_checks { code: ::std::vec::Vec<::core::primitive::u8> },
+					#[codec(index = 4)]
+					set_storage {
+						items: ::std::vec::Vec<(
+							::std::vec::Vec<::core::primitive::u8>,
+							::std::vec::Vec<::core::primitive::u8>,
+						)>,
+					},
+					#[codec(index = 5)]
+					kill_storage { keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>> },
+					#[codec(index = 6)]
+					kill_prefix {
+						prefix: ::std::vec::Vec<::core::primitive::u8>,
+						subkeys: ::core::primitive::u32,
+					},
+					#[codec(index = 7)]
+					remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8> },
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					InvalidSpecName,
+					#[codec(index = 1)]
+					SpecVersionNeedsToIncrease,
+					#[codec(index = 2)]
+					FailedToExtractRuntimeVersion,
+					#[codec(index = 3)]
+					NonDefaultComposite,
+					#[codec(index = 4)]
+					NonZeroRefCount,
+					#[codec(index = 5)]
+					CallFiltered,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					ExtrinsicSuccess {
+						dispatch_info: runtime_types::frame_support::dispatch::DispatchInfo,
+					},
+					#[codec(index = 1)]
+					ExtrinsicFailed {
+						dispatch_error: runtime_types::sp_runtime::DispatchError,
+						dispatch_info: runtime_types::frame_support::dispatch::DispatchInfo,
+					},
+					#[codec(index = 2)]
+					CodeUpdated,
+					#[codec(index = 3)]
+					NewAccount { account: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 4)]
+					KilledAccount { account: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 5)]
+					Remarked { sender: ::sp_core::crypto::AccountId32, hash: ::subxt::utils::H256 },
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct AccountInfo<_0, _1> {
+				pub nonce: _0,
+				pub consumers: _0,
+				pub providers: _0,
+				pub sufficients: _0,
+				pub data: _1,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct EventRecord<_0, _1> {
+				pub phase: runtime_types::frame_system::Phase,
+				pub event: _0,
+				pub topics: ::std::vec::Vec<_1>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct LastRuntimeUpgradeInfo {
+				#[codec(compact)]
+				pub spec_version: ::core::primitive::u32,
+				pub spec_name: ::std::string::String,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum Phase {
+				#[codec(index = 0)]
+				ApplyExtrinsic(::core::primitive::u32),
+				#[codec(index = 1)]
+				Finalization,
+				#[codec(index = 2)]
+				Initialization,
+			}
+		}
+		pub mod pallet_balances {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					transfer_allow_death {
+						dest: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						#[codec(compact)]
+						value: ::core::primitive::u128,
+					},
+					#[codec(index = 1)]
+					set_balance_deprecated {
+						who: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						#[codec(compact)]
+						new_free: ::core::primitive::u128,
+						#[codec(compact)]
+						old_reserved: ::core::primitive::u128,
+					},
+					#[codec(index = 2)]
+					force_transfer {
+						source: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						dest: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						#[codec(compact)]
+						value: ::core::primitive::u128,
+					},
+					#[codec(index = 3)]
+					transfer_keep_alive {
+						dest: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						#[codec(compact)]
+						value: ::core::primitive::u128,
+					},
+					#[codec(index = 4)]
+					transfer_all {
+						dest: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						keep_alive: ::core::primitive::bool,
+					},
+					#[codec(index = 5)]
+					force_unreserve {
+						who: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 6)]
+					upgrade_accounts { who: ::std::vec::Vec<::sp_core::crypto::AccountId32> },
+					#[codec(index = 7)]
+					transfer {
+						dest: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						#[codec(compact)]
+						value: ::core::primitive::u128,
+					},
+					#[codec(index = 8)]
+					force_set_balance {
+						who: ::subxt::utils::MultiAddress<::sp_core::crypto::AccountId32, ()>,
+						#[codec(compact)]
+						new_free: ::core::primitive::u128,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					VestingBalance,
+					#[codec(index = 1)]
+					LiquidityRestrictions,
+					#[codec(index = 2)]
+					InsufficientBalance,
+					#[codec(index = 3)]
+					ExistentialDeposit,
+					#[codec(index = 4)]
+					Expendability,
+					#[codec(index = 5)]
+					ExistingVestingSchedule,
+					#[codec(index = 6)]
+					DeadAccount,
+					#[codec(index = 7)]
+					TooManyReserves,
+					#[codec(index = 8)]
+					TooManyHolds,
+					#[codec(index = 9)]
+					TooManyFreezes,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					Endowed {
+						account: ::sp_core::crypto::AccountId32,
+						free_balance: ::core::primitive::u128,
+					},
+					#[codec(index = 1)]
+					DustLost {
+						account: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 2)]
+					Transfer {
+						from: ::sp_core::crypto::AccountId32,
+						to: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 3)]
+					BalanceSet {
+						who: ::sp_core::crypto::AccountId32,
+						free: ::core::primitive::u128,
+					},
+					#[codec(index = 4)]
+					Reserved {
+						who: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 5)]
+					Unreserved {
+						who: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 6)]
+					ReserveRepatriated {
+						from: ::sp_core::crypto::AccountId32,
+						to: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+						destination_status:
+							runtime_types::frame_support::traits::tokens::misc::BalanceStatus,
+					},
+					#[codec(index = 7)]
+					Deposit { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 8)]
+					Withdraw {
+						who: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 9)]
+					Slashed { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 10)]
+					Minted { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 11)]
+					Burned { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 12)]
+					Suspended {
+						who: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 13)]
+					Restored {
+						who: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 14)]
+					Upgraded { who: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 15)]
+					Issued { amount: ::core::primitive::u128 },
+					#[codec(index = 16)]
+					Rescinded { amount: ::core::primitive::u128 },
+				}
+			}
+			pub mod types {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct AccountData<_0> {
+					pub free: _0,
+					pub reserved: _0,
+					pub frozen: _0,
+					pub flags: runtime_types::pallet_balances::types::ExtraFlags,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct BalanceLock<_0> {
+					pub id: [::core::primitive::u8; 8usize],
+					pub amount: _0,
+					pub reasons: runtime_types::pallet_balances::types::Reasons,
+				}
+				#[derive(
+					:: codec :: Decode,
+					:: codec :: Encode,
+					:: subxt :: ext :: codec :: CompactAs,
+					Clone,
+					Debug,
+					PartialEq,
+				)]
+				pub struct ExtraFlags(pub ::core::primitive::u128);
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct IdAmount<_0, _1> {
+					pub id: _0,
+					pub amount: _1,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Reasons {
+					#[codec(index = 0)]
+					Fee,
+					#[codec(index = 1)]
+					Misc,
+					#[codec(index = 2)]
+					All,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct ReserveData<_0, _1> {
+					pub id: _0,
+					pub amount: _1,
+				}
+			}
+		}
+		pub mod pallet_bridge_grandpa {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					submit_finality_proof {
+						finality_target: ::std::boxed::Box<
+							::sp_runtime::generic::Header<
+								::core::primitive::u32,
+								::sp_runtime::traits::BlakeTwo256,
+							>,
+						>,
+						justification: ::bp_header_chain::justification::GrandpaJustification<
+							::sp_runtime::generic::Header<
+								::core::primitive::u32,
+								::sp_runtime::traits::BlakeTwo256,
+							>,
+						>,
+					},
+					#[codec(index = 1)]
+					initialize {
+						init_data: ::bp_header_chain::InitializationData<
+							::sp_runtime::generic::Header<
+								::core::primitive::u32,
+								::sp_runtime::traits::BlakeTwo256,
+							>,
+						>,
+					},
+					#[codec(index = 2)]
+					set_owner { new_owner: ::core::option::Option<::sp_core::crypto::AccountId32> },
+					#[codec(index = 3)]
+					set_operating_mode {
+						operating_mode: runtime_types::bp_runtime::BasicOperatingMode,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					InvalidJustification,
+					#[codec(index = 1)]
+					InvalidAuthoritySet,
+					#[codec(index = 2)]
+					TooManyRequests,
+					#[codec(index = 3)]
+					OldHeader,
+					#[codec(index = 4)]
+					UnsupportedScheduledChange,
+					#[codec(index = 5)]
+					NotInitialized,
+					#[codec(index = 6)]
+					AlreadyInitialized,
+					#[codec(index = 7)]
+					TooManyAuthoritiesInSet,
+					#[codec(index = 8)]
+					BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					UpdatedBestFinalizedHeader {
+						number: ::core::primitive::u32,
+						hash: ::subxt::utils::H256,
+					},
+				}
+			}
+			pub mod storage_types {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct StoredAuthoritySet {
+					pub authorities: runtime_types::bounded_collections::bounded_vec::BoundedVec<(
+						runtime_types::sp_consensus_grandpa::app::Public,
+						::core::primitive::u64,
+					)>,
+					pub set_id: ::core::primitive::u64,
+				}
+			}
+		}
+		pub mod pallet_bridge_messages {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					# [codec (index = 0)] set_owner { new_owner : :: core :: option :: Option < :: sp_core :: crypto :: AccountId32 > , } , # [codec (index = 1)] set_operating_mode { operating_mode : runtime_types :: bp_messages :: MessagesOperatingMode , } , # [codec (index = 2)] receive_messages_proof { relayer_id_at_bridged_chain : :: sp_core :: crypto :: AccountId32 , proof : :: bridge_runtime_common :: messages :: target :: FromBridgedChainMessagesProof < :: subxt :: utils :: H256 > , messages_count : :: core :: primitive :: u32 , dispatch_weight : :: sp_weights :: Weight , } , # [codec (index = 3)] receive_messages_delivery_proof { proof : :: bridge_runtime_common :: messages :: source :: FromBridgedChainMessagesDeliveryProof < :: subxt :: utils :: H256 > , relayers_state : :: bp_messages :: UnrewardedRelayersState , } , }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					NotOperatingNormally,
+					#[codec(index = 1)]
+					InactiveOutboundLane,
+					#[codec(index = 2)]
+					MessageIsTooLarge,
+					#[codec(index = 3)]
+					MessageRejectedByChainVerifier,
+					#[codec(index = 4)]
+					MessageRejectedByLaneVerifier,
+					#[codec(index = 5)]
+					FailedToWithdrawMessageFee,
+					#[codec(index = 6)]
+					TooManyMessagesInTheProof,
+					#[codec(index = 7)]
+					InvalidMessagesProof,
+					#[codec(index = 8)]
+					InvalidMessagesDeliveryProof,
+					#[codec(index = 9)]
+					InvalidUnrewardedRelayers,
+					#[codec(index = 10)]
+					InvalidUnrewardedRelayersState,
+					#[codec(index = 11)]
+					MessageIsAlreadyDelivered,
+					#[codec(index = 12)]
+					MessageIsNotYetSent,
+					#[codec(index = 13)]
+					TryingToConfirmMoreMessagesThanExpected,
+					#[codec(index = 14)]
+					BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					# [codec (index = 0)] MessageAccepted { lane_id : runtime_types :: bp_messages :: LaneId , nonce : :: core :: primitive :: u64 , } , # [codec (index = 1)] MessagesReceived (:: std :: vec :: Vec < runtime_types :: bp_messages :: ReceivedMessages < runtime_types :: bridge_runtime_common :: messages_xcm_extension :: XcmBlobMessageDispatchResult > > ,) , # [codec (index = 2)] MessagesDelivered { lane_id : runtime_types :: bp_messages :: LaneId , messages : runtime_types :: bp_messages :: DeliveredMessages , } , }
+			}
+		}
+		pub mod pallet_bridge_parachains {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					submit_parachain_heads {
+						at_relay_block: (::core::primitive::u32, ::subxt::utils::H256),
+						parachains: ::std::vec::Vec<(
+							::bp_polkadot_core::parachains::ParaId,
+							::subxt::utils::H256,
+						)>,
+						parachain_heads_proof: ::bp_polkadot_core::parachains::ParaHeadsProof,
+					},
+					#[codec(index = 1)]
+					set_owner { new_owner: ::core::option::Option<::sp_core::crypto::AccountId32> },
+					#[codec(index = 2)]
+					set_operating_mode {
+						operating_mode: runtime_types::bp_runtime::BasicOperatingMode,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					UnknownRelayChainBlock,
+					#[codec(index = 1)]
+					InvalidRelayChainBlockNumber,
+					#[codec(index = 2)]
+					HeaderChain(runtime_types::bp_header_chain::HeaderChainError),
+					#[codec(index = 3)]
+					UnknownParaHead,
+					#[codec(index = 4)]
+					StorageRootMismatch,
+					#[codec(index = 5)]
+					FailedToExtractStateRoot,
+					#[codec(index = 6)]
+					BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					UntrackedParachainRejected { parachain: ::bp_polkadot_core::parachains::ParaId },
+					#[codec(index = 1)]
+					MissingParachainHead { parachain: ::bp_polkadot_core::parachains::ParaId },
+					#[codec(index = 2)]
+					IncorrectParachainHeadHash {
+						parachain: ::bp_polkadot_core::parachains::ParaId,
+						parachain_head_hash: ::subxt::utils::H256,
+						actual_parachain_head_hash: ::subxt::utils::H256,
+					},
+					#[codec(index = 3)]
+					RejectedObsoleteParachainHead {
+						parachain: ::bp_polkadot_core::parachains::ParaId,
+						parachain_head_hash: ::subxt::utils::H256,
+					},
+					#[codec(index = 4)]
+					RejectedLargeParachainHead {
+						parachain: ::bp_polkadot_core::parachains::ParaId,
+						parachain_head_hash: ::subxt::utils::H256,
+						parachain_head_size: ::core::primitive::u32,
+					},
+					#[codec(index = 5)]
+					UpdatedParachainHead {
+						parachain: ::bp_polkadot_core::parachains::ParaId,
+						parachain_head_hash: ::subxt::utils::H256,
+					},
+				}
+			}
+		}
+		pub mod pallet_bridge_relayers {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					claim_rewards {
+						rewards_account_params: runtime_types::bp_relayers::RewardsAccountParams,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					NoRewardForRelayer,
+					#[codec(index = 1)]
+					FailedToPayReward,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					RewardPaid {
+						relayer: ::sp_core::crypto::AccountId32,
+						rewards_account_params: runtime_types::bp_relayers::RewardsAccountParams,
+						reward: ::core::primitive::u128,
+					},
+				}
+			}
+		}
+		pub mod pallet_collator_selection {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					set_invulnerables { new: ::std::vec::Vec<::sp_core::crypto::AccountId32> },
+					#[codec(index = 1)]
+					set_desired_candidates { max: ::core::primitive::u32 },
+					#[codec(index = 2)]
+					set_candidacy_bond { bond: ::core::primitive::u128 },
+					#[codec(index = 3)]
+					register_as_candidate,
+					#[codec(index = 4)]
+					leave_intent,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct CandidateInfo<_0, _1> {
+					pub who: _0,
+					pub deposit: _1,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					TooManyCandidates,
+					#[codec(index = 1)]
+					TooFewCandidates,
+					#[codec(index = 2)]
+					Unknown,
+					#[codec(index = 3)]
+					Permission,
+					#[codec(index = 4)]
+					AlreadyCandidate,
+					#[codec(index = 5)]
+					NotCandidate,
+					#[codec(index = 6)]
+					TooManyInvulnerables,
+					#[codec(index = 7)]
+					AlreadyInvulnerable,
+					#[codec(index = 8)]
+					NoAssociatedValidatorId,
+					#[codec(index = 9)]
+					ValidatorNotRegistered,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					NewInvulnerables {
+						invulnerables: ::std::vec::Vec<::sp_core::crypto::AccountId32>,
+					},
+					#[codec(index = 1)]
+					NewDesiredCandidates { desired_candidates: ::core::primitive::u32 },
+					#[codec(index = 2)]
+					NewCandidacyBond { bond_amount: ::core::primitive::u128 },
+					#[codec(index = 3)]
+					CandidateAdded {
+						account_id: ::sp_core::crypto::AccountId32,
+						deposit: ::core::primitive::u128,
+					},
+					#[codec(index = 4)]
+					CandidateRemoved { account_id: ::sp_core::crypto::AccountId32 },
+				}
+			}
+		}
+		pub mod pallet_multisig {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					as_multi_threshold_1 {
+						other_signatories: ::std::vec::Vec<::sp_core::crypto::AccountId32>,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_rococo_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 1)]
+					as_multi {
+						threshold: ::core::primitive::u16,
+						other_signatories: ::std::vec::Vec<::sp_core::crypto::AccountId32>,
+						maybe_timepoint: ::core::option::Option<
+							runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>,
+						>,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_rococo_runtime::RuntimeCall,
+						>,
+						max_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 2)]
+					approve_as_multi {
+						threshold: ::core::primitive::u16,
+						other_signatories: ::std::vec::Vec<::sp_core::crypto::AccountId32>,
+						maybe_timepoint: ::core::option::Option<
+							runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>,
+						>,
+						call_hash: [::core::primitive::u8; 32usize],
+						max_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 3)]
+					cancel_as_multi {
+						threshold: ::core::primitive::u16,
+						other_signatories: ::std::vec::Vec<::sp_core::crypto::AccountId32>,
+						timepoint:
+							runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>,
+						call_hash: [::core::primitive::u8; 32usize],
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					MinimumThreshold,
+					#[codec(index = 1)]
+					AlreadyApproved,
+					#[codec(index = 2)]
+					NoApprovalsNeeded,
+					#[codec(index = 3)]
+					TooFewSignatories,
+					#[codec(index = 4)]
+					TooManySignatories,
+					#[codec(index = 5)]
+					SignatoriesOutOfOrder,
+					#[codec(index = 6)]
+					SenderInSignatories,
+					#[codec(index = 7)]
+					NotFound,
+					#[codec(index = 8)]
+					NotOwner,
+					#[codec(index = 9)]
+					NoTimepoint,
+					#[codec(index = 10)]
+					WrongTimepoint,
+					#[codec(index = 11)]
+					UnexpectedTimepoint,
+					#[codec(index = 12)]
+					MaxWeightTooLow,
+					#[codec(index = 13)]
+					AlreadyStored,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					NewMultisig {
+						approving: ::sp_core::crypto::AccountId32,
+						multisig: ::sp_core::crypto::AccountId32,
+						call_hash: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 1)]
+					MultisigApproval {
+						approving: ::sp_core::crypto::AccountId32,
+						timepoint:
+							runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>,
+						multisig: ::sp_core::crypto::AccountId32,
+						call_hash: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 2)]
+					MultisigExecuted {
+						approving: ::sp_core::crypto::AccountId32,
+						timepoint:
+							runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>,
+						multisig: ::sp_core::crypto::AccountId32,
+						call_hash: [::core::primitive::u8; 32usize],
+						result:
+							::core::result::Result<(), runtime_types::sp_runtime::DispatchError>,
+					},
+					#[codec(index = 3)]
+					MultisigCancelled {
+						cancelling: ::sp_core::crypto::AccountId32,
+						timepoint:
+							runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>,
+						multisig: ::sp_core::crypto::AccountId32,
+						call_hash: [::core::primitive::u8; 32usize],
+					},
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct Multisig<_0, _1, _2> {
+				pub when: runtime_types::pallet_multisig::Timepoint<_0>,
+				pub deposit: _1,
+				pub depositor: _2,
+				pub approvals: runtime_types::bounded_collections::bounded_vec::BoundedVec<_2>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct Timepoint<_0> {
+				pub height: _0,
+				pub index: _0,
+			}
+		}
+		pub mod pallet_session {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					set_keys {
+						keys: runtime_types::bridge_hub_rococo_runtime::SessionKeys,
+						proof: ::std::vec::Vec<::core::primitive::u8>,
+					},
+					#[codec(index = 1)]
+					purge_keys,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					InvalidProof,
+					#[codec(index = 1)]
+					NoAssociatedValidatorId,
+					#[codec(index = 2)]
+					DuplicatedKey,
+					#[codec(index = 3)]
+					NoKeys,
+					#[codec(index = 4)]
+					NoAccount,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					NewSession { session_index: ::core::primitive::u32 },
+				}
+			}
+		}
+		pub mod pallet_timestamp {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					set {
+						#[codec(compact)]
+						now: ::core::primitive::u64,
+					},
+				}
+			}
+		}
+		pub mod pallet_transaction_payment {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					TransactionFeePaid {
+						who: ::sp_core::crypto::AccountId32,
+						actual_fee: ::core::primitive::u128,
+						tip: ::core::primitive::u128,
+					},
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct ChargeTransactionPayment(#[codec(compact)] pub ::core::primitive::u128);
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum Releases {
+				#[codec(index = 0)]
+				V1Ancient,
+				#[codec(index = 1)]
+				V2,
+			}
+		}
+		pub mod pallet_utility {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					batch {
+						calls:
+							::std::vec::Vec<runtime_types::bridge_hub_rococo_runtime::RuntimeCall>,
+					},
+					#[codec(index = 1)]
+					as_derivative {
+						index: ::core::primitive::u16,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_rococo_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 2)]
+					batch_all {
+						calls:
+							::std::vec::Vec<runtime_types::bridge_hub_rococo_runtime::RuntimeCall>,
+					},
+					#[codec(index = 3)]
+					dispatch_as {
+						as_origin: ::std::boxed::Box<
+							runtime_types::bridge_hub_rococo_runtime::OriginCaller,
+						>,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_rococo_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 4)]
+					force_batch {
+						calls:
+							::std::vec::Vec<runtime_types::bridge_hub_rococo_runtime::RuntimeCall>,
+					},
+					#[codec(index = 5)]
+					with_weight {
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_rococo_runtime::RuntimeCall,
+						>,
+						weight: ::sp_weights::Weight,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					TooManyCalls,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					BatchInterrupted {
+						index: ::core::primitive::u32,
+						error: runtime_types::sp_runtime::DispatchError,
+					},
+					#[codec(index = 1)]
+					BatchCompleted,
+					#[codec(index = 2)]
+					BatchCompletedWithErrors,
+					#[codec(index = 3)]
+					ItemCompleted,
+					#[codec(index = 4)]
+					ItemFailed { error: runtime_types::sp_runtime::DispatchError },
+					#[codec(index = 5)]
+					DispatchedAs {
+						result:
+							::core::result::Result<(), runtime_types::sp_runtime::DispatchError>,
+					},
+				}
+			}
+		}
+		pub mod pallet_xcm {
+			use super::runtime_types;
+			pub mod pallet {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Call {
+					#[codec(index = 0)]
+					send {
+						dest: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						message: ::std::boxed::Box<runtime_types::xcm::VersionedXcm>,
+					},
+					#[codec(index = 1)]
+					teleport_assets {
+						dest: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						beneficiary: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						assets: ::std::boxed::Box<runtime_types::xcm::VersionedMultiAssets>,
+						fee_asset_item: ::core::primitive::u32,
+					},
+					#[codec(index = 2)]
+					reserve_transfer_assets {
+						dest: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						beneficiary: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						assets: ::std::boxed::Box<runtime_types::xcm::VersionedMultiAssets>,
+						fee_asset_item: ::core::primitive::u32,
+					},
+					#[codec(index = 3)]
+					execute {
+						message: ::std::boxed::Box<runtime_types::xcm::VersionedXcm>,
+						max_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 4)]
+					force_xcm_version {
+						location:
+							::std::boxed::Box<runtime_types::xcm::v3::multilocation::MultiLocation>,
+						xcm_version: ::core::primitive::u32,
+					},
+					#[codec(index = 5)]
+					force_default_xcm_version {
+						maybe_xcm_version: ::core::option::Option<::core::primitive::u32>,
+					},
+					#[codec(index = 6)]
+					force_subscribe_version_notify {
+						location: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+					},
+					#[codec(index = 7)]
+					force_unsubscribe_version_notify {
+						location: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+					},
+					#[codec(index = 8)]
+					limited_reserve_transfer_assets {
+						dest: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						beneficiary: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						assets: ::std::boxed::Box<runtime_types::xcm::VersionedMultiAssets>,
+						fee_asset_item: ::core::primitive::u32,
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+					},
+					#[codec(index = 9)]
+					limited_teleport_assets {
+						dest: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						beneficiary: ::std::boxed::Box<runtime_types::xcm::VersionedMultiLocation>,
+						assets: ::std::boxed::Box<runtime_types::xcm::VersionedMultiAssets>,
+						fee_asset_item: ::core::primitive::u32,
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Error {
+					#[codec(index = 0)]
+					Unreachable,
+					#[codec(index = 1)]
+					SendFailure,
+					#[codec(index = 2)]
+					Filtered,
+					#[codec(index = 3)]
+					UnweighableMessage,
+					#[codec(index = 4)]
+					DestinationNotInvertible,
+					#[codec(index = 5)]
+					Empty,
+					#[codec(index = 6)]
+					CannotReanchor,
+					#[codec(index = 7)]
+					TooManyAssets,
+					#[codec(index = 8)]
+					InvalidOrigin,
+					#[codec(index = 9)]
+					BadVersion,
+					#[codec(index = 10)]
+					BadLocation,
+					#[codec(index = 11)]
+					NoSubscription,
+					#[codec(index = 12)]
+					AlreadySubscribed,
+					#[codec(index = 13)]
+					InvalidAsset,
+					#[codec(index = 14)]
+					LowBalance,
+					#[codec(index = 15)]
+					TooManyLocks,
+					#[codec(index = 16)]
+					AccountNotSovereign,
+					#[codec(index = 17)]
+					FeesNotMet,
+					#[codec(index = 18)]
+					LockNotFound,
+					#[codec(index = 19)]
+					InUse,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Event {
+					#[codec(index = 0)]
+					Attempted(runtime_types::xcm::v3::traits::Outcome),
+					#[codec(index = 1)]
+					Sent(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::v3::Xcm,
+					),
+					#[codec(index = 2)]
+					UnexpectedResponse(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u64,
+					),
+					#[codec(index = 3)]
+					ResponseReady(::core::primitive::u64, runtime_types::xcm::v3::Response),
+					#[codec(index = 4)]
+					Notified(::core::primitive::u64, ::core::primitive::u8, ::core::primitive::u8),
+					#[codec(index = 5)]
+					NotifyOverweight(
+						::core::primitive::u64,
+						::core::primitive::u8,
+						::core::primitive::u8,
+						::sp_weights::Weight,
+						::sp_weights::Weight,
+					),
+					#[codec(index = 6)]
+					NotifyDispatchError(
+						::core::primitive::u64,
+						::core::primitive::u8,
+						::core::primitive::u8,
+					),
+					#[codec(index = 7)]
+					NotifyDecodeFailed(
+						::core::primitive::u64,
+						::core::primitive::u8,
+						::core::primitive::u8,
+					),
+					#[codec(index = 8)]
+					InvalidResponder(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u64,
+						::core::option::Option<
+							runtime_types::xcm::v3::multilocation::MultiLocation,
+						>,
+					),
+					#[codec(index = 9)]
+					InvalidResponderVersion(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u64,
+					),
+					#[codec(index = 10)]
+					ResponseTaken(::core::primitive::u64),
+					#[codec(index = 11)]
+					AssetsTrapped(
+						::subxt::utils::H256,
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::VersionedMultiAssets,
+					),
+					#[codec(index = 12)]
+					VersionChangeNotified(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u32,
+						runtime_types::xcm::v3::multiasset::MultiAssets,
+					),
+					#[codec(index = 13)]
+					SupportedVersionChanged(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u32,
+					),
+					#[codec(index = 14)]
+					NotifyTargetSendFail(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u64,
+						runtime_types::xcm::v3::traits::Error,
+					),
+					#[codec(index = 15)]
+					NotifyTargetMigrationFail(
+						runtime_types::xcm::VersionedMultiLocation,
+						::core::primitive::u64,
+					),
+					#[codec(index = 16)]
+					InvalidQuerierVersion(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u64,
+					),
+					#[codec(index = 17)]
+					InvalidQuerier(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::primitive::u64,
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						::core::option::Option<
+							runtime_types::xcm::v3::multilocation::MultiLocation,
+						>,
+					),
+					#[codec(index = 18)]
+					VersionNotifyStarted(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::v3::multiasset::MultiAssets,
+					),
+					#[codec(index = 19)]
+					VersionNotifyRequested(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::v3::multiasset::MultiAssets,
+					),
+					#[codec(index = 20)]
+					VersionNotifyUnrequested(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::v3::multiasset::MultiAssets,
+					),
+					#[codec(index = 21)]
+					FeesPaid(
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::v3::multiasset::MultiAssets,
+					),
+					#[codec(index = 22)]
+					AssetsClaimed(
+						::subxt::utils::H256,
+						runtime_types::xcm::v3::multilocation::MultiLocation,
+						runtime_types::xcm::VersionedMultiAssets,
+					),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Origin {
+					#[codec(index = 0)]
+					Xcm(runtime_types::xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 1)]
+					Response(runtime_types::xcm::v3::multilocation::MultiLocation),
+				}
+			}
+		}
+		pub mod polkadot_core_primitives {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct InboundDownwardMessage<_0> {
+				pub sent_at: _0,
+				pub msg: ::std::vec::Vec<::core::primitive::u8>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct InboundHrmpMessage<_0> {
+				pub sent_at: _0,
+				pub data: ::std::vec::Vec<::core::primitive::u8>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct OutboundHrmpMessage<_0> {
+				pub recipient: _0,
+				pub data: ::std::vec::Vec<::core::primitive::u8>,
+			}
+		}
+		pub mod polkadot_parachain {
+			use super::runtime_types;
+			pub mod primitives {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct HeadData(pub ::std::vec::Vec<::core::primitive::u8>);
+				#[derive(
+					:: codec :: Decode,
+					:: codec :: Encode,
+					:: subxt :: ext :: codec :: CompactAs,
+					Clone,
+					Debug,
+					PartialEq,
+				)]
+				pub struct Id(pub ::core::primitive::u32);
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum XcmpMessageFormat {
+					#[codec(index = 0)]
+					ConcatenatedVersionedXcm,
+					#[codec(index = 1)]
+					ConcatenatedEncodedBlob,
+					#[codec(index = 2)]
+					Signals,
+				}
+			}
+		}
+		pub mod polkadot_primitives {
+			use super::runtime_types;
+			pub mod v4 {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct AbridgedHostConfiguration {
+					pub max_code_size: ::core::primitive::u32,
+					pub max_head_data_size: ::core::primitive::u32,
+					pub max_upward_queue_count: ::core::primitive::u32,
+					pub max_upward_queue_size: ::core::primitive::u32,
+					pub max_upward_message_size: ::core::primitive::u32,
+					pub max_upward_message_num_per_candidate: ::core::primitive::u32,
+					pub hrmp_max_message_num_per_candidate: ::core::primitive::u32,
+					pub validation_upgrade_cooldown: ::core::primitive::u32,
+					pub validation_upgrade_delay: ::core::primitive::u32,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct AbridgedHrmpChannel {
+					pub max_capacity: ::core::primitive::u32,
+					pub max_total_size: ::core::primitive::u32,
+					pub max_message_size: ::core::primitive::u32,
+					pub msg_count: ::core::primitive::u32,
+					pub total_size: ::core::primitive::u32,
+					pub mqc_head: ::core::option::Option<::subxt::utils::H256>,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct PersistedValidationData<_0, _1> {
+					pub parent_head: runtime_types::polkadot_parachain::primitives::HeadData,
+					pub relay_parent_number: _1,
+					pub relay_parent_storage_root: _0,
+					pub max_pov_size: _1,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum UpgradeRestriction {
+					#[codec(index = 0)]
+					Present,
+				}
+			}
+		}
+		pub mod sp_arithmetic {
+			use super::runtime_types;
+			pub mod fixed_point {
+				use super::runtime_types;
+				#[derive(
+					:: codec :: Decode,
+					:: codec :: Encode,
+					:: subxt :: ext :: codec :: CompactAs,
+					Clone,
+					Debug,
+					PartialEq,
+				)]
+				pub struct FixedU128(pub ::core::primitive::u128);
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum ArithmeticError {
+				#[codec(index = 0)]
+				Underflow,
+				#[codec(index = 1)]
+				Overflow,
+				#[codec(index = 2)]
+				DivisionByZero,
+			}
+		}
+		pub mod sp_consensus_aura {
+			use super::runtime_types;
+			pub mod sr25519 {
+				use super::runtime_types;
+				pub mod app_sr25519 {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct Public(pub runtime_types::sp_core::sr25519::Public);
+				}
+			}
+		}
+		pub mod sp_consensus_grandpa {
+			use super::runtime_types;
+			pub mod app {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Public(pub runtime_types::sp_core::ed25519::Public);
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Signature(pub runtime_types::sp_core::ed25519::Signature);
+			}
+		}
+		pub mod sp_consensus_slots {
+			use super::runtime_types;
+			#[derive(
+				:: codec :: Decode,
+				:: codec :: Encode,
+				:: subxt :: ext :: codec :: CompactAs,
+				Clone,
+				Debug,
+				PartialEq,
+			)]
+			pub struct Slot(pub ::core::primitive::u64);
+		}
+		pub mod sp_core {
+			use super::runtime_types;
+			pub mod crypto {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct KeyTypeId(pub [::core::primitive::u8; 4usize]);
+			}
+			pub mod ecdsa {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Signature(pub [::core::primitive::u8; 65usize]);
+			}
+			pub mod ed25519 {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Public(pub [::core::primitive::u8; 32usize]);
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Signature(pub [::core::primitive::u8; 64usize]);
+			}
+			pub mod sr25519 {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Public(pub [::core::primitive::u8; 32usize]);
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Signature(pub [::core::primitive::u8; 64usize]);
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum Void {}
+		}
+		pub mod sp_runtime {
+			use super::runtime_types;
+			pub mod generic {
+				use super::runtime_types;
+				pub mod digest {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum DigestItem {
+						#[codec(index = 6)]
+						PreRuntime(
+							[::core::primitive::u8; 4usize],
+							::std::vec::Vec<::core::primitive::u8>,
+						),
+						#[codec(index = 4)]
+						Consensus(
+							[::core::primitive::u8; 4usize],
+							::std::vec::Vec<::core::primitive::u8>,
+						),
+						#[codec(index = 5)]
+						Seal(
+							[::core::primitive::u8; 4usize],
+							::std::vec::Vec<::core::primitive::u8>,
+						),
+						#[codec(index = 0)]
+						Other(::std::vec::Vec<::core::primitive::u8>),
+						#[codec(index = 8)]
+						RuntimeEnvironmentUpdated,
+					}
+				}
+				pub mod unchecked_extrinsic {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct UncheckedExtrinsic<_0, _1, _2, _3>(
+						pub ::std::vec::Vec<::core::primitive::u8>,
+						#[codec(skip)] pub ::core::marker::PhantomData<(_0, _1, _2, _3)>,
+					);
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum DispatchError {
+				#[codec(index = 0)]
+				Other,
+				#[codec(index = 1)]
+				CannotLookup,
+				#[codec(index = 2)]
+				BadOrigin,
+				#[codec(index = 3)]
+				Module(runtime_types::sp_runtime::ModuleError),
+				#[codec(index = 4)]
+				ConsumerRemaining,
+				#[codec(index = 5)]
+				NoProviders,
+				#[codec(index = 6)]
+				TooManyConsumers,
+				#[codec(index = 7)]
+				Token(runtime_types::sp_runtime::TokenError),
+				#[codec(index = 8)]
+				Arithmetic(runtime_types::sp_arithmetic::ArithmeticError),
+				#[codec(index = 9)]
+				Transactional(runtime_types::sp_runtime::TransactionalError),
+				#[codec(index = 10)]
+				Exhausted,
+				#[codec(index = 11)]
+				Corruption,
+				#[codec(index = 12)]
+				Unavailable,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct ModuleError {
+				pub index: ::core::primitive::u8,
+				pub error: [::core::primitive::u8; 4usize],
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum MultiSignature {
+				#[codec(index = 0)]
+				Ed25519(runtime_types::sp_core::ed25519::Signature),
+				#[codec(index = 1)]
+				Sr25519(runtime_types::sp_core::sr25519::Signature),
+				#[codec(index = 2)]
+				Ecdsa(runtime_types::sp_core::ecdsa::Signature),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum TokenError {
+				#[codec(index = 0)]
+				FundsUnavailable,
+				#[codec(index = 1)]
+				OnlyProvider,
+				#[codec(index = 2)]
+				BelowMinimum,
+				#[codec(index = 3)]
+				CannotCreate,
+				#[codec(index = 4)]
+				UnknownAsset,
+				#[codec(index = 5)]
+				Frozen,
+				#[codec(index = 6)]
+				Unsupported,
+				#[codec(index = 7)]
+				CannotCreateHold,
+				#[codec(index = 8)]
+				NotExpendable,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum TransactionalError {
+				#[codec(index = 0)]
+				LimitReached,
+				#[codec(index = 1)]
+				NoLayer,
+			}
+		}
+		pub mod sp_trie {
+			use super::runtime_types;
+			pub mod storage_proof {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct StorageProof {
+					pub trie_nodes: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
+				}
+			}
+		}
+		pub mod sp_version {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct RuntimeVersion {
+				pub spec_name: ::std::string::String,
+				pub impl_name: ::std::string::String,
+				pub authoring_version: ::core::primitive::u32,
+				pub spec_version: ::core::primitive::u32,
+				pub impl_version: ::core::primitive::u32,
+				pub apis:
+					::std::vec::Vec<([::core::primitive::u8; 8usize], ::core::primitive::u32)>,
+				pub transaction_version: ::core::primitive::u32,
+				pub state_version: ::core::primitive::u8,
+			}
+		}
+		pub mod sp_weights {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct RuntimeDbWeight {
+				pub read: ::core::primitive::u64,
+				pub write: ::core::primitive::u64,
+			}
+		}
+		pub mod xcm {
+			use super::runtime_types;
+			pub mod double_encoded {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct DoubleEncoded {
+					pub encoded: ::std::vec::Vec<::core::primitive::u8>,
+				}
+			}
+			pub mod v2 {
+				use super::runtime_types;
+				pub mod junction {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Junction {
+						#[codec(index = 0)]
+						Parachain(#[codec(compact)] ::core::primitive::u32),
+						#[codec(index = 1)]
+						AccountId32 {
+							network: runtime_types::xcm::v2::NetworkId,
+							id: [::core::primitive::u8; 32usize],
+						},
+						#[codec(index = 2)]
+						AccountIndex64 {
+							network: runtime_types::xcm::v2::NetworkId,
+							#[codec(compact)]
+							index: ::core::primitive::u64,
+						},
+						#[codec(index = 3)]
+						AccountKey20 {
+							network: runtime_types::xcm::v2::NetworkId,
+							key: [::core::primitive::u8; 20usize],
+						},
+						#[codec(index = 4)]
+						PalletInstance(::core::primitive::u8),
+						#[codec(index = 5)]
+						GeneralIndex(#[codec(compact)] ::core::primitive::u128),
+						#[codec(index = 6)]
+						GeneralKey(
+							runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<
+								::core::primitive::u8,
+							>,
+						),
+						#[codec(index = 7)]
+						OnlyChild,
+						#[codec(index = 8)]
+						Plurality {
+							id: runtime_types::xcm::v2::BodyId,
+							part: runtime_types::xcm::v2::BodyPart,
+						},
+					}
+				}
+				pub mod multiasset {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum AssetId {
+						#[codec(index = 0)]
+						Concrete(runtime_types::xcm::v2::multilocation::MultiLocation),
+						#[codec(index = 1)]
+						Abstract(::std::vec::Vec<::core::primitive::u8>),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum AssetInstance {
+						#[codec(index = 0)]
+						Undefined,
+						#[codec(index = 1)]
+						Index(#[codec(compact)] ::core::primitive::u128),
+						#[codec(index = 2)]
+						Array4([::core::primitive::u8; 4usize]),
+						#[codec(index = 3)]
+						Array8([::core::primitive::u8; 8usize]),
+						#[codec(index = 4)]
+						Array16([::core::primitive::u8; 16usize]),
+						#[codec(index = 5)]
+						Array32([::core::primitive::u8; 32usize]),
+						#[codec(index = 6)]
+						Blob(::std::vec::Vec<::core::primitive::u8>),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Fungibility {
+						#[codec(index = 0)]
+						Fungible(#[codec(compact)] ::core::primitive::u128),
+						#[codec(index = 1)]
+						NonFungible(runtime_types::xcm::v2::multiasset::AssetInstance),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct MultiAsset {
+						pub id: runtime_types::xcm::v2::multiasset::AssetId,
+						pub fun: runtime_types::xcm::v2::multiasset::Fungibility,
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum MultiAssetFilter {
+						#[codec(index = 0)]
+						Definite(runtime_types::xcm::v2::multiasset::MultiAssets),
+						#[codec(index = 1)]
+						Wild(runtime_types::xcm::v2::multiasset::WildMultiAsset),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct MultiAssets(
+						pub ::std::vec::Vec<runtime_types::xcm::v2::multiasset::MultiAsset>,
+					);
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum WildFungibility {
+						#[codec(index = 0)]
+						Fungible,
+						#[codec(index = 1)]
+						NonFungible,
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum WildMultiAsset {
+						#[codec(index = 0)]
+						All,
+						#[codec(index = 1)]
+						AllOf {
+							id: runtime_types::xcm::v2::multiasset::AssetId,
+							fun: runtime_types::xcm::v2::multiasset::WildFungibility,
+						},
+					}
+				}
+				pub mod multilocation {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Junctions {
+						#[codec(index = 0)]
+						Here,
+						#[codec(index = 1)]
+						X1(runtime_types::xcm::v2::junction::Junction),
+						#[codec(index = 2)]
+						X2(
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+						),
+						#[codec(index = 3)]
+						X3(
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+						),
+						#[codec(index = 4)]
+						X4(
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+						),
+						#[codec(index = 5)]
+						X5(
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+						),
+						#[codec(index = 6)]
+						X6(
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+						),
+						#[codec(index = 7)]
+						X7(
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+						),
+						#[codec(index = 8)]
+						X8(
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+							runtime_types::xcm::v2::junction::Junction,
+						),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct MultiLocation {
+						pub parents: ::core::primitive::u8,
+						pub interior: runtime_types::xcm::v2::multilocation::Junctions,
+					}
+				}
+				pub mod traits {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Error {
+						#[codec(index = 0)]
+						Overflow,
+						#[codec(index = 1)]
+						Unimplemented,
+						#[codec(index = 2)]
+						UntrustedReserveLocation,
+						#[codec(index = 3)]
+						UntrustedTeleportLocation,
+						#[codec(index = 4)]
+						MultiLocationFull,
+						#[codec(index = 5)]
+						MultiLocationNotInvertible,
+						#[codec(index = 6)]
+						BadOrigin,
+						#[codec(index = 7)]
+						InvalidLocation,
+						#[codec(index = 8)]
+						AssetNotFound,
+						#[codec(index = 9)]
+						FailedToTransactAsset,
+						#[codec(index = 10)]
+						NotWithdrawable,
+						#[codec(index = 11)]
+						LocationCannotHold,
+						#[codec(index = 12)]
+						ExceedsMaxMessageSize,
+						#[codec(index = 13)]
+						DestinationUnsupported,
+						#[codec(index = 14)]
+						Transport,
+						#[codec(index = 15)]
+						Unroutable,
+						#[codec(index = 16)]
+						UnknownClaim,
+						#[codec(index = 17)]
+						FailedToDecode,
+						#[codec(index = 18)]
+						MaxWeightInvalid,
+						#[codec(index = 19)]
+						NotHoldingFees,
+						#[codec(index = 20)]
+						TooExpensive,
+						#[codec(index = 21)]
+						Trap(::core::primitive::u64),
+						#[codec(index = 22)]
+						UnhandledXcmVersion,
+						#[codec(index = 23)]
+						WeightLimitReached(::core::primitive::u64),
+						#[codec(index = 24)]
+						Barrier,
+						#[codec(index = 25)]
+						WeightNotComputable,
+					}
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum BodyId {
+					#[codec(index = 0)]
+					Unit,
+					#[codec(index = 1)]
+					Named(
+						runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<
+							::core::primitive::u8,
+						>,
+					),
+					#[codec(index = 2)]
+					Index(#[codec(compact)] ::core::primitive::u32),
+					#[codec(index = 3)]
+					Executive,
+					#[codec(index = 4)]
+					Technical,
+					#[codec(index = 5)]
+					Legislative,
+					#[codec(index = 6)]
+					Judicial,
+					#[codec(index = 7)]
+					Defense,
+					#[codec(index = 8)]
+					Administration,
+					#[codec(index = 9)]
+					Treasury,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum BodyPart {
+					#[codec(index = 0)]
+					Voice,
+					#[codec(index = 1)]
+					Members {
+						#[codec(compact)]
+						count: ::core::primitive::u32,
+					},
+					#[codec(index = 2)]
+					Fraction {
+						#[codec(compact)]
+						nom: ::core::primitive::u32,
+						#[codec(compact)]
+						denom: ::core::primitive::u32,
+					},
+					#[codec(index = 3)]
+					AtLeastProportion {
+						#[codec(compact)]
+						nom: ::core::primitive::u32,
+						#[codec(compact)]
+						denom: ::core::primitive::u32,
+					},
+					#[codec(index = 4)]
+					MoreThanProportion {
+						#[codec(compact)]
+						nom: ::core::primitive::u32,
+						#[codec(compact)]
+						denom: ::core::primitive::u32,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Instruction {
+					#[codec(index = 0)]
+					WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets),
+					#[codec(index = 1)]
+					ReserveAssetDeposited(runtime_types::xcm::v2::multiasset::MultiAssets),
+					#[codec(index = 2)]
+					ReceiveTeleportedAsset(runtime_types::xcm::v2::multiasset::MultiAssets),
+					#[codec(index = 3)]
+					QueryResponse {
+						#[codec(compact)]
+						query_id: ::core::primitive::u64,
+						response: runtime_types::xcm::v2::Response,
+						#[codec(compact)]
+						max_weight: ::core::primitive::u64,
+					},
+					#[codec(index = 4)]
+					TransferAsset {
+						assets: runtime_types::xcm::v2::multiasset::MultiAssets,
+						beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation,
+					},
+					#[codec(index = 5)]
+					TransferReserveAsset {
+						assets: runtime_types::xcm::v2::multiasset::MultiAssets,
+						dest: runtime_types::xcm::v2::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v2::Xcm,
+					},
+					#[codec(index = 6)]
+					Transact {
+						origin_type: runtime_types::xcm::v2::OriginKind,
+						#[codec(compact)]
+						require_weight_at_most: ::core::primitive::u64,
+						call: runtime_types::xcm::double_encoded::DoubleEncoded,
+					},
+					#[codec(index = 7)]
+					HrmpNewChannelOpenRequest {
+						#[codec(compact)]
+						sender: ::core::primitive::u32,
+						#[codec(compact)]
+						max_message_size: ::core::primitive::u32,
+						#[codec(compact)]
+						max_capacity: ::core::primitive::u32,
+					},
+					#[codec(index = 8)]
+					HrmpChannelAccepted {
+						#[codec(compact)]
+						recipient: ::core::primitive::u32,
+					},
+					#[codec(index = 9)]
+					HrmpChannelClosing {
+						#[codec(compact)]
+						initiator: ::core::primitive::u32,
+						#[codec(compact)]
+						sender: ::core::primitive::u32,
+						#[codec(compact)]
+						recipient: ::core::primitive::u32,
+					},
+					#[codec(index = 10)]
+					ClearOrigin,
+					#[codec(index = 11)]
+					DescendOrigin(runtime_types::xcm::v2::multilocation::Junctions),
+					#[codec(index = 12)]
+					ReportError {
+						#[codec(compact)]
+						query_id: ::core::primitive::u64,
+						dest: runtime_types::xcm::v2::multilocation::MultiLocation,
+						#[codec(compact)]
+						max_response_weight: ::core::primitive::u64,
+					},
+					#[codec(index = 13)]
+					DepositAsset {
+						assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter,
+						#[codec(compact)]
+						max_assets: ::core::primitive::u32,
+						beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation,
+					},
+					#[codec(index = 14)]
+					DepositReserveAsset {
+						assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter,
+						#[codec(compact)]
+						max_assets: ::core::primitive::u32,
+						dest: runtime_types::xcm::v2::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v2::Xcm,
+					},
+					#[codec(index = 15)]
+					ExchangeAsset {
+						give: runtime_types::xcm::v2::multiasset::MultiAssetFilter,
+						receive: runtime_types::xcm::v2::multiasset::MultiAssets,
+					},
+					#[codec(index = 16)]
+					InitiateReserveWithdraw {
+						assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter,
+						reserve: runtime_types::xcm::v2::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v2::Xcm,
+					},
+					#[codec(index = 17)]
+					InitiateTeleport {
+						assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter,
+						dest: runtime_types::xcm::v2::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v2::Xcm,
+					},
+					#[codec(index = 18)]
+					QueryHolding {
+						#[codec(compact)]
+						query_id: ::core::primitive::u64,
+						dest: runtime_types::xcm::v2::multilocation::MultiLocation,
+						assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter,
+						#[codec(compact)]
+						max_response_weight: ::core::primitive::u64,
+					},
+					#[codec(index = 19)]
+					BuyExecution {
+						fees: runtime_types::xcm::v2::multiasset::MultiAsset,
+						weight_limit: runtime_types::xcm::v2::WeightLimit,
+					},
+					#[codec(index = 20)]
+					RefundSurplus,
+					#[codec(index = 21)]
+					SetErrorHandler(runtime_types::xcm::v2::Xcm),
+					#[codec(index = 22)]
+					SetAppendix(runtime_types::xcm::v2::Xcm),
+					#[codec(index = 23)]
+					ClearError,
+					#[codec(index = 24)]
+					ClaimAsset {
+						assets: runtime_types::xcm::v2::multiasset::MultiAssets,
+						ticket: runtime_types::xcm::v2::multilocation::MultiLocation,
+					},
+					#[codec(index = 25)]
+					Trap(#[codec(compact)] ::core::primitive::u64),
+					#[codec(index = 26)]
+					SubscribeVersion {
+						#[codec(compact)]
+						query_id: ::core::primitive::u64,
+						#[codec(compact)]
+						max_response_weight: ::core::primitive::u64,
+					},
+					#[codec(index = 27)]
+					UnsubscribeVersion,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum NetworkId {
+					#[codec(index = 0)]
+					Any,
+					#[codec(index = 1)]
+					Named(
+						runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<
+							::core::primitive::u8,
+						>,
+					),
+					#[codec(index = 2)]
+					Polkadot,
+					#[codec(index = 3)]
+					Kusama,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum OriginKind {
+					#[codec(index = 0)]
+					Native,
+					#[codec(index = 1)]
+					SovereignAccount,
+					#[codec(index = 2)]
+					Superuser,
+					#[codec(index = 3)]
+					Xcm,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Response {
+					#[codec(index = 0)]
+					Null,
+					#[codec(index = 1)]
+					Assets(runtime_types::xcm::v2::multiasset::MultiAssets),
+					#[codec(index = 2)]
+					ExecutionResult(
+						::core::option::Option<(
+							::core::primitive::u32,
+							runtime_types::xcm::v2::traits::Error,
+						)>,
+					),
+					#[codec(index = 3)]
+					Version(::core::primitive::u32),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum WeightLimit {
+					#[codec(index = 0)]
+					Unlimited,
+					#[codec(index = 1)]
+					Limited(#[codec(compact)] ::core::primitive::u64),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Xcm(pub ::std::vec::Vec<runtime_types::xcm::v2::Instruction>);
+			}
+			pub mod v3 {
+				use super::runtime_types;
+				pub mod junction {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum BodyId {
+						#[codec(index = 0)]
+						Unit,
+						#[codec(index = 1)]
+						Moniker([::core::primitive::u8; 4usize]),
+						#[codec(index = 2)]
+						Index(#[codec(compact)] ::core::primitive::u32),
+						#[codec(index = 3)]
+						Executive,
+						#[codec(index = 4)]
+						Technical,
+						#[codec(index = 5)]
+						Legislative,
+						#[codec(index = 6)]
+						Judicial,
+						#[codec(index = 7)]
+						Defense,
+						#[codec(index = 8)]
+						Administration,
+						#[codec(index = 9)]
+						Treasury,
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum BodyPart {
+						#[codec(index = 0)]
+						Voice,
+						#[codec(index = 1)]
+						Members {
+							#[codec(compact)]
+							count: ::core::primitive::u32,
+						},
+						#[codec(index = 2)]
+						Fraction {
+							#[codec(compact)]
+							nom: ::core::primitive::u32,
+							#[codec(compact)]
+							denom: ::core::primitive::u32,
+						},
+						#[codec(index = 3)]
+						AtLeastProportion {
+							#[codec(compact)]
+							nom: ::core::primitive::u32,
+							#[codec(compact)]
+							denom: ::core::primitive::u32,
+						},
+						#[codec(index = 4)]
+						MoreThanProportion {
+							#[codec(compact)]
+							nom: ::core::primitive::u32,
+							#[codec(compact)]
+							denom: ::core::primitive::u32,
+						},
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Junction {
+						#[codec(index = 0)]
+						Parachain(#[codec(compact)] ::core::primitive::u32),
+						#[codec(index = 1)]
+						AccountId32 {
+							network:
+								::core::option::Option<runtime_types::xcm::v3::junction::NetworkId>,
+							id: [::core::primitive::u8; 32usize],
+						},
+						#[codec(index = 2)]
+						AccountIndex64 {
+							network:
+								::core::option::Option<runtime_types::xcm::v3::junction::NetworkId>,
+							#[codec(compact)]
+							index: ::core::primitive::u64,
+						},
+						#[codec(index = 3)]
+						AccountKey20 {
+							network:
+								::core::option::Option<runtime_types::xcm::v3::junction::NetworkId>,
+							key: [::core::primitive::u8; 20usize],
+						},
+						#[codec(index = 4)]
+						PalletInstance(::core::primitive::u8),
+						#[codec(index = 5)]
+						GeneralIndex(#[codec(compact)] ::core::primitive::u128),
+						#[codec(index = 6)]
+						GeneralKey {
+							length: ::core::primitive::u8,
+							data: [::core::primitive::u8; 32usize],
+						},
+						#[codec(index = 7)]
+						OnlyChild,
+						#[codec(index = 8)]
+						Plurality {
+							id: runtime_types::xcm::v3::junction::BodyId,
+							part: runtime_types::xcm::v3::junction::BodyPart,
+						},
+						#[codec(index = 9)]
+						GlobalConsensus(runtime_types::xcm::v3::junction::NetworkId),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum NetworkId {
+						#[codec(index = 0)]
+						ByGenesis([::core::primitive::u8; 32usize]),
+						#[codec(index = 1)]
+						ByFork {
+							block_number: ::core::primitive::u64,
+							block_hash: [::core::primitive::u8; 32usize],
+						},
+						#[codec(index = 2)]
+						Polkadot,
+						#[codec(index = 3)]
+						Kusama,
+						#[codec(index = 4)]
+						Westend,
+						#[codec(index = 5)]
+						Rococo,
+						#[codec(index = 6)]
+						Wococo,
+						#[codec(index = 7)]
+						Ethereum {
+							#[codec(compact)]
+							chain_id: ::core::primitive::u64,
+						},
+						#[codec(index = 8)]
+						BitcoinCore,
+						#[codec(index = 9)]
+						BitcoinCash,
+					}
+				}
+				pub mod junctions {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Junctions {
+						#[codec(index = 0)]
+						Here,
+						#[codec(index = 1)]
+						X1(runtime_types::xcm::v3::junction::Junction),
+						#[codec(index = 2)]
+						X2(
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+						),
+						#[codec(index = 3)]
+						X3(
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+						),
+						#[codec(index = 4)]
+						X4(
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+						),
+						#[codec(index = 5)]
+						X5(
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+						),
+						#[codec(index = 6)]
+						X6(
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+						),
+						#[codec(index = 7)]
+						X7(
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+						),
+						#[codec(index = 8)]
+						X8(
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+							runtime_types::xcm::v3::junction::Junction,
+						),
+					}
+				}
+				pub mod multiasset {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum AssetId {
+						#[codec(index = 0)]
+						Concrete(runtime_types::xcm::v3::multilocation::MultiLocation),
+						#[codec(index = 1)]
+						Abstract([::core::primitive::u8; 32usize]),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum AssetInstance {
+						#[codec(index = 0)]
+						Undefined,
+						#[codec(index = 1)]
+						Index(#[codec(compact)] ::core::primitive::u128),
+						#[codec(index = 2)]
+						Array4([::core::primitive::u8; 4usize]),
+						#[codec(index = 3)]
+						Array8([::core::primitive::u8; 8usize]),
+						#[codec(index = 4)]
+						Array16([::core::primitive::u8; 16usize]),
+						#[codec(index = 5)]
+						Array32([::core::primitive::u8; 32usize]),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Fungibility {
+						#[codec(index = 0)]
+						Fungible(#[codec(compact)] ::core::primitive::u128),
+						#[codec(index = 1)]
+						NonFungible(runtime_types::xcm::v3::multiasset::AssetInstance),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct MultiAsset {
+						pub id: runtime_types::xcm::v3::multiasset::AssetId,
+						pub fun: runtime_types::xcm::v3::multiasset::Fungibility,
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum MultiAssetFilter {
+						#[codec(index = 0)]
+						Definite(runtime_types::xcm::v3::multiasset::MultiAssets),
+						#[codec(index = 1)]
+						Wild(runtime_types::xcm::v3::multiasset::WildMultiAsset),
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct MultiAssets(
+						pub ::std::vec::Vec<runtime_types::xcm::v3::multiasset::MultiAsset>,
+					);
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum WildFungibility {
+						#[codec(index = 0)]
+						Fungible,
+						#[codec(index = 1)]
+						NonFungible,
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum WildMultiAsset {
+						#[codec(index = 0)]
+						All,
+						#[codec(index = 1)]
+						AllOf {
+							id: runtime_types::xcm::v3::multiasset::AssetId,
+							fun: runtime_types::xcm::v3::multiasset::WildFungibility,
+						},
+						#[codec(index = 2)]
+						AllCounted(#[codec(compact)] ::core::primitive::u32),
+						#[codec(index = 3)]
+						AllOfCounted {
+							id: runtime_types::xcm::v3::multiasset::AssetId,
+							fun: runtime_types::xcm::v3::multiasset::WildFungibility,
+							#[codec(compact)]
+							count: ::core::primitive::u32,
+						},
+					}
+				}
+				pub mod multilocation {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct MultiLocation {
+						pub parents: ::core::primitive::u8,
+						pub interior: runtime_types::xcm::v3::junctions::Junctions,
+					}
+				}
+				pub mod traits {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Error {
+						#[codec(index = 0)]
+						Overflow,
+						#[codec(index = 1)]
+						Unimplemented,
+						#[codec(index = 2)]
+						UntrustedReserveLocation,
+						#[codec(index = 3)]
+						UntrustedTeleportLocation,
+						#[codec(index = 4)]
+						LocationFull,
+						#[codec(index = 5)]
+						LocationNotInvertible,
+						#[codec(index = 6)]
+						BadOrigin,
+						#[codec(index = 7)]
+						InvalidLocation,
+						#[codec(index = 8)]
+						AssetNotFound,
+						#[codec(index = 9)]
+						FailedToTransactAsset,
+						#[codec(index = 10)]
+						NotWithdrawable,
+						#[codec(index = 11)]
+						LocationCannotHold,
+						#[codec(index = 12)]
+						ExceedsMaxMessageSize,
+						#[codec(index = 13)]
+						DestinationUnsupported,
+						#[codec(index = 14)]
+						Transport,
+						#[codec(index = 15)]
+						Unroutable,
+						#[codec(index = 16)]
+						UnknownClaim,
+						#[codec(index = 17)]
+						FailedToDecode,
+						#[codec(index = 18)]
+						MaxWeightInvalid,
+						#[codec(index = 19)]
+						NotHoldingFees,
+						#[codec(index = 20)]
+						TooExpensive,
+						#[codec(index = 21)]
+						Trap(::core::primitive::u64),
+						#[codec(index = 22)]
+						ExpectationFalse,
+						#[codec(index = 23)]
+						PalletNotFound,
+						#[codec(index = 24)]
+						NameMismatch,
+						#[codec(index = 25)]
+						VersionIncompatible,
+						#[codec(index = 26)]
+						HoldingWouldOverflow,
+						#[codec(index = 27)]
+						ExportError,
+						#[codec(index = 28)]
+						ReanchorFailed,
+						#[codec(index = 29)]
+						NoDeal,
+						#[codec(index = 30)]
+						FeesNotMet,
+						#[codec(index = 31)]
+						LockError,
+						#[codec(index = 32)]
+						NoPermission,
+						#[codec(index = 33)]
+						Unanchored,
+						#[codec(index = 34)]
+						NotDepositable,
+						#[codec(index = 35)]
+						UnhandledXcmVersion,
+						#[codec(index = 36)]
+						WeightLimitReached(::sp_weights::Weight),
+						#[codec(index = 37)]
+						Barrier,
+						#[codec(index = 38)]
+						WeightNotComputable,
+						#[codec(index = 39)]
+						ExceedsStackLimit,
+					}
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub enum Outcome {
+						#[codec(index = 0)]
+						Complete(::sp_weights::Weight),
+						#[codec(index = 1)]
+						Incomplete(::sp_weights::Weight, runtime_types::xcm::v3::traits::Error),
+						#[codec(index = 2)]
+						Error(runtime_types::xcm::v3::traits::Error),
+					}
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Instruction {
+					#[codec(index = 0)]
+					WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets),
+					#[codec(index = 1)]
+					ReserveAssetDeposited(runtime_types::xcm::v3::multiasset::MultiAssets),
+					#[codec(index = 2)]
+					ReceiveTeleportedAsset(runtime_types::xcm::v3::multiasset::MultiAssets),
+					#[codec(index = 3)]
+					QueryResponse {
+						#[codec(compact)]
+						query_id: ::core::primitive::u64,
+						response: runtime_types::xcm::v3::Response,
+						max_weight: ::sp_weights::Weight,
+						querier: ::core::option::Option<
+							runtime_types::xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 4)]
+					TransferAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						beneficiary: runtime_types::xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 5)]
+					TransferReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						dest: runtime_types::xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 6)]
+					Transact {
+						origin_kind: runtime_types::xcm::v2::OriginKind,
+						require_weight_at_most: ::sp_weights::Weight,
+						call: runtime_types::xcm::double_encoded::DoubleEncoded,
+					},
+					#[codec(index = 7)]
+					HrmpNewChannelOpenRequest {
+						#[codec(compact)]
+						sender: ::core::primitive::u32,
+						#[codec(compact)]
+						max_message_size: ::core::primitive::u32,
+						#[codec(compact)]
+						max_capacity: ::core::primitive::u32,
+					},
+					#[codec(index = 8)]
+					HrmpChannelAccepted {
+						#[codec(compact)]
+						recipient: ::core::primitive::u32,
+					},
+					#[codec(index = 9)]
+					HrmpChannelClosing {
+						#[codec(compact)]
+						initiator: ::core::primitive::u32,
+						#[codec(compact)]
+						sender: ::core::primitive::u32,
+						#[codec(compact)]
+						recipient: ::core::primitive::u32,
+					},
+					#[codec(index = 10)]
+					ClearOrigin,
+					#[codec(index = 11)]
+					DescendOrigin(runtime_types::xcm::v3::junctions::Junctions),
+					#[codec(index = 12)]
+					ReportError(runtime_types::xcm::v3::QueryResponseInfo),
+					#[codec(index = 13)]
+					DepositAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						beneficiary: runtime_types::xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 14)]
+					DepositReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 15)]
+					ExchangeAsset {
+						give: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						want: runtime_types::xcm::v3::multiasset::MultiAssets,
+						maximal: ::core::primitive::bool,
+					},
+					#[codec(index = 16)]
+					InitiateReserveWithdraw {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						reserve: runtime_types::xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 17)]
+					InitiateTeleport {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 18)]
+					ReportHolding {
+						response_info: runtime_types::xcm::v3::QueryResponseInfo,
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+					},
+					#[codec(index = 19)]
+					BuyExecution {
+						fees: runtime_types::xcm::v3::multiasset::MultiAsset,
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+					},
+					#[codec(index = 20)]
+					RefundSurplus,
+					#[codec(index = 21)]
+					SetErrorHandler(runtime_types::xcm::v3::Xcm),
+					#[codec(index = 22)]
+					SetAppendix(runtime_types::xcm::v3::Xcm),
+					#[codec(index = 23)]
+					ClearError,
+					#[codec(index = 24)]
+					ClaimAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						ticket: runtime_types::xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 25)]
+					Trap(#[codec(compact)] ::core::primitive::u64),
+					#[codec(index = 26)]
+					SubscribeVersion {
+						#[codec(compact)]
+						query_id: ::core::primitive::u64,
+						max_response_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 27)]
+					UnsubscribeVersion,
+					#[codec(index = 28)]
+					BurnAsset(runtime_types::xcm::v3::multiasset::MultiAssets),
+					#[codec(index = 29)]
+					ExpectAsset(runtime_types::xcm::v3::multiasset::MultiAssets),
+					#[codec(index = 30)]
+					ExpectOrigin(
+						::core::option::Option<
+							runtime_types::xcm::v3::multilocation::MultiLocation,
+						>,
+					),
+					#[codec(index = 31)]
+					ExpectError(
+						::core::option::Option<(
+							::core::primitive::u32,
+							runtime_types::xcm::v3::traits::Error,
+						)>,
+					),
+					#[codec(index = 32)]
+					ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode),
+					#[codec(index = 33)]
+					QueryPallet {
+						module_name: ::std::vec::Vec<::core::primitive::u8>,
+						response_info: runtime_types::xcm::v3::QueryResponseInfo,
+					},
+					#[codec(index = 34)]
+					ExpectPallet {
+						#[codec(compact)]
+						index: ::core::primitive::u32,
+						name: ::std::vec::Vec<::core::primitive::u8>,
+						module_name: ::std::vec::Vec<::core::primitive::u8>,
+						#[codec(compact)]
+						crate_major: ::core::primitive::u32,
+						#[codec(compact)]
+						min_crate_minor: ::core::primitive::u32,
+					},
+					#[codec(index = 35)]
+					ReportTransactStatus(runtime_types::xcm::v3::QueryResponseInfo),
+					#[codec(index = 36)]
+					ClearTransactStatus,
+					#[codec(index = 37)]
+					UniversalOrigin(runtime_types::xcm::v3::junction::Junction),
+					#[codec(index = 38)]
+					ExportMessage {
+						network: runtime_types::xcm::v3::junction::NetworkId,
+						destination: runtime_types::xcm::v3::junctions::Junctions,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 39)]
+					LockAsset {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						unlocker: runtime_types::xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 40)]
+					UnlockAsset {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						target: runtime_types::xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 41)]
+					NoteUnlockable {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						owner: runtime_types::xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 42)]
+					RequestUnlock {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						locker: runtime_types::xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 43)]
+					SetFeesMode { jit_withdraw: ::core::primitive::bool },
+					#[codec(index = 44)]
+					SetTopic([::core::primitive::u8; 32usize]),
+					#[codec(index = 45)]
+					ClearTopic,
+					#[codec(index = 46)]
+					AliasOrigin(runtime_types::xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 47)]
+					UnpaidExecution {
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+						check_origin: ::core::option::Option<
+							runtime_types::xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum MaybeErrorCode {
+					#[codec(index = 0)]
+					Success,
+					#[codec(index = 1)]
+					Error(
+						runtime_types::bounded_collections::bounded_vec::BoundedVec<
+							::core::primitive::u8,
+						>,
+					),
+					#[codec(index = 2)]
+					TruncatedError(
+						runtime_types::bounded_collections::bounded_vec::BoundedVec<
+							::core::primitive::u8,
+						>,
+					),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct PalletInfo {
+					#[codec(compact)]
+					pub index: ::core::primitive::u32,
+					pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec<
+						::core::primitive::u8,
+					>,
+					pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec<
+						::core::primitive::u8,
+					>,
+					#[codec(compact)]
+					pub major: ::core::primitive::u32,
+					#[codec(compact)]
+					pub minor: ::core::primitive::u32,
+					#[codec(compact)]
+					pub patch: ::core::primitive::u32,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct QueryResponseInfo {
+					pub destination: runtime_types::xcm::v3::multilocation::MultiLocation,
+					#[codec(compact)]
+					pub query_id: ::core::primitive::u64,
+					pub max_weight: ::sp_weights::Weight,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Response {
+					#[codec(index = 0)]
+					Null,
+					#[codec(index = 1)]
+					Assets(runtime_types::xcm::v3::multiasset::MultiAssets),
+					#[codec(index = 2)]
+					ExecutionResult(
+						::core::option::Option<(
+							::core::primitive::u32,
+							runtime_types::xcm::v3::traits::Error,
+						)>,
+					),
+					#[codec(index = 3)]
+					Version(::core::primitive::u32),
+					#[codec(index = 4)]
+					PalletsInfo(
+						runtime_types::bounded_collections::bounded_vec::BoundedVec<
+							runtime_types::xcm::v3::PalletInfo,
+						>,
+					),
+					#[codec(index = 5)]
+					DispatchResult(runtime_types::xcm::v3::MaybeErrorCode),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum WeightLimit {
+					#[codec(index = 0)]
+					Unlimited,
+					#[codec(index = 1)]
+					Limited(::sp_weights::Weight),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Xcm(pub ::std::vec::Vec<runtime_types::xcm::v3::Instruction>);
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedMultiAssets {
+				#[codec(index = 1)]
+				V2(runtime_types::xcm::v2::multiasset::MultiAssets),
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::multiasset::MultiAssets),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedMultiLocation {
+				#[codec(index = 1)]
+				V2(runtime_types::xcm::v2::multilocation::MultiLocation),
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::multilocation::MultiLocation),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedXcm {
+				#[codec(index = 2)]
+				V2(runtime_types::xcm::v2::Xcm),
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::Xcm),
+			}
+		}
+	}
+}
diff --git a/bridges/relays/client-bridge-hub-rococo/src/lib.rs b/bridges/relays/client-bridge-hub-rococo/src/lib.rs
index bc2ec3aca41e64868a3b8ae896615ddab3c74a8c..2a0595953956a14bd9af9f8dcdb1f5688a011edf 100644
--- a/bridges/relays/client-bridge-hub-rococo/src/lib.rs
+++ b/bridges/relays/client-bridge-hub-rococo/src/lib.rs
@@ -16,22 +16,29 @@
 
 //! Types used to connect to the BridgeHub-Rococo-Substrate parachain.
 
-use bp_bridge_hub_rococo::{BridgeHubSignedExtension, AVERAGE_BLOCK_INTERVAL};
+pub mod codegen_runtime;
+
+use bp_bridge_hub_rococo::{BridgeHubSignedExtension, SignedExtension, AVERAGE_BLOCK_INTERVAL};
 use bp_messages::MessageNonce;
 use bp_runtime::ChainId;
 use codec::Encode;
 use relay_substrate_client::{
-	Chain, ChainWithBalances, ChainWithMessages, ChainWithTransactions, ChainWithUtilityPallet,
-	Error as SubstrateError, MockedRuntimeUtilityPallet, SignParam, UnderlyingChainProvider,
-	UnsignedTransaction,
+	calls::UtilityCall as MockUtilityCall, Chain, ChainWithBalances, ChainWithMessages,
+	ChainWithTransactions, ChainWithUtilityPallet, Error as SubstrateError,
+	MockedRuntimeUtilityPallet, SignParam, UnderlyingChainProvider, UnsignedTransaction,
 };
 use sp_core::{storage::StorageKey, Pair};
 use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount};
 use std::time::Duration;
 
-/// Re-export runtime wrapper
-pub mod runtime_wrapper;
-pub use runtime_wrapper as runtime;
+pub use codegen_runtime::api::runtime_types;
+
+pub type RuntimeCall = runtime_types::bridge_hub_rococo_runtime::RuntimeCall;
+pub type BridgeMessagesCall = runtime_types::pallet_bridge_messages::pallet::Call;
+pub type BridgeGrandpaCall = runtime_types::pallet_bridge_grandpa::pallet::Call;
+pub type BridgeParachainCall = runtime_types::pallet_bridge_parachains::pallet::Call;
+type UncheckedExtrinsic = bp_bridge_hub_rococo::UncheckedExtrinsic<RuntimeCall, SignedExtension>;
+type UtilityCall = runtime_types::pallet_utility::pallet::Call;
 
 /// Rococo chain definition
 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -49,7 +56,7 @@ impl Chain for BridgeHubRococo {
 	const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;
 
 	type SignedBlock = bp_bridge_hub_rococo::SignedBlock;
-	type Call = runtime::Call;
+	type Call = RuntimeCall;
 }
 
 impl ChainWithBalances for BridgeHubRococo {
@@ -58,13 +65,22 @@ impl ChainWithBalances for BridgeHubRococo {
 	}
 }
 
+impl From<MockUtilityCall<RuntimeCall>> for RuntimeCall {
+	fn from(value: MockUtilityCall<RuntimeCall>) -> RuntimeCall {
+		match value {
+			MockUtilityCall::batch_all(calls) =>
+				RuntimeCall::Utility(UtilityCall::batch_all { calls }),
+		}
+	}
+}
+
 impl ChainWithUtilityPallet for BridgeHubRococo {
-	type UtilityPallet = MockedRuntimeUtilityPallet<runtime::Call>;
+	type UtilityPallet = MockedRuntimeUtilityPallet<RuntimeCall>;
 }
 
 impl ChainWithTransactions for BridgeHubRococo {
 	type AccountKeyPair = sp_core::sr25519::Pair;
-	type SignedTransaction = runtime::UncheckedExtrinsic;
+	type SignedTransaction = UncheckedExtrinsic;
 
 	fn sign_transaction(
 		param: SignParam<Self>,
@@ -72,7 +88,7 @@ impl ChainWithTransactions for BridgeHubRococo {
 	) -> Result<Self::SignedTransaction, SubstrateError> {
 		let raw_payload = SignedPayload::new(
 			unsigned.call,
-			runtime::SignedExtension::from_params(
+			SignedExtension::from_params(
 				param.spec_version,
 				param.transaction_version,
 				unsigned.era,
@@ -86,7 +102,7 @@ impl ChainWithTransactions for BridgeHubRococo {
 		let signer: sp_runtime::MultiSigner = param.signer.public().into();
 		let (call, extra, _) = raw_payload.deconstruct();
 
-		Ok(runtime::UncheckedExtrinsic::new_signed(
+		Ok(UncheckedExtrinsic::new_signed(
 			call,
 			signer.into_account().into(),
 			signature.into(),
@@ -135,13 +151,13 @@ mod tests {
 	use super::*;
 	use relay_substrate_client::TransactionEra;
 
+	type SystemCall = runtime_types::frame_system::pallet::Call;
+
 	#[test]
 	fn parse_transaction_works() {
 		let unsigned = UnsignedTransaction {
-			call: runtime::Call::System(relay_substrate_client::calls::SystemCall::remark(
-				b"Hello world!".to_vec(),
-			))
-			.into(),
+			call: RuntimeCall::System(SystemCall::remark { remark: b"Hello world!".to_vec() })
+				.into(),
 			nonce: 777,
 			tip: 888,
 			era: TransactionEra::immortal(),
diff --git a/bridges/relays/client-bridge-hub-rococo/src/runtime_wrapper.rs b/bridges/relays/client-bridge-hub-rococo/src/runtime_wrapper.rs
deleted file mode 100644
index 26e0bd9da5e29594de1d2b2f6f3f25ce73a0ab44..0000000000000000000000000000000000000000
--- a/bridges/relays/client-bridge-hub-rococo/src/runtime_wrapper.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
-// This file is part of Parity Bridges Common.
-
-// Parity Bridges Common is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Parity Bridges Common is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Parity Bridges Common.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Types that are specific to the BridgeHubRococo runtime.
-
-use codec::{Decode, Encode};
-use scale_info::TypeInfo;
-
-pub use bp_bridge_hub_rococo::SignedExtension;
-pub use bp_header_chain::BridgeGrandpaCallOf;
-pub use bp_parachains::BridgeParachainCall;
-pub use bridge_runtime_common::messages::BridgeMessagesCallOf;
-pub use relay_substrate_client::calls::{SystemCall, UtilityCall};
-
-/// Unchecked BridgeHubRococo extrinsic.
-pub type UncheckedExtrinsic = bp_bridge_hub_rococo::UncheckedExtrinsic<Call, SignedExtension>;
-
-// The indirect pallet call used to sync `Wococo` GRANDPA finality to `BHRococo`.
-pub type BridgeWococoGrandpaCall = BridgeGrandpaCallOf<bp_wococo::Wococo>;
-// The indirect pallet call used to sync `BridgeHubWococo` messages to `BHRococo`.
-pub type BridgeWococoMessagesCall = BridgeMessagesCallOf<bp_bridge_hub_wococo::BridgeHubWococo>;
-
-/// `BridgeHubRococo` Runtime `Call` enum.
-///
-/// The enum represents a subset of possible `Call`s we can send to `BridgeHubRococo` chain.
-/// Ideally this code would be auto-generated from metadata, because we want to
-/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s.
-///
-/// All entries here (like pretty much in the entire file) must be kept in sync with
-/// `BridgeHubRococo` `construct_runtime`, so that we maintain SCALE-compatibility.
-#[allow(clippy::large_enum_variant)]
-#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)]
-pub enum Call {
-	#[cfg(test)]
-	#[codec(index = 0)]
-	System(SystemCall),
-	/// Utility pallet.
-	#[codec(index = 40)]
-	Utility(UtilityCall<Call>),
-
-	/// Wococo bridge pallet.
-	#[codec(index = 41)]
-	BridgeWococoGrandpa(BridgeWococoGrandpaCall),
-	/// Wococo parachain bridge pallet.
-	#[codec(index = 42)]
-	BridgeWococoParachain(BridgeParachainCall),
-	/// Wococo messages bridge pallet.
-	#[codec(index = 46)]
-	BridgeWococoMessages(BridgeWococoMessagesCall),
-}
-
-impl From<UtilityCall<Call>> for Call {
-	fn from(call: UtilityCall<Call>) -> Call {
-		Call::Utility(call)
-	}
-}
diff --git a/bridges/relays/client-bridge-hub-wococo/Cargo.toml b/bridges/relays/client-bridge-hub-wococo/Cargo.toml
index 72a25b001e5bb9a78a0bf4591ba89c57cf6ce768..e5c0684ba0ab061c2079d5c2c4ad847eb756c06c 100644
--- a/bridges/relays/client-bridge-hub-wococo/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-wococo/Cargo.toml
@@ -8,7 +8,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", features = ["derive"] }
 scale-info = { version = "2.6.0", default-features = false, features = ["derive"] }
-relay-substrate-client = { path = "../client-substrate" }
+subxt = { version = "0.28.0", default-features = false, features = [] }
 
 # Bridge dependencies
 
@@ -17,16 +17,19 @@ bp-bridge-hub-wococo = { path = "../../primitives/chain-bridge-hub-wococo" }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
+bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bp-rococo = { path = "../../primitives/chain-rococo" }
 bp-runtime = { path = "../../primitives/runtime" }
 
 bridge-runtime-common = { path = "../../bin/runtime-common" }
+relay-bridge-hub-rococo-client = { path = "../client-bridge-hub-rococo" }
+relay-substrate-client = { path = "../client-substrate" }
 
 # Substrate Dependencies
 
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" }
+sp-weights = { git = "https://github.com/paritytech/substrate", branch = "master" }
 
 [dev-dependencies]
-bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 sp-consensus-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/bridges/relays/client-bridge-hub-wococo/src/lib.rs b/bridges/relays/client-bridge-hub-wococo/src/lib.rs
index c9acc47dd954db5605efedcc1b3ef5a62ee9486b..0e2b9839301bad0aaf14edc01c37f898ccc62667 100644
--- a/bridges/relays/client-bridge-hub-wococo/src/lib.rs
+++ b/bridges/relays/client-bridge-hub-wococo/src/lib.rs
@@ -16,7 +16,7 @@
 
 //! Types used to connect to the BridgeHub-Wococo-Substrate parachain.
 
-use bp_bridge_hub_wococo::{BridgeHubSignedExtension, AVERAGE_BLOCK_INTERVAL};
+use bp_bridge_hub_wococo::{BridgeHubSignedExtension, SignedExtension, AVERAGE_BLOCK_INTERVAL};
 use bp_messages::MessageNonce;
 use bp_runtime::ChainId;
 use codec::Encode;
@@ -29,9 +29,14 @@ use sp_core::{storage::StorageKey, Pair};
 use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount};
 use std::time::Duration;
 
-/// Re-export runtime wrapper
-pub mod runtime_wrapper;
-pub use runtime_wrapper as runtime;
+pub use codegen_runtime::api::runtime_types;
+use relay_bridge_hub_rococo_client::codegen_runtime;
+
+pub type RuntimeCall = runtime_types::bridge_hub_rococo_runtime::RuntimeCall;
+pub type BridgeMessagesCall = runtime_types::pallet_bridge_messages::pallet::Call;
+pub type BridgeGrandpaCall = runtime_types::pallet_bridge_grandpa::pallet::Call;
+pub type BridgeParachainCall = runtime_types::pallet_bridge_parachains::pallet::Call;
+type UncheckedExtrinsic = bp_bridge_hub_wococo::UncheckedExtrinsic<RuntimeCall, SignedExtension>;
 
 /// Wococo chain definition
 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -49,7 +54,7 @@ impl Chain for BridgeHubWococo {
 	const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;
 
 	type SignedBlock = bp_bridge_hub_wococo::SignedBlock;
-	type Call = runtime::Call;
+	type Call = RuntimeCall;
 }
 
 impl ChainWithBalances for BridgeHubWococo {
@@ -59,12 +64,12 @@ impl ChainWithBalances for BridgeHubWococo {
 }
 
 impl ChainWithUtilityPallet for BridgeHubWococo {
-	type UtilityPallet = MockedRuntimeUtilityPallet<runtime::Call>;
+	type UtilityPallet = MockedRuntimeUtilityPallet<RuntimeCall>;
 }
 
 impl ChainWithTransactions for BridgeHubWococo {
 	type AccountKeyPair = sp_core::sr25519::Pair;
-	type SignedTransaction = runtime::UncheckedExtrinsic;
+	type SignedTransaction = UncheckedExtrinsic;
 
 	fn sign_transaction(
 		param: SignParam<Self>,
@@ -72,7 +77,7 @@ impl ChainWithTransactions for BridgeHubWococo {
 	) -> Result<Self::SignedTransaction, SubstrateError> {
 		let raw_payload = SignedPayload::new(
 			unsigned.call,
-			runtime::SignedExtension::from_params(
+			SignedExtension::from_params(
 				param.spec_version,
 				param.transaction_version,
 				unsigned.era,
@@ -86,7 +91,7 @@ impl ChainWithTransactions for BridgeHubWococo {
 		let signer: sp_runtime::MultiSigner = param.signer.public().into();
 		let (call, extra, _) = raw_payload.deconstruct();
 
-		Ok(runtime::UncheckedExtrinsic::new_signed(
+		Ok(UncheckedExtrinsic::new_signed(
 			call,
 			signer.into_account().into(),
 			signature.into(),
@@ -135,10 +140,12 @@ mod tests {
 	use super::*;
 	use relay_substrate_client::TransactionEra;
 
+	type SystemCall = runtime_types::frame_system::pallet::Call;
+
 	#[test]
 	fn parse_transaction_works() {
 		let unsigned = UnsignedTransaction {
-			call: runtime::Call::System(runtime::SystemCall::remark(b"Hello world!".to_vec()))
+			call: RuntimeCall::System(SystemCall::remark { remark: b"Hello world!".to_vec() })
 				.into(),
 			nonce: 777,
 			tip: 888,
diff --git a/bridges/relays/client-bridge-hub-wococo/src/runtime_wrapper.rs b/bridges/relays/client-bridge-hub-wococo/src/runtime_wrapper.rs
deleted file mode 100644
index b9803955922db4c3cd2b31b482ac941c1669a655..0000000000000000000000000000000000000000
--- a/bridges/relays/client-bridge-hub-wococo/src/runtime_wrapper.rs
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
-// This file is part of Parity Bridges Common.
-
-// Parity Bridges Common is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Parity Bridges Common is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Parity Bridges Common.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Types that are specific to the BridgeHubWococo runtime.
-
-use codec::{Decode, Encode};
-use scale_info::TypeInfo;
-
-pub use bp_bridge_hub_wococo::SignedExtension;
-pub use bp_header_chain::BridgeGrandpaCallOf;
-pub use bp_parachains::BridgeParachainCall;
-pub use bridge_runtime_common::messages::BridgeMessagesCallOf;
-pub use relay_substrate_client::calls::{SystemCall, UtilityCall};
-
-/// Unchecked BridgeHubWococo extrinsic.
-pub type UncheckedExtrinsic = bp_bridge_hub_wococo::UncheckedExtrinsic<Call, SignedExtension>;
-
-// The indirect pallet call used to sync `Rococo` GRANDPA finality to `BHWococo`.
-pub type BridgeRococoGrandpaCall = BridgeGrandpaCallOf<bp_rococo::Rococo>;
-// The indirect pallet call used to sync `BridgeHubRococo` messages to `BridgeHubWococo`.
-pub type BridgeRococoMessagesCall = BridgeMessagesCallOf<bp_bridge_hub_rococo::BridgeHubRococo>;
-
-/// `BridgeHubWococo` Runtime `Call` enum.
-///
-/// The enum represents a subset of possible `Call`s we can send to `BridgeHubWococo` chain.
-/// Ideally this code would be auto-generated from metadata, because we want to
-/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s.
-///
-/// All entries here (like pretty much in the entire file) must be kept in sync with
-/// `BridgeHubWococo` `construct_runtime`, so that we maintain SCALE-compatibility.
-#[allow(clippy::large_enum_variant)]
-#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)]
-pub enum Call {
-	#[cfg(test)]
-	#[codec(index = 0)]
-	System(SystemCall),
-	/// Utility pallet.
-	#[codec(index = 40)]
-	Utility(UtilityCall<Call>),
-
-	/// Rococo bridge pallet.
-	#[codec(index = 43)]
-	BridgeRococoGrandpa(BridgeRococoGrandpaCall),
-	/// Rococo parachain bridge pallet.
-	#[codec(index = 44)]
-	BridgeRococoParachain(BridgeParachainCall),
-	/// Rococo messages bridge pallet.
-	#[codec(index = 45)]
-	BridgeRococoMessages(BridgeRococoMessagesCall),
-}
-
-impl From<UtilityCall<Call>> for Call {
-	fn from(call: UtilityCall<Call>) -> Call {
-		Call::Utility(call)
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use bp_runtime::BasicOperatingMode;
-	use sp_consensus_grandpa::AuthorityList;
-	use sp_core::hexdisplay::HexDisplay;
-	use sp_runtime::traits::Header;
-	use std::str::FromStr;
-
-	pub type RelayBlockNumber = bp_polkadot_core::BlockNumber;
-	pub type RelayBlockHasher = bp_polkadot_core::Hasher;
-	pub type RelayBlockHeader = sp_runtime::generic::Header<RelayBlockNumber, RelayBlockHasher>;
-
-	#[test]
-	fn encode_decode_calls() {
-		let header = RelayBlockHeader::new(
-			75,
-			bp_polkadot_core::Hash::from_str(
-				"0xd2c0afaab32de0cb8f7f0d89217e37c5ea302c1ffb5a7a83e10d20f12c32874d",
-			)
-			.expect("invalid value"),
-			bp_polkadot_core::Hash::from_str(
-				"0x92b965f0656a4e0e5fc0167da2d4b5ee72b3be2c1583c4c1e5236c8c12aa141b",
-			)
-			.expect("invalid value"),
-			bp_polkadot_core::Hash::from_str(
-				"0xae4a25acf250d72ed02c149ecc7dd3c9ee976d41a2888fc551de8064521dc01d",
-			)
-			.expect("invalid value"),
-			Default::default(),
-		);
-		let init_data = bp_header_chain::InitializationData {
-			header: Box::new(header),
-			authority_list: AuthorityList::default(),
-			set_id: 6,
-			operating_mode: BasicOperatingMode::Normal,
-		};
-		let call = BridgeRococoGrandpaCall::initialize { init_data };
-		let tx = Call::BridgeRococoGrandpa(call);
-
-		// encode call as hex string
-		let hex_encoded_call = format!("0x{:?}", HexDisplay::from(&Encode::encode(&tx)));
-		assert_eq!(hex_encoded_call, "0x2b01ae4a25acf250d72ed02c149ecc7dd3c9ee976d41a2888fc551de8064521dc01d2d0192b965f0656a4e0e5fc0167da2d4b5ee72b3be2c1583c4c1e5236c8c12aa141bd2c0afaab32de0cb8f7f0d89217e37c5ea302c1ffb5a7a83e10d20f12c32874d0000060000000000000000");
-	}
-}
diff --git a/bridges/relays/client-rialto-parachain/src/codegen_runtime.rs b/bridges/relays/client-rialto-parachain/src/codegen_runtime.rs
index 1338d4938a36fd7fac228eeb37784ceff18e291f..eb19d98d7e4874d81871d483a4fba897ac4f14a2 100644
--- a/bridges/relays/client-rialto-parachain/src/codegen_runtime.rs
+++ b/bridges/relays/client-rialto-parachain/src/codegen_runtime.rs
@@ -28,18 +28,18 @@ pub mod api {
 			use super::runtime_types;
 			pub mod bounded_vec {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct BoundedVec<_0>(pub ::std::vec::Vec<_0>);
 			}
 			pub mod weak_bounded_vec {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct WeakBoundedVec<_0>(pub ::std::vec::Vec<_0>);
 			}
 		}
 		pub mod bp_header_chain {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct StoredHeaderData<_0, _1> {
 				pub number: _0,
 				pub state_root: _1,
@@ -47,37 +47,37 @@ pub mod api {
 		}
 		pub mod bp_messages {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct DeliveredMessages {
 				pub begin: ::core::primitive::u64,
 				pub end: ::core::primitive::u64,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct InboundLaneData<_0> {
 				pub relayers: ::std::vec::Vec<runtime_types::bp_messages::UnrewardedRelayer<_0>>,
 				pub last_confirmed_nonce: ::core::primitive::u64,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct LaneId(pub [::core::primitive::u8; 4usize]);
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct MessageKey {
 				pub lane_id: runtime_types::bp_messages::LaneId,
 				pub nonce: ::core::primitive::u64,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum MessagesOperatingMode {
 				#[codec(index = 0)]
 				Basic(runtime_types::bp_runtime::BasicOperatingMode),
 				#[codec(index = 1)]
 				RejectingOutboundMessages,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct OutboundLaneData {
 				pub oldest_unpruned_nonce: ::core::primitive::u64,
 				pub latest_received_nonce: ::core::primitive::u64,
 				pub latest_generated_nonce: ::core::primitive::u64,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum ReceivalResult<_0> {
 				#[codec(index = 0)]
 				Dispatched(runtime_types::bp_runtime::messages::MessageDispatchResult<_0>),
@@ -88,7 +88,7 @@ pub mod api {
 				#[codec(index = 3)]
 				TooManyUnconfirmedMessages,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct ReceivedMessages<_0> {
 				pub lane: runtime_types::bp_messages::LaneId,
 				pub receive_results: ::std::vec::Vec<(
@@ -96,7 +96,7 @@ pub mod api {
 					runtime_types::bp_messages::ReceivalResult<_0>,
 				)>,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct UnrewardedRelayer<_0> {
 				pub relayer: _0,
 				pub messages: runtime_types::bp_messages::DeliveredMessages,
@@ -104,14 +104,22 @@ pub mod api {
 		}
 		pub mod bp_relayers {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			pub mod registration {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Registration<_0, _1> {
+					pub valid_till: _0,
+					pub stake: _1,
+				}
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum RewardsAccountOwner {
 				#[codec(index = 0)]
 				ThisChain,
 				#[codec(index = 1)]
 				BridgedChain,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct RewardsAccountParams {
 				pub lane_id: runtime_types::bp_messages::LaneId,
 				pub bridged_chain_id: [::core::primitive::u8; 4usize],
@@ -122,22 +130,22 @@ pub mod api {
 			use super::runtime_types;
 			pub mod messages {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct MessageDispatchResult<_0> {
 					pub unspent_weight: ::sp_weights::Weight,
 					pub dispatch_level_result: _0,
 				}
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum BasicOperatingMode {
 				#[codec(index = 0)]
 				Normal,
 				#[codec(index = 1)]
 				Halted,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct HeaderId<_0, _1>(pub _1, pub _0);
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum OwnedBridgeModuleError {
 				#[codec(index = 0)]
 				Halted,
@@ -147,7 +155,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod messages_xcm_extension {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum XcmBlobMessageDispatchResult {
 					#[codec(index = 0)]
 					InvalidPayload,
@@ -162,7 +170,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					service_overweight {
@@ -170,14 +178,14 @@ pub mod api {
 						weight_limit: ::sp_weights::Weight,
 					},
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					Unknown,
 					#[codec(index = 1)]
 					OverLimit,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					InvalidFormat { message_id: [::core::primitive::u8; 32usize] },
@@ -209,11 +217,11 @@ pub mod api {
 					MaxMessagesExhausted { message_id: [::core::primitive::u8; 32usize] },
 				}
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct ConfigData {
 				pub max_individual: ::sp_weights::Weight,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct PageIndexData {
 				pub begin_used: ::core::primitive::u32,
 				pub end_used: ::core::primitive::u32,
@@ -224,10 +232,10 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					# [codec (index = 0)] set_validation_data { data : runtime_types :: cumulus_primitives_parachain_inherent :: ParachainInherentData , } , # [codec (index = 1)] sudo_send_upward_message { message : :: std :: vec :: Vec < :: core :: primitive :: u8 > , } , # [codec (index = 2)] authorize_upgrade { code_hash : :: subxt :: utils :: H256 , check_version : :: core :: primitive :: bool , } , # [codec (index = 3)] enact_authorized_upgrade { code : :: std :: vec :: Vec < :: core :: primitive :: u8 > , } , }
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					OverlappingUpgrades,
@@ -246,7 +254,7 @@ pub mod api {
 					#[codec(index = 7)]
 					Unauthorized,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					ValidationFunctionStored,
@@ -271,7 +279,7 @@ pub mod api {
 			}
 			pub mod relay_state_snapshot {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct MessagingStateSnapshot {
 					pub dmq_mqc_head: ::subxt::utils::H256,
 					pub relay_dispatch_queue_size: (::core::primitive::u32, ::core::primitive::u32),
@@ -285,7 +293,7 @@ pub mod api {
 					)>,
 				}
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct CodeUpgradeAuthorization {
 				pub code_hash: ::subxt::utils::H256,
 				pub check_version: ::core::primitive::bool,
@@ -295,11 +303,11 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					InvalidFormat([::core::primitive::u8; 32usize]),
@@ -317,7 +325,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					service_overweight {
@@ -341,7 +349,7 @@ pub mod api {
 					#[codec(index = 8)]
 					update_xcmp_max_individual_weight { new: ::sp_weights::Weight },
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					FailedToSend,
@@ -354,7 +362,7 @@ pub mod api {
 					#[codec(index = 4)]
 					WeightOverLimit,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					Success {
@@ -390,7 +398,7 @@ pub mod api {
 					OverweightServiced { index: ::core::primitive::u64, used: ::sp_weights::Weight },
 				}
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct InboundChannelDetails {
 				pub sender: runtime_types::polkadot_parachain::primitives::Id,
 				pub state: runtime_types::cumulus_pallet_xcmp_queue::InboundState,
@@ -399,14 +407,14 @@ pub mod api {
 					runtime_types::polkadot_parachain::primitives::XcmpMessageFormat,
 				)>,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum InboundState {
 				#[codec(index = 0)]
 				Ok,
 				#[codec(index = 1)]
 				Suspended,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct OutboundChannelDetails {
 				pub recipient: runtime_types::polkadot_parachain::primitives::Id,
 				pub state: runtime_types::cumulus_pallet_xcmp_queue::OutboundState,
@@ -414,14 +422,14 @@ pub mod api {
 				pub first_index: ::core::primitive::u16,
 				pub last_index: ::core::primitive::u16,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum OutboundState {
 				#[codec(index = 0)]
 				Ok,
 				#[codec(index = 1)]
 				Suspended,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct QueueConfigData {
 				pub suspend_threshold: ::core::primitive::u32,
 				pub drop_threshold: ::core::primitive::u32,
@@ -433,9 +441,9 @@ pub mod api {
 		}
 		pub mod cumulus_primitives_parachain_inherent {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct MessageQueueChain(pub ::subxt::utils::H256);
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct ParachainInherentData {
 				pub validation_data:
 					runtime_types::polkadot_primitives::v4::PersistedValidationData<
@@ -460,7 +468,7 @@ pub mod api {
 		}
 		pub mod finality_grandpa {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct Commit<_0, _1, _2, _3> {
 				pub target_hash: _0,
 				pub target_number: _1,
@@ -468,12 +476,12 @@ pub mod api {
 					runtime_types::finality_grandpa::SignedPrecommit<_0, _1, _2, _3>,
 				>,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct Precommit<_0, _1> {
 				pub target_hash: _0,
 				pub target_number: _1,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct SignedPrecommit<_0, _1, _2, _3> {
 				pub precommit: runtime_types::finality_grandpa::Precommit<_0, _1>,
 				pub signature: _2,
@@ -484,7 +492,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod dispatch {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum DispatchClass {
 					#[codec(index = 0)]
 					Normal,
@@ -493,20 +501,20 @@ pub mod api {
 					#[codec(index = 2)]
 					Mandatory,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct DispatchInfo {
 					pub weight: ::sp_weights::Weight,
 					pub class: runtime_types::frame_support::dispatch::DispatchClass,
 					pub pays_fee: runtime_types::frame_support::dispatch::Pays,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Pays {
 					#[codec(index = 0)]
 					Yes,
 					#[codec(index = 1)]
 					No,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct PerDispatchClass<_0> {
 					pub normal: _0,
 					pub operational: _0,
@@ -519,7 +527,9 @@ pub mod api {
 					use super::runtime_types;
 					pub mod misc {
 						use super::runtime_types;
-						#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+						#[derive(
+							:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq,
+						)]
 						pub enum BalanceStatus {
 							#[codec(index = 0)]
 							Free,
@@ -536,49 +546,49 @@ pub mod api {
 				use super::runtime_types;
 				pub mod check_genesis {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct CheckGenesis;
 				}
 				pub mod check_mortality {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct CheckMortality(pub ::sp_runtime::generic::Era);
 				}
 				pub mod check_non_zero_sender {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct CheckNonZeroSender;
 				}
 				pub mod check_nonce {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct CheckNonce(#[codec(compact)] pub ::core::primitive::u32);
 				}
 				pub mod check_spec_version {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct CheckSpecVersion;
 				}
 				pub mod check_tx_version {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct CheckTxVersion;
 				}
 				pub mod check_weight {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct CheckWeight;
 				}
 			}
 			pub mod limits {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct BlockLength {
 					pub max: runtime_types::frame_support::dispatch::PerDispatchClass<
 						::core::primitive::u32,
 					>,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct BlockWeights {
 					pub base_block: ::sp_weights::Weight,
 					pub max_block: ::sp_weights::Weight,
@@ -586,7 +596,7 @@ pub mod api {
 						runtime_types::frame_system::limits::WeightsPerClass,
 					>,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct WeightsPerClass {
 					pub base_extrinsic: ::sp_weights::Weight,
 					pub max_extrinsic: ::core::option::Option<::sp_weights::Weight>,
@@ -596,7 +606,7 @@ pub mod api {
 			}
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					remark { remark: ::std::vec::Vec<::core::primitive::u8> },
@@ -623,7 +633,7 @@ pub mod api {
 					#[codec(index = 7)]
 					remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8> },
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					InvalidSpecName,
@@ -638,7 +648,7 @@ pub mod api {
 					#[codec(index = 5)]
 					CallFiltered,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					ExtrinsicSuccess {
@@ -659,7 +669,7 @@ pub mod api {
 					Remarked { sender: ::sp_core::crypto::AccountId32, hash: ::subxt::utils::H256 },
 				}
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct AccountInfo<_0, _1> {
 				pub nonce: _0,
 				pub consumers: _0,
@@ -667,19 +677,19 @@ pub mod api {
 				pub sufficients: _0,
 				pub data: _1,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct EventRecord<_0, _1> {
 				pub phase: runtime_types::frame_system::Phase,
 				pub event: _0,
 				pub topics: ::std::vec::Vec<_1>,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct LastRuntimeUpgradeInfo {
 				#[codec(compact)]
 				pub spec_version: ::core::primitive::u32,
 				pub spec_name: ::std::string::String,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum Phase {
 				#[codec(index = 0)]
 				ApplyExtrinsic(::core::primitive::u32),
@@ -693,7 +703,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					transfer_allow_death {
@@ -747,7 +757,7 @@ pub mod api {
 						new_free: ::core::primitive::u128,
 					},
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					VestingBalance,
@@ -770,7 +780,7 @@ pub mod api {
 					#[codec(index = 9)]
 					TooManyFreezes,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					Endowed {
@@ -851,14 +861,14 @@ pub mod api {
 			}
 			pub mod types {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct AccountData<_0> {
 					pub free: _0,
 					pub reserved: _0,
 					pub frozen: _0,
 					pub flags: runtime_types::pallet_balances::types::ExtraFlags,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct BalanceLock<_0> {
 					pub id: [::core::primitive::u8; 8usize],
 					pub amount: _0,
@@ -870,14 +880,15 @@ pub mod api {
 					:: subxt :: ext :: codec :: CompactAs,
 					Clone,
 					Debug,
+					PartialEq,
 				)]
 				pub struct ExtraFlags(pub ::core::primitive::u128);
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct IdAmount<_0, _1> {
 					pub id: _0,
 					pub amount: _1,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Reasons {
 					#[codec(index = 0)]
 					Fee,
@@ -886,7 +897,7 @@ pub mod api {
 					#[codec(index = 2)]
 					All,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct ReserveData<_0, _1> {
 					pub id: _0,
 					pub amount: _1,
@@ -897,7 +908,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					submit_finality_proof {
@@ -930,7 +941,7 @@ pub mod api {
 						operating_mode: runtime_types::bp_runtime::BasicOperatingMode,
 					},
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					InvalidJustification,
@@ -949,7 +960,7 @@ pub mod api {
 					#[codec(index = 7)]
 					BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					UpdatedBestFinalizedHeader {
@@ -960,7 +971,7 @@ pub mod api {
 			}
 			pub mod storage_types {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct StoredAuthoritySet {
 					pub authorities: runtime_types::bounded_collections::bounded_vec::BoundedVec<(
 						runtime_types::sp_consensus_grandpa::app::Public,
@@ -974,10 +985,10 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					# [codec (index = 0)] set_owner { new_owner : :: core :: option :: Option < :: sp_core :: crypto :: AccountId32 > , } , # [codec (index = 1)] set_operating_mode { operating_mode : runtime_types :: bp_messages :: MessagesOperatingMode , } , # [codec (index = 2)] receive_messages_proof { relayer_id_at_bridged_chain : :: sp_core :: crypto :: AccountId32 , proof : :: bridge_runtime_common :: messages :: target :: FromBridgedChainMessagesProof < :: bp_millau :: MillauHash > , messages_count : :: core :: primitive :: u32 , dispatch_weight : :: sp_weights :: Weight , } , # [codec (index = 3)] receive_messages_delivery_proof { proof : :: bridge_runtime_common :: messages :: source :: FromBridgedChainMessagesDeliveryProof < :: bp_millau :: MillauHash > , relayers_state : :: bp_messages :: UnrewardedRelayersState , } , }
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					NotOperatingNormally,
@@ -1010,7 +1021,7 @@ pub mod api {
 					#[codec(index = 14)]
 					BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					# [codec (index = 0)] MessageAccepted { lane_id : runtime_types :: bp_messages :: LaneId , nonce : :: core :: primitive :: u64 , } , # [codec (index = 1)] MessagesReceived (:: std :: vec :: Vec < runtime_types :: bp_messages :: ReceivedMessages < runtime_types :: bridge_runtime_common :: messages_xcm_extension :: XcmBlobMessageDispatchResult > > ,) , # [codec (index = 2)] MessagesDelivered { lane_id : runtime_types :: bp_messages :: LaneId , messages : runtime_types :: bp_messages :: DeliveredMessages , } , }
 			}
@@ -1019,21 +1030,37 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					claim_rewards {
 						rewards_account_params: runtime_types::bp_relayers::RewardsAccountParams,
 					},
+					#[codec(index = 1)]
+					register { valid_till: ::core::primitive::u32 },
+					#[codec(index = 2)]
+					deregister,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					NoRewardForRelayer,
 					#[codec(index = 1)]
 					FailedToPayReward,
+					#[codec(index = 2)]
+					InvalidRegistrationLease,
+					#[codec(index = 3)]
+					CannotReduceRegistrationLease,
+					#[codec(index = 4)]
+					FailedToReserve,
+					#[codec(index = 5)]
+					FailedToUnreserve,
+					#[codec(index = 6)]
+					NotRegistered,
+					#[codec(index = 7)]
+					RegistrationIsStillActive,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					RewardPaid {
@@ -1041,6 +1068,24 @@ pub mod api {
 						rewards_account_params: runtime_types::bp_relayers::RewardsAccountParams,
 						reward: ::core::primitive::u128,
 					},
+					#[codec(index = 1)]
+					RegistrationUpdated {
+						relayer: ::sp_core::crypto::AccountId32,
+						registration: runtime_types::bp_relayers::registration::Registration<
+							::core::primitive::u32,
+							::core::primitive::u128,
+						>,
+					},
+					#[codec(index = 2)]
+					Deregistered { relayer: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 3)]
+					SlashedAndDeregistered {
+						relayer: ::sp_core::crypto::AccountId32,
+						registration: runtime_types::bp_relayers::registration::Registration<
+							::core::primitive::u32,
+							::core::primitive::u128,
+						>,
+					},
 				}
 			}
 		}
@@ -1048,7 +1093,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					sudo {
@@ -1072,12 +1117,12 @@ pub mod api {
 							::std::boxed::Box<runtime_types::rialto_parachain_runtime::RuntimeCall>,
 					},
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					RequireSudo,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					Sudid {
@@ -1100,7 +1145,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					set {
@@ -1114,7 +1159,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					TransactionFeePaid {
@@ -1124,9 +1169,9 @@ pub mod api {
 					},
 				}
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct ChargeTransactionPayment(#[codec(compact)] pub ::core::primitive::u128);
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum Releases {
 				#[codec(index = 0)]
 				V1Ancient,
@@ -1138,7 +1183,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod pallet {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Call {
 					#[codec(index = 0)]
 					send {
@@ -1199,7 +1244,7 @@ pub mod api {
 						weight_limit: runtime_types::xcm::v3::WeightLimit,
 					},
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Error {
 					#[codec(index = 0)]
 					Unreachable,
@@ -1242,7 +1287,7 @@ pub mod api {
 					#[codec(index = 19)]
 					InUse,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Event {
 					#[codec(index = 0)]
 					Attempted(runtime_types::xcm::v3::traits::Outcome),
@@ -1369,17 +1414,17 @@ pub mod api {
 		}
 		pub mod polkadot_core_primitives {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct InboundDownwardMessage<_0> {
 				pub sent_at: _0,
 				pub msg: ::std::vec::Vec<::core::primitive::u8>,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct InboundHrmpMessage<_0> {
 				pub sent_at: _0,
 				pub data: ::std::vec::Vec<::core::primitive::u8>,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct OutboundHrmpMessage<_0> {
 				pub recipient: _0,
 				pub data: ::std::vec::Vec<::core::primitive::u8>,
@@ -1389,7 +1434,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod primitives {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct HeadData(pub ::std::vec::Vec<::core::primitive::u8>);
 				#[derive(
 					:: codec :: Decode,
@@ -1397,9 +1442,10 @@ pub mod api {
 					:: subxt :: ext :: codec :: CompactAs,
 					Clone,
 					Debug,
+					PartialEq,
 				)]
 				pub struct Id(pub ::core::primitive::u32);
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum XcmpMessageFormat {
 					#[codec(index = 0)]
 					ConcatenatedVersionedXcm,
@@ -1414,7 +1460,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod v4 {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct AbridgedHostConfiguration {
 					pub max_code_size: ::core::primitive::u32,
 					pub max_head_data_size: ::core::primitive::u32,
@@ -1426,7 +1472,7 @@ pub mod api {
 					pub validation_upgrade_cooldown: ::core::primitive::u32,
 					pub validation_upgrade_delay: ::core::primitive::u32,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct AbridgedHrmpChannel {
 					pub max_capacity: ::core::primitive::u32,
 					pub max_total_size: ::core::primitive::u32,
@@ -1435,14 +1481,14 @@ pub mod api {
 					pub total_size: ::core::primitive::u32,
 					pub mqc_head: ::core::option::Option<::subxt::utils::H256>,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct PersistedValidationData<_0, _1> {
 					pub parent_head: runtime_types::polkadot_parachain::primitives::HeadData,
 					pub relay_parent_number: _1,
 					pub relay_parent_storage_root: _0,
 					pub max_pov_size: _1,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum UpgradeRestriction {
 					#[codec(index = 0)]
 					Present,
@@ -1451,13 +1497,13 @@ pub mod api {
 		}
 		pub mod rialto_parachain_runtime {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct BridgeRejectObsoleteHeadersAndMessages;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct DummyBridgeRefundMillauMessages;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct Runtime;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum RuntimeCall {
 				#[codec(index = 0)]
 				System(runtime_types::frame_system::pallet::Call),
@@ -1484,7 +1530,7 @@ pub mod api {
 				#[codec(index = 56)]
 				BridgeMillauMessages(runtime_types::pallet_bridge_messages::pallet::Call),
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum RuntimeEvent {
 				#[codec(index = 0)]
 				System(runtime_types::frame_system::pallet::Event),
@@ -1522,10 +1568,11 @@ pub mod api {
 					:: subxt :: ext :: codec :: CompactAs,
 					Clone,
 					Debug,
+					PartialEq,
 				)]
 				pub struct FixedU128(pub ::core::primitive::u128);
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum ArithmeticError {
 				#[codec(index = 0)]
 				Underflow,
@@ -1539,9 +1586,9 @@ pub mod api {
 			use super::runtime_types;
 			pub mod app {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Public(pub runtime_types::sp_core::ed25519::Public);
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Signature(pub runtime_types::sp_core::ed25519::Signature);
 			}
 		}
@@ -1549,19 +1596,19 @@ pub mod api {
 			use super::runtime_types;
 			pub mod ecdsa {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Signature(pub [::core::primitive::u8; 65usize]);
 			}
 			pub mod ed25519 {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Public(pub [::core::primitive::u8; 32usize]);
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Signature(pub [::core::primitive::u8; 64usize]);
 			}
 			pub mod sr25519 {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Signature(pub [::core::primitive::u8; 64usize]);
 			}
 		}
@@ -1571,7 +1618,7 @@ pub mod api {
 				use super::runtime_types;
 				pub mod digest {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum DigestItem {
 						#[codec(index = 6)]
 						PreRuntime(
@@ -1596,14 +1643,14 @@ pub mod api {
 				}
 				pub mod unchecked_extrinsic {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct UncheckedExtrinsic<_0, _1, _2, _3>(
 						pub ::std::vec::Vec<::core::primitive::u8>,
 						#[codec(skip)] pub ::core::marker::PhantomData<(_1, _0, _2, _3)>,
 					);
 				}
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum DispatchError {
 				#[codec(index = 0)]
 				Other,
@@ -1632,12 +1679,12 @@ pub mod api {
 				#[codec(index = 12)]
 				Unavailable,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct ModuleError {
 				pub index: ::core::primitive::u8,
 				pub error: [::core::primitive::u8; 4usize],
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum MultiSignature {
 				#[codec(index = 0)]
 				Ed25519(runtime_types::sp_core::ed25519::Signature),
@@ -1646,7 +1693,7 @@ pub mod api {
 				#[codec(index = 2)]
 				Ecdsa(runtime_types::sp_core::ecdsa::Signature),
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum TokenError {
 				#[codec(index = 0)]
 				FundsUnavailable,
@@ -1667,7 +1714,7 @@ pub mod api {
 				#[codec(index = 8)]
 				NotExpendable,
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum TransactionalError {
 				#[codec(index = 0)]
 				LimitReached,
@@ -1679,7 +1726,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod storage_proof {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct StorageProof {
 					pub trie_nodes: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
 				}
@@ -1687,7 +1734,7 @@ pub mod api {
 		}
 		pub mod sp_version {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct RuntimeVersion {
 				pub spec_name: ::std::string::String,
 				pub impl_name: ::std::string::String,
@@ -1702,7 +1749,7 @@ pub mod api {
 		}
 		pub mod sp_weights {
 			use super::runtime_types;
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub struct RuntimeDbWeight {
 				pub read: ::core::primitive::u64,
 				pub write: ::core::primitive::u64,
@@ -1712,7 +1759,7 @@ pub mod api {
 			use super::runtime_types;
 			pub mod double_encoded {
 				use super::runtime_types;
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct DoubleEncoded {
 					pub encoded: ::std::vec::Vec<::core::primitive::u8>,
 				}
@@ -1721,7 +1768,7 @@ pub mod api {
 				use super::runtime_types;
 				pub mod junction {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Junction {
 						#[codec(index = 0)]
 						Parachain(#[codec(compact)] ::core::primitive::u32),
@@ -1762,14 +1809,14 @@ pub mod api {
 				}
 				pub mod multiasset {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum AssetId {
 						#[codec(index = 0)]
 						Concrete(runtime_types::xcm::v2::multilocation::MultiLocation),
 						#[codec(index = 1)]
 						Abstract(::std::vec::Vec<::core::primitive::u8>),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum AssetInstance {
 						#[codec(index = 0)]
 						Undefined,
@@ -1786,37 +1833,37 @@ pub mod api {
 						#[codec(index = 6)]
 						Blob(::std::vec::Vec<::core::primitive::u8>),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Fungibility {
 						#[codec(index = 0)]
 						Fungible(#[codec(compact)] ::core::primitive::u128),
 						#[codec(index = 1)]
 						NonFungible(runtime_types::xcm::v2::multiasset::AssetInstance),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct MultiAsset {
 						pub id: runtime_types::xcm::v2::multiasset::AssetId,
 						pub fun: runtime_types::xcm::v2::multiasset::Fungibility,
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum MultiAssetFilter {
 						#[codec(index = 0)]
 						Definite(runtime_types::xcm::v2::multiasset::MultiAssets),
 						#[codec(index = 1)]
 						Wild(runtime_types::xcm::v2::multiasset::WildMultiAsset),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct MultiAssets(
 						pub ::std::vec::Vec<runtime_types::xcm::v2::multiasset::MultiAsset>,
 					);
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum WildFungibility {
 						#[codec(index = 0)]
 						Fungible,
 						#[codec(index = 1)]
 						NonFungible,
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum WildMultiAsset {
 						#[codec(index = 0)]
 						All,
@@ -1829,7 +1876,7 @@ pub mod api {
 				}
 				pub mod multilocation {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Junctions {
 						#[codec(index = 0)]
 						Here,
@@ -1892,7 +1939,7 @@ pub mod api {
 							runtime_types::xcm::v2::junction::Junction,
 						),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct MultiLocation {
 						pub parents: ::core::primitive::u8,
 						pub interior: runtime_types::xcm::v2::multilocation::Junctions,
@@ -1900,7 +1947,7 @@ pub mod api {
 				}
 				pub mod traits {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Error {
 						#[codec(index = 0)]
 						Overflow,
@@ -1956,7 +2003,7 @@ pub mod api {
 						WeightNotComputable,
 					}
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum BodyId {
 					#[codec(index = 0)]
 					Unit,
@@ -1983,7 +2030,7 @@ pub mod api {
 					#[codec(index = 9)]
 					Treasury,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum BodyPart {
 					#[codec(index = 0)]
 					Voice,
@@ -2014,7 +2061,7 @@ pub mod api {
 						denom: ::core::primitive::u32,
 					},
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Instruction {
 					#[codec(index = 0)]
 					WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets),
@@ -2154,7 +2201,7 @@ pub mod api {
 					#[codec(index = 27)]
 					UnsubscribeVersion,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum NetworkId {
 					#[codec(index = 0)]
 					Any,
@@ -2169,7 +2216,7 @@ pub mod api {
 					#[codec(index = 3)]
 					Kusama,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum OriginKind {
 					#[codec(index = 0)]
 					Native,
@@ -2180,7 +2227,7 @@ pub mod api {
 					#[codec(index = 3)]
 					Xcm,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Response {
 					#[codec(index = 0)]
 					Null,
@@ -2196,21 +2243,21 @@ pub mod api {
 					#[codec(index = 3)]
 					Version(::core::primitive::u32),
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum WeightLimit {
 					#[codec(index = 0)]
 					Unlimited,
 					#[codec(index = 1)]
 					Limited(#[codec(compact)] ::core::primitive::u64),
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Xcm(pub ::std::vec::Vec<runtime_types::xcm::v2::Instruction>);
 			}
 			pub mod v3 {
 				use super::runtime_types;
 				pub mod junction {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum BodyId {
 						#[codec(index = 0)]
 						Unit,
@@ -2233,7 +2280,7 @@ pub mod api {
 						#[codec(index = 9)]
 						Treasury,
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum BodyPart {
 						#[codec(index = 0)]
 						Voice,
@@ -2264,7 +2311,7 @@ pub mod api {
 							denom: ::core::primitive::u32,
 						},
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Junction {
 						#[codec(index = 0)]
 						Parachain(#[codec(compact)] ::core::primitive::u32),
@@ -2306,7 +2353,7 @@ pub mod api {
 						#[codec(index = 9)]
 						GlobalConsensus(runtime_types::xcm::v3::junction::NetworkId),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum NetworkId {
 						#[codec(index = 0)]
 						ByGenesis([::core::primitive::u8; 32usize]),
@@ -2338,7 +2385,7 @@ pub mod api {
 				}
 				pub mod junctions {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Junctions {
 						#[codec(index = 0)]
 						Here,
@@ -2404,14 +2451,14 @@ pub mod api {
 				}
 				pub mod multiasset {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum AssetId {
 						#[codec(index = 0)]
 						Concrete(runtime_types::xcm::v3::multilocation::MultiLocation),
 						#[codec(index = 1)]
 						Abstract([::core::primitive::u8; 32usize]),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum AssetInstance {
 						#[codec(index = 0)]
 						Undefined,
@@ -2426,37 +2473,37 @@ pub mod api {
 						#[codec(index = 5)]
 						Array32([::core::primitive::u8; 32usize]),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Fungibility {
 						#[codec(index = 0)]
 						Fungible(#[codec(compact)] ::core::primitive::u128),
 						#[codec(index = 1)]
 						NonFungible(runtime_types::xcm::v3::multiasset::AssetInstance),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct MultiAsset {
 						pub id: runtime_types::xcm::v3::multiasset::AssetId,
 						pub fun: runtime_types::xcm::v3::multiasset::Fungibility,
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum MultiAssetFilter {
 						#[codec(index = 0)]
 						Definite(runtime_types::xcm::v3::multiasset::MultiAssets),
 						#[codec(index = 1)]
 						Wild(runtime_types::xcm::v3::multiasset::WildMultiAsset),
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct MultiAssets(
 						pub ::std::vec::Vec<runtime_types::xcm::v3::multiasset::MultiAsset>,
 					);
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum WildFungibility {
 						#[codec(index = 0)]
 						Fungible,
 						#[codec(index = 1)]
 						NonFungible,
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum WildMultiAsset {
 						#[codec(index = 0)]
 						All,
@@ -2478,7 +2525,7 @@ pub mod api {
 				}
 				pub mod multilocation {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub struct MultiLocation {
 						pub parents: ::core::primitive::u8,
 						pub interior: runtime_types::xcm::v3::junctions::Junctions,
@@ -2486,7 +2533,7 @@ pub mod api {
 				}
 				pub mod traits {
 					use super::runtime_types;
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Error {
 						#[codec(index = 0)]
 						Overflow,
@@ -2569,7 +2616,7 @@ pub mod api {
 						#[codec(index = 39)]
 						ExceedsStackLimit,
 					}
-					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 					pub enum Outcome {
 						#[codec(index = 0)]
 						Complete(::sp_weights::Weight),
@@ -2579,7 +2626,7 @@ pub mod api {
 						Error(runtime_types::xcm::v3::traits::Error),
 					}
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Instruction {
 					#[codec(index = 0)]
 					WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets),
@@ -2788,7 +2835,7 @@ pub mod api {
 						>,
 					},
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum MaybeErrorCode {
 					#[codec(index = 0)]
 					Success,
@@ -2805,7 +2852,7 @@ pub mod api {
 						>,
 					),
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct PalletInfo {
 					#[codec(compact)]
 					pub index: ::core::primitive::u32,
@@ -2822,14 +2869,14 @@ pub mod api {
 					#[codec(compact)]
 					pub patch: ::core::primitive::u32,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct QueryResponseInfo {
 					pub destination: runtime_types::xcm::v3::multilocation::MultiLocation,
 					#[codec(compact)]
 					pub query_id: ::core::primitive::u64,
 					pub max_weight: ::sp_weights::Weight,
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum Response {
 					#[codec(index = 0)]
 					Null,
@@ -2853,31 +2900,31 @@ pub mod api {
 					#[codec(index = 5)]
 					DispatchResult(runtime_types::xcm::v3::MaybeErrorCode),
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub enum WeightLimit {
 					#[codec(index = 0)]
 					Unlimited,
 					#[codec(index = 1)]
 					Limited(::sp_weights::Weight),
 				}
-				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 				pub struct Xcm(pub ::std::vec::Vec<runtime_types::xcm::v3::Instruction>);
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum VersionedMultiAssets {
 				#[codec(index = 1)]
 				V2(runtime_types::xcm::v2::multiasset::MultiAssets),
 				#[codec(index = 3)]
 				V3(runtime_types::xcm::v3::multiasset::MultiAssets),
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum VersionedMultiLocation {
 				#[codec(index = 1)]
 				V2(runtime_types::xcm::v2::multilocation::MultiLocation),
 				#[codec(index = 3)]
 				V3(runtime_types::xcm::v3::multilocation::MultiLocation),
 			}
-			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug)]
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
 			pub enum VersionedXcm {
 				#[codec(index = 2)]
 				V2(runtime_types::xcm::v2::Xcm),
diff --git a/bridges/relays/client-rialto-parachain/src/lib.rs b/bridges/relays/client-rialto-parachain/src/lib.rs
index bb7be12979f2018cd54693078a0ed2eb4f205749..e8d31ee83c33b9572efe36c563531d6b73c18755 100644
--- a/bridges/relays/client-rialto-parachain/src/lib.rs
+++ b/bridges/relays/client-rialto-parachain/src/lib.rs
@@ -56,7 +56,7 @@ impl Chain for RialtoParachain {
 	const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(5);
 
 	type SignedBlock = bp_polkadot_core::SignedBlock;
-	type Call = runtime_types::rialto_parachain_runtime::RuntimeCall;
+	type Call = RuntimeCall;
 }
 
 impl ChainWithBalances for RialtoParachain {