diff --git a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_kusama_messages_to_bridge_hub_polkadot.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_kusama_messages_to_bridge_hub_polkadot.rs
index 9abec22b98109960df54f976ea3a28a096bff5b6..e57302315560d09db32077beb52db9646534255e 100644
--- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_kusama_messages_to_bridge_hub_polkadot.rs
+++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_kusama_messages_to_bridge_hub_polkadot.rs
@@ -36,15 +36,15 @@ impl MessagesCliBridge for BridgeHubKusamaToBridgeHubPolkadotMessagesCliBridge {
 substrate_relay_helper::generate_receive_message_proof_call_builder!(
 	BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLane,
 	BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLaneReceiveMessagesProofCallBuilder,
-	relay_bridge_hub_polkadot_client::runtime::Call::BridgeKusamaMessages,
-	relay_bridge_hub_polkadot_client::runtime::BridgeKusamaMessagesCall::receive_messages_proof
+	relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaMessages,
+	relay_bridge_hub_polkadot_client::BridgeKusamaMessagesCall::receive_messages_proof
 );
 
 substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
 	BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLane,
 	BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLaneReceiveMessagesDeliveryProofCallBuilder,
-	relay_bridge_hub_kusama_client::runtime::Call::BridgePolkadotMessages,
-	relay_bridge_hub_kusama_client::runtime::BridgePolkadotMessagesCall::receive_messages_delivery_proof
+	relay_bridge_hub_kusama_client::RuntimeCall::BridgePolkadotMessages,
+	relay_bridge_hub_kusama_client::BridgeMessagesCall::receive_messages_delivery_proof
 );
 
 /// BridgeHubKusama-to-BridgeHubPolkadot messages lane.
diff --git a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_polkadot_messages_to_bridge_hub_kusama.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_polkadot_messages_to_bridge_hub_kusama.rs
index 191a84b27c2709256a86b637f4083bb2f84095d0..0a1b21cd11243e2a39c8156a40174ec770f12f93 100644
--- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_polkadot_messages_to_bridge_hub_kusama.rs
+++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/bridge_hub_polkadot_messages_to_bridge_hub_kusama.rs
@@ -36,15 +36,15 @@ impl MessagesCliBridge for BridgeHubPolkadotToBridgeHubKusamaMessagesCliBridge {
 substrate_relay_helper::generate_receive_message_proof_call_builder!(
 	BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLane,
 	BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLaneReceiveMessagesProofCallBuilder,
-	relay_bridge_hub_kusama_client::runtime::Call::BridgePolkadotMessages,
-	relay_bridge_hub_kusama_client::runtime::BridgePolkadotMessagesCall::receive_messages_proof
+	relay_bridge_hub_kusama_client::RuntimeCall::BridgePolkadotMessages,
+	relay_bridge_hub_kusama_client::BridgeMessagesCall::receive_messages_proof
 );
 
 substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
 	BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLane,
 	BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLaneReceiveMessagesDeliveryProofCallBuilder,
-	relay_bridge_hub_polkadot_client::runtime::Call::BridgeKusamaMessages,
-	relay_bridge_hub_polkadot_client::runtime::BridgeKusamaMessagesCall::receive_messages_delivery_proof
+	relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaMessages,
+	relay_bridge_hub_polkadot_client::BridgeKusamaMessagesCall::receive_messages_delivery_proof
 );
 
 /// BridgeHubPolkadot-to-BridgeHubKusama messages lane.
