diff --git a/.config/lychee.toml b/.config/lychee.toml
index b7b5b83f35bc57a835034d15334fa7a3ed933d51..1de9fcd559dd9ea14fb603b7740efebcb893ed93 100644
--- a/.config/lychee.toml
+++ b/.config/lychee.toml
@@ -51,5 +51,6 @@ exclude = [
 	"https://www.reddit.com/r/rust/comments/3spfh1/does_collect_allocate_more_than_once_while/",
 	# 403 rate limited:
 	"https://etherscan.io/block/11090290",
+	"https://subscan.io/",
 	"https://substrate.stackexchange.com/.*",
 ]
diff --git a/.config/zepter.yaml b/.config/zepter.yaml
index f701392d16b15aab8351b730efa13f3abffe2406..9b3bd9d618c14e41f1dbf420aff3fee1677e2830 100644
--- a/.config/zepter.yaml
+++ b/.config/zepter.yaml
@@ -25,9 +25,13 @@ workflows:
         '--show-path',
         '--quiet',
       ]
-  # Same as `check`, but with the `--fix` flag.
+  # The umbrella crate uses more features, so we to check those too:
+  check_umbrella:
+    - [ $check.0, '--features=serde,experimental,with-tracing,tuples-96,with-tracing', '-p=polkadot-sdk' ]
+  # Same as `check_*`, but with the `--fix` flag.
   default:
     - [ $check.0, '--fix' ]
+    - [ $check_umbrella.0, '--fix' ]
 
 # Will be displayed when any workflow fails:
 help:
diff --git a/.github/workflows/check-features.yml b/.github/workflows/check-features.yml
index 53d6ac6b4dbfd7e3ccf1ca09ad9e1e70a49a9ff9..d34b3d52c5332b61d9a90dc03de938f154de5c7e 100644
--- a/.github/workflows/check-features.yml
+++ b/.github/workflows/check-features.yml
@@ -13,7 +13,7 @@ jobs:
       - name: Check
         uses: hack-ink/cargo-featalign-action@bea88a864d6ca7d0c53c26f1391ce1d431dc7f34 # v0.1.1
         with:
-          crate: substrate/bin/node/runtime
+          crate: templates/parachain/runtime/
           features: std,runtime-benchmarks,try-runtime
           ignore: sc-executor
           default-std: true
diff --git a/.github/workflows/checks-quick.yml b/.github/workflows/checks-quick.yml
index 217adf40a391966c9482a691b94ffc719d2c65ab..3888928311a2129a1fe6d0836956d2a4ce066583 100644
--- a/.github/workflows/checks-quick.yml
+++ b/.github/workflows/checks-quick.yml
@@ -116,3 +116,33 @@ jobs:
         run: |
           echo "Checking markdown formatting. More info: docs/contributor/markdown_linting.md"
           markdownlint --config "$CONFIG" --ignore target .
+  check-umbrella:
+    runs-on: arc-runners-polkadot-sdk
+    timeout-minutes: 10
+    needs: [set-image]
+    container:
+      image: ${{ needs.set-image.outputs.IMAGE }}
+    steps:
+      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.0 (22. Sep 2023)
+      - name: install python deps
+        run: |
+          sudo apt-get update && sudo apt-get install -y python3-pip python3
+          pip3 install "cargo-workspace>=1.2.4" toml
+      - name: check umbrella correctness
+        run: |
+          python3 scripts/generate-umbrella.py --sdk . --version 0.1.0
+          cargo +nightly fmt --all
+          if [ -n "$(git status --porcelain)" ]; then
+            cat <<EOF
+          👋 Hello developer! The SemVer information that you declared in the prdoc file did not match what the CI detected.
+
+          Please check the output above and see the following links for more help:
+          - https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/prdoc.md#record-semver-changes
+          - https://forum.polkadot.network/t/psa-polkadot-sdk-to-use-semver
+
+          Otherwise feel free to ask in the Merge Request or in Matrix chat.
+          EOF
+
+            git diff
+            exit 1
+          fi
diff --git a/Cargo.lock b/Cargo.lock
index 0bdbcfd02ebe025e567d46934c145183270725ac..1767245c6abfc55b7faba7b8487fa0b7b19c05ab 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -7249,124 +7249,15 @@ checksum = "c33070833c9ee02266356de0c43f723152bd38bd96ddf52c82b3af10c9138b28"
 name = "kitchensink-runtime"
 version = "3.0.0-dev"
 dependencies = [
- "frame-benchmarking",
- "frame-benchmarking-pallet-pov",
- "frame-election-provider-support",
- "frame-executive",
- "frame-metadata-hash-extension",
- "frame-support",
- "frame-system",
- "frame-system-benchmarking",
- "frame-system-rpc-runtime-api",
- "frame-try-runtime",
  "log",
  "node-primitives",
- "pallet-alliance",
- "pallet-asset-conversion",
- "pallet-asset-conversion-ops",
- "pallet-asset-conversion-tx-payment",
- "pallet-asset-rate",
- "pallet-asset-tx-payment",
- "pallet-assets",
- "pallet-authority-discovery",
- "pallet-authorship",
- "pallet-babe",
- "pallet-bags-list",
- "pallet-balances",
- "pallet-beefy",
- "pallet-beefy-mmr",
- "pallet-bounties",
- "pallet-broker",
- "pallet-child-bounties",
- "pallet-collective",
- "pallet-contracts",
- "pallet-conviction-voting",
- "pallet-core-fellowship",
- "pallet-democracy",
- "pallet-election-provider-multi-phase",
- "pallet-election-provider-support-benchmarking",
- "pallet-elections-phragmen",
  "pallet-example-mbm",
  "pallet-example-tasks",
- "pallet-fast-unstake",
- "pallet-glutton",
- "pallet-grandpa",
- "pallet-identity",
- "pallet-im-online",
- "pallet-indices",
- "pallet-insecure-randomness-collective-flip",
- "pallet-lottery",
- "pallet-membership",
- "pallet-message-queue",
- "pallet-migrations",
- "pallet-mixnet",
- "pallet-mmr",
- "pallet-multisig",
- "pallet-nft-fractionalization",
- "pallet-nfts",
- "pallet-nfts-runtime-api",
- "pallet-nis",
- "pallet-nomination-pools",
- "pallet-nomination-pools-benchmarking",
- "pallet-nomination-pools-runtime-api",
- "pallet-offences",
- "pallet-offences-benchmarking",
- "pallet-parameters",
- "pallet-preimage",
- "pallet-proxy",
- "pallet-ranked-collective",
- "pallet-recovery",
- "pallet-referenda",
- "pallet-remark",
- "pallet-root-testing",
- "pallet-safe-mode",
- "pallet-salary",
- "pallet-scheduler",
- "pallet-session",
- "pallet-session-benchmarking",
- "pallet-skip-feeless-payment",
- "pallet-society",
- "pallet-staking",
- "pallet-staking-reward-curve",
- "pallet-staking-runtime-api",
- "pallet-state-trie-migration",
- "pallet-statement",
- "pallet-sudo",
- "pallet-timestamp",
- "pallet-tips",
- "pallet-transaction-payment",
- "pallet-transaction-payment-rpc-runtime-api",
- "pallet-transaction-storage",
- "pallet-treasury",
- "pallet-tx-pause",
- "pallet-uniques",
- "pallet-utility",
- "pallet-vesting",
- "pallet-whitelist",
  "parity-scale-codec",
+ "polkadot-sdk",
  "primitive-types",
  "scale-info",
  "serde_json",
- "sp-api",
- "sp-authority-discovery",
- "sp-block-builder",
- "sp-consensus-babe",
- "sp-consensus-beefy",
- "sp-consensus-grandpa",
- "sp-core",
- "sp-genesis-builder",
- "sp-inherents",
- "sp-io",
- "sp-mixnet",
- "sp-offchain",
- "sp-runtime",
- "sp-session",
- "sp-staking",
- "sp-statement-store",
- "sp-std 14.0.0",
- "sp-storage 19.0.0",
- "sp-transaction-pool",
- "sp-version",
  "static_assertions",
  "substrate-wasm-builder",
 ]
@@ -13919,43 +13810,429 @@ dependencies = [
 ]
 
 [[package]]