diff --git a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs
index 2dc9c131305ad1969ff97df313bf37bef0e72d12..dafb5f568263d4bb5b791a3e8d19298b004e6099 100644
--- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs
+++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs
@@ -34,8 +34,8 @@ pub struct KusamaFinalityToBridgeHubPolkadot;
 substrate_relay_helper::generate_submit_finality_proof_call_builder!(
 	KusamaFinalityToBridgeHubPolkadot,
 	SubmitFinalityProofCallBuilder,
-	relay_bridge_hub_polkadot_client::runtime::Call::BridgeKusamaGrandpa,
-	relay_bridge_hub_polkadot_client::runtime::BridgeKusamaGrandpaCall::submit_finality_proof
+	relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaGrandpa,
+	relay_bridge_hub_polkadot_client::BridgeKusamaGrandpaCall::submit_finality_proof
 );
 
 substrate_relay_helper::generate_report_equivocation_call_builder!(
diff --git a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_parachains_to_bridge_hub_polkadot.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_parachains_to_bridge_hub_polkadot.rs
index e5936640cb3b819925ef6faddfe10826e7e69f4a..9b76cdbfa63eabc05b4da85798e561cf6e2f780c 100644
--- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_parachains_to_bridge_hub_polkadot.rs
+++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_parachains_to_bridge_hub_polkadot.rs
@@ -44,8 +44,8 @@ impl SubmitParachainHeadsCallBuilder<BridgeHubKusamaToBridgeHubPolkadot>
 		parachains: Vec<(ParaId, ParaHash)>,
 		parachain_heads_proof: ParaHeadsProof,
 	) -> CallOf<relay_bridge_hub_polkadot_client::BridgeHubPolkadot> {
-		relay_bridge_hub_polkadot_client::runtime::Call::BridgeKusamaParachain(
-			relay_bridge_hub_polkadot_client::runtime::BridgeParachainCall::submit_parachain_heads {
+		relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaParachains(
+			relay_bridge_hub_polkadot_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/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs
index 589bf2546e8c1823a80c217de37fba284b892720..019afab0bb3d61bcffabbf029167909d54da85a0 100644
--- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs
+++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs
@@ -34,8 +34,8 @@ pub struct PolkadotFinalityToBridgeHubKusama;
 substrate_relay_helper::generate_submit_finality_proof_call_builder!(
 	PolkadotFinalityToBridgeHubKusama,
 	SubmitFinalityProofCallBuilder,
-	relay_bridge_hub_kusama_client::runtime::Call::BridgePolkadotGrandpa,
-	relay_bridge_hub_kusama_client::runtime::BridgePolkadotGrandpaCall::submit_finality_proof
+	relay_bridge_hub_kusama_client::RuntimeCall::BridgePolkadotGrandpa,
+	relay_bridge_hub_kusama_client::BridgeGrandpaCall::submit_finality_proof
 );
 
 substrate_relay_helper::generate_report_equivocation_call_builder!(
diff --git a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_parachains_to_bridge_hub_kusama.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_parachains_to_bridge_hub_kusama.rs
index f2a7f7309cf1d8ac7268d9e5f0f1a950e929df79..439eddaa1a6cd8b006a53d75816e83be544589d4 100644
--- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_parachains_to_bridge_hub_kusama.rs
+++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_parachains_to_bridge_hub_kusama.rs
@@ -44,8 +44,8 @@ impl SubmitParachainHeadsCallBuilder<BridgeHubPolkadotToBridgeHubKusama>
 		parachains: Vec<(ParaId, ParaHash)>,
 		parachain_heads_proof: ParaHeadsProof,
 	) -> CallOf<relay_bridge_hub_kusama_client::BridgeHubKusama> {
-		relay_bridge_hub_kusama_client::runtime::Call::BridgePolkadotParachain(
-			bp_parachains::BridgeParachainCall::submit_parachain_heads {
+		relay_bridge_hub_kusama_client::RuntimeCall::BridgePolkadotParachains(
+			relay_bridge_hub_kusama_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/polkadot_bulletin/bridge_hub_polkadot_messages_to_polkadot_bulletin.rs b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/bridge_hub_polkadot_messages_to_polkadot_bulletin.rs
index ba80d96a93cc2fd259c6a22312446387887d5187..ba177271db15fc220deee77c6a11c6d379e300ee 100644
--- a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/bridge_hub_polkadot_messages_to_polkadot_bulletin.rs
+++ b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/bridge_hub_polkadot_messages_to_polkadot_bulletin.rs
@@ -43,8 +43,9 @@ substrate_relay_helper::generate_receive_message_proof_call_builder!(
 substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
 	BridgeHubPolkadotMessagesToPolkadotBulletinMessageLane,
 	BridgeHubPolkadotMessagesToPolkadotBulletinMessageLaneReceiveMessagesDeliveryProofCallBuilder,
-	relay_bridge_hub_polkadot_client::runtime::Call::BridgePolkadotBulletinMessages,
-	relay_bridge_hub_polkadot_client::runtime::BridgePolkadotBulletinMessagesCall::receive_messages_delivery_proof
+	// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - use BridgePolkadotBulletinMessages
+	relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaMessages,
+	relay_bridge_hub_polkadot_client::BridgePolkadotBulletinMessagesCall::receive_messages_delivery_proof
 );
 
 /// BridgeHubPolkadot-to-PolkadotBulletin messages lane.
diff --git a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs
index dbf89ddeec39877cbc3c35ffc5c4fd65229ffc21..7019a6b55a36aef02ebf560931fe743df20e6506 100644
--- a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs
+++ b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs
@@ -35,8 +35,9 @@ pub struct PolkadotBulletinFinalityToBridgeHubPolkadot;
 substrate_relay_helper::generate_submit_finality_proof_call_builder!(
 	PolkadotBulletinFinalityToBridgeHubPolkadot,
 	SubmitFinalityProofCallBuilder,
-	relay_bridge_hub_polkadot_client::runtime::Call::BridgePolkadotBulletinGrandpa,
-	relay_bridge_hub_polkadot_client::runtime::BridgePolkadotBulletinGrandpaCall::submit_finality_proof
+	// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - use BridgePolkadotBulletinGrandpa
+	relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaGrandpa,
+	relay_bridge_hub_polkadot_client::BridgePolkadotBulletinGrandpaCall::submit_finality_proof
 );
 
 substrate_relay_helper::generate_report_equivocation_call_builder!(
diff --git a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_messages_to_bridge_hub_polkadot.rs b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_messages_to_bridge_hub_polkadot.rs
index 1db77b6ed47b024d9e7cf75d94690378c7287f00..1b5f3e5f69e84ffa79c8a6cacfdbd9d7ef0bdd38 100644
--- a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_messages_to_bridge_hub_polkadot.rs
+++ b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_messages_to_bridge_hub_polkadot.rs
@@ -36,8 +36,9 @@ impl MessagesCliBridge for PolkadotBulletinToBridgeHubPolkadotMessagesCliBridge
 substrate_relay_helper::generate_receive_message_proof_call_builder!(
 	PolkadotBulletinMessagesToBridgeHubPolkadotMessageLane,
 	PolkadotBulletinMessagesToBridgeHubPolkadotMessageLaneReceiveMessagesProofCallBuilder,
-	relay_bridge_hub_polkadot_client::runtime::Call::BridgePolkadotBulletinMessages,
-	relay_bridge_hub_polkadot_client::runtime::BridgePolkadotBulletinMessagesCall::receive_messages_proof
+	// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - use BridgePolkadotBulletinMessages
+	relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaMessages,
+	relay_bridge_hub_polkadot_client::BridgePolkadotBulletinMessagesCall::receive_messages_proof
 );
 
 substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
diff --git a/bridges/relays/bin-substrate/src/chains/kusama.rs b/bridges/relays/bin-substrate/src/chains/kusama.rs
index 0a30a0c07a095fdc4f96356e12841cd30d930671..80ffdfed0037acec1c8b74f56186d70f8355dfa6 100644
--- a/bridges/relays/bin-substrate/src/chains/kusama.rs
+++ b/bridges/relays/bin-substrate/src/chains/kusama.rs
@@ -22,10 +22,11 @@ use relay_kusama_client::Kusama;
 use relay_substrate_client::SimpleRuntimeVersion;
 
 impl CliChain for Kusama {
-	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> = None;
+	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
+		Some(SimpleRuntimeVersion { spec_version: 1_001_002, transaction_version: 25 });
 }
 
 impl CliChain for BridgeHubKusama {
 	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
-		Some(SimpleRuntimeVersion { spec_version: 9410, transaction_version: 21 });
+		Some(SimpleRuntimeVersion { spec_version: 1_001_000, transaction_version: 4 });
 }
diff --git a/bridges/relays/bin-substrate/src/chains/polkadot.rs b/bridges/relays/bin-substrate/src/chains/polkadot.rs
index b2585dbb3050d110cd14dbc4898003b6fc734253..1f1c607916a197ea04c855e9d6d744cf885a0ffd 100644
--- a/bridges/relays/bin-substrate/src/chains/polkadot.rs
+++ b/bridges/relays/bin-substrate/src/chains/polkadot.rs
@@ -22,10 +22,11 @@ use relay_polkadot_client::Polkadot;
 use relay_substrate_client::SimpleRuntimeVersion;
 
 impl CliChain for Polkadot {
-	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> = None;
+	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
+		Some(SimpleRuntimeVersion { spec_version: 1_001_002, transaction_version: 25 });
 }
 
 impl CliChain for BridgeHubPolkadot {
 	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
-		Some(SimpleRuntimeVersion { spec_version: 9410, transaction_version: 22 });
+		Some(SimpleRuntimeVersion { spec_version: 1_001_000, transaction_version: 3 });
 }
diff --git a/bridges/relays/bin-substrate/src/chains/rococo.rs b/bridges/relays/bin-substrate/src/chains/rococo.rs
index fa376f0967471fca664cf253c58b9083b3071f35..0640447fdc515ff0d99cd4fb9aa8148ee1d69e7f 100644
--- a/bridges/relays/bin-substrate/src/chains/rococo.rs
+++ b/bridges/relays/bin-substrate/src/chains/rococo.rs
@@ -22,10 +22,11 @@ use relay_rococo_client::Rococo;
 use relay_substrate_client::SimpleRuntimeVersion;
 
 impl CliChain for Rococo {
-	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> = None;
+	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
+		Some(SimpleRuntimeVersion { spec_version: 1_008_000, transaction_version: 24 });
 }
 
 impl CliChain for BridgeHubRococo {
 	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
-		Some(SimpleRuntimeVersion { spec_version: 1_003_000, transaction_version: 3 });
+		Some(SimpleRuntimeVersion { spec_version: 1_008_000, transaction_version: 4 });
 }
diff --git a/bridges/relays/bin-substrate/src/chains/westend.rs b/bridges/relays/bin-substrate/src/chains/westend.rs
index be26a36627ad87f87c153adec03ec3ae047716f8..41f5fc4e96c8fcc1ff8d9ab5d9183ba40f354f74 100644
--- a/bridges/relays/bin-substrate/src/chains/westend.rs
+++ b/bridges/relays/bin-substrate/src/chains/westend.rs
@@ -22,10 +22,11 @@ use relay_substrate_client::SimpleRuntimeVersion;
 use relay_westend_client::Westend;
 
 impl CliChain for Westend {
-	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> = None;
+	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
+		Some(SimpleRuntimeVersion { spec_version: 1_008_000, transaction_version: 24 });
 }
 
 impl CliChain for BridgeHubWestend {
 	const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
-		Some(SimpleRuntimeVersion { spec_version: 1_003_000, transaction_version: 3 });
+		Some(SimpleRuntimeVersion { spec_version: 1_008_000, transaction_version: 4 });
 }
diff --git a/bridges/relays/bin-substrate/src/cli/chain_schema.rs b/bridges/relays/bin-substrate/src/cli/chain_schema.rs
index 7c647dfbfd1df1b2440a0aa564b9bbfb0ac05f91..65559397ac2a7923c1bc34fc87938fe66da36221 100644
--- a/bridges/relays/bin-substrate/src/cli/chain_schema.rs
+++ b/bridges/relays/bin-substrate/src/cli/chain_schema.rs
@@ -75,7 +75,9 @@ macro_rules! declare_chain_runtime_version_params_cli_schema {
 						},
 						RuntimeVersionType::Bundle => match bundle_runtime_version {
 							Some(runtime_version) => ChainRuntimeVersion::Custom(runtime_version),
-							None => ChainRuntimeVersion::Auto
+							None => {
+								return Err(anyhow::format_err!("Cannot use bundled runtime version of {}: it is not known to the relay", stringify!($chain_prefix)));
+							}
 						},
 					})
 				}
diff --git a/bridges/relays/bin-substrate/src/cli/init_bridge.rs b/bridges/relays/bin-substrate/src/cli/init_bridge.rs
index 52cb28014f454a681a4c1a7854f2f47b4acb7819..0b2f9aa7e1ec7b50b73bd1e980dc874d61c9057c 100644
--- a/bridges/relays/bin-substrate/src/cli/init_bridge.rs
+++ b/bridges/relays/bin-substrate/src/cli/init_bridge.rs
@@ -146,10 +146,8 @@ impl BridgeInitializer for KusamaToBridgeHubPolkadotCliBridge {
 	fn encode_init_bridge(
 		init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
 	) -> <Self::Target as Chain>::Call {
-		relay_bridge_hub_polkadot_client::runtime::Call::BridgeKusamaGrandpa(
-			relay_bridge_hub_polkadot_client::runtime::BridgeKusamaGrandpaCall::initialize {
-				init_data,
-			},
+		relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaGrandpa(
+			relay_bridge_hub_polkadot_client::BridgeKusamaGrandpaCall::initialize { init_data },
 		)
 	}
 }
@@ -160,10 +158,8 @@ impl BridgeInitializer for PolkadotToBridgeHubKusamaCliBridge {
 	fn encode_init_bridge(
 		init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
 	) -> <Self::Target as Chain>::Call {
-		relay_bridge_hub_kusama_client::runtime::Call::BridgePolkadotGrandpa(
-			relay_bridge_hub_kusama_client::runtime::BridgePolkadotGrandpaCall::initialize {
-				init_data,
-			},
+		relay_bridge_hub_kusama_client::RuntimeCall::BridgePolkadotGrandpa(
+			relay_bridge_hub_kusama_client::BridgeGrandpaCall::initialize { init_data },
 		)
 	}
 }
@@ -191,8 +187,9 @@ impl BridgeInitializer for PolkadotBulletinToBridgeHubPolkadotCliBridge {
 	fn encode_init_bridge(
 		init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
 	) -> <Self::Target as Chain>::Call {
-		relay_bridge_hub_polkadot_client::runtime::Call::BridgePolkadotBulletinGrandpa(
-			relay_bridge_hub_polkadot_client::runtime::BridgePolkadotBulletinGrandpaCall::initialize {
+		// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - use BridgePolkadotBulletinGrandpa
+		relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaGrandpa(
+			relay_bridge_hub_polkadot_client::BridgePolkadotBulletinGrandpaCall::initialize {
 				init_data,
 			},
 		)
diff --git a/bridges/relays/client-bridge-hub-kusama/Cargo.toml b/bridges/relays/client-bridge-hub-kusama/Cargo.toml
index ea94dac7de4b380796bdfbccb0e9e83adff38dc9..30177443c3e50b382bc1222e80697997e1db538c 100644
--- a/bridges/relays/client-bridge-hub-kusama/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-kusama/Cargo.toml
@@ -11,19 +11,22 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", features = ["derive"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-relay-substrate-client = { path = "../client-substrate" }
+#relay-substrate-client = { path = "../client-substrate" }
+subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
 bp-bridge-hub-kusama = { path = "../../primitives/chain-bridge-hub-kusama" }
-bp-bridge-hub-polkadot = { path = "../../primitives/chain-bridge-hub-polkadot" }
 bp-header-chain = { path = "../../primitives/header-chain" }
+bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
 bp-polkadot = { path = "../../primitives/chain-polkadot" }
-
+bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bridge-runtime-common = { path = "../../bin/runtime-common" }
+relay-substrate-client = { path = "../client-substrate" }
 
 # Substrate Dependencies
 
 sp-core = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
 sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
+sp-weights = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
diff --git a/bridges/relays/client-bridge-hub-kusama/src/codegen_runtime.rs b/bridges/relays/client-bridge-hub-kusama/src/codegen_runtime.rs
new file mode 100644
index 0000000000000000000000000000000000000000..78ae788b32d5755f65c04e6cb86c32cd65d9f960
--- /dev/null
+++ b/bridges/relays/client-bridge-hub-kusama/src/codegen_runtime.rs
@@ -0,0 +1,4053 @@
+// 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://kusama-bridge-hub-rpc.polkadot.io
+
+#[allow(dead_code, unused_imports, non_camel_case_types)]
+#[allow(clippy::all)]
+#[allow(rustdoc::broken_intra_doc_links)]
+pub mod api {
+	#[allow(unused_imports)]
+	mod root_mod {
+		pub use super::*;
+	}
+	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 struct AuthoritySet {
+				pub authorities: ::std::vec::Vec<(
+					runtime_types::sp_consensus_grandpa::app::Public,
+					::core::primitive::u64,
+				)>,
+				pub set_id: ::core::primitive::u64,
+			}
+			#[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 HeaderFinalityInfo<_0, _1> {
+				pub finality_proof: _0,
+				pub new_verification_context: ::core::option::Option<_1>,
+			}
+			#[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 InboundMessageDetails {
+				pub dispatch_weight: ::sp_weights::Weight,
+			}
+			#[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 struct OutboundMessageDetails {
+				pub nonce: ::core::primitive::u64,
+				pub dispatch_weight: ::sp_weights::Weight,
+				pub size: ::core::primitive::u32,
+			}
+			#[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>,
+				)>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct UnrewardedRelayer<_0> {
+				pub relayer: _0,
+				pub messages: runtime_types::bp_messages::DeliveredMessages,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VerificationError {
+				#[codec(index = 0)]
+				EmptyMessageProof,
+				#[codec(index = 1)]
+				HeaderChain(runtime_types::bp_header_chain::HeaderChainError),
+				#[codec(index = 2)]
+				InboundLaneStorage(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 3)]
+				InvalidMessageWeight,
+				#[codec(index = 4)]
+				MessagesCountMismatch,
+				#[codec(index = 5)]
+				MessageStorage(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 6)]
+				MessageTooLarge,
+				#[codec(index = 7)]
+				OutboundLaneStorage(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 8)]
+				StorageProof(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 9)]
+				Other,
+			}
+		}
+		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;
+			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, 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_kusama_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 = 41)]
+				Multisig(runtime_types::pallet_multisig::pallet::Call),
+				#[codec(index = 50)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Call),
+				#[codec(index = 51)]
+				BridgePolkadotGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Call),
+				#[codec(index = 52)]
+				BridgePolkadotParachains(runtime_types::pallet_bridge_parachains::pallet::Call),
+				#[codec(index = 53)]
+				BridgePolkadotMessages(runtime_types::pallet_bridge_messages::pallet::Call),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum RuntimeError {
+				#[codec(index = 0)]
+				System(runtime_types::frame_system::pallet::Error),
+				#[codec(index = 1)]
+				ParachainSystem(runtime_types::cumulus_pallet_parachain_system::pallet::Error),
+				#[codec(index = 10)]
+				Balances(runtime_types::pallet_balances::pallet::Error),
+				#[codec(index = 21)]
+				CollatorSelection(runtime_types::pallet_collator_selection::pallet::Error),
+				#[codec(index = 22)]
+				Session(runtime_types::pallet_session::pallet::Error),
+				#[codec(index = 30)]
+				XcmpQueue(runtime_types::cumulus_pallet_xcmp_queue::pallet::Error),
+				#[codec(index = 31)]
+				PolkadotXcm(runtime_types::pallet_xcm::pallet::Error),
+				#[codec(index = 32)]
+				CumulusXcm(runtime_types::cumulus_pallet_xcm::pallet::Error),
+				#[codec(index = 33)]
+				DmpQueue(runtime_types::cumulus_pallet_dmp_queue::pallet::Error),
+				#[codec(index = 40)]
+				Utility(runtime_types::pallet_utility::pallet::Error),
+				#[codec(index = 41)]
+				Multisig(runtime_types::pallet_multisig::pallet::Error),
+				#[codec(index = 50)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Error),
+				#[codec(index = 51)]
+				BridgePolkadotGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Error),
+				#[codec(index = 52)]
+				BridgePolkadotParachains(runtime_types::pallet_bridge_parachains::pallet::Error),
+				#[codec(index = 53)]
+				BridgePolkadotMessages(runtime_types::pallet_bridge_messages::pallet::Error),
+			}
+			#[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 = 41)]
+				Multisig(runtime_types::pallet_multisig::pallet::Event),
+				#[codec(index = 50)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Event),
+				#[codec(index = 51)]
+				BridgePolkadotGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Event),
+				#[codec(index = 52)]
+				BridgePolkadotParachains(runtime_types::pallet_bridge_parachains::pallet::Event),
+				#[codec(index = 53)]
+				BridgePolkadotMessages(runtime_types::pallet_bridge_messages::pallet::Event),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum RuntimeHoldReason {}
+			#[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;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RefundSignedExtensionAdapter<_0>(pub _0);
+			}
+		}
+		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_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 1)]
+					UnsupportedVersion { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 2)]
+					ExecutedDownward {
+						message_hash: [::core::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						outcome: runtime_types::xcm::v3::traits::Outcome,
+					},
+					#[codec(index = 3)]
+					WeightExhausted {
+						message_hash: [::core::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						remaining_weight: ::sp_weights::Weight,
+						required_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 4)]
+					OverweightEnqueued {
+						message_hash: [::core::primitive::u8; 32usize],
+						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_hash: [::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_remaining_capacity : runtime_types :: cumulus_pallet_parachain_system :: relay_state_snapshot :: RelayDispatchQueueRemainingCapacity , pub ingress_channels : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: AbridgedHrmpChannel ,) > , pub egress_channels : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: AbridgedHrmpChannel ,) > , }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RelayDispatchQueueRemainingCapacity {
+					pub remaining_count: ::core::primitive::u32,
+					pub remaining_size: ::core::primitive::u32,
+				}
+			}
+			pub mod unincluded_segment {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Ancestor < _0 > { pub used_bandwidth : runtime_types :: cumulus_pallet_parachain_system :: unincluded_segment :: UsedBandwidth , pub para_head_hash : :: core :: option :: Option < _0 > , pub consumed_go_ahead_signal : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeGoAhead > , }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct HrmpChannelUpdate {
+					pub msg_count: ::core::primitive::u32,
+					pub total_bytes: ::core::primitive::u32,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct SegmentTracker < _0 > { pub used_bandwidth : runtime_types :: cumulus_pallet_parachain_system :: unincluded_segment :: UsedBandwidth , pub hrmp_watermark : :: core :: option :: Option < :: core :: primitive :: u32 > , pub consumed_go_ahead_signal : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeGoAhead > , # [codec (skip)] pub __subxt_unused_type_params : :: core :: marker :: PhantomData < _0 > }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct UsedBandwidth { pub ump_msg_count : :: core :: primitive :: u32 , pub ump_total_bytes : :: core :: primitive :: u32 , pub hrmp_outgoing : :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: cumulus_pallet_parachain_system :: unincluded_segment :: HrmpChannelUpdate > , }
+			}
+			#[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::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::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 1)]
+					Fail {
+						message_hash: [::core::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						error: runtime_types::xcm::v3::traits::Error,
+						weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 2)]
+					BadVersion { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 3)]
+					BadFormat { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 4)]
+					XcmpMessageSent { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 5)]
+					OverweightEnqueued {
+						sender: runtime_types::polkadot_parachain_primitives::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::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::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::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_core {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct CollationInfo {
+				pub upward_messages: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
+				pub horizontal_messages: ::std::vec::Vec<
+					runtime_types::polkadot_core_primitives::OutboundHrmpMessage<
+						runtime_types::polkadot_parachain_primitives::primitives::Id,
+					>,
+				>,
+				pub new_validation_code: ::core::option::Option<
+					runtime_types::polkadot_parachain_primitives::primitives::ValidationCode,
+				>,
+				pub processed_downward_messages: ::core::primitive::u32,
+				pub hrmp_watermark: ::core::primitive::u32,
+				pub head_data: runtime_types::polkadot_parachain_primitives::primitives::HeadData,
+			}
+		}
+		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::v6::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::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: ::core::primitive::u32,
+				pub providers: ::core::primitive::u32,
+				pub sufficients: ::core::primitive::u32,
+				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 = 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 = 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 },
+					#[codec(index = 17)]
+					Locked { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 18)]
+					Unlocked {
+						who: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 19)]
+					Frozen { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 20)]
+					Thawed { who: ::sp_core::crypto::AccountId32, 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)]
+					OldHeader,
+					#[codec(index = 3)]
+					UnsupportedScheduledChange,
+					#[codec(index = 4)]
+					NotInitialized,
+					#[codec(index = 5)]
+					AlreadyInitialized,
+					#[codec(index = 6)]
+					TooManyAuthoritiesInSet,
+					#[codec(index = 7)]
+					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,
+						grandpa_info: runtime_types::bp_header_chain::HeaderFinalityInfo<
+							::bp_header_chain::justification::GrandpaJustification<
+								::sp_runtime::generic::Header<
+									::core::primitive::u32,
+									::sp_runtime::traits::BlakeTwo256,
+								>,
+							>,
+							runtime_types::bp_header_chain::AuthoritySet,
+						>,
+					},
+				}
+			}
+			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 outbound_lane {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum ReceivalConfirmationError {
+					#[codec(index = 0)]
+					FailedToConfirmFutureMessages,
+					#[codec(index = 1)]
+					EmptyUnrewardedRelayerEntry,
+					#[codec(index = 2)]
+					NonConsecutiveUnrewardedRelayerEntries,
+					#[codec(index = 3)]
+					TryingToConfirmMoreMessagesThanExpected,
+				}
+			}
+			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)] MessageDispatchInactive , # [codec (index = 3)] MessageRejectedByChainVerifier (runtime_types :: bp_messages :: VerificationError ,) , # [codec (index = 4)] MessageRejectedByLaneVerifier (runtime_types :: bp_messages :: VerificationError ,) , # [codec (index = 5)] MessageRejectedByPallet (runtime_types :: bp_messages :: VerificationError ,) , # [codec (index = 6)] FailedToWithdrawMessageFee , # [codec (index = 7)] TooManyMessagesInTheProof , # [codec (index = 8)] InvalidMessagesProof , # [codec (index = 9)] InvalidMessagesDeliveryProof , # [codec (index = 10)] InvalidUnrewardedRelayersState , # [codec (index = 11)] InsufficientDispatchWeight , # [codec (index = 12)] MessageIsNotYetSent , # [codec (index = 13)] ReceivalConfirmation (runtime_types :: pallet_bridge_messages :: outbound_lane :: ReceivalConfirmationError ,) , # [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)]
+					HeaderChainStorageProof(runtime_types::bp_header_chain::HeaderChainError),
+					#[codec(index = 3)]
+					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,
+					},
+					#[codec(index = 1)]
+					register { valid_till: ::core::primitive::u32 },
+					#[codec(index = 2)]
+					deregister,
+				}
+				#[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, 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,
+					},
+					#[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,
+						>,
+					},
+				}
+			}
+		}
+		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,
+					#[codec(index = 5)]
+					add_invulnerable { who: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 6)]
+					remove_invulnerable { who: ::sp_core::crypto::AccountId32 },
+				}
+				#[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)]
+					TooFewEligibleCollators,
+					#[codec(index = 2)]
+					AlreadyCandidate,
+					#[codec(index = 3)]
+					NotCandidate,
+					#[codec(index = 4)]
+					TooManyInvulnerables,
+					#[codec(index = 5)]
+					AlreadyInvulnerable,
+					#[codec(index = 6)]
+					NotInvulnerable,
+					#[codec(index = 7)]
+					NoAssociatedValidatorId,
+					#[codec(index = 8)]
+					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)]
+					InvulnerableAdded { account_id: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 2)]
+					InvulnerableRemoved { account_id: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 3)]
+					NewDesiredCandidates { desired_candidates: ::core::primitive::u32 },
+					#[codec(index = 4)]
+					NewCandidacyBond { bond_amount: ::core::primitive::u128 },
+					#[codec(index = 5)]
+					CandidateAdded {
+						account_id: ::sp_core::crypto::AccountId32,
+						deposit: ::core::primitive::u128,
+					},
+					#[codec(index = 6)]
+					CandidateRemoved { account_id: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 7)]
+					InvalidInvulnerableSkipped { 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_kusama_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_kusama_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: ::core::primitive::u32,
+			}
+		}
+		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_kusama_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,
+					},
+				}
+			}
+			pub mod types {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct FeeDetails<_0> {
+					pub inclusion_fee: ::core::option::Option<
+						runtime_types::pallet_transaction_payment::types::InclusionFee<_0>,
+					>,
+					pub tip: _0,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct InclusionFee<_0> {
+					pub base_fee: _0,
+					pub len_fee: _0,
+					pub adjusted_weight_fee: _0,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RuntimeDispatchInfo<_0, _1> {
+					pub weight: _1,
+					pub class: runtime_types::frame_support::dispatch::DispatchClass,
+					pub partial_fee: _0,
+				}
+			}
+			#[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_kusama_runtime::RuntimeCall>,
+					},
+					#[codec(index = 1)]
+					as_derivative {
+						index: ::core::primitive::u16,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_kusama_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 2)]
+					batch_all {
+						calls:
+							::std::vec::Vec<runtime_types::bridge_hub_kusama_runtime::RuntimeCall>,
+					},
+					#[codec(index = 3)]
+					dispatch_as {
+						as_origin: ::std::boxed::Box<
+							runtime_types::bridge_hub_kusama_runtime::OriginCaller,
+						>,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_kusama_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 4)]
+					force_batch {
+						calls:
+							::std::vec::Vec<runtime_types::bridge_hub_kusama_runtime::RuntimeCall>,
+					},
+					#[codec(index = 5)]
+					with_weight {
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_kusama_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::VersionedXcm2>,
+						max_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 4)]
+					force_xcm_version {
+						location: ::std::boxed::Box<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+						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,
+					},
+					#[codec(index = 10)]
+					force_suspension { suspended: ::core::primitive::bool },
+				}
+				#[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 { outcome: runtime_types::xcm::v3::traits::Outcome },
+					#[codec(index = 1)]
+					Sent {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						message: runtime_types::xcm::v3::Xcm,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 2)]
+					UnexpectedResponse {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 3)]
+					ResponseReady {
+						query_id: ::core::primitive::u64,
+						response: runtime_types::xcm::v3::Response,
+					},
+					#[codec(index = 4)]
+					Notified {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+					},
+					#[codec(index = 5)]
+					NotifyOverweight {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+						actual_weight: ::sp_weights::Weight,
+						max_budgeted_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 6)]
+					NotifyDispatchError {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+					},
+					#[codec(index = 7)]
+					NotifyDecodeFailed {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+					},
+					#[codec(index = 8)]
+					InvalidResponder {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+						expected_location: ::core::option::Option<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 9)]
+					InvalidResponderVersion {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 10)]
+					ResponseTaken { query_id: ::core::primitive::u64 },
+					#[codec(index = 11)]
+					AssetsTrapped {
+						hash: ::subxt::utils::H256,
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						assets: runtime_types::xcm::VersionedMultiAssets,
+					},
+					#[codec(index = 12)]
+					VersionChangeNotified {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						result: ::core::primitive::u32,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 13)]
+					SupportedVersionChanged {
+						location: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						version: ::core::primitive::u32,
+					},
+					#[codec(index = 14)]
+					NotifyTargetSendFail {
+						location: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+						error: runtime_types::xcm::v3::traits::Error,
+					},
+					#[codec(index = 15)]
+					NotifyTargetMigrationFail {
+						location: runtime_types::xcm::VersionedMultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 16)]
+					InvalidQuerierVersion {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 17)]
+					InvalidQuerier {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+						expected_querier:
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						maybe_actual_querier: ::core::option::Option<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 18)]
+					VersionNotifyStarted {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 19)]
+					VersionNotifyRequested {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 20)]
+					VersionNotifyUnrequested {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 21)]
+					FeesPaid {
+						paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						fees: runtime_types::xcm::v3::multiasset::MultiAssets,
+					},
+					#[codec(index = 22)]
+					AssetsClaimed {
+						hash: ::subxt::utils::H256,
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						assets: runtime_types::xcm::VersionedMultiAssets,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Origin {
+					#[codec(index = 0)]
+					Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 1)]
+					Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum QueryStatus<_0> {
+					#[codec(index = 0)]
+					Pending {
+						responder: runtime_types::xcm::VersionedMultiLocation,
+						maybe_match_querier:
+							::core::option::Option<runtime_types::xcm::VersionedMultiLocation>,
+						maybe_notify:
+							::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>,
+						timeout: _0,
+					},
+					#[codec(index = 1)]
+					VersionNotifier {
+						origin: runtime_types::xcm::VersionedMultiLocation,
+						is_active: ::core::primitive::bool,
+					},
+					#[codec(index = 2)]
+					Ready { response: runtime_types::xcm::VersionedResponse, at: _0 },
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RemoteLockedFungibleRecord<_0> {
+					pub amount: ::core::primitive::u128,
+					pub owner: runtime_types::xcm::VersionedMultiLocation,
+					pub locker: runtime_types::xcm::VersionedMultiLocation,
+					pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<(
+						_0,
+						::core::primitive::u128,
+					)>,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum VersionMigrationStage {
+					#[codec(index = 0)]
+					MigrateSupportedVersion,
+					#[codec(index = 1)]
+					MigrateVersionNotifiers,
+					#[codec(index = 2)]
+					NotifyCurrentTargets(
+						::core::option::Option<::std::vec::Vec<::core::primitive::u8>>,
+					),
+					#[codec(index = 3)]
+					MigrateAndNotifyOldTargets,
+				}
+			}
+		}
+		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_primitives {
+			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 struct ValidationCode(pub ::std::vec::Vec<::core::primitive::u8>);
+				#[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 v6 {
+				use super::runtime_types;
+				pub mod async_backing {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct AsyncBackingParams {
+						pub max_candidate_depth: ::core::primitive::u32,
+						pub allowed_ancestry_len: ::core::primitive::u32,
+					}
+				}
+				#[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,
+					pub async_backing_params:
+						runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams,
+				}
+				#[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::primitives::HeadData,
+					pub relay_parent_number: _1,
+					pub relay_parent_storage_root: _0,
+					pub max_pov_size: ::core::primitive::u32,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum UpgradeGoAhead {
+					#[codec(index = 0)]
+					Abort,
+					#[codec(index = 1)]
+					GoAhead,
+				}
+				#[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);
+			#[derive(
+				:: codec :: Decode,
+				:: codec :: Encode,
+				:: subxt :: ext :: codec :: CompactAs,
+				Clone,
+				Debug,
+				PartialEq,
+			)]
+			pub struct SlotDuration(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 struct OpaqueMetadata(pub ::std::vec::Vec<::core::primitive::u8>);
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum Void {}
+		}
+		pub mod sp_inherents {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct CheckInherentsResult {
+				pub okay: ::core::primitive::bool,
+				pub fatal_error: ::core::primitive::bool,
+				pub errors: runtime_types::sp_inherents::InherentData,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct InherentData {
+				pub data: ::subxt::utils::KeyedVec<
+					[::core::primitive::u8; 8usize],
+					::std::vec::Vec<::core::primitive::u8>,
+				>,
+			}
+		}
+		pub mod sp_runtime {
+			use super::runtime_types;
+			pub mod generic {
+				use super::runtime_types;
+				pub mod block {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct Block<_0, _1> {
+						pub header: _0,
+						pub extrinsics: ::std::vec::Vec<_1>,
+					}
+				}
+				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 transaction_validity {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum InvalidTransaction {
+					#[codec(index = 0)]
+					Call,
+					#[codec(index = 1)]
+					Payment,
+					#[codec(index = 2)]
+					Future,
+					#[codec(index = 3)]
+					Stale,
+					#[codec(index = 4)]
+					BadProof,
+					#[codec(index = 5)]
+					AncientBirthBlock,
+					#[codec(index = 6)]
+					ExhaustsResources,
+					#[codec(index = 7)]
+					Custom(::core::primitive::u8),
+					#[codec(index = 8)]
+					BadMandatory,
+					#[codec(index = 9)]
+					MandatoryValidation,
+					#[codec(index = 10)]
+					BadSigner,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum TransactionSource {
+					#[codec(index = 0)]
+					InBlock,
+					#[codec(index = 1)]
+					Local,
+					#[codec(index = 2)]
+					External,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum TransactionValidityError {
+					#[codec(index = 0)]
+					Invalid(runtime_types::sp_runtime::transaction_validity::InvalidTransaction),
+					#[codec(index = 1)]
+					Unknown(runtime_types::sp_runtime::transaction_validity::UnknownTransaction),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum UnknownTransaction {
+					#[codec(index = 0)]
+					CannotLookup,
+					#[codec(index = 1)]
+					NoUnsignedValidator,
+					#[codec(index = 2)]
+					Custom(::core::primitive::u8),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct ValidTransaction {
+					pub priority: ::core::primitive::u64,
+					pub requires: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
+					pub provides: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
+					pub longevity: ::core::primitive::u64,
+					pub propagate: ::core::primitive::bool,
+				}
+			}
+			#[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,
+				#[codec(index = 13)]
+				RootNotAllowed,
+			}
+			#[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,
+				#[codec(index = 9)]
+				Blocked,
+			}
+			#[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 staging_xcm {
+			use super::runtime_types;
+			pub mod v3 {
+				use super::runtime_types;
+				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 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>,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct DoubleEncoded2 {
+					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 Instruction2 {
+					#[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::DoubleEncoded2,
+					},
+					#[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::Xcm2),
+					#[codec(index = 22)]
+					SetAppendix(runtime_types::xcm::v2::Xcm2),
+					#[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>);
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Xcm2(pub ::std::vec::Vec<runtime_types::xcm::v2::Instruction2>);
+			}
+			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::staging_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 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::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 4)]
+					TransferAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 5)]
+					TransferReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						dest: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 14)]
+					DepositReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 17)]
+					InitiateTeleport {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::staging_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::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 40)]
+					UnlockAsset {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						target: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 41)]
+					NoteUnlockable {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 42)]
+					RequestUnlock {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						locker: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 47)]
+					UnpaidExecution {
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+						check_origin: ::core::option::Option<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Instruction2 {
+					#[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::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 4)]
+					TransferAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 5)]
+					TransferReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						dest: runtime_types::staging_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::DoubleEncoded2,
+					},
+					#[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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 14)]
+					DepositReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 17)]
+					InitiateTeleport {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::Xcm2),
+					#[codec(index = 22)]
+					SetAppendix(runtime_types::xcm::v3::Xcm2),
+					#[codec(index = 23)]
+					ClearError,
+					#[codec(index = 24)]
+					ClaimAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						ticket: runtime_types::staging_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::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 40)]
+					UnlockAsset {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						target: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 41)]
+					NoteUnlockable {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 42)]
+					RequestUnlock {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						locker: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 47)]
+					UnpaidExecution {
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+						check_origin: ::core::option::Option<
+							runtime_types::staging_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::staging_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 struct Xcm2(pub ::std::vec::Vec<runtime_types::xcm::v3::Instruction2>);
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedAssetId {
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::multiasset::AssetId),
+			}
+			#[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::staging_xcm::v3::multilocation::MultiLocation),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedResponse {
+				#[codec(index = 2)]
+				V2(runtime_types::xcm::v2::Response),
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::Response),
+			}
+			#[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),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedXcm2 {
+				#[codec(index = 2)]
+				V2(runtime_types::xcm::v2::Xcm2),
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::Xcm2),
+			}
+		}
+	}
+}
diff --git a/bridges/relays/client-bridge-hub-kusama/src/lib.rs b/bridges/relays/client-bridge-hub-kusama/src/lib.rs
index d4bb057de1c2353d30ae0ab6d3896a1a5beceda8..b11301b0e0f8afc4307d9818ae2cd238b437691f 100644
--- a/bridges/relays/client-bridge-hub-kusama/src/lib.rs
+++ b/bridges/relays/client-bridge-hub-kusama/src/lib.rs
@@ -16,21 +16,28 @@
 
 //! Types used to connect to the BridgeHub-Kusama-Substrate parachain.
 
-use bp_bridge_hub_kusama::AVERAGE_BLOCK_INTERVAL;
+pub mod codegen_runtime;
+
+use bp_bridge_hub_kusama::{SignedExtension, AVERAGE_BLOCK_INTERVAL};
 use bp_polkadot::SuffixedCommonSignedExtensionExt;
 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_kusama_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_kusama::UncheckedExtrinsic<RuntimeCall, SignedExtension>;
+type UtilityCall = runtime_types::pallet_utility::pallet::Call;
 
 /// Kusama chain definition
 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -47,7 +54,7 @@ impl Chain for BridgeHubKusama {
 	const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;
 
 	type SignedBlock = bp_bridge_hub_kusama::SignedBlock;
-	type Call = runtime::Call;
+	type Call = RuntimeCall;
 }
 
 impl ChainWithBalances for BridgeHubKusama {
@@ -56,13 +63,22 @@ impl ChainWithBalances for BridgeHubKusama {
 	}
 }
 
+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 BridgeHubKusama {
-	type UtilityPallet = MockedRuntimeUtilityPallet<runtime::Call>;
+	type UtilityPallet = MockedRuntimeUtilityPallet<RuntimeCall>;
 }
 
 impl ChainWithTransactions for BridgeHubKusama {
 	type AccountKeyPair = sp_core::sr25519::Pair;
-	type SignedTransaction = runtime::UncheckedExtrinsic;
+	type SignedTransaction = UncheckedExtrinsic;
 
 	fn sign_transaction(
 		param: SignParam<Self>,
@@ -70,7 +86,7 @@ impl ChainWithTransactions for BridgeHubKusama {
 	) -> 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,
@@ -85,7 +101,7 @@ impl ChainWithTransactions for BridgeHubKusama {
 		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(),
@@ -127,13 +143,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-polkadot/Cargo.toml b/bridges/relays/client-bridge-hub-polkadot/Cargo.toml
index 2fd950efabe570ef4138a6862822c936565af4b1..a85e2d685c486b00b62dcbdd821b225c7449f983 100644
--- a/bridges/relays/client-bridge-hub-polkadot/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-polkadot/Cargo.toml
@@ -11,26 +11,23 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", features = ["derive"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-relay-substrate-client = { path = "../client-substrate" }
+subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
-bp-bridge-hub-kusama = { path = "../../primitives/chain-bridge-hub-kusama" }
 bp-bridge-hub-polkadot = { path = "../../primitives/chain-bridge-hub-polkadot" }
 bp-header-chain = { path = "../../primitives/header-chain" }
+bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
-bp-polkadot-bulletin = { path = "../../primitives/chain-polkadot-bulletin" }
+bp-polkadot = { path = "../../primitives/chain-polkadot" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bp-kusama = { path = "../../primitives/chain-kusama" }
 bp-runtime = { path = "../../primitives/runtime" }
-
 bridge-runtime-common = { path = "../../bin/runtime-common" }
+relay-substrate-client = { path = "../client-substrate" }
 
 # Substrate Dependencies
 
 sp-core = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
 sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
-
-[dev-dependencies]
-bp-polkadot-core = { path = "../../primitives/polkadot-core" }
-sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
+sp-weights = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
diff --git a/bridges/relays/client-bridge-hub-polkadot/src/codegen_runtime.rs b/bridges/relays/client-bridge-hub-polkadot/src/codegen_runtime.rs
new file mode 100644
index 0000000000000000000000000000000000000000..c8c063b5e19cbd634e2d36933eaaa4ecaadc15d1
--- /dev/null
+++ b/bridges/relays/client-bridge-hub-polkadot/src/codegen_runtime.rs
@@ -0,0 +1,4056 @@
+// 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://polkadot-bridge-hub-rpc.polkadot.io
+
+#[allow(dead_code, unused_imports, non_camel_case_types)]
+#[allow(clippy::all)]
+#[allow(rustdoc::broken_intra_doc_links)]
+pub mod api {
+	#[allow(unused_imports)]
+	mod root_mod {
+		pub use super::*;
+	}
+	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 struct AuthoritySet {
+				pub authorities: ::std::vec::Vec<(
+					runtime_types::sp_consensus_grandpa::app::Public,
+					::core::primitive::u64,
+				)>,
+				pub set_id: ::core::primitive::u64,
+			}
+			#[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 HeaderFinalityInfo<_0, _1> {
+				pub finality_proof: _0,
+				pub new_verification_context: ::core::option::Option<_1>,
+			}
+			#[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 InboundMessageDetails {
+				pub dispatch_weight: ::sp_weights::Weight,
+			}
+			#[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 struct OutboundMessageDetails {
+				pub nonce: ::core::primitive::u64,
+				pub dispatch_weight: ::sp_weights::Weight,
+				pub size: ::core::primitive::u32,
+			}
+			#[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>,
+				)>,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct UnrewardedRelayer<_0> {
+				pub relayer: _0,
+				pub messages: runtime_types::bp_messages::DeliveredMessages,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VerificationError {
+				#[codec(index = 0)]
+				EmptyMessageProof,
+				#[codec(index = 1)]
+				HeaderChain(runtime_types::bp_header_chain::HeaderChainError),
+				#[codec(index = 2)]
+				InboundLaneStorage(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 3)]
+				InvalidMessageWeight,
+				#[codec(index = 4)]
+				MessagesCountMismatch,
+				#[codec(index = 5)]
+				MessageStorage(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 6)]
+				MessageTooLarge,
+				#[codec(index = 7)]
+				OutboundLaneStorage(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 8)]
+				StorageProof(runtime_types::bp_runtime::storage_proof::Error),
+				#[codec(index = 9)]
+				Other,
+			}
+		}
+		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;
+			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, 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_polkadot_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 = 41)]
+				Multisig(runtime_types::pallet_multisig::pallet::Call),
+				#[codec(index = 50)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Call),
+				#[codec(index = 51)]
+				BridgeKusamaGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Call),
+				#[codec(index = 52)]
+				BridgeKusamaParachains(runtime_types::pallet_bridge_parachains::pallet::Call),
+				#[codec(index = 53)]
+				BridgeKusamaMessages(runtime_types::pallet_bridge_messages::pallet::Call),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum RuntimeError {
+				#[codec(index = 0)]
+				System(runtime_types::frame_system::pallet::Error),
+				#[codec(index = 1)]
+				ParachainSystem(runtime_types::cumulus_pallet_parachain_system::pallet::Error),
+				#[codec(index = 10)]
+				Balances(runtime_types::pallet_balances::pallet::Error),
+				#[codec(index = 21)]
+				CollatorSelection(runtime_types::pallet_collator_selection::pallet::Error),
+				#[codec(index = 22)]
+				Session(runtime_types::pallet_session::pallet::Error),
+				#[codec(index = 30)]
+				XcmpQueue(runtime_types::cumulus_pallet_xcmp_queue::pallet::Error),
+				#[codec(index = 31)]
+				PolkadotXcm(runtime_types::pallet_xcm::pallet::Error),
+				#[codec(index = 32)]
+				CumulusXcm(runtime_types::cumulus_pallet_xcm::pallet::Error),
+				#[codec(index = 33)]
+				DmpQueue(runtime_types::cumulus_pallet_dmp_queue::pallet::Error),
+				#[codec(index = 40)]
+				Utility(runtime_types::pallet_utility::pallet::Error),
+				#[codec(index = 41)]
+				Multisig(runtime_types::pallet_multisig::pallet::Error),
+				#[codec(index = 50)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Error),
+				#[codec(index = 51)]
+				BridgeKusamaGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Error),
+				#[codec(index = 52)]
+				BridgeKusamaParachains(runtime_types::pallet_bridge_parachains::pallet::Error),
+				#[codec(index = 53)]
+				BridgeKusamaMessages(runtime_types::pallet_bridge_messages::pallet::Error),
+			}
+			#[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 = 41)]
+				Multisig(runtime_types::pallet_multisig::pallet::Event),
+				#[codec(index = 50)]
+				BridgeRelayers(runtime_types::pallet_bridge_relayers::pallet::Event),
+				#[codec(index = 51)]
+				BridgeKusamaGrandpa(runtime_types::pallet_bridge_grandpa::pallet::Event),
+				#[codec(index = 52)]
+				BridgeKusamaParachains(runtime_types::pallet_bridge_parachains::pallet::Event),
+				#[codec(index = 53)]
+				BridgeKusamaMessages(runtime_types::pallet_bridge_messages::pallet::Event),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum RuntimeHoldReason {}
+			#[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;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RefundSignedExtensionAdapter<_0>(pub _0);
+			}
+		}
+		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_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 1)]
+					UnsupportedVersion { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 2)]
+					ExecutedDownward {
+						message_hash: [::core::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						outcome: runtime_types::xcm::v3::traits::Outcome,
+					},
+					#[codec(index = 3)]
+					WeightExhausted {
+						message_hash: [::core::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						remaining_weight: ::sp_weights::Weight,
+						required_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 4)]
+					OverweightEnqueued {
+						message_hash: [::core::primitive::u8; 32usize],
+						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_hash: [::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_remaining_capacity : runtime_types :: cumulus_pallet_parachain_system :: relay_state_snapshot :: RelayDispatchQueueRemainingCapacity , pub ingress_channels : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: AbridgedHrmpChannel ,) > , pub egress_channels : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: AbridgedHrmpChannel ,) > , }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RelayDispatchQueueRemainingCapacity {
+					pub remaining_count: ::core::primitive::u32,
+					pub remaining_size: ::core::primitive::u32,
+				}
+			}
+			pub mod unincluded_segment {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Ancestor < _0 > { pub used_bandwidth : runtime_types :: cumulus_pallet_parachain_system :: unincluded_segment :: UsedBandwidth , pub para_head_hash : :: core :: option :: Option < _0 > , pub consumed_go_ahead_signal : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeGoAhead > , }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct HrmpChannelUpdate {
+					pub msg_count: ::core::primitive::u32,
+					pub total_bytes: ::core::primitive::u32,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct SegmentTracker < _0 > { pub used_bandwidth : runtime_types :: cumulus_pallet_parachain_system :: unincluded_segment :: UsedBandwidth , pub hrmp_watermark : :: core :: option :: Option < :: core :: primitive :: u32 > , pub consumed_go_ahead_signal : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeGoAhead > , # [codec (skip)] pub __subxt_unused_type_params : :: core :: marker :: PhantomData < _0 > }
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct UsedBandwidth { pub ump_msg_count : :: core :: primitive :: u32 , pub ump_total_bytes : :: core :: primitive :: u32 , pub hrmp_outgoing : :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: cumulus_pallet_parachain_system :: unincluded_segment :: HrmpChannelUpdate > , }
+			}
+			#[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::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::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 1)]
+					Fail {
+						message_hash: [::core::primitive::u8; 32usize],
+						message_id: [::core::primitive::u8; 32usize],
+						error: runtime_types::xcm::v3::traits::Error,
+						weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 2)]
+					BadVersion { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 3)]
+					BadFormat { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 4)]
+					XcmpMessageSent { message_hash: [::core::primitive::u8; 32usize] },
+					#[codec(index = 5)]
+					OverweightEnqueued {
+						sender: runtime_types::polkadot_parachain_primitives::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::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::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::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_core {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct CollationInfo {
+				pub upward_messages: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
+				pub horizontal_messages: ::std::vec::Vec<
+					runtime_types::polkadot_core_primitives::OutboundHrmpMessage<
+						runtime_types::polkadot_parachain_primitives::primitives::Id,
+					>,
+				>,
+				pub new_validation_code: ::core::option::Option<
+					runtime_types::polkadot_parachain_primitives::primitives::ValidationCode,
+				>,
+				pub processed_downward_messages: ::core::primitive::u32,
+				pub hrmp_watermark: ::core::primitive::u32,
+				pub head_data: runtime_types::polkadot_parachain_primitives::primitives::HeadData,
+			}
+		}
+		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::v6::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::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: ::core::primitive::u32,
+				pub providers: ::core::primitive::u32,
+				pub sufficients: ::core::primitive::u32,
+				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 = 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 = 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 },
+					#[codec(index = 17)]
+					Locked { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 18)]
+					Unlocked {
+						who: ::sp_core::crypto::AccountId32,
+						amount: ::core::primitive::u128,
+					},
+					#[codec(index = 19)]
+					Frozen { who: ::sp_core::crypto::AccountId32, amount: ::core::primitive::u128 },
+					#[codec(index = 20)]
+					Thawed { who: ::sp_core::crypto::AccountId32, 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)]
+					OldHeader,
+					#[codec(index = 3)]
+					UnsupportedScheduledChange,
+					#[codec(index = 4)]
+					NotInitialized,
+					#[codec(index = 5)]
+					AlreadyInitialized,
+					#[codec(index = 6)]
+					TooManyAuthoritiesInSet,
+					#[codec(index = 7)]
+					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,
+						grandpa_info: runtime_types::bp_header_chain::HeaderFinalityInfo<
+							::bp_header_chain::justification::GrandpaJustification<
+								::sp_runtime::generic::Header<
+									::core::primitive::u32,
+									::sp_runtime::traits::BlakeTwo256,
+								>,
+							>,
+							runtime_types::bp_header_chain::AuthoritySet,
+						>,
+					},
+				}
+			}
+			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 outbound_lane {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum ReceivalConfirmationError {
+					#[codec(index = 0)]
+					FailedToConfirmFutureMessages,
+					#[codec(index = 1)]
+					EmptyUnrewardedRelayerEntry,
+					#[codec(index = 2)]
+					NonConsecutiveUnrewardedRelayerEntries,
+					#[codec(index = 3)]
+					TryingToConfirmMoreMessagesThanExpected,
+				}
+			}
+			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)] MessageDispatchInactive , # [codec (index = 3)] MessageRejectedByChainVerifier (runtime_types :: bp_messages :: VerificationError ,) , # [codec (index = 4)] MessageRejectedByLaneVerifier (runtime_types :: bp_messages :: VerificationError ,) , # [codec (index = 5)] MessageRejectedByPallet (runtime_types :: bp_messages :: VerificationError ,) , # [codec (index = 6)] FailedToWithdrawMessageFee , # [codec (index = 7)] TooManyMessagesInTheProof , # [codec (index = 8)] InvalidMessagesProof , # [codec (index = 9)] InvalidMessagesDeliveryProof , # [codec (index = 10)] InvalidUnrewardedRelayersState , # [codec (index = 11)] InsufficientDispatchWeight , # [codec (index = 12)] MessageIsNotYetSent , # [codec (index = 13)] ReceivalConfirmation (runtime_types :: pallet_bridge_messages :: outbound_lane :: ReceivalConfirmationError ,) , # [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)]
+					HeaderChainStorageProof(runtime_types::bp_header_chain::HeaderChainError),
+					#[codec(index = 3)]
+					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,
+					},
+					#[codec(index = 1)]
+					register { valid_till: ::core::primitive::u32 },
+					#[codec(index = 2)]
+					deregister,
+				}
+				#[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, 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,
+					},
+					#[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,
+						>,
+					},
+				}
+			}
+		}
+		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,
+					#[codec(index = 5)]
+					add_invulnerable { who: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 6)]
+					remove_invulnerable { who: ::sp_core::crypto::AccountId32 },
+				}
+				#[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)]
+					TooFewEligibleCollators,
+					#[codec(index = 2)]
+					AlreadyCandidate,
+					#[codec(index = 3)]
+					NotCandidate,
+					#[codec(index = 4)]
+					TooManyInvulnerables,
+					#[codec(index = 5)]
+					AlreadyInvulnerable,
+					#[codec(index = 6)]
+					NotInvulnerable,
+					#[codec(index = 7)]
+					NoAssociatedValidatorId,
+					#[codec(index = 8)]
+					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)]
+					InvulnerableAdded { account_id: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 2)]
+					InvulnerableRemoved { account_id: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 3)]
+					NewDesiredCandidates { desired_candidates: ::core::primitive::u32 },
+					#[codec(index = 4)]
+					NewCandidacyBond { bond_amount: ::core::primitive::u128 },
+					#[codec(index = 5)]
+					CandidateAdded {
+						account_id: ::sp_core::crypto::AccountId32,
+						deposit: ::core::primitive::u128,
+					},
+					#[codec(index = 6)]
+					CandidateRemoved { account_id: ::sp_core::crypto::AccountId32 },
+					#[codec(index = 7)]
+					InvalidInvulnerableSkipped { 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_polkadot_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_polkadot_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: ::core::primitive::u32,
+			}
+		}
+		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_polkadot_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,
+					},
+				}
+			}
+			pub mod types {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct FeeDetails<_0> {
+					pub inclusion_fee: ::core::option::Option<
+						runtime_types::pallet_transaction_payment::types::InclusionFee<_0>,
+					>,
+					pub tip: _0,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct InclusionFee<_0> {
+					pub base_fee: _0,
+					pub len_fee: _0,
+					pub adjusted_weight_fee: _0,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RuntimeDispatchInfo<_0, _1> {
+					pub weight: _1,
+					pub class: runtime_types::frame_support::dispatch::DispatchClass,
+					pub partial_fee: _0,
+				}
+			}
+			#[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_polkadot_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 1)]
+					as_derivative {
+						index: ::core::primitive::u16,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_polkadot_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 2)]
+					batch_all {
+						calls: ::std::vec::Vec<
+							runtime_types::bridge_hub_polkadot_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 3)]
+					dispatch_as {
+						as_origin: ::std::boxed::Box<
+							runtime_types::bridge_hub_polkadot_runtime::OriginCaller,
+						>,
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_polkadot_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 4)]
+					force_batch {
+						calls: ::std::vec::Vec<
+							runtime_types::bridge_hub_polkadot_runtime::RuntimeCall,
+						>,
+					},
+					#[codec(index = 5)]
+					with_weight {
+						call: ::std::boxed::Box<
+							runtime_types::bridge_hub_polkadot_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::VersionedXcm2>,
+						max_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 4)]
+					force_xcm_version {
+						location: ::std::boxed::Box<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+						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,
+					},
+					#[codec(index = 10)]
+					force_suspension { suspended: ::core::primitive::bool },
+				}
+				#[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 { outcome: runtime_types::xcm::v3::traits::Outcome },
+					#[codec(index = 1)]
+					Sent {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						message: runtime_types::xcm::v3::Xcm,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 2)]
+					UnexpectedResponse {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 3)]
+					ResponseReady {
+						query_id: ::core::primitive::u64,
+						response: runtime_types::xcm::v3::Response,
+					},
+					#[codec(index = 4)]
+					Notified {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+					},
+					#[codec(index = 5)]
+					NotifyOverweight {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+						actual_weight: ::sp_weights::Weight,
+						max_budgeted_weight: ::sp_weights::Weight,
+					},
+					#[codec(index = 6)]
+					NotifyDispatchError {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+					},
+					#[codec(index = 7)]
+					NotifyDecodeFailed {
+						query_id: ::core::primitive::u64,
+						pallet_index: ::core::primitive::u8,
+						call_index: ::core::primitive::u8,
+					},
+					#[codec(index = 8)]
+					InvalidResponder {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+						expected_location: ::core::option::Option<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 9)]
+					InvalidResponderVersion {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 10)]
+					ResponseTaken { query_id: ::core::primitive::u64 },
+					#[codec(index = 11)]
+					AssetsTrapped {
+						hash: ::subxt::utils::H256,
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						assets: runtime_types::xcm::VersionedMultiAssets,
+					},
+					#[codec(index = 12)]
+					VersionChangeNotified {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						result: ::core::primitive::u32,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 13)]
+					SupportedVersionChanged {
+						location: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						version: ::core::primitive::u32,
+					},
+					#[codec(index = 14)]
+					NotifyTargetSendFail {
+						location: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+						error: runtime_types::xcm::v3::traits::Error,
+					},
+					#[codec(index = 15)]
+					NotifyTargetMigrationFail {
+						location: runtime_types::xcm::VersionedMultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 16)]
+					InvalidQuerierVersion {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+					},
+					#[codec(index = 17)]
+					InvalidQuerier {
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						query_id: ::core::primitive::u64,
+						expected_querier:
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						maybe_actual_querier: ::core::option::Option<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 18)]
+					VersionNotifyStarted {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 19)]
+					VersionNotifyRequested {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 20)]
+					VersionNotifyUnrequested {
+						destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						cost: runtime_types::xcm::v3::multiasset::MultiAssets,
+						message_id: [::core::primitive::u8; 32usize],
+					},
+					#[codec(index = 21)]
+					FeesPaid {
+						paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						fees: runtime_types::xcm::v3::multiasset::MultiAssets,
+					},
+					#[codec(index = 22)]
+					AssetsClaimed {
+						hash: ::subxt::utils::H256,
+						origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						assets: runtime_types::xcm::VersionedMultiAssets,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Origin {
+					#[codec(index = 0)]
+					Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 1)]
+					Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum QueryStatus<_0> {
+					#[codec(index = 0)]
+					Pending {
+						responder: runtime_types::xcm::VersionedMultiLocation,
+						maybe_match_querier:
+							::core::option::Option<runtime_types::xcm::VersionedMultiLocation>,
+						maybe_notify:
+							::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>,
+						timeout: _0,
+					},
+					#[codec(index = 1)]
+					VersionNotifier {
+						origin: runtime_types::xcm::VersionedMultiLocation,
+						is_active: ::core::primitive::bool,
+					},
+					#[codec(index = 2)]
+					Ready { response: runtime_types::xcm::VersionedResponse, at: _0 },
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct RemoteLockedFungibleRecord<_0> {
+					pub amount: ::core::primitive::u128,
+					pub owner: runtime_types::xcm::VersionedMultiLocation,
+					pub locker: runtime_types::xcm::VersionedMultiLocation,
+					pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<(
+						_0,
+						::core::primitive::u128,
+					)>,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum VersionMigrationStage {
+					#[codec(index = 0)]
+					MigrateSupportedVersion,
+					#[codec(index = 1)]
+					MigrateVersionNotifiers,
+					#[codec(index = 2)]
+					NotifyCurrentTargets(
+						::core::option::Option<::std::vec::Vec<::core::primitive::u8>>,
+					),
+					#[codec(index = 3)]
+					MigrateAndNotifyOldTargets,
+				}
+			}
+		}
+		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_primitives {
+			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 struct ValidationCode(pub ::std::vec::Vec<::core::primitive::u8>);
+				#[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 v6 {
+				use super::runtime_types;
+				pub mod async_backing {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct AsyncBackingParams {
+						pub max_candidate_depth: ::core::primitive::u32,
+						pub allowed_ancestry_len: ::core::primitive::u32,
+					}
+				}
+				#[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,
+					pub async_backing_params:
+						runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams,
+				}
+				#[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::primitives::HeadData,
+					pub relay_parent_number: _1,
+					pub relay_parent_storage_root: _0,
+					pub max_pov_size: ::core::primitive::u32,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum UpgradeGoAhead {
+					#[codec(index = 0)]
+					Abort,
+					#[codec(index = 1)]
+					GoAhead,
+				}
+				#[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);
+			#[derive(
+				:: codec :: Decode,
+				:: codec :: Encode,
+				:: subxt :: ext :: codec :: CompactAs,
+				Clone,
+				Debug,
+				PartialEq,
+			)]
+			pub struct SlotDuration(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 struct OpaqueMetadata(pub ::std::vec::Vec<::core::primitive::u8>);
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum Void {}
+		}
+		pub mod sp_inherents {
+			use super::runtime_types;
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct CheckInherentsResult {
+				pub okay: ::core::primitive::bool,
+				pub fatal_error: ::core::primitive::bool,
+				pub errors: runtime_types::sp_inherents::InherentData,
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub struct InherentData {
+				pub data: ::subxt::utils::KeyedVec<
+					[::core::primitive::u8; 8usize],
+					::std::vec::Vec<::core::primitive::u8>,
+				>,
+			}
+		}
+		pub mod sp_runtime {
+			use super::runtime_types;
+			pub mod generic {
+				use super::runtime_types;
+				pub mod block {
+					use super::runtime_types;
+					#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+					pub struct Block<_0, _1> {
+						pub header: _0,
+						pub extrinsics: ::std::vec::Vec<_1>,
+					}
+				}
+				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 transaction_validity {
+				use super::runtime_types;
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum InvalidTransaction {
+					#[codec(index = 0)]
+					Call,
+					#[codec(index = 1)]
+					Payment,
+					#[codec(index = 2)]
+					Future,
+					#[codec(index = 3)]
+					Stale,
+					#[codec(index = 4)]
+					BadProof,
+					#[codec(index = 5)]
+					AncientBirthBlock,
+					#[codec(index = 6)]
+					ExhaustsResources,
+					#[codec(index = 7)]
+					Custom(::core::primitive::u8),
+					#[codec(index = 8)]
+					BadMandatory,
+					#[codec(index = 9)]
+					MandatoryValidation,
+					#[codec(index = 10)]
+					BadSigner,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum TransactionSource {
+					#[codec(index = 0)]
+					InBlock,
+					#[codec(index = 1)]
+					Local,
+					#[codec(index = 2)]
+					External,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum TransactionValidityError {
+					#[codec(index = 0)]
+					Invalid(runtime_types::sp_runtime::transaction_validity::InvalidTransaction),
+					#[codec(index = 1)]
+					Unknown(runtime_types::sp_runtime::transaction_validity::UnknownTransaction),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum UnknownTransaction {
+					#[codec(index = 0)]
+					CannotLookup,
+					#[codec(index = 1)]
+					NoUnsignedValidator,
+					#[codec(index = 2)]
+					Custom(::core::primitive::u8),
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct ValidTransaction {
+					pub priority: ::core::primitive::u64,
+					pub requires: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
+					pub provides: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>,
+					pub longevity: ::core::primitive::u64,
+					pub propagate: ::core::primitive::bool,
+				}
+			}
+			#[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,
+				#[codec(index = 13)]
+				RootNotAllowed,
+			}
+			#[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,
+				#[codec(index = 9)]
+				Blocked,
+			}
+			#[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 staging_xcm {
+			use super::runtime_types;
+			pub mod v3 {
+				use super::runtime_types;
+				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 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>,
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct DoubleEncoded2 {
+					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 Instruction2 {
+					#[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::DoubleEncoded2,
+					},
+					#[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::Xcm2),
+					#[codec(index = 22)]
+					SetAppendix(runtime_types::xcm::v2::Xcm2),
+					#[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>);
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub struct Xcm2(pub ::std::vec::Vec<runtime_types::xcm::v2::Instruction2>);
+			}
+			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::staging_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 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::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 4)]
+					TransferAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 5)]
+					TransferReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						dest: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 14)]
+					DepositReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 17)]
+					InitiateTeleport {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::staging_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::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 40)]
+					UnlockAsset {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						target: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 41)]
+					NoteUnlockable {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 42)]
+					RequestUnlock {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						locker: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 47)]
+					UnpaidExecution {
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+						check_origin: ::core::option::Option<
+							runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+				}
+				#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+				pub enum Instruction2 {
+					#[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::staging_xcm::v3::multilocation::MultiLocation,
+						>,
+					},
+					#[codec(index = 4)]
+					TransferAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 5)]
+					TransferReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						dest: runtime_types::staging_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::DoubleEncoded2,
+					},
+					#[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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 14)]
+					DepositReserveAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+						xcm: runtime_types::xcm::v3::Xcm,
+					},
+					#[codec(index = 17)]
+					InitiateTeleport {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter,
+						dest: runtime_types::staging_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::Xcm2),
+					#[codec(index = 22)]
+					SetAppendix(runtime_types::xcm::v3::Xcm2),
+					#[codec(index = 23)]
+					ClearError,
+					#[codec(index = 24)]
+					ClaimAsset {
+						assets: runtime_types::xcm::v3::multiasset::MultiAssets,
+						ticket: runtime_types::staging_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::staging_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::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 40)]
+					UnlockAsset {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						target: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 41)]
+					NoteUnlockable {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation,
+					},
+					#[codec(index = 42)]
+					RequestUnlock {
+						asset: runtime_types::xcm::v3::multiasset::MultiAsset,
+						locker: runtime_types::staging_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::staging_xcm::v3::multilocation::MultiLocation),
+					#[codec(index = 47)]
+					UnpaidExecution {
+						weight_limit: runtime_types::xcm::v3::WeightLimit,
+						check_origin: ::core::option::Option<
+							runtime_types::staging_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::staging_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 struct Xcm2(pub ::std::vec::Vec<runtime_types::xcm::v3::Instruction2>);
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedAssetId {
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::multiasset::AssetId),
+			}
+			#[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::staging_xcm::v3::multilocation::MultiLocation),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedResponse {
+				#[codec(index = 2)]
+				V2(runtime_types::xcm::v2::Response),
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::Response),
+			}
+			#[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),
+			}
+			#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
+			pub enum VersionedXcm2 {
+				#[codec(index = 2)]
+				V2(runtime_types::xcm::v2::Xcm2),
+				#[codec(index = 3)]
+				V3(runtime_types::xcm::v3::Xcm2),
+			}
+		}
+	}
+}
diff --git a/bridges/relays/client-bridge-hub-polkadot/src/lib.rs b/bridges/relays/client-bridge-hub-polkadot/src/lib.rs
index 00006da303008f5391c3ef2c567a2e04cce907e0..7bcf189e109657e66232e49b45528fce26409268 100644
--- a/bridges/relays/client-bridge-hub-polkadot/src/lib.rs
+++ b/bridges/relays/client-bridge-hub-polkadot/src/lib.rs
@@ -16,21 +16,32 @@
 
 //! Types used to connect to the BridgeHub-Polkadot-Substrate parachain.
 