-name = "polkadot-sdk-docs"
-version = "0.0.1"
+name = "polkadot-sdk"
+version = "0.1.0"
 dependencies = [
+ "asset-test-utils",
+ "assets-common",
+ "binary-merkle-tree",
+ "bp-asset-hub-rococo",
+ "bp-asset-hub-westend",
+ "bp-bridge-hub-cumulus",
+ "bp-bridge-hub-kusama",
+ "bp-bridge-hub-polkadot",
+ "bp-bridge-hub-rococo",
+ "bp-bridge-hub-westend",
+ "bp-header-chain",
+ "bp-kusama",
+ "bp-messages",
+ "bp-parachains",
+ "bp-polkadot",
+ "bp-polkadot-bulletin",
+ "bp-polkadot-core",
+ "bp-relayers",
+ "bp-rococo",
+ "bp-runtime",
+ "bp-test-utils",
+ "bp-westend",
+ "bp-xcm-bridge-hub",
+ "bp-xcm-bridge-hub-router",
+ "bridge-hub-common",
+ "bridge-hub-test-utils",
+ "bridge-runtime-common",
+ "cumulus-client-cli",
+ "cumulus-client-collator",
+ "cumulus-client-consensus-aura",
+ "cumulus-client-consensus-common",
+ "cumulus-client-consensus-proposer",
+ "cumulus-client-consensus-relay-chain",
+ "cumulus-client-network",
+ "cumulus-client-parachain-inherent",
+ "cumulus-client-pov-recovery",
  "cumulus-client-service",
  "cumulus-pallet-aura-ext",
+ "cumulus-pallet-dmp-queue",
  "cumulus-pallet-parachain-system",
+ "cumulus-pallet-parachain-system-proc-macro",
+ "cumulus-pallet-session-benchmarking",
+ "cumulus-pallet-solo-to-para",
+ "cumulus-pallet-xcm",
+ "cumulus-pallet-xcmp-queue",
+ "cumulus-ping",
+ "cumulus-primitives-aura",
+ "cumulus-primitives-core",
+ "cumulus-primitives-parachain-inherent",
  "cumulus-primitives-proof-size-hostfunction",
  "cumulus-primitives-storage-weight-reclaim",
- "docify",
+ "cumulus-primitives-timestamp",
+ "cumulus-primitives-utility",
+ "cumulus-relay-chain-inprocess-interface",
+ "cumulus-relay-chain-interface",
+ "cumulus-relay-chain-minimal-node",
+ "cumulus-relay-chain-rpc-interface",
+ "cumulus-test-relay-sproof-builder",
+ "emulated-integration-tests-common",
+ "fork-tree",
+ "frame-benchmarking",
+ "frame-benchmarking-cli",
+ "frame-benchmarking-pallet-pov",
+ "frame-election-provider-solution-type",
+ "frame-election-provider-support",
  "frame-executive",
  "frame-metadata-hash-extension",
+ "frame-remote-externalities",
  "frame-support",
+ "frame-support-procedural",
+ "frame-support-procedural-tools",
+ "frame-support-procedural-tools-derive",
  "frame-system",
- "kitchensink-runtime",
+ "frame-system-benchmarking",
+ "frame-system-rpc-runtime-api",
+ "frame-try-runtime",
+ "generate-bags",
+ "mmr-gadget",
+ "mmr-rpc",
+ "pallet-alliance",
+ "pallet-asset-conversion",
+ "pallet-asset-conversion-ops",
+ "pallet-asset-conversion-tx-payment",
+ "pallet-asset-rate",
+ "pallet-asset-tx-payment",
  "pallet-assets",
+ "pallet-atomic-swap",
  "pallet-aura",
+ "pallet-authority-discovery",
  "pallet-authorship",
  "pallet-babe",
+ "pallet-bags-list",
  "pallet-balances",
+ "pallet-beefy",
+ "pallet-beefy-mmr",
+ "pallet-bounties",
+ "pallet-bridge-grandpa",
+ "pallet-bridge-messages",
+ "pallet-bridge-parachains",
+ "pallet-bridge-relayers",
  "pallet-broker",
+ "pallet-child-bounties",
+ "pallet-collator-selection",
  "pallet-collective",
- "pallet-default-config-example",
+ "pallet-collective-content",
+ "pallet-contracts",
+ "pallet-contracts-mock-network",
+ "pallet-contracts-proc-macro",
+ "pallet-contracts-uapi",
+ "pallet-conviction-voting",
+ "pallet-core-fellowship",
+ "pallet-delegated-staking",
  "pallet-democracy",
- "pallet-example-offchain-worker",
- "pallet-example-single-block-migrations",
- "pallet-examples",
+ "pallet-dev-mode",
+ "pallet-election-provider-multi-phase",
+ "pallet-election-provider-support-benchmarking",
+ "pallet-elections-phragmen",
+ "pallet-fast-unstake",
+ "pallet-glutton",
+ "pallet-grandpa",
+ "pallet-identity",
+ "pallet-im-online",
+ "pallet-indices",
+ "pallet-insecure-randomness-collective-flip",
+ "pallet-lottery",
+ "pallet-membership",
+ "pallet-message-queue",
+ "pallet-migrations",
+ "pallet-mixnet",
+ "pallet-mmr",
  "pallet-multisig",
+ "pallet-nft-fractionalization",
  "pallet-nfts",
+ "pallet-nfts-runtime-api",
+ "pallet-nis",
+ "pallet-node-authorization",
+ "pallet-nomination-pools",
+ "pallet-nomination-pools-benchmarking",
+ "pallet-nomination-pools-runtime-api",
+ "pallet-offences",
+ "pallet-offences-benchmarking",
+ "pallet-paged-list",
+ "pallet-parameters",
  "pallet-preimage",
  "pallet-proxy",
+ "pallet-ranked-collective",
+ "pallet-recovery",
  "pallet-referenda",
+ "pallet-remark",
+ "pallet-root-offences",
+ "pallet-root-testing",
+ "pallet-safe-mode",
+ "pallet-salary",
  "pallet-scheduler",
+ "pallet-scored-pool",
+ "pallet-session",
+ "pallet-session-benchmarking",
+ "pallet-skip-feeless-payment",
+ "pallet-society",
+ "pallet-staking",
+ "pallet-staking-reward-curve",
+ "pallet-staking-reward-fn",
+ "pallet-staking-runtime-api",
+ "pallet-state-trie-migration",
+ "pallet-statement",
+ "pallet-sudo",
  "pallet-timestamp",
+ "pallet-tips",
  "pallet-transaction-payment",
- "pallet-uniques",
- "pallet-utility",
+ "pallet-transaction-payment-rpc",
+ "pallet-transaction-payment-rpc-runtime-api",
+ "pallet-transaction-storage",
+ "pallet-treasury",
+ "pallet-tx-pause",
+ "pallet-uniques",
+ "pallet-utility",
+ "pallet-vesting",
+ "pallet-whitelist",
+ "pallet-xcm",
+ "pallet-xcm-benchmarks",
+ "pallet-xcm-bridge-hub",
+ "pallet-xcm-bridge-hub-router",
+ "parachains-common",
+ "parachains-runtimes-test-utils",
+ "polkadot-approval-distribution",
+ "polkadot-availability-bitfield-distribution",
+ "polkadot-availability-distribution",
+ "polkadot-availability-recovery",
+ "polkadot-cli",
+ "polkadot-collator-protocol",
+ "polkadot-core-primitives",
+ "polkadot-dispute-distribution",
+ "polkadot-erasure-coding",
+ "polkadot-gossip-support",
+ "polkadot-network-bridge",
+ "polkadot-node-collation-generation",
+ "polkadot-node-core-approval-voting",
+ "polkadot-node-core-av-store",
+ "polkadot-node-core-backing",
+ "polkadot-node-core-bitfield-signing",
+ "polkadot-node-core-candidate-validation",
+ "polkadot-node-core-chain-api",
+ "polkadot-node-core-chain-selection",
+ "polkadot-node-core-dispute-coordinator",
+ "polkadot-node-core-parachains-inherent",
+ "polkadot-node-core-prospective-parachains",
+ "polkadot-node-core-provisioner",
+ "polkadot-node-core-pvf",
+ "polkadot-node-core-pvf-checker",
+ "polkadot-node-core-pvf-common",
+ "polkadot-node-core-pvf-execute-worker",
+ "polkadot-node-core-pvf-prepare-worker",
+ "polkadot-node-core-runtime-api",
+ "polkadot-node-jaeger",
+ "polkadot-node-metrics",
+ "polkadot-node-network-protocol",
+ "polkadot-node-primitives",
+ "polkadot-node-subsystem",
+ "polkadot-node-subsystem-types",
+ "polkadot-node-subsystem-util",
+ "polkadot-overseer",
+ "polkadot-parachain-primitives",
+ "polkadot-primitives",
+ "polkadot-rpc",
+ "polkadot-runtime-common",
+ "polkadot-runtime-metrics",
+ "polkadot-runtime-parachains",
+ "polkadot-sdk-frame",
+ "polkadot-service",
+ "polkadot-statement-distribution",
+ "polkadot-statement-table",
+ "rococo-runtime-constants",
+ "sc-allocator",
+ "sc-authority-discovery",
+ "sc-basic-authorship",
+ "sc-block-builder",
+ "sc-chain-spec",
+ "sc-chain-spec-derive",
+ "sc-cli",
+ "sc-client-api",
+ "sc-client-db",
+ "sc-consensus",
+ "sc-consensus-aura",
+ "sc-consensus-babe",
+ "sc-consensus-babe-rpc",
+ "sc-consensus-beefy",
+ "sc-consensus-beefy-rpc",
+ "sc-consensus-epochs",
+ "sc-consensus-grandpa",
+ "sc-consensus-grandpa-rpc",
+ "sc-consensus-manual-seal",
+ "sc-consensus-pow",
+ "sc-consensus-slots",
+ "sc-executor",
+ "sc-executor-common",
+ "sc-executor-polkavm",
+ "sc-executor-wasmtime",
+ "sc-informant",
+ "sc-keystore",
+ "sc-mixnet",
+ "sc-network",
+ "sc-network-common",
+ "sc-network-gossip",
+ "sc-network-light",
+ "sc-network-statement",
+ "sc-network-sync",
+ "sc-network-transactions",
+ "sc-network-types",
+ "sc-offchain",
+ "sc-proposer-metrics",
+ "sc-rpc",
+ "sc-rpc-api",
+ "sc-rpc-server",
+ "sc-rpc-spec-v2",
+ "sc-service",
+ "sc-state-db",
+ "sc-statement-store",
+ "sc-storage-monitor",
+ "sc-sync-state-rpc",
+ "sc-sysinfo",
+ "sc-telemetry",
+ "sc-tracing",
+ "sc-tracing-proc-macro",
+ "sc-transaction-pool",
+ "sc-transaction-pool-api",
+ "sc-utils",
+ "slot-range-helper",
+ "snowbridge-beacon-primitives",
+ "snowbridge-core",
+ "snowbridge-ethereum",
+ "snowbridge-outbound-queue-merkle-tree",
+ "snowbridge-outbound-queue-runtime-api",
+ "snowbridge-pallet-ethereum-client",
+ "snowbridge-pallet-ethereum-client-fixtures",
+ "snowbridge-pallet-inbound-queue",
+ "snowbridge-pallet-inbound-queue-fixtures",
+ "snowbridge-pallet-outbound-queue",
+ "snowbridge-pallet-system",
+ "snowbridge-router-primitives",
+ "snowbridge-runtime-common",
+ "snowbridge-runtime-test-common",
+ "snowbridge-system-runtime-api",
+ "sp-api",
+ "sp-api-proc-macro",
+ "sp-application-crypto",
+ "sp-arithmetic",
+ "sp-authority-discovery",
+ "sp-block-builder",
+ "sp-blockchain",
+ "sp-consensus",
+ "sp-consensus-aura",
+ "sp-consensus-babe",
+ "sp-consensus-beefy",
+ "sp-consensus-grandpa",
+ "sp-consensus-pow",
+ "sp-consensus-slots",
+ "sp-core",
+ "sp-core-hashing",
+ "sp-core-hashing-proc-macro",
+ "sp-crypto-ec-utils 0.10.0",
+ "sp-crypto-hashing",
+ "sp-crypto-hashing-proc-macro",
+ "sp-database",
+ "sp-debug-derive 14.0.0",
+ "sp-externalities 0.25.0",
+ "sp-genesis-builder",
+ "sp-inherents",
+ "sp-io",
+ "sp-keyring",
+ "sp-keystore",
+ "sp-maybe-compressed-blob",
+ "sp-metadata-ir",
+ "sp-mixnet",
+ "sp-mmr-primitives",
+ "sp-npos-elections",
+ "sp-offchain",
+ "sp-panic-handler",
+ "sp-rpc",
+ "sp-runtime",
+ "sp-runtime-interface 24.0.0",
+ "sp-runtime-interface-proc-macro 17.0.0",
+ "sp-session",
+ "sp-staking",
+ "sp-state-machine",
+ "sp-statement-store",
+ "sp-std 14.0.0",
+ "sp-storage 19.0.0",
+ "sp-timestamp",
+ "sp-tracing 16.0.0",
+ "sp-transaction-pool",
+ "sp-transaction-storage-proof",
+ "sp-trie",
+ "sp-version",
+ "sp-version-proc-macro",
+ "sp-wasm-interface 20.0.0",
+ "sp-weights",
+ "staging-node-inspect",
+ "staging-parachain-info",
+ "staging-tracking-allocator",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
+ "subkey",
+ "substrate-bip39",
+ "substrate-build-script-utils",
+ "substrate-frame-rpc-support",
+ "substrate-frame-rpc-system",
+ "substrate-prometheus-endpoint",
+ "substrate-rpc-client",
+ "substrate-state-trie-migration-rpc",
+ "substrate-wasm-builder",
+ "testnet-parachains-constants",
+ "tracing-gum",
+ "tracing-gum-proc-macro",
+ "westend-runtime-constants",
+ "xcm-emulator",
+ "xcm-fee-payment-runtime-api",
+ "xcm-procedural",
+ "xcm-simulator",
+]
+
+[[package]]
+name = "polkadot-sdk-docs"
+version = "0.0.1"
+dependencies = [
+ "cumulus-client-service",
+ "cumulus-pallet-aura-ext",
+ "cumulus-pallet-parachain-system",
+ "cumulus-primitives-proof-size-hostfunction",
+ "cumulus-primitives-storage-weight-reclaim",
+ "docify",
+ "frame-executive",
+ "frame-metadata-hash-extension",
+ "frame-support",
+ "frame-system",
+ "kitchensink-runtime",
+ "pallet-assets",
+ "pallet-aura",
+ "pallet-authorship",
+ "pallet-babe",
+ "pallet-balances",
+ "pallet-broker",
+ "pallet-collective",
+ "pallet-default-config-example",
+ "pallet-democracy",
+ "pallet-example-offchain-worker",
+ "pallet-example-single-block-migrations",
+ "pallet-examples",
+ "pallet-multisig",
+ "pallet-nfts",
+ "pallet-preimage",
+ "pallet-proxy",
+ "pallet-referenda",
+ "pallet-scheduler",
+ "pallet-timestamp",
+ "pallet-transaction-payment",
+ "pallet-uniques",
+ "pallet-utility",
  "parity-scale-codec",
+ "polkadot-sdk",
  "polkadot-sdk-frame",
  "sc-cli",
  "sc-client-db",
@@ -20234,102 +20511,26 @@ dependencies = [
  "clap 4.5.3",
  "clap_complete",
  "criterion",
- "frame-benchmarking",
- "frame-benchmarking-cli",
- "frame-metadata-hash-extension",
- "frame-support",
- "frame-system",
- "frame-system-rpc-runtime-api",
  "futures",
  "jsonrpsee",
  "kitchensink-runtime",
  "log",
- "mmr-gadget",
  "nix 0.28.0",
  "node-primitives",
  "node-rpc",
  "node-testing",
- "pallet-asset-conversion-tx-payment",
- "pallet-asset-tx-payment",
- "pallet-assets",
- "pallet-balances",
- "pallet-contracts",
- "pallet-glutton",
- "pallet-im-online",
- "pallet-root-testing",
- "pallet-skip-feeless-payment",
- "pallet-sudo",
- "pallet-timestamp",
- "pallet-transaction-payment",
- "pallet-treasury",
  "parity-scale-codec",
  "platforms",
+ "polkadot-sdk",
  "rand 0.8.5",
  "regex",
- "sc-authority-discovery",
- "sc-basic-authorship",
- "sc-block-builder",
- "sc-chain-spec",
- "sc-cli",
- "sc-client-api",
- "sc-client-db",
- "sc-consensus",
- "sc-consensus-babe",
- "sc-consensus-beefy",
- "sc-consensus-epochs",
- "sc-consensus-grandpa",
- "sc-consensus-slots",
- "sc-executor",
- "sc-keystore",
- "sc-mixnet",
- "sc-network",
- "sc-network-common",
- "sc-network-statement",
- "sc-network-sync",
- "sc-offchain",
- "sc-rpc",
- "sc-service",
  "sc-service-test",
- "sc-statement-store",
- "sc-storage-monitor",
- "sc-sync-state-rpc",
- "sc-sysinfo",
- "sc-telemetry",
- "sc-transaction-pool",
- "sc-transaction-pool-api",
  "scale-info",
  "serde",
  "serde_json",
  "soketto",
- "sp-api",
- "sp-application-crypto",
- "sp-authority-discovery",
- "sp-blockchain",
- "sp-consensus",
- "sp-consensus-babe",
- "sp-consensus-beefy",
- "sp-consensus-grandpa",
- "sp-core",
- "sp-crypto-hashing",
- "sp-externalities 0.25.0",
- "sp-genesis-builder",
- "sp-inherents",
- "sp-io",
- "sp-keyring",
- "sp-keystore",
- "sp-mixnet",
- "sp-mmr-primitives",
- "sp-runtime",
- "sp-state-machine",
- "sp-statement-store",
- "sp-timestamp",
- "sp-tracing 16.0.0",
- "sp-transaction-storage-proof",
- "sp-trie",
  "staging-node-inspect",
- "substrate-build-script-utils",
  "substrate-cli-test-utils",
- "substrate-rpc-client",
  "tempfile",
  "tokio",
  "tokio-util",
diff --git a/Cargo.toml b/Cargo.toml
index 54fa44d6654d6d2cfe88e5a8af1f0c2c85f36fc7..d6099e420f918832d962bde854cd7c619d276f1d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -515,21 +515,23 @@ members = [
 	"substrate/utils/prometheus",
 	"substrate/utils/substrate-bip39",
 	"substrate/utils/wasm-builder",
-
 	"templates/minimal",
 	"templates/minimal/node",
 	"templates/minimal/pallets/template",
 	"templates/minimal/runtime",
-
+	"templates/parachain/node",
+	"templates/parachain/pallets/template",
+	"templates/parachain/runtime",
 	"templates/solochain/node",
 	"templates/solochain/pallets/template",
 	"templates/solochain/runtime",
+	"umbrella",
+]
 
-	"templates/parachain/node",
-	"templates/parachain/pallets/template",
-	"templates/parachain/runtime",
+default-members = [
+	"polkadot",
+	"substrate/bin/node/cli",
 ]
-default-members = ["polkadot", "substrate/bin/node/cli"]
 
 [workspace.lints.rust]
 suspicious_double_ref_op = { level = "allow", priority = 2 }
diff --git a/cumulus/pallets/parachain-system/src/validate_block/implementation.rs b/cumulus/pallets/parachain-system/src/validate_block/implementation.rs
index ecab7a9a09311ae0f952a7842e9f1826b00adc69..956962fce157d3c5d090dd4bd8de78bba4d80405 100644
--- a/cumulus/pallets/parachain-system/src/validate_block/implementation.rs
+++ b/cumulus/pallets/parachain-system/src/validate_block/implementation.rs
@@ -80,6 +80,7 @@ environmental::environmental!(recorder: trait ProofSizeProvider);
 /// ensuring that the final storage root matches the storage root in the header of the block. In the
 /// end we return back the [`ValidationResult`] with all the required information for the validator.
 #[doc(hidden)]
+#[allow(deprecated)]
 pub fn validate_block<
 	B: BlockT,
 	E: ExecuteBlock<B>,
@@ -186,6 +187,7 @@ where
 		)
 		.expect("Invalid relay chain state proof");
 
+		#[allow(deprecated)]
 		let res = CI::check_inherents(&block, &relay_chain_proof);
 
 		if !res.ok() {
diff --git a/docs/sdk/Cargo.toml b/docs/sdk/Cargo.toml
index f9812dbd044b38644a9d839ae6221e20cb1fbdc9..a8c873be556c2fd06ff6a3d3c096b3a8301f16d8 100644
--- a/docs/sdk/Cargo.toml
+++ b/docs/sdk/Cargo.toml
@@ -30,6 +30,7 @@ simple-mermaid = "0.1.1"
 docify = "0.2.8"
 
 # Polkadot SDK deps, typically all should only be in scope such that we can link to their doc item.
+polkadot-sdk = { path = "../../umbrella", features = ["runtime"] }
 node-cli = { package = "staging-node-cli", path = "../../substrate/bin/node/cli" }
 kitchensink-runtime = { path = "../../substrate/bin/node/runtime" }
 chain-spec-builder = { package = "staging-chain-spec-builder", path = "../../substrate/bin/utils/chain-spec-builder" }
diff --git a/docs/sdk/src/reference_docs/mod.rs b/docs/sdk/src/reference_docs/mod.rs
index 145df8844f26e5b58d737a4290035e3886bf63fe..6fa25bf36e1b542d6412aa48d7fa8e62a7cd5769 100644
--- a/docs/sdk/src/reference_docs/mod.rs
+++ b/docs/sdk/src/reference_docs/mod.rs
@@ -106,3 +106,6 @@ pub mod frame_offchain_workers;
 /// Learn about the different ways through which multiple [`frame`] pallets can be combined to work
 /// together.
 pub mod frame_pallet_coupling;
+
+/// Learn about the Polkadot Umbrella crate that re-exports all other crates.
+pub mod umbrella_crate;
diff --git a/docs/sdk/src/reference_docs/umbrella_crate.rs b/docs/sdk/src/reference_docs/umbrella_crate.rs
new file mode 100644
index 0000000000000000000000000000000000000000..9751b0ad5ad6d94a20e027e902ac055fa9e49181
--- /dev/null
+++ b/docs/sdk/src/reference_docs/umbrella_crate.rs
@@ -0,0 +1,89 @@
+//! # Umbrella Crate
+//!
+//! The Polkadot-SDK "umbrella" is a crate that re-exports all other published crates. This makes it
+//! possible to have a very small `Cargo.toml` file that only has one dependency, the umbrella
+//! crate. This helps with selecting the right combination of crate versions, since otherwise 3rd
+//! party tools are needed to select a compatible set of versions.
+//!
+//! ## Features
+//!
+//! The umbrella crate supports no-std builds and can therefore be used in the runtime and node.
+//! There are two main features: `runtime` and `node`. The `runtime` feature enables all `no-std`
+//! crates, while the `node` feature enables all `std` crates. It should be used like any other
+//! crate in the repo, with `default-features = false`.
+//!
+//! For more fine-grained control, additionally, each crate can be enabled selectively. The umbrella
+//! exposes one feature per dependency. For example, if you only want to use the `frame-support`
+//! crate, you can enable the `frame-support` feature.
+//!
+//! The umbrella exposes a few more general features:
+//! - `tuples-96`: Needs to be enabled for runtimes that have more than 64 pallets.
+//! - `serde`: Specifically enable `serde` en/decoding support.
+//! - `experimental`: Experimental enable experimental features - should not yet used in production.
+//! - `with-tracing`: Enable tracing support.
+//! - `try-runtime`, `runtime-benchmarks` and `std`: These follow the standard conventions.
+//! - `runtime`: As described above, enable all `no-std` crates.
+//! - `node`: As described above, enable all `std` crates.
+//! - There does *not* exist a dedicated docs feature. To generate docs, enable the `runtime` and
+//!   `node` feature. For docs.rs the manifest contains specific configuration to make it show up
+//!   all re-exports.
+//!
+//! There is a specific `zepter` check in place to ensure that the features of the umbrella are
+//! correctly configured. This check is run in CI and locally when running `zepter`.
+//!
+//! ## Generation
+//!
+//! The umbrella crate needs to be updated every time when a new crate is added or removed from the
+//! workspace. It is checked in CI by calling its generation script. The generation script is
+//! located in `./scripts/generate-umbrella.py` and needs dependency `cargo_workspace`.
+//!
+//! Example: `python3 scripts/generate-umbrella.py --sdk . --version 1.9.0`
+//!
+//! ## Usage
+//!
+//! > Note: You can see a live example in the `staging-node-cli` and `kitchensink-runtime` crates.
+//!
+//! The umbrella crate can be added to your runtime crate like this:
+//!
+//! `polkadot-sdk = { path = "../../../../umbrella", features = ["runtime"], default-features =
+//! false }`
+//!
+//! or for a node:
+//!
+//! `polkadot-sdk = { path = "../../../../umbrella", features = ["node"], default-features = false
+//! }`
+//!
+//! In the code, it is then possible to bring all dependencies into scope via:
+//!
+//! `use polkadot_sdk::*;`
+//!
+//! ### Known Issues
+//!
+//! The only known issue so far is the fact that the `use` statement brings the dependencies only
+//! into the outer module scope - not the global crate scope. For example, the following code would
+//! need to be adjusted:
+//!
+//! ```rust
+//! use polkadot_sdk::*;
+//!
+//! mod foo {
+//!    // This does sadly not compile:
+//!    frame_support::parameter_types! { }
+//!
+//!    // Instead, we need to do this (or add an equivalent `use` statement):
+//!    polkadot_sdk::frame_support::parameter_types! { }
+//! }
+//! ```
+//!
+//! Apart from this, no issues are known. There could be some bugs with how macros locate their own
+//! re-exports. Please compile issues that arise from using this crate.
+//!
+//! ## Dependencies
+//!
+//! The umbrella crate re-exports all published crates, with a few exceptions:
+//! - Runtime crates like `rococo-runtime` etc are not exported. This otherwise leads to very weird
+//!   compile errors and should not be needed anyway.
+//! - Example and fuzzing crates are not exported. This is currently detected by checking the name
+//!   of the crate for these magic words. In the future, it will utilize custom metadata, as it is
+//!   done in the `rococo-runtime` crate.
+//! - The umbrella crate itself. Should be obvious :)
diff --git a/polkadot/runtime/parachains/src/inclusion/mod.rs b/polkadot/runtime/parachains/src/inclusion/mod.rs
index 31befefa32201b4bf343301c2956abcfbfb6a896..0c7274984085835e69e2b06b49e44f0ee7cc2e85 100644
--- a/polkadot/runtime/parachains/src/inclusion/mod.rs
+++ b/polkadot/runtime/parachains/src/inclusion/mod.rs
@@ -421,6 +421,7 @@ impl From<hrmp::OutboundHrmpAcceptanceErr> for AcceptanceCheckErr {
 /// An error returned by [`Pallet::check_upward_messages`] that indicates a violation of one of
 /// acceptance criteria rules.
 #[cfg_attr(test, derive(PartialEq))]
+#[allow(dead_code)]
 pub(crate) enum UmpAcceptanceCheckErr {
 	/// The maximal number of messages that can be submitted in one batch was exceeded.
 	MoreMessagesThanPermitted { sent: u32, permitted: u32 },
diff --git a/prdoc/pr_3935.prdoc b/prdoc/pr_3935.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..93b0fba5d99b47fa918a1100e644ea32f5cc4aa8
--- /dev/null
+++ b/prdoc/pr_3935.prdoc
@@ -0,0 +1,30 @@
+title: "Introduce Polkadot-SDK umbrella crate"
+
+doc:
+  - audience: Runtime Dev
+    description: |
+      Introduces a new "umbrella" crate that re-exports all published crates of the Polkadot-SDK.
+      This helps developers to select a valid set of versions for all underlying dependencies.
+
+      You can now use this create and remove lots of dependencies from your runtime and node crates.
+      The `staging-node-cli` and `kitchensink-runtime` both adopt this pattern as an example.
+
+      Full docs in `docs/sdk/src/reference_docs/umbrella_crate.rs`.
+
+crates:
+  - name: cumulus-pallet-parachain-system
+    bump: patch
+  - name: sc-chain-spec-derive
+    bump: patch
+  - name: frame-election-provider-solution-type
+    bump: patch
+  - name: pallet-staking-reward-curve
+    bump: patch
+  - name: frame-support-procedural-tools
+    bump: patch
+  - name: sp-api-proc-macro
+    bump: patch
+  - name: polkadot-runtime-parachains
+    bump: patch
+  - name: polkadot-sdk
+    bump: major
diff --git a/scripts/generate-umbrella.py b/scripts/generate-umbrella.py
new file mode 100644
index 0000000000000000000000000000000000000000..0bdf160e63b176c6981ec18d8b72ee8782dd0e8b
--- /dev/null
+++ b/scripts/generate-umbrella.py
@@ -0,0 +1,204 @@
+"""
+
+Creates the Polkadot-SDK umbrella crate that re-exports all other crates.
+
+This re-creates the `umbrella/` folder. Ensure that it does not contain any changes you want to keep.
+
+Usage:
+    python3 polkadot-sdk-umbrella-crate.py --sdk <path> --version <version>
+
+Example:
+	python3 polkadot-sdk-umbrella-crate.py --sdk ../polkadot-sdk --version 1.11.0
+"""
+
+import argparse
+import os
+import re
+import toml
+import shutil
+
+from cargo_workspace import Workspace
+
+"""
+Crate names that should be excluded from the umbrella crate.
+"""
+def exclude(crate):
+	name = crate.name
+	if crate.metadata.get("polkadot-sdk.skip-umbrella", False):
+		return True
+
+	# No fuzzers or examples:
+	if "example" in name or name.endswith("fuzzer"):
+		return True
+	# No runtime crates:
+	if name.endswith("-runtime"):
+		# Note: this is a bit hacky. We should use custom crate metadata instead.
+		return name != "sp-runtime" and name != "bp-runtime" and name != "frame-try-runtime"
+
+	return False
+
+def main(path, version):
+	delete_umbrella(path)
+	workspace = Workspace.from_path(path)
+	print(f'Indexed {workspace}')
+
+	std_crates = [] # name -> path. use list for sorting
+	nostd_crates = []
+	for crate in workspace.crates:
+		if crate.name == 'polkadot-sdk':
+			continue
+		if not crate.publish:
+			print(f"Skipping {crate.name} as it is not published")
+			continue
+
+		lib_path = os.path.dirname(crate.abs_path)
+		manifest_path = os.path.join(lib_path, "Cargo.toml")
+		lib_path = os.path.join(lib_path, "src", "lib.rs")
+		path = os.path.dirname(crate.rel_path)
+
+		# Guess which crates support no_std. Proc-macro crates are always no_std:
+		with open(manifest_path, "r") as f:
+			manifest = toml.load(f)
+			if 'lib' in manifest and 'proc-macro' in manifest['lib']:
+				if manifest['lib']['proc-macro']:
+					nostd_crates.append((crate, path))
+					continue
+		
+		# Crates without a lib.rs cannot be no_std
+		if not os.path.exists(lib_path):
+			print(f"Skipping {crate.name} as it does not have a 'src/lib.rs'")
+			continue
+		if exclude(crate):
+			print(f"Skipping {crate.name} as it is in the exclude list")
+			continue
+
+		# No search for a no_std attribute:
+		with open(lib_path, "r") as f:
+			content = f.read()
+			if "#![no_std]" in content or '#![cfg_attr(not(feature = "std"), no_std)]' in content:
+				nostd_crates.append((crate, path))
+			elif 'no_std' in content:
+				raise Exception(f"Found 'no_std' in {lib_path} without knowing how to handle it")
+			else:
+				std_crates.append((crate, path))
+
+	# Sort by name
+	std_crates.sort(key=lambda x: x[0].name)
+	nostd_crates.sort(key=lambda x: x[0].name)
+	all_crates = std_crates + nostd_crates
+	all_crates.sort(key=lambda x: x[0].name)
+	dependencies = {}
+
+	for (crate, path) in nostd_crates:
+		dependencies[crate.name] = {"path": f"../{path}", "default-features": False, "optional": True}
+	
+	for (crate, path) in std_crates:
+		dependencies[crate.name] = {"path": f"../{path}", "default-features": False, "optional": True}
+	
+	# The empty features are filled by Zepter
+	features = {
+		"default": [ "std" ],
+		"std": [],
+		"runtime-benchmarks": [],
+		"try-runtime": [],
+		"serde": [],
+		"experimental": [],
+		"with-tracing": [],
+		"runtime": list([f"{d.name}" for d, _ in nostd_crates]),
+		"node": ["std"] + list([f"{d.name}" for d, _ in std_crates]),
+		"tuples-96": [],
+	}
+
+	manifest = {
+		"package": {
+			"name": "polkadot-sdk",
+			"version": version,
+			"edition": { "workspace": True },
+			"authors": { "workspace": True },
+			"description": "Polkadot SDK umbrella crate.",
+			"license": "Apache-2.0",
+			"metadata": { "docs": { "rs": {
+				"features": ["runtime", "node"],
+				"targets": ["x86_64-unknown-linux-gnu"]
+			}}}
+		},
+		"dependencies": dependencies,
+		"features": features,
+	}
+
+	umbrella_dir = os.path.join(workspace.path, "umbrella")
+	manifest_path = os.path.join(umbrella_dir, "Cargo.toml")
+	lib_path = os.path.join(umbrella_dir, "src", "lib.rs")
+	# create all dir
+	os.makedirs(os.path.dirname(lib_path), exist_ok=True)
+	# Write the manifest
+	with open(manifest_path, "w") as f:
+		toml_manifest = toml.dumps(manifest)
+		f.write(toml_manifest)
+		print(f"Wrote {manifest_path}")
+	# and the lib.rs
+	with open(lib_path, "w") as f:
+		f.write('''// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+//! Polkadot SDK umbrella crate re-exporting all other published crates.
+//!
+//! This helps to set a single version number for all your dependencies. Docs are in the
+//! `polkadot-sdk-docs` crate.
+
+// This file is auto-generated and checked by the CI.  You can edit it manually, but it must be
+// exactly the way that the CI expects it.
+''')
+
+		for crate, _ in all_crates:
+			use = crate.name.replace("-", "_")
+			desc = crate.description if crate.description.endswith(".") else crate.description + "."
+			f.write(f'\n/// {desc}')
+			f.write(f'\n#[cfg(feature = "{crate.name}")]\n')
+			f.write(f"pub use {use};\n")
+		
+		print(f"Wrote {lib_path}")
+	
+	add_to_workspace(workspace.path)
+
+"""
+Delete the umbrella folder and remove the umbrella crate from the workspace.
+"""
+def delete_umbrella(path):
+	umbrella_dir = os.path.join(path, "umbrella")
+	# remove the umbrella crate from the workspace
+	manifest = os.path.join(path, "Cargo.toml")
+	manifest = open(manifest, "r").read()
+	manifest = re.sub(r'\s+"umbrella",\n', "", manifest)
+	with open(os.path.join(path, "Cargo.toml"), "w") as f:
+		f.write(manifest)
+	if os.path.exists(umbrella_dir):
+		print(f"Deleting {umbrella_dir}")
+		shutil.rmtree(umbrella_dir)
+
+"""
+Create the umbrella crate and add it to the workspace.
+"""
+def add_to_workspace(path):
+	manifest = os.path.join(path, "Cargo.toml")
+	manifest = open(manifest, "r").read()
+	manifest = re.sub(r'^members = \[', 'members = [\n        "umbrella",', manifest, flags=re.M)
+	with open(os.path.join(path, "Cargo.toml"), "w") as f:
+		f.write(manifest)
+	
+	os.chdir(path) # hack
+	os.system("cargo metadata --format-version 1 > /dev/null") # update the lockfile
+	os.system(f"zepter") # enable the features
+	os.system(f"taplo format --config .config/taplo.toml Cargo.toml umbrella/Cargo.toml")
+
+def parse_args():
+	parser = argparse.ArgumentParser(description="Create a polkadot-sdk crate")
+	parser.add_argument("--sdk", type=str, default="polkadot-sdk", help="Path to the polkadot-sdk crate")
+	parser.add_argument("--version", type=str, help="Version of the polkadot-sdk crate")
+	return parser.parse_args()
+
+if __name__ == "__main__":
+	args = parse_args()
+	main(args.sdk, args.version)
diff --git a/substrate/bin/node/cli/Cargo.toml b/substrate/bin/node/cli/Cargo.toml
index 9c49fd7b3621fe7a3a64962b87480f5bd6944770..929cd6a29e3889dbd93d6e31277406cf61176114 100644
--- a/substrate/bin/node/cli/Cargo.toml
+++ b/substrate/bin/node/cli/Cargo.toml
@@ -23,13 +23,10 @@ wasm-opt = false
 targets = ["x86_64-unknown-linux-gnu"]
 
 [badges]
-travis-ci = { repository = "paritytech/substrate" }
 maintenance = { status = "actively-developed" }
-is-it-maintained-issue-resolution = { repository = "paritytech/substrate" }
-is-it-maintained-open-issues = { repository = "paritytech/substrate" }
+is-it-maintained-issue-resolution = { repository = "paritytech/polkadot-sdk" }
+is-it-maintained-open-issues = { repository = "paritytech/polkadot-sdk" }
 
-# The same node binary as the `substrate` (defined in the workspace `Cargo.toml`) binary,
-# but just exposed by this crate here.
 [[bin]]
 name = "substrate-node"
 path = "bin/main.rs"
@@ -40,7 +37,7 @@ crate-type = ["cdylib", "rlib"]
 
 [dependencies]
 # third-party dependencies
-array-bytes = "6.2.2"
+array-bytes = "6.1"
 clap = { version = "4.5.3", features = ["derive"], optional = true }
 codec = { package = "parity-scale-codec", version = "3.6.12" }
 serde = { features = ["derive"], workspace = true, default-features = true }
@@ -48,88 +45,18 @@ jsonrpsee = { version = "0.22", features = ["server"] }
 futures = "0.3.30"
 log = { workspace = true, default-features = true }
 rand = "0.8"
+serde_json = { workspace = true, default-features = true }
+
+# The Polkadot-SDK:
+polkadot-sdk = { path = "../../../../umbrella", features = ["node"] }
 
-# primitives
-sp-authority-discovery = { path = "../../../primitives/authority-discovery" }
-sp-consensus-babe = { path = "../../../primitives/consensus/babe" }
-beefy-primitives = { package = "sp-consensus-beefy", path = "../../../primitives/consensus/beefy" }
-grandpa-primitives = { package = "sp-consensus-grandpa", path = "../../../primitives/consensus/grandpa" }
-sp-api = { path = "../../../primitives/api" }
-sp-core = { path = "../../../primitives/core" }
-sp-runtime = { path = "../../../primitives/runtime" }
-sp-timestamp = { path = "../../../primitives/timestamp" }
-sp-genesis-builder = { path = "../../../primitives/genesis-builder" }
-sp-inherents = { path = "../../../primitives/inherents" }
-sp-keyring = { path = "../../../primitives/keyring" }
-sp-keystore = { path = "../../../primitives/keystore" }
-sp-consensus = { path = "../../../primitives/consensus/common" }
-sp-transaction-storage-proof = { path = "../../../primitives/transaction-storage-proof" }
-sp-io = { path = "../../../primitives/io" }
-sp-mixnet = { path = "../../../primitives/mixnet" }
-sp-mmr-primitives = { path = "../../../primitives/merkle-mountain-range" }
-sp-statement-store = { path = "../../../primitives/statement-store" }
-
-# client dependencies
-sc-client-api = { path = "../../../client/api" }
-sc-chain-spec = { path = "../../../client/chain-spec" }
-sc-consensus = { path = "../../../client/consensus/common" }
-sc-transaction-pool = { path = "../../../client/transaction-pool" }
-sc-transaction-pool-api = { path = "../../../client/transaction-pool/api" }
-sc-statement-store = { path = "../../../client/statement-store" }
-sc-network = { path = "../../../client/network" }
-sc-network-common = { path = "../../../client/network/common" }
-sc-network-sync = { path = "../../../client/network/sync" }
-sc-network-statement = { path = "../../../client/network/statement" }
-sc-consensus-slots = { path = "../../../client/consensus/slots" }
-sc-consensus-babe = { path = "../../../client/consensus/babe" }
-beefy = { package = "sc-consensus-beefy", path = "../../../client/consensus/beefy" }
-grandpa = { package = "sc-consensus-grandpa", path = "../../../client/consensus/grandpa" }
-mmr-gadget = { path = "../../../client/merkle-mountain-range" }
-sc-rpc = { path = "../../../client/rpc" }
-sc-basic-authorship = { path = "../../../client/basic-authorship" }
-sc-service = { path = "../../../client/service", default-features = false }
-sc-telemetry = { path = "../../../client/telemetry" }
-sc-executor = { path = "../../../client/executor" }
-sc-authority-discovery = { path = "../../../client/authority-discovery" }
-sc-mixnet = { path = "../../../client/mixnet" }
-sc-sync-state-rpc = { path = "../../../client/sync-state-rpc" }
-sc-sysinfo = { path = "../../../client/sysinfo" }
-sc-storage-monitor = { path = "../../../client/storage-monitor" }
-sc-offchain = { path = "../../../client/offchain" }
-
-# frame dependencies
-frame-benchmarking = { path = "../../../frame/benchmarking" }
-frame-metadata-hash-extension = { path = "../../../frame/metadata-hash-extension" }
-frame-system = { path = "../../../frame/system" }
-frame-system-rpc-runtime-api = { path = "../../../frame/system/rpc/runtime-api" }
-pallet-assets = { path = "../../../frame/assets" }
-pallet-asset-conversion-tx-payment = { path = "../../../frame/transaction-payment/asset-conversion-tx-payment" }
-pallet-asset-tx-payment = { path = "../../../frame/transaction-payment/asset-tx-payment" }
-pallet-im-online = { path = "../../../frame/im-online", default-features = false }
-pallet-skip-feeless-payment = { path = "../../../frame/transaction-payment/skip-feeless-payment", default-features = false }
-
-# node-specific dependencies
+# Shared code between the staging node and kitchensink runtime:
 kitchensink-runtime = { path = "../runtime" }
 node-rpc = { path = "../rpc" }
 node-primitives = { path = "../primitives" }
-
-# CLI-specific dependencies
-sc-cli = { path = "../../../client/cli", optional = true }
-frame-benchmarking-cli = { path = "../../../utils/frame/benchmarking-cli", optional = true }
 node-inspect = { package = "staging-node-inspect", path = "../inspect", optional = true }
-serde_json = { workspace = true, default-features = true }
 
 [dev-dependencies]
-sc-keystore = { path = "../../../client/keystore" }
-sc-client-db = { path = "../../../client/db" }
-sc-consensus = { path = "../../../client/consensus/common" }
-sc-consensus-babe = { path = "../../../client/consensus/babe" }
-sc-consensus-epochs = { path = "../../../client/consensus/epochs" }
-sc-service-test = { path = "../../../client/service/test" }
-sc-block-builder = { path = "../../../client/block-builder" }
-sp-tracing = { path = "../../../primitives/tracing" }
-sp-blockchain = { path = "../../../primitives/blockchain" }
-sp-crypto-hashing = { path = "../../../primitives/crypto/hashing" }
 futures = "0.3.30"
 tempfile = "3.1.0"
 assert_cmd = "2.0.2"
@@ -141,92 +68,39 @@ criterion = { version = "0.5.1", features = ["async_tokio"] }
 tokio = { version = "1.22.0", features = ["macros", "parking_lot", "time"] }
 tokio-util = { version = "0.7.4", features = ["compat"] }
 wait-timeout = "0.2"
-substrate-rpc-client = { path = "../../../utils/frame/rpc/client" }
-pallet-timestamp = { path = "../../../frame/timestamp" }
-substrate-cli-test-utils = { path = "../../../test-utils/cli" }
-
 wat = "1.0"
-frame-support = { path = "../../../frame/support" }
-node-testing = { path = "../testing" }
-pallet-balances = { path = "../../../frame/balances" }
-pallet-contracts = { path = "../../../frame/contracts" }
-pallet-glutton = { path = "../../../frame/glutton" }
-pallet-sudo = { path = "../../../frame/sudo" }
-pallet-treasury = { path = "../../../frame/treasury" }
-pallet-transaction-payment = { path = "../../../frame/transaction-payment" }
-sp-application-crypto = { path = "../../../primitives/application-crypto" }
-pallet-root-testing = { path = "../../../frame/root-testing" }
-sp-consensus-babe = { path = "../../../primitives/consensus/babe" }
-sp-externalities = { path = "../../../primitives/externalities" }
-sp-keyring = { path = "../../../primitives/keyring" }
-sp-runtime = { path = "../../../primitives/runtime" }
 serde_json = { workspace = true, default-features = true }
 scale-info = { version = "2.11.1", features = ["derive", "serde"] }
-sp-trie = { path = "../../../primitives/trie" }
-sp-state-machine = { path = "../../../primitives/state-machine" }
+
+# These testing-only dependencies are not exported by the Polkadot-SDK crate:
+node-testing = { path = "../testing" }
+substrate-cli-test-utils = { path = "../../../test-utils/cli" }
+sc-service-test = { path = "../../../client/service/test" }
 
 [build-dependencies]
 clap = { version = "4.5.3", optional = true }
 clap_complete = { version = "4.0.2", optional = true }
+
 node-inspect = { package = "staging-node-inspect", path = "../inspect", optional = true }
-frame-benchmarking-cli = { path = "../../../utils/frame/benchmarking-cli", optional = true }
-substrate-build-script-utils = { path = "../../../utils/build-script-utils", optional = true }
-sc-cli = { path = "../../../client/cli", optional = true }
-pallet-balances = { path = "../../../frame/balances" }
-sc-storage-monitor = { path = "../../../client/storage-monitor" }
+
+polkadot-sdk = { path = "../../../../umbrella", features = ["frame-benchmarking-cli", "sc-cli", "sc-storage-monitor", "substrate-build-script-utils"], optional = true }
 
 [features]
 default = ["cli"]
 cli = [
 	"clap",
 	"clap_complete",
-	"frame-benchmarking-cli",
 	"node-inspect",
-	"sc-cli",
-	"sc-service/rocksdb",
-	"substrate-build-script-utils",
+	"polkadot-sdk",
 ]
 runtime-benchmarks = [
-	"frame-benchmarking-cli/runtime-benchmarks",
-	"frame-benchmarking/runtime-benchmarks",
-	"frame-support/runtime-benchmarks",
-	"frame-system/runtime-benchmarks",
 	"kitchensink-runtime/runtime-benchmarks",
 	"node-inspect?/runtime-benchmarks",
-	"pallet-asset-tx-payment/runtime-benchmarks",
-	"pallet-assets/runtime-benchmarks",
-	"pallet-balances/runtime-benchmarks",
-	"pallet-contracts/runtime-benchmarks",
-	"pallet-glutton/runtime-benchmarks",
-	"pallet-im-online/runtime-benchmarks",
-	"pallet-skip-feeless-payment/runtime-benchmarks",
-	"pallet-sudo/runtime-benchmarks",
-	"pallet-timestamp/runtime-benchmarks",
-	"pallet-treasury/runtime-benchmarks",
-	"sc-client-db/runtime-benchmarks",
-	"sc-service/runtime-benchmarks",
-	"sp-runtime/runtime-benchmarks",
+	"polkadot-sdk/runtime-benchmarks",
 ]
-# Enable features that allow the runtime to be tried and debugged. Name might be subject to change
-# in the near future.
 try-runtime = [
-	"frame-support/try-runtime",
-	"frame-system/try-runtime",
 	"kitchensink-runtime/try-runtime",
-	"pallet-asset-conversion-tx-payment/try-runtime",
-	"pallet-asset-tx-payment/try-runtime",
-	"pallet-assets/try-runtime",
-	"pallet-balances/try-runtime",
-	"pallet-contracts/try-runtime",
-	"pallet-glutton/try-runtime",
-	"pallet-im-online/try-runtime",
-	"pallet-root-testing/try-runtime",
-	"pallet-skip-feeless-payment/try-runtime",
-	"pallet-sudo/try-runtime",
-	"pallet-timestamp/try-runtime",
-	"pallet-transaction-payment/try-runtime",
-	"pallet-treasury/try-runtime",
-	"sp-runtime/try-runtime",
+	"polkadot-sdk/try-runtime",
 	"substrate-cli-test-utils/try-runtime",
 ]
 
diff --git a/substrate/bin/node/cli/benches/block_production.rs b/substrate/bin/node/cli/benches/block_production.rs
index ef7ae4fdf26308827e2745d4cb54c8fe21fbc14f..c16b25187e5f58a218fa22fc55cfdc58a214c6bf 100644
--- a/substrate/bin/node/cli/benches/block_production.rs
+++ b/substrate/bin/node/cli/benches/block_production.rs
@@ -16,6 +16,8 @@
 // You should have received a copy of the GNU General Public License
 // along with this program. If not, see <https://www.gnu.org/licenses/>.
 
+use polkadot_sdk::*;
+
 use criterion::{criterion_group, criterion_main, BatchSize, Criterion, Throughput};
 
 use kitchensink_runtime::{constants::currency::*, BalancesCall};
diff --git a/substrate/bin/node/cli/benches/executor.rs b/substrate/bin/node/cli/benches/executor.rs
index 30b52b9ecf6d31971ce1be4412f0992e507f11bc..fa4da5c13d4344208c6a51067fbf78e380923a82 100644
--- a/substrate/bin/node/cli/benches/executor.rs
+++ b/substrate/bin/node/cli/benches/executor.rs
@@ -15,6 +15,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+use polkadot_sdk::*;
+
 use codec::{Decode, Encode};
 use criterion::{criterion_group, criterion_main, BatchSize, Criterion};
 use frame_support::Hashable;
diff --git a/substrate/bin/node/cli/benches/transaction_pool.rs b/substrate/bin/node/cli/benches/transaction_pool.rs
index c4488415b98343a15c8c81eb2ff164db4b36fa29..6618f4b1132e031cd7e6c69451e3ff8997e86684 100644
--- a/substrate/bin/node/cli/benches/transaction_pool.rs
+++ b/substrate/bin/node/cli/benches/transaction_pool.rs
@@ -16,6 +16,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program. If not, see <https://www.gnu.org/licenses/>.
 
+use polkadot_sdk::*;
 use std::time::Duration;
 
 use criterion::{criterion_group, criterion_main, BatchSize, Criterion, Throughput};
diff --git a/substrate/bin/node/cli/bin/main.rs b/substrate/bin/node/cli/bin/main.rs
index ccc7d7b6b112558832549bf7e5435f68ac0fe944..b18d08880556093319cad2dfd3faa789fae819b1 100644
--- a/substrate/bin/node/cli/bin/main.rs
+++ b/substrate/bin/node/cli/bin/main.rs
@@ -20,6 +20,7 @@
 
 #![warn(missing_docs)]
 
+use polkadot_sdk::*;
 use staging_node_cli as node_cli;
 
 fn main() -> sc_cli::Result<()> {
diff --git a/substrate/bin/node/cli/build.rs b/substrate/bin/node/cli/build.rs
index 033f1e3349e6fae1f062f9a075dcb66295aab22d..c25d15de057425458230f48be270ca7ad09d895e 100644
--- a/substrate/bin/node/cli/build.rs
+++ b/substrate/bin/node/cli/build.rs
@@ -27,8 +27,10 @@ mod cli {
 
 	use clap::{CommandFactory, ValueEnum};
 	use clap_complete::{generate_to, Shell};
+	use polkadot_sdk::substrate_build_script_utils::{
+		generate_cargo_keys, rerun_if_git_head_changed,
+	};
 	use std::{env, fs, path::Path};
-	use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed};
 
 	pub fn main() {
 		build_shell_completion();
diff --git a/substrate/bin/node/cli/src/benchmarking.rs b/substrate/bin/node/cli/src/benchmarking.rs
index 333f855f2d7bb876d7768784b60dfa21e1d8d708..a2b28a0f317de4fcc74b963d3ccb1c026ddfa380 100644
--- a/substrate/bin/node/cli/src/benchmarking.rs
+++ b/substrate/bin/node/cli/src/benchmarking.rs
@@ -22,6 +22,8 @@
 
 use crate::service::{create_extrinsic, FullClient};
 
+use polkadot_sdk::*;
+
 use kitchensink_runtime::{BalancesCall, SystemCall};
 use node_primitives::{AccountId, Balance};
 use sc_cli::Result;
diff --git a/substrate/bin/node/cli/src/chain_spec.rs b/substrate/bin/node/cli/src/chain_spec.rs
index d48d4a50f85f2672d5e65c639a6a0b200c06756c..a3b536e54342da87c1357253787bc46b8881f547 100644
--- a/substrate/bin/node/cli/src/chain_spec.rs
+++ b/substrate/bin/node/cli/src/chain_spec.rs
@@ -18,8 +18,8 @@
 
 //! Substrate chain configurations.
 
-use beefy_primitives::ecdsa_crypto::AuthorityId as BeefyId;
-use grandpa_primitives::AuthorityId as GrandpaId;
+use polkadot_sdk::*;
+
 use kitchensink_runtime::{
 	constants::currency::*, wasm_binary_unwrap, Block, MaxNominations, SessionKeys, StakerStatus,
 };
@@ -30,6 +30,8 @@ use sc_telemetry::TelemetryEndpoints;
 use serde::{Deserialize, Serialize};
 use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId;
 use sp_consensus_babe::AuthorityId as BabeId;
+use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId;
+use sp_consensus_grandpa::AuthorityId as GrandpaId;
 use sp_core::{crypto::UncheckedInto, sr25519, Pair, Public};
 use sp_mixnet::types::AuthorityId as MixnetId;
 use sp_runtime::{
diff --git a/substrate/bin/node/cli/src/cli.rs b/substrate/bin/node/cli/src/cli.rs
index 1d1af6e03e9e6eb57055b416038ee97ba95f3e3a..c0dcacb2e4b451990ea08c0c29fd1f92f89b3eaa 100644
--- a/substrate/bin/node/cli/src/cli.rs
+++ b/substrate/bin/node/cli/src/cli.rs
@@ -16,6 +16,8 @@
 // You should have received a copy of the GNU General Public License
 // along with this program. If not, see <https://www.gnu.org/licenses/>.
 
+use polkadot_sdk::*;
+
 /// An overarching CLI command definition.
 #[derive(Debug, clap::Parser)]
 pub struct Cli {
diff --git a/substrate/bin/node/cli/src/command.rs b/substrate/bin/node/cli/src/command.rs
index d869b77e9122859550232136d3907e2f33a4eda3..51fbf0904cf8c303a6af3bed0c24587952723cd0 100644
--- a/substrate/bin/node/cli/src/command.rs
+++ b/substrate/bin/node/cli/src/command.rs
@@ -16,6 +16,8 @@
 // You should have received a copy of the GNU General Public License
 // along with this program. If not, see <https://www.gnu.org/licenses/>.
 
+use polkadot_sdk::*;
+
 use super::benchmarking::{inherent_benchmark_data, RemarkBuilder, TransferKeepAliveBuilder};
 use crate::{
 	chain_spec, service,
@@ -215,7 +217,7 @@ pub fn run() -> Result<()> {
 					new_partial(&config, None)?;
 				let aux_revert = Box::new(|client: Arc<FullClient>, backend, blocks| {
 					sc_consensus_babe::revert(client.clone(), backend, blocks)?;
-					grandpa::revert(client, blocks)?;
+					sc_consensus_grandpa::revert(client, blocks)?;
 					Ok(())
 				});
 				Ok((cmd.run(client, backend, Some(aux_revert)), task_manager))
diff --git a/substrate/bin/node/cli/src/service.rs b/substrate/bin/node/cli/src/service.rs
index 938d73d91b1fbf091c48a6910eb4d2308e38012e..84903bd9b872322c75346a74195aa916d5cc4843 100644
--- a/substrate/bin/node/cli/src/service.rs
+++ b/substrate/bin/node/cli/src/service.rs
@@ -20,6 +20,8 @@
 
 //! Service implementation. Specialized wrapper over substrate service.
 
+use polkadot_sdk::{sc_consensus_beefy as beefy, sc_consensus_grandpa as grandpa, *};
+
 use crate::Cli;
 use codec::Encode;
 use frame_benchmarking_cli::SUBSTRATE_REFERENCE_HARDWARE;
@@ -670,7 +672,7 @@ pub fn new_full_base<N: NetworkBackend<Block, <Block as BlockT>::Hash>>(
 	let beefy_params = beefy::BeefyParams {
 		client: client.clone(),
 		backend: backend.clone(),
-		payload_provider: beefy_primitives::mmr::MmrRootProvider::new(client.clone()),
+		payload_provider: sp_consensus_beefy::mmr::MmrRootProvider::new(client.clone()),
 		runtime: client.clone(),
 		key_store: keystore.clone(),
 		network_params,
@@ -844,6 +846,7 @@ mod tests {
 		Address, BalancesCall, RuntimeCall, UncheckedExtrinsic,
 	};
 	use node_primitives::{Block, DigestItem, Signature};
+	use polkadot_sdk::*;
 	use sc_client_api::BlockBackend;
 	use sc_consensus::{BlockImport, BlockImportParams, ForkChoiceStrategy};
 	use sc_consensus_babe::{BabeIntermediate, CompatibleDigestItem, INTERMEDIATE_KEY};
diff --git a/substrate/bin/node/cli/tests/basic.rs b/substrate/bin/node/cli/tests/basic.rs
index a9eea84d926000fafce766d3aa2889919ef5c376..b1f737ce399b32de652abd8c26bad1811727fcff 100644
--- a/substrate/bin/node/cli/tests/basic.rs
+++ b/substrate/bin/node/cli/tests/basic.rs
@@ -22,6 +22,7 @@ use frame_support::{
 	weights::Weight,
 };
 use frame_system::{self, AccountInfo, EventRecord, Phase};
+use polkadot_sdk::*;
 use sp_core::{storage::well_known_keys, traits::Externalities};
 use sp_runtime::{
 	traits::Hash as HashT, transaction_validity::InvalidTransaction, ApplyExtrinsicResult,
diff --git a/substrate/bin/node/cli/tests/common.rs b/substrate/bin/node/cli/tests/common.rs
index 8de87c8b76e68f5ab9fa90e0ebdc4812f6cdb463..95583395f73403959f20162c543617a84d2741fa 100644
--- a/substrate/bin/node/cli/tests/common.rs
+++ b/substrate/bin/node/cli/tests/common.rs
@@ -18,6 +18,7 @@
 use codec::{Decode, Encode};
 use frame_support::Hashable;
 use frame_system::offchain::AppCrypto;
+use polkadot_sdk::*;
 use sc_executor::error::Result;
 use sp_consensus_babe::{
 	digests::{PreDigest, SecondaryPlainPreDigest},
@@ -48,7 +49,7 @@ pub const TEST_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"test");
 pub mod sr25519 {
 	mod app_sr25519 {
 		use super::super::TEST_KEY_TYPE_ID;
-		use sp_application_crypto::{app_crypto, sr25519};
+		use polkadot_sdk::sp_application_crypto::{app_crypto, sr25519};
 		app_crypto!(sr25519, TEST_KEY_TYPE_ID);
 	}
 
diff --git a/substrate/bin/node/cli/tests/fees.rs b/substrate/bin/node/cli/tests/fees.rs
index 69c96bf63a6d8d7b7c24746cdf5c3c48b526c12e..9f82338b4fb03bbe36d09894add142027e419f7e 100644
--- a/substrate/bin/node/cli/tests/fees.rs
+++ b/substrate/bin/node/cli/tests/fees.rs
@@ -28,6 +28,7 @@ use kitchensink_runtime::{
 };
 use node_primitives::Balance;
 use node_testing::keyring::*;
+use polkadot_sdk::*;
 use sp_runtime::{traits::One, Perbill};
 
 pub mod common;
diff --git a/substrate/bin/node/cli/tests/submit_transaction.rs b/substrate/bin/node/cli/tests/submit_transaction.rs
index 5cbb0103d471b96902bb341bcd796e6cf09eac76..18826e7e90a784e2b644b88024a8d83e3e15f3c1 100644
--- a/substrate/bin/node/cli/tests/submit_transaction.rs
+++ b/substrate/bin/node/cli/tests/submit_transaction.rs
@@ -18,6 +18,7 @@
 use codec::Decode;
 use frame_system::offchain::{SendSignedTransaction, Signer, SubmitTransaction};
 use kitchensink_runtime::{Executive, Indices, Runtime, UncheckedExtrinsic};
+use polkadot_sdk::*;
 use sp_application_crypto::AppCrypto;
 use sp_core::offchain::{testing::TestTransactionPoolExt, TransactionPoolExt};
 use sp_keyring::sr25519::Keyring::Alice;
diff --git a/substrate/bin/node/runtime/Cargo.toml b/substrate/bin/node/runtime/Cargo.toml
index a96576e17e19f1db8aceccb25f2fd4068470c1bf..e8cc7b3482b66ef8e850871670430b23f2923396 100644
--- a/substrate/bin/node/runtime/Cargo.toml
+++ b/substrate/bin/node/runtime/Cargo.toml
@@ -31,411 +31,44 @@ serde_json = { features = ["alloc", "arbitrary_precision"], workspace = true }
 # pallet-asset-conversion: turn on "num-traits" feature
 primitive-types = { version = "0.12.0", default-features = false, features = ["codec", "num-traits", "scale-info"] }
 
-# primitives
-sp-authority-discovery = { path = "../../../primitives/authority-discovery", default-features = false, features = ["serde"] }
-sp-consensus-babe = { path = "../../../primitives/consensus/babe", default-features = false, features = ["serde"] }
-sp-consensus-beefy = { path = "../../../primitives/consensus/beefy", default-features = false }
-sp-consensus-grandpa = { path = "../../../primitives/consensus/grandpa", default-features = false, features = ["serde"] }
-sp-block-builder = { path = "../../../primitives/block-builder", default-features = false }
-sp-genesis-builder = { default-features = false, path = "../../../primitives/genesis-builder" }
-sp-inherents = { path = "../../../primitives/inherents", default-features = false }
+polkadot-sdk = { path = "../../../../umbrella", features = ["runtime", "tuples-96"], default-features = false }
+
+# shared code between runtime and node
 node-primitives = { path = "../primitives", default-features = false }
-sp-mixnet = { path = "../../../primitives/mixnet", default-features = false }
-sp-offchain = { path = "../../../primitives/offchain", default-features = false }
-sp-core = { path = "../../../primitives/core", default-features = false, features = ["serde"] }
-sp-std = { path = "../../../primitives/std", default-features = false }
-sp-api = { path = "../../../primitives/api", default-features = false }
-sp-runtime = { path = "../../../primitives/runtime", default-features = false, features = ["serde"] }
-sp-staking = { path = "../../../primitives/staking", default-features = false, features = ["serde"] }
-sp-storage = { path = "../../../primitives/storage", default-features = false }
-sp-session = { path = "../../../primitives/session", default-features = false }
-sp-transaction-pool = { path = "../../../primitives/transaction-pool", default-features = false }
-sp-statement-store = { path = "../../../primitives/statement-store", default-features = false, features = ["serde"] }
-sp-version = { path = "../../../primitives/version", default-features = false, features = ["serde"] }
-sp-io = { path = "../../../primitives/io", default-features = false }
 
-# frame dependencies
-frame-executive = { path = "../../../frame/executive", default-features = false }
-frame-benchmarking = { path = "../../../frame/benchmarking", default-features = false }
-frame-benchmarking-pallet-pov = { path = "../../../frame/benchmarking/pov", default-features = false }
-frame-metadata-hash-extension = { path = "../../../frame/metadata-hash-extension", default-features = false }
-frame-support = { path = "../../../frame/support", default-features = false, features = ["experimental", "tuples-96"] }
-frame-system = { path = "../../../frame/system", default-features = false }
-frame-system-benchmarking = { path = "../../../frame/system/benchmarking", default-features = false, optional = true }
-frame-election-provider-support = { path = "../../../frame/election-provider-support", default-features = false }
-frame-system-rpc-runtime-api = { path = "../../../frame/system/rpc/runtime-api", default-features = false }
-frame-try-runtime = { path = "../../../frame/try-runtime", default-features = false, optional = true }
-pallet-alliance = { path = "../../../frame/alliance", default-features = false }
-pallet-asset-conversion = { path = "../../../frame/asset-conversion", default-features = false }
-pallet-asset-conversion-ops = { path = "../../../frame/asset-conversion/ops", default-features = false }
-pallet-asset-rate = { path = "../../../frame/asset-rate", default-features = false }
-pallet-assets = { path = "../../../frame/assets", default-features = false }
-pallet-authority-discovery = { path = "../../../frame/authority-discovery", default-features = false }
-pallet-authorship = { path = "../../../frame/authorship", default-features = false }
-pallet-babe = { path = "../../../frame/babe", default-features = false }
-pallet-bags-list = { path = "../../../frame/bags-list", default-features = false }
-pallet-balances = { path = "../../../frame/balances", default-features = false }
-pallet-beefy = { path = "../../../frame/beefy", default-features = false }
-pallet-beefy-mmr = { path = "../../../frame/beefy-mmr", default-features = false }
-pallet-bounties = { path = "../../../frame/bounties", default-features = false }
-pallet-broker = { path = "../../../frame/broker", default-features = false }
-pallet-child-bounties = { path = "../../../frame/child-bounties", default-features = false }
-pallet-collective = { path = "../../../frame/collective", default-features = false }
-pallet-contracts = { path = "../../../frame/contracts", default-features = false }
-pallet-conviction-voting = { path = "../../../frame/conviction-voting", default-features = false }
-pallet-core-fellowship = { path = "../../../frame/core-fellowship", default-features = false }
-pallet-democracy = { path = "../../../frame/democracy", default-features = false }
-pallet-election-provider-multi-phase = { path = "../../../frame/election-provider-multi-phase", default-features = false }
-pallet-election-provider-support-benchmarking = { path = "../../../frame/election-provider-support/benchmarking", default-features = false, optional = true }
-pallet-elections-phragmen = { path = "../../../frame/elections-phragmen", default-features = false }
-pallet-example-tasks = { path = "../../../frame/examples/tasks", default-features = false }
-pallet-fast-unstake = { path = "../../../frame/fast-unstake", default-features = false }
-pallet-migrations = { path = "../../../frame/migrations", default-features = false }
+# Example pallets that are not published:
 pallet-example-mbm = { path = "../../../frame/examples/multi-block-migrations", default-features = false }
-pallet-nis = { path = "../../../frame/nis", default-features = false }
-pallet-grandpa = { path = "../../../frame/grandpa", default-features = false }
-pallet-im-online = { path = "../../../frame/im-online", default-features = false }
-pallet-indices = { path = "../../../frame/indices", default-features = false }
-pallet-identity = { path = "../../../frame/identity", default-features = false }
-pallet-lottery = { path = "../../../frame/lottery", default-features = false }
-pallet-membership = { path = "../../../frame/membership", default-features = false }
-pallet-message-queue = { path = "../../../frame/message-queue", default-features = false }
-pallet-mixnet = { path = "../../../frame/mixnet", default-features = false }
-pallet-mmr = { path = "../../../frame/merkle-mountain-range", default-features = false }
-pallet-multisig = { path = "../../../frame/multisig", default-features = false }
-pallet-nfts = { path = "../../../frame/nfts", default-features = false }
-pallet-nfts-runtime-api = { path = "../../../frame/nfts/runtime-api", default-features = false }
-pallet-nft-fractionalization = { path = "../../../frame/nft-fractionalization", default-features = false }
-pallet-nomination-pools = { path = "../../../frame/nomination-pools", default-features = false }
-pallet-nomination-pools-benchmarking = { path = "../../../frame/nomination-pools/benchmarking", default-features = false, optional = true }
-pallet-nomination-pools-runtime-api = { path = "../../../frame/nomination-pools/runtime-api", default-features = false }
-pallet-offences = { path = "../../../frame/offences", default-features = false }
-pallet-offences-benchmarking = { path = "../../../frame/offences/benchmarking", default-features = false, optional = true }
-pallet-glutton = { path = "../../../frame/glutton", default-features = false }
-pallet-preimage = { path = "../../../frame/preimage", default-features = false }
-pallet-proxy = { path = "../../../frame/proxy", default-features = false }
-pallet-insecure-randomness-collective-flip = { path = "../../../frame/insecure-randomness-collective-flip", default-features = false }
-pallet-ranked-collective = { path = "../../../frame/ranked-collective", default-features = false }
-pallet-recovery = { path = "../../../frame/recovery", default-features = false }
-pallet-referenda = { path = "../../../frame/referenda", default-features = false }
-pallet-remark = { path = "../../../frame/remark", default-features = false }
-pallet-root-testing = { path = "../../../frame/root-testing", default-features = false }
-pallet-salary = { path = "../../../frame/salary", default-features = false }
-pallet-session = { path = "../../../frame/session", default-features = false, features = ["historical"] }
-pallet-session-benchmarking = { path = "../../../frame/session/benchmarking", default-features = false, optional = true }
-pallet-staking = { path = "../../../frame/staking", default-features = false }
-pallet-staking-reward-curve = { path = "../../../frame/staking/reward-curve", default-features = false }
-pallet-staking-runtime-api = { path = "../../../frame/staking/runtime-api", default-features = false }
-pallet-state-trie-migration = { path = "../../../frame/state-trie-migration", default-features = false }
-pallet-statement = { path = "../../../frame/statement", default-features = false }
-pallet-scheduler = { path = "../../../frame/scheduler", default-features = false }
-pallet-society = { path = "../../../frame/society", default-features = false }
-pallet-sudo = { path = "../../../frame/sudo", default-features = false }
-pallet-timestamp = { path = "../../../frame/timestamp", default-features = false }
-pallet-tips = { path = "../../../frame/tips", default-features = false }
-pallet-treasury = { path = "../../../frame/treasury", default-features = false }
-pallet-utility = { path = "../../../frame/utility", default-features = false }
-pallet-transaction-payment = { path = "../../../frame/transaction-payment", default-features = false }
-pallet-transaction-payment-rpc-runtime-api = { path = "../../../frame/transaction-payment/rpc/runtime-api", default-features = false }
-pallet-asset-conversion-tx-payment = { path = "../../../frame/transaction-payment/asset-conversion-tx-payment", default-features = false }
-pallet-asset-tx-payment = { path = "../../../frame/transaction-payment/asset-tx-payment", default-features = false }
-pallet-skip-feeless-payment = { path = "../../../frame/transaction-payment/skip-feeless-payment", default-features = false }
-pallet-transaction-storage = { path = "../../../frame/transaction-storage", default-features = false }
-pallet-uniques = { path = "../../../frame/uniques", default-features = false }
-pallet-vesting = { path = "../../../frame/vesting", default-features = false }
-pallet-whitelist = { path = "../../../frame/whitelist", default-features = false }
-pallet-tx-pause = { path = "../../../frame/tx-pause", default-features = false }
-pallet-safe-mode = { path = "../../../frame/safe-mode", default-features = false }
-pallet-parameters = { path = "../../../frame/parameters", default-features = false }
+pallet-example-tasks = { path = "../../../frame/examples/tasks", default-features = false }
 
 [build-dependencies]
 substrate-wasm-builder = { path = "../../../utils/wasm-builder", optional = true }
 
 [features]
 default = ["std"]
-with-tracing = ["frame-executive/with-tracing"]
+with-tracing = ["polkadot-sdk/with-tracing"]
 std = [
 	"codec/std",
-	"frame-benchmarking-pallet-pov/std",
-	"frame-benchmarking/std",
-	"frame-election-provider-support/std",
-	"frame-executive/std",
-	"frame-metadata-hash-extension/std",
-	"frame-support/std",
-	"frame-system-benchmarking?/std",
-	"frame-system-rpc-runtime-api/std",
-	"frame-system/std",
-	"frame-try-runtime?/std",
 	"log/std",
 	"node-primitives/std",
-	"pallet-alliance/std",
-	"pallet-asset-conversion-ops/std",
-	"pallet-asset-conversion-tx-payment/std",
-	"pallet-asset-conversion/std",
-	"pallet-asset-rate/std",
-	"pallet-asset-tx-payment/std",
-	"pallet-assets/std",
-	"pallet-authority-discovery/std",
-	"pallet-authorship/std",
-	"pallet-babe/std",
-	"pallet-bags-list/std",
-	"pallet-balances/std",
-	"pallet-beefy-mmr/std",
-	"pallet-beefy/std",
-	"pallet-bounties/std",
-	"pallet-broker/std",
-	"pallet-child-bounties/std",
-	"pallet-collective/std",
-	"pallet-contracts/std",
-	"pallet-conviction-voting/std",
-	"pallet-core-fellowship/std",
-	"pallet-democracy/std",
-	"pallet-election-provider-multi-phase/std",
-	"pallet-election-provider-support-benchmarking?/std",
-	"pallet-elections-phragmen/std",
 	"pallet-example-mbm/std",
 	"pallet-example-tasks/std",
-	"pallet-fast-unstake/std",
-	"pallet-glutton/std",
-	"pallet-grandpa/std",
-	"pallet-identity/std",
-	"pallet-im-online/std",
-	"pallet-indices/std",
-	"pallet-insecure-randomness-collective-flip/std",
-	"pallet-lottery/std",
-	"pallet-membership/std",
-	"pallet-message-queue/std",
-	"pallet-migrations/std",
-	"pallet-mixnet/std",
-	"pallet-mmr/std",
-	"pallet-multisig/std",
-	"pallet-nft-fractionalization/std",
-	"pallet-nfts-runtime-api/std",
-	"pallet-nfts/std",
-	"pallet-nis/std",
-	"pallet-nomination-pools-benchmarking?/std",
-	"pallet-nomination-pools-runtime-api/std",
-	"pallet-nomination-pools/std",
-	"pallet-offences-benchmarking?/std",
-	"pallet-offences/std",
-	"pallet-parameters/std",
-	"pallet-preimage/std",
-	"pallet-proxy/std",
-	"pallet-ranked-collective/std",
-	"pallet-recovery/std",
-	"pallet-referenda/std",
-	"pallet-remark/std",
-	"pallet-root-testing/std",
-	"pallet-safe-mode/std",
-	"pallet-salary/std",
-	"pallet-scheduler/std",
-	"pallet-session-benchmarking?/std",
-	"pallet-session/std",
-	"pallet-skip-feeless-payment/std",
-	"pallet-society/std",
-	"pallet-staking-runtime-api/std",
-	"pallet-staking/std",
-	"pallet-state-trie-migration/std",
-	"pallet-statement/std",
-	"pallet-sudo/std",
-	"pallet-timestamp/std",
-	"pallet-tips/std",
-	"pallet-transaction-payment-rpc-runtime-api/std",
-	"pallet-transaction-payment/std",
-	"pallet-transaction-storage/std",
-	"pallet-treasury/std",
-	"pallet-tx-pause/std",
-	"pallet-uniques/std",
-	"pallet-utility/std",
-	"pallet-vesting/std",
-	"pallet-whitelist/std",
+	"polkadot-sdk/std",
 	"primitive-types/std",
 	"scale-info/std",
 	"serde_json/std",
-	"sp-api/std",
-	"sp-authority-discovery/std",
-	"sp-block-builder/std",
-	"sp-consensus-babe/std",
-	"sp-consensus-beefy/std",
-	"sp-consensus-grandpa/std",
-	"sp-core/std",
-	"sp-genesis-builder/std",
-	"sp-inherents/std",
-	"sp-io/std",
-	"sp-mixnet/std",
-	"sp-offchain/std",
-	"sp-runtime/std",
-	"sp-session/std",
-	"sp-staking/std",
-	"sp-statement-store/std",
-	"sp-std/std",
-	"sp-storage/std",
-	"sp-transaction-pool/std",
-	"sp-version/std",
 	"substrate-wasm-builder",
 ]
 runtime-benchmarks = [
-	"frame-benchmarking-pallet-pov/runtime-benchmarks",
-	"frame-benchmarking/runtime-benchmarks",
-	"frame-election-provider-support/runtime-benchmarks",
-	"frame-support/runtime-benchmarks",
-	"frame-system-benchmarking/runtime-benchmarks",
-	"frame-system/runtime-benchmarks",
-	"pallet-alliance/runtime-benchmarks",
-	"pallet-asset-conversion-ops/runtime-benchmarks",
-	"pallet-asset-conversion/runtime-benchmarks",
-	"pallet-asset-rate/runtime-benchmarks",
-	"pallet-asset-tx-payment/runtime-benchmarks",
-	"pallet-assets/runtime-benchmarks",
-	"pallet-babe/runtime-benchmarks",
-	"pallet-bags-list/runtime-benchmarks",
-	"pallet-balances/runtime-benchmarks",
-	"pallet-bounties/runtime-benchmarks",
-	"pallet-broker/runtime-benchmarks",
-	"pallet-child-bounties/runtime-benchmarks",
-	"pallet-collective/runtime-benchmarks",
-	"pallet-contracts/runtime-benchmarks",
-	"pallet-conviction-voting/runtime-benchmarks",
-	"pallet-core-fellowship/runtime-benchmarks",
-	"pallet-democracy/runtime-benchmarks",
-	"pallet-election-provider-multi-phase/runtime-benchmarks",
-	"pallet-election-provider-support-benchmarking/runtime-benchmarks",
-	"pallet-elections-phragmen/runtime-benchmarks",
 	"pallet-example-mbm/runtime-benchmarks",
 	"pallet-example-tasks/runtime-benchmarks",
-	"pallet-fast-unstake/runtime-benchmarks",
-	"pallet-glutton/runtime-benchmarks",
-	"pallet-grandpa/runtime-benchmarks",
-	"pallet-identity/runtime-benchmarks",
-	"pallet-im-online/runtime-benchmarks",
-	"pallet-indices/runtime-benchmarks",
-	"pallet-lottery/runtime-benchmarks",
-	"pallet-membership/runtime-benchmarks",
-	"pallet-message-queue/runtime-benchmarks",
-	"pallet-migrations/runtime-benchmarks",
-	"pallet-mixnet/runtime-benchmarks",
-	"pallet-mmr/runtime-benchmarks",
-	"pallet-multisig/runtime-benchmarks",
-	"pallet-nft-fractionalization/runtime-benchmarks",
-	"pallet-nfts/runtime-benchmarks",
-	"pallet-nis/runtime-benchmarks",
-	"pallet-nomination-pools-benchmarking/runtime-benchmarks",
-	"pallet-nomination-pools/runtime-benchmarks",
-	"pallet-offences-benchmarking/runtime-benchmarks",
-	"pallet-offences/runtime-benchmarks",
-	"pallet-parameters/runtime-benchmarks",
-	"pallet-preimage/runtime-benchmarks",
-	"pallet-proxy/runtime-benchmarks",
-	"pallet-ranked-collective/runtime-benchmarks",
-	"pallet-recovery/runtime-benchmarks",
-	"pallet-referenda/runtime-benchmarks",
-	"pallet-remark/runtime-benchmarks",
-	"pallet-safe-mode/runtime-benchmarks",
-	"pallet-salary/runtime-benchmarks",
-	"pallet-scheduler/runtime-benchmarks",
-	"pallet-session-benchmarking/runtime-benchmarks",
-	"pallet-skip-feeless-payment/runtime-benchmarks",
-	"pallet-society/runtime-benchmarks",
-	"pallet-staking/runtime-benchmarks",
-	"pallet-state-trie-migration/runtime-benchmarks",
-	"pallet-sudo/runtime-benchmarks",
-	"pallet-timestamp/runtime-benchmarks",
-	"pallet-tips/runtime-benchmarks",
-	"pallet-transaction-storage/runtime-benchmarks",
-	"pallet-treasury/runtime-benchmarks",
-	"pallet-tx-pause/runtime-benchmarks",
-	"pallet-uniques/runtime-benchmarks",
-	"pallet-utility/runtime-benchmarks",
-	"pallet-vesting/runtime-benchmarks",
-	"pallet-whitelist/runtime-benchmarks",
-	"sp-runtime/runtime-benchmarks",
-	"sp-staking/runtime-benchmarks",
+	"polkadot-sdk/runtime-benchmarks",
 ]
 try-runtime = [
-	"frame-benchmarking-pallet-pov/try-runtime",
-	"frame-election-provider-support/try-runtime",
-	"frame-executive/try-runtime",
-	"frame-support/try-runtime",
-	"frame-system/try-runtime",
-	"frame-try-runtime/try-runtime",
-	"pallet-alliance/try-runtime",
-	"pallet-asset-conversion-ops/try-runtime",
-	"pallet-asset-conversion-tx-payment/try-runtime",
-	"pallet-asset-conversion/try-runtime",
-	"pallet-asset-rate/try-runtime",
-	"pallet-asset-tx-payment/try-runtime",
-	"pallet-assets/try-runtime",
-	"pallet-authority-discovery/try-runtime",
-	"pallet-authorship/try-runtime",
-	"pallet-babe/try-runtime",
-	"pallet-bags-list/try-runtime",
-	"pallet-balances/try-runtime",
-	"pallet-beefy-mmr/try-runtime",
-	"pallet-beefy/try-runtime",
-	"pallet-bounties/try-runtime",
-	"pallet-broker/try-runtime",
-	"pallet-child-bounties/try-runtime",
-	"pallet-collective/try-runtime",
-	"pallet-contracts/try-runtime",
-	"pallet-conviction-voting/try-runtime",
-	"pallet-core-fellowship/try-runtime",
-	"pallet-democracy/try-runtime",
-	"pallet-election-provider-multi-phase/try-runtime",
-	"pallet-elections-phragmen/try-runtime",
 	"pallet-example-mbm/try-runtime",
 	"pallet-example-tasks/try-runtime",
-	"pallet-fast-unstake/try-runtime",
-	"pallet-glutton/try-runtime",
-	"pallet-grandpa/try-runtime",
-	"pallet-identity/try-runtime",
-	"pallet-im-online/try-runtime",
-	"pallet-indices/try-runtime",
-	"pallet-insecure-randomness-collective-flip/try-runtime",
-	"pallet-lottery/try-runtime",
-	"pallet-membership/try-runtime",
-	"pallet-message-queue/try-runtime",
-	"pallet-migrations/try-runtime",
-	"pallet-mixnet/try-runtime",
-	"pallet-mmr/try-runtime",
-	"pallet-multisig/try-runtime",
-	"pallet-nft-fractionalization/try-runtime",
-	"pallet-nfts/try-runtime",
-	"pallet-nis/try-runtime",
-	"pallet-nomination-pools/try-runtime",
-	"pallet-offences/try-runtime",
-	"pallet-parameters/try-runtime",
-	"pallet-preimage/try-runtime",
-	"pallet-proxy/try-runtime",
-	"pallet-ranked-collective/try-runtime",
-	"pallet-recovery/try-runtime",
-	"pallet-referenda/try-runtime",
-	"pallet-remark/try-runtime",
-	"pallet-root-testing/try-runtime",
-	"pallet-safe-mode/try-runtime",
-	"pallet-salary/try-runtime",
-	"pallet-scheduler/try-runtime",
-	"pallet-session/try-runtime",
-	"pallet-skip-feeless-payment/try-runtime",
-	"pallet-society/try-runtime",
-	"pallet-staking/try-runtime",
-	"pallet-state-trie-migration/try-runtime",
-	"pallet-statement/try-runtime",
-	"pallet-sudo/try-runtime",
-	"pallet-timestamp/try-runtime",
-	"pallet-tips/try-runtime",
-	"pallet-transaction-payment/try-runtime",
-	"pallet-transaction-storage/try-runtime",
-	"pallet-treasury/try-runtime",
-	"pallet-tx-pause/try-runtime",
-	"pallet-uniques/try-runtime",
-	"pallet-utility/try-runtime",
-	"pallet-vesting/try-runtime",
-	"pallet-whitelist/try-runtime",
-	"sp-runtime/try-runtime",
+	"polkadot-sdk/try-runtime",
 ]
 experimental = [
-	"frame-support/experimental",
-	"frame-system/experimental",
 	"pallet-example-tasks/experimental",
 ]
 
diff --git a/substrate/bin/node/runtime/src/assets_api.rs b/substrate/bin/node/runtime/src/assets_api.rs
index 792ed7c6576bd85485eae9abe84ea17d5749cd13..38ec56507113f561721887689a5f4540121e2403 100644
--- a/substrate/bin/node/runtime/src/assets_api.rs
+++ b/substrate/bin/node/runtime/src/assets_api.rs
@@ -18,6 +18,8 @@
 
 //! Runtime API definition for assets.
 
+use polkadot_sdk::*;
+
 use codec::Codec;
 use sp_std::vec::Vec;
 
diff --git a/substrate/bin/node/runtime/src/impls.rs b/substrate/bin/node/runtime/src/impls.rs
index 34f043b33a4edfe2d8cdbe154896e937826110ca..dbe562857c99fcdd4730edd0aa5d985ab2e6dd51 100644
--- a/substrate/bin/node/runtime/src/impls.rs
+++ b/substrate/bin/node/runtime/src/impls.rs
@@ -17,6 +17,8 @@
 
 //! Some configurable implementations as associated type for the substrate runtime.
 
+use polkadot_sdk::*;
+
 use frame_support::{
 	pallet_prelude::*,
 	traits::{
@@ -118,6 +120,7 @@ mod multiplier_tests {
 		weights::{Weight, WeightToFee},
 	};
 	use pallet_transaction_payment::{Multiplier, TargetedFeeAdjustment};
+	use polkadot_sdk::*;
 	use sp_runtime::{
 		assert_eq_error_rate,
 		traits::{Convert, One, Zero},
diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs
index 617088ffe1ff2bfec888da55746f6e8003c769d6..7d9128bb940a55bfc2b0497600c1f6f5ffa56119 100644
--- a/substrate/bin/node/runtime/src/lib.rs
+++ b/substrate/bin/node/runtime/src/lib.rs
@@ -22,6 +22,8 @@
 // `construct_runtime!` does a lot of recursion and requires us to increase the limits.
 #![recursion_limit = "1024"]
 
+use polkadot_sdk::*;
+
 use codec::{Decode, Encode, MaxEncodedLen};
 use frame_election_provider_support::{
 	bounds::{ElectionBounds, ElectionBoundsBuilder},
@@ -2229,6 +2231,8 @@ impl pallet_parameters::Config for Runtime {
 
 #[frame_support::runtime]
 mod runtime {
+	use super::*;
+
 	#[runtime::runtime]
 	#[runtime::derive(
 		RuntimeCall,
@@ -2571,7 +2575,7 @@ impl pallet_beefy::Config for Runtime {
 
 /// MMR helper types.
 mod mmr {
-	use super::Runtime;
+	use super::*;
 	pub use pallet_mmr::primitives::*;
 
 	pub type Leaf = <<Runtime as pallet_mmr::Config>::LeafData as LeafDataProvider>::LeafData;
@@ -2581,7 +2585,7 @@ mod mmr {
 
 #[cfg(feature = "runtime-benchmarks")]
 mod benches {
-	frame_benchmarking::define_benchmarks!(
+	polkadot_sdk::frame_benchmarking::define_benchmarks!(
 		[frame_benchmarking, BaselineBench::<Runtime>]
 		[frame_benchmarking_pallet_pov, Pov]
 		[pallet_alliance, Alliance]
diff --git a/substrate/client/chain-spec/derive/src/impls.rs b/substrate/client/chain-spec/derive/src/impls.rs
index c0624897c133e6ebd3ecda6556d628dccee3c53b..d8b20c5c2a8cca93bd2a6bc8da051ea3746c1e4e 100644
--- a/substrate/client/chain-spec/derive/src/impls.rs
+++ b/substrate/client/chain-spec/derive/src/impls.rs
@@ -19,7 +19,7 @@
 use proc_macro2::{Span, TokenStream};
 use proc_macro_crate::{crate_name, FoundCrate};
 use quote::quote;
-use syn::{DeriveInput, Error, Ident};
+use syn::{DeriveInput, Error, Ident, Path};
 
 const CRATE_NAME: &str = "sc-chain-spec";
 const ATTRIBUTE_NAME: &str = "forks";
@@ -143,7 +143,7 @@ pub fn group_derive(ast: &DeriveInput) -> proc_macro::TokenStream {
 pub fn derive(
 	ast: &DeriveInput,
 	derive: impl Fn(
-		&Ident,
+		&Path,
 		&Ident,
 		&syn::Generics,
 		Vec<&Ident>,
@@ -171,25 +171,28 @@ pub fn derive(
 	};
 
 	let name = &ast.ident;
-	let crate_name = match crate_name(CRATE_NAME) {
+	let crate_path = match crate_name(CRATE_NAME) {
 		Ok(FoundCrate::Itself) => CRATE_NAME.replace("-", "_"),
 		Ok(FoundCrate::Name(chain_spec_name)) => chain_spec_name,
-		Err(e) => {
-			let err = Error::new(Span::call_site(), &e).to_compile_error();
-			return quote!( #err ).into()
+		Err(e) => match crate_name("polkadot-sdk") {
+			Ok(FoundCrate::Name(sdk)) => format!("{sdk}::{CRATE_NAME}").replace("-", "_"),
+			_ => {
+				return Error::new(Span::call_site(), &e).to_compile_error().into();
+			},
 		},
 	};
-	let crate_name = Ident::new(&crate_name, Span::call_site());
+	let crate_path =
+		syn::parse_str::<Path>(&crate_path).expect("crate_name returns valid path; qed");
 	let field_names = fields.named.iter().flat_map(|x| x.ident.as_ref()).collect::<Vec<_>>();
 	let field_types = fields.named.iter().map(|x| &x.ty).collect::<Vec<_>>();
 
-	derive(&crate_name, name, &ast.generics, field_names, field_types, fields).into()
+	derive(&crate_path, name, &ast.generics, field_names, field_types, fields).into()
 }
 
-fn generate_fork_fields(crate_name: &Ident, names: &[&Ident], types: &[&syn::Type]) -> TokenStream {
-	let crate_name = std::iter::repeat(crate_name);
+fn generate_fork_fields(crate_path: &Path, names: &[&Ident], types: &[&syn::Type]) -> TokenStream {
+	let crate_path = std::iter::repeat(crate_path);
 	quote! {
-		#( pub #names: Option<<#types as #crate_name::Group>::Fork>, )*
+		#( pub #names: Option<<#types as #crate_path::Group>::Fork>, )*
 	}
 }
 
diff --git a/substrate/frame/election-provider-support/solution-type/src/lib.rs b/substrate/frame/election-provider-support/solution-type/src/lib.rs
index 80773f6fb476859746677711401d70bd955b8ad7..1a88f0cf835fbe813da9d990ef4fd98651096614 100644
--- a/substrate/frame/election-provider-support/solution-type/src/lib.rs
+++ b/substrate/frame/election-provider-support/solution-type/src/lib.rs
@@ -263,7 +263,16 @@ fn imports() -> Result<TokenStream2> {
 					use _feps::private as _fepsp;
 			))
 		},
-		Err(e) => Err(syn::Error::new(Span::call_site(), e)),
+		Err(e) => match crate_name("polkadot-sdk") {
+			Ok(FoundCrate::Name(polkadot_sdk)) => {
+				let ident = syn::Ident::new(&polkadot_sdk, Span::call_site());
+				Ok(quote!(
+					use #ident::frame_election_provider_support as _feps;
+					use _feps::private as _fepsp;
+				))
+			},
+			_ => Err(syn::Error::new(Span::call_site(), e)),
+		},
 	}
 }
 
diff --git a/substrate/frame/staking/reward-curve/src/lib.rs b/substrate/frame/staking/reward-curve/src/lib.rs
index 1986357edabe20cca94d0d0e26e1bee54e08a0ac..cfb8b896f9394ad06223da2097a91b620fcf30d4 100644
--- a/substrate/frame/staking/reward-curve/src/lib.rs
+++ b/substrate/frame/staking/reward-curve/src/lib.rs
@@ -88,7 +88,13 @@ pub fn build(input: TokenStream) -> TokenStream {
 			let ident = syn::Ident::new(&sp_runtime, Span::call_site());
 			quote!( #[doc(hidden)] pub use #ident as _sp_runtime; )
 		},
-		Err(e) => syn::Error::new(Span::call_site(), e).to_compile_error(),
+		Err(e) => match crate_name("polkadot-sdk") {
+			Ok(FoundCrate::Name(polkadot_sdk)) => {
+				let ident = syn::Ident::new(&polkadot_sdk, Span::call_site());
+				quote!( #[doc(hidden)] pub use #ident::sp_runtime as _sp_runtime; )
+			},
+			_ => syn::Error::new(Span::call_site(), e).to_compile_error(),
+		},
 	};
 
 	let const_name = input.ident;
diff --git a/substrate/frame/support/procedural/tools/src/lib.rs b/substrate/frame/support/procedural/tools/src/lib.rs
index 8952cd6011ff5bb717a9e731d09525d160d95739..ea53335a88fd4565e41680e2393b9affb248c975 100644
--- a/substrate/frame/support/procedural/tools/src/lib.rs
+++ b/substrate/frame/support/procedural/tools/src/lib.rs
@@ -70,6 +70,8 @@ pub fn is_using_frame_crate(path: &syn::Path) -> bool {
 pub fn generate_access_from_frame_or_crate(def_crate: &str) -> Result<syn::Path, Error> {
 	if let Some(path) = get_frame_crate_path(def_crate) {
 		Ok(path)
+	} else if let Some(path) = get_sdk_crate_path(def_crate) {
+		Ok(path)
 	} else {
 		let ident = match crate_name(def_crate) {
 			Ok(FoundCrate::Itself) => {
@@ -95,6 +97,13 @@ pub fn generate_hidden_includes(unique_id: &str, def_crate: &str) -> TokenStream
 				pub use #path as hidden_include;
 			}
 		)
+	} else if let Some(path) = get_sdk_crate_path(def_crate) {
+		quote::quote!(
+			#[doc(hidden)]
+			mod #mod_name {
+				pub use #path as hidden_include;
+			}
+		)
 	} else {
 		match crate_name(def_crate) {
 			Ok(FoundCrate::Itself) => quote!(),
@@ -128,6 +137,15 @@ fn get_frame_crate_path(def_crate: &str) -> Option<syn::Path> {
 	}
 }
 
+fn get_sdk_crate_path(def_crate: &str) -> Option<syn::Path> {
+	if let Ok(FoundCrate::Name(name)) = crate_name(&"polkadot-sdk") {
+		let path = format!("{}::{}", name, def_crate.to_string()).replace("-", "_");
+		Some(syn::parse_str::<syn::Path>(&path).expect("is a valid path; qed"))
+	} else {
+		None
+	}
+}
+
 // fn to remove white spaces around string types
 // (basically whitespaces around tokens)
 pub fn clean_type_string(input: &str) -> String {
diff --git a/substrate/primitives/api/proc-macro/src/utils.rs b/substrate/primitives/api/proc-macro/src/utils.rs
index d90b56058648ba8653992c210586238028629689..36577670a40ce48df9ea805adb2fde5f02399599 100644
--- a/substrate/primitives/api/proc-macro/src/utils.rs
+++ b/substrate/primitives/api/proc-macro/src/utils.rs
@@ -40,6 +40,10 @@ pub fn generate_crate_access() -> TokenStream {
 				let path = format!("{}::deps::sp_api::__private", name);
 				let path = syn::parse_str::<syn::Path>(&path).expect("is a valid path; qed");
 				quote!( #path )
+			} else if let Ok(FoundCrate::Name(name)) = crate_name(&"polkadot-sdk") {
+				let path = format!("{}::sp_api::__private", name);
+				let path = syn::parse_str::<syn::Path>(&path).expect("is a valid path; qed");
+				quote!( #path )
 			} else {
 				let err = Error::new(Span::call_site(), e).to_compile_error();
 				quote!( #err )
diff --git a/umbrella/Cargo.toml b/umbrella/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..9f1308d5096c7cf7fa863469c638ac7cd3477b6a
--- /dev/null
+++ b/umbrella/Cargo.toml
@@ -0,0 +1,2449 @@
+[package]
+name = "polkadot-sdk"
+version = "0.1.0"
+description = "Polkadot SDK umbrella crate."
+license = "Apache-2.0"
+
+[features]
+default = ["std"]
+std = [
+	"asset-test-utils?/std",
+	"assets-common?/std",
+	"binary-merkle-tree?/std",
+	"bp-asset-hub-rococo?/std",
+	"bp-asset-hub-westend?/std",
+	"bp-bridge-hub-cumulus?/std",
+	"bp-bridge-hub-kusama?/std",
+	"bp-bridge-hub-polkadot?/std",
+	"bp-bridge-hub-rococo?/std",
+	"bp-bridge-hub-westend?/std",
+	"bp-header-chain?/std",
+	"bp-kusama?/std",
+	"bp-messages?/std",
+	"bp-parachains?/std",
+	"bp-polkadot-bulletin?/std",
+	"bp-polkadot-core?/std",
+	"bp-polkadot?/std",
+	"bp-relayers?/std",
+	"bp-rococo?/std",
+	"bp-runtime?/std",
+	"bp-test-utils?/std",
+	"bp-westend?/std",
+	"bp-xcm-bridge-hub-router?/std",
+	"bp-xcm-bridge-hub?/std",
+	"bridge-hub-common?/std",
+	"bridge-hub-test-utils?/std",
+	"bridge-runtime-common?/std",
+	"cumulus-pallet-aura-ext?/std",
+	"cumulus-pallet-dmp-queue?/std",
+	"cumulus-pallet-parachain-system-proc-macro?/std",
+	"cumulus-pallet-parachain-system?/std",
+	"cumulus-pallet-session-benchmarking?/std",
+	"cumulus-pallet-solo-to-para?/std",
+	"cumulus-pallet-xcm?/std",
+	"cumulus-pallet-xcmp-queue?/std",
+	"cumulus-ping?/std",
+	"cumulus-primitives-aura?/std",
+	"cumulus-primitives-core?/std",
+	"cumulus-primitives-parachain-inherent?/std",
+	"cumulus-primitives-proof-size-hostfunction?/std",
+	"cumulus-primitives-storage-weight-reclaim?/std",
+	"cumulus-primitives-timestamp?/std",
+	"cumulus-primitives-utility?/std",
+	"cumulus-test-relay-sproof-builder?/std",
+	"frame-benchmarking-pallet-pov?/std",
+	"frame-benchmarking?/std",
+	"frame-election-provider-support?/std",
+	"frame-executive?/std",
+	"frame-metadata-hash-extension?/std",
+	"frame-support-procedural?/std",
+	"frame-support?/std",
+	"frame-system-benchmarking?/std",
+	"frame-system-rpc-runtime-api?/std",
+	"frame-system?/std",
+	"frame-try-runtime?/std",
+	"pallet-alliance?/std",
+	"pallet-asset-conversion-ops?/std",
+	"pallet-asset-conversion-tx-payment?/std",
+	"pallet-asset-conversion?/std",
+	"pallet-asset-rate?/std",
+	"pallet-asset-tx-payment?/std",
+	"pallet-assets?/std",
+	"pallet-atomic-swap?/std",
+	"pallet-aura?/std",
+	"pallet-authority-discovery?/std",
+	"pallet-authorship?/std",
+	"pallet-babe?/std",
+	"pallet-bags-list?/std",
+	"pallet-balances?/std",
+	"pallet-beefy-mmr?/std",
+	"pallet-beefy?/std",
+	"pallet-bounties?/std",
+	"pallet-bridge-grandpa?/std",
+	"pallet-bridge-messages?/std",
+	"pallet-bridge-parachains?/std",
+	"pallet-bridge-relayers?/std",
+	"pallet-broker?/std",
+	"pallet-child-bounties?/std",
+	"pallet-collator-selection?/std",
+	"pallet-collective-content?/std",
+	"pallet-collective?/std",
+	"pallet-contracts-mock-network?/std",
+	"pallet-contracts?/std",
+	"pallet-conviction-voting?/std",
+	"pallet-core-fellowship?/std",
+	"pallet-delegated-staking?/std",
+	"pallet-democracy?/std",
+	"pallet-dev-mode?/std",
+	"pallet-election-provider-multi-phase?/std",
+	"pallet-election-provider-support-benchmarking?/std",
+	"pallet-elections-phragmen?/std",
+	"pallet-fast-unstake?/std",
+	"pallet-glutton?/std",
+	"pallet-grandpa?/std",
+	"pallet-identity?/std",
+	"pallet-im-online?/std",
+	"pallet-indices?/std",
+	"pallet-insecure-randomness-collective-flip?/std",
+	"pallet-lottery?/std",
+	"pallet-membership?/std",
+	"pallet-message-queue?/std",
+	"pallet-migrations?/std",
+	"pallet-mixnet?/std",
+	"pallet-mmr?/std",
+	"pallet-multisig?/std",
+	"pallet-nft-fractionalization?/std",
+	"pallet-nfts-runtime-api?/std",
+	"pallet-nfts?/std",
+	"pallet-nis?/std",
+	"pallet-node-authorization?/std",
+	"pallet-nomination-pools-benchmarking?/std",
+	"pallet-nomination-pools-runtime-api?/std",
+	"pallet-nomination-pools?/std",
+	"pallet-offences-benchmarking?/std",
+	"pallet-offences?/std",
+	"pallet-paged-list?/std",
+	"pallet-parameters?/std",
+	"pallet-preimage?/std",
+	"pallet-proxy?/std",
+	"pallet-ranked-collective?/std",
+	"pallet-recovery?/std",
+	"pallet-referenda?/std",
+	"pallet-remark?/std",
+	"pallet-root-offences?/std",
+	"pallet-root-testing?/std",
+	"pallet-safe-mode?/std",
+	"pallet-salary?/std",
+	"pallet-scheduler?/std",
+	"pallet-scored-pool?/std",
+	"pallet-session-benchmarking?/std",
+	"pallet-session?/std",
+	"pallet-skip-feeless-payment?/std",
+	"pallet-society?/std",
+	"pallet-staking-reward-fn?/std",
+	"pallet-staking-runtime-api?/std",
+	"pallet-staking?/std",
+	"pallet-state-trie-migration?/std",
+	"pallet-statement?/std",
+	"pallet-sudo?/std",
+	"pallet-timestamp?/std",
+	"pallet-tips?/std",
+	"pallet-transaction-payment-rpc-runtime-api?/std",
+	"pallet-transaction-payment?/std",
+	"pallet-transaction-storage?/std",
+	"pallet-treasury?/std",
+	"pallet-tx-pause?/std",
+	"pallet-uniques?/std",
+	"pallet-utility?/std",
+	"pallet-vesting?/std",
+	"pallet-whitelist?/std",
+	"pallet-xcm-benchmarks?/std",
+	"pallet-xcm-bridge-hub-router?/std",
+	"pallet-xcm-bridge-hub?/std",
+	"pallet-xcm?/std",
+	"parachains-common?/std",
+	"parachains-runtimes-test-utils?/std",
+	"polkadot-core-primitives?/std",
+	"polkadot-parachain-primitives?/std",
+	"polkadot-primitives?/std",
+	"polkadot-runtime-common?/std",
+	"polkadot-runtime-metrics?/std",
+	"polkadot-runtime-parachains?/std",
+	"polkadot-sdk-frame?/std",
+	"rococo-runtime-constants?/std",
+	"sc-executor?/std",
+	"slot-range-helper?/std",
+	"snowbridge-beacon-primitives?/std",
+	"snowbridge-core?/std",
+	"snowbridge-ethereum?/std",
+	"snowbridge-outbound-queue-merkle-tree?/std",
+	"snowbridge-outbound-queue-runtime-api?/std",
+	"snowbridge-pallet-ethereum-client-fixtures?/std",
+	"snowbridge-pallet-ethereum-client?/std",
+	"snowbridge-pallet-inbound-queue-fixtures?/std",
+	"snowbridge-pallet-inbound-queue?/std",
+	"snowbridge-pallet-outbound-queue?/std",
+	"snowbridge-pallet-system?/std",
+	"snowbridge-router-primitives?/std",
+	"snowbridge-runtime-common?/std",
+	"snowbridge-runtime-test-common?/std",
+	"snowbridge-system-runtime-api?/std",
+	"sp-api-proc-macro?/std",
+	"sp-api?/std",
+	"sp-application-crypto?/std",
+	"sp-arithmetic?/std",
+	"sp-authority-discovery?/std",
+	"sp-block-builder?/std",
+	"sp-consensus-aura?/std",
+	"sp-consensus-babe?/std",
+	"sp-consensus-beefy?/std",
+	"sp-consensus-grandpa?/std",
+	"sp-consensus-pow?/std",
+	"sp-consensus-slots?/std",
+	"sp-core-hashing?/std",
+	"sp-core?/std",
+	"sp-crypto-ec-utils?/std",
+	"sp-crypto-hashing?/std",
+	"sp-debug-derive?/std",
+	"sp-externalities?/std",
+	"sp-genesis-builder?/std",
+	"sp-inherents?/std",
+	"sp-io?/std",
+	"sp-keyring?/std",
+	"sp-keystore?/std",
+	"sp-metadata-ir?/std",
+	"sp-mixnet?/std",
+	"sp-mmr-primitives?/std",
+	"sp-npos-elections?/std",
+	"sp-offchain?/std",
+	"sp-runtime-interface?/std",
+	"sp-runtime?/std",
+	"sp-session?/std",
+	"sp-staking?/std",
+	"sp-state-machine?/std",
+	"sp-statement-store?/std",
+	"sp-std?/std",
+	"sp-storage?/std",
+	"sp-timestamp?/std",
+	"sp-tracing?/std",
+	"sp-transaction-pool?/std",
+	"sp-transaction-storage-proof?/std",
+	"sp-trie?/std",
+	"sp-version?/std",
+	"sp-wasm-interface?/std",
+	"sp-weights?/std",
+	"staging-parachain-info?/std",
+	"staging-xcm-builder?/std",
+	"staging-xcm-executor?/std",
+	"staging-xcm?/std",
+	"substrate-bip39?/std",
+	"testnet-parachains-constants?/std",
+	"westend-runtime-constants?/std",
+	"xcm-fee-payment-runtime-api?/std",
+]
+runtime-benchmarks = [
+	"assets-common?/runtime-benchmarks",
+	"bridge-hub-common?/runtime-benchmarks",
+	"bridge-runtime-common?/runtime-benchmarks",
+	"cumulus-pallet-dmp-queue?/runtime-benchmarks",
+	"cumulus-pallet-parachain-system?/runtime-benchmarks",
+	"cumulus-pallet-session-benchmarking?/runtime-benchmarks",
+	"cumulus-pallet-xcmp-queue?/runtime-benchmarks",
+	"cumulus-primitives-core?/runtime-benchmarks",
+	"cumulus-primitives-utility?/runtime-benchmarks",
+	"frame-benchmarking-cli?/runtime-benchmarks",
+	"frame-benchmarking-pallet-pov?/runtime-benchmarks",
+	"frame-benchmarking/runtime-benchmarks",
+	"frame-election-provider-support?/runtime-benchmarks",
+	"frame-support?/runtime-benchmarks",
+	"frame-system-benchmarking?/runtime-benchmarks",
+	"frame-system?/runtime-benchmarks",
+	"pallet-alliance?/runtime-benchmarks",
+	"pallet-asset-conversion-ops?/runtime-benchmarks",
+	"pallet-asset-conversion?/runtime-benchmarks",
+	"pallet-asset-rate?/runtime-benchmarks",
+	"pallet-asset-tx-payment?/runtime-benchmarks",
+	"pallet-assets?/runtime-benchmarks",
+	"pallet-babe?/runtime-benchmarks",
+	"pallet-bags-list?/runtime-benchmarks",
+	"pallet-balances?/runtime-benchmarks",
+	"pallet-bounties?/runtime-benchmarks",
+	"pallet-bridge-grandpa?/runtime-benchmarks",
+	"pallet-bridge-messages?/runtime-benchmarks",
+	"pallet-bridge-parachains?/runtime-benchmarks",
+	"pallet-bridge-relayers?/runtime-benchmarks",
+	"pallet-broker?/runtime-benchmarks",
+	"pallet-child-bounties?/runtime-benchmarks",
+	"pallet-collator-selection?/runtime-benchmarks",
+	"pallet-collective-content?/runtime-benchmarks",
+	"pallet-collective?/runtime-benchmarks",
+	"pallet-contracts-mock-network?/runtime-benchmarks",
+	"pallet-contracts?/runtime-benchmarks",
+	"pallet-conviction-voting?/runtime-benchmarks",
+	"pallet-core-fellowship?/runtime-benchmarks",
+	"pallet-delegated-staking?/runtime-benchmarks",
+	"pallet-democracy?/runtime-benchmarks",
+	"pallet-election-provider-multi-phase?/runtime-benchmarks",
+	"pallet-election-provider-support-benchmarking?/runtime-benchmarks",
+	"pallet-elections-phragmen?/runtime-benchmarks",
+	"pallet-fast-unstake?/runtime-benchmarks",
+	"pallet-glutton?/runtime-benchmarks",
+	"pallet-grandpa?/runtime-benchmarks",
+	"pallet-identity?/runtime-benchmarks",
+	"pallet-im-online?/runtime-benchmarks",
+	"pallet-indices?/runtime-benchmarks",
+	"pallet-lottery?/runtime-benchmarks",
+	"pallet-membership?/runtime-benchmarks",
+	"pallet-message-queue?/runtime-benchmarks",
+	"pallet-migrations?/runtime-benchmarks",
+	"pallet-mixnet?/runtime-benchmarks",
+	"pallet-mmr?/runtime-benchmarks",
+	"pallet-multisig?/runtime-benchmarks",
+	"pallet-nft-fractionalization?/runtime-benchmarks",
+	"pallet-nfts?/runtime-benchmarks",
+	"pallet-nis?/runtime-benchmarks",
+	"pallet-nomination-pools-benchmarking?/runtime-benchmarks",
+	"pallet-nomination-pools?/runtime-benchmarks",
+	"pallet-offences-benchmarking?/runtime-benchmarks",
+	"pallet-offences?/runtime-benchmarks",
+	"pallet-paged-list?/runtime-benchmarks",
+	"pallet-parameters?/runtime-benchmarks",
+	"pallet-preimage?/runtime-benchmarks",
+	"pallet-proxy?/runtime-benchmarks",
+	"pallet-ranked-collective?/runtime-benchmarks",
+	"pallet-recovery?/runtime-benchmarks",
+	"pallet-referenda?/runtime-benchmarks",
+	"pallet-remark?/runtime-benchmarks",
+	"pallet-root-offences?/runtime-benchmarks",
+	"pallet-safe-mode?/runtime-benchmarks",
+	"pallet-salary?/runtime-benchmarks",
+	"pallet-scheduler?/runtime-benchmarks",
+	"pallet-session-benchmarking?/runtime-benchmarks",
+	"pallet-skip-feeless-payment?/runtime-benchmarks",
+	"pallet-society?/runtime-benchmarks",
+	"pallet-staking?/runtime-benchmarks",
+	"pallet-state-trie-migration?/runtime-benchmarks",
+	"pallet-sudo?/runtime-benchmarks",
+	"pallet-timestamp?/runtime-benchmarks",
+	"pallet-tips?/runtime-benchmarks",
+	"pallet-transaction-storage?/runtime-benchmarks",
+	"pallet-treasury?/runtime-benchmarks",
+	"pallet-tx-pause?/runtime-benchmarks",
+	"pallet-uniques?/runtime-benchmarks",
+	"pallet-utility?/runtime-benchmarks",
+	"pallet-vesting?/runtime-benchmarks",
+	"pallet-whitelist?/runtime-benchmarks",
+	"pallet-xcm-benchmarks?/runtime-benchmarks",
+	"pallet-xcm-bridge-hub-router?/runtime-benchmarks",
+	"pallet-xcm-bridge-hub?/runtime-benchmarks",
+	"pallet-xcm?/runtime-benchmarks",
+	"parachains-common?/runtime-benchmarks",
+	"polkadot-cli?/runtime-benchmarks",
+	"polkadot-node-metrics?/runtime-benchmarks",
+	"polkadot-parachain-primitives?/runtime-benchmarks",
+	"polkadot-primitives?/runtime-benchmarks",
+	"polkadot-runtime-common?/runtime-benchmarks",
+	"polkadot-runtime-parachains?/runtime-benchmarks",
+	"polkadot-sdk-frame?/runtime-benchmarks",
+	"polkadot-service?/runtime-benchmarks",
+	"sc-client-db?/runtime-benchmarks",
+	"sc-service?/runtime-benchmarks",
+	"snowbridge-core?/runtime-benchmarks",
+	"snowbridge-pallet-ethereum-client-fixtures?/runtime-benchmarks",
+	"snowbridge-pallet-ethereum-client?/runtime-benchmarks",
+	"snowbridge-pallet-inbound-queue-fixtures?/runtime-benchmarks",
+	"snowbridge-pallet-inbound-queue?/runtime-benchmarks",
+	"snowbridge-pallet-outbound-queue?/runtime-benchmarks",
+	"snowbridge-pallet-system?/runtime-benchmarks",
+	"snowbridge-router-primitives?/runtime-benchmarks",
+	"snowbridge-runtime-common?/runtime-benchmarks",
+	"snowbridge-runtime-test-common?/runtime-benchmarks",
+	"sp-runtime?/runtime-benchmarks",
+	"sp-staking?/runtime-benchmarks",
+	"staging-node-inspect?/runtime-benchmarks",
+	"staging-xcm-builder?/runtime-benchmarks",
+	"staging-xcm-executor?/runtime-benchmarks",
+	"xcm-fee-payment-runtime-api?/runtime-benchmarks",
+]
+try-runtime = [
+	"cumulus-pallet-aura-ext?/try-runtime",
+	"cumulus-pallet-dmp-queue?/try-runtime",
+	"cumulus-pallet-parachain-system?/try-runtime",
+	"cumulus-pallet-solo-to-para?/try-runtime",
+	"cumulus-pallet-xcm?/try-runtime",
+	"cumulus-pallet-xcmp-queue?/try-runtime",
+	"cumulus-ping?/try-runtime",
+	"frame-benchmarking-pallet-pov?/try-runtime",
+	"frame-election-provider-support?/try-runtime",
+	"frame-executive?/try-runtime",
+	"frame-support?/try-runtime",
+	"frame-system?/try-runtime",
+	"frame-try-runtime/try-runtime",
+	"pallet-alliance?/try-runtime",
+	"pallet-asset-conversion-ops?/try-runtime",
+	"pallet-asset-conversion-tx-payment?/try-runtime",
+	"pallet-asset-conversion?/try-runtime",
+	"pallet-asset-rate?/try-runtime",
+	"pallet-asset-tx-payment?/try-runtime",
+	"pallet-assets?/try-runtime",
+	"pallet-atomic-swap?/try-runtime",
+	"pallet-aura?/try-runtime",
+	"pallet-authority-discovery?/try-runtime",
+	"pallet-authorship?/try-runtime",
+	"pallet-babe?/try-runtime",
+	"pallet-bags-list?/try-runtime",
+	"pallet-balances?/try-runtime",
+	"pallet-beefy-mmr?/try-runtime",
+	"pallet-beefy?/try-runtime",
+	"pallet-bounties?/try-runtime",
+	"pallet-bridge-grandpa?/try-runtime",
+	"pallet-bridge-messages?/try-runtime",
+	"pallet-bridge-parachains?/try-runtime",
+	"pallet-bridge-relayers?/try-runtime",
+	"pallet-broker?/try-runtime",
+	"pallet-child-bounties?/try-runtime",
+	"pallet-collator-selection?/try-runtime",
+	"pallet-collective-content?/try-runtime",
+	"pallet-collective?/try-runtime",
+	"pallet-contracts?/try-runtime",
+	"pallet-conviction-voting?/try-runtime",
+	"pallet-core-fellowship?/try-runtime",
+	"pallet-delegated-staking?/try-runtime",
+	"pallet-democracy?/try-runtime",
+	"pallet-dev-mode?/try-runtime",
+	"pallet-election-provider-multi-phase?/try-runtime",
+	"pallet-elections-phragmen?/try-runtime",
+	"pallet-fast-unstake?/try-runtime",
+	"pallet-glutton?/try-runtime",
+	"pallet-grandpa?/try-runtime",
+	"pallet-identity?/try-runtime",
+	"pallet-im-online?/try-runtime",
+	"pallet-indices?/try-runtime",
+	"pallet-insecure-randomness-collective-flip?/try-runtime",
+	"pallet-lottery?/try-runtime",
+	"pallet-membership?/try-runtime",
+	"pallet-message-queue?/try-runtime",
+	"pallet-migrations?/try-runtime",
+	"pallet-mixnet?/try-runtime",
+	"pallet-mmr?/try-runtime",
+	"pallet-multisig?/try-runtime",
+	"pallet-nft-fractionalization?/try-runtime",
+	"pallet-nfts?/try-runtime",
+	"pallet-nis?/try-runtime",
+	"pallet-node-authorization?/try-runtime",
+	"pallet-nomination-pools?/try-runtime",
+	"pallet-offences?/try-runtime",
+	"pallet-paged-list?/try-runtime",
+	"pallet-parameters?/try-runtime",
+	"pallet-preimage?/try-runtime",
+	"pallet-proxy?/try-runtime",
+	"pallet-ranked-collective?/try-runtime",
+	"pallet-recovery?/try-runtime",
+	"pallet-referenda?/try-runtime",
+	"pallet-remark?/try-runtime",
+	"pallet-root-offences?/try-runtime",
+	"pallet-root-testing?/try-runtime",
+	"pallet-safe-mode?/try-runtime",
+	"pallet-salary?/try-runtime",
+	"pallet-scheduler?/try-runtime",
+	"pallet-scored-pool?/try-runtime",
+	"pallet-session?/try-runtime",
+	"pallet-skip-feeless-payment?/try-runtime",
+	"pallet-society?/try-runtime",
+	"pallet-staking?/try-runtime",
+	"pallet-state-trie-migration?/try-runtime",
+	"pallet-statement?/try-runtime",
+	"pallet-sudo?/try-runtime",
+	"pallet-timestamp?/try-runtime",
+	"pallet-tips?/try-runtime",
+	"pallet-transaction-payment?/try-runtime",
+	"pallet-transaction-storage?/try-runtime",
+	"pallet-treasury?/try-runtime",
+	"pallet-tx-pause?/try-runtime",
+	"pallet-uniques?/try-runtime",
+	"pallet-utility?/try-runtime",
+	"pallet-vesting?/try-runtime",
+	"pallet-whitelist?/try-runtime",
+	"pallet-xcm-bridge-hub-router?/try-runtime",
+	"pallet-xcm-bridge-hub?/try-runtime",
+	"pallet-xcm?/try-runtime",
+	"polkadot-cli?/try-runtime",
+	"polkadot-runtime-common?/try-runtime",
+	"polkadot-runtime-parachains?/try-runtime",
+	"polkadot-sdk-frame?/try-runtime",
+	"polkadot-service?/try-runtime",
+	"snowbridge-pallet-ethereum-client?/try-runtime",
+	"snowbridge-pallet-inbound-queue?/try-runtime",
+	"snowbridge-pallet-outbound-queue?/try-runtime",
+	"snowbridge-pallet-system?/try-runtime",
+	"sp-runtime?/try-runtime",
+	"staging-parachain-info?/try-runtime",
+]
+serde = [
+	"bp-polkadot-core?/serde",
+	"frame-benchmarking?/serde",
+	"pallet-asset-tx-payment?/serde",
+	"pallet-beefy-mmr?/serde",
+	"pallet-beefy?/serde",
+	"pallet-contracts?/serde",
+	"pallet-conviction-voting?/serde",
+	"pallet-democracy?/serde",
+	"pallet-message-queue?/serde",
+	"pallet-offences?/serde",
+	"pallet-parameters?/serde",
+	"pallet-referenda?/serde",
+	"pallet-remark?/serde",
+	"pallet-state-trie-migration?/serde",
+	"pallet-tips?/serde",
+	"pallet-transaction-payment?/serde",
+	"pallet-transaction-storage?/serde",
+	"pallet-treasury?/serde",
+	"pallet-xcm?/serde",
+	"snowbridge-beacon-primitives?/serde",
+	"snowbridge-core?/serde",
+	"snowbridge-ethereum?/serde",
+	"snowbridge-pallet-ethereum-client?/serde",
+	"snowbridge-pallet-inbound-queue?/serde",
+	"sp-application-crypto?/serde",
+	"sp-arithmetic?/serde",
+	"sp-authority-discovery?/serde",
+	"sp-consensus-aura?/serde",
+	"sp-consensus-babe?/serde",
+	"sp-consensus-beefy?/serde",
+	"sp-consensus-grandpa?/serde",
+	"sp-consensus-slots?/serde",
+	"sp-core?/serde",
+	"sp-mmr-primitives?/serde",
+	"sp-npos-elections?/serde",
+	"sp-runtime?/serde",
+	"sp-staking?/serde",
+	"sp-statement-store?/serde",
+	"sp-storage?/serde",
+	"sp-version?/serde",
+	"sp-weights?/serde",
+]
+experimental = [
+	"frame-support-procedural?/experimental",
+	"frame-support?/experimental",
+	"frame-system?/experimental",
+	"polkadot-sdk-frame?/experimental",
+]
+with-tracing = [
+	"frame-executive?/with-tracing",
+	"frame-executive?/with-tracing",
+	"sp-io?/with-tracing",
+	"sp-io?/with-tracing",
+	"sp-tracing?/with-tracing",
+	"sp-tracing?/with-tracing",
+]
+runtime = ["assets-common", "binary-merkle-tree", "bp-asset-hub-rococo", "bp-asset-hub-westend", "bp-bridge-hub-cumulus", "bp-bridge-hub-kusama", "bp-bridge-hub-polkadot", "bp-bridge-hub-rococo", "bp-bridge-hub-westend", "bp-header-chain", "bp-kusama", "bp-messages", "bp-parachains", "bp-polkadot", "bp-polkadot-bulletin", "bp-polkadot-core", "bp-relayers", "bp-rococo", "bp-runtime", "bp-test-utils", "bp-westend", "bp-xcm-bridge-hub", "bp-xcm-bridge-hub-router", "bridge-hub-common", "bridge-runtime-common", "cumulus-pallet-aura-ext", "cumulus-pallet-dmp-queue", "cumulus-pallet-parachain-system", "cumulus-pallet-parachain-system-proc-macro", "cumulus-pallet-session-benchmarking", "cumulus-pallet-solo-to-para", "cumulus-pallet-xcm", "cumulus-pallet-xcmp-queue", "cumulus-ping", "cumulus-primitives-aura", "cumulus-primitives-core", "cumulus-primitives-parachain-inherent", "cumulus-primitives-proof-size-hostfunction", "cumulus-primitives-storage-weight-reclaim", "cumulus-primitives-timestamp", "cumulus-primitives-utility", "frame-benchmarking", "frame-benchmarking-pallet-pov", "frame-election-provider-solution-type", "frame-election-provider-support", "frame-executive", "frame-metadata-hash-extension", "frame-support", "frame-support-procedural", "frame-support-procedural-tools-derive", "frame-system", "frame-system-benchmarking", "frame-system-rpc-runtime-api", "frame-try-runtime", "pallet-alliance", "pallet-asset-conversion", "pallet-asset-conversion-ops", "pallet-asset-conversion-tx-payment", "pallet-asset-rate", "pallet-asset-tx-payment", "pallet-assets", "pallet-atomic-swap", "pallet-aura", "pallet-authority-discovery", "pallet-authorship", "pallet-babe", "pallet-bags-list", "pallet-balances", "pallet-beefy", "pallet-beefy-mmr", "pallet-bounties", "pallet-bridge-grandpa", "pallet-bridge-messages", "pallet-bridge-parachains", "pallet-bridge-relayers", "pallet-broker", "pallet-child-bounties", "pallet-collator-selection", "pallet-collective", "pallet-collective-content", "pallet-contracts", "pallet-contracts-proc-macro", "pallet-contracts-uapi", "pallet-conviction-voting", "pallet-core-fellowship", "pallet-delegated-staking", "pallet-democracy", "pallet-dev-mode", "pallet-election-provider-multi-phase", "pallet-election-provider-support-benchmarking", "pallet-elections-phragmen", "pallet-fast-unstake", "pallet-glutton", "pallet-grandpa", "pallet-identity", "pallet-im-online", "pallet-indices", "pallet-insecure-randomness-collective-flip", "pallet-lottery", "pallet-membership", "pallet-message-queue", "pallet-migrations", "pallet-mixnet", "pallet-mmr", "pallet-multisig", "pallet-nft-fractionalization", "pallet-nfts", "pallet-nfts-runtime-api", "pallet-nis", "pallet-node-authorization", "pallet-nomination-pools", "pallet-nomination-pools-benchmarking", "pallet-nomination-pools-runtime-api", "pallet-offences", "pallet-offences-benchmarking", "pallet-paged-list", "pallet-parameters", "pallet-preimage", "pallet-proxy", "pallet-ranked-collective", "pallet-recovery", "pallet-referenda", "pallet-remark", "pallet-root-offences", "pallet-root-testing", "pallet-safe-mode", "pallet-salary", "pallet-scheduler", "pallet-scored-pool", "pallet-session", "pallet-session-benchmarking", "pallet-skip-feeless-payment", "pallet-society", "pallet-staking", "pallet-staking-reward-curve", "pallet-staking-reward-fn", "pallet-staking-runtime-api", "pallet-state-trie-migration", "pallet-statement", "pallet-sudo", "pallet-timestamp", "pallet-tips", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "pallet-transaction-storage", "pallet-treasury", "pallet-tx-pause", "pallet-uniques", "pallet-utility", "pallet-vesting", "pallet-whitelist", "pallet-xcm", "pallet-xcm-benchmarks", "pallet-xcm-bridge-hub", "pallet-xcm-bridge-hub-router", "parachains-common", "polkadot-core-primitives", "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-metrics", "polkadot-runtime-parachains", "polkadot-sdk-frame", "rococo-runtime-constants", "sc-chain-spec-derive", "sc-tracing-proc-macro", "slot-range-helper", "snowbridge-beacon-primitives", "snowbridge-core", "snowbridge-ethereum", "snowbridge-outbound-queue-merkle-tree", "snowbridge-outbound-queue-runtime-api", "snowbridge-pallet-ethereum-client", "snowbridge-pallet-ethereum-client-fixtures", "snowbridge-pallet-inbound-queue", "snowbridge-pallet-inbound-queue-fixtures", "snowbridge-pallet-outbound-queue", "snowbridge-pallet-system", "snowbridge-router-primitives", "snowbridge-runtime-common", "snowbridge-system-runtime-api", "sp-api", "sp-api-proc-macro", "sp-application-crypto", "sp-arithmetic", "sp-authority-discovery", "sp-block-builder", "sp-consensus-aura", "sp-consensus-babe", "sp-consensus-beefy", "sp-consensus-grandpa", "sp-consensus-pow", "sp-consensus-slots", "sp-core", "sp-crypto-ec-utils", "sp-crypto-hashing", "sp-crypto-hashing-proc-macro", "sp-debug-derive", "sp-externalities", "sp-genesis-builder", "sp-inherents", "sp-io", "sp-keyring", "sp-keystore", "sp-metadata-ir", "sp-mixnet", "sp-mmr-primitives", "sp-npos-elections", "sp-offchain", "sp-runtime", "sp-runtime-interface", "sp-runtime-interface-proc-macro", "sp-session", "sp-staking", "sp-state-machine", "sp-statement-store", "sp-std", "sp-storage", "sp-timestamp", "sp-tracing", "sp-transaction-pool", "sp-transaction-storage-proof", "sp-trie", "sp-version", "sp-version-proc-macro", "sp-wasm-interface", "sp-weights", "staging-parachain-info", "staging-xcm", "staging-xcm-builder", "staging-xcm-executor", "substrate-bip39", "testnet-parachains-constants", "tracing-gum-proc-macro", "westend-runtime-constants", "xcm-fee-payment-runtime-api", "xcm-procedural"]
+node = ["asset-test-utils", "bridge-hub-test-utils", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", "cumulus-client-consensus-proposer", "cumulus-client-consensus-relay-chain", "cumulus-client-network", "cumulus-client-parachain-inherent", "cumulus-client-pov-recovery", "cumulus-client-service", "cumulus-relay-chain-inprocess-interface", "cumulus-relay-chain-interface", "cumulus-relay-chain-minimal-node", "cumulus-relay-chain-rpc-interface", "cumulus-test-relay-sproof-builder", "emulated-integration-tests-common", "fork-tree", "frame-benchmarking-cli", "frame-remote-externalities", "frame-support-procedural-tools", "generate-bags", "mmr-gadget", "mmr-rpc", "pallet-contracts-mock-network", "pallet-transaction-payment-rpc", "parachains-runtimes-test-utils", "polkadot-approval-distribution", "polkadot-availability-bitfield-distribution", "polkadot-availability-distribution", "polkadot-availability-recovery", "polkadot-cli", "polkadot-collator-protocol", "polkadot-dispute-distribution", "polkadot-erasure-coding", "polkadot-gossip-support", "polkadot-network-bridge", "polkadot-node-collation-generation", "polkadot-node-core-approval-voting", "polkadot-node-core-av-store", "polkadot-node-core-backing", "polkadot-node-core-bitfield-signing", "polkadot-node-core-candidate-validation", "polkadot-node-core-chain-api", "polkadot-node-core-chain-selection", "polkadot-node-core-dispute-coordinator", "polkadot-node-core-parachains-inherent", "polkadot-node-core-prospective-parachains", "polkadot-node-core-provisioner", "polkadot-node-core-pvf", "polkadot-node-core-pvf-checker", "polkadot-node-core-pvf-common", "polkadot-node-core-pvf-execute-worker", "polkadot-node-core-pvf-prepare-worker", "polkadot-node-core-runtime-api", "polkadot-node-jaeger", "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", "polkadot-rpc", "polkadot-service", "polkadot-statement-distribution", "polkadot-statement-table", "sc-allocator", "sc-authority-discovery", "sc-basic-authorship", "sc-block-builder", "sc-chain-spec", "sc-cli", "sc-client-api", "sc-client-db", "sc-consensus", "sc-consensus-aura", "sc-consensus-babe", "sc-consensus-babe-rpc", "sc-consensus-beefy", "sc-consensus-beefy-rpc", "sc-consensus-epochs", "sc-consensus-grandpa", "sc-consensus-grandpa-rpc", "sc-consensus-manual-seal", "sc-consensus-pow", "sc-consensus-slots", "sc-executor", "sc-executor-common", "sc-executor-polkavm", "sc-executor-wasmtime", "sc-informant", "sc-keystore", "sc-mixnet", "sc-network", "sc-network-common", "sc-network-gossip", "sc-network-light", "sc-network-statement", "sc-network-sync", "sc-network-transactions", "sc-network-types", "sc-offchain", "sc-proposer-metrics", "sc-rpc", "sc-rpc-api", "sc-rpc-server", "sc-rpc-spec-v2", "sc-service", "sc-state-db", "sc-statement-store", "sc-storage-monitor", "sc-sync-state-rpc", "sc-sysinfo", "sc-telemetry", "sc-tracing", "sc-transaction-pool", "sc-transaction-pool-api", "sc-utils", "snowbridge-runtime-test-common", "sp-blockchain", "sp-consensus", "sp-core-hashing", "sp-core-hashing-proc-macro", "sp-database", "sp-maybe-compressed-blob", "sp-panic-handler", "sp-rpc", "staging-node-inspect", "staging-tracking-allocator", "std", "subkey", "substrate-build-script-utils", "substrate-frame-rpc-support", "substrate-frame-rpc-system", "substrate-prometheus-endpoint", "substrate-rpc-client", "substrate-state-trie-migration-rpc", "substrate-wasm-builder", "tracing-gum", "xcm-emulator", "xcm-simulator"]
+tuples-96 = [
+	"frame-support-procedural?/tuples-96",
+	"frame-support?/tuples-96",
+]
+
+[package.edition]
+workspace = true
+
+[package.authors]
+workspace = true
+
+[dependencies.assets-common]
+path = "../cumulus/parachains/runtimes/assets/common"
+default-features = false
+optional = true
+
+[dependencies.binary-merkle-tree]
+path = "../substrate/utils/binary-merkle-tree"
+default-features = false
+optional = true
+
+[dependencies.bp-asset-hub-rococo]
+path = "../bridges/chains/chain-asset-hub-rococo"
+default-features = false
+optional = true
+
+[dependencies.bp-asset-hub-westend]
+path = "../bridges/chains/chain-asset-hub-westend"
+default-features = false
+optional = true
+
+[dependencies.bp-bridge-hub-cumulus]
+path = "../bridges/chains/chain-bridge-hub-cumulus"
+default-features = false
+optional = true
+
+[dependencies.bp-bridge-hub-kusama]
+path = "../bridges/chains/chain-bridge-hub-kusama"
+default-features = false
+optional = true
+
+[dependencies.bp-bridge-hub-polkadot]
+path = "../bridges/chains/chain-bridge-hub-polkadot"
+default-features = false
+optional = true
+
+[dependencies.bp-bridge-hub-rococo]
+path = "../bridges/chains/chain-bridge-hub-rococo"
+default-features = false
+optional = true
+
+[dependencies.bp-bridge-hub-westend]
+path = "../bridges/chains/chain-bridge-hub-westend"
+default-features = false
+optional = true
+
+[dependencies.bp-header-chain]
+path = "../bridges/primitives/header-chain"
+default-features = false
+optional = true
+
+[dependencies.bp-kusama]
+path = "../bridges/chains/chain-kusama"
+default-features = false
+optional = true
+
+[dependencies.bp-messages]
+path = "../bridges/primitives/messages"
+default-features = false
+optional = true
+
+[dependencies.bp-parachains]
+path = "../bridges/primitives/parachains"
+default-features = false
+optional = true
+
+[dependencies.bp-polkadot]
+path = "../bridges/chains/chain-polkadot"
+default-features = false
+optional = true
+
+[dependencies.bp-polkadot-bulletin]
+path = "../bridges/chains/chain-polkadot-bulletin"
+default-features = false
+optional = true
+
+[dependencies.bp-polkadot-core]
+path = "../bridges/primitives/polkadot-core"
+default-features = false
+optional = true
+
+[dependencies.bp-relayers]
+path = "../bridges/primitives/relayers"
+default-features = false
+optional = true
+
+[dependencies.bp-rococo]
+path = "../bridges/chains/chain-rococo"
+default-features = false
+optional = true
+
+[dependencies.bp-runtime]
+path = "../bridges/primitives/runtime"
+default-features = false
+optional = true
+
+[dependencies.bp-test-utils]
+path = "../bridges/primitives/test-utils"
+default-features = false
+optional = true
+
+[dependencies.bp-westend]
+path = "../bridges/chains/chain-westend"
+default-features = false
+optional = true
+
+[dependencies.bp-xcm-bridge-hub]
+path = "../bridges/primitives/xcm-bridge-hub"
+default-features = false
+optional = true
+
+[dependencies.bp-xcm-bridge-hub-router]
+path = "../bridges/primitives/xcm-bridge-hub-router"
+default-features = false
+optional = true
+
+[dependencies.bridge-hub-common]
+path = "../cumulus/parachains/runtimes/bridge-hubs/common"
+default-features = false
+optional = true
+
+[dependencies.bridge-runtime-common]
+path = "../bridges/bin/runtime-common"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-aura-ext]
+path = "../cumulus/pallets/aura-ext"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-dmp-queue]
+path = "../cumulus/pallets/dmp-queue"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-parachain-system]
+path = "../cumulus/pallets/parachain-system"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-parachain-system-proc-macro]
+path = "../cumulus/pallets/parachain-system/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-session-benchmarking]
+path = "../cumulus/pallets/session-benchmarking"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-solo-to-para]
+path = "../cumulus/pallets/solo-to-para"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-xcm]
+path = "../cumulus/pallets/xcm"
+default-features = false
+optional = true
+
+[dependencies.cumulus-pallet-xcmp-queue]
+path = "../cumulus/pallets/xcmp-queue"
+default-features = false
+optional = true
+
+[dependencies.cumulus-ping]
+path = "../cumulus/parachains/pallets/ping"
+default-features = false
+optional = true
+
+[dependencies.cumulus-primitives-aura]
+path = "../cumulus/primitives/aura"
+default-features = false
+optional = true
+
+[dependencies.cumulus-primitives-core]
+path = "../cumulus/primitives/core"
+default-features = false
+optional = true
+
+[dependencies.cumulus-primitives-parachain-inherent]
+path = "../cumulus/primitives/parachain-inherent"
+default-features = false
+optional = true
+
+[dependencies.cumulus-primitives-proof-size-hostfunction]
+path = "../cumulus/primitives/proof-size-hostfunction"
+default-features = false
+optional = true
+
+[dependencies.cumulus-primitives-storage-weight-reclaim]
+path = "../cumulus/primitives/storage-weight-reclaim"
+default-features = false
+optional = true
+
+[dependencies.cumulus-primitives-timestamp]
+path = "../cumulus/primitives/timestamp"
+default-features = false
+optional = true
+
+[dependencies.cumulus-primitives-utility]
+path = "../cumulus/primitives/utility"
+default-features = false
+optional = true
+
+[dependencies.frame-benchmarking]
+path = "../substrate/frame/benchmarking"
+default-features = false
+optional = true
+
+[dependencies.frame-benchmarking-pallet-pov]
+path = "../substrate/frame/benchmarking/pov"
+default-features = false
+optional = true
+
+[dependencies.frame-election-provider-solution-type]
+path = "../substrate/frame/election-provider-support/solution-type"
+default-features = false
+optional = true
+
+[dependencies.frame-election-provider-support]
+path = "../substrate/frame/election-provider-support"
+default-features = false
+optional = true
+
+[dependencies.frame-executive]
+path = "../substrate/frame/executive"
+default-features = false
+optional = true
+
+[dependencies.frame-metadata-hash-extension]
+path = "../substrate/frame/metadata-hash-extension"
+default-features = false
+optional = true
+
+[dependencies.frame-support]
+path = "../substrate/frame/support"
+default-features = false
+optional = true
+
+[dependencies.frame-support-procedural]
+path = "../substrate/frame/support/procedural"
+default-features = false
+optional = true
+
+[dependencies.frame-support-procedural-tools-derive]
+path = "../substrate/frame/support/procedural/tools/derive"
+default-features = false
+optional = true
+
+[dependencies.frame-system]
+path = "../substrate/frame/system"
+default-features = false
+optional = true
+
+[dependencies.frame-system-benchmarking]
+path = "../substrate/frame/system/benchmarking"
+default-features = false
+optional = true
+
+[dependencies.frame-system-rpc-runtime-api]
+path = "../substrate/frame/system/rpc/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.frame-try-runtime]
+path = "../substrate/frame/try-runtime"
+default-features = false
+optional = true
+
+[dependencies.pallet-alliance]
+path = "../substrate/frame/alliance"
+default-features = false
+optional = true
+
+[dependencies.pallet-asset-conversion]
+path = "../substrate/frame/asset-conversion"
+default-features = false
+optional = true
+
+[dependencies.pallet-asset-conversion-ops]
+path = "../substrate/frame/asset-conversion/ops"
+default-features = false
+optional = true
+
+[dependencies.pallet-asset-conversion-tx-payment]
+path = "../substrate/frame/transaction-payment/asset-conversion-tx-payment"
+default-features = false
+optional = true
+
+[dependencies.pallet-asset-rate]
+path = "../substrate/frame/asset-rate"
+default-features = false
+optional = true
+
+[dependencies.pallet-asset-tx-payment]
+path = "../substrate/frame/transaction-payment/asset-tx-payment"
+default-features = false
+optional = true
+
+[dependencies.pallet-assets]
+path = "../substrate/frame/assets"
+default-features = false
+optional = true
+
+[dependencies.pallet-atomic-swap]
+path = "../substrate/frame/atomic-swap"
+default-features = false
+optional = true
+
+[dependencies.pallet-aura]
+path = "../substrate/frame/aura"
+default-features = false
+optional = true
+
+[dependencies.pallet-authority-discovery]
+path = "../substrate/frame/authority-discovery"
+default-features = false
+optional = true
+
+[dependencies.pallet-authorship]
+path = "../substrate/frame/authorship"
+default-features = false
+optional = true
+
+[dependencies.pallet-babe]
+path = "../substrate/frame/babe"
+default-features = false
+optional = true
+
+[dependencies.pallet-bags-list]
+path = "../substrate/frame/bags-list"
+default-features = false
+optional = true
+
+[dependencies.pallet-balances]
+path = "../substrate/frame/balances"
+default-features = false
+optional = true
+
+[dependencies.pallet-beefy]
+path = "../substrate/frame/beefy"
+default-features = false
+optional = true
+
+[dependencies.pallet-beefy-mmr]
+path = "../substrate/frame/beefy-mmr"
+default-features = false
+optional = true
+
+[dependencies.pallet-bounties]
+path = "../substrate/frame/bounties"
+default-features = false
+optional = true
+
+[dependencies.pallet-bridge-grandpa]
+path = "../bridges/modules/grandpa"
+default-features = false
+optional = true
+
+[dependencies.pallet-bridge-messages]
+path = "../bridges/modules/messages"
+default-features = false
+optional = true
+
+[dependencies.pallet-bridge-parachains]
+path = "../bridges/modules/parachains"
+default-features = false
+optional = true
+
+[dependencies.pallet-bridge-relayers]
+path = "../bridges/modules/relayers"
+default-features = false
+optional = true
+
+[dependencies.pallet-broker]
+path = "../substrate/frame/broker"
+default-features = false
+optional = true
+
+[dependencies.pallet-child-bounties]
+path = "../substrate/frame/child-bounties"
+default-features = false
+optional = true
+
+[dependencies.pallet-collator-selection]
+path = "../cumulus/pallets/collator-selection"
+default-features = false
+optional = true
+
+[dependencies.pallet-collective]
+path = "../substrate/frame/collective"
+default-features = false
+optional = true
+
+[dependencies.pallet-collective-content]
+path = "../cumulus/parachains/pallets/collective-content"
+default-features = false
+optional = true
+
+[dependencies.pallet-contracts]
+path = "../substrate/frame/contracts"
+default-features = false
+optional = true
+
+[dependencies.pallet-contracts-proc-macro]
+path = "../substrate/frame/contracts/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.pallet-contracts-uapi]
+path = "../substrate/frame/contracts/uapi"
+default-features = false
+optional = true
+
+[dependencies.pallet-conviction-voting]
+path = "../substrate/frame/conviction-voting"
+default-features = false
+optional = true
+
+[dependencies.pallet-core-fellowship]
+path = "../substrate/frame/core-fellowship"
+default-features = false
+optional = true
+
+[dependencies.pallet-delegated-staking]
+path = "../substrate/frame/delegated-staking"
+default-features = false
+optional = true
+
+[dependencies.pallet-democracy]
+path = "../substrate/frame/democracy"
+default-features = false
+optional = true
+
+[dependencies.pallet-dev-mode]
+path = "../substrate/frame/examples/dev-mode"
+default-features = false
+optional = true
+
+[dependencies.pallet-election-provider-multi-phase]
+path = "../substrate/frame/election-provider-multi-phase"
+default-features = false
+optional = true
+
+[dependencies.pallet-election-provider-support-benchmarking]
+path = "../substrate/frame/election-provider-support/benchmarking"
+default-features = false
+optional = true
+
+[dependencies.pallet-elections-phragmen]
+path = "../substrate/frame/elections-phragmen"
+default-features = false
+optional = true
+
+[dependencies.pallet-fast-unstake]
+path = "../substrate/frame/fast-unstake"
+default-features = false
+optional = true
+
+[dependencies.pallet-glutton]
+path = "../substrate/frame/glutton"
+default-features = false
+optional = true
+
+[dependencies.pallet-grandpa]
+path = "../substrate/frame/grandpa"
+default-features = false
+optional = true
+
+[dependencies.pallet-identity]
+path = "../substrate/frame/identity"
+default-features = false
+optional = true
+
+[dependencies.pallet-im-online]
+path = "../substrate/frame/im-online"
+default-features = false
+optional = true
+
+[dependencies.pallet-indices]
+path = "../substrate/frame/indices"
+default-features = false
+optional = true
+
+[dependencies.pallet-insecure-randomness-collective-flip]
+path = "../substrate/frame/insecure-randomness-collective-flip"
+default-features = false
+optional = true
+
+[dependencies.pallet-lottery]
+path = "../substrate/frame/lottery"
+default-features = false
+optional = true
+
+[dependencies.pallet-membership]
+path = "../substrate/frame/membership"
+default-features = false
+optional = true
+
+[dependencies.pallet-message-queue]
+path = "../substrate/frame/message-queue"
+default-features = false
+optional = true
+
+[dependencies.pallet-migrations]
+path = "../substrate/frame/migrations"
+default-features = false
+optional = true
+
+[dependencies.pallet-mixnet]
+path = "../substrate/frame/mixnet"
+default-features = false
+optional = true
+
+[dependencies.pallet-mmr]
+path = "../substrate/frame/merkle-mountain-range"
+default-features = false
+optional = true
+
+[dependencies.pallet-multisig]
+path = "../substrate/frame/multisig"
+default-features = false
+optional = true
+
+[dependencies.pallet-nft-fractionalization]
+path = "../substrate/frame/nft-fractionalization"
+default-features = false
+optional = true
+
+[dependencies.pallet-nfts]
+path = "../substrate/frame/nfts"
+default-features = false
+optional = true
+
+[dependencies.pallet-nfts-runtime-api]
+path = "../substrate/frame/nfts/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.pallet-nis]
+path = "../substrate/frame/nis"
+default-features = false
+optional = true
+
+[dependencies.pallet-node-authorization]
+path = "../substrate/frame/node-authorization"
+default-features = false
+optional = true
+
+[dependencies.pallet-nomination-pools]
+path = "../substrate/frame/nomination-pools"
+default-features = false
+optional = true
+
+[dependencies.pallet-nomination-pools-benchmarking]
+path = "../substrate/frame/nomination-pools/benchmarking"
+default-features = false
+optional = true
+
+[dependencies.pallet-nomination-pools-runtime-api]
+path = "../substrate/frame/nomination-pools/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.pallet-offences]
+path = "../substrate/frame/offences"
+default-features = false
+optional = true
+
+[dependencies.pallet-offences-benchmarking]
+path = "../substrate/frame/offences/benchmarking"
+default-features = false
+optional = true
+
+[dependencies.pallet-paged-list]
+path = "../substrate/frame/paged-list"
+default-features = false
+optional = true
+
+[dependencies.pallet-parameters]
+path = "../substrate/frame/parameters"
+default-features = false
+optional = true
+
+[dependencies.pallet-preimage]
+path = "../substrate/frame/preimage"
+default-features = false
+optional = true
+
+[dependencies.pallet-proxy]
+path = "../substrate/frame/proxy"
+default-features = false
+optional = true
+
+[dependencies.pallet-ranked-collective]
+path = "../substrate/frame/ranked-collective"
+default-features = false
+optional = true
+
+[dependencies.pallet-recovery]
+path = "../substrate/frame/recovery"
+default-features = false
+optional = true
+
+[dependencies.pallet-referenda]
+path = "../substrate/frame/referenda"
+default-features = false
+optional = true
+
+[dependencies.pallet-remark]
+path = "../substrate/frame/remark"
+default-features = false
+optional = true
+
+[dependencies.pallet-root-offences]
+path = "../substrate/frame/root-offences"
+default-features = false
+optional = true
+
+[dependencies.pallet-root-testing]
+path = "../substrate/frame/root-testing"
+default-features = false
+optional = true
+
+[dependencies.pallet-safe-mode]
+path = "../substrate/frame/safe-mode"
+default-features = false
+optional = true
+
+[dependencies.pallet-salary]
+path = "../substrate/frame/salary"
+default-features = false
+optional = true
+
+[dependencies.pallet-scheduler]
+path = "../substrate/frame/scheduler"
+default-features = false
+optional = true
+
+[dependencies.pallet-scored-pool]
+path = "../substrate/frame/scored-pool"
+default-features = false
+optional = true
+
+[dependencies.pallet-session]
+path = "../substrate/frame/session"
+default-features = false
+optional = true
+
+[dependencies.pallet-session-benchmarking]
+path = "../substrate/frame/session/benchmarking"
+default-features = false
+optional = true
+
+[dependencies.pallet-skip-feeless-payment]
+path = "../substrate/frame/transaction-payment/skip-feeless-payment"
+default-features = false
+optional = true
+
+[dependencies.pallet-society]
+path = "../substrate/frame/society"
+default-features = false
+optional = true
+
+[dependencies.pallet-staking]
+path = "../substrate/frame/staking"
+default-features = false
+optional = true
+
+[dependencies.pallet-staking-reward-curve]
+path = "../substrate/frame/staking/reward-curve"
+default-features = false
+optional = true
+
+[dependencies.pallet-staking-reward-fn]
+path = "../substrate/frame/staking/reward-fn"
+default-features = false
+optional = true
+
+[dependencies.pallet-staking-runtime-api]
+path = "../substrate/frame/staking/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.pallet-state-trie-migration]
+path = "../substrate/frame/state-trie-migration"
+default-features = false
+optional = true
+
+[dependencies.pallet-statement]
+path = "../substrate/frame/statement"
+default-features = false
+optional = true
+
+[dependencies.pallet-sudo]
+path = "../substrate/frame/sudo"
+default-features = false
+optional = true
+
+[dependencies.pallet-timestamp]
+path = "../substrate/frame/timestamp"
+default-features = false
+optional = true
+
+[dependencies.pallet-tips]
+path = "../substrate/frame/tips"
+default-features = false
+optional = true
+
+[dependencies.pallet-transaction-payment]
+path = "../substrate/frame/transaction-payment"
+default-features = false
+optional = true
+
+[dependencies.pallet-transaction-payment-rpc-runtime-api]
+path = "../substrate/frame/transaction-payment/rpc/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.pallet-transaction-storage]
+path = "../substrate/frame/transaction-storage"
+default-features = false
+optional = true
+
+[dependencies.pallet-treasury]
+path = "../substrate/frame/treasury"
+default-features = false
+optional = true
+
+[dependencies.pallet-tx-pause]
+path = "../substrate/frame/tx-pause"
+default-features = false
+optional = true
+
+[dependencies.pallet-uniques]
+path = "../substrate/frame/uniques"
+default-features = false
+optional = true
+
+[dependencies.pallet-utility]
+path = "../substrate/frame/utility"
+default-features = false
+optional = true
+
+[dependencies.pallet-vesting]
+path = "../substrate/frame/vesting"
+default-features = false
+optional = true
+
+[dependencies.pallet-whitelist]
+path = "../substrate/frame/whitelist"
+default-features = false
+optional = true
+
+[dependencies.pallet-xcm]
+path = "../polkadot/xcm/pallet-xcm"
+default-features = false
+optional = true
+
+[dependencies.pallet-xcm-benchmarks]
+path = "../polkadot/xcm/pallet-xcm-benchmarks"
+default-features = false
+optional = true
+
+[dependencies.pallet-xcm-bridge-hub]
+path = "../bridges/modules/xcm-bridge-hub"
+default-features = false
+optional = true
+
+[dependencies.pallet-xcm-bridge-hub-router]
+path = "../bridges/modules/xcm-bridge-hub-router"
+default-features = false
+optional = true
+
+[dependencies.parachains-common]
+path = "../cumulus/parachains/common"
+default-features = false
+optional = true
+
+[dependencies.polkadot-core-primitives]
+path = "../polkadot/core-primitives"
+default-features = false
+optional = true
+
+[dependencies.polkadot-parachain-primitives]
+path = "../polkadot/parachain"
+default-features = false
+optional = true
+
+[dependencies.polkadot-primitives]
+path = "../polkadot/primitives"
+default-features = false
+optional = true
+
+[dependencies.polkadot-runtime-common]
+path = "../polkadot/runtime/common"
+default-features = false
+optional = true
+
+[dependencies.polkadot-runtime-metrics]
+path = "../polkadot/runtime/metrics"
+default-features = false
+optional = true
+
+[dependencies.polkadot-runtime-parachains]
+path = "../polkadot/runtime/parachains"
+default-features = false
+optional = true
+
+[dependencies.polkadot-sdk-frame]
+path = "../substrate/frame"
+default-features = false
+optional = true
+
+[dependencies.rococo-runtime-constants]
+path = "../polkadot/runtime/rococo/constants"
+default-features = false
+optional = true
+
+[dependencies.sc-chain-spec-derive]
+path = "../substrate/client/chain-spec/derive"
+default-features = false
+optional = true
+
+[dependencies.sc-tracing-proc-macro]
+path = "../substrate/client/tracing/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.slot-range-helper]
+path = "../polkadot/runtime/common/slot_range_helper"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-beacon-primitives]
+path = "../bridges/snowbridge/primitives/beacon"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-core]
+path = "../bridges/snowbridge/primitives/core"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-ethereum]
+path = "../bridges/snowbridge/primitives/ethereum"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-outbound-queue-merkle-tree]
+path = "../bridges/snowbridge/pallets/outbound-queue/merkle-tree"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-outbound-queue-runtime-api]
+path = "../bridges/snowbridge/pallets/outbound-queue/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-pallet-ethereum-client]
+path = "../bridges/snowbridge/pallets/ethereum-client"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-pallet-ethereum-client-fixtures]
+path = "../bridges/snowbridge/pallets/ethereum-client/fixtures"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-pallet-inbound-queue]
+path = "../bridges/snowbridge/pallets/inbound-queue"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-pallet-inbound-queue-fixtures]
+path = "../bridges/snowbridge/pallets/inbound-queue/fixtures"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-pallet-outbound-queue]
+path = "../bridges/snowbridge/pallets/outbound-queue"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-pallet-system]
+path = "../bridges/snowbridge/pallets/system"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-router-primitives]
+path = "../bridges/snowbridge/primitives/router"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-runtime-common]
+path = "../bridges/snowbridge/runtime/runtime-common"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-system-runtime-api]
+path = "../bridges/snowbridge/pallets/system/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.sp-api]
+path = "../substrate/primitives/api"
+default-features = false
+optional = true
+
+[dependencies.sp-api-proc-macro]
+path = "../substrate/primitives/api/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.sp-application-crypto]
+path = "../substrate/primitives/application-crypto"
+default-features = false
+optional = true
+
+[dependencies.sp-arithmetic]
+path = "../substrate/primitives/arithmetic"
+default-features = false
+optional = true
+
+[dependencies.sp-authority-discovery]
+path = "../substrate/primitives/authority-discovery"
+default-features = false
+optional = true
+
+[dependencies.sp-block-builder]
+path = "../substrate/primitives/block-builder"
+default-features = false
+optional = true
+
+[dependencies.sp-consensus-aura]
+path = "../substrate/primitives/consensus/aura"
+default-features = false
+optional = true
+
+[dependencies.sp-consensus-babe]
+path = "../substrate/primitives/consensus/babe"
+default-features = false
+optional = true
+
+[dependencies.sp-consensus-beefy]
+path = "../substrate/primitives/consensus/beefy"
+default-features = false
+optional = true
+
+[dependencies.sp-consensus-grandpa]
+path = "../substrate/primitives/consensus/grandpa"
+default-features = false
+optional = true
+
+[dependencies.sp-consensus-pow]
+path = "../substrate/primitives/consensus/pow"
+default-features = false
+optional = true
+
+[dependencies.sp-consensus-slots]
+path = "../substrate/primitives/consensus/slots"
+default-features = false
+optional = true
+
+[dependencies.sp-core]
+path = "../substrate/primitives/core"
+default-features = false
+optional = true
+
+[dependencies.sp-crypto-ec-utils]
+path = "../substrate/primitives/crypto/ec-utils"
+default-features = false
+optional = true
+
+[dependencies.sp-crypto-hashing]
+path = "../substrate/primitives/crypto/hashing"
+default-features = false
+optional = true
+
+[dependencies.sp-crypto-hashing-proc-macro]
+path = "../substrate/primitives/crypto/hashing/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.sp-debug-derive]
+path = "../substrate/primitives/debug-derive"
+default-features = false
+optional = true
+
+[dependencies.sp-externalities]
+path = "../substrate/primitives/externalities"
+default-features = false
+optional = true
+
+[dependencies.sp-genesis-builder]
+path = "../substrate/primitives/genesis-builder"
+default-features = false
+optional = true
+
+[dependencies.sp-inherents]
+path = "../substrate/primitives/inherents"
+default-features = false
+optional = true
+
+[dependencies.sp-io]
+path = "../substrate/primitives/io"
+default-features = false
+optional = true
+
+[dependencies.sp-keyring]
+path = "../substrate/primitives/keyring"
+default-features = false
+optional = true
+
+[dependencies.sp-keystore]
+path = "../substrate/primitives/keystore"
+default-features = false
+optional = true
+
+[dependencies.sp-metadata-ir]
+path = "../substrate/primitives/metadata-ir"
+default-features = false
+optional = true
+
+[dependencies.sp-mixnet]
+path = "../substrate/primitives/mixnet"
+default-features = false
+optional = true
+
+[dependencies.sp-mmr-primitives]
+path = "../substrate/primitives/merkle-mountain-range"
+default-features = false
+optional = true
+
+[dependencies.sp-npos-elections]
+path = "../substrate/primitives/npos-elections"
+default-features = false
+optional = true
+
+[dependencies.sp-offchain]
+path = "../substrate/primitives/offchain"
+default-features = false
+optional = true
+
+[dependencies.sp-runtime]
+path = "../substrate/primitives/runtime"
+default-features = false
+optional = true
+
+[dependencies.sp-runtime-interface]
+path = "../substrate/primitives/runtime-interface"
+default-features = false
+optional = true
+
+[dependencies.sp-runtime-interface-proc-macro]
+path = "../substrate/primitives/runtime-interface/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.sp-session]
+path = "../substrate/primitives/session"
+default-features = false
+optional = true
+
+[dependencies.sp-staking]
+path = "../substrate/primitives/staking"
+default-features = false
+optional = true
+
+[dependencies.sp-state-machine]
+path = "../substrate/primitives/state-machine"
+default-features = false
+optional = true
+
+[dependencies.sp-statement-store]
+path = "../substrate/primitives/statement-store"
+default-features = false
+optional = true
+
+[dependencies.sp-std]
+path = "../substrate/primitives/std"
+default-features = false
+optional = true
+
+[dependencies.sp-storage]
+path = "../substrate/primitives/storage"
+default-features = false
+optional = true
+
+[dependencies.sp-timestamp]
+path = "../substrate/primitives/timestamp"
+default-features = false
+optional = true
+
+[dependencies.sp-tracing]
+path = "../substrate/primitives/tracing"
+default-features = false
+optional = true
+
+[dependencies.sp-transaction-pool]
+path = "../substrate/primitives/transaction-pool"
+default-features = false
+optional = true
+
+[dependencies.sp-transaction-storage-proof]
+path = "../substrate/primitives/transaction-storage-proof"
+default-features = false
+optional = true
+
+[dependencies.sp-trie]
+path = "../substrate/primitives/trie"
+default-features = false
+optional = true
+
+[dependencies.sp-version]
+path = "../substrate/primitives/version"
+default-features = false
+optional = true
+
+[dependencies.sp-version-proc-macro]
+path = "../substrate/primitives/version/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.sp-wasm-interface]
+path = "../substrate/primitives/wasm-interface"
+default-features = false
+optional = true
+
+[dependencies.sp-weights]
+path = "../substrate/primitives/weights"
+default-features = false
+optional = true
+
+[dependencies.staging-parachain-info]
+path = "../cumulus/parachains/pallets/parachain-info"
+default-features = false
+optional = true
+
+[dependencies.staging-xcm]
+path = "../polkadot/xcm"
+default-features = false
+optional = true
+
+[dependencies.staging-xcm-builder]
+path = "../polkadot/xcm/xcm-builder"
+default-features = false
+optional = true
+
+[dependencies.staging-xcm-executor]
+path = "../polkadot/xcm/xcm-executor"
+default-features = false
+optional = true
+
+[dependencies.substrate-bip39]
+path = "../substrate/utils/substrate-bip39"
+default-features = false
+optional = true
+
+[dependencies.testnet-parachains-constants]
+path = "../cumulus/parachains/runtimes/constants"
+default-features = false
+optional = true
+
+[dependencies.tracing-gum-proc-macro]
+path = "../polkadot/node/gum/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.westend-runtime-constants]
+path = "../polkadot/runtime/westend/constants"
+default-features = false
+optional = true
+
+[dependencies.xcm-fee-payment-runtime-api]
+path = "../polkadot/xcm/xcm-fee-payment-runtime-api"
+default-features = false
+optional = true
+
+[dependencies.xcm-procedural]
+path = "../polkadot/xcm/procedural"
+default-features = false
+optional = true
+
+[dependencies.asset-test-utils]
+path = "../cumulus/parachains/runtimes/assets/test-utils"
+default-features = false
+optional = true
+
+[dependencies.bridge-hub-test-utils]
+path = "../cumulus/parachains/runtimes/bridge-hubs/test-utils"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-cli]
+path = "../cumulus/client/cli"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-collator]
+path = "../cumulus/client/collator"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-consensus-aura]
+path = "../cumulus/client/consensus/aura"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-consensus-common]
+path = "../cumulus/client/consensus/common"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-consensus-proposer]
+path = "../cumulus/client/consensus/proposer"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-consensus-relay-chain]
+path = "../cumulus/client/consensus/relay-chain"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-network]
+path = "../cumulus/client/network"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-parachain-inherent]
+path = "../cumulus/client/parachain-inherent"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-pov-recovery]
+path = "../cumulus/client/pov-recovery"
+default-features = false
+optional = true
+
+[dependencies.cumulus-client-service]
+path = "../cumulus/client/service"
+default-features = false
+optional = true
+
+[dependencies.cumulus-relay-chain-inprocess-interface]
+path = "../cumulus/client/relay-chain-inprocess-interface"
+default-features = false
+optional = true
+
+[dependencies.cumulus-relay-chain-interface]
+path = "../cumulus/client/relay-chain-interface"
+default-features = false
+optional = true
+
+[dependencies.cumulus-relay-chain-minimal-node]
+path = "../cumulus/client/relay-chain-minimal-node"
+default-features = false
+optional = true
+
+[dependencies.cumulus-relay-chain-rpc-interface]
+path = "../cumulus/client/relay-chain-rpc-interface"
+default-features = false
+optional = true
+
+[dependencies.cumulus-test-relay-sproof-builder]
+path = "../cumulus/test/relay-sproof-builder"
+default-features = false
+optional = true
+
+[dependencies.emulated-integration-tests-common]
+path = "../cumulus/parachains/integration-tests/emulated/common"
+default-features = false
+optional = true
+
+[dependencies.fork-tree]
+path = "../substrate/utils/fork-tree"
+default-features = false
+optional = true
+
+[dependencies.frame-benchmarking-cli]
+path = "../substrate/utils/frame/benchmarking-cli"
+default-features = false
+optional = true
+
+[dependencies.frame-remote-externalities]
+path = "../substrate/utils/frame/remote-externalities"
+default-features = false
+optional = true
+
+[dependencies.frame-support-procedural-tools]
+path = "../substrate/frame/support/procedural/tools"
+default-features = false
+optional = true
+
+[dependencies.generate-bags]
+path = "../substrate/utils/frame/generate-bags"
+default-features = false
+optional = true
+
+[dependencies.mmr-gadget]
+path = "../substrate/client/merkle-mountain-range"
+default-features = false
+optional = true
+
+[dependencies.mmr-rpc]
+path = "../substrate/client/merkle-mountain-range/rpc"
+default-features = false
+optional = true
+
+[dependencies.pallet-contracts-mock-network]
+path = "../substrate/frame/contracts/mock-network"
+default-features = false
+optional = true
+
+[dependencies.pallet-transaction-payment-rpc]
+path = "../substrate/frame/transaction-payment/rpc"
+default-features = false
+optional = true
+
+[dependencies.parachains-runtimes-test-utils]
+path = "../cumulus/parachains/runtimes/test-utils"
+default-features = false
+optional = true
+
+[dependencies.polkadot-approval-distribution]
+path = "../polkadot/node/network/approval-distribution"
+default-features = false
+optional = true
+
+[dependencies.polkadot-availability-bitfield-distribution]
+path = "../polkadot/node/network/bitfield-distribution"
+default-features = false
+optional = true
+
+[dependencies.polkadot-availability-distribution]
+path = "../polkadot/node/network/availability-distribution"
+default-features = false
+optional = true
+
+[dependencies.polkadot-availability-recovery]
+path = "../polkadot/node/network/availability-recovery"
+default-features = false
+optional = true
+
+[dependencies.polkadot-cli]
+path = "../polkadot/cli"
+default-features = false
+optional = true
+
+[dependencies.polkadot-collator-protocol]
+path = "../polkadot/node/network/collator-protocol"
+default-features = false
+optional = true
+
+[dependencies.polkadot-dispute-distribution]
+path = "../polkadot/node/network/dispute-distribution"
+default-features = false
+optional = true
+
+[dependencies.polkadot-erasure-coding]
+path = "../polkadot/erasure-coding"
+default-features = false
+optional = true
+
+[dependencies.polkadot-gossip-support]
+path = "../polkadot/node/network/gossip-support"
+default-features = false
+optional = true
+
+[dependencies.polkadot-network-bridge]
+path = "../polkadot/node/network/bridge"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-collation-generation]
+path = "../polkadot/node/collation-generation"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-approval-voting]
+path = "../polkadot/node/core/approval-voting"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-av-store]
+path = "../polkadot/node/core/av-store"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-backing]
+path = "../polkadot/node/core/backing"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-bitfield-signing]
+path = "../polkadot/node/core/bitfield-signing"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-candidate-validation]
+path = "../polkadot/node/core/candidate-validation"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-chain-api]
+path = "../polkadot/node/core/chain-api"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-chain-selection]
+path = "../polkadot/node/core/chain-selection"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-dispute-coordinator]
+path = "../polkadot/node/core/dispute-coordinator"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-parachains-inherent]
+path = "../polkadot/node/core/parachains-inherent"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-prospective-parachains]
+path = "../polkadot/node/core/prospective-parachains"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-provisioner]
+path = "../polkadot/node/core/provisioner"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-pvf]
+path = "../polkadot/node/core/pvf"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-pvf-checker]
+path = "../polkadot/node/core/pvf-checker"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-pvf-common]
+path = "../polkadot/node/core/pvf/common"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-pvf-execute-worker]
+path = "../polkadot/node/core/pvf/execute-worker"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-pvf-prepare-worker]
+path = "../polkadot/node/core/pvf/prepare-worker"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-core-runtime-api]
+path = "../polkadot/node/core/runtime-api"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-jaeger]
+path = "../polkadot/node/jaeger"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-metrics]
+path = "../polkadot/node/metrics"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-network-protocol]
+path = "../polkadot/node/network/protocol"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-primitives]
+path = "../polkadot/node/primitives"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-subsystem]
+path = "../polkadot/node/subsystem"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-subsystem-types]
+path = "../polkadot/node/subsystem-types"
+default-features = false
+optional = true
+
+[dependencies.polkadot-node-subsystem-util]
+path = "../polkadot/node/subsystem-util"
+default-features = false
+optional = true
+
+[dependencies.polkadot-overseer]
+path = "../polkadot/node/overseer"
+default-features = false
+optional = true
+
+[dependencies.polkadot-rpc]
+path = "../polkadot/rpc"
+default-features = false
+optional = true
+
+[dependencies.polkadot-service]
+path = "../polkadot/node/service"
+default-features = false
+optional = true
+
+[dependencies.polkadot-statement-distribution]
+path = "../polkadot/node/network/statement-distribution"
+default-features = false
+optional = true
+
+[dependencies.polkadot-statement-table]
+path = "../polkadot/statement-table"
+default-features = false
+optional = true
+
+[dependencies.sc-allocator]
+path = "../substrate/client/allocator"
+default-features = false
+optional = true
+
+[dependencies.sc-authority-discovery]
+path = "../substrate/client/authority-discovery"
+default-features = false
+optional = true
+
+[dependencies.sc-basic-authorship]
+path = "../substrate/client/basic-authorship"
+default-features = false
+optional = true
+
+[dependencies.sc-block-builder]
+path = "../substrate/client/block-builder"
+default-features = false
+optional = true
+
+[dependencies.sc-chain-spec]
+path = "../substrate/client/chain-spec"
+default-features = false
+optional = true
+
+[dependencies.sc-cli]
+path = "../substrate/client/cli"
+default-features = false
+optional = true
+
+[dependencies.sc-client-api]
+path = "../substrate/client/api"
+default-features = false
+optional = true
+
+[dependencies.sc-client-db]
+path = "../substrate/client/db"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus]
+path = "../substrate/client/consensus/common"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-aura]
+path = "../substrate/client/consensus/aura"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-babe]
+path = "../substrate/client/consensus/babe"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-babe-rpc]
+path = "../substrate/client/consensus/babe/rpc"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-beefy]
+path = "../substrate/client/consensus/beefy"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-beefy-rpc]
+path = "../substrate/client/consensus/beefy/rpc"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-epochs]
+path = "../substrate/client/consensus/epochs"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-grandpa]
+path = "../substrate/client/consensus/grandpa"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-grandpa-rpc]
+path = "../substrate/client/consensus/grandpa/rpc"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-manual-seal]
+path = "../substrate/client/consensus/manual-seal"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-pow]
+path = "../substrate/client/consensus/pow"
+default-features = false
+optional = true
+
+[dependencies.sc-consensus-slots]
+path = "../substrate/client/consensus/slots"
+default-features = false
+optional = true
+
+[dependencies.sc-executor]
+path = "../substrate/client/executor"
+default-features = false
+optional = true
+
+[dependencies.sc-executor-common]
+path = "../substrate/client/executor/common"
+default-features = false
+optional = true
+
+[dependencies.sc-executor-polkavm]
+path = "../substrate/client/executor/polkavm"
+default-features = false
+optional = true
+
+[dependencies.sc-executor-wasmtime]
+path = "../substrate/client/executor/wasmtime"
+default-features = false
+optional = true
+
+[dependencies.sc-informant]
+path = "../substrate/client/informant"
+default-features = false
+optional = true
+
+[dependencies.sc-keystore]
+path = "../substrate/client/keystore"
+default-features = false
+optional = true
+
+[dependencies.sc-mixnet]
+path = "../substrate/client/mixnet"
+default-features = false
+optional = true
+
+[dependencies.sc-network]
+path = "../substrate/client/network"
+default-features = false
+optional = true
+
+[dependencies.sc-network-common]
+path = "../substrate/client/network/common"
+default-features = false
+optional = true
+
+[dependencies.sc-network-gossip]
+path = "../substrate/client/network-gossip"
+default-features = false
+optional = true
+
+[dependencies.sc-network-light]
+path = "../substrate/client/network/light"
+default-features = false
+optional = true
+
+[dependencies.sc-network-statement]
+path = "../substrate/client/network/statement"
+default-features = false
+optional = true
+
+[dependencies.sc-network-sync]
+path = "../substrate/client/network/sync"
+default-features = false
+optional = true
+
+[dependencies.sc-network-transactions]
+path = "../substrate/client/network/transactions"
+default-features = false
+optional = true
+
+[dependencies.sc-network-types]
+path = "../substrate/client/network/types"
+default-features = false
+optional = true
+
+[dependencies.sc-offchain]
+path = "../substrate/client/offchain"
+default-features = false
+optional = true
+
+[dependencies.sc-proposer-metrics]
+path = "../substrate/client/proposer-metrics"
+default-features = false
+optional = true
+
+[dependencies.sc-rpc]
+path = "../substrate/client/rpc"
+default-features = false
+optional = true
+
+[dependencies.sc-rpc-api]
+path = "../substrate/client/rpc-api"
+default-features = false
+optional = true
+
+[dependencies.sc-rpc-server]
+path = "../substrate/client/rpc-servers"
+default-features = false
+optional = true
+
+[dependencies.sc-rpc-spec-v2]
+path = "../substrate/client/rpc-spec-v2"
+default-features = false
+optional = true
+
+[dependencies.sc-service]
+path = "../substrate/client/service"
+default-features = false
+optional = true
+
+[dependencies.sc-state-db]
+path = "../substrate/client/state-db"
+default-features = false
+optional = true
+
+[dependencies.sc-statement-store]
+path = "../substrate/client/statement-store"
+default-features = false
+optional = true
+
+[dependencies.sc-storage-monitor]
+path = "../substrate/client/storage-monitor"
+default-features = false
+optional = true
+
+[dependencies.sc-sync-state-rpc]
+path = "../substrate/client/sync-state-rpc"
+default-features = false
+optional = true
+
+[dependencies.sc-sysinfo]
+path = "../substrate/client/sysinfo"
+default-features = false
+optional = true
+
+[dependencies.sc-telemetry]
+path = "../substrate/client/telemetry"
+default-features = false
+optional = true
+
+[dependencies.sc-tracing]
+path = "../substrate/client/tracing"
+default-features = false
+optional = true
+
+[dependencies.sc-transaction-pool]
+path = "../substrate/client/transaction-pool"
+default-features = false
+optional = true
+
+[dependencies.sc-transaction-pool-api]
+path = "../substrate/client/transaction-pool/api"
+default-features = false
+optional = true
+
+[dependencies.sc-utils]
+path = "../substrate/client/utils"
+default-features = false
+optional = true
+
+[dependencies.snowbridge-runtime-test-common]
+path = "../bridges/snowbridge/runtime/test-common"
+default-features = false
+optional = true
+
+[dependencies.sp-blockchain]
+path = "../substrate/primitives/blockchain"
+default-features = false
+optional = true
+
+[dependencies.sp-consensus]
+path = "../substrate/primitives/consensus/common"
+default-features = false
+optional = true
+
+[dependencies.sp-core-hashing]
+path = "../substrate/deprecated/hashing"
+default-features = false
+optional = true
+
+[dependencies.sp-core-hashing-proc-macro]
+path = "../substrate/deprecated/hashing/proc-macro"
+default-features = false
+optional = true
+
+[dependencies.sp-database]
+path = "../substrate/primitives/database"
+default-features = false
+optional = true
+
+[dependencies.sp-maybe-compressed-blob]
+path = "../substrate/primitives/maybe-compressed-blob"
+default-features = false
+optional = true
+
+[dependencies.sp-panic-handler]
+path = "../substrate/primitives/panic-handler"
+default-features = false
+optional = true
+
+[dependencies.sp-rpc]
+path = "../substrate/primitives/rpc"
+default-features = false
+optional = true
+
+[dependencies.staging-node-inspect]
+path = "../substrate/bin/node/inspect"
+default-features = false
+optional = true
+
+[dependencies.staging-tracking-allocator]
+path = "../polkadot/node/tracking-allocator"
+default-features = false
+optional = true
+
+[dependencies.subkey]
+path = "../substrate/bin/utils/subkey"
+default-features = false
+optional = true
+
+[dependencies.substrate-build-script-utils]
+path = "../substrate/utils/build-script-utils"
+default-features = false
+optional = true
+
+[dependencies.substrate-frame-rpc-support]
+path = "../substrate/utils/frame/rpc/support"
+default-features = false
+optional = true
+
+[dependencies.substrate-frame-rpc-system]
+path = "../substrate/utils/frame/rpc/system"
+default-features = false
+optional = true
+
+[dependencies.substrate-prometheus-endpoint]
+path = "../substrate/utils/prometheus"
+default-features = false
+optional = true
+
+[dependencies.substrate-rpc-client]
+path = "../substrate/utils/frame/rpc/client"
+default-features = false
+optional = true
+
+[dependencies.substrate-state-trie-migration-rpc]
+path = "../substrate/utils/frame/rpc/state-trie-migration-rpc"
+default-features = false
+optional = true
+
+[dependencies.substrate-wasm-builder]
+path = "../substrate/utils/wasm-builder"
+default-features = false
+optional = true
+
+[dependencies.tracing-gum]
+path = "../polkadot/node/gum"
+default-features = false
+optional = true
+
+[dependencies.xcm-emulator]
+path = "../cumulus/xcm/xcm-emulator"
+default-features = false
+optional = true
+
+[dependencies.xcm-simulator]
+path = "../polkadot/xcm/xcm-simulator"
+default-features = false
+optional = true
+
+[package.metadata.docs.rs]
+features = ["node", "runtime"]
+targets = ["x86_64-unknown-linux-gnu"]
diff --git a/umbrella/src/lib.rs b/umbrella/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..2e87c186edae83c5d123000a72e9a198d99bf154
--- /dev/null
+++ b/umbrella/src/lib.rs
@@ -0,0 +1,1564 @@
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+//! Polkadot SDK umbrella crate re-exporting all other published crates.
+//!
+//! This helps to set a single version number for all your dependencies. Docs are in the
+//! `polkadot-sdk-docs` crate.
+
+// This file is auto-generated and checked by the CI.  You can edit it manually, but it must be
+// exactly the way that the CI expects it.
+
+/// Test utils for Asset Hub runtimes.
+#[cfg(feature = "asset-test-utils")]
+pub use asset_test_utils;
+
+/// Assets common utilities.
+#[cfg(feature = "assets-common")]
+pub use assets_common;
+
+/// A no-std/Substrate compatible library to construct binary merkle tree.
+#[cfg(feature = "binary-merkle-tree")]
+pub use binary_merkle_tree;
+
+/// Primitives of AssetHubRococo parachain runtime.
+#[cfg(feature = "bp-asset-hub-rococo")]
+pub use bp_asset_hub_rococo;
+
+/// Primitives of AssetHubWestend parachain runtime.
+#[cfg(feature = "bp-asset-hub-westend")]
+pub use bp_asset_hub_westend;
+
+/// Primitives for BridgeHub parachain runtimes.
+#[cfg(feature = "bp-bridge-hub-cumulus")]
+pub use bp_bridge_hub_cumulus;
+
+/// Primitives of BridgeHubKusama parachain runtime.
+#[cfg(feature = "bp-bridge-hub-kusama")]
+pub use bp_bridge_hub_kusama;
+
+/// Primitives of BridgeHubPolkadot parachain runtime.
+#[cfg(feature = "bp-bridge-hub-polkadot")]
+pub use bp_bridge_hub_polkadot;
+
+/// Primitives of BridgeHubRococo parachain runtime.
+#[cfg(feature = "bp-bridge-hub-rococo")]
+pub use bp_bridge_hub_rococo;
+
+/// Primitives of BridgeHubWestend parachain runtime.
+#[cfg(feature = "bp-bridge-hub-westend")]
+pub use bp_bridge_hub_westend;
+
+/// A common interface for describing what a bridge pallet should be able to do.
+#[cfg(feature = "bp-header-chain")]
+pub use bp_header_chain;
+
+/// Primitives of Kusama runtime.
+#[cfg(feature = "bp-kusama")]
+pub use bp_kusama;
+
+/// Primitives of messages module.
+#[cfg(feature = "bp-messages")]
+pub use bp_messages;
+
+/// Primitives of parachains module.
+#[cfg(feature = "bp-parachains")]
+pub use bp_parachains;
+
+/// Primitives of Polkadot runtime.
+#[cfg(feature = "bp-polkadot")]
+pub use bp_polkadot;
+
+/// Primitives of Polkadot Bulletin chain runtime.
+#[cfg(feature = "bp-polkadot-bulletin")]
+pub use bp_polkadot_bulletin;
+
+/// Primitives of Polkadot-like runtime.
+#[cfg(feature = "bp-polkadot-core")]
+pub use bp_polkadot_core;
+
+/// Primitives of relayers module.
+#[cfg(feature = "bp-relayers")]
+pub use bp_relayers;
+
+/// Primitives of Rococo runtime.
+#[cfg(feature = "bp-rococo")]
+pub use bp_rococo;
+
+/// Primitives that may be used at (bridges) runtime level.
+#[cfg(feature = "bp-runtime")]
+pub use bp_runtime;
+
+/// Utilities for testing substrate-based runtime bridge code.
+#[cfg(feature = "bp-test-utils")]
+pub use bp_test_utils;
+
+/// Primitives of Westend runtime.
+#[cfg(feature = "bp-westend")]
+pub use bp_westend;
+
+/// Primitives of the xcm-bridge-hub pallet.
+#[cfg(feature = "bp-xcm-bridge-hub")]
+pub use bp_xcm_bridge_hub;
+
+/// Primitives of the xcm-bridge-hub fee pallet.
+#[cfg(feature = "bp-xcm-bridge-hub-router")]
+pub use bp_xcm_bridge_hub_router;
+
+/// Bridge hub common utilities.
+#[cfg(feature = "bridge-hub-common")]
+pub use bridge_hub_common;
+
+/// Utils for BridgeHub testing.
+#[cfg(feature = "bridge-hub-test-utils")]
+pub use bridge_hub_test_utils;
+
+/// Common types and functions that may be used by substrate-based runtimes of all bridged
+/// chains.
+#[cfg(feature = "bridge-runtime-common")]
+pub use bridge_runtime_common;
+
+/// Parachain node CLI utilities.
+#[cfg(feature = "cumulus-client-cli")]
+pub use cumulus_client_cli;
+
+/// Common node-side functionality and glue code to collate parachain blocks.
+#[cfg(feature = "cumulus-client-collator")]
+pub use cumulus_client_collator;
+
+/// AURA consensus algorithm for parachains.
+#[cfg(feature = "cumulus-client-consensus-aura")]
+pub use cumulus_client_consensus_aura;
+
+/// Cumulus specific common consensus implementations.
+#[cfg(feature = "cumulus-client-consensus-common")]
+pub use cumulus_client_consensus_common;
+
+/// A Substrate `Proposer` for building parachain blocks.
+#[cfg(feature = "cumulus-client-consensus-proposer")]
+pub use cumulus_client_consensus_proposer;
+
+/// The relay-chain provided consensus algorithm.
+#[cfg(feature = "cumulus-client-consensus-relay-chain")]
+pub use cumulus_client_consensus_relay_chain;
+
+/// Cumulus-specific networking protocol.
+#[cfg(feature = "cumulus-client-network")]
+pub use cumulus_client_network;
+
+/// Inherent that needs to be present in every parachain block. Contains messages and a relay
+/// chain storage-proof.
+#[cfg(feature = "cumulus-client-parachain-inherent")]
+pub use cumulus_client_parachain_inherent;
+
+/// Cumulus-specific networking protocol.
+#[cfg(feature = "cumulus-client-pov-recovery")]
+pub use cumulus_client_pov_recovery;
+
+/// Common functions used to assemble the components of a parachain node.
+#[cfg(feature = "cumulus-client-service")]
+pub use cumulus_client_service;
+
+/// AURA consensus extension pallet for parachains.
+#[cfg(feature = "cumulus-pallet-aura-ext")]
+pub use cumulus_pallet_aura_ext;
+
+/// Migrates messages from the old DMP queue pallet.
+#[cfg(feature = "cumulus-pallet-dmp-queue")]
+pub use cumulus_pallet_dmp_queue;
+
+/// Base pallet for cumulus-based parachains.
+#[cfg(feature = "cumulus-pallet-parachain-system")]
+pub use cumulus_pallet_parachain_system;
+
+/// Proc macros provided by the parachain-system pallet.
+#[cfg(feature = "cumulus-pallet-parachain-system-proc-macro")]
+pub use cumulus_pallet_parachain_system_proc_macro;
+
+/// FRAME sessions pallet benchmarking.
+#[cfg(feature = "cumulus-pallet-session-benchmarking")]
+pub use cumulus_pallet_session_benchmarking;
+
+/// Adds functionality to migrate from a Solo to a Parachain.
+#[cfg(feature = "cumulus-pallet-solo-to-para")]
+pub use cumulus_pallet_solo_to_para;
+
+/// Pallet for stuff specific to parachains' usage of XCM.
+#[cfg(feature = "cumulus-pallet-xcm")]
+pub use cumulus_pallet_xcm;
+
+/// Pallet to queue outbound and inbound XCMP messages.
+#[cfg(feature = "cumulus-pallet-xcmp-queue")]
+pub use cumulus_pallet_xcmp_queue;
+
+/// Ping Pallet for Cumulus XCM/UMP testing.
+#[cfg(feature = "cumulus-ping")]
+pub use cumulus_ping;
+
+/// Core primitives for Aura in Cumulus.
+#[cfg(feature = "cumulus-primitives-aura")]
+pub use cumulus_primitives_aura;
+
+/// Cumulus related core primitive types and traits.
+#[cfg(feature = "cumulus-primitives-core")]
+pub use cumulus_primitives_core;
+
+/// Inherent that needs to be present in every parachain block. Contains messages and a relay
+/// chain storage-proof.
+#[cfg(feature = "cumulus-primitives-parachain-inherent")]
+pub use cumulus_primitives_parachain_inherent;
+
+/// Hostfunction exposing storage proof size to the runtime.
+#[cfg(feature = "cumulus-primitives-proof-size-hostfunction")]
+pub use cumulus_primitives_proof_size_hostfunction;
+
+/// Utilities to reclaim storage weight.
+#[cfg(feature = "cumulus-primitives-storage-weight-reclaim")]
+pub use cumulus_primitives_storage_weight_reclaim;
+
+/// Provides timestamp related functionality for parachains.
+#[cfg(feature = "cumulus-primitives-timestamp")]
+pub use cumulus_primitives_timestamp;
+
+/// Helper datatypes for Cumulus.
+#[cfg(feature = "cumulus-primitives-utility")]
+pub use cumulus_primitives_utility;
+
+/// Implementation of the RelayChainInterface trait for Polkadot full-nodes.
+#[cfg(feature = "cumulus-relay-chain-inprocess-interface")]
+pub use cumulus_relay_chain_inprocess_interface;
+
+/// Common interface for different relay chain datasources.
+#[cfg(feature = "cumulus-relay-chain-interface")]
+pub use cumulus_relay_chain_interface;
+
+/// Minimal node implementation to be used in tandem with RPC or light-client mode.
+#[cfg(feature = "cumulus-relay-chain-minimal-node")]
+pub use cumulus_relay_chain_minimal_node;
+
+/// Implementation of the RelayChainInterface trait that connects to a remote RPC-node.
+#[cfg(feature = "cumulus-relay-chain-rpc-interface")]
+pub use cumulus_relay_chain_rpc_interface;
+
+/// Mocked relay state proof builder for testing Cumulus.
+#[cfg(feature = "cumulus-test-relay-sproof-builder")]
+pub use cumulus_test_relay_sproof_builder;
+
+/// Common resources for integration testing with xcm-emulator.
+#[cfg(feature = "emulated-integration-tests-common")]
+pub use emulated_integration_tests_common;
+
+/// Utility library for managing tree-like ordered data with logic for pruning the tree while
+/// finalizing nodes.
+#[cfg(feature = "fork-tree")]
+pub use fork_tree;
+
+/// Macro for benchmarking a FRAME runtime.
+#[cfg(feature = "frame-benchmarking")]
+pub use frame_benchmarking;
+
+/// CLI for benchmarking FRAME.
+#[cfg(feature = "frame-benchmarking-cli")]
+pub use frame_benchmarking_cli;
+
+/// Pallet for testing FRAME PoV benchmarking.
+#[cfg(feature = "frame-benchmarking-pallet-pov")]
+pub use frame_benchmarking_pallet_pov;
+
+/// NPoS Solution Type.
+#[cfg(feature = "frame-election-provider-solution-type")]
+pub use frame_election_provider_solution_type;
+
+/// election provider supporting traits.
+#[cfg(feature = "frame-election-provider-support")]
+pub use frame_election_provider_support;
+
+/// FRAME executives engine.
+#[cfg(feature = "frame-executive")]
+pub use frame_executive;
+
+/// FRAME signed extension for verifying the metadata hash.
+#[cfg(feature = "frame-metadata-hash-extension")]
+pub use frame_metadata_hash_extension;
+
+/// An externalities provided environment that can load itself from remote nodes or cached
+/// files.
+#[cfg(feature = "frame-remote-externalities")]
+pub use frame_remote_externalities;
+
+/// Support code for the runtime.
+#[cfg(feature = "frame-support")]
+pub use frame_support;
+
+/// Proc macro of Support code for the runtime.
+#[cfg(feature = "frame-support-procedural")]
+pub use frame_support_procedural;
+
+/// Proc macro helpers for procedural macros.
+#[cfg(feature = "frame-support-procedural-tools")]
+pub use frame_support_procedural_tools;
+
+/// Use to derive parsing for parsing struct.
+#[cfg(feature = "frame-support-procedural-tools-derive")]
+pub use frame_support_procedural_tools_derive;
+
+/// FRAME system module.
+#[cfg(feature = "frame-system")]
+pub use frame_system;
+
+/// FRAME System benchmarking.
+#[cfg(feature = "frame-system-benchmarking")]
+pub use frame_system_benchmarking;
+
+/// Runtime API definition required by System RPC extensions.
+#[cfg(feature = "frame-system-rpc-runtime-api")]
+pub use frame_system_rpc_runtime_api;
+
+/// FRAME pallet for democracy.
+#[cfg(feature = "frame-try-runtime")]
+pub use frame_try_runtime;
+
+/// Bag threshold generation script for pallet-bag-list.
+#[cfg(feature = "generate-bags")]
+pub use generate_bags;
+
+/// MMR Client gadget for substrate.
+#[cfg(feature = "mmr-gadget")]
+pub use mmr_gadget;
+
+/// Node-specific RPC methods for interaction with Merkle Mountain Range pallet.
+#[cfg(feature = "mmr-rpc")]
+pub use mmr_rpc;
+
+/// The Alliance pallet provides a collective for standard-setting industry collaboration.
+#[cfg(feature = "pallet-alliance")]
+pub use pallet_alliance;
+
+/// FRAME asset conversion pallet.
+#[cfg(feature = "pallet-asset-conversion")]
+pub use pallet_asset_conversion;
+
+/// FRAME asset conversion pallet's operations suite.
+#[cfg(feature = "pallet-asset-conversion-ops")]
+pub use pallet_asset_conversion_ops;
+
+/// Pallet to manage transaction payments in assets by converting them to native assets.
+#[cfg(feature = "pallet-asset-conversion-tx-payment")]
+pub use pallet_asset_conversion_tx_payment;
+
+/// Whitelist non-native assets for treasury spending and provide conversion to native balance.
+#[cfg(feature = "pallet-asset-rate")]
+pub use pallet_asset_rate;
+
+/// pallet to manage transaction payments in assets.
+#[cfg(feature = "pallet-asset-tx-payment")]
+pub use pallet_asset_tx_payment;
+
+/// FRAME asset management pallet.
+#[cfg(feature = "pallet-assets")]
+pub use pallet_assets;
+
+/// FRAME atomic swap pallet.
+#[cfg(feature = "pallet-atomic-swap")]
+pub use pallet_atomic_swap;
+
+/// FRAME AURA consensus pallet.
+#[cfg(feature = "pallet-aura")]
+pub use pallet_aura;
+
+/// FRAME pallet for authority discovery.
+#[cfg(feature = "pallet-authority-discovery")]
+pub use pallet_authority_discovery;
+
+/// Block and Uncle Author tracking for the FRAME.
+#[cfg(feature = "pallet-authorship")]
+pub use pallet_authorship;
+
+/// Consensus extension module for BABE consensus. Collects on-chain randomness from VRF
+/// outputs and manages epoch transitions.
+#[cfg(feature = "pallet-babe")]
+pub use pallet_babe;
+
+/// FRAME pallet bags list.
+#[cfg(feature = "pallet-bags-list")]
+pub use pallet_bags_list;
+
+/// FRAME pallet to manage balances.
+#[cfg(feature = "pallet-balances")]
+pub use pallet_balances;
+
+/// BEEFY FRAME pallet.
+#[cfg(feature = "pallet-beefy")]
+pub use pallet_beefy;
+
+/// BEEFY + MMR runtime utilities.
+#[cfg(feature = "pallet-beefy-mmr")]
+pub use pallet_beefy_mmr;
+
+/// FRAME pallet to manage bounties.
+#[cfg(feature = "pallet-bounties")]
+pub use pallet_bounties;
+
+/// Module implementing GRANDPA on-chain light client used for bridging consensus of
+/// substrate-based chains.
+#[cfg(feature = "pallet-bridge-grandpa")]
+pub use pallet_bridge_grandpa;
+
+/// Module that allows bridged chains to exchange messages using lane concept.
+#[cfg(feature = "pallet-bridge-messages")]
+pub use pallet_bridge_messages;
+
+/// Module that allows bridged relay chains to exchange information on their parachains' heads.
+#[cfg(feature = "pallet-bridge-parachains")]
+pub use pallet_bridge_parachains;
+
+/// Module used to store relayer rewards and coordinate relayers set.
+#[cfg(feature = "pallet-bridge-relayers")]
+pub use pallet_bridge_relayers;
+
+/// Brokerage tool for managing Polkadot Core scheduling.
+#[cfg(feature = "pallet-broker")]
+pub use pallet_broker;
+
+/// FRAME pallet to manage child bounties.
+#[cfg(feature = "pallet-child-bounties")]
+pub use pallet_child_bounties;
+
+/// Simple pallet to select collators for a parachain.
+#[cfg(feature = "pallet-collator-selection")]
+pub use pallet_collator_selection;
+
+/// Collective system: Members of a set of account IDs can make their collective feelings known
+/// through dispatched calls from one of two specialized origins.
+#[cfg(feature = "pallet-collective")]
+pub use pallet_collective;
+
+/// Managed content.
+#[cfg(feature = "pallet-collective-content")]
+pub use pallet_collective_content;
+
+/// FRAME pallet for WASM contracts.
+#[cfg(feature = "pallet-contracts")]
+pub use pallet_contracts;
+
+/// A mock network for testing pallet-contracts.
+#[cfg(feature = "pallet-contracts-mock-network")]
+pub use pallet_contracts_mock_network;
+
+/// Procedural macros used in pallet_contracts.
+#[cfg(feature = "pallet-contracts-proc-macro")]
+pub use pallet_contracts_proc_macro;
+
+/// Exposes all the host functions that a contract can import.
+#[cfg(feature = "pallet-contracts-uapi")]
+pub use pallet_contracts_uapi;
+
+/// FRAME pallet for conviction voting in referenda.
+#[cfg(feature = "pallet-conviction-voting")]
+pub use pallet_conviction_voting;
+
+/// Logic as per the description of The Fellowship for core Polkadot technology.
+#[cfg(feature = "pallet-core-fellowship")]
+pub use pallet_core_fellowship;
+
+/// FRAME delegated staking pallet.
+#[cfg(feature = "pallet-delegated-staking")]
+pub use pallet_delegated_staking;
+
+/// FRAME pallet for democracy.
+#[cfg(feature = "pallet-democracy")]
+pub use pallet_democracy;
+
+/// FRAME example pallet.
+#[cfg(feature = "pallet-dev-mode")]
+pub use pallet_dev_mode;
+
+/// PALLET two phase election providers.
+#[cfg(feature = "pallet-election-provider-multi-phase")]
+pub use pallet_election_provider_multi_phase;
+
+/// Benchmarking for election provider support onchain config trait.
+#[cfg(feature = "pallet-election-provider-support-benchmarking")]
+pub use pallet_election_provider_support_benchmarking;
+
+/// FRAME pallet based on seq-Phragmén election method.
+#[cfg(feature = "pallet-elections-phragmen")]
+pub use pallet_elections_phragmen;
+
+/// FRAME fast unstake pallet.
+#[cfg(feature = "pallet-fast-unstake")]
+pub use pallet_fast_unstake;
+
+/// FRAME pallet for pushing a chain to its weight limits.
+#[cfg(feature = "pallet-glutton")]
+pub use pallet_glutton;
+
+/// FRAME pallet for GRANDPA finality gadget.
+#[cfg(feature = "pallet-grandpa")]
+pub use pallet_grandpa;
+
+/// FRAME identity management pallet.
+#[cfg(feature = "pallet-identity")]
+pub use pallet_identity;
+
+/// FRAME's I'm online pallet.
+#[cfg(feature = "pallet-im-online")]
+pub use pallet_im_online;
+
+/// FRAME indices management pallet.
+#[cfg(feature = "pallet-indices")]
+pub use pallet_indices;
+
+/// Insecure do not use in production: FRAME randomness collective flip pallet.
+#[cfg(feature = "pallet-insecure-randomness-collective-flip")]
+pub use pallet_insecure_randomness_collective_flip;
+
+/// FRAME Participation Lottery Pallet.
+#[cfg(feature = "pallet-lottery")]
+pub use pallet_lottery;
+
+/// FRAME membership management pallet.
+#[cfg(feature = "pallet-membership")]
+pub use pallet_membership;
+
+/// FRAME pallet to queue and process messages.
+#[cfg(feature = "pallet-message-queue")]
+pub use pallet_message_queue;
+
+/// FRAME pallet to execute multi-block migrations.
+#[cfg(feature = "pallet-migrations")]
+pub use pallet_migrations;
+
+/// FRAME's mixnet pallet.
+#[cfg(feature = "pallet-mixnet")]
+pub use pallet_mixnet;
+
+/// FRAME Merkle Mountain Range pallet.
+#[cfg(feature = "pallet-mmr")]
+pub use pallet_mmr;
+
+/// FRAME multi-signature dispatch pallet.
+#[cfg(feature = "pallet-multisig")]
+pub use pallet_multisig;
+
+/// FRAME pallet to convert non-fungible to fungible tokens.
+#[cfg(feature = "pallet-nft-fractionalization")]
+pub use pallet_nft_fractionalization;
+
+/// FRAME NFTs pallet.
+#[cfg(feature = "pallet-nfts")]
+pub use pallet_nfts;
+
+/// Runtime API for the FRAME NFTs pallet.
+#[cfg(feature = "pallet-nfts-runtime-api")]
+pub use pallet_nfts_runtime_api;
+
+/// FRAME pallet for rewarding account freezing.
+#[cfg(feature = "pallet-nis")]
+pub use pallet_nis;
+
+/// FRAME pallet for node authorization.
+#[cfg(feature = "pallet-node-authorization")]
+pub use pallet_node_authorization;
+
+/// FRAME nomination pools pallet.
+#[cfg(feature = "pallet-nomination-pools")]
+pub use pallet_nomination_pools;
+
+/// FRAME nomination pools pallet benchmarking.
+#[cfg(feature = "pallet-nomination-pools-benchmarking")]
+pub use pallet_nomination_pools_benchmarking;
+
+/// Runtime API for nomination-pools FRAME pallet.
+#[cfg(feature = "pallet-nomination-pools-runtime-api")]
+pub use pallet_nomination_pools_runtime_api;
+
+/// FRAME offences pallet.
+#[cfg(feature = "pallet-offences")]
+pub use pallet_offences;
+
+/// FRAME offences pallet benchmarking.
+#[cfg(feature = "pallet-offences-benchmarking")]
+pub use pallet_offences_benchmarking;
+
+/// FRAME pallet that provides a paged list data structure.
+#[cfg(feature = "pallet-paged-list")]
+pub use pallet_paged_list;
+
+/// Pallet to store and configure parameters.
+#[cfg(feature = "pallet-parameters")]
+pub use pallet_parameters;
+
+/// FRAME pallet for storing preimages of hashes.
+#[cfg(feature = "pallet-preimage")]
+pub use pallet_preimage;
+
+/// FRAME proxying pallet.
+#[cfg(feature = "pallet-proxy")]
+pub use pallet_proxy;
+
+/// Ranked collective system: Members of a set of account IDs can make their collective
+/// feelings known through dispatched calls from one of two specialized origins.
+#[cfg(feature = "pallet-ranked-collective")]
+pub use pallet_ranked_collective;
+
+/// FRAME account recovery pallet.
+#[cfg(feature = "pallet-recovery")]
+pub use pallet_recovery;
+
+/// FRAME pallet for inclusive on-chain decisions.
+#[cfg(feature = "pallet-referenda")]
+pub use pallet_referenda;
+
+/// Remark storage pallet.
+#[cfg(feature = "pallet-remark")]
+pub use pallet_remark;
+
+/// FRAME root offences pallet.
+#[cfg(feature = "pallet-root-offences")]
+pub use pallet_root_offences;
+
+/// FRAME root testing pallet.
+#[cfg(feature = "pallet-root-testing")]
+pub use pallet_root_testing;
+
+/// FRAME safe-mode pallet.
+#[cfg(feature = "pallet-safe-mode")]
+pub use pallet_safe_mode;
+
+/// Paymaster.
+#[cfg(feature = "pallet-salary")]
+pub use pallet_salary;
+
+/// FRAME Scheduler pallet.
+#[cfg(feature = "pallet-scheduler")]
+pub use pallet_scheduler;
+
+/// FRAME pallet for scored pools.
+#[cfg(feature = "pallet-scored-pool")]
+pub use pallet_scored_pool;
+
+/// FRAME sessions pallet.
+#[cfg(feature = "pallet-session")]
+pub use pallet_session;
+
+/// FRAME sessions pallet benchmarking.
+#[cfg(feature = "pallet-session-benchmarking")]
+pub use pallet_session_benchmarking;
+
+/// Pallet to skip payments for calls annotated with `feeless_if` if the respective conditions
+/// are satisfied.
+#[cfg(feature = "pallet-skip-feeless-payment")]
+pub use pallet_skip_feeless_payment;
+
+/// FRAME society pallet.
+#[cfg(feature = "pallet-society")]
+pub use pallet_society;
+
+/// FRAME pallet staking.
+#[cfg(feature = "pallet-staking")]
+pub use pallet_staking;
+
+/// Reward Curve for FRAME staking pallet.
+#[cfg(feature = "pallet-staking-reward-curve")]
+pub use pallet_staking_reward_curve;
+
+/// Reward function for FRAME staking pallet.
+#[cfg(feature = "pallet-staking-reward-fn")]
+pub use pallet_staking_reward_fn;
+
+/// RPC runtime API for transaction payment FRAME pallet.
+#[cfg(feature = "pallet-staking-runtime-api")]
+pub use pallet_staking_runtime_api;
+
+/// FRAME pallet migration of trie.
+#[cfg(feature = "pallet-state-trie-migration")]
+pub use pallet_state_trie_migration;
+
+/// FRAME pallet for statement store.
+#[cfg(feature = "pallet-statement")]
+pub use pallet_statement;
+
+/// FRAME pallet for sudo.
+#[cfg(feature = "pallet-sudo")]
+pub use pallet_sudo;
+
+/// FRAME Timestamp Module.
+#[cfg(feature = "pallet-timestamp")]
+pub use pallet_timestamp;
+
+/// FRAME pallet to manage tips.
+#[cfg(feature = "pallet-tips")]
+pub use pallet_tips;
+
+/// FRAME pallet to manage transaction payments.
+#[cfg(feature = "pallet-transaction-payment")]
+pub use pallet_transaction_payment;
+
+/// RPC interface for the transaction payment pallet.
+#[cfg(feature = "pallet-transaction-payment-rpc")]
+pub use pallet_transaction_payment_rpc;
+
+/// RPC runtime API for transaction payment FRAME pallet.
+#[cfg(feature = "pallet-transaction-payment-rpc-runtime-api")]
+pub use pallet_transaction_payment_rpc_runtime_api;
+
+/// Storage chain pallet.
+#[cfg(feature = "pallet-transaction-storage")]
+pub use pallet_transaction_storage;
+
+/// FRAME pallet to manage treasury.
+#[cfg(feature = "pallet-treasury")]
+pub use pallet_treasury;
+
+/// FRAME transaction pause pallet.
+#[cfg(feature = "pallet-tx-pause")]
+pub use pallet_tx_pause;
+
+/// FRAME NFT asset management pallet.
+#[cfg(feature = "pallet-uniques")]
+pub use pallet_uniques;
+
+/// FRAME utilities pallet.
+#[cfg(feature = "pallet-utility")]
+pub use pallet_utility;
+
+/// FRAME pallet for manage vesting.
+#[cfg(feature = "pallet-vesting")]
+pub use pallet_vesting;
+
+/// FRAME pallet for whitelisting call, and dispatch from specific origin.
+#[cfg(feature = "pallet-whitelist")]
+pub use pallet_whitelist;
+
+/// A pallet for handling XCM programs.
+#[cfg(feature = "pallet-xcm")]
+pub use pallet_xcm;
+
+/// Benchmarks for the XCM pallet.
+#[cfg(feature = "pallet-xcm-benchmarks")]
+pub use pallet_xcm_benchmarks;
+
+/// Module that adds dynamic bridges/lanes support to XCM infrastructure at the bridge hub.
+#[cfg(feature = "pallet-xcm-bridge-hub")]
+pub use pallet_xcm_bridge_hub;
+
+/// Bridge hub interface for sibling/parent chains with dynamic fees support.
+#[cfg(feature = "pallet-xcm-bridge-hub-router")]
+pub use pallet_xcm_bridge_hub_router;
+
+/// Logic which is common to all parachain runtimes.
+#[cfg(feature = "parachains-common")]
+pub use parachains_common;
+
+/// Utils for Runtimes testing.
+#[cfg(feature = "parachains-runtimes-test-utils")]
+pub use parachains_runtimes_test_utils;
+
+/// Polkadot Approval Distribution subsystem for the distribution of assignments and approvals
+/// for approval checks on candidates over the network.
+#[cfg(feature = "polkadot-approval-distribution")]
+pub use polkadot_approval_distribution;
+
+/// Polkadot Bitfiled Distribution subsystem, which gossips signed availability bitfields used
+/// to compactly determine which backed candidates are available or not based on a 2/3+ quorum.
+#[cfg(feature = "polkadot-availability-bitfield-distribution")]
+pub use polkadot_availability_bitfield_distribution;
+
+/// The Availability Distribution subsystem. Requests the required availability data. Also
+/// distributes availability data and chunks to requesters.
+#[cfg(feature = "polkadot-availability-distribution")]
+pub use polkadot_availability_distribution;
+
+/// The Availability Recovery subsystem. Handles requests for recovering the availability data
+/// of included candidates.
+#[cfg(feature = "polkadot-availability-recovery")]
+pub use polkadot_availability_recovery;
+
+/// Polkadot Relay-chain Client Node.
+#[cfg(feature = "polkadot-cli")]
+pub use polkadot_cli;
+
+/// Polkadot Collator Protocol subsystem. Allows collators and validators to talk to each
+/// other.
+#[cfg(feature = "polkadot-collator-protocol")]
+pub use polkadot_collator_protocol;
+
+/// Core Polkadot types used by Relay Chains and parachains.
+#[cfg(feature = "polkadot-core-primitives")]
+pub use polkadot_core_primitives;
+
+/// Polkadot Dispute Distribution subsystem, which ensures all concerned validators are aware
+/// of a dispute and have the relevant votes.
+#[cfg(feature = "polkadot-dispute-distribution")]
+pub use polkadot_dispute_distribution;
+
+/// Erasure coding used for Polkadot's availability system.
+#[cfg(feature = "polkadot-erasure-coding")]
+pub use polkadot_erasure_coding;
+
+/// Polkadot Gossip Support subsystem. Responsible for keeping track of session changes and
+/// issuing a connection request to the relevant validators on every new session.
+#[cfg(feature = "polkadot-gossip-support")]
+pub use polkadot_gossip_support;
+
+/// The Network Bridge Subsystem — protocol multiplexer for Polkadot.
+#[cfg(feature = "polkadot-network-bridge")]
+pub use polkadot_network_bridge;
+
+/// Collator-side subsystem that handles incoming candidate submissions from the parachain.
+#[cfg(feature = "polkadot-node-collation-generation")]
+pub use polkadot_node_collation_generation;
+
+/// Approval Voting Subsystem of the Polkadot node.
+#[cfg(feature = "polkadot-node-core-approval-voting")]
+pub use polkadot_node_core_approval_voting;
+
+/// The Availability Store subsystem. Wrapper over the DB that stores availability data and
+/// chunks.
+#[cfg(feature = "polkadot-node-core-av-store")]
+pub use polkadot_node_core_av_store;
+
+/// The Candidate Backing Subsystem. Tracks parachain candidates that can be backed, as well as
+/// the issuance of statements about candidates.
+#[cfg(feature = "polkadot-node-core-backing")]
+pub use polkadot_node_core_backing;
+
+/// Bitfield signing subsystem for the Polkadot node.
+#[cfg(feature = "polkadot-node-core-bitfield-signing")]
+pub use polkadot_node_core_bitfield_signing;
+
+/// Polkadot crate that implements the Candidate Validation subsystem. Handles requests to
+/// validate candidates according to a PVF.
+#[cfg(feature = "polkadot-node-core-candidate-validation")]
+pub use polkadot_node_core_candidate_validation;
+
+/// The Chain API subsystem provides access to chain related utility functions like block
+/// number to hash conversions.
+#[cfg(feature = "polkadot-node-core-chain-api")]
+pub use polkadot_node_core_chain_api;
+
+/// Chain Selection Subsystem.
+#[cfg(feature = "polkadot-node-core-chain-selection")]
+pub use polkadot_node_core_chain_selection;
+
+/// The node-side components that participate in disputes.
+#[cfg(feature = "polkadot-node-core-dispute-coordinator")]
+pub use polkadot_node_core_dispute_coordinator;
+
+/// Parachains inherent data provider for Polkadot node.
+#[cfg(feature = "polkadot-node-core-parachains-inherent")]
+pub use polkadot_node_core_parachains_inherent;
+
+/// The Prospective Parachains subsystem. Tracks and handles prospective parachain fragments.
+#[cfg(feature = "polkadot-node-core-prospective-parachains")]
+pub use polkadot_node_core_prospective_parachains;
+
+/// Responsible for assembling a relay chain block from a set of available parachain
+/// candidates.
+#[cfg(feature = "polkadot-node-core-provisioner")]
+pub use polkadot_node_core_provisioner;
+
+/// Polkadot crate that implements the PVF validation host. Responsible for coordinating
+/// preparation and execution of PVFs.
+#[cfg(feature = "polkadot-node-core-pvf")]
+pub use polkadot_node_core_pvf;
+
+/// Polkadot crate that implements the PVF pre-checking subsystem. Responsible for checking and
+/// voting for PVFs that are pending approval.
+#[cfg(feature = "polkadot-node-core-pvf-checker")]
+pub use polkadot_node_core_pvf_checker;
+
+/// Polkadot crate that contains functionality related to PVFs that is shared by the PVF host
+/// and the PVF workers.
+#[cfg(feature = "polkadot-node-core-pvf-common")]
+pub use polkadot_node_core_pvf_common;
+
+/// Polkadot crate that contains the logic for executing PVFs. Used by the
+/// polkadot-execute-worker binary.
+#[cfg(feature = "polkadot-node-core-pvf-execute-worker")]
+pub use polkadot_node_core_pvf_execute_worker;
+
+/// Polkadot crate that contains the logic for preparing PVFs. Used by the
+/// polkadot-prepare-worker binary.
+#[cfg(feature = "polkadot-node-core-pvf-prepare-worker")]
+pub use polkadot_node_core_pvf_prepare_worker;
+
+/// Wrapper around the parachain-related runtime APIs.
+#[cfg(feature = "polkadot-node-core-runtime-api")]
+pub use polkadot_node_core_runtime_api;
+
+/// Polkadot Jaeger primitives, but equally useful for Grafana/Tempo.
+#[cfg(feature = "polkadot-node-jaeger")]
+pub use polkadot_node_jaeger;
+
+/// Subsystem metric helpers.
+#[cfg(feature = "polkadot-node-metrics")]
+pub use polkadot_node_metrics;
+
+/// Primitives types for the Node-side.
+#[cfg(feature = "polkadot-node-network-protocol")]
+pub use polkadot_node_network_protocol;
+
+/// Primitives types for the Node-side.
+#[cfg(feature = "polkadot-node-primitives")]
+pub use polkadot_node_primitives;
+
+/// Subsystem traits and message definitions and the generated overseer.
+#[cfg(feature = "polkadot-node-subsystem")]
+pub use polkadot_node_subsystem;
+
+/// Subsystem traits and message definitions.
+#[cfg(feature = "polkadot-node-subsystem-types")]
+pub use polkadot_node_subsystem_types;
+
+/// Subsystem traits and message definitions.
+#[cfg(feature = "polkadot-node-subsystem-util")]
+pub use polkadot_node_subsystem_util;
+
+/// System overseer of the Polkadot node.
+#[cfg(feature = "polkadot-overseer")]
+pub use polkadot_overseer;
+
+/// Types and utilities for creating and working with parachains.
+#[cfg(feature = "polkadot-parachain-primitives")]
+pub use polkadot_parachain_primitives;
+
+/// Shared primitives used by Polkadot runtime.
+#[cfg(feature = "polkadot-primitives")]
+pub use polkadot_primitives;
+
+/// Polkadot specific RPC functionality.
+#[cfg(feature = "polkadot-rpc")]
+pub use polkadot_rpc;
+
+/// Pallets and constants used in Relay Chain networks.
+#[cfg(feature = "polkadot-runtime-common")]
+pub use polkadot_runtime_common;
+
+/// Runtime metric interface for the Polkadot node.
+#[cfg(feature = "polkadot-runtime-metrics")]
+pub use polkadot_runtime_metrics;
+
+/// Relay Chain runtime code responsible for Parachains.
+#[cfg(feature = "polkadot-runtime-parachains")]
+pub use polkadot_runtime_parachains;
+
+/// Experimental: The single package to get you started with building frame pallets and
+/// runtimes.
+#[cfg(feature = "polkadot-sdk-frame")]
+pub use polkadot_sdk_frame;
+
+/// Utils to tie different Polkadot components together and allow instantiation of a node.
+#[cfg(feature = "polkadot-service")]
+pub use polkadot_service;
+
+/// Statement Distribution Subsystem.
+#[cfg(feature = "polkadot-statement-distribution")]
+pub use polkadot_statement_distribution;
+
+/// Stores messages other authorities issue about candidates in Polkadot.
+#[cfg(feature = "polkadot-statement-table")]
+pub use polkadot_statement_table;
+
+/// Constants used throughout the Rococo network.
+#[cfg(feature = "rococo-runtime-constants")]
+pub use rococo_runtime_constants;
+
+/// Collection of allocator implementations.
+#[cfg(feature = "sc-allocator")]
+pub use sc_allocator;
+
+/// Substrate authority discovery.
+#[cfg(feature = "sc-authority-discovery")]
+pub use sc_authority_discovery;
+
+/// Basic implementation of block-authoring logic.
+#[cfg(feature = "sc-basic-authorship")]
+pub use sc_basic_authorship;
+
+/// Substrate block builder.
+#[cfg(feature = "sc-block-builder")]
+pub use sc_block_builder;
+
+/// Substrate chain configurations.
+#[cfg(feature = "sc-chain-spec")]
+pub use sc_chain_spec;
+
+/// Macros to derive chain spec extension traits implementation.
+#[cfg(feature = "sc-chain-spec-derive")]
+pub use sc_chain_spec_derive;
+
+/// Substrate CLI interface.
+#[cfg(feature = "sc-cli")]
+pub use sc_cli;
+
+/// Substrate client interfaces.
+#[cfg(feature = "sc-client-api")]
+pub use sc_client_api;
+
+/// Client backend that uses RocksDB database as storage.
+#[cfg(feature = "sc-client-db")]
+pub use sc_client_db;
+
+/// Collection of common consensus specific implementations for Substrate (client).
+#[cfg(feature = "sc-consensus")]
+pub use sc_consensus;
+
+/// Aura consensus algorithm for substrate.
+#[cfg(feature = "sc-consensus-aura")]
+pub use sc_consensus_aura;
+
+/// BABE consensus algorithm for substrate.
+#[cfg(feature = "sc-consensus-babe")]
+pub use sc_consensus_babe;
+
+/// RPC extensions for the BABE consensus algorithm.
+#[cfg(feature = "sc-consensus-babe-rpc")]
+pub use sc_consensus_babe_rpc;
+
+/// BEEFY Client gadget for substrate.
+#[cfg(feature = "sc-consensus-beefy")]
+pub use sc_consensus_beefy;
+
+/// RPC for the BEEFY Client gadget for substrate.
+#[cfg(feature = "sc-consensus-beefy-rpc")]
+pub use sc_consensus_beefy_rpc;
+
+/// Generic epochs-based utilities for consensus.
+#[cfg(feature = "sc-consensus-epochs")]
+pub use sc_consensus_epochs;
+
+/// Integration of the GRANDPA finality gadget into substrate.
+#[cfg(feature = "sc-consensus-grandpa")]
+pub use sc_consensus_grandpa;
+
+/// RPC extensions for the GRANDPA finality gadget.
+#[cfg(feature = "sc-consensus-grandpa-rpc")]
+pub use sc_consensus_grandpa_rpc;
+
+/// Manual sealing engine for Substrate.
+#[cfg(feature = "sc-consensus-manual-seal")]
+pub use sc_consensus_manual_seal;
+
+/// PoW consensus algorithm for substrate.
+#[cfg(feature = "sc-consensus-pow")]
+pub use sc_consensus_pow;
+
+/// Generic slots-based utilities for consensus.
+#[cfg(feature = "sc-consensus-slots")]
+pub use sc_consensus_slots;
+
+/// A crate that provides means of executing/dispatching calls into the runtime.
+#[cfg(feature = "sc-executor")]
+pub use sc_executor;
+
+/// A set of common definitions that are needed for defining execution engines.
+#[cfg(feature = "sc-executor-common")]
+pub use sc_executor_common;
+
+/// PolkaVM executor for Substrate.
+#[cfg(feature = "sc-executor-polkavm")]
+pub use sc_executor_polkavm;
+
+/// Defines a `WasmRuntime` that uses the Wasmtime JIT to execute.
+#[cfg(feature = "sc-executor-wasmtime")]
+pub use sc_executor_wasmtime;
+
+/// Substrate informant.
+#[cfg(feature = "sc-informant")]
+pub use sc_informant;
+
+/// Keystore (and session key management) for ed25519 based chains like Polkadot.
+#[cfg(feature = "sc-keystore")]
+pub use sc_keystore;
+
+/// Substrate mixnet service.
+#[cfg(feature = "sc-mixnet")]
+pub use sc_mixnet;
+
+/// Substrate network protocol.
+#[cfg(feature = "sc-network")]
+pub use sc_network;
+
+/// Substrate network common.
+#[cfg(feature = "sc-network-common")]
+pub use sc_network_common;
+
+/// Gossiping for the Substrate network protocol.
+#[cfg(feature = "sc-network-gossip")]
+pub use sc_network_gossip;
+
+/// Substrate light network protocol.
+#[cfg(feature = "sc-network-light")]
+pub use sc_network_light;
+
+/// Substrate statement protocol.
+#[cfg(feature = "sc-network-statement")]
+pub use sc_network_statement;
+
+/// Substrate sync network protocol.
+#[cfg(feature = "sc-network-sync")]
+pub use sc_network_sync;
+
+/// Substrate transaction protocol.
+#[cfg(feature = "sc-network-transactions")]
+pub use sc_network_transactions;
+
+/// Substrate network types.
+#[cfg(feature = "sc-network-types")]
+pub use sc_network_types;
+
+/// Substrate offchain workers.
+#[cfg(feature = "sc-offchain")]
+pub use sc_offchain;
+
+/// Basic metrics for block production.
+#[cfg(feature = "sc-proposer-metrics")]
+pub use sc_proposer_metrics;
+
+/// Substrate Client RPC.
+#[cfg(feature = "sc-rpc")]
+pub use sc_rpc;
+
+/// Substrate RPC interfaces.
+#[cfg(feature = "sc-rpc-api")]
+pub use sc_rpc_api;
+
+/// Substrate RPC servers.
+#[cfg(feature = "sc-rpc-server")]
+pub use sc_rpc_server;
+
+/// Substrate RPC interface v2.
+#[cfg(feature = "sc-rpc-spec-v2")]
+pub use sc_rpc_spec_v2;
+
+/// Substrate service. Starts a thread that spins up the network, client, and extrinsic pool.
+/// Manages communication between them.
+#[cfg(feature = "sc-service")]
+pub use sc_service;
+
+/// State database maintenance. Handles canonicalization and pruning in the database.
+#[cfg(feature = "sc-state-db")]
+pub use sc_state_db;
+
+/// Substrate statement store.
+#[cfg(feature = "sc-statement-store")]
+pub use sc_statement_store;
+
+/// Storage monitor service for substrate.
+#[cfg(feature = "sc-storage-monitor")]
+pub use sc_storage_monitor;
+
+/// A RPC handler to create sync states for light clients.
+#[cfg(feature = "sc-sync-state-rpc")]
+pub use sc_sync_state_rpc;
+
+/// A crate that provides basic hardware and software telemetry information.
+#[cfg(feature = "sc-sysinfo")]
+pub use sc_sysinfo;
+
+/// Telemetry utils.
+#[cfg(feature = "sc-telemetry")]
+pub use sc_telemetry;
+
+/// Instrumentation implementation for substrate.
+#[cfg(feature = "sc-tracing")]
+pub use sc_tracing;
+
+/// Helper macros for Substrate's client CLI.
+#[cfg(feature = "sc-tracing-proc-macro")]
+pub use sc_tracing_proc_macro;
+
+/// Substrate transaction pool implementation.
+#[cfg(feature = "sc-transaction-pool")]
+pub use sc_transaction_pool;
+
+/// Transaction pool client facing API.
+#[cfg(feature = "sc-transaction-pool-api")]
+pub use sc_transaction_pool_api;
+
+/// I/O for Substrate runtimes.
+#[cfg(feature = "sc-utils")]
+pub use sc_utils;
+
+/// Helper crate for generating slot ranges for the Polkadot runtime.
+#[cfg(feature = "slot-range-helper")]
+pub use slot_range_helper;
+
+/// Snowbridge Beacon Primitives.
+#[cfg(feature = "snowbridge-beacon-primitives")]
+pub use snowbridge_beacon_primitives;
+
+/// Snowbridge Core.
+#[cfg(feature = "snowbridge-core")]
+pub use snowbridge_core;
+
+/// Snowbridge Ethereum.
+#[cfg(feature = "snowbridge-ethereum")]
+pub use snowbridge_ethereum;
+
+/// Snowbridge Outbound Queue Merkle Tree.
+#[cfg(feature = "snowbridge-outbound-queue-merkle-tree")]
+pub use snowbridge_outbound_queue_merkle_tree;
+
+/// Snowbridge Outbound Queue Runtime API.
+#[cfg(feature = "snowbridge-outbound-queue-runtime-api")]
+pub use snowbridge_outbound_queue_runtime_api;
+
+/// Snowbridge Ethereum Client Pallet.
+#[cfg(feature = "snowbridge-pallet-ethereum-client")]
+pub use snowbridge_pallet_ethereum_client;
+
+/// Snowbridge Ethereum Client Test Fixtures.
+#[cfg(feature = "snowbridge-pallet-ethereum-client-fixtures")]
+pub use snowbridge_pallet_ethereum_client_fixtures;
+
+/// Snowbridge Inbound Queue Pallet.
+#[cfg(feature = "snowbridge-pallet-inbound-queue")]
+pub use snowbridge_pallet_inbound_queue;
+
+/// Snowbridge Inbound Queue Test Fixtures.
+#[cfg(feature = "snowbridge-pallet-inbound-queue-fixtures")]
+pub use snowbridge_pallet_inbound_queue_fixtures;
+
+/// Snowbridge Outbound Queue Pallet.
+#[cfg(feature = "snowbridge-pallet-outbound-queue")]
+pub use snowbridge_pallet_outbound_queue;
+
+/// Snowbridge System Pallet.
+#[cfg(feature = "snowbridge-pallet-system")]
+pub use snowbridge_pallet_system;
+
+/// Snowbridge Router Primitives.
+#[cfg(feature = "snowbridge-router-primitives")]
+pub use snowbridge_router_primitives;
+
+/// Snowbridge Runtime Common.
+#[cfg(feature = "snowbridge-runtime-common")]
+pub use snowbridge_runtime_common;
+
+/// Snowbridge Runtime Tests.
+#[cfg(feature = "snowbridge-runtime-test-common")]
+pub use snowbridge_runtime_test_common;
+
+/// Snowbridge System Runtime API.
+#[cfg(feature = "snowbridge-system-runtime-api")]
+pub use snowbridge_system_runtime_api;
+
+/// Substrate runtime api primitives.
+#[cfg(feature = "sp-api")]
+pub use sp_api;
+
+/// Macros for declaring and implementing runtime apis.
+#[cfg(feature = "sp-api-proc-macro")]
+pub use sp_api_proc_macro;
+
+/// Provides facilities for generating application specific crypto wrapper types.
+#[cfg(feature = "sp-application-crypto")]
+pub use sp_application_crypto;
+
+/// Minimal fixed point arithmetic primitives and types for runtime.
+#[cfg(feature = "sp-arithmetic")]
+pub use sp_arithmetic;
+
+/// Authority discovery primitives.
+#[cfg(feature = "sp-authority-discovery")]
+pub use sp_authority_discovery;
+
+/// The block builder runtime api.
+#[cfg(feature = "sp-block-builder")]
+pub use sp_block_builder;
+
+/// Substrate blockchain traits and primitives.
+#[cfg(feature = "sp-blockchain")]
+pub use sp_blockchain;
+
+/// Common utilities for building and using consensus engines in substrate.
+#[cfg(feature = "sp-consensus")]
+pub use sp_consensus;
+
+/// Primitives for Aura consensus.
+#[cfg(feature = "sp-consensus-aura")]
+pub use sp_consensus_aura;
+
+/// Primitives for BABE consensus.
+#[cfg(feature = "sp-consensus-babe")]
+pub use sp_consensus_babe;
+
+/// Primitives for BEEFY protocol.
+#[cfg(feature = "sp-consensus-beefy")]
+pub use sp_consensus_beefy;
+
+/// Primitives for GRANDPA integration, suitable for WASM compilation.
+#[cfg(feature = "sp-consensus-grandpa")]
+pub use sp_consensus_grandpa;
+
+/// Primitives for Aura consensus.
+#[cfg(feature = "sp-consensus-pow")]
+pub use sp_consensus_pow;
+
+/// Primitives for slots-based consensus.
+#[cfg(feature = "sp-consensus-slots")]
+pub use sp_consensus_slots;
+
+/// Shareable Substrate types.
+#[cfg(feature = "sp-core")]
+pub use sp_core;
+
+/// Hashing primitives (deprecated: use sp-crypto-hashing for new applications).
+#[cfg(feature = "sp-core-hashing")]
+pub use sp_core_hashing;
+
+/// Procedural macros for calculating static hashes (deprecated in favor of
+/// `sp-crypto-hashing-proc-macro`).
+#[cfg(feature = "sp-core-hashing-proc-macro")]
+pub use sp_core_hashing_proc_macro;
+
+/// Host functions for common Arkworks elliptic curve operations.
+#[cfg(feature = "sp-crypto-ec-utils")]
+pub use sp_crypto_ec_utils;
+
+/// Hashing primitives.
+#[cfg(feature = "sp-crypto-hashing")]
+pub use sp_crypto_hashing;
+
+/// Procedural macros for calculating static hashes.
+#[cfg(feature = "sp-crypto-hashing-proc-macro")]
+pub use sp_crypto_hashing_proc_macro;
+
+/// Substrate database trait.
+#[cfg(feature = "sp-database")]
+pub use sp_database;
+
+/// Macros to derive runtime debug implementation.
+#[cfg(feature = "sp-debug-derive")]
+pub use sp_debug_derive;
+
+/// Substrate externalities abstraction.
+#[cfg(feature = "sp-externalities")]
+pub use sp_externalities;
+
+/// Substrate RuntimeGenesisConfig builder API.
+#[cfg(feature = "sp-genesis-builder")]
+pub use sp_genesis_builder;
+
+/// Provides types and traits for creating and checking inherents.
+#[cfg(feature = "sp-inherents")]
+pub use sp_inherents;
+
+/// I/O for Substrate runtimes.
+#[cfg(feature = "sp-io")]
+pub use sp_io;
+
+/// Keyring support code for the runtime. A set of test accounts.
+#[cfg(feature = "sp-keyring")]
+pub use sp_keyring;
+
+/// Keystore primitives.
+#[cfg(feature = "sp-keystore")]
+pub use sp_keystore;
+
+/// Handling of blobs, usually Wasm code, which may be compressed.
+#[cfg(feature = "sp-maybe-compressed-blob")]
+pub use sp_maybe_compressed_blob;
+
+/// Intermediate representation of the runtime metadata.
+#[cfg(feature = "sp-metadata-ir")]
+pub use sp_metadata_ir;
+
+/// Substrate mixnet types and runtime interface.
+#[cfg(feature = "sp-mixnet")]
+pub use sp_mixnet;
+
+/// Merkle Mountain Range primitives.
+#[cfg(feature = "sp-mmr-primitives")]
+pub use sp_mmr_primitives;
+
+/// NPoS election algorithm primitives.
+#[cfg(feature = "sp-npos-elections")]
+pub use sp_npos_elections;
+
+/// Substrate offchain workers primitives.
+#[cfg(feature = "sp-offchain")]
+pub use sp_offchain;
+
+/// Custom panic hook with bug report link.
+#[cfg(feature = "sp-panic-handler")]
+pub use sp_panic_handler;
+
+/// Substrate RPC primitives and utilities.
+#[cfg(feature = "sp-rpc")]
+pub use sp_rpc;
+
+/// Runtime Modules shared primitive types.
+#[cfg(feature = "sp-runtime")]
+pub use sp_runtime;
+
+/// Substrate runtime interface.
+#[cfg(feature = "sp-runtime-interface")]
+pub use sp_runtime_interface;
+
+/// This crate provides procedural macros for usage within the context of the Substrate runtime
+/// interface.
+#[cfg(feature = "sp-runtime-interface-proc-macro")]
+pub use sp_runtime_interface_proc_macro;
+
+/// Primitives for sessions.
+#[cfg(feature = "sp-session")]
+pub use sp_session;
+
+/// A crate which contains primitives that are useful for implementation that uses staking
+/// approaches in general. Definitions related to sessions, slashing, etc go here.
+#[cfg(feature = "sp-staking")]
+pub use sp_staking;
+
+/// Substrate State Machine.
+#[cfg(feature = "sp-state-machine")]
+pub use sp_state_machine;
+
+/// A crate which contains primitives related to the statement store.
+#[cfg(feature = "sp-statement-store")]
+pub use sp_statement_store;
+
+/// Lowest-abstraction level for the Substrate runtime: just exports useful primitives from std
+/// or client/alloc to be used with any code that depends on the runtime.
+#[cfg(feature = "sp-std")]
+pub use sp_std;
+
+/// Storage related primitives.
+#[cfg(feature = "sp-storage")]
+pub use sp_storage;
+
+/// Substrate core types and inherents for timestamps.
+#[cfg(feature = "sp-timestamp")]
+pub use sp_timestamp;
+
+/// Instrumentation primitives and macros for Substrate.
+#[cfg(feature = "sp-tracing")]
+pub use sp_tracing;
+
+/// Transaction pool runtime facing API.
+#[cfg(feature = "sp-transaction-pool")]
+pub use sp_transaction_pool;
+
+/// Transaction storage proof primitives.
+#[cfg(feature = "sp-transaction-storage-proof")]
+pub use sp_transaction_storage_proof;
+
+/// Patricia trie stuff using a parity-scale-codec node format.
+#[cfg(feature = "sp-trie")]
+pub use sp_trie;
+
+/// Version module for the Substrate runtime; Provides a function that returns the runtime
+/// version.
+#[cfg(feature = "sp-version")]
+pub use sp_version;
+
+/// Macro for defining a runtime version.
+#[cfg(feature = "sp-version-proc-macro")]
+pub use sp_version_proc_macro;
+
+/// Types and traits for interfacing between the host and the wasm runtime.
+#[cfg(feature = "sp-wasm-interface")]
+pub use sp_wasm_interface;
+
+/// Types and traits for interfacing between the host and the wasm runtime.
+#[cfg(feature = "sp-weights")]
+pub use sp_weights;
+
+/// Substrate node block inspection tool.
+#[cfg(feature = "staging-node-inspect")]
+pub use staging_node_inspect;
+
+/// Pallet to store the parachain ID.
+#[cfg(feature = "staging-parachain-info")]
+pub use staging_parachain_info;
+
+/// Tracking allocator to control the amount of memory consumed by the process.
+#[cfg(feature = "staging-tracking-allocator")]
+pub use staging_tracking_allocator;
+
+/// The basic XCM datastructures.
+#[cfg(feature = "staging-xcm")]
+pub use staging_xcm;
+
+/// Tools & types for building with XCM and its executor.
+#[cfg(feature = "staging-xcm-builder")]
+pub use staging_xcm_builder;
+
+/// An abstract and configurable XCM message executor.
+#[cfg(feature = "staging-xcm-executor")]
+pub use staging_xcm_executor;
+
+/// Generate and restore keys for Substrate based chains such as Polkadot, Kusama and a growing
+/// number of parachains and Substrate based projects.
+#[cfg(feature = "subkey")]
+pub use subkey;
+
+/// Converting BIP39 entropy to valid Substrate (sr25519) SecretKeys.
+#[cfg(feature = "substrate-bip39")]
+pub use substrate_bip39;
+
+/// Crate with utility functions for `build.rs` scripts.
+#[cfg(feature = "substrate-build-script-utils")]
+pub use substrate_build_script_utils;
+
+/// Substrate RPC for FRAME's support.
+#[cfg(feature = "substrate-frame-rpc-support")]
+pub use substrate_frame_rpc_support;
+
+/// FRAME's system exposed over Substrate RPC.
+#[cfg(feature = "substrate-frame-rpc-system")]
+pub use substrate_frame_rpc_system;
+
+/// Endpoint to expose Prometheus metrics.
+#[cfg(feature = "substrate-prometheus-endpoint")]
+pub use substrate_prometheus_endpoint;
+
+/// Shared JSON-RPC client.
+#[cfg(feature = "substrate-rpc-client")]
+pub use substrate_rpc_client;
+
+/// Node-specific RPC methods for interaction with state trie migration.
+#[cfg(feature = "substrate-state-trie-migration-rpc")]
+pub use substrate_state_trie_migration_rpc;
+
+/// Utility for building WASM binaries.
+#[cfg(feature = "substrate-wasm-builder")]
+pub use substrate_wasm_builder;
+
+/// Common constants for Testnet Parachains runtimes.
+#[cfg(feature = "testnet-parachains-constants")]
+pub use testnet_parachains_constants;
+
+/// Stick logs together with the TraceID as provided by tempo.
+#[cfg(feature = "tracing-gum")]
+pub use tracing_gum;
+
+/// Generate an overseer including builder pattern and message wrapper from a single annotated
+/// struct definition.
+#[cfg(feature = "tracing-gum-proc-macro")]
+pub use tracing_gum_proc_macro;
+
+/// Constants used throughout the Westend network.
+#[cfg(feature = "westend-runtime-constants")]
+pub use westend_runtime_constants;
+
+/// Test kit to emulate XCM program execution.
+#[cfg(feature = "xcm-emulator")]
+pub use xcm_emulator;
+
+/// XCM fee payment runtime API.
+#[cfg(feature = "xcm-fee-payment-runtime-api")]
+pub use xcm_fee_payment_runtime_api;
+
+/// Procedural macros for XCM.
+#[cfg(feature = "xcm-procedural")]
+pub use xcm_procedural;
+
+/// Test kit to simulate cross-chain message passing and XCM execution.
+#[cfg(feature = "xcm-simulator")]
+pub use xcm_simulator;