-use bp_bridge_hub_polkadot::AVERAGE_BLOCK_INTERVAL;
+pub mod codegen_runtime;
+
+use bp_bridge_hub_polkadot::{SignedExtension, AVERAGE_BLOCK_INTERVAL};
 use bp_polkadot_core::SuffixedCommonSignedExtensionExt;
 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_polkadot_runtime::RuntimeCall;
+// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - regenerate when ready
+pub type BridgePolkadotBulletinMessagesCall = runtime_types::pallet_bridge_messages::pallet::Call;
+pub type BridgeKusamaMessagesCall = runtime_types::pallet_bridge_messages::pallet::Call;
+// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - regenerate when ready
+pub type BridgePolkadotBulletinGrandpaCall = runtime_types::pallet_bridge_grandpa::pallet::Call;
+pub type BridgeKusamaGrandpaCall = runtime_types::pallet_bridge_grandpa::pallet::Call;
+pub type BridgeParachainCall = runtime_types::pallet_bridge_parachains::pallet::Call;
+type UncheckedExtrinsic = bp_bridge_hub_polkadot::UncheckedExtrinsic<RuntimeCall, SignedExtension>;
+type UtilityCall = runtime_types::pallet_utility::pallet::Call;
 
 /// Polkadot chain definition
 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -47,7 +58,7 @@ impl Chain for BridgeHubPolkadot {
 	const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;
 
 	type SignedBlock = bp_bridge_hub_polkadot::SignedBlock;
-	type Call = runtime::Call;
+	type Call = RuntimeCall;
 }
 
 impl ChainWithBalances for BridgeHubPolkadot {
@@ -56,13 +67,22 @@ impl ChainWithBalances for BridgeHubPolkadot {
 	}
 }
 
+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 BridgeHubPolkadot {
-	type UtilityPallet = MockedRuntimeUtilityPallet<runtime::Call>;
+	type UtilityPallet = MockedRuntimeUtilityPallet<RuntimeCall>;
 }
 
 impl ChainWithTransactions for BridgeHubPolkadot {
 	type AccountKeyPair = sp_core::sr25519::Pair;
-	type SignedTransaction = runtime::UncheckedExtrinsic;
+	type SignedTransaction = UncheckedExtrinsic;
 
 	fn sign_transaction(
 		param: SignParam<Self>,
@@ -70,7 +90,7 @@ impl ChainWithTransactions for BridgeHubPolkadot {
 	) -> 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,
@@ -85,7 +105,7 @@ impl ChainWithTransactions for BridgeHubPolkadot {
 		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(),
@@ -127,10 +147,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,