git.delta.rocks / unique-network / refs/commits / 9581cf6201ab

difftreelog

Merge remote-tracking branch 'origin/feature/multi-assets-redone' into XCM-CI-RUN-TESTS

Konstantin Astakhov2022-09-01parents: #2904753 #d952a79.patch.diff
in: master

51 files changed

added.docker/Dockerfile-testnetdiffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-testnet
@@ -0,0 +1,96 @@
+# ===== Rust builder =====
+FROM ubuntu:20.04 as rust-builder
+LABEL maintainer="Unique.Network"
+
+ARG RUST_TOOLCHAIN=
+
+ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+ENV TZ=UTC
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update && \
+    apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+RUN rustup toolchain uninstall $(rustup toolchain list) && \
+    rustup toolchain install $RUST_TOOLCHAIN && \
+    rustup default $RUST_TOOLCHAIN && \
+    rustup target list --installed && \
+    rustup show
+RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN
+
+RUN mkdir /unique_parachain
+WORKDIR /unique_parachain
+
+
+# ===== BUILD ======
+FROM rust-builder as builder-unique
+
+ARG PROFILE=release
+ARG FEATURE=
+ARG BRANCH=
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $BRANCH https://github.com/UniqueNetwork/unique-chain.git && \
+    cd unique-chain && \
+    cargo build --features=$FEATURE --$PROFILE
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+ARG POLKADOT_BUILD_BRANCH=
+ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $POLKADOT_BUILD_BRANCH --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    cargo build --release
+
+# ===== RUN ======
+
+FROM ubuntu:20.04
+
+ARG POLKADOT_LAUNCH_BRANCH=
+ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH
+
+RUN apt-get -y update && \
+      apt-get -y install curl git && \
+      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
+      export NVM_DIR="$HOME/.nvm" && \
+      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+      nvm install v16.16.0 && \
+      nvm use v16.16.0
+
+RUN git clone https://github.com/uniquenetwork/polkadot-launch -b $POLKADOT_LAUNCH_BRANCH
+
+RUN export NVM_DIR="$HOME/.nvm" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    npm install --global yarn && \
+    yarn install
+
+COPY --from=builder-unique /unique_parachain/unique-chain/target/release/unique-collator /unique-chain/target/release/
+COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/
+
+EXPOSE 9844
+EXPOSE 9944
+EXPOSE 9933
+EXPOSE 9833
+EXPOSE 40333
+EXPOSE 30333
+
+CMD export NVM_DIR="$HOME/.nvm" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    yarn start launch-config.json
+
+
added.docker/Dockerfile-xcmdiffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-xcm
@@ -0,0 +1,146 @@
+# ===== Rust builder =====
+FROM ubuntu:20.04 as rust-builder
+LABEL maintainer="Unique.Network"
+
+ARG RUST_TOOLCHAIN=
+
+ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+ENV TZ=UTC
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update && \
+    apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+RUN rustup toolchain uninstall $(rustup toolchain list) && \
+    rustup toolchain install $RUST_TOOLCHAIN && \
+    rustup default $RUST_TOOLCHAIN && \
+    rustup target list --installed && \
+    rustup show
+RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN
+
+RUN mkdir /unique_parachain
+WORKDIR /unique_parachain
+
+
+# ===== BUILD ======
+FROM rust-builder as builder-unique
+
+ARG PROFILE=release
+ARG FEATURE=
+ARG BRANCH=
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $BRANCH https://github.com/UniqueNetwork/unique-chain.git && \
+    cd unique-chain && \
+    cargo build --features=$FEATURE --$PROFILE
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+ARG POLKADOT_BUILD_BRANCH=
+ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $POLKADOT_BUILD_BRANCH --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    cargo build --release
+
+# ===== BUILD ACALA =====
+FROM rust-builder as builder-acala
+
+ARG ACALA_BUILD_BRANCH=
+ENV ACALA_BUILD_BRANCH $ACALA_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $ACALA_BUILD_BRANCH --depth 1 https://github.com/AcalaNetwork/Acala.git && \
+    cd Acala && \
+    make init && \
+    make build-release
+
+# ===== BUILD MOONBEAM =====
+FROM rust-builder as builder-moonbeam
+
+ARG MOONBEAM_BUILD_BRANCH=
+ENV MOONBEAM_BUILD_BRANCH $MOONBEAM_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $MOONBEAM_BUILD_BRANCH --depth 1 https://github.com/PureStake/moonbeam.git && \
+    cd moonbeam && \
+    cargo build --release
+
+# ===== BUILD CUMULUS =====
+FROM rust-builder as builder-cumulus
+
+ARG CUMULUS_BUILD_BRANCH=
+ENV CUMULUS_BUILD_BRANCH $CUMULUS_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $CUMULUS_BUILD_BRANCH --depth 1 https://github.com/paritytech/cumulus.git && \
+    cd cumulus && \
+    cargo build --release
+
+# ===== BUILD CHAINQL =====
+FROM rust-builder as builder-chainql
+
+RUN mkdir chainql
+WORKDIR /chainql
+
+RUN git clone -b v0.1.0 --depth 1 https://github.com/CertainLach/chainql.git . && \
+    cargo build --release
+
+# ===== RUN ======
+
+FROM ubuntu:20.04
+
+ARG POLKADOT_LAUNCH_BRANCH=
+ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH
+
+RUN apt-get -y update && \
+      apt-get -y install curl git jsonnet && \
+      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
+      export NVM_DIR="$HOME/.nvm" && \
+      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+      nvm install v16.16.0 && \
+      nvm use v16.16.0
+
+RUN git clone https://github.com/uniquenetwork/polkadot-launch -b $POLKADOT_LAUNCH_BRANCH
+
+RUN export NVM_DIR="$HOME/.nvm" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    npm install --global yarn && \
+    yarn install
+
+COPY --from=builder-unique /unique_parachain/unique-chain/target/release/unique-collator /unique-chain/target/release/
+COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/
+COPY --from=builder-moonbeam /unique_parachain/moonbeam/target/release/moonbeam /moonbeam/target/release/
+COPY --from=builder-cumulus /unique_parachain/cumulus/target/release/polkadot-parachain /cumulus/target/release/cumulus
+COPY --from=builder-acala /unique_parachain/Acala/target/production/acala /acala/target/release/
+COPY --from=builder-chainql /chainql/target/release/chainql /chainql/target/release/
+
+EXPOSE 9844
+EXPOSE 9944
+EXPOSE 9946
+EXPOSE 9947
+EXPOSE 9948
+
+CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    yarn start launch-config.json
modified.docker/Dockerfile-xcm.j2diffbeforeafterboth
--- a/.docker/Dockerfile-xcm.j2
+++ b/.docker/Dockerfile-xcm.j2
@@ -82,4 +82,3 @@
     cd /polkadot-launch && \
     yarn start launch-config-xcm-{{ NETWORK }}.json
 
-
added.docker/docker-compose-testnet.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose-testnet.yml
@@ -0,0 +1,17 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      context: ../
+      dockerfile: .docker/Dockerfile-testnet
+    expose:
+      - 9844
+      - 9944
+    ports:
+      - 127.0.0.1:9844:9844
+      - 127.0.0.1:9944:9944
+    logging:
+      options:
+        max-size: "1m"
+        max-file: "3"
added.docker/docker-compose-xcm.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose-xcm.yml
@@ -0,0 +1,23 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      context: ../
+      dockerfile: .docker/Dockerfile-xcm
+    expose:
+      - 9844
+      - 9944
+      - 9946
+      - 9947
+      - 9948
+    ports:
+      - 127.0.0.1:9844:9844
+      - 127.0.0.1:9944:9944
+      - 127.0.0.1:9946:9946
+      - 127.0.0.1:9947:9947
+      - 127.0.0.1:9948:9948
+    logging:
+      options:
+        max-size: "1m"
+        max-file: "3"
added.docker/docker-compose.tmp-testnet.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-testnet.j2
@@ -0,0 +1,18 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}"
+        - "BRANCH={{ BRANCH }}"
+        - "FEATURE={{ FEATURE }}"
+        - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}"
+        - "POLKADOT_LAUNCH_BRANCH={{ POLKADOT_LAUNCH_BRANCH }}"
+    image: testnet_node_{{ NETWORK }}
+    container_name: testnet_node_{{ NETWORK }}
+    volumes:
+       - type: bind
+         source: ./testnet-config/launch-config-testnet.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true          
added.docker/docker-compose.tmp-xcm-quartz.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-xcm-quartz.yml
@@ -0,0 +1,25 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN=nightly-2022-07-24"
+        - "BRANCH=release-v927020"
+        - "FEATURE=quartz-runtime"
+        - "POLKADOT_BUILD_BRANCH=release-v0.9.27"
+        - "ACALA_BUILD_BRANCH=2.9.0"
+        - "MOONBEAM_BUILD_BRANCH=v0.25.0"
+        - "CUMULUS_BUILD_BRANCH=release-v0.9.230"
+        - "POLKADOT_LAUNCH_BRANCH=feature/rewrite-chain-id-in-spec"
+    image: xcm_nodes_quartz
+    container_name: xcm_nodes_quartz
+    volumes:
+       - type: bind
+         source: ./xcm-config/launch-config-xcm-quartz.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true
+       - type: bind
+         source: ./xcm-config/5validators.jsonnet
+         target: /polkadot-launch/5validators.jsonnet
+         read_only: true           
added.docker/docker-compose.tmp-xcm-unique.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-xcm-unique.yml
@@ -0,0 +1,27 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN=nightly-2022-07-24"
+        - "BRANCH=release-v927020"
+        - "REPO_URL=https://github.com/UniqueNetwork/unique-chain.git"
+        - "FEATURE=unique-runtime"
+        - "POLKADOT_BUILD_BRANCH=release-v0.9.27"
+        - "ACALA_BUILD_BRANCH=2.9.0"
+        - "MOONBEAM_BUILD_BRANCH=v0.25.0"
+        - "CUMULUS_BUILD_BRANCH=release-v0.9.230"
+        - "POLKADOT_LAUNCH_BRANCH=feature/rewrite-chain-id-in-spec"          
+    image: xcm_nodes_unique
+    container_name: xcm_nodes_unique         
+    volumes:
+       - type: bind
+         source: ./xcm-config/launch-config-xcm-unique.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true
+       - type: bind
+         source: ./xcm-config/5validators.jsonnet
+         target: /polkadot-launch/5validators.jsonnet
+         read_only: true
+
added.docker/docker-compose.tmp-xcm.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-xcm.j2
@@ -0,0 +1,21 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}"
+        - "BRANCH={{ BRANCH }}"
+        - "FEATURE={{ FEATURE }}"
+        - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}"
+        - "ACALA_BUILD_BRANCH={{ ACALA_BUILD_BRANCH }}"
+        - "MOONBEAM_BUILD_BRANCH={{ MOONBEAM_BUILD_BRANCH }}"
+        - "CUMULUS_BUILD_BRANCH={{ CUMULUS_BUILD_BRANCH }}"
+        - "POLKADOT_LAUNCH_BRANCH={{ POLKADOT_LAUNCH_BRANCH }}"
+    image: xcm_nodes_{{ NETWORK }}
+    container_name: xcm_nodes_{{ NETWORK }}
+    volumes:
+       - type: bind
+         source: ./xcm-config/launch-config-xcm-{{ NETWORK }}.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true          
added.github/workflows/xcm-testnet.ymldiffbeforeafterboth
--- /dev/null
+++ b/.github/workflows/xcm-testnet.yml
@@ -0,0 +1,141 @@
+name: xcm testnet
+
+# Controls when the action will run.
+on:
+ # Triggers the workflow on push or pull request events but only for the master branch
+  pull_request:
+    branches:
+      - master
+    types:
+      - opened
+      - reopened
+      - synchronize   #commit(s) pushed to the pull request
+      - ready_for_review
+
+  # Allows you to run this workflow manually from the Actions tab
+  workflow_dispatch:
+
+#Define Workflow variables
+env:
+  REPO_URL: ${{ github.server_url }}/${{ github.repository }}
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.head_ref }}
+  cancel-in-progress: true
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+
+  prepare-execution-marix:
+
+    name: Prepare execution matrix
+
+    runs-on: XL2
+    outputs:
+      matrix: ${{ steps.create_matrix.outputs.matrix }}
+
+    steps:
+
+      - name: Clean Workspace
+        uses: AutoModality/action-clean@v1.1.0
+
+      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+      - uses: actions/checkout@v3
+        with:
+          ref: ${{ github.head_ref }}  #Checking out head commit
+
+      - name: Read .env file
+        uses: xom9ikk/dotenv@v1.0.2
+
+      - name: Create Execution matrix
+        uses: fabiocaccamo/create-matrix-action@v2
+        id: create_matrix
+        with:
+          matrix: |
+            network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}
+            network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}
+            network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}}
+
+  xcm-build:
+    needs: prepare-execution-marix
+    # The type of runner that the job will run on
+    runs-on: [XL2]
+
+    timeout-minutes: 600
+
+    name: ${{ matrix.network }}
+
+    continue-on-error: true         #Do not stop testing of matrix runs failed.  As it decided during PR review - it required 50/50& Let's check it with false.
+
+    strategy:
+      matrix:
+        include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}}
+
+
+    steps:
+      #- name: Skip if pull request is in Draft
+        # `if: github.event.pull_request.draft == true` should be kept here, at
+        # the step level, rather than at the job level. The latter is not
+        # recommended because when the PR is moved from "Draft" to "Ready to
+        # review" the workflow will immediately be passing (since it was skipped),
+        # even though it hasn't actually ran, since it takes a few seconds for
+        # the workflow to start. This is also disclosed in:
+        # https://github.community/t/dont-run-actions-on-draft-pull-requests/16817/17
+        # That scenario would open an opportunity for the check to be bypassed:
+        # 1. Get your PR approved
+        # 2. Move it to Draft
+        # 3. Push whatever commits you want
+        # 4. Move it to "Ready for review"; now the workflow is passing (it was
+        #    skipped) and "Check reviews" is also passing (it won't be updated
+        #    until the workflow is finished)
+        #    if: github.event.pull_request.draft == true
+        #run: exit 1
+
+      - name: Clean Workspace
+        uses: AutoModality/action-clean@v1.1.0
+
+      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+      - uses: actions/checkout@v3
+        with:
+          ref: ${{ github.head_ref }}  #Checking out head commit
+
+      - name: Read .env file
+        uses: xom9ikk/dotenv@v1.0.2
+
+      - name: Generate ENV related extend Dockerfile file
+        uses: cuchi/jinja2-action@v1.2.0
+        with:
+          template: .docker/Dockerfile-xcm.j2
+          output_file: .docker/Dockerfile-xcm.${{ matrix.network }}.yml
+          variables: |
+            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
+            NETWORK=${{ matrix.network }}
+            POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }}
+            POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }}
+            FEATURE=${{ matrix.features }}
+            RUNTIME=${{ matrix.runtime }}
+            BRANCH=${{ github.head_ref }}
+            ACALA_BUILD_BRANCH=${{ env.ACALA_BUILD_BRANCH }}
+            MOONBEAM_BUILD_BRANCH=${{ env.MOONBEAM_BUILD_BRANCH }}
+            CUMULUS_BUILD_BRANCH=${{ env.CUMULUS_BUILD_BRANCH }}
+
+      - name: Show build Dockerfile
+        run: cat .docker/Dockerfile-xcm.${{ matrix.network }}.yml
+
+      - name: Show launch-config-xcm-${{ matrix.network }} configuration
+        run: cat .docker/xcm-config/launch-config-xcm-${{ matrix.network }}.json
+
+      - name: Build the stack
+        run: cd .docker/ && docker build --file ./Dockerfile-xcm.${{ matrix.network }}.yml --tag xcm-nodes-${{ matrix.network }} --tag uniquenetwork/xcm-${{ matrix.network }}-testnet-local:nightly-${{ github.sha }} --tag uniquenetwork/xcm-${{ matrix.network }}-testnet-local:latest .
+
+      - name: Log in to Docker Hub
+        uses: docker/login-action@v2.0.0
+        with:
+          username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}
+          password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}
+
+      - name: Push docker version image 
+        run: docker push uniquenetwork/xcm-${{ matrix.network }}-testnet-local:nightly-${{ github.sha }}
+
+      - name: Push docker image latest
+        run: docker push uniquenetwork/xcm-${{ matrix.network }}-testnet-local:latest
modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5149,7 +5149,10 @@
  "frame-try-runtime",
  "hex-literal",
  "log",
+ "orml-tokens",
+ "orml-traits",
  "orml-vesting",
+ "orml-xtokens",
  "pallet-aura",
  "pallet-balances",
  "pallet-base-fee",
@@ -5161,6 +5164,7 @@
  "pallet-evm-contract-helpers",
  "pallet-evm-migration",
  "pallet-evm-transaction-payment",
+ "pallet-foreing-assets",
  "pallet-fungible",
  "pallet-inflation",
  "pallet-nonfungible",
@@ -5266,6 +5270,53 @@
 ]
 
 [[package]]
+name = "orml-tokens"
+version = "0.4.1-dev"
+source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
+dependencies = [
+ "frame-support",
+ "frame-system",
+ "orml-traits",
+ "parity-scale-codec 3.1.5",
+ "scale-info",
+ "serde",
+ "sp-runtime",
+ "sp-std",
+]
+
+[[package]]
+name = "orml-traits"
+version = "0.4.1-dev"
+source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
+dependencies = [
+ "frame-support",
+ "impl-trait-for-tuples",
+ "num-traits",
+ "orml-utilities",
+ "parity-scale-codec 3.1.5",
+ "scale-info",
+ "serde",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+ "xcm",
+]
+
+[[package]]
+name = "orml-utilities"
+version = "0.4.1-dev"
+source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
+dependencies = [
+ "frame-support",
+ "parity-scale-codec 3.1.5",
+ "scale-info",
+ "serde",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+]
+
+[[package]]
 name = "orml-vesting"
 version = "0.4.1-dev"
 source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
@@ -5281,6 +5332,41 @@
 ]
 
 [[package]]
+name = "orml-xcm-support"
+version = "0.4.1-dev"
+source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
+dependencies = [
+ "frame-support",
+ "orml-traits",
+ "parity-scale-codec 3.1.5",
+ "sp-runtime",
+ "sp-std",
+ "xcm",
+ "xcm-executor",
+]
+
+[[package]]
+name = "orml-xtokens"
+version = "0.4.1-dev"
+source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
+dependencies = [
+ "cumulus-primitives-core",
+ "frame-support",
+ "frame-system",
+ "orml-traits",
+ "orml-xcm-support",
+ "pallet-xcm",
+ "parity-scale-codec 3.1.5",
+ "scale-info",
+ "serde",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+ "xcm",
+ "xcm-executor",
+]
+
+[[package]]
 name = "os_str_bytes"
 version = "6.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5748,6 +5834,33 @@
 ]
 
 [[package]]
+name = "pallet-foreing-assets"
+version = "0.1.0"
+dependencies = [
+ "frame-support",
+ "frame-system",
+ "hex",
+ "log",
+ "orml-tokens",
+ "pallet-balances",
+ "pallet-common",
+ "pallet-fungible",
+ "pallet-timestamp",
+ "parity-scale-codec 3.1.5",
+ "scale-info",
+ "serde",
+ "serde_json",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+ "up-data-structs",
+ "xcm",
+ "xcm-builder",
+ "xcm-executor",
+]
+
+[[package]]
 name = "pallet-fungible"
 version = "0.1.5"
 dependencies = [
@@ -8354,7 +8467,10 @@
  "frame-try-runtime",
  "hex-literal",
  "log",
+ "orml-tokens",
+ "orml-traits",
  "orml-vesting",
+ "orml-xtokens",
  "pallet-aura",
  "pallet-balances",
  "pallet-base-fee",
@@ -8366,6 +8482,7 @@
  "pallet-evm-contract-helpers",
  "pallet-evm-migration",
  "pallet-evm-transaction-payment",
+ "pallet-foreing-assets",
  "pallet-fungible",
  "pallet-inflation",
  "pallet-nonfungible",
@@ -12343,7 +12460,10 @@
  "frame-try-runtime",
  "hex-literal",
  "log",
+ "orml-tokens",
+ "orml-traits",
  "orml-vesting",
+ "orml-xtokens",
  "pallet-aura",
  "pallet-balances",
  "pallet-base-fee",
@@ -12355,6 +12475,7 @@
  "pallet-evm-contract-helpers",
  "pallet-evm-migration",
  "pallet-evm-transaction-payment",
+ "pallet-foreing-assets",
  "pallet-fungible",
  "pallet-inflation",
  "pallet-nonfungible",
modifiednode/cli/src/chain_spec.rsdiffbeforeafterboth
--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -65,6 +65,14 @@
 	Unknown(String),
 }
 
+#[cfg(not(feature = "unique-runtime"))]
+/// PARA_ID for Opal/Quartz
+const PARA_ID: u32 = 2095;
+
+#[cfg(feature = "unique-runtime")]
+/// PARA_ID for Unique
+const PARA_ID: u32 = 2037;
+
 pub trait RuntimeIdentification {
 	fn runtime_id(&self) -> RuntimeId;
 }
@@ -167,6 +175,7 @@
 					.collect(),
 			},
 			treasury: Default::default(),
+			tokens: TokensConfig { balances: vec![] },
 			sudo: SudoConfig {
 				key: Some($root_key),
 			},
@@ -235,7 +244,7 @@
 					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
 					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
 				],
-				1000
+				PARA_ID
 			)
 		},
 		// Bootnodes
@@ -250,7 +259,7 @@
 		// Extensions
 		Extensions {
 			relay_chain: "rococo-dev".into(),
-			para_id: 1000,
+			para_id: PARA_ID,
 		},
 	)
 }
@@ -303,7 +312,7 @@
 					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
 					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
 				],
-				1000
+				PARA_ID
 			)
 		},
 		// Bootnodes
@@ -318,7 +327,7 @@
 		// Extensions
 		Extensions {
 			relay_chain: "westend-local".into(),
-			para_id: 1000,
+			para_id: PARA_ID,
 		},
 	)
 }
addedpallets/foreing-assets/Cargo.tomldiffbeforeafterboth
--- /dev/null
+++ b/pallets/foreing-assets/Cargo.toml
@@ -0,0 +1,53 @@
+[package]
+name = "pallet-foreing-assets"
+version = "0.1.0"
+license = "GPLv3"
+edition = "2021"
+
+[dependencies]
+log = { version = "0.4.14", default-features = false }
+serde = { version = "1.0.136", optional = true }
+scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
+sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }
+sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false  }
+frame-support = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }
+frame-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }
+up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
+pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }
+pallet-common = { default-features = false, path = '../common' }
+pallet-fungible = { default-features = false, path = '../fungible' }
+xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.27", default-features = false }
+xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.27", default-features = false }
+xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.27", default-features = false }
+#orml-tokens = { git = 'https://github.com/UniqueNetwork/open-runtime-module-library', branch = 'unique-polkadot-v0.9.24', version = "0.4.1-dev", default-features = false }
+orml-tokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.27", version = "0.4.1-dev", default-features = false }
+#git = "https://github.com/open-web3-stack/open-runtime-module-library"
+#branch = "polkadot-v0.9.27"
+
+[dev-dependencies]
+serde_json = "1.0.68"
+hex = { version = "0.4" }
+sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+
+[features]
+default = ["std"]
+std = [
+	"serde",
+	"log/std",
+	"codec/std",
+	"scale-info/std",
+	"sp-runtime/std",
+	"sp-std/std",
+	"frame-support/std",
+	"frame-system/std",
+	"up-data-structs/std",
+	"pallet-common/std",
+	"pallet-balances/std",
+	"pallet-fungible/std",
+	"orml-tokens/std"
+]
+try-runtime = ["frame-support/try-runtime"]
addedpallets/foreing-assets/src/impl_fungibles.rsdiffbeforeafterboth
--- /dev/null
+++ b/pallets/foreing-assets/src/impl_fungibles.rs
@@ -0,0 +1,621 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+//! Implementations for fungibles trait.
+
+use super::*;
+use frame_system::Config as SystemConfig;
+
+use frame_support::traits::tokens::{DepositConsequence, WithdrawConsequence};
+use pallet_common::CollectionHandle;
+use pallet_fungible::FungibleHandle;
+use pallet_common::CommonCollectionOperations;
+use up_data_structs::budget::Unlimited;
+use sp_runtime::traits::{CheckedAdd, CheckedSub};
+
+impl<T: Config> fungibles::Inspect<<T as SystemConfig>::AccountId> for Pallet<T>
+where
+	T: orml_tokens::Config<CurrencyId = AssetIds>,
+{
+	type AssetId = AssetIds;
+	type Balance = BalanceOf<T>;
+
+	fn total_issuance(asset: Self::AssetId) -> Self::Balance {
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible total_issuance");
+
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let parent_amount = <pallet_balances::Pallet<T> as fungible::Inspect<
+					T::AccountId,
+				>>::total_issuance();
+
+				let value: u128 = match parent_amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let amount =
+					<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::total_issuance(
+						AssetIds::NativeAssetId(NativeCurrency::Parent),
+					);
+
+				let value: u128 = match amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			AssetIds::ForeignAssetId(fid) => {
+				let target_collection_id = match <AssetBinding<T>>::get(fid) {
+					Some(v) => v,
+					None => return Zero::zero(),
+				};
+				let collection_handle = match <CollectionHandle<T>>::try_get(target_collection_id) {
+					Ok(v) => v,
+					Err(_) => return Zero::zero(),
+				};
+				let collection = FungibleHandle::cast(collection_handle);
+				Self::Balance::try_from(collection.total_supply()).unwrap_or(Zero::zero())
+			}
+		}
+	}
+
+	fn minimum_balance(asset: Self::AssetId) -> Self::Balance {
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible minimum_balance");
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let parent_amount = <pallet_balances::Pallet<T> as fungible::Inspect<
+					T::AccountId,
+				>>::minimum_balance();
+
+				let value: u128 = match parent_amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let amount =
+					<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::minimum_balance(
+						AssetIds::NativeAssetId(NativeCurrency::Parent),
+					);
+
+				let value: u128 = match amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			AssetIds::ForeignAssetId(fid) => {
+				AssetMetadatas::<T>::get(AssetIds::ForeignAssetId(fid))
+					.map(|x| x.minimal_balance)
+					.unwrap_or_else(Zero::zero)
+			}
+		}
+	}
+
+	fn balance(asset: Self::AssetId, who: &<T as SystemConfig>::AccountId) -> Self::Balance {
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible balance");
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let parent_amount =
+					<pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::balance(who);
+
+				let value: u128 = match parent_amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let amount = <orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::balance(
+					AssetIds::NativeAssetId(NativeCurrency::Parent),
+					who,
+				);
+
+				let value: u128 = match amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			AssetIds::ForeignAssetId(fid) => {
+				let target_collection_id = match <AssetBinding<T>>::get(fid) {
+					Some(v) => v,
+					None => return Zero::zero(),
+				};
+				let collection_handle = match <CollectionHandle<T>>::try_get(target_collection_id) {
+					Ok(v) => v,
+					Err(_) => return Zero::zero(),
+				};
+				let collection = FungibleHandle::cast(collection_handle);
+				Self::Balance::try_from(
+					collection.balance(T::CrossAccountId::from_sub(who.clone()), TokenId(0)),
+				)
+				.unwrap_or(Zero::zero())
+			}
+		}
+	}
+
+	fn reducible_balance(
+		asset: Self::AssetId,
+		who: &<T as SystemConfig>::AccountId,
+		keep_alive: bool,
+	) -> Self::Balance {
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible reducible_balance");
+
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let parent_amount = <pallet_balances::Pallet<T> as fungible::Inspect<
+					T::AccountId,
+				>>::reducible_balance(who, keep_alive);
+
+				let value: u128 = match parent_amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let amount =
+					<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::reducible_balance(
+						AssetIds::NativeAssetId(NativeCurrency::Parent),
+						who,
+						keep_alive,
+					);
+
+				let value: u128 = match amount.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				let ti: Self::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => return Zero::zero(),
+				};
+
+				ti
+			}
+			_ => Self::balance(asset, who),
+		}
+	}
+
+	fn can_deposit(
+		asset: Self::AssetId,
+		who: &<T as SystemConfig>::AccountId,
+		amount: Self::Balance,
+		mint: bool,
+	) -> DepositConsequence {
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible can_deposit");
+
+		let value: u128 = match amount.try_into() {
+			Ok(val) => val,
+			Err(_) => return DepositConsequence::CannotCreate,
+		};
+
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let this_amount: <T as pallet_balances::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return DepositConsequence::CannotCreate;
+					}
+				};
+				<pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::can_deposit(
+					who,
+					this_amount,
+					mint,
+				)
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let parent_amount: <T as orml_tokens::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return DepositConsequence::CannotCreate;
+					}
+				};
+				<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::can_deposit(
+					AssetIds::NativeAssetId(NativeCurrency::Parent),
+					who,
+					parent_amount,
+					mint,
+				)
+			}
+			_ => {
+				if amount.is_zero() {
+					return DepositConsequence::Success;
+				}
+
+				let extential_deposit_value = T::ExistentialDeposit::get();
+				let ed_value: u128 = match extential_deposit_value.try_into() {
+					Ok(val) => val,
+					Err(_) => return DepositConsequence::CannotCreate,
+				};
+				let extential_deposit: Self::Balance = match ed_value.try_into() {
+					Ok(val) => val,
+					Err(_) => return DepositConsequence::CannotCreate,
+				};
+
+				let new_total_balance = match Self::balance(asset, who).checked_add(&amount) {
+					Some(x) => x,
+					None => return DepositConsequence::Overflow,
+				};
+
+				if new_total_balance < extential_deposit {
+					return DepositConsequence::BelowMinimum;
+				}
+
+				DepositConsequence::Success
+			}
+		}
+	}
+
+	fn can_withdraw(
+		asset: Self::AssetId,
+		who: &<T as SystemConfig>::AccountId,
+		amount: Self::Balance,
+	) -> WithdrawConsequence<Self::Balance> {
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible can_withdraw");
+		let value: u128 = match amount.try_into() {
+			Ok(val) => val,
+			Err(_) => return WithdrawConsequence::UnknownAsset,
+		};
+
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let this_amount: <T as pallet_balances::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return WithdrawConsequence::UnknownAsset;
+					}
+				};
+				match <pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::can_withdraw(
+					who,
+					this_amount,
+				) {
+					WithdrawConsequence::NoFunds => WithdrawConsequence::NoFunds,
+					WithdrawConsequence::WouldDie => WithdrawConsequence::WouldDie,
+					WithdrawConsequence::UnknownAsset => WithdrawConsequence::UnknownAsset,
+					WithdrawConsequence::Underflow => WithdrawConsequence::Underflow,
+					WithdrawConsequence::Overflow => WithdrawConsequence::Overflow,
+					WithdrawConsequence::Frozen => WithdrawConsequence::Frozen,
+					WithdrawConsequence::Success => WithdrawConsequence::Success,
+					_ => WithdrawConsequence::NoFunds,
+				}
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let parent_amount: <T as orml_tokens::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return WithdrawConsequence::UnknownAsset;
+					}
+				};
+				match <orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::can_withdraw(
+					AssetIds::NativeAssetId(NativeCurrency::Parent),
+					who,
+					parent_amount,
+				) {
+					WithdrawConsequence::NoFunds => WithdrawConsequence::NoFunds,
+					WithdrawConsequence::WouldDie => WithdrawConsequence::WouldDie,
+					WithdrawConsequence::UnknownAsset => WithdrawConsequence::UnknownAsset,
+					WithdrawConsequence::Underflow => WithdrawConsequence::Underflow,
+					WithdrawConsequence::Overflow => WithdrawConsequence::Overflow,
+					WithdrawConsequence::Frozen => WithdrawConsequence::Frozen,
+					WithdrawConsequence::Success => WithdrawConsequence::Success,
+					_ => WithdrawConsequence::NoFunds,
+				}
+			}
+			_ => match Self::balance(asset, who).checked_sub(&amount) {
+				Some(_) => WithdrawConsequence::Success,
+				None => WithdrawConsequence::NoFunds,
+			},
+		}
+	}
+}
+
+impl<T: Config> fungibles::Mutate<<T as SystemConfig>::AccountId> for Pallet<T>
+where
+	T: orml_tokens::Config<CurrencyId = AssetIds>,
+{
+	fn mint_into(
+		asset: Self::AssetId,
+		who: &<T as SystemConfig>::AccountId,
+		amount: Self::Balance,
+	) -> DispatchResult {
+		//Self::do_mint(asset, who, amount, None)
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible mint_into {:?}", asset);
+
+		let value: u128 = match amount.try_into() {
+			Ok(val) => val,
+			Err(_) => return Err(DispatchError::Other("Bad amount to value conversion")),
+		};
+
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let this_amount: <T as pallet_balances::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return Err(DispatchError::Other(
+							"Bad amount to this parachain value conversion",
+						))
+					}
+				};
+
+				<pallet_balances::Pallet<T> as fungible::Mutate<T::AccountId>>::mint_into(
+					who,
+					this_amount,
+				)
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let parent_amount: <T as orml_tokens::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return Err(DispatchError::Other(
+							"Bad amount to relay chain value conversion",
+						))
+					}
+				};
+
+				<orml_tokens::Pallet<T> as fungibles::Mutate<T::AccountId>>::mint_into(
+					AssetIds::NativeAssetId(NativeCurrency::Parent),
+					who,
+					parent_amount,
+				)
+			}
+			AssetIds::ForeignAssetId(fid) => {
+				let target_collection_id = match <AssetBinding<T>>::get(fid) {
+					Some(v) => v,
+					None => {
+						return Err(DispatchError::Other(
+							"Associated collection not found for asset",
+						))
+					}
+				};
+				let collection =
+					FungibleHandle::cast(<CollectionHandle<T>>::try_get(target_collection_id)?);
+				let account = T::CrossAccountId::from_sub(who.clone());
+
+				let amount_data: pallet_fungible::CreateItemData<T> = (account.clone(), value);
+
+				pallet_fungible::Pallet::<T>::create_item_foreign(
+					&collection,
+					&account,
+					amount_data,
+					&Unlimited,
+				)?;
+
+				Ok(())
+			}
+		}
+	}
+
+	fn burn_from(
+		asset: Self::AssetId,
+		who: &<T as SystemConfig>::AccountId,
+		amount: Self::Balance,
+	) -> Result<Self::Balance, DispatchError> {
+		// let f = DebitFlags { keep_alive: false, best_effort: false };
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible burn_from");
+
+		let value: u128 = match amount.try_into() {
+			Ok(val) => val,
+			Err(_) => return Err(DispatchError::Other("Bad amount to value conversion")),
+		};
+
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let this_amount: <T as pallet_balances::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return Err(DispatchError::Other(
+							"Bad amount to this parachain value conversion",
+						))
+					}
+				};
+
+				match <pallet_balances::Pallet<T> as fungible::Mutate<T::AccountId>>::burn_from(
+					who,
+					this_amount,
+				) {
+					Ok(_) => Ok(amount),
+					Err(e) => Err(e),
+				}
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let parent_amount: <T as orml_tokens::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return Err(DispatchError::Other(
+							"Bad amount to relay chain value conversion",
+						))
+					}
+				};
+
+				match <orml_tokens::Pallet<T> as fungibles::Mutate<T::AccountId>>::burn_from(
+					AssetIds::NativeAssetId(NativeCurrency::Parent),
+					who,
+					parent_amount,
+				) {
+					Ok(_) => Ok(amount),
+					Err(e) => Err(e),
+				}
+			}
+			AssetIds::ForeignAssetId(fid) => {
+				let target_collection_id = match <AssetBinding<T>>::get(fid) {
+					Some(v) => v,
+					None => {
+						return Err(DispatchError::Other(
+							"Associated collection not found for asset",
+						))
+					}
+				};
+				let collection =
+					FungibleHandle::cast(<CollectionHandle<T>>::try_get(target_collection_id)?);
+				pallet_fungible::Pallet::<T>::burn_foreign(
+					&collection,
+					&T::CrossAccountId::from_sub(who.clone()),
+					value,
+				)?;
+
+				Ok(amount)
+			}
+		}
+	}
+
+	fn slash(
+		asset: Self::AssetId,
+		who: &<T as SystemConfig>::AccountId,
+		amount: Self::Balance,
+	) -> Result<Self::Balance, DispatchError> {
+		// let f = DebitFlags { keep_alive: false, best_effort: true };
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible slash");
+		Self::burn_from(asset, who, amount)?;
+		Ok(amount)
+	}
+}
+
+impl<T: Config> fungibles::Transfer<T::AccountId> for Pallet<T>
+where
+	T: orml_tokens::Config<CurrencyId = AssetIds>,
+{
+	fn transfer(
+		asset: Self::AssetId,
+		source: &<T as SystemConfig>::AccountId,
+		dest: &<T as SystemConfig>::AccountId,
+		amount: Self::Balance,
+		keep_alive: bool,
+	) -> Result<Self::Balance, DispatchError> {
+		// let f = TransferFlags { keep_alive, best_effort: false, burn_dust: false };
+		log::trace!(target: "fassets::impl_foreing_assets", "impl_fungible transfer");
+
+		let value: u128 = match amount.try_into() {
+			Ok(val) => val,
+			Err(_) => return Err(DispatchError::Other("Bad amount to value conversion")),
+		};
+
+		match asset {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => {
+				let this_amount: <T as pallet_balances::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return Err(DispatchError::Other(
+							"Bad amount to this parachain value conversion",
+						))
+					}
+				};
+
+				match <pallet_balances::Pallet<T> as fungible::Transfer<T::AccountId>>::transfer(
+					source,
+					dest,
+					this_amount,
+					keep_alive,
+				) {
+					Ok(_) => Ok(amount),
+					Err(_) => Err(DispatchError::Other(
+						"Bad amount to relay chain value conversion",
+					)),
+				}
+			}
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+				let parent_amount: <T as orml_tokens::Config>::Balance = match value.try_into() {
+					Ok(val) => val,
+					Err(_) => {
+						return Err(DispatchError::Other(
+							"Bad amount to relay chain value conversion",
+						))
+					}
+				};
+
+				match <orml_tokens::Pallet<T> as fungibles::Transfer<T::AccountId>>::transfer(
+					AssetIds::NativeAssetId(NativeCurrency::Parent),
+					source,
+					dest,
+					parent_amount,
+					keep_alive,
+				) {
+					Ok(_) => Ok(amount),
+					Err(e) => Err(e),
+				}
+			}
+			AssetIds::ForeignAssetId(fid) => {
+				let target_collection_id = match <AssetBinding<T>>::get(fid) {
+					Some(v) => v,
+					None => {
+						return Err(DispatchError::Other(
+							"Associated collection not found for asset",
+						))
+					}
+				};
+				let collection =
+					FungibleHandle::cast(<CollectionHandle<T>>::try_get(target_collection_id)?);
+
+				pallet_fungible::Pallet::<T>::transfer(
+					&collection,
+					&T::CrossAccountId::from_sub(source.clone()),
+					&T::CrossAccountId::from_sub(dest.clone()),
+					value,
+					&Unlimited,
+				)?;
+
+				Ok(amount)
+			}
+		}
+	}
+}
addedpallets/foreing-assets/src/lib.rsdiffbeforeafterboth
--- /dev/null
+++ b/pallets/foreing-assets/src/lib.rs
@@ -0,0 +1,501 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+//! # Foreing assets
+//!
+//! - [`Config`]
+//! - [`Call`]
+//! - [`Pallet`]
+//!
+//! ## Overview
+//!
+//! The foreing assests pallet provides functions for:
+//!
+//! - Local and foreign assets management. The foreign assets can be updated without runtime upgrade.
+//! - Bounds between asset and target collection for cross chain transfer and inner transfers.
+//!
+//! ## Overview
+//!
+//! Under construction
+
+#![cfg_attr(not(feature = "std"), no_std)]
+#![allow(clippy::unused_unit)]
+
+use frame_support::{
+	dispatch::DispatchResult,
+	ensure,
+	pallet_prelude::*,
+	traits::{fungible, fungibles, Currency, EnsureOrigin},
+	transactional, RuntimeDebug,
+};
+use frame_system::pallet_prelude::*;
+use up_data_structs::{CollectionMode};
+use pallet_fungible::{Pallet as PalletFungible};
+use scale_info::{TypeInfo};
+use sp_runtime::{
+	traits::{One, Zero},
+	ArithmeticError,
+};
+use sp_std::{boxed::Box, vec::Vec};
+use up_data_structs::{CollectionId, TokenId, CreateCollectionData};
+
+// NOTE:v1::MultiLocation is used in storages, we would need to do migration if upgrade the
+// MultiLocation in the future.
+use xcm::opaque::latest::{prelude::XcmError, MultiAsset};
+use xcm::{v1::MultiLocation, VersionedMultiLocation};
+use xcm_executor::{traits::WeightTrader, Assets};
+
+use pallet_common::erc::CrossAccountId;
+
+#[cfg(feature = "std")]
+use serde::{Deserialize, Serialize};
+
+// TODO: Move to primitives
+// Id of native currency.
+// 0 - QTZ\UNQ
+// 1 - KSM\DOT
+#[derive(
+	Clone,
+	Copy,
+	Eq,
+	PartialEq,
+	PartialOrd,
+	Ord,
+	MaxEncodedLen,
+	RuntimeDebug,
+	Encode,
+	Decode,
+	TypeInfo,
+)]
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+pub enum NativeCurrency {
+	Here = 0,
+	Parent = 1,
+}
+
+#[derive(
+	Clone,
+	Copy,
+	Eq,
+	PartialEq,
+	PartialOrd,
+	Ord,
+	MaxEncodedLen,
+	RuntimeDebug,
+	Encode,
+	Decode,
+	TypeInfo,
+)]
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+pub enum AssetIds {
+	ForeignAssetId(ForeignAssetId),
+	NativeAssetId(NativeCurrency),
+}
+
+pub trait TryAsForeing<T, F> {
+	fn try_as_foreing(asset: T) -> Option<F>;
+}
+
+impl TryAsForeing<AssetIds, ForeignAssetId> for AssetIds {
+	fn try_as_foreing(asset: AssetIds) -> Option<ForeignAssetId> {
+		match asset {
+			AssetIds::ForeignAssetId(id) => Some(id),
+			_ => None,
+		}
+	}
+}
+
+pub type ForeignAssetId = u32;
+pub type CurrencyId = AssetIds;
+
+mod impl_fungibles;
+mod weights;
+
+pub use module::*;
+pub use weights::WeightInfo;
+
+/// Type alias for currency balance.
+pub type BalanceOf<T> =
+	<<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;
+
+/// A mapping between ForeignAssetId and AssetMetadata.
+pub trait AssetIdMapping<ForeignAssetId, MultiLocation, AssetMetadata> {
+	/// Returns the AssetMetadata associated with a given ForeignAssetId.
+	fn get_asset_metadata(foreign_asset_id: ForeignAssetId) -> Option<AssetMetadata>;
+	/// Returns the MultiLocation associated with a given ForeignAssetId.
+	fn get_multi_location(foreign_asset_id: ForeignAssetId) -> Option<MultiLocation>;
+	/// Returns the CurrencyId associated with a given MultiLocation.
+	fn get_currency_id(multi_location: MultiLocation) -> Option<CurrencyId>;
+}
+
+pub struct XcmForeignAssetIdMapping<T>(sp_std::marker::PhantomData<T>);
+
+impl<T: Config> AssetIdMapping<ForeignAssetId, MultiLocation, AssetMetadata<BalanceOf<T>>>
+	for XcmForeignAssetIdMapping<T>
+{
+	fn get_asset_metadata(foreign_asset_id: ForeignAssetId) -> Option<AssetMetadata<BalanceOf<T>>> {
+		log::trace!(target: "fassets::asset_metadatas", "call");
+		Pallet::<T>::asset_metadatas(AssetIds::ForeignAssetId(foreign_asset_id))
+	}
+
+	fn get_multi_location(foreign_asset_id: ForeignAssetId) -> Option<MultiLocation> {
+		log::trace!(target: "fassets::get_multi_location", "call");
+		Pallet::<T>::foreign_asset_locations(foreign_asset_id)
+	}
+
+	fn get_currency_id(multi_location: MultiLocation) -> Option<CurrencyId> {
+		log::trace!(target: "fassets::get_currency_id", "call");
+		Some(AssetIds::ForeignAssetId(
+			Pallet::<T>::location_to_currency_ids(multi_location).unwrap_or(0),
+		))
+	}
+}
+
+#[frame_support::pallet]
+pub mod module {
+	use super::*;
+
+	#[pallet::config]
+	pub trait Config:
+		frame_system::Config
+		+ pallet_common::Config
+		+ pallet_fungible::Config
+		+ orml_tokens::Config
+		+ pallet_balances::Config
+	{
+		/// The overarching event type.
+		type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
+
+		/// Currency type for withdraw and balance storage.
+		type Currency: Currency<Self::AccountId>;
+
+		/// Required origin for registering asset.
+		type RegisterOrigin: EnsureOrigin<Self::Origin>;
+
+		/// Weight information for the extrinsics in this module.
+		type WeightInfo: WeightInfo;
+	}
+
+	#[derive(Clone, Eq, PartialEq, RuntimeDebug, Encode, Decode, TypeInfo)]
+	pub struct AssetMetadata<Balance> {
+		pub name: Vec<u8>,
+		pub symbol: Vec<u8>,
+		pub decimals: u8,
+		pub minimal_balance: Balance,
+	}
+
+	#[pallet::error]
+	pub enum Error<T> {
+		/// The given location could not be used (e.g. because it cannot be expressed in the
+		/// desired version of XCM).
+		BadLocation,
+		/// MultiLocation existed
+		MultiLocationExisted,
+		/// AssetId not exists
+		AssetIdNotExists,
+		/// AssetId exists
+		AssetIdExisted,
+	}
+
+	#[pallet::event]
+	#[pallet::generate_deposit(fn deposit_event)]
+	pub enum Event<T: Config> {
+		/// The foreign asset registered.
+		ForeignAssetRegistered {
+			asset_id: ForeignAssetId,
+			asset_address: MultiLocation,
+			metadata: AssetMetadata<BalanceOf<T>>,
+		},
+		/// The foreign asset updated.
+		ForeignAssetUpdated {
+			asset_id: ForeignAssetId,
+			asset_address: MultiLocation,
+			metadata: AssetMetadata<BalanceOf<T>>,
+		},
+		/// The asset registered.
+		AssetRegistered {
+			asset_id: AssetIds,
+			metadata: AssetMetadata<BalanceOf<T>>,
+		},
+		/// The asset updated.
+		AssetUpdated {
+			asset_id: AssetIds,
+			metadata: AssetMetadata<BalanceOf<T>>,
+		},
+	}
+
+	/// Next available Foreign AssetId ID.
+	///
+	/// NextForeignAssetId: ForeignAssetId
+	#[pallet::storage]
+	#[pallet::getter(fn next_foreign_asset_id)]
+	pub type NextForeignAssetId<T: Config> = StorageValue<_, ForeignAssetId, ValueQuery>;
+	/// The storages for MultiLocations.
+	///
+	/// ForeignAssetLocations: map ForeignAssetId => Option<MultiLocation>
+	#[pallet::storage]
+	#[pallet::getter(fn foreign_asset_locations)]
+	pub type ForeignAssetLocations<T: Config> =
+		StorageMap<_, Twox64Concat, ForeignAssetId, MultiLocation, OptionQuery>;
+
+	/// The storages for CurrencyIds.
+	///
+	/// LocationToCurrencyIds: map MultiLocation => Option<ForeignAssetId>
+	#[pallet::storage]
+	#[pallet::getter(fn location_to_currency_ids)]
+	pub type LocationToCurrencyIds<T: Config> =
+		StorageMap<_, Twox64Concat, MultiLocation, ForeignAssetId, OptionQuery>;
+
+	/// The storages for AssetMetadatas.
+	///
+	/// AssetMetadatas: map AssetIds => Option<AssetMetadata>
+	#[pallet::storage]
+	#[pallet::getter(fn asset_metadatas)]
+	pub type AssetMetadatas<T: Config> =
+		StorageMap<_, Twox64Concat, AssetIds, AssetMetadata<BalanceOf<T>>, OptionQuery>;
+
+	/// The storages for assets to fungible collection binding
+	///
+	#[pallet::storage]
+	#[pallet::getter(fn asset_binding)]
+	pub type AssetBinding<T: Config> =
+		StorageMap<_, Twox64Concat, ForeignAssetId, CollectionId, OptionQuery>;
+
+	#[pallet::pallet]
+	#[pallet::without_storage_info]
+	pub struct Pallet<T>(_);
+
+	#[pallet::call]
+	impl<T: Config> Pallet<T> {
+		#[pallet::weight(<T as Config>::WeightInfo::register_foreign_asset())]
+		#[transactional]
+		pub fn register_foreign_asset(
+			origin: OriginFor<T>,
+			owner: T::AccountId,
+			location: Box<VersionedMultiLocation>,
+			metadata: Box<AssetMetadata<BalanceOf<T>>>,
+		) -> DispatchResult {
+			T::RegisterOrigin::ensure_origin(origin.clone())?;
+
+			let location: MultiLocation = (*location)
+				.try_into()
+				.map_err(|()| Error::<T>::BadLocation)?;
+
+			let md = metadata.clone();
+			let name: Vec<u16> = md.name.into_iter().map(|x| x as u16).collect::<Vec<u16>>();
+			let mut description: Vec<u16> = "Foreing assets collection for "
+				.encode_utf16()
+				.collect::<Vec<u16>>();
+			description.append(&mut name.clone());
+
+			let data: CreateCollectionData<T::AccountId> = CreateCollectionData {
+				name: name.try_into().unwrap(),
+				description: description.try_into().unwrap(),
+				mode: CollectionMode::Fungible(18),
+				..Default::default()
+			};
+
+			let bounded_collection_id = <PalletFungible<T>>::init_foreign_collection(
+				CrossAccountId::from_sub(owner),
+				data,
+			)?;
+			let foreign_asset_id =
+				Self::do_register_foreign_asset(&location, &metadata, bounded_collection_id)?;
+
+			Self::deposit_event(Event::<T>::ForeignAssetRegistered {
+				asset_id: foreign_asset_id,
+				asset_address: location,
+				metadata: *metadata,
+			});
+			Ok(())
+		}
+
+		#[pallet::weight(<T as Config>::WeightInfo::update_foreign_asset())]
+		#[transactional]
+		pub fn update_foreign_asset(
+			origin: OriginFor<T>,
+			foreign_asset_id: ForeignAssetId,
+			location: Box<VersionedMultiLocation>,
+			metadata: Box<AssetMetadata<BalanceOf<T>>>,
+		) -> DispatchResult {
+			T::RegisterOrigin::ensure_origin(origin)?;
+
+			let location: MultiLocation = (*location)
+				.try_into()
+				.map_err(|()| Error::<T>::BadLocation)?;
+			Self::do_update_foreign_asset(foreign_asset_id, &location, &metadata)?;
+
+			Self::deposit_event(Event::<T>::ForeignAssetUpdated {
+				asset_id: foreign_asset_id,
+				asset_address: location,
+				metadata: *metadata,
+			});
+			Ok(())
+		}
+	}
+}
+
+impl<T: Config> Pallet<T> {
+	fn get_next_foreign_asset_id() -> Result<ForeignAssetId, DispatchError> {
+		NextForeignAssetId::<T>::try_mutate(|current| -> Result<ForeignAssetId, DispatchError> {
+			let id = *current;
+			*current = current
+				.checked_add(One::one())
+				.ok_or(ArithmeticError::Overflow)?;
+			Ok(id)
+		})
+	}
+
+	fn do_register_foreign_asset(
+		location: &MultiLocation,
+		metadata: &AssetMetadata<BalanceOf<T>>,
+		bounded_collection_id: CollectionId,
+	) -> Result<ForeignAssetId, DispatchError> {
+		let foreign_asset_id = Self::get_next_foreign_asset_id()?;
+		LocationToCurrencyIds::<T>::try_mutate(location, |maybe_currency_ids| -> DispatchResult {
+			ensure!(
+				maybe_currency_ids.is_none(),
+				Error::<T>::MultiLocationExisted
+			);
+			*maybe_currency_ids = Some(foreign_asset_id);
+			// *maybe_currency_ids = Some(CurrencyId::ForeignAsset(foreign_asset_id));
+
+			ForeignAssetLocations::<T>::try_mutate(
+				foreign_asset_id,
+				|maybe_location| -> DispatchResult {
+					ensure!(maybe_location.is_none(), Error::<T>::MultiLocationExisted);
+					*maybe_location = Some(location.clone());
+
+					AssetMetadatas::<T>::try_mutate(
+						AssetIds::ForeignAssetId(foreign_asset_id),
+						|maybe_asset_metadatas| -> DispatchResult {
+							ensure!(maybe_asset_metadatas.is_none(), Error::<T>::AssetIdExisted);
+							*maybe_asset_metadatas = Some(metadata.clone());
+							Ok(())
+						},
+					)
+				},
+			)?;
+
+			AssetBinding::<T>::try_mutate(foreign_asset_id, |collection_id| -> DispatchResult {
+				*collection_id = Some(bounded_collection_id);
+				Ok(())
+			})
+		})?;
+
+		Ok(foreign_asset_id)
+	}
+
+	fn do_update_foreign_asset(
+		foreign_asset_id: ForeignAssetId,
+		location: &MultiLocation,
+		metadata: &AssetMetadata<BalanceOf<T>>,
+	) -> DispatchResult {
+		ForeignAssetLocations::<T>::try_mutate(
+			foreign_asset_id,
+			|maybe_multi_locations| -> DispatchResult {
+				let old_multi_locations = maybe_multi_locations
+					.as_mut()
+					.ok_or(Error::<T>::AssetIdNotExists)?;
+
+				AssetMetadatas::<T>::try_mutate(
+					AssetIds::ForeignAssetId(foreign_asset_id),
+					|maybe_asset_metadatas| -> DispatchResult {
+						ensure!(
+							maybe_asset_metadatas.is_some(),
+							Error::<T>::AssetIdNotExists
+						);
+
+						// modify location
+						if location != old_multi_locations {
+							LocationToCurrencyIds::<T>::remove(old_multi_locations.clone());
+							LocationToCurrencyIds::<T>::try_mutate(
+								location,
+								|maybe_currency_ids| -> DispatchResult {
+									ensure!(
+										maybe_currency_ids.is_none(),
+										Error::<T>::MultiLocationExisted
+									);
+									// *maybe_currency_ids = Some(CurrencyId::ForeignAsset(foreign_asset_id));
+									*maybe_currency_ids = Some(foreign_asset_id);
+									Ok(())
+								},
+							)?;
+						}
+						*maybe_asset_metadatas = Some(metadata.clone());
+						*old_multi_locations = location.clone();
+						Ok(())
+					},
+				)
+			},
+		)
+	}
+}
+
+use sp_runtime::SaturatedConversion;
+use sp_runtime::traits::Saturating;
+pub use frame_support::{
+	traits::{
+		fungibles::{Balanced, CreditOf},
+		tokens::currency::Currency as CurrencyT,
+		OnUnbalanced as OnUnbalancedT,
+	},
+	weights::{WeightToFeePolynomial, WeightToFee},
+};
+
+use xcm::latest::{Fungibility::Fungible as XcmFungible};
+
+pub struct FreeForAll<
+	WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,
+	AssetId: Get<MultiLocation>,
+	AccountId,
+	Currency: CurrencyT<AccountId>,
+	OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,
+>(
+	Weight,
+	Currency::Balance,
+	PhantomData<(WeightToFee, AssetId, AccountId, Currency, OnUnbalanced)>,
+);
+
+impl<
+		WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,
+		AssetId: Get<MultiLocation>,
+		AccountId,
+		Currency: CurrencyT<AccountId>,
+		OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,
+	> WeightTrader for FreeForAll<WeightToFee, AssetId, AccountId, Currency, OnUnbalanced>
+{
+	fn new() -> Self {
+		Self(0, Zero::zero(), PhantomData)
+	}
+
+	fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result<Assets, XcmError> {
+		log::trace!(target: "fassets::weight", "buy_weight weight: {:?}, payment: {:?}", weight, payment);
+		Ok(payment)
+	}
+}
+impl<
+		WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,
+		AssetId: Get<MultiLocation>,
+		AccountId,
+		Currency: CurrencyT<AccountId>,
+		OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,
+	> Drop for FreeForAll<WeightToFee, AssetId, AccountId, Currency, OnUnbalanced>
+{
+	fn drop(&mut self) {
+		OnUnbalanced::on_unbalanced(Currency::issue(self.1));
+	}
+}
addedpallets/foreing-assets/src/weights.rsdiffbeforeafterboth
--- /dev/null
+++ b/pallets/foreing-assets/src/weights.rs
@@ -0,0 +1,43 @@
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(clippy::unnecessary_cast)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weight functions needed for module_asset_registry.
+pub trait WeightInfo {
+	fn register_foreign_asset() -> Weight;
+	fn update_foreign_asset() -> Weight;
+}
+
+/// Weights for module_asset_registry using the Acala node and recommended hardware.
+pub struct AcalaWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for AcalaWeight<T> {
+	fn register_foreign_asset() -> Weight {
+		(29_819_000 as Weight)
+			.saturating_add(T::DbWeight::get().reads(2 as Weight))
+			.saturating_add(T::DbWeight::get().writes(3 as Weight))
+	}
+	fn update_foreign_asset() -> Weight {
+		(25_119_000 as Weight)
+			.saturating_add(T::DbWeight::get().reads(1 as Weight))
+			.saturating_add(T::DbWeight::get().writes(1 as Weight))
+	}
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+	fn register_foreign_asset() -> Weight {
+		(29_819_000 as Weight)
+			.saturating_add(RocksDbWeight::get().reads(2 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(3 as Weight))
+	}
+	fn update_foreign_asset() -> Weight {
+		(25_119_000 as Weight)
+			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
+	}
+}
\ No newline at end of file
modifiedpallets/fungible/src/lib.rsdiffbeforeafterboth
--- a/pallets/fungible/src/lib.rs
+++ b/pallets/fungible/src/lib.rs
@@ -167,6 +167,11 @@
 		Value = u128,
 		QueryKind = ValueQuery,
 	>;
+
+	/// Foreign collection flag
+	#[pallet::storage]
+	pub type ForeignCollection<T: Config> =
+		StorageMap<Hasher = Twox64Concat, Key = CollectionId, Value = bool, QueryKind = ValueQuery>;
 }
 
 /// Wrapper around untyped collection handle, asserting inner collection is of fungible type.
@@ -215,6 +220,16 @@
 		<PalletCommon<T>>::init_collection(owner, data, false)
 	}
 
+	/// Initializes the collection with ForeignCollection flag. Returns [CollectionId] on success, [DispatchError] otherwise.
+	pub fn init_foreign_collection(
+		owner: T::CrossAccountId,
+		data: CreateCollectionData<T::AccountId>,
+	) -> Result<CollectionId, DispatchError> {
+		let id = <PalletCommon<T>>::init_collection(owner, data, false)?;
+		<ForeignCollection<T>>::insert(id, true);
+		Ok(id)
+	}
+
 	/// Destroys a collection.
 	pub fn destroy_collection(
 		collection: FungibleHandle<T>,
@@ -230,6 +245,7 @@
 
 		PalletCommon::destroy_collection(collection.0, sender)?;
 
+		<ForeignCollection<T>>::remove(id);
 		<TotalSupply<T>>::remove(id);
 		let _ = <Balance<T>>::clear_prefix((id,), u32::MAX, None);
 		let _ = <Allowance<T>>::clear_prefix((id,), u32::MAX, None);
@@ -257,6 +273,12 @@
 			.checked_sub(amount)
 			.ok_or(<CommonError<T>>::TokenValueTooLow)?;
 
+		// Foreign collection check
+		ensure!(
+			!<ForeignCollection<T>>::get(collection.id),
+			<CommonError<T>>::NoPermission
+		);
+
 		if collection.permissions.access() == AccessMode::AllowList {
 			collection.check_allowlist(owner)?;
 		}
@@ -288,6 +310,46 @@
 		Ok(())
 	}
 
+	/// Burns the specified amount of the token.
+	pub fn burn_foreign(
+		collection: &FungibleHandle<T>,
+		owner: &T::CrossAccountId,
+		amount: u128,
+	) -> DispatchResult {
+		let total_supply = <TotalSupply<T>>::get(collection.id)
+			.checked_sub(amount)
+			.ok_or(<CommonError<T>>::TokenValueTooLow)?;
+
+		let balance = <Balance<T>>::get((collection.id, owner))
+			.checked_sub(amount)
+			.ok_or(<CommonError<T>>::TokenValueTooLow)?;
+		// =========
+
+		if balance == 0 {
+			<Balance<T>>::remove((collection.id, owner));
+			<PalletStructure<T>>::unnest_if_nested(owner, collection.id, TokenId::default());
+		} else {
+			<Balance<T>>::insert((collection.id, owner), balance);
+		}
+		<TotalSupply<T>>::insert(collection.id, total_supply);
+
+		<PalletEvm<T>>::deposit_log(
+			ERC20Events::Transfer {
+				from: *owner.as_eth(),
+				to: H160::default(),
+				value: amount.into(),
+			}
+			.to_log(collection_id_to_address(collection.id)),
+		);
+		<PalletCommon<T>>::deposit_event(CommonEvent::ItemDestroyed(
+			collection.id,
+			TokenId::default(),
+			owner.clone(),
+			amount,
+		));
+		Ok(())
+	}
+
 	/// Transfers the specified amount of tokens. Will check that
 	/// the transfer is allowed for the token.
 	///
@@ -373,6 +435,12 @@
 		data: BTreeMap<T::CrossAccountId, u128>,
 		nesting_budget: &dyn Budget,
 	) -> DispatchResult {
+		// Foreign collection check
+		ensure!(
+			!<ForeignCollection<T>>::get(collection.id),
+			<CommonError<T>>::NoPermission
+		);
+
 		if !collection.is_owner_or_admin(sender) {
 			ensure!(
 				collection.permissions.mint_mode(),
@@ -442,6 +510,68 @@
 		Ok(())
 	}
 
+	/// Minting tokens for multiple IDs.
+	/// See [`create_item_foreign`][`Pallet::create_item_foreign`] for more details.
+	pub fn create_multiple_items_foreign(
+		collection: &FungibleHandle<T>,
+		sender: &T::CrossAccountId,
+		data: BTreeMap<T::CrossAccountId, u128>,
+		nesting_budget: &dyn Budget,
+	) -> DispatchResult {
+		let total_supply = data
+			.iter()
+			.map(|(_, v)| *v)
+			.try_fold(<TotalSupply<T>>::get(collection.id), |acc, v| {
+				acc.checked_add(v)
+			})
+			.ok_or(ArithmeticError::Overflow)?;
+
+		let mut balances = data;
+		for (k, v) in balances.iter_mut() {
+			*v = <Balance<T>>::get((collection.id, &k))
+				.checked_add(*v)
+				.ok_or(ArithmeticError::Overflow)?;
+		}
+
+		for (to, _) in balances.iter() {
+			<PalletStructure<T>>::check_nesting(
+				sender.clone(),
+				to,
+				collection.id,
+				TokenId::default(),
+				nesting_budget,
+			)?;
+		}
+
+		// =========
+
+		<TotalSupply<T>>::insert(collection.id, total_supply);
+		for (user, amount) in balances {
+			<Balance<T>>::insert((collection.id, &user), amount);
+			<PalletStructure<T>>::nest_if_sent_to_token_unchecked(
+				&user,
+				collection.id,
+				TokenId::default(),
+			);
+			<PalletEvm<T>>::deposit_log(
+				ERC20Events::Transfer {
+					from: H160::default(),
+					to: *user.as_eth(),
+					value: amount.into(),
+				}
+				.to_log(collection_id_to_address(collection.id)),
+			);
+			<PalletCommon<T>>::deposit_event(CommonEvent::ItemCreated(
+				collection.id,
+				TokenId::default(),
+				user.clone(),
+				amount,
+			));
+		}
+
+		Ok(())
+	}
+
 	fn set_allowance_unchecked(
 		collection: &FungibleHandle<T>,
 		owner: &T::CrossAccountId,
@@ -615,6 +745,24 @@
 		)
 	}
 
+	///	Creates fungible token.
+	///
+	/// - `data`: Contains user who will become the owners of the tokens and amount
+	///   of tokens he will receive.
+	pub fn create_item_foreign(
+		collection: &FungibleHandle<T>,
+		sender: &T::CrossAccountId,
+		data: CreateItemData<T>,
+		nesting_budget: &dyn Budget,
+	) -> DispatchResult {
+		Self::create_multiple_items_foreign(
+			collection,
+			sender,
+			[(data.0, data.1)].into_iter().collect(),
+			nesting_budget,
+		)
+	}
+
 	/// Returns 10 tokens owners in no particular order
 	///
 	/// There is no direct way to get token holders in ascending order,
addedruntime/common/config/pallets/foreign_asset.rsdiffbeforeafterboth
--- /dev/null
+++ b/runtime/common/config/pallets/foreign_asset.rs
@@ -0,0 +1,9 @@
+use crate::{Runtime, Event, Balances};
+use up_common::types::AccountId;
+
+impl pallet_foreing_assets::Config for Runtime {
+	type Event = Event;
+	type Currency = Balances;
+	type RegisterOrigin = frame_system::EnsureRoot<AccountId>;
+	type WeightInfo = ();
+}
modifiedruntime/common/config/pallets/mod.rsdiffbeforeafterboth
--- a/runtime/common/config/pallets/mod.rs
+++ b/runtime/common/config/pallets/mod.rs
@@ -40,6 +40,9 @@
 #[cfg(feature = "scheduler")]
 pub mod scheduler;
 
+#[cfg(feature = "foreign-assets")]
+pub mod foreign_asset;
+
 parameter_types! {
 	pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();
 	pub const CollectionCreationPrice: Balance = 2 * UNIQUE;
modifiedruntime/common/config/xcm.rsdiffbeforeafterboth
--- a/runtime/common/config/xcm.rs
+++ b/runtime/common/config/xcm.rs
@@ -16,7 +16,8 @@
 
 use frame_support::{
 	traits::{
-		tokens::currency::Currency as CurrencyT, OnUnbalanced as OnUnbalancedT, Get, Everything,
+		Contains, tokens::currency::Currency as CurrencyT, OnUnbalanced as OnUnbalancedT, Get,
+		Everything, fungibles,
 	},
 	weights::{Weight, WeightToFeePolynomial, WeightToFee},
 	parameter_types, match_types,
@@ -34,18 +35,29 @@
 	Fungibility::Fungible as XcmFungible,
 	MultiAsset, Error as XcmError,
 };
-use xcm_executor::traits::{MatchesFungible, WeightTrader};
 use xcm_builder::{
 	AccountId32Aliases, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, EnsureXcmOrigin,
-	FixedWeightBounds, LocationInverter, NativeAsset, ParentAsSuperuser, RelayChainAsNative,
-	SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative,
-	SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, ParentIsPreset,
+	FixedWeightBounds, FungiblesAdapter, LocationInverter, NativeAsset, ParentAsSuperuser,
+	RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,
+	SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,
+	ParentIsPreset, ConvertedConcreteAssetId,
 };
 use xcm_executor::{Config, XcmExecutor, Assets};
-use sp_std::marker::PhantomData;
+use xcm_executor::traits::{
+	Convert as ConvertXcm, JustTry, MatchesFungible, WeightTrader, FilterAssetLocation,
+};
+use pallet_foreing_assets::{
+	AssetIds, AssetIdMapping, XcmForeignAssetIdMapping, CurrencyId, NativeCurrency, FreeForAll,
+	TryAsForeing, ForeignAssetId,
+};
+use sp_std::{borrow::Borrow, marker::PhantomData, vec, vec::Vec};
 use crate::{
 	Runtime, Call, Event, Origin, Balances, ParachainInfo, ParachainSystem, PolkadotXcm, XcmpQueue,
+	xcm_config::Barrier,
 };
+#[cfg(feature = "foreign-assets")]
+use crate::ForeingAssets;
+
 use up_common::{
 	types::{AccountId, Balance},
 	constants::*,
@@ -73,8 +85,22 @@
 pub struct OnlySelfCurrency;
 impl<B: TryFrom<u128>> MatchesFungible<B> for OnlySelfCurrency {
 	fn matches_fungible(a: &MultiAsset) -> Option<B> {
+		let paraid = Parachain(ParachainInfo::parachain_id().into());
 		match (&a.id, &a.fun) {
-			(Concrete(_), XcmFungible(ref amount)) => CheckedConversion::checked_from(*amount),
+			(
+				Concrete(MultiLocation {
+					parents: 1,
+					interior: X1(loc),
+				}),
+				XcmFungible(ref amount),
+			) if paraid == *loc => CheckedConversion::checked_from(*amount),
+			(
+				Concrete(MultiLocation {
+					parents: 0,
+					interior: Here,
+				}),
+				XcmFungible(ref amount),
+			) => CheckedConversion::checked_from(*amount),
 			_ => None,
 		}
 	}
@@ -145,11 +171,13 @@
 	};
 }
 
+/*
 pub type Barrier = (
 	TakeWeightCredit,
 	AllowTopLevelPaidExecutionFrom<Everything>,
 	// ^^^ Parent & its unit plurality gets free execution
 );
+ */
 
 pub struct UsingOnlySelfCurrencyComponents<
 	WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,
@@ -176,48 +204,8 @@
 	}
 
 	fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result<Assets, XcmError> {
-		let amount = WeightToFee::weight_to_fee(&weight);
-		let u128_amount: u128 = amount.try_into().map_err(|_| XcmError::Overflow)?;
-
-		// location to this parachain through relay chain
-		let option1: xcm::v1::AssetId = Concrete(MultiLocation {
-			parents: 1,
-			interior: X1(Parachain(ParachainInfo::parachain_id().into())),
-		});
-		// direct location
-		let option2: xcm::v1::AssetId = Concrete(MultiLocation {
-			parents: 0,
-			interior: Here,
-		});
-
-		let required = if payment.fungible.contains_key(&option1) {
-			(option1, u128_amount).into()
-		} else if payment.fungible.contains_key(&option2) {
-			(option2, u128_amount).into()
-		} else {
-			(Concrete(MultiLocation::default()), u128_amount).into()
-		};
-
-		let unused = payment
-			.checked_sub(required)
-			.map_err(|_| XcmError::TooExpensive)?;
-		self.0 = self.0.saturating_add(weight);
-		self.1 = self.1.saturating_add(amount);
-		Ok(unused)
+		Ok(payment)
 	}
-
-	fn refund_weight(&mut self, weight: Weight) -> Option<MultiAsset> {
-		let weight = weight.min(self.0);
-		let amount = WeightToFee::weight_to_fee(&weight);
-		self.0 -= weight;
-		self.1 = self.1.saturating_sub(amount);
-		let amount: u128 = amount.saturated_into();
-		if amount > 0 {
-			Some((AssetId::get(), amount).into())
-		} else {
-			None
-		}
-	}
 }
 impl<
 		WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,
@@ -233,6 +221,153 @@
 	}
 }
 
+parameter_types! {
+	pub CheckingAccount: AccountId = PolkadotXcm::check_account();
+}
+/// Allow checking in assets that have issuance > 0.
+#[cfg(feature = "foreign-assets")]
+pub struct NonZeroIssuance<AccountId, ForeingAssets>(PhantomData<(AccountId, ForeingAssets)>);
+
+#[cfg(feature = "foreign-assets")]
+impl<AccountId, ForeingAssets> Contains<<ForeingAssets as fungibles::Inspect<AccountId>>::AssetId>
+	for NonZeroIssuance<AccountId, ForeingAssets>
+where
+	ForeingAssets: fungibles::Inspect<AccountId>,
+{
+	fn contains(id: &<ForeingAssets as fungibles::Inspect<AccountId>>::AssetId) -> bool {
+		!ForeingAssets::total_issuance(*id).is_zero()
+	}
+}
+
+#[cfg(feature = "foreign-assets")]
+pub struct AsInnerId<AssetId, ConvertAssetId>(PhantomData<(AssetId, ConvertAssetId)>);
+#[cfg(feature = "foreign-assets")]
+impl<AssetId: Clone + PartialEq, ConvertAssetId: ConvertXcm<AssetId, AssetId>>
+	ConvertXcm<MultiLocation, AssetId> for AsInnerId<AssetId, ConvertAssetId>
+where
+	AssetId: Borrow<AssetId>,
+	AssetId: TryAsForeing<AssetId, ForeignAssetId>,
+	AssetIds: Borrow<AssetId>,
+{
+	fn convert_ref(id: impl Borrow<MultiLocation>) -> Result<AssetId, ()> {
+		let id = id.borrow();
+
+		log::trace!(
+			target: "xcm::AsInnerId::Convert",
+			"AsInnerId {:?}",
+			id
+		);
+
+		let parent = MultiLocation::parent();
+		let here = MultiLocation::here();
+		let self_location = MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())));
+
+		if *id == parent {
+			return ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Parent));
+		}
+
+		if *id == here || *id == self_location {
+			return ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Here));
+		}
+
+		match XcmForeignAssetIdMapping::<Runtime>::get_currency_id(id.clone()) {
+			Some(AssetIds::ForeignAssetId(foreign_asset_id)) => {
+				ConvertAssetId::convert_ref(AssetIds::ForeignAssetId(foreign_asset_id))
+			}
+			_ => ConvertAssetId::convert_ref(AssetIds::ForeignAssetId(0)),
+		}
+	}
+
+	fn reverse_ref(what: impl Borrow<AssetId>) -> Result<MultiLocation, ()> {
+		log::trace!(
+			target: "xcm::AsInnerId::Reverse",
+			"AsInnerId",
+		);
+
+		let asset_id = what.borrow();
+
+		let parent_id =
+			ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Parent)).unwrap();
+		let here_id =
+			ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Here)).unwrap();
+
+		if asset_id.clone() == parent_id {
+			return Ok(MultiLocation::parent());
+		}
+
+		if asset_id.clone() == here_id {
+			return Ok(MultiLocation::new(
+				1,
+				X1(Parachain(ParachainInfo::get().into())),
+			));
+		}
+
+		match <AssetId as TryAsForeing<AssetId, ForeignAssetId>>::try_as_foreing(asset_id.clone()) {
+			Some(fid) => match XcmForeignAssetIdMapping::<Runtime>::get_multi_location(fid) {
+				Some(location) => Ok(location),
+				None => Err(()),
+			},
+			None => Err(()),
+		}
+	}
+}
+
+/// Means for transacting assets besides the native currency on this chain.
+#[cfg(feature = "foreign-assets")]
+pub type FungiblesTransactor = FungiblesAdapter<
+	// Use this fungibles implementation:
+	ForeingAssets,
+	// Use this currency when it is a fungible asset matching the given location or name:
+	ConvertedConcreteAssetId<AssetIds, Balance, AsInnerId<AssetIds, JustTry>, JustTry>,
+	// Convert an XCM MultiLocation into a local account id:
+	LocationToAccountId,
+	// Our chain's account ID type (we can't get away without mentioning it explicitly):
+	AccountId,
+	// We only want to allow teleports of known assets. We use non-zero issuance as an indication
+	// that this asset is known.
+	NonZeroIssuance<AccountId, ForeingAssets>,
+	// The account to use for tracking teleports.
+	CheckingAccount,
+>;
+
+/// Means for transacting assets on this chain.
+#[cfg(feature = "foreign-assets")]
+pub type AssetTransactors = FungiblesTransactor;
+
+#[cfg(not(feature = "foreign-assets"))]
+pub type AssetTransactors = LocalAssetTransactor;
+
+#[cfg(feature = "foreign-assets")]
+pub struct AllAsset;
+#[cfg(feature = "foreign-assets")]
+impl FilterAssetLocation for AllAsset {
+	fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool {
+		true
+	}
+}
+
+#[cfg(feature = "foreign-assets")]
+pub type IsReserve = AllAsset;
+#[cfg(not(feature = "foreign-assets"))]
+pub type IsReserve = NativeAsset;
+
+#[cfg(feature = "foreign-assets")]
+type Trader<T> = FreeForAll<
+	pallet_configuration::WeightToFee<T, Balance>,
+	RelayLocation,
+	AccountId,
+	Balances,
+	(),
+>;
+#[cfg(not(feature = "foreign-assets"))]
+type Trader<T> = UsingOnlySelfCurrencyComponents<
+	pallet_configuration::WeightToFee<T, Balance>,
+	RelayLocation,
+	AccountId,
+	Balances,
+	(),
+>;
+
 pub struct XcmConfig<T>(PhantomData<T>);
 impl<T> Config for XcmConfig<T>
 where
@@ -241,20 +376,14 @@
 	type Call = Call;
 	type XcmSender = XcmRouter;
 	// How to withdraw and deposit an asset.
-	type AssetTransactor = LocalAssetTransactor;
+	type AssetTransactor = AssetTransactors;
 	type OriginConverter = XcmOriginToTransactDispatchOrigin;
-	type IsReserve = NativeAsset;
+	type IsReserve = IsReserve;
 	type IsTeleporter = (); // Teleportation is disabled
 	type LocationInverter = LocationInverter<Ancestry>;
 	type Barrier = Barrier;
 	type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;
-	type Trader = UsingOnlySelfCurrencyComponents<
-		pallet_configuration::WeightToFee<T, Balance>,
-		RelayLocation,
-		AccountId,
-		Balances,
-		(),
-	>;
+	type Trader = Trader<T>;
 	type ResponseHandler = (); // Don't handle responses for now.
 	type SubscriptionService = PolkadotXcm;
 
modifiedruntime/common/construct_runtime/mod.rsdiffbeforeafterboth
--- a/runtime/common/construct_runtime/mod.rs
+++ b/runtime/common/construct_runtime/mod.rs
@@ -42,6 +42,9 @@
                 Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event<T>} = 34,
                 Sudo: pallet_sudo::{Pallet, Call, Storage, Config<T>, Event<T>} = 35,
                 Vesting: orml_vesting::{Pallet, Storage, Call, Event<T>, Config<T>} = 37,
+                #[runtimes(opal)]
+                XTokens: orml_xtokens = 38,
+                Tokens: orml_tokens = 39,
                 // Vesting: pallet_vesting::{Pallet, Call, Config<T>, Storage, Event<T>} = 37,
                 // Contracts: pallet_contracts::{Pallet, Call, Storage, Event<T>} = 38,
 
@@ -77,6 +80,9 @@
                 #[runtimes(opal)]
                 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
 
+                #[runtimes(opal)]
+                ForeingAssets: pallet_foreing_assets::{Pallet, Call, Storage, Event<T>} = 80,
+
                 // Frontier
                 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,
                 Ethereum: pallet_ethereum::{Pallet, Config, Call, Storage, Event, Origin} = 101,
modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -120,13 +120,18 @@
     'up-sponsorship/std',
 
     "orml-vesting/std",
+    "orml-tokens/std",
+    "orml-xtokens/std",
+    "orml-traits/std",
+    "pallet-foreing-assets/std"
 ]
 limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
-opal-runtime = ['refungible', 'scheduler', 'rmrk']
+opal-runtime = ['refungible', 'scheduler', 'rmrk', 'foreign-assets']
 
 refungible = []
 scheduler = []
 rmrk = []
+foreign-assets = []
 
 ################################################################################
 # Substrate Dependencies
@@ -399,6 +404,24 @@
 version = "0.4.1-dev"
 default-features = false
 
+[dependencies.orml-xtokens]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
+[dependencies.orml-tokens]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
+[dependencies.orml-traits]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
 ################################################################################
 # local dependencies
 
@@ -437,6 +460,7 @@
 fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
 up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.27' }
+pallet-foreing-assets = { default-features = false, path = "../../pallets/foreing-assets" }
 
 ################################################################################
 # Build Dependencies
modifiedruntime/opal/src/lib.rsdiffbeforeafterboth
--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -35,6 +35,8 @@
 #[path = "../../common/mod.rs"]
 mod runtime_common;
 
+pub mod xcm_config;
+
 pub use runtime_common::*;
 
 pub const RUNTIME_NAME: &str = "opal";
addedruntime/opal/src/xcm_config.rsdiffbeforeafterboth
--- /dev/null
+++ b/runtime/opal/src/xcm_config.rs
@@ -0,0 +1,513 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use cumulus_pallet_xcm;
+use frame_support::{
+	{match_types, parameter_types, weights::Weight},
+	pallet_prelude::Get,
+	traits::{Contains, Everything, fungibles},
+};
+use frame_system::EnsureRoot;
+use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key};
+use pallet_xcm::XcmPassthrough;
+use polkadot_parachain::primitives::Sibling;
+use sp_runtime::traits::{AccountIdConversion, CheckedConversion, Convert, Zero};
+use sp_std::{borrow::Borrow, marker::PhantomData, vec, vec::Vec};
+use xcm::{
+	latest::{MultiAsset, Xcm},
+	prelude::{Concrete, Fungible as XcmFungible},
+	v1::{BodyId, Junction::*, Junctions::*, MultiLocation, NetworkId},
+};
+use xcm_builder::{
+	AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, EnsureXcmOrigin,
+	FixedWeightBounds, FungiblesAdapter, LocationInverter, ParentAsSuperuser, ParentIsPreset,
+	RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,
+	SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,
+	ConvertedConcreteAssetId,
+};
+use xcm_executor::{
+	{Config, XcmExecutor},
+	traits::{Convert as ConvertXcm, FilterAssetLocation, JustTry, MatchesFungible, ShouldExecute},
+};
+
+use up_common::{
+	constants::{MAXIMUM_BLOCK_WEIGHT, UNIQUE},
+	types::{AccountId, Balance},
+};
+
+use crate::{
+	Balances, Call, DmpQueue, Event, ForeingAssets, Origin, ParachainInfo, ParachainSystem,
+	PolkadotXcm, Runtime, XcmpQueue,
+};
+use crate::runtime_common::config::substrate::{TreasuryModuleId, MaxLocks, MaxReserves};
+use crate::runtime_common::config::pallets::TreasuryAccountId;
+use crate::runtime_common::config::xcm::*;
+use crate::*;
+
+use pallet_foreing_assets::{
+	AssetIds, AssetIdMapping, XcmForeignAssetIdMapping, CurrencyId, NativeCurrency, FreeForAll,
+	TryAsForeing, ForeignAssetId,
+};
+
+// Signed version of balance
+pub type Amount = i128;
+
+/*
+parameter_types! {
+	pub const ReservedDmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4;
+	pub const ReservedXcmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4;
+}
+
+impl cumulus_pallet_parachain_system::Config for Runtime {
+	type Event = Event;
+	type SelfParaId = parachain_info::Pallet<Self>;
+	type OnSystemEvent = ();
+	type OutboundXcmpMessageSource = XcmpQueue;
+	type DmpMessageHandler = DmpQueue;
+	type ReservedDmpWeight = ReservedDmpWeight;
+	type ReservedXcmpWeight = ReservedXcmpWeight;
+	type XcmpMessageHandler = XcmpQueue;
+}
+
+impl parachain_info::Config for Runtime {}
+
+impl cumulus_pallet_aura_ext::Config for Runtime {}
+ */
+
+parameter_types! {
+	pub const RelayLocation: MultiLocation = MultiLocation::parent();
+	pub const RelayNetwork: NetworkId = NetworkId::Polkadot;
+	pub RelayOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();
+	pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
+	pub SelfLocation: MultiLocation = MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())));
+}
+
+/*
+/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used
+/// when determining ownership of accounts for asset transacting and when attempting to use XCM
+/// `Transact` in order to determine the dispatch Origin.
+pub type LocationToAccountId = (
+	// The parent (Relay-chain) origin converts to the default `AccountId`.
+	ParentIsPreset<AccountId>,
+	// Sibling parachain origins convert to AccountId via the `ParaId::into`.
+	SiblingParachainConvertsVia<Sibling, AccountId>,
+	// Straight up local `AccountId32` origins just alias directly to `AccountId`.
+	AccountId32Aliases<RelayNetwork, AccountId>,
+);
+
+pub struct OnlySelfCurrency;
+
+impl<B: TryFrom<u128>> MatchesFungible<B> for OnlySelfCurrency {
+	fn matches_fungible(a: &MultiAsset) -> Option<B> {
+		match (&a.id, &a.fun) {
+			(Concrete(_), XcmFungible(ref amount)) => CheckedConversion::checked_from(*amount),
+			_ => None,
+		}
+	}
+}
+
+/// Means for transacting assets on this chain.
+pub type LocalAssetTransactor = CurrencyAdapter<
+	// Use this currency:
+	Balances,
+	// Use this currency when it is a fungible asset matching the given location or name:
+	OnlySelfCurrency,
+	// Do a simple punn to convert an AccountId32 MultiLocation into a native chain account ID:
+	LocationToAccountId,
+	// Our chain's account ID type (we can't get away without mentioning it explicitly):
+	AccountId,
+	// We don't track any teleports.
+	(),
+>;
+
+ */
+
+/*
+parameter_types! {
+	pub CheckingAccount: AccountId = PolkadotXcm::check_account();
+}
+
+/// Allow checking in assets that have issuance > 0.
+pub struct NonZeroIssuance<AccountId, ForeingAssets>(PhantomData<(AccountId, ForeingAssets)>);
+impl<AccountId, ForeingAssets> Contains<<ForeingAssets as fungibles::Inspect<AccountId>>::AssetId>
+	for NonZeroIssuance<AccountId, ForeingAssets>
+where
+	ForeingAssets: fungibles::Inspect<AccountId>,
+{
+	fn contains(id: &<ForeingAssets as fungibles::Inspect<AccountId>>::AssetId) -> bool {
+		!ForeingAssets::total_issuance(*id).is_zero()
+	}
+}
+
+pub struct AsInnerId<AssetId, ConvertAssetId>(PhantomData<(AssetId, ConvertAssetId)>);
+impl<AssetId: Clone + PartialEq, ConvertAssetId: ConvertXcm<AssetId, AssetId>>
+	ConvertXcm<MultiLocation, AssetId> for AsInnerId<AssetId, ConvertAssetId>
+where
+	AssetId: Borrow<AssetId>,
+	AssetId: TryAsForeing<AssetId, ForeignAssetId>,
+	AssetIds: Borrow<AssetId>,
+{
+	fn convert_ref(id: impl Borrow<MultiLocation>) -> Result<AssetId, ()> {
+		let id = id.borrow();
+
+		log::trace!(
+			target: "xcm::AsInnerId::Convert",
+			"AsInnerId {:?}",
+			id
+		);
+
+		let parent = MultiLocation::parent();
+		let here = MultiLocation::here();
+		let self_location = MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())));
+
+		if *id == parent {
+			return ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Parent));
+		}
+
+		if *id == here || *id == self_location {
+			return ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Here));
+		}
+
+		match XcmForeignAssetIdMapping::<Runtime>::get_currency_id(id.clone()) {
+			Some(AssetIds::ForeignAssetId(foreign_asset_id)) => {
+				ConvertAssetId::convert_ref(AssetIds::ForeignAssetId(foreign_asset_id))
+			}
+			_ => ConvertAssetId::convert_ref(AssetIds::ForeignAssetId(0)),
+		}
+	}
+
+	fn reverse_ref(what: impl Borrow<AssetId>) -> Result<MultiLocation, ()> {
+		log::trace!(
+			target: "xcm::AsInnerId::Reverse",
+			"AsInnerId",
+		);
+
+		let asset_id = what.borrow();
+
+		let parent_id =
+			ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Parent)).unwrap();
+		let here_id =
+			ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Here)).unwrap();
+
+		if asset_id.clone() == parent_id {
+			return Ok(MultiLocation::parent());
+		}
+
+		if asset_id.clone() == here_id {
+			return Ok(MultiLocation::new(
+				1,
+				X1(Parachain(ParachainInfo::get().into())),
+			));
+		}
+
+		match <AssetId as TryAsForeing<AssetId, ForeignAssetId>>::try_as_foreing(asset_id.clone()) {
+			Some(fid) => match XcmForeignAssetIdMapping::<Runtime>::get_multi_location(fid) {
+				Some(location) => Ok(location),
+				None => Err(()),
+			},
+			None => Err(()),
+		}
+	}
+}
+
+/// Means for transacting assets besides the native currency on this chain.
+pub type FungiblesTransactor = FungiblesAdapter<
+	// Use this fungibles implementation:
+	ForeingAssets,
+	// Use this currency when it is a fungible asset matching the given location or name:
+	ConvertedConcreteAssetId<AssetIds, Balance, AsInnerId<AssetIds, JustTry>, JustTry>,
+	// Convert an XCM MultiLocation into a local account id:
+	LocationToAccountId,
+	// Our chain's account ID type (we can't get away without mentioning it explicitly):
+	AccountId,
+	// We only want to allow teleports of known assets. We use non-zero issuance as an indication
+	// that this asset is known.
+	NonZeroIssuance<AccountId, ForeingAssets>,
+	// The account to use for tracking teleports.
+	CheckingAccount,
+>;
+
+/// Means for transacting assets on this chain.
+pub type AssetTransactors = FungiblesTransactor;
+ */
+
+/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance,
+/// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can
+/// biases the kind of local `Origin` it will become.
+pub type XcmOriginToTransactDispatchOrigin = (
+	// Sovereign account converter; this attempts to derive an `AccountId` from the origin location
+	// using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for
+	// foreign chains who want to have a local sovereign account on this chain which they control.
+	SovereignSignedViaLocation<LocationToAccountId, Origin>,
+	// Native converter for Relay-chain (Parent) location; will converts to a `Relay` origin when
+	// recognised.
+	RelayChainAsNative<RelayOrigin, Origin>,
+	// Native converter for sibling Parachains; will convert to a `SiblingPara` origin when
+	// recognised.
+	SiblingParachainAsNative<cumulus_pallet_xcm::Origin, Origin>,
+	// Superuser converter for the Relay-chain (Parent) location. This will allow it to issue a
+	// transaction from the Root origin.
+	ParentAsSuperuser<Origin>,
+	// Native signed account converter; this just converts an `AccountId32` origin into a normal
+	// `Origin::Signed` origin of the same 32-byte value.
+	SignedAccountId32AsNative<RelayNetwork, Origin>,
+	// Xcm origins can be represented natively under the Xcm pallet's Xcm origin.
+	XcmPassthrough<Origin>,
+);
+
+parameter_types! {
+	// One XCM operation is 1_000_000 weight - almost certainly a conservative estimate.
+	pub UnitWeightCost: Weight = 1_000_000;
+	// 1200 UNIQUEs buy 1 second of weight.
+	pub const WeightPrice: (MultiLocation, u128) = (MultiLocation::parent(), 1_200 * UNIQUE);
+	pub const MaxInstructions: u32 = 100;
+	pub const MaxAuthorities: u32 = 100_000;
+}
+
+match_types! {
+	pub type ParentOrParentsUnitPlurality: impl Contains<MultiLocation> = {
+		MultiLocation { parents: 1, interior: Here } |
+		MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Unit, .. }) }
+	};
+}
+
+/// Execution barrier that just takes `max_weight` from `weight_credit`.
+///
+/// Useful to allow XCM execution by local chain users via extrinsics.
+/// E.g. `pallet_xcm::reserve_asset_transfer` to transfer a reserve asset
+/// out of the local chain to another one.
+pub struct AllowAllDebug;
+impl ShouldExecute for AllowAllDebug {
+	fn should_execute<Call>(
+		_origin: &MultiLocation,
+		_message: &mut Xcm<Call>,
+		max_weight: Weight,
+		weight_credit: &mut Weight,
+	) -> Result<(), ()> {
+		Ok(())
+	}
+}
+
+pub type Barrier = (
+	TakeWeightCredit,
+	AllowTopLevelPaidExecutionFrom<Everything>,
+	AllowUnpaidExecutionFrom<ParentOrParentsUnitPlurality>,
+	// ^^^ Parent & its unit plurality gets free execution
+	AllowAllDebug,
+);
+
+pub struct AllAsset;
+impl FilterAssetLocation for AllAsset {
+	fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool {
+		true
+	}
+}
+
+/* /// CHANGEME!!!
+pub struct XcmConfig;
+impl Config for XcmConfig {
+	type Call = Call;
+	type XcmSender = XcmRouter;
+	// How to withdraw and deposit an asset.
+	type AssetTransactor = AssetTransactors;
+	type OriginConverter = XcmOriginToTransactDispatchOrigin;
+	type IsReserve = AllAsset; //NativeAsset;
+	type IsTeleporter = (); // Teleportation is disabled
+	type LocationInverter = LocationInverter<Ancestry>;
+	type Barrier = Barrier;
+	type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;
+	type Trader =
+		FreeForAll<LinearFee<Balance>, RelayLocation, AccountId, Balances, ()>;
+	type ResponseHandler = (); // Don't handle responses for now.
+	type SubscriptionService = PolkadotXcm;
+	type AssetTrap = PolkadotXcm;
+	type AssetClaims = PolkadotXcm;
+}
+ */
+
+/*
+/// No local origins on this chain are allowed to dispatch XCM sends/executions.
+pub type LocalOriginToLocation = (SignedToAccountId32<Origin, AccountId, RelayNetwork>,);
+
+/// The means for routing XCM messages which are not for local execution into the right message
+/// queues.
+pub type XcmRouter = (
+	// Two routers - use UMP to communicate with the relay chain:
+	cumulus_primitives_utility::ParentAsUmp<ParachainSystem, ()>,
+	// ..and XCMP to communicate with the sibling chains.
+	XcmpQueue,
+);
+ */
+
+/*
+impl pallet_xcm::Config for Runtime {
+	type Event = Event;
+	type SendXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>;
+	type XcmRouter = XcmRouter;
+	type ExecuteXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>;
+	type XcmExecuteFilter = Everything;
+	type XcmExecutor = XcmExecutor<XcmConfig<Self>>;
+	type XcmTeleportFilter = Everything;
+	type XcmReserveTransferFilter = Everything;
+	type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;
+	type LocationInverter = LocationInverter<Ancestry>;
+	type Origin = Origin;
+	type Call = Call;
+	const VERSION_DISCOVERY_QUEUE_SIZE: u32 = 100;
+	type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion;
+}
+ */
+
+/*
+impl cumulus_pallet_xcm::Config for Runtime {
+	type Event = Event;
+	type XcmExecutor = XcmExecutor<XcmConfig>;
+}
+
+impl cumulus_pallet_xcmp_queue::Config for Runtime {
+	type WeightInfo = ();
+	type Event = Event;
+	type XcmExecutor = XcmExecutor<XcmConfig>;
+	type ChannelInfo = ParachainSystem;
+	type VersionWrapper = ();
+	type ExecuteOverweightOrigin = frame_system::EnsureRoot<AccountId>;
+	type ControllerOrigin = EnsureRoot<AccountId>;
+	type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
+}
+
+impl cumulus_pallet_dmp_queue::Config for Runtime {
+	type Event = Event;
+	type XcmExecutor = XcmExecutor<XcmConfig>;
+	type ExecuteOverweightOrigin = frame_system::EnsureRoot<AccountId>;
+}
+ */
+
+pub struct CurrencyIdConvert;
+impl Convert<AssetIds, Option<MultiLocation>> for CurrencyIdConvert {
+	fn convert(id: AssetIds) -> Option<MultiLocation> {
+		match id {
+			AssetIds::NativeAssetId(NativeCurrency::Here) => Some(MultiLocation::new(
+				1,
+				X1(Parachain(ParachainInfo::get().into())),
+			)),
+			AssetIds::NativeAssetId(NativeCurrency::Parent) => Some(MultiLocation::parent()),
+			AssetIds::ForeignAssetId(foreign_asset_id) => {
+				XcmForeignAssetIdMapping::<Runtime>::get_multi_location(foreign_asset_id)
+			}
+		}
+	}
+}
+impl Convert<MultiLocation, Option<CurrencyId>> for CurrencyIdConvert {
+	fn convert(location: MultiLocation) -> Option<CurrencyId> {
+		if location == MultiLocation::here()
+			|| location == MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())))
+		{
+			return Some(AssetIds::NativeAssetId(NativeCurrency::Here));
+		}
+
+		if location == MultiLocation::parent() {
+			return Some(AssetIds::NativeAssetId(NativeCurrency::Parent));
+		}
+
+		if let Some(currency_id) =
+			XcmForeignAssetIdMapping::<Runtime>::get_currency_id(location.clone())
+		{
+			return Some(currency_id);
+		}
+
+		None
+	}
+}
+
+pub fn get_all_module_accounts() -> Vec<AccountId> {
+	vec![TreasuryModuleId::get().into_account_truncating()]
+}
+
+pub struct DustRemovalWhitelist;
+impl Contains<AccountId> for DustRemovalWhitelist {
+	fn contains(a: &AccountId) -> bool {
+		get_all_module_accounts().contains(a)
+	}
+}
+
+parameter_type_with_key! {
+	pub ExistentialDeposits: |currency_id: CurrencyId| -> Balance {
+		match currency_id {
+			CurrencyId::NativeAssetId(symbol) => match symbol {
+				NativeCurrency::Here => 0,
+				NativeCurrency::Parent=> 0,
+			},
+			_ => 100_000
+		}
+	};
+}
+
+impl orml_tokens::Config for Runtime {
+	type Event = Event;
+	type Balance = Balance;
+	type Amount = Amount;
+	type CurrencyId = CurrencyId;
+	type WeightInfo = ();
+	type ExistentialDeposits = ExistentialDeposits;
+	type OnDust = orml_tokens::TransferDust<Runtime, TreasuryAccountId>;
+	type MaxLocks = MaxLocks;
+	type MaxReserves = MaxReserves;
+	// TODO: Add all module accounts
+	type DustRemovalWhitelist = DustRemovalWhitelist;
+	/// The id type for named reserves.
+	type ReserveIdentifier = ();
+	type OnNewTokenAccount = ();
+	type OnKilledTokenAccount = ();
+}
+
+parameter_types! {
+	pub const BaseXcmWeight: Weight = 100_000_000; // TODO: recheck this
+	pub const MaxAssetsForTransfer: usize = 2;
+}
+
+parameter_type_with_key! {
+	pub ParachainMinFee: |_location: MultiLocation| -> Option<u128> {
+		Some(100_000_000)
+	};
+}
+
+pub struct AccountIdToMultiLocation;
+impl Convert<AccountId, MultiLocation> for AccountIdToMultiLocation {
+	fn convert(account: AccountId) -> MultiLocation {
+		X1(AccountId32 {
+			network: NetworkId::Any,
+			id: account.into(),
+		})
+		.into()
+	}
+}
+
+impl orml_xtokens::Config for Runtime {
+	type Event = Event;
+	type Balance = Balance;
+	type CurrencyId = AssetIds;
+	type CurrencyIdConvert = CurrencyIdConvert;
+	type AccountIdToMultiLocation = AccountIdToMultiLocation;
+	type SelfLocation = SelfLocation;
+	type XcmExecutor = XcmExecutor<XcmConfig<Self>>;
+	type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;
+	type BaseXcmWeight = BaseXcmWeight;
+	type LocationInverter = LocationInverter<Ancestry>;
+	type MaxAssetsForTransfer = MaxAssetsForTransfer;
+	type MinXcmFee = ParachainMinFee;
+	type MultiLocationsFilter = Everything;
+	type ReserveProvider = AbsoluteReserveProvider;
+}
modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -115,8 +115,15 @@
     'xcm-builder/std',
     'xcm-executor/std',
     'up-common/std',
+    'rmrk-rpc/std',
+    'evm-coder/std',
+    'up-sponsorship/std',
 
     "orml-vesting/std",
+    "orml-tokens/std",
+    "orml-xtokens/std",
+    "orml-traits/std",
+    "pallet-foreing-assets/std"
 ]
 limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
 quartz-runtime = []
@@ -124,6 +131,7 @@
 refungible = []
 scheduler = []
 rmrk = []
+foreign-assets = []
 
 ################################################################################
 # Substrate Dependencies
@@ -396,6 +404,25 @@
 version = "0.4.1-dev"
 default-features = false
 
+[dependencies.orml-xtokens]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
+[dependencies.orml-tokens]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
+[dependencies.orml-traits]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
+
 ################################################################################
 # RMRK dependencies
 
@@ -441,6 +468,7 @@
 fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
 up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.27' }
+pallet-foreing-assets = { default-features = false, path = "../../pallets/foreing-assets" }
 
 ################################################################################
 # Build Dependencies
modifiedruntime/quartz/src/lib.rsdiffbeforeafterboth
--- a/runtime/quartz/src/lib.rs
+++ b/runtime/quartz/src/lib.rs
@@ -35,6 +35,8 @@
 #[path = "../../common/mod.rs"]
 mod runtime_common;
 
+pub mod xcm_config;
+
 pub use runtime_common::*;
 
 pub const RUNTIME_NAME: &str = "quartz";
addedruntime/quartz/src/xcm_config.rsdiffbeforeafterboth
--- /dev/null
+++ b/runtime/quartz/src/xcm_config.rs
@@ -0,0 +1,294 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use cumulus_pallet_xcm;
+use frame_support::{
+    {match_types, parameter_types, weights::Weight},
+    pallet_prelude::Get,
+    traits::{Contains, Everything, fungibles},
+};
+use frame_system::EnsureRoot;
+use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key};
+use pallet_xcm::XcmPassthrough;
+use polkadot_parachain::primitives::Sibling;
+use sp_runtime::traits::{AccountIdConversion, CheckedConversion, Convert, Zero};
+use sp_std::{borrow::Borrow, marker::PhantomData, vec, vec::Vec};
+use xcm::{
+    latest::{MultiAsset, Xcm},
+    prelude::{Concrete, Fungible as XcmFungible},
+    v1::{BodyId, Junction::*, Junctions::*, MultiLocation, NetworkId},
+};
+use xcm_builder::{
+    AllowKnownQueryResponses, AllowSubscriptionsFrom,
+    AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom,
+    EnsureXcmOrigin, FixedWeightBounds, FungiblesAdapter, LocationInverter, ParentAsSuperuser,
+    ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,
+    SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,
+    ConvertedConcreteAssetId,
+};
+use xcm_executor::{
+    {Config, XcmExecutor},
+    traits::{Convert as ConvertXcm, FilterAssetLocation, JustTry, MatchesFungible, ShouldExecute},
+};
+
+use up_common::{
+    constants::{MAXIMUM_BLOCK_WEIGHT, UNIQUE},
+    types::{AccountId, Balance},
+};
+use pallet_foreing_assets::{
+    AssetIds, AssetIdMapping, XcmForeignAssetIdMapping, CurrencyId, NativeCurrency,
+    FreeForAll, TryAsForeing, ForeignAssetId,
+};
+use crate::{
+    Balances, Call, DmpQueue, Event, Origin, ParachainInfo,
+    ParachainSystem, PolkadotXcm, Runtime, XcmpQueue,
+};
+use crate::runtime_common::config::substrate::{TreasuryModuleId, MaxLocks, MaxReserves};
+use crate::runtime_common::config::pallets::TreasuryAccountId;
+use crate::runtime_common::config::xcm::*;
+use crate::*;
+use xcm::opaque::latest::prelude::{ DepositReserveAsset, DepositAsset, TransferAsset, TransferReserveAsset };
+
+// Signed version of balance
+pub type Amount = i128;
+
+match_types! {
+	pub type ParentOrParentsExecutivePlurality: impl Contains<MultiLocation> = {
+		MultiLocation { parents: 1, interior: Here } |
+		MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) }
+	};
+	pub type ParentOrSiblings: impl Contains<MultiLocation> = {
+		MultiLocation { parents: 1, interior: Here } |
+		MultiLocation { parents: 1, interior: X1(_) }
+	};
+}
+
+/// Deny executing the XCM if it matches any of the Deny filter regardless of anything else.
+/// If it passes the Deny, and matches one of the Allow cases then it is let through.
+pub struct DenyThenTry<Deny, Allow>(PhantomData<Deny>, PhantomData<Allow>)
+    where
+        Deny: ShouldExecute,
+        Allow: ShouldExecute;
+
+impl<Deny, Allow> ShouldExecute for DenyThenTry<Deny, Allow>
+    where
+        Deny: ShouldExecute,
+        Allow: ShouldExecute,
+{
+    fn should_execute<Call>(
+        origin: &MultiLocation,
+        message: &mut Xcm<Call>,
+        max_weight: Weight,
+        weight_credit: &mut Weight,
+    ) -> Result<(), ()> {
+        Deny::should_execute(origin, message, max_weight, weight_credit)?;
+        Allow::should_execute(origin, message, max_weight, weight_credit)
+    }
+}
+
+pub fn get_allowed_locations() -> Vec<MultiLocation> {
+    vec![
+        // Self location
+        MultiLocation { parents: 0, interior: Here },
+        // Parent location
+        MultiLocation { parents: 1, interior: Here },
+        // Karura/Acala location
+        MultiLocation { parents: 1, interior: X1(Parachain(2000)) },
+        // Moonriver location
+        MultiLocation { parents: 1, interior: X1(Parachain(2023)) },
+        // Self parachain address
+        MultiLocation { parents: 1, interior: X1(Parachain(ParachainInfo::get().into())) },
+    ]
+}
+
+// Allow xcm exchange only with locations in list
+pub struct DenyExchangeWithUnknownLocation;
+impl ShouldExecute for DenyExchangeWithUnknownLocation {
+    fn should_execute<Call>(
+        origin: &MultiLocation,
+        message: &mut Xcm<Call>,
+        _max_weight: Weight,
+        _weight_credit: &mut Weight,
+    ) -> Result<(), ()> {
+
+        // Check if deposit or transfer belongs to allowed parachains
+        let mut allowed = get_allowed_locations().contains(origin);
+
+        message.0.iter().for_each(|inst| {
+            match inst {
+                DepositReserveAsset { dest: dst, .. } => { allowed |= get_allowed_locations().contains(dst); }
+                TransferReserveAsset { dest: dst, .. } => { allowed |= get_allowed_locations().contains(dst); }
+                _ => {}
+            }
+        });
+
+        if allowed {
+            return Ok(());
+        }
+
+        log::warn!(
+			target: "xcm::barrier",
+			"Unexpected deposit or transfer location"
+		);
+        // Deny
+        Err(())
+    }
+}
+
+pub type Barrier = DenyThenTry<
+    DenyExchangeWithUnknownLocation,
+    (
+        TakeWeightCredit,
+        AllowTopLevelPaidExecutionFrom<Everything>,
+        // Parent and its exec plurality get free execution
+        AllowUnpaidExecutionFrom<ParentOrParentsExecutivePlurality>,
+        // Expected responses are OK.
+        AllowKnownQueryResponses<PolkadotXcm>,
+        // Subscriptions for version tracking are OK.
+        AllowSubscriptionsFrom<ParentOrSiblings>,
+    ),
+>;
+
+impl orml_tokens::Config for Runtime {
+    type Event = Event;
+    type Balance = Balance;
+    type Amount = Amount;
+    type CurrencyId = CurrencyId;
+    type WeightInfo = ();
+    type ExistentialDeposits = ExistentialDeposits;
+    type OnDust = orml_tokens::TransferDust<Runtime, TreasuryAccountId>;
+    type MaxLocks = MaxLocks;
+    type MaxReserves = MaxReserves;
+    // TODO: Add all module accounts
+    type DustRemovalWhitelist = DustRemovalWhitelist;
+    /// The id type for named reserves.
+    type ReserveIdentifier = ();
+    type OnNewTokenAccount = ();
+    type OnKilledTokenAccount = ();
+}
+
+/*
+impl orml_xtokens::Config for Runtime {
+    type Event = Event;
+    type Balance = Balance;
+    type CurrencyId = AssetIds;
+    type CurrencyIdConvert = CurrencyIdConvert;
+    type AccountIdToMultiLocation = AccountIdToMultiLocation;
+    type SelfLocation = SelfLocation;
+    type XcmExecutor = XcmExecutor<XcmConfig<Self>>;
+    type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;
+    type BaseXcmWeight = BaseXcmWeight;
+    type LocationInverter = LocationInverter<Ancestry>;
+    type MaxAssetsForTransfer = MaxAssetsForTransfer;
+    type MinXcmFee = ParachainMinFee;
+    type MultiLocationsFilter = Everything;
+    type ReserveProvider = AbsoluteReserveProvider;
+}
+ */
+
+parameter_type_with_key! {
+	pub ExistentialDeposits: |currency_id: CurrencyId| -> Balance {
+		match currency_id {
+			CurrencyId::NativeAssetId(symbol) => match symbol {
+				NativeCurrency::Here => 0,
+				NativeCurrency::Parent=> 0,
+			},
+			_ => 100_000
+		}
+	};
+}
+
+pub struct DustRemovalWhitelist;
+impl Contains<AccountId> for DustRemovalWhitelist {
+    fn contains(a: &AccountId) -> bool {
+        get_all_module_accounts().contains(a)
+    }
+}
+
+/*
+pub struct CurrencyIdConvert;
+impl Convert<AssetIds, Option<MultiLocation>> for CurrencyIdConvert {
+    fn convert(id: AssetIds) -> Option<MultiLocation> {
+        match id {
+            AssetIds::NativeAssetId(NativeCurrency::Here) => Some(MultiLocation::new(
+                1,
+                X1(Parachain(ParachainInfo::get().into())),
+            )),
+            AssetIds::NativeAssetId(NativeCurrency::Parent) => Some(MultiLocation::parent()),
+            AssetIds::ForeignAssetId(foreign_asset_id) => {
+                XcmForeignAssetIdMapping::<Runtime>::get_multi_location(foreign_asset_id)
+            }
+        }
+    }
+}
+impl Convert<MultiLocation, Option<CurrencyId>> for CurrencyIdConvert {
+    fn convert(location: MultiLocation) -> Option<CurrencyId> {
+        if location == MultiLocation::here()
+            || location == MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())))
+        {
+            return Some(AssetIds::NativeAssetId(NativeCurrency::Here));
+        }
+
+        if location == MultiLocation::parent() {
+            return Some(AssetIds::NativeAssetId(NativeCurrency::Parent));
+        }
+
+        if let Some(currency_id) =
+        XcmForeignAssetIdMapping::<Runtime>::get_currency_id(location.clone())
+        {
+            return Some(currency_id);
+        }
+
+        None
+    }
+}
+
+ */
+
+
+parameter_types! {
+	pub const BaseXcmWeight: Weight = 100_000_000; // TODO: recheck this
+	pub const MaxAssetsForTransfer: usize = 2;
+}
+
+parameter_types! {
+	pub const RelayLocation: MultiLocation = MultiLocation::parent();
+	pub const RelayNetwork: NetworkId = NetworkId::Polkadot;
+	pub RelayOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();
+	pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
+	pub SelfLocation: MultiLocation = MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())));
+}
+
+parameter_type_with_key! {
+	pub ParachainMinFee: |_location: MultiLocation| -> Option<u128> {
+		Some(100_000_000)
+	};
+}
+
+pub fn get_all_module_accounts() -> Vec<AccountId> {
+    vec![TreasuryModuleId::get().into_account_truncating()]
+}
+
+pub struct AccountIdToMultiLocation;
+impl Convert<AccountId, MultiLocation> for AccountIdToMultiLocation {
+    fn convert(account: AccountId) -> MultiLocation {
+        X1(AccountId32 {
+            network: NetworkId::Any,
+            id: account.into(),
+        })
+            .into()
+    }
+}
modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -116,8 +116,15 @@
     'xcm-builder/std',
     'xcm-executor/std',
     'up-common/std',
+    'rmrk-rpc/std',
+    'evm-coder/std',
+    'up-sponsorship/std',
 
     "orml-vesting/std",
+    "orml-tokens/std",
+    "orml-xtokens/std",
+    "orml-traits/std",
+    "pallet-foreing-assets/std"
 ]
 limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
 unique-runtime = []
@@ -125,6 +132,7 @@
 refungible = []
 scheduler = []
 rmrk = []
+foreign-assets = []
 
 ################################################################################
 # Substrate Dependencies
@@ -397,6 +405,23 @@
 version = "0.4.1-dev"
 default-features = false
 
+[dependencies.orml-xtokens]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
+[dependencies.orml-tokens]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
+
+[dependencies.orml-traits]
+git = "https://github.com/open-web3-stack/open-runtime-module-library"
+branch = "polkadot-v0.9.27"
+version = "0.4.1-dev"
+default-features = false
 ################################################################################
 # local dependencies
 
@@ -435,6 +460,7 @@
 fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
 up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.27' }
+pallet-foreing-assets = { default-features = false, path = "../../pallets/foreing-assets" }
 
 ################################################################################
 # Build Dependencies
modifiedruntime/unique/src/lib.rsdiffbeforeafterboth
--- a/runtime/unique/src/lib.rs
+++ b/runtime/unique/src/lib.rs
@@ -35,6 +35,8 @@
 #[path = "../../common/mod.rs"]
 mod runtime_common;
 
+pub mod xcm_config;
+
 pub use runtime_common::*;
 
 pub const RUNTIME_NAME: &str = "unique";
addedruntime/unique/src/xcm_config.rsdiffbeforeafterboth
--- /dev/null
+++ b/runtime/unique/src/xcm_config.rs
@@ -0,0 +1,226 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use cumulus_pallet_xcm;
+use frame_support::{
+    {match_types, parameter_types, weights::Weight},
+    pallet_prelude::Get,
+    traits::{Contains, Everything, fungibles},
+};
+use frame_system::EnsureRoot;
+use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key};
+use pallet_xcm::XcmPassthrough;
+use polkadot_parachain::primitives::Sibling;
+use sp_runtime::traits::{AccountIdConversion, CheckedConversion, Convert, Zero};
+use sp_std::{borrow::Borrow, marker::PhantomData, vec, vec::Vec};
+use xcm::{
+    latest::{MultiAsset, Xcm},
+    prelude::{Concrete, Fungible as XcmFungible},
+    v1::{BodyId, Junction::*, Junctions::*, MultiLocation, NetworkId},
+};
+use xcm_builder::{
+    AllowKnownQueryResponses, AllowSubscriptionsFrom,
+    AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom,
+    EnsureXcmOrigin, FixedWeightBounds, FungiblesAdapter, LocationInverter, ParentAsSuperuser,
+    ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,
+    SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,
+    ConvertedConcreteAssetId,
+};
+use xcm_executor::{
+    {Config, XcmExecutor},
+    traits::{Convert as ConvertXcm, FilterAssetLocation, JustTry, MatchesFungible, ShouldExecute},
+};
+
+use up_common::{
+    constants::{MAXIMUM_BLOCK_WEIGHT, UNIQUE},
+    types::{AccountId, Balance},
+};
+use pallet_foreing_assets::{
+    AssetIds, AssetIdMapping, XcmForeignAssetIdMapping, CurrencyId, NativeCurrency,
+    FreeForAll, TryAsForeing, ForeignAssetId,
+};
+use crate::{
+    Balances, Call, DmpQueue, Event, Origin, ParachainInfo,
+    ParachainSystem, PolkadotXcm, Runtime, XcmpQueue,
+};
+use crate::runtime_common::config::substrate::{TreasuryModuleId, MaxLocks, MaxReserves};
+use crate::runtime_common::config::pallets::TreasuryAccountId;
+use crate::runtime_common::config::xcm::*;
+use crate::*;
+use xcm::opaque::latest::prelude::{ DepositReserveAsset, DepositAsset, TransferAsset, TransferReserveAsset };
+
+// Signed version of balance
+pub type Amount = i128;
+
+
+pub type Barrier = DenyThenTry<
+    DenyExchangeWithUnknownLocation,
+    (
+        TakeWeightCredit,
+        AllowTopLevelPaidExecutionFrom<Everything>,
+        // Parent and its exec plurality get free execution
+        AllowUnpaidExecutionFrom<ParentOrParentsExecutivePlurality>,
+        // Expected responses are OK.
+        AllowKnownQueryResponses<PolkadotXcm>,
+        // Subscriptions for version tracking are OK.
+        AllowSubscriptionsFrom<ParentOrSiblings>,
+    ),
+>;
+
+pub fn get_allowed_locations() -> Vec<MultiLocation> {
+    vec![
+        // Self location
+        MultiLocation { parents: 0, interior: Here },
+        // Parent location
+        MultiLocation { parents: 1, interior: Here },
+        // Karura/Acala location
+        MultiLocation { parents: 1, interior: X1(Parachain(2000)) },
+        // Self parachain address
+        MultiLocation { parents: 1, interior: X1(Parachain(ParachainInfo::get().into())) },
+    ]
+}
+
+pub struct DenyThenTry<Deny, Allow>(PhantomData<Deny>, PhantomData<Allow>)
+    where
+        Deny: ShouldExecute,
+        Allow: ShouldExecute;
+
+impl<Deny, Allow> ShouldExecute for DenyThenTry<Deny, Allow>
+    where
+        Deny: ShouldExecute,
+        Allow: ShouldExecute,
+{
+    fn should_execute<Call>(
+        origin: &MultiLocation,
+        message: &mut Xcm<Call>,
+        max_weight: Weight,
+        weight_credit: &mut Weight,
+    ) -> Result<(), ()> {
+        Deny::should_execute(origin, message, max_weight, weight_credit)?;
+        Allow::should_execute(origin, message, max_weight, weight_credit)
+    }
+}
+
+// Allow xcm exchange only with locations in list
+pub struct DenyExchangeWithUnknownLocation;
+impl ShouldExecute for DenyExchangeWithUnknownLocation {
+    fn should_execute<Call>(
+        origin: &MultiLocation,
+        message: &mut Xcm<Call>,
+        _max_weight: Weight,
+        _weight_credit: &mut Weight,
+    ) -> Result<(), ()> {
+
+        // Check if deposit or transfer belongs to allowed parachains
+        let mut allowed = get_allowed_locations().contains(origin);
+
+        message.0.iter().for_each(|inst| {
+            match inst {
+                DepositReserveAsset { dest: dst, .. } => { allowed |= get_allowed_locations().contains(dst); }
+                TransferReserveAsset { dest: dst, .. } => { allowed |= get_allowed_locations().contains(dst); }
+                _ => {}
+            }
+        });
+
+        if allowed {
+            return Ok(());
+        }
+
+        log::warn!(
+			target: "xcm::barrier",
+			"Unexpected deposit or transfer location"
+		);
+        // Deny
+        Err(())
+    }
+}
+
+
+match_types! {
+	pub type ParentOrParentsExecutivePlurality: impl Contains<MultiLocation> = {
+		MultiLocation { parents: 1, interior: Here } |
+		MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) }
+	};
+	pub type ParentOrSiblings: impl Contains<MultiLocation> = {
+		MultiLocation { parents: 1, interior: Here } |
+		MultiLocation { parents: 1, interior: X1(_) }
+	};
+}
+
+pub fn get_all_module_accounts() -> Vec<AccountId> {
+    vec![TreasuryModuleId::get().into_account_truncating()]
+}
+
+pub struct DustRemovalWhitelist;
+impl Contains<AccountId> for DustRemovalWhitelist {
+    fn contains(a: &AccountId) -> bool {
+        get_all_module_accounts().contains(a)
+    }
+}
+
+parameter_type_with_key! {
+	pub ExistentialDeposits: |currency_id: CurrencyId| -> Balance {
+		match currency_id {
+			CurrencyId::NativeAssetId(symbol) => match symbol {
+				NativeCurrency::Here => 0,
+				NativeCurrency::Parent=> 0,
+			},
+			_ => 100_000
+		}
+	};
+}
+
+impl orml_tokens::Config for Runtime {
+    type Event = Event;
+    type Balance = Balance;
+    type Amount = Amount;
+    type CurrencyId = CurrencyId;
+    type WeightInfo = ();
+    type ExistentialDeposits = ExistentialDeposits;
+    type OnDust = orml_tokens::TransferDust<Runtime, TreasuryAccountId>;
+    type MaxLocks = MaxLocks;
+    type MaxReserves = MaxReserves;
+    // TODO: Add all module accounts
+    type DustRemovalWhitelist = DustRemovalWhitelist;
+    /// The id type for named reserves.
+    type ReserveIdentifier = ();
+    type OnNewTokenAccount = ();
+    type OnKilledTokenAccount = ();
+}
+
+
+parameter_types! {
+	pub const BaseXcmWeight: Weight = 100_000_000; // TODO: recheck this
+	pub const MaxAssetsForTransfer: usize = 2;
+}
+
+parameter_type_with_key! {
+	pub ParachainMinFee: |_location: MultiLocation| -> Option<u128> {
+		Some(100_000_000)
+	};
+}
+
+
+pub struct AccountIdToMultiLocation;
+impl Convert<AccountId, MultiLocation> for AccountIdToMultiLocation {
+    fn convert(account: AccountId) -> MultiLocation {
+        X1(AccountId32 {
+            network: NetworkId::Any,
+            id: account.into(),
+        })
+            .into()
+    }
+}
\ No newline at end of file
modifiedtests/package.jsondiffbeforeafterboth
--- a/tests/package.json
+++ b/tests/package.json
@@ -74,7 +74,11 @@
     "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts",
     "testScheduler": "mocha --timeout 9999999 -r ts-node/register ./**/scheduler.test.ts",
     "testSchedulingEVM": "mocha --timeout 9999999 -r ts-node/register ./**/eth/scheduling.test.ts",
-    "testXcmTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/xcmTransfer.test.ts",
+    "testXcmUnique": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmUnique.test.ts",
+    "testXcmTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransfer.test.ts",
+    "testXcmTransferAcala": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferAcala.test.ts acalaId=2000 uniqueId=5000",
+    "testXcmTransferStatemine": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferStatemine.test.ts statemineId=1000 uniqueId=5000",
+    "testXcmTransferMoonbeam": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferMoonbeam.test.ts moonbeamId=2000 uniqueId=5000",
     "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts",
     "testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",
     "testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",
modifiedtests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/eth/collectionAdmin.test.ts
+++ b/tests/src/eth/collectionAdmin.test.ts
@@ -15,7 +15,7 @@
 
 import {expect} from 'chai';
 import privateKey from '../substrate/privateKey';
-import { UNIQUE } from '../util/helpers';
+import {UNIQUE} from '../util/helpers';
 import {
   createEthAccount,
   createEthAccountWithBalance, 
modifiedtests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-consts.ts
+++ b/tests/src/interfaces/augment-api-consts.ts
@@ -1,20 +1,14 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/api-base/types/consts';
-
-import type { ApiTypes, AugmentedConst } from '@polkadot/api-base/types';
+import type { ApiTypes } from '@polkadot/api-base/types';
 import type { Option, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
 import type { Codec } from '@polkadot/types-codec/types';
 import type { Permill } from '@polkadot/types/interfaces/runtime';
-import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion } from '@polkadot/types/lookup';
-
-export type __AugmentedConst<ApiType extends ApiTypes> = AugmentedConst<ApiType>;
+import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion, XcmV1MultiLocation } from '@polkadot/types/lookup';
 
 declare module '@polkadot/api-base/types/consts' {
-  interface AugmentedConsts<ApiType extends ApiTypes> {
+  export interface AugmentedConsts<ApiType extends ApiTypes> {
     balances: {
       /**
        * The minimum amount required to keep an account open.
@@ -129,6 +123,17 @@
        **/
       [key: string]: Codec;
     };
+    tokens: {
+      maxLocks: u32 & AugmentedConst<ApiType>;
+      /**
+       * The maximum number of named reserves that can exist on an account.
+       **/
+      maxReserves: u32 & AugmentedConst<ApiType>;
+      /**
+       * Generic const
+       **/
+      [key: string]: Codec;
+    };
     transactionPayment: {
       /**
        * A fee mulitplier for `Operational` extrinsics to compute "virtual tip" to boost their
@@ -206,5 +211,22 @@
        **/
       [key: string]: Codec;
     };
+    xTokens: {
+      /**
+       * Base XCM weight.
+       * 
+       * The actually weight for an XCM message is `T::BaseXcmWeight +
+       * T::Weigher::weight(&msg)`.
+       **/
+      baseXcmWeight: u64 & AugmentedConst<ApiType>;
+      /**
+       * Self chain location.
+       **/
+      selfLocation: XcmV1MultiLocation & AugmentedConst<ApiType>;
+      /**
+       * Generic const
+       **/
+      [key: string]: Codec;
+    };
   } // AugmentedConsts
 } // declare module
modifiedtests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -1,16 +1,10 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/api-base/types/errors';
-
-import type { ApiTypes, AugmentedError } from '@polkadot/api-base/types';
-
-export type __AugmentedError<ApiType extends ApiTypes> = AugmentedError<ApiType>;
+import type { ApiTypes } from '@polkadot/api-base/types';
 
 declare module '@polkadot/api-base/types/errors' {
-  interface AugmentedErrors<ApiType extends ApiTypes> {
+  export interface AugmentedErrors<ApiType extends ApiTypes> {
     balances: {
       /**
        * Beneficiary account must pre-exist
@@ -281,6 +275,29 @@
        **/
       [key: string]: AugmentedError<ApiType>;
     };
+    foreingAssets: {
+      /**
+       * AssetId exists
+       **/
+      AssetIdExisted: AugmentedError<ApiType>;
+      /**
+       * AssetId not exists
+       **/
+      AssetIdNotExists: AugmentedError<ApiType>;
+      /**
+       * The given location could not be used (e.g. because it cannot be expressed in the
+       * desired version of XCM).
+       **/
+      BadLocation: AugmentedError<ApiType>;
+      /**
+       * MultiLocation existed
+       **/
+      MultiLocationExisted: AugmentedError<ApiType>;
+      /**
+       * Generic error
+       **/
+      [key: string]: AugmentedError<ApiType>;
+    };
     fungible: {
       /**
        * Fungible token does not support nesting.
@@ -657,6 +674,41 @@
        **/
       [key: string]: AugmentedError<ApiType>;
     };
+    tokens: {
+      /**
+       * Cannot convert Amount into Balance type
+       **/
+      AmountIntoBalanceFailed: AugmentedError<ApiType>;
+      /**
+       * The balance is too low
+       **/
+      BalanceTooLow: AugmentedError<ApiType>;
+      /**
+       * Beneficiary account must pre-exist
+       **/
+      DeadAccount: AugmentedError<ApiType>;
+      /**
+       * Value too low to create account due to existential deposit
+       **/
+      ExistentialDeposit: AugmentedError<ApiType>;
+      /**
+       * Transfer/payment would kill account
+       **/
+      KeepAlive: AugmentedError<ApiType>;
+      /**
+       * Failed because liquidity restrictions due to locking
+       **/
+      LiquidityRestrictions: AugmentedError<ApiType>;
+      /**
+       * Failed because the maximum locks was exceeded
+       **/
+      MaxLocksExceeded: AugmentedError<ApiType>;
+      TooManyReserves: AugmentedError<ApiType>;
+      /**
+       * Generic error
+       **/
+      [key: string]: AugmentedError<ApiType>;
+    };
     treasury: {
       /**
        * The spend origin is valid but the amount it is allowed to spend is lower than the
@@ -762,5 +814,90 @@
        **/
       [key: string]: AugmentedError<ApiType>;
     };
+    xTokens: {
+      /**
+       * Asset has no reserve location.
+       **/
+      AssetHasNoReserve: AugmentedError<ApiType>;
+      /**
+       * The specified index does not exist in a MultiAssets struct.
+       **/
+      AssetIndexNonExistent: AugmentedError<ApiType>;
+      /**
+       * The version of the `Versioned` value used is not able to be
+       * interpreted.
+       **/
+      BadVersion: AugmentedError<ApiType>;
+      /**
+       * Could not re-anchor the assets to declare the fees for the
+       * destination chain.
+       **/
+      CannotReanchor: AugmentedError<ApiType>;
+      /**
+       * The destination `MultiLocation` provided cannot be inverted.
+       **/
+      DestinationNotInvertible: AugmentedError<ApiType>;
+      /**
+       * We tried sending distinct asset and fee but they have different
+       * reserve chains.
+       **/
+      DistinctReserveForAssetAndFee: AugmentedError<ApiType>;
+      /**
+       * Fee is not enough.
+       **/
+      FeeNotEnough: AugmentedError<ApiType>;
+      /**
+       * Could not get ancestry of asset reserve location.
+       **/
+      InvalidAncestry: AugmentedError<ApiType>;
+      /**
+       * The MultiAsset is invalid.
+       **/
+      InvalidAsset: AugmentedError<ApiType>;
+      /**
+       * Invalid transfer destination.
+       **/
+      InvalidDest: AugmentedError<ApiType>;
+      /**
+       * MinXcmFee not registered for certain reserve location
+       **/
+      MinXcmFeeNotDefined: AugmentedError<ApiType>;
+      /**
+       * Not cross-chain transfer.
+       **/
+      NotCrossChainTransfer: AugmentedError<ApiType>;
+      /**
+       * Currency is not cross-chain transferable.
+       **/
+      NotCrossChainTransferableCurrency: AugmentedError<ApiType>;
+      /**
+       * Not supported MultiLocation
+       **/
+      NotSupportedMultiLocation: AugmentedError<ApiType>;
+      /**
+       * The number of assets to be sent is over the maximum.
+       **/
+      TooManyAssetsBeingSent: AugmentedError<ApiType>;
+      /**
+       * The message's weight could not be determined.
+       **/
+      UnweighableMessage: AugmentedError<ApiType>;
+      /**
+       * XCM execution failed.
+       **/
+      XcmExecutionFailed: AugmentedError<ApiType>;
+      /**
+       * The transfering asset amount is zero.
+       **/
+      ZeroAmount: AugmentedError<ApiType>;
+      /**
+       * The fee is zero.
+       **/
+      ZeroFee: AugmentedError<ApiType>;
+      /**
+       * Generic error
+       **/
+      [key: string]: AugmentedError<ApiType>;
+    };
   } // AugmentedErrors
 } // declare module
modifiedtests/src/interfaces/augment-api-events.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -1,20 +1,14 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/api-base/types/events';
-
-import type { ApiTypes, AugmentedEvent } from '@polkadot/api-base/types';
+import type { ApiTypes } from '@polkadot/api-base/types';
 import type { Bytes, Null, Option, Result, U256, U8aFixed, bool, u128, u32, u64, u8 } from '@polkadot/types-codec';
 import type { ITuple } from '@polkadot/types-codec/types';
 import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportScheduleLookupError, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, SpRuntimeDispatchError, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';
-
-export type __AugmentedEvent<ApiType extends ApiTypes> = AugmentedEvent<ApiType>;
+import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportScheduleLookupError, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, PalletForeingAssetsAssetIds, PalletForeingAssetsModuleAssetMetadata, RmrkTraitsNftAccountIdOrCollectionNftTuple, SpRuntimeDispatchError, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetMultiAssets, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';
 
 declare module '@polkadot/api-base/types/events' {
-  interface AugmentedEvents<ApiType extends ApiTypes> {
+  export interface AugmentedEvents<ApiType extends ApiTypes> {
     balances: {
       /**
        * A balance was set by root.
@@ -208,6 +202,28 @@
        **/
       [key: string]: AugmentedEvent<ApiType>;
     };
+    foreingAssets: {
+      /**
+       * The asset registered.
+       **/
+      AssetRegistered: AugmentedEvent<ApiType, [assetId: PalletForeingAssetsAssetIds, metadata: PalletForeingAssetsModuleAssetMetadata], { assetId: PalletForeingAssetsAssetIds, metadata: PalletForeingAssetsModuleAssetMetadata }>;
+      /**
+       * The asset updated.
+       **/
+      AssetUpdated: AugmentedEvent<ApiType, [assetId: PalletForeingAssetsAssetIds, metadata: PalletForeingAssetsModuleAssetMetadata], { assetId: PalletForeingAssetsAssetIds, metadata: PalletForeingAssetsModuleAssetMetadata }>;
+      /**
+       * The foreign asset registered.
+       **/
+      ForeignAssetRegistered: AugmentedEvent<ApiType, [assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeingAssetsModuleAssetMetadata], { assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeingAssetsModuleAssetMetadata }>;
+      /**
+       * The foreign asset updated.
+       **/
+      ForeignAssetUpdated: AugmentedEvent<ApiType, [assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeingAssetsModuleAssetMetadata], { assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeingAssetsModuleAssetMetadata }>;
+      /**
+       * Generic event
+       **/
+      [key: string]: AugmentedEvent<ApiType>;
+    };
     parachainSystem: {
       /**
        * Downward messages were processed using the given weight.
@@ -469,6 +485,66 @@
        **/
       [key: string]: AugmentedEvent<ApiType>;
     };
+    tokens: {
+      /**
+       * A balance was set by root.
+       **/
+      BalanceSet: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, free: u128, reserved: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, free: u128, reserved: u128 }>;
+      /**
+       * Deposited some balance into an account
+       **/
+      Deposited: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128 }>;
+      /**
+       * An account was removed whose balance was non-zero but below
+       * ExistentialDeposit, resulting in an outright loss.
+       **/
+      DustLost: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128 }>;
+      /**
+       * An account was created with some free balance.
+       **/
+      Endowed: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128 }>;
+      /**
+       * Some locked funds were unlocked
+       **/
+      LockRemoved: AugmentedEvent<ApiType, [lockId: U8aFixed, currencyId: PalletForeingAssetsAssetIds, who: AccountId32], { lockId: U8aFixed, currencyId: PalletForeingAssetsAssetIds, who: AccountId32 }>;
+      /**
+       * Some funds are locked
+       **/
+      LockSet: AugmentedEvent<ApiType, [lockId: U8aFixed, currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128], { lockId: U8aFixed, currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128 }>;
+      /**
+       * Some balance was reserved (moved from free to reserved).
+       **/
+      Reserved: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128 }>;
+      /**
+       * Some reserved balance was repatriated (moved from reserved to
+       * another account).
+       **/
+      ReserveRepatriated: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128, status: FrameSupportTokensMiscBalanceStatus], { currencyId: PalletForeingAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128, status: FrameSupportTokensMiscBalanceStatus }>;
+      /**
+       * Some balances were slashed (e.g. due to mis-behavior)
+       **/
+      Slashed: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, freeAmount: u128, reservedAmount: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, freeAmount: u128, reservedAmount: u128 }>;
+      /**
+       * The total issuance of an currency has been set
+       **/
+      TotalIssuanceSet: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, amount: u128], { currencyId: PalletForeingAssetsAssetIds, amount: u128 }>;
+      /**
+       * Transfer succeeded.
+       **/
+      Transfer: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128], { currencyId: PalletForeingAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128 }>;
+      /**
+       * Some balance was unreserved (moved from reserved to free).
+       **/
+      Unreserved: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128 }>;
+      /**
+       * Some balances were withdrawn (e.g. pay for transaction fee)
+       **/
+      Withdrawn: AugmentedEvent<ApiType, [currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeingAssetsAssetIds, who: AccountId32, amount: u128 }>;
+      /**
+       * Generic event
+       **/
+      [key: string]: AugmentedEvent<ApiType>;
+    };
     transactionPayment: {
       /**
        * A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,
@@ -657,5 +733,15 @@
        **/
       [key: string]: AugmentedEvent<ApiType>;
     };
+    xTokens: {
+      /**
+       * Transferred `MultiAsset` with fee.
+       **/
+      TransferredMultiAssets: AugmentedEvent<ApiType, [sender: AccountId32, assets: XcmV1MultiassetMultiAssets, fee: XcmV1MultiAsset, dest: XcmV1MultiLocation], { sender: AccountId32, assets: XcmV1MultiassetMultiAssets, fee: XcmV1MultiAsset, dest: XcmV1MultiLocation }>;
+      /**
+       * Generic event
+       **/
+      [key: string]: AugmentedEvent<ApiType>;
+    };
   } // AugmentedEvents
 } // declare module
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -1,22 +1,15 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/api-base/types/storage';
-
-import type { ApiTypes, AugmentedQuery, QueryableStorageEntry } from '@polkadot/api-base/types';
+import type { ApiTypes } from '@polkadot/api-base/types';
 import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
 import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
 import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsTokenChild } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensReserveData, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletForeingAssetsAssetIds, PalletForeingAssetsModuleAssetMetadata, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsTokenChild, XcmV1MultiLocation } from '@polkadot/types/lookup';
 import type { Observable } from '@polkadot/types/types';
-
-export type __AugmentedQuery<ApiType extends ApiTypes> = AugmentedQuery<ApiType, () => unknown>;
-export type __QueryableStorageEntry<ApiType extends ApiTypes> = QueryableStorageEntry<ApiType>;
 
 declare module '@polkadot/api-base/types/storage' {
-  interface AugmentedQueries<ApiType extends ApiTypes> {
+  export interface AugmentedQueries<ApiType extends ApiTypes> {
     balances: {
       /**
        * The Balances pallet example of storing the balance of an account.
@@ -213,6 +206,41 @@
        **/
       [key: string]: QueryableStorageEntry<ApiType>;
     };
+    foreingAssets: {
+      /**
+       * The storages for assets to fungible collection binding
+       * 
+       **/
+      assetBinding: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+      /**
+       * The storages for AssetMetadatas.
+       * 
+       * AssetMetadatas: map AssetIds => Option<AssetMetadata>
+       **/
+      assetMetadatas: AugmentedQuery<ApiType, (arg: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Option<PalletForeingAssetsModuleAssetMetadata>>, [PalletForeingAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeingAssetsAssetIds]>;
+      /**
+       * The storages for MultiLocations.
+       * 
+       * ForeignAssetLocations: map ForeignAssetId => Option<MultiLocation>
+       **/
+      foreignAssetLocations: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<XcmV1MultiLocation>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+      /**
+       * The storages for CurrencyIds.
+       * 
+       * LocationToCurrencyIds: map MultiLocation => Option<ForeignAssetId>
+       **/
+      locationToCurrencyIds: AugmentedQuery<ApiType, (arg: XcmV1MultiLocation | { parents?: any; interior?: any } | string | Uint8Array) => Observable<Option<u32>>, [XcmV1MultiLocation]> & QueryableStorageEntry<ApiType, [XcmV1MultiLocation]>;
+      /**
+       * Next available Foreign AssetId ID.
+       * 
+       * NextForeignAssetId: ForeignAssetId
+       **/
+      nextForeignAssetId: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
+      /**
+       * Generic query
+       **/
+      [key: string]: QueryableStorageEntry<ApiType>;
+    };
     fungible: {
       /**
        * Storage for assets delegated to a limited extent to other users.
@@ -223,6 +251,10 @@
        **/
       balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
       /**
+       * Foreign collection flag
+       **/
+      foreignCollection: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+      /**
        * Total amount of fungible tokens inside a collection.
        **/
       totalSupply: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
@@ -668,6 +700,34 @@
        **/
       [key: string]: QueryableStorageEntry<ApiType>;
     };
+    tokens: {
+      /**
+       * The balance of a token type under an account.
+       * 
+       * NOTE: If the total is ever zero, decrease account ref account.
+       * 
+       * NOTE: This is only used in the case that this module is used to store
+       * balances.
+       **/
+      accounts: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<OrmlTokensAccountData>, [AccountId32, PalletForeingAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeingAssetsAssetIds]>;
+      /**
+       * Any liquidity locks of a token type under an account.
+       * NOTE: Should only be accessed when setting, changing and freeing a lock.
+       **/
+      locks: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensBalanceLock>>, [AccountId32, PalletForeingAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeingAssetsAssetIds]>;
+      /**
+       * Named reserves on some account balances.
+       **/
+      reserves: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensReserveData>>, [AccountId32, PalletForeingAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeingAssetsAssetIds]>;
+      /**
+       * The total issuance of a token type.
+       **/
+      totalIssuance: AugmentedQuery<ApiType, (arg: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<u128>, [PalletForeingAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeingAssetsAssetIds]>;
+      /**
+       * Generic query
+       **/
+      [key: string]: QueryableStorageEntry<ApiType>;
+    };
     transactionPayment: {
       nextFeeMultiplier: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
       storageVersion: AugmentedQuery<ApiType, () => Observable<PalletTransactionPaymentReleases>, []> & QueryableStorageEntry<ApiType, []>;
modifiedtests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -1,14 +1,10 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/rpc-core/types/jsonrpc';
-
 import type { PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsPartPartType, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenChild, UpDataStructsTokenData } from './default';
 import type { AugmentedRpc } from '@polkadot/rpc-core/types';
 import type { Metadata, StorageKey } from '@polkadot/types';
-import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, f64, u128, u32, u64 } from '@polkadot/types-codec';
+import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec';
 import type { AnyNumber, Codec } from '@polkadot/types-codec/types';
 import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';
 import type { EpochAuthorship } from '@polkadot/types/interfaces/babe';
@@ -19,7 +15,7 @@
 import type { CodeUploadRequest, CodeUploadResult, ContractCallRequest, ContractExecResult, ContractInstantiateResult, InstantiateRequest } from '@polkadot/types/interfaces/contracts';
 import type { BlockStats } from '@polkadot/types/interfaces/dev';
 import type { CreatedBlock } from '@polkadot/types/interfaces/engine';
-import type { EthAccount, EthCallRequest, EthFeeHistory, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth';
+import type { EthAccount, EthCallRequest, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth';
 import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics';
 import type { EncodedFinalityProofs, JustificationNotification, ReportedRoundStates } from '@polkadot/types/interfaces/grandpa';
 import type { MmrLeafBatchProof, MmrLeafProof } from '@polkadot/types/interfaces/mmr';
@@ -30,11 +26,9 @@
 import type { MigrationStatusResult, ReadProof, RuntimeVersion, TraceBlockResponse } from '@polkadot/types/interfaces/state';
 import type { ApplyExtrinsicResult, ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo, SyncState } from '@polkadot/types/interfaces/system';
 import type { IExtrinsic, Observable } from '@polkadot/types/types';
-
-export type __AugmentedRpc = AugmentedRpc<() => unknown>;
 
 declare module '@polkadot/rpc-core/types/jsonrpc' {
-  interface RpcInterface {
+  export interface RpcInterface {
     author: {
       /**
        * Returns true if the keystore has private keys for the given public key and key type.
@@ -63,11 +57,11 @@
       /**
        * Submit and subscribe to watch an extrinsic until unsubscribed
        **/
-      submitAndWatchExtrinsic: AugmentedRpc<(extrinsic: Extrinsic | IExtrinsic | string | Uint8Array) => Observable<ExtrinsicStatus>>;
+      submitAndWatchExtrinsic: AugmentedRpc<(extrinsic: IExtrinsic) => Observable<ExtrinsicStatus>>;
       /**
        * Submit a fully formatted extrinsic for block inclusion
        **/
-      submitExtrinsic: AugmentedRpc<(extrinsic: Extrinsic | IExtrinsic | string | Uint8Array) => Observable<Hash>>;
+      submitExtrinsic: AugmentedRpc<(extrinsic: IExtrinsic) => Observable<Hash>>;
     };
     babe: {
       /**
@@ -205,10 +199,6 @@
        **/
       estimateGas: AugmentedRpc<(request: EthCallRequest | { from?: any; to?: any; gasPrice?: any; gas?: any; value?: any; data?: any; nonce?: any } | string | Uint8Array, number?: BlockNumber | AnyNumber | Uint8Array) => Observable<U256>>;
       /**
-       * Returns fee history for given block count & reward percentiles
-       **/
-      feeHistory: AugmentedRpc<(blockCount: U256 | AnyNumber | Uint8Array, newestBlock: BlockNumber | AnyNumber | Uint8Array, rewardPercentiles: Option<Vec<f64>> | null | Uint8Array | Vec<f64> | (f64)[]) => Observable<EthFeeHistory>>;
-      /**
        * Returns current gas price.
        **/
       gasPrice: AugmentedRpc<() => Observable<U256>>;
@@ -300,10 +290,6 @@
        * Returns the number of hashes per second that the node is mining with.
        **/
       hashrate: AugmentedRpc<() => Observable<U256>>;
-      /**
-       * Returns max priority fee per gas
-       **/
-      maxPriorityFeePerGas: AugmentedRpc<() => Observable<U256>>;
       /**
        * Returns true if client is actively mining new blocks.
        **/
@@ -463,7 +449,7 @@
       /**
        * Get Theme's keys values
        **/
-      themes: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, themeName: Text | string, keys: Option<Vec<Text>> | null | Uint8Array | Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsTheme>>>;
+      themes: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, themeName: Text | string, keys: Option<Vec<Text>> | null | object | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsTheme>>>;
     };
     rpc: {
       /**
@@ -551,7 +537,7 @@
       /**
        * Provides a way to trace the re-execution of a single block
        **/
-      traceBlock: AugmentedRpc<(block: Hash | string | Uint8Array, targets: Option<Text> | null | Uint8Array | Text | string, storageKeys: Option<Text> | null | Uint8Array | Text | string, methods: Option<Text> | null | Uint8Array | Text | string) => Observable<TraceBlockResponse>>;
+      traceBlock: AugmentedRpc<(block: Hash | string | Uint8Array, targets: Option<Text> | null | object | string | Uint8Array, storageKeys: Option<Text> | null | object | string | Uint8Array, methods: Option<Text> | null | object | string | Uint8Array) => Observable<TraceBlockResponse>>;
       /**
        * Check current migration state
        **/
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -1,22 +1,14 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/api-base/types/submittable';
-
-import type { ApiTypes, AugmentedSubmittable, SubmittableExtrinsic, SubmittableExtrinsicFunction } from '@polkadot/api-base/types';
+import type { ApiTypes } from '@polkadot/api-base/types';
 import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
 import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';
 import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartEquippableList, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, PalletForeingAssetsAssetIds, PalletForeingAssetsModuleAssetMetadata, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartEquippableList, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAsset, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
 
-export type __AugmentedSubmittable = AugmentedSubmittable<() => unknown>;
-export type __SubmittableExtrinsic<ApiType extends ApiTypes> = SubmittableExtrinsic<ApiType>;
-export type __SubmittableExtrinsicFunction<ApiType extends ApiTypes> = SubmittableExtrinsicFunction<ApiType>;
-
 declare module '@polkadot/api-base/types/submittable' {
-  interface AugmentedSubmittables<ApiType extends ApiTypes> {
+  export interface AugmentedSubmittables<ApiType extends ApiTypes> {
     balances: {
       /**
        * Exactly as `transfer`, except the origin must be root and the source account may be
@@ -113,8 +105,8 @@
       [key: string]: SubmittableExtrinsicFunction<ApiType>;
     };
     configuration: {
-      setMinGasPriceOverride: AugmentedSubmittable<(coeff: Option<u64> | null | Uint8Array | u64 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u64>]>;
-      setWeightToFeeCoefficientOverride: AugmentedSubmittable<(coeff: Option<u32> | null | Uint8Array | u32 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
+      setMinGasPriceOverride: AugmentedSubmittable<(coeff: Option<u64> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Option<u64>]>;
+      setWeightToFeeCoefficientOverride: AugmentedSubmittable<(coeff: Option<u32> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
       /**
        * Generic tx
        **/
@@ -161,16 +153,16 @@
       /**
        * Issue an EVM call operation. This is similar to a message call transaction in Ethereum.
        **/
-      call: AugmentedSubmittable<(source: H160 | string | Uint8Array, target: H160 | string | Uint8Array, input: Bytes | string | Uint8Array, value: U256 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, maxFeePerGas: U256 | AnyNumber | Uint8Array, maxPriorityFeePerGas: Option<U256> | null | Uint8Array | U256 | AnyNumber, nonce: Option<U256> | null | Uint8Array | U256 | AnyNumber, accessList: Vec<ITuple<[H160, Vec<H256>]>> | ([H160 | string | Uint8Array, Vec<H256> | (H256 | string | Uint8Array)[]])[]) => SubmittableExtrinsic<ApiType>, [H160, H160, Bytes, U256, u64, U256, Option<U256>, Option<U256>, Vec<ITuple<[H160, Vec<H256>]>>]>;
+      call: AugmentedSubmittable<(source: H160 | string | Uint8Array, target: H160 | string | Uint8Array, input: Bytes | string | Uint8Array, value: U256 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, maxFeePerGas: U256 | AnyNumber | Uint8Array, maxPriorityFeePerGas: Option<U256> | null | object | string | Uint8Array, nonce: Option<U256> | null | object | string | Uint8Array, accessList: Vec<ITuple<[H160, Vec<H256>]>> | ([H160 | string | Uint8Array, Vec<H256> | (H256 | string | Uint8Array)[]])[]) => SubmittableExtrinsic<ApiType>, [H160, H160, Bytes, U256, u64, U256, Option<U256>, Option<U256>, Vec<ITuple<[H160, Vec<H256>]>>]>;
       /**
        * Issue an EVM create operation. This is similar to a contract creation transaction in
        * Ethereum.
        **/
-      create: AugmentedSubmittable<(source: H160 | string | Uint8Array, init: Bytes | string | Uint8Array, value: U256 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, maxFeePerGas: U256 | AnyNumber | Uint8Array, maxPriorityFeePerGas: Option<U256> | null | Uint8Array | U256 | AnyNumber, nonce: Option<U256> | null | Uint8Array | U256 | AnyNumber, accessList: Vec<ITuple<[H160, Vec<H256>]>> | ([H160 | string | Uint8Array, Vec<H256> | (H256 | string | Uint8Array)[]])[]) => SubmittableExtrinsic<ApiType>, [H160, Bytes, U256, u64, U256, Option<U256>, Option<U256>, Vec<ITuple<[H160, Vec<H256>]>>]>;
+      create: AugmentedSubmittable<(source: H160 | string | Uint8Array, init: Bytes | string | Uint8Array, value: U256 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, maxFeePerGas: U256 | AnyNumber | Uint8Array, maxPriorityFeePerGas: Option<U256> | null | object | string | Uint8Array, nonce: Option<U256> | null | object | string | Uint8Array, accessList: Vec<ITuple<[H160, Vec<H256>]>> | ([H160 | string | Uint8Array, Vec<H256> | (H256 | string | Uint8Array)[]])[]) => SubmittableExtrinsic<ApiType>, [H160, Bytes, U256, u64, U256, Option<U256>, Option<U256>, Vec<ITuple<[H160, Vec<H256>]>>]>;
       /**
        * Issue an EVM create2 operation.
        **/
-      create2: AugmentedSubmittable<(source: H160 | string | Uint8Array, init: Bytes | string | Uint8Array, salt: H256 | string | Uint8Array, value: U256 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, maxFeePerGas: U256 | AnyNumber | Uint8Array, maxPriorityFeePerGas: Option<U256> | null | Uint8Array | U256 | AnyNumber, nonce: Option<U256> | null | Uint8Array | U256 | AnyNumber, accessList: Vec<ITuple<[H160, Vec<H256>]>> | ([H160 | string | Uint8Array, Vec<H256> | (H256 | string | Uint8Array)[]])[]) => SubmittableExtrinsic<ApiType>, [H160, Bytes, H256, U256, u64, U256, Option<U256>, Option<U256>, Vec<ITuple<[H160, Vec<H256>]>>]>;
+      create2: AugmentedSubmittable<(source: H160 | string | Uint8Array, init: Bytes | string | Uint8Array, salt: H256 | string | Uint8Array, value: U256 | AnyNumber | Uint8Array, gasLimit: u64 | AnyNumber | Uint8Array, maxFeePerGas: U256 | AnyNumber | Uint8Array, maxPriorityFeePerGas: Option<U256> | null | object | string | Uint8Array, nonce: Option<U256> | null | object | string | Uint8Array, accessList: Vec<ITuple<[H160, Vec<H256>]>> | ([H160 | string | Uint8Array, Vec<H256> | (H256 | string | Uint8Array)[]])[]) => SubmittableExtrinsic<ApiType>, [H160, Bytes, H256, U256, u64, U256, Option<U256>, Option<U256>, Vec<ITuple<[H160, Vec<H256>]>>]>;
       /**
        * Withdraw balance from EVM into currency/balances pallet.
        **/
@@ -189,6 +181,14 @@
        **/
       [key: string]: SubmittableExtrinsicFunction<ApiType>;
     };
+    foreingAssets: {
+      registerForeignAsset: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, location: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, metadata: PalletForeingAssetsModuleAssetMetadata | { name?: any; symbol?: any; decimals?: any; minimalBalance?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, XcmVersionedMultiLocation, PalletForeingAssetsModuleAssetMetadata]>;
+      updateForeignAsset: AugmentedSubmittable<(foreignAssetId: u32 | AnyNumber | Uint8Array, location: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, metadata: PalletForeingAssetsModuleAssetMetadata | { name?: any; symbol?: any; decimals?: any; minimalBalance?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, XcmVersionedMultiLocation, PalletForeingAssetsModuleAssetMetadata]>;
+      /**
+       * Generic tx
+       **/
+      [key: string]: SubmittableExtrinsicFunction<ApiType>;
+    };
     inflation: {
       /**
        * This method sets the inflation start date. Can be only called once.
@@ -252,7 +252,7 @@
        * - `origin`: Must be Root.
        * - `maybe_xcm_version`: The default XCM encoding version, or `None` to disable.
        **/
-      forceDefaultXcmVersion: AugmentedSubmittable<(maybeXcmVersion: Option<u32> | null | Uint8Array | u32 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
+      forceDefaultXcmVersion: AugmentedSubmittable<(maybeXcmVersion: Option<u32> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
       /**
        * Ask a location to notify us regarding their XCM version and any changes to it.
        * 
@@ -509,7 +509,7 @@
        * - `symbol`: UTF-8 string with token prefix, by which to represent the token in wallets and UIs.
        * Analogous to Unique's [`token_prefix`](up_data_structs::Collection). Cannot be changed.
        **/
-      createCollection: AugmentedSubmittable<(metadata: Bytes | string | Uint8Array, max: Option<u32> | null | Uint8Array | u32 | AnyNumber, symbol: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes, Option<u32>, Bytes]>;
+      createCollection: AugmentedSubmittable<(metadata: Bytes | string | Uint8Array, max: Option<u32> | null | object | string | Uint8Array, symbol: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes, Option<u32>, Bytes]>;
       /**
        * Destroy a collection.
        * 
@@ -550,7 +550,7 @@
        * - `transferable`: Can this NFT be transferred? Cannot be changed.
        * - `resources`: Resource data to be added to the NFT immediately after minting.
        **/
-      mintNft: AugmentedSubmittable<(owner: Option<AccountId32> | null | Uint8Array | AccountId32 | string, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | Uint8Array | AccountId32 | string, royaltyAmount: Option<Permill> | null | Uint8Array | Permill | AnyNumber, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array, resources: Option<Vec<RmrkTraitsResourceResourceTypes>> | null | Uint8Array | Vec<RmrkTraitsResourceResourceTypes> | (RmrkTraitsResourceResourceTypes | { Basic: any } | { Composable: any } | { Slot: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [Option<AccountId32>, u32, Option<AccountId32>, Option<Permill>, Bytes, bool, Option<Vec<RmrkTraitsResourceResourceTypes>>]>;
+      mintNft: AugmentedSubmittable<(owner: Option<AccountId32> | null | object | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array, resources: Option<Vec<RmrkTraitsResourceResourceTypes>> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Option<AccountId32>, u32, Option<AccountId32>, Option<Permill>, Bytes, bool, Option<Vec<RmrkTraitsResourceResourceTypes>>]>;
       /**
        * Reject an NFT sent from another account to self or owned NFT.
        * The NFT in question will not be sent back and burnt instead.
@@ -636,7 +636,7 @@
        * - `key`: Key of the custom property to be referenced by.
        * - `value`: Value of the custom property to be stored.
        **/
-      setProperty: AugmentedSubmittable<(rmrkCollectionId: Compact<u32> | AnyNumber | Uint8Array, maybeNftId: Option<u32> | null | Uint8Array | u32 | AnyNumber, key: Bytes | string | Uint8Array, value: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Option<u32>, Bytes, Bytes]>;
+      setProperty: AugmentedSubmittable<(rmrkCollectionId: Compact<u32> | AnyNumber | Uint8Array, maybeNftId: Option<u32> | null | object | string | Uint8Array, key: Bytes | string | Uint8Array, value: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Option<u32>, Bytes, Bytes]>;
       /**
        * Generic tx
        **/
@@ -706,7 +706,7 @@
       /**
        * Schedule a named task.
        **/
-      scheduleNamed: AugmentedSubmittable<(id: U8aFixed | string | Uint8Array, when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | Uint8Array | ITuple<[u32, u32]> | [u32 | AnyNumber | Uint8Array, u32 | AnyNumber | Uint8Array], priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [U8aFixed, u32, Option<ITuple<[u32, u32]>>, u8, FrameSupportScheduleMaybeHashed]>;
+      scheduleNamed: AugmentedSubmittable<(id: U8aFixed | string | Uint8Array, when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [U8aFixed, u32, Option<ITuple<[u32, u32]>>, u8, FrameSupportScheduleMaybeHashed]>;
       /**
        * Schedule a named task after a delay.
        * 
@@ -714,7 +714,7 @@
        * Same as [`schedule_named`](Self::schedule_named).
        * # </weight>
        **/
-      scheduleNamedAfter: AugmentedSubmittable<(id: U8aFixed | string | Uint8Array, after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | Uint8Array | ITuple<[u32, u32]> | [u32 | AnyNumber | Uint8Array, u32 | AnyNumber | Uint8Array], priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [U8aFixed, u32, Option<ITuple<[u32, u32]>>, u8, FrameSupportScheduleMaybeHashed]>;
+      scheduleNamedAfter: AugmentedSubmittable<(id: U8aFixed | string | Uint8Array, after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [U8aFixed, u32, Option<ITuple<[u32, u32]>>, u8, FrameSupportScheduleMaybeHashed]>;
       /**
        * Generic tx
        **/
@@ -878,6 +878,87 @@
        **/
       [key: string]: SubmittableExtrinsicFunction<ApiType>;
     };
+    tokens: {
+      /**
+       * Exactly as `transfer`, except the origin must be root and the source
+       * account may be specified.
+       * 
+       * The dispatch origin for this call must be _Root_.
+       * 
+       * - `source`: The sender of the transfer.
+       * - `dest`: The recipient of the transfer.
+       * - `currency_id`: currency type.
+       * - `amount`: free balance amount to tranfer.
+       **/
+      forceTransfer: AugmentedSubmittable<(source: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, MultiAddress, PalletForeingAssetsAssetIds, Compact<u128>]>;
+      /**
+       * Set the balances of a given account.
+       * 
+       * This will alter `FreeBalance` and `ReservedBalance` in storage. it
+       * will also decrease the total issuance of the system
+       * (`TotalIssuance`). If the new free or reserved balance is below the
+       * existential deposit, it will reap the `AccountInfo`.
+       * 
+       * The dispatch origin for this call is `root`.
+       **/
+      setBalance: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, newFree: Compact<u128> | AnyNumber | Uint8Array, newReserved: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeingAssetsAssetIds, Compact<u128>, Compact<u128>]>;
+      /**
+       * Transfer some liquid free balance to another account.
+       * 
+       * `transfer` will set the `FreeBalance` of the sender and receiver.
+       * It will decrease the total issuance of the system by the
+       * `TransferFee`. If the sender's account is below the existential
+       * deposit as a result of the transfer, the account will be reaped.
+       * 
+       * The dispatch origin for this call must be `Signed` by the
+       * transactor.
+       * 
+       * - `dest`: The recipient of the transfer.
+       * - `currency_id`: currency type.
+       * - `amount`: free balance amount to tranfer.
+       **/
+      transfer: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeingAssetsAssetIds, Compact<u128>]>;
+      /**
+       * Transfer all remaining balance to the given account.
+       * 
+       * NOTE: This function only attempts to transfer _transferable_
+       * balances. This means that any locked, reserved, or existential
+       * deposits (when `keep_alive` is `true`), will not be transferred by
+       * this function. To ensure that this function results in a killed
+       * account, you might need to prepare the account by removing any
+       * reference counters, storage deposits, etc...
+       * 
+       * The dispatch origin for this call must be `Signed` by the
+       * transactor.
+       * 
+       * - `dest`: The recipient of the transfer.
+       * - `currency_id`: currency type.
+       * - `keep_alive`: A boolean to determine if the `transfer_all`
+       * operation should send all of the funds the account has, causing
+       * the sender account to be killed (false), or transfer everything
+       * except at least the existential deposit, which will guarantee to
+       * keep the sender account alive (true).
+       **/
+      transferAll: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, keepAlive: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeingAssetsAssetIds, bool]>;
+      /**
+       * Same as the [`transfer`] call, but with a check that the transfer
+       * will not kill the origin account.
+       * 
+       * 99% of the time you want [`transfer`] instead.
+       * 
+       * The dispatch origin for this call must be `Signed` by the
+       * transactor.
+       * 
+       * - `dest`: The recipient of the transfer.
+       * - `currency_id`: currency type.
+       * - `amount`: free balance amount to tranfer.
+       **/
+      transferKeepAlive: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeingAssetsAssetIds, Compact<u128>]>;
+      /**
+       * Generic tx
+       **/
+      [key: string]: SubmittableExtrinsicFunction<ApiType>;
+    };
     treasury: {
       /**
        * Approve a proposal. At a later time, the proposal will be allocated to the beneficiary
@@ -1538,5 +1619,125 @@
        **/
       [key: string]: SubmittableExtrinsicFunction<ApiType>;
     };
+    xTokens: {
+      /**
+       * Transfer native currencies.
+       * 
+       * `dest_weight` is the weight for XCM execution on the dest chain, and
+       * it would be charged from the transferred assets. If set below
+       * requirements, the execution may fail and assets wouldn't be
+       * received.
+       * 
+       * It's a no-op if any error on local XCM execution or message sending.
+       * Note sending assets out per se doesn't guarantee they would be
+       * received. Receiving depends on if the XCM message could be delivered
+       * by the network, and if the receiving chain would handle
+       * messages correctly.
+       **/
+      transfer: AugmentedSubmittable<(currencyId: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: u128 | AnyNumber | Uint8Array, dest: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, destWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletForeingAssetsAssetIds, u128, XcmVersionedMultiLocation, u64]>;
+      /**
+       * Transfer `MultiAsset`.
+       * 
+       * `dest_weight` is the weight for XCM execution on the dest chain, and
+       * it would be charged from the transferred assets. If set below
+       * requirements, the execution may fail and assets wouldn't be
+       * received.
+       * 
+       * It's a no-op if any error on local XCM execution or message sending.
+       * Note sending assets out per se doesn't guarantee they would be
+       * received. Receiving depends on if the XCM message could be delivered
+       * by the network, and if the receiving chain would handle
+       * messages correctly.
+       **/
+      transferMultiasset: AugmentedSubmittable<(asset: XcmVersionedMultiAsset | { V0: any } | { V1: any } | string | Uint8Array, dest: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, destWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [XcmVersionedMultiAsset, XcmVersionedMultiLocation, u64]>;
+      /**
+       * Transfer several `MultiAsset` specifying the item to be used as fee
+       * 
+       * `dest_weight` is the weight for XCM execution on the dest chain, and
+       * it would be charged from the transferred assets. If set below
+       * requirements, the execution may fail and assets wouldn't be
+       * received.
+       * 
+       * `fee_item` is index of the MultiAssets that we want to use for
+       * payment
+       * 
+       * It's a no-op if any error on local XCM execution or message sending.
+       * Note sending assets out per se doesn't guarantee they would be
+       * received. Receiving depends on if the XCM message could be delivered
+       * by the network, and if the receiving chain would handle
+       * messages correctly.
+       **/
+      transferMultiassets: AugmentedSubmittable<(assets: XcmVersionedMultiAssets | { V0: any } | { V1: any } | string | Uint8Array, feeItem: u32 | AnyNumber | Uint8Array, dest: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, destWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [XcmVersionedMultiAssets, u32, XcmVersionedMultiLocation, u64]>;
+      /**
+       * Transfer `MultiAsset` specifying the fee and amount as separate.
+       * 
+       * `dest_weight` is the weight for XCM execution on the dest chain, and
+       * it would be charged from the transferred assets. If set below
+       * requirements, the execution may fail and assets wouldn't be
+       * received.
+       * 
+       * `fee` is the multiasset to be spent to pay for execution in
+       * destination chain. Both fee and amount will be subtracted form the
+       * callers balance For now we only accept fee and asset having the same
+       * `MultiLocation` id.
+       * 
+       * If `fee` is not high enough to cover for the execution costs in the
+       * destination chain, then the assets will be trapped in the
+       * destination chain
+       * 
+       * It's a no-op if any error on local XCM execution or message sending.
+       * Note sending assets out per se doesn't guarantee they would be
+       * received. Receiving depends on if the XCM message could be delivered
+       * by the network, and if the receiving chain would handle
+       * messages correctly.
+       **/
+      transferMultiassetWithFee: AugmentedSubmittable<(asset: XcmVersionedMultiAsset | { V0: any } | { V1: any } | string | Uint8Array, fee: XcmVersionedMultiAsset | { V0: any } | { V1: any } | string | Uint8Array, dest: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, destWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [XcmVersionedMultiAsset, XcmVersionedMultiAsset, XcmVersionedMultiLocation, u64]>;
+      /**
+       * Transfer several currencies specifying the item to be used as fee
+       * 
+       * `dest_weight` is the weight for XCM execution on the dest chain, and
+       * it would be charged from the transferred assets. If set below
+       * requirements, the execution may fail and assets wouldn't be
+       * received.
+       * 
+       * `fee_item` is index of the currencies tuple that we want to use for
+       * payment
+       * 
+       * It's a no-op if any error on local XCM execution or message sending.
+       * Note sending assets out per se doesn't guarantee they would be
+       * received. Receiving depends on if the XCM message could be delivered
+       * by the network, and if the receiving chain would handle
+       * messages correctly.
+       **/
+      transferMulticurrencies: AugmentedSubmittable<(currencies: Vec<ITuple<[PalletForeingAssetsAssetIds, u128]>> | ([PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, u128 | AnyNumber | Uint8Array])[], feeItem: u32 | AnyNumber | Uint8Array, dest: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, destWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Vec<ITuple<[PalletForeingAssetsAssetIds, u128]>>, u32, XcmVersionedMultiLocation, u64]>;
+      /**
+       * Transfer native currencies specifying the fee and amount as
+       * separate.
+       * 
+       * `dest_weight` is the weight for XCM execution on the dest chain, and
+       * it would be charged from the transferred assets. If set below
+       * requirements, the execution may fail and assets wouldn't be
+       * received.
+       * 
+       * `fee` is the amount to be spent to pay for execution in destination
+       * chain. Both fee and amount will be subtracted form the callers
+       * balance.
+       * 
+       * If `fee` is not high enough to cover for the execution costs in the
+       * destination chain, then the assets will be trapped in the
+       * destination chain
+       * 
+       * It's a no-op if any error on local XCM execution or message sending.
+       * Note sending assets out per se doesn't guarantee they would be
+       * received. Receiving depends on if the XCM message could be delivered
+       * by the network, and if the receiving chain would handle
+       * messages correctly.
+       **/
+      transferWithFee: AugmentedSubmittable<(currencyId: PalletForeingAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: u128 | AnyNumber | Uint8Array, fee: u128 | AnyNumber | Uint8Array, dest: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, destWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletForeingAssetsAssetIds, u128, u128, XcmVersionedMultiLocation, u64]>;
+      /**
+       * Generic tx
+       **/
+      [key: string]: SubmittableExtrinsicFunction<ApiType>;
+    };
   } // AugmentedSubmittables
 } // declare module
modifiedtests/src/interfaces/augment-api.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api.ts
+++ b/tests/src/interfaces/augment-api.ts
@@ -7,4 +7,3 @@
 import './augment-api-query';
 import './augment-api-tx';
 import './augment-api-rpc';
-import './augment-api-runtime';
modifiedtests/src/interfaces/augment-types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -1,23 +1,17 @@
 // Auto-generated via `yarn polkadot-types-from-defs`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/types/types/registry';
-
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensModuleCall, OrmlTokensModuleError, OrmlTokensModuleEvent, OrmlTokensReserveData, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, OrmlXtokensModuleCall, OrmlXtokensModuleError, OrmlXtokensModuleEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletForeingAssetsAssetIds, PalletForeingAssetsModuleAssetMetadata, PalletForeingAssetsModuleCall, PalletForeingAssetsModuleError, PalletForeingAssetsModuleEvent, PalletForeingAssetsNativeCurrency, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAsset, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
 import type { Data, StorageKey } from '@polkadot/types';
-import type { BitVec, Bool, Bytes, F32, F64, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, f32, f64, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
+import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
 import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
 import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations';
 import type { RawAuraPreDigest } from '@polkadot/types/interfaces/aura';
 import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';
 import type { UncleEntryItem } from '@polkadot/types/interfaces/authorship';
-import type { AllowedSlots, BabeAuthorityWeight, BabeBlockWeight, BabeEpochConfiguration, BabeEquivocationProof, BabeGenesisConfiguration, BabeGenesisConfigurationV1, BabeWeight, Epoch, EpochAuthorship, MaybeRandomness, MaybeVrf, NextConfigDescriptor, NextConfigDescriptorV1, OpaqueKeyOwnershipProof, Randomness, RawBabePreDigest, RawBabePreDigestCompat, RawBabePreDigestPrimary, RawBabePreDigestPrimaryTo159, RawBabePreDigestSecondaryPlain, RawBabePreDigestSecondaryTo159, RawBabePreDigestSecondaryVRF, RawBabePreDigestTo159, SlotNumber, VrfData, VrfOutput, VrfProof } from '@polkadot/types/interfaces/babe';
+import type { AllowedSlots, BabeAuthorityWeight, BabeBlockWeight, BabeEpochConfiguration, BabeEquivocationProof, BabeWeight, EpochAuthorship, MaybeRandomness, MaybeVrf, NextConfigDescriptor, NextConfigDescriptorV1, Randomness, RawBabePreDigest, RawBabePreDigestCompat, RawBabePreDigestPrimary, RawBabePreDigestPrimaryTo159, RawBabePreDigestSecondaryPlain, RawBabePreDigestSecondaryTo159, RawBabePreDigestSecondaryVRF, RawBabePreDigestTo159, SlotNumber, VrfData, VrfOutput, VrfProof } from '@polkadot/types/interfaces/babe';
 import type { AccountData, BalanceLock, BalanceLockTo212, BalanceStatus, Reasons, ReserveData, ReserveIdentifier, VestingSchedule, WithdrawReasons } from '@polkadot/types/interfaces/balances';
-import type { BeefyAuthoritySet, BeefyCommitment, BeefyId, BeefyNextAuthoritySet, BeefyPayload, BeefyPayloadId, BeefySignedCommitment, MmrRootHash, ValidatorSet, ValidatorSetId } from '@polkadot/types/interfaces/beefy';
-import type { BenchmarkBatch, BenchmarkConfig, BenchmarkList, BenchmarkMetadata, BenchmarkParameter, BenchmarkResult } from '@polkadot/types/interfaces/benchmark';
-import type { CheckInherentsResult, InherentData, InherentIdentifier } from '@polkadot/types/interfaces/blockbuilder';
+import type { BeefyCommitment, BeefyId, BeefyNextAuthoritySet, BeefyPayload, BeefySignedCommitment, MmrRootHash, ValidatorSetId } from '@polkadot/types/interfaces/beefy';
 import type { BridgeMessageId, BridgedBlockHash, BridgedBlockNumber, BridgedHeader, CallOrigin, ChainId, DeliveredMessages, DispatchFeePayment, InboundLaneData, InboundRelayer, InitializationData, LaneId, MessageData, MessageKey, MessageNonce, MessagesDeliveryProofOf, MessagesProofOf, OperatingMode, OutboundLaneData, OutboundMessageFee, OutboundPayload, Parameter, RelayerId, UnrewardedRelayer, UnrewardedRelayersState } from '@polkadot/types/interfaces/bridges';
 import type { BlockHash } from '@polkadot/types/interfaces/chain';
 import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';
@@ -27,13 +21,13 @@
 import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
 import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi';
 import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan';
-import type { CollationInfo, CollationInfoV1, ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus';
+import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus';
 import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy';
 import type { BlockStats } from '@polkadot/types/interfaces/dev';
 import type { ApprovalFlag, DefunctVoter, Renouncing, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections';
 import type { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine';
-import type { BlockV0, BlockV1, BlockV2, EIP1559Transaction, EIP2930Transaction, EthAccessList, EthAccessListItem, EthAccount, EthAddress, EthBlock, EthBloom, EthCallRequest, EthFeeHistory, EthFilter, EthFilterAddress, EthFilterChanges, EthFilterTopic, EthFilterTopicEntry, EthFilterTopicInner, EthHeader, EthLog, EthReceipt, EthReceiptV0, EthReceiptV3, EthRichBlock, EthRichHeader, EthStorageProof, EthSubKind, EthSubParams, EthSubResult, EthSyncInfo, EthSyncStatus, EthTransaction, EthTransactionAction, EthTransactionCondition, EthTransactionRequest, EthTransactionSignature, EthTransactionStatus, EthWork, EthereumAccountId, EthereumAddress, EthereumLookupSource, EthereumSignature, LegacyTransaction, TransactionV0, TransactionV1, TransactionV2 } from '@polkadot/types/interfaces/eth';
-import type { EvmAccount, EvmCallInfo, EvmCreateInfo, EvmLog, EvmVicinity, ExitError, ExitFatal, ExitReason, ExitRevert, ExitSucceed } from '@polkadot/types/interfaces/evm';
+import type { BlockV0, BlockV1, BlockV2, EIP1559Transaction, EIP2930Transaction, EthAccessList, EthAccessListItem, EthAccount, EthAddress, EthBlock, EthBloom, EthCallRequest, EthFilter, EthFilterAddress, EthFilterChanges, EthFilterTopic, EthFilterTopicEntry, EthFilterTopicInner, EthHeader, EthLog, EthReceipt, EthRichBlock, EthRichHeader, EthStorageProof, EthSubKind, EthSubParams, EthSubResult, EthSyncInfo, EthSyncStatus, EthTransaction, EthTransactionAction, EthTransactionCondition, EthTransactionRequest, EthTransactionSignature, EthTransactionStatus, EthWork, EthereumAccountId, EthereumAddress, EthereumLookupSource, EthereumSignature, LegacyTransaction, TransactionV0, TransactionV1, TransactionV2 } from '@polkadot/types/interfaces/eth';
+import type { EvmAccount, EvmLog, EvmVicinity, ExitError, ExitFatal, ExitReason, ExitRevert, ExitSucceed } from '@polkadot/types/interfaces/evm';
 import type { AnySignature, EcdsaSignature, Ed25519Signature, Era, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV4, ExtrinsicSignature, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV4, ImmortalEra, MortalEra, MultiSignature, Signature, SignerPayload, Sr25519Signature } from '@polkadot/types/interfaces/extrinsics';
 import type { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV1 } from '@polkadot/types/interfaces/genericAsset';
 import type { ActiveGilt, ActiveGiltsTotal, ActiveIndex, GiltBid } from '@polkadot/types/interfaces/gilt';
@@ -41,37 +35,35 @@
 import type { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityInfoTo198, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement, RegistrationTo198 } from '@polkadot/types/interfaces/identity';
 import type { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline';
 import type { CallIndex, LotteryConfig } from '@polkadot/types/interfaces/lottery';
-import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV14, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV14, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, ExtrinsicMetadataV14, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV14, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV14, FunctionMetadataV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV14, MetadataV9, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, OpaqueMetadata, PalletCallMetadataLatest, PalletCallMetadataV14, PalletConstantMetadataLatest, PalletConstantMetadataV14, PalletErrorMetadataLatest, PalletErrorMetadataV14, PalletEventMetadataLatest, PalletEventMetadataV14, PalletMetadataLatest, PalletMetadataV14, PalletStorageMetadataLatest, PalletStorageMetadataV14, PortableType, PortableTypeV14, SignedExtensionMetadataLatest, SignedExtensionMetadataV14, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV14, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV14, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV14, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV14, StorageHasherV9, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata';
-import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError, MmrLeafBatchProof, MmrLeafIndex, MmrLeafProof, MmrNodeIndex, MmrProof } from '@polkadot/types/interfaces/mmr';
-import type { NpApiError } from '@polkadot/types/interfaces/nompools';
+import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV14, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV14, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, ExtrinsicMetadataV14, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV14, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV14, FunctionMetadataV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV14, MetadataV9, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, PalletCallMetadataLatest, PalletCallMetadataV14, PalletConstantMetadataLatest, PalletConstantMetadataV14, PalletErrorMetadataLatest, PalletErrorMetadataV14, PalletEventMetadataLatest, PalletEventMetadataV14, PalletMetadataLatest, PalletMetadataV14, PalletStorageMetadataLatest, PalletStorageMetadataV14, PortableType, PortableTypeV14, SignedExtensionMetadataLatest, SignedExtensionMetadataV14, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV14, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV14, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV14, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV14, StorageHasherV9, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata';
+import type { MmrLeafBatchProof, MmrLeafProof } from '@polkadot/types/interfaces/mmr';
 import type { StorageKind } from '@polkadot/types/interfaces/offchain';
 import type { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences';
-import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateEvent, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, CoreState, DisputeLocation, DisputeResult, DisputeState, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, GroupRotationInfo, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OccupiedCore, OccupiedCoreAssumption, OldV1SessionInfo, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, PvfCheckStatement, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, ScheduledCore, Scheduling, ScrapedOnChainVotes, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, SlotRange10, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersData10, WinnersDataTuple, WinnersDataTuple10, WinningData, WinningData10, WinningDataEntry } from '@polkadot/types/interfaces/parachains';
+import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeLocation, DisputeResult, DisputeState, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, SlotRange10, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersData10, WinnersDataTuple, WinnersDataTuple10, WinningData, WinningData10, WinningDataEntry } from '@polkadot/types/interfaces/parachains';
 import type { FeeDetails, InclusionFee, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';
 import type { Approvals } from '@polkadot/types/interfaces/poll';
 import type { ProxyAnnouncement, ProxyDefinition, ProxyType } from '@polkadot/types/interfaces/proxy';
 import type { AccountStatus, AccountValidity } from '@polkadot/types/interfaces/purchase';
 import type { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery';
 import type { RpcMethods } from '@polkadot/types/interfaces/rpc';
-import type { AccountId, AccountId20, AccountId32, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, BlockNumberFor, BlockNumberOf, Call, CallHash, CallHashOf, ChangesTrieConfiguration, ChangesTrieSignal, CodecHash, Consensus, ConsensusEngineId, CrateVersion, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, HeaderPartial, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, SlotDuration, StorageData, StorageInfo, StorageProof, TransactionInfo, TransactionLongevity, TransactionPriority, TransactionStorageProof, TransactionTag, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
+import type { AccountId, AccountId20, AccountId32, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, BlockNumberFor, BlockNumberOf, Call, CallHash, CallHashOf, ChangesTrieConfiguration, ChangesTrieSignal, CodecHash, Consensus, ConsensusEngineId, CrateVersion, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, HeaderPartial, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, StorageData, StorageProof, TransactionInfo, TransactionPriority, TransactionStorageProof, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
 import type { Si0Field, Si0LookupTypeId, Si0Path, Si0Type, Si0TypeDef, Si0TypeDefArray, Si0TypeDefBitSequence, Si0TypeDefCompact, Si0TypeDefComposite, Si0TypeDefPhantom, Si0TypeDefPrimitive, Si0TypeDefSequence, Si0TypeDefTuple, Si0TypeDefVariant, Si0TypeParameter, Si0Variant, Si1Field, Si1LookupTypeId, Si1Path, Si1Type, Si1TypeDef, Si1TypeDefArray, Si1TypeDefBitSequence, Si1TypeDefCompact, Si1TypeDefComposite, Si1TypeDefPrimitive, Si1TypeDefSequence, Si1TypeDefTuple, Si1TypeDefVariant, Si1TypeParameter, Si1Variant, SiField, SiLookupTypeId, SiPath, SiType, SiTypeDef, SiTypeDefArray, SiTypeDefBitSequence, SiTypeDefCompact, SiTypeDefComposite, SiTypeDefPrimitive, SiTypeDefSequence, SiTypeDefTuple, SiTypeDefVariant, SiTypeParameter, SiVariant } from '@polkadot/types/interfaces/scaleInfo';
 import type { Period, Priority, SchedulePeriod, SchedulePriority, Scheduled, ScheduledTo254, TaskAddress } from '@polkadot/types/interfaces/scheduler';
 import type { BeefyKey, FullIdentification, IdentificationTuple, Keys, MembershipProof, SessionIndex, SessionKeys1, SessionKeys10, SessionKeys10B, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6, SessionKeys6B, SessionKeys7, SessionKeys7B, SessionKeys8, SessionKeys8B, SessionKeys9, SessionKeys9B, ValidatorCount } from '@polkadot/types/interfaces/session';
 import type { Bid, BidKind, SocietyJudgement, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society';
 import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactAssignmentsTo265, CompactAssignmentsWith16, CompactAssignmentsWith24, CompactScore, CompactScoreCompact, ElectionCompute, ElectionPhase, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, ExtendedBalance, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RawSolution, RawSolutionTo265, RawSolutionWith16, RawSolutionWith24, ReadySolution, RewardDestination, RewardPoint, RoundSnapshot, SeatHolder, SignedSubmission, SignedSubmissionOf, SignedSubmissionTo276, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SolutionOrSnapshotSize, SolutionSupport, SolutionSupports, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, SubmissionIndicesOf, Supports, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, VoteWeight, Voter } from '@polkadot/types/interfaces/staking';
-import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, MigrationStatusResult, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, RuntimeVersionPre3, RuntimeVersionPre4, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state';
+import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, MigrationStatusResult, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state';
 import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';
-import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithRefCountU8, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, ApplyExtrinsicResultPre6, ArithmeticError, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorModulePre6, DispatchErrorModuleU8, DispatchErrorModuleU8a, DispatchErrorPre6, DispatchErrorPre6First, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchOutcomePre6, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, TransactionalError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
+import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithRefCountU8, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, ArithmeticError, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorModuleU8, DispatchErrorModuleU8a, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, TransactionalError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
 import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
 import type { Multiplier } from '@polkadot/types/interfaces/txpayment';
-import type { TransactionSource, TransactionValidity, ValidTransaction } from '@polkadot/types/interfaces/txqueue';
 import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalanceOf, DestroyWitness, InstanceDetails, InstanceId, InstanceMetadata } from '@polkadot/types/interfaces/uniques';
 import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility';
 import type { VestingInfo } from '@polkadot/types/interfaces/vesting';
 import type { AssetInstance, AssetInstanceV0, AssetInstanceV1, AssetInstanceV2, BodyId, BodyPart, DoubleEncodedCall, Fungibility, FungibilityV0, FungibilityV1, FungibilityV2, InboundStatus, InstructionV2, InteriorMultiLocation, Junction, JunctionV0, JunctionV1, JunctionV2, Junctions, JunctionsV1, JunctionsV2, MultiAsset, MultiAssetFilter, MultiAssetFilterV1, MultiAssetFilterV2, MultiAssetV0, MultiAssetV1, MultiAssetV2, MultiAssets, MultiAssetsV1, MultiAssetsV2, MultiLocation, MultiLocationV0, MultiLocationV1, MultiLocationV2, NetworkId, OriginKindV0, OriginKindV1, OriginKindV2, OutboundStatus, Outcome, QueryId, QueryStatus, QueueConfigData, Response, ResponseV0, ResponseV1, ResponseV2, ResponseV2Error, ResponseV2Result, VersionMigrationStage, VersionedMultiAsset, VersionedMultiAssets, VersionedMultiLocation, VersionedResponse, VersionedXcm, WeightLimitV2, WildFungibility, WildFungibilityV0, WildFungibilityV1, WildFungibilityV2, WildMultiAsset, WildMultiAssetV1, WildMultiAssetV2, Xcm, XcmAssetId, XcmError, XcmErrorV0, XcmErrorV1, XcmErrorV2, XcmOrder, XcmOrderV0, XcmOrderV1, XcmOrderV2, XcmOrigin, XcmOriginKind, XcmV0, XcmV1, XcmV2, XcmVersion, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm';
 
 declare module '@polkadot/types/types/registry' {
-  interface InterfaceTypes {
+  export interface InterfaceTypes {
     AbridgedCandidateReceipt: AbridgedCandidateReceipt;
     AbridgedHostConfiguration: AbridgedHostConfiguration;
     AbridgedHrmpChannel: AbridgedHrmpChannel;
@@ -103,7 +95,6 @@
     AnySignature: AnySignature;
     ApiId: ApiId;
     ApplyExtrinsicResult: ApplyExtrinsicResult;
-    ApplyExtrinsicResultPre6: ApplyExtrinsicResultPre6;
     ApprovalFlag: ApprovalFlag;
     Approvals: Approvals;
     ArithmeticError: ArithmeticError;
@@ -139,8 +130,6 @@
     BabeBlockWeight: BabeBlockWeight;
     BabeEpochConfiguration: BabeEpochConfiguration;
     BabeEquivocationProof: BabeEquivocationProof;
-    BabeGenesisConfiguration: BabeGenesisConfiguration;
-    BabeGenesisConfigurationV1: BabeGenesisConfigurationV1;
     BabeWeight: BabeWeight;
     BackedCandidate: BackedCandidate;
     Balance: Balance;
@@ -148,20 +137,12 @@
     BalanceLockTo212: BalanceLockTo212;
     BalanceOf: BalanceOf;
     BalanceStatus: BalanceStatus;
-    BeefyAuthoritySet: BeefyAuthoritySet;
     BeefyCommitment: BeefyCommitment;
     BeefyId: BeefyId;
     BeefyKey: BeefyKey;
     BeefyNextAuthoritySet: BeefyNextAuthoritySet;
     BeefyPayload: BeefyPayload;
-    BeefyPayloadId: BeefyPayloadId;
     BeefySignedCommitment: BeefySignedCommitment;
-    BenchmarkBatch: BenchmarkBatch;
-    BenchmarkConfig: BenchmarkConfig;
-    BenchmarkList: BenchmarkList;
-    BenchmarkMetadata: BenchmarkMetadata;
-    BenchmarkParameter: BenchmarkParameter;
-    BenchmarkResult: BenchmarkResult;
     Bid: Bid;
     Bidder: Bidder;
     BidKind: BidKind;
@@ -205,7 +186,6 @@
     CallOrigin: CallOrigin;
     CandidateCommitments: CandidateCommitments;
     CandidateDescriptor: CandidateDescriptor;
-    CandidateEvent: CandidateEvent;
     CandidateHash: CandidateHash;
     CandidateInfo: CandidateInfo;
     CandidatePendingAvailability: CandidatePendingAvailability;
@@ -215,7 +195,6 @@
     ChainType: ChainType;
     ChangesTrieConfiguration: ChangesTrieConfiguration;
     ChangesTrieSignal: ChangesTrieSignal;
-    CheckInherentsResult: CheckInherentsResult;
     ClassDetails: ClassDetails;
     ClassId: ClassId;
     ClassMetadata: ClassMetadata;
@@ -225,8 +204,6 @@
     CodeUploadRequest: CodeUploadRequest;
     CodeUploadResult: CodeUploadResult;
     CodeUploadResultValue: CodeUploadResultValue;
-    CollationInfo: CollationInfo;
-    CollationInfoV1: CollationInfoV1;
     CollatorId: CollatorId;
     CollatorSignature: CollatorSignature;
     CollectiveOrigin: CollectiveOrigin;
@@ -310,7 +287,6 @@
     CoreAssignment: CoreAssignment;
     CoreIndex: CoreIndex;
     CoreOccupied: CoreOccupied;
-    CoreState: CoreState;
     CrateVersion: CrateVersion;
     CreatedBlock: CreatedBlock;
     CumulusPalletDmpQueueCall: CumulusPalletDmpQueueCall;
@@ -352,18 +328,14 @@
     DispatchClass: DispatchClass;
     DispatchError: DispatchError;
     DispatchErrorModule: DispatchErrorModule;
-    DispatchErrorModulePre6: DispatchErrorModulePre6;
     DispatchErrorModuleU8: DispatchErrorModuleU8;
     DispatchErrorModuleU8a: DispatchErrorModuleU8a;
-    DispatchErrorPre6: DispatchErrorPre6;
-    DispatchErrorPre6First: DispatchErrorPre6First;
     DispatchErrorTo198: DispatchErrorTo198;
     DispatchFeePayment: DispatchFeePayment;
     DispatchInfo: DispatchInfo;
     DispatchInfoTo190: DispatchInfoTo190;
     DispatchInfoTo244: DispatchInfoTo244;
     DispatchOutcome: DispatchOutcome;
-    DispatchOutcomePre6: DispatchOutcomePre6;
     DispatchResult: DispatchResult;
     DispatchResultOf: DispatchResultOf;
     DispatchResultTo198: DispatchResultTo198;
@@ -387,7 +359,6 @@
     ElectionStatus: ElectionStatus;
     EncodedFinalityProofs: EncodedFinalityProofs;
     EncodedJustification: EncodedJustification;
-    Epoch: Epoch;
     EpochAuthorship: EpochAuthorship;
     Era: Era;
     EraIndex: EraIndex;
@@ -426,7 +397,6 @@
     EthereumTransactionTransactionSignature: EthereumTransactionTransactionSignature;
     EthereumTransactionTransactionV2: EthereumTransactionTransactionV2;
     EthereumTypesHashH64: EthereumTypesHashH64;
-    EthFeeHistory: EthFeeHistory;
     EthFilter: EthFilter;
     EthFilterAddress: EthFilterAddress;
     EthFilterChanges: EthFilterChanges;
@@ -436,8 +406,6 @@
     EthHeader: EthHeader;
     EthLog: EthLog;
     EthReceipt: EthReceipt;
-    EthReceiptV0: EthReceiptV0;
-    EthReceiptV3: EthReceiptV3;
     EthRichBlock: EthRichBlock;
     EthRichHeader: EthRichHeader;
     EthStorageProof: EthStorageProof;
@@ -465,13 +433,11 @@
     EventMetadataV9: EventMetadataV9;
     EventRecord: EventRecord;
     EvmAccount: EvmAccount;
-    EvmCallInfo: EvmCallInfo;
     EvmCoreErrorExitError: EvmCoreErrorExitError;
     EvmCoreErrorExitFatal: EvmCoreErrorExitFatal;
     EvmCoreErrorExitReason: EvmCoreErrorExitReason;
     EvmCoreErrorExitRevert: EvmCoreErrorExitRevert;
     EvmCoreErrorExitSucceed: EvmCoreErrorExitSucceed;
-    EvmCreateInfo: EvmCreateInfo;
     EvmLog: EvmLog;
     EvmVicinity: EvmVicinity;
     ExecReturnValue: ExecReturnValue;
@@ -500,10 +466,6 @@
     ExtrinsicsWeight: ExtrinsicsWeight;
     ExtrinsicUnknown: ExtrinsicUnknown;
     ExtrinsicV4: ExtrinsicV4;
-    f32: f32;
-    F32: F32;
-    f64: f64;
-    F64: F64;
     FeeDetails: FeeDetails;
     Fixed128: Fixed128;
     Fixed64: Fixed64;
@@ -575,7 +537,6 @@
     GrandpaPrevote: GrandpaPrevote;
     GrandpaSignedPrecommit: GrandpaSignedPrecommit;
     GroupIndex: GroupIndex;
-    GroupRotationInfo: GroupRotationInfo;
     H1024: H1024;
     H128: H128;
     H160: H160;
@@ -632,8 +593,6 @@
     Index: Index;
     IndicesLookupSource: IndicesLookupSource;
     IndividualExposure: IndividualExposure;
-    InherentData: InherentData;
-    InherentIdentifier: InherentIdentifier;
     InitializationData: InitializationData;
     InstanceDetails: InstanceDetails;
     InstanceId: InstanceId;
@@ -704,14 +663,8 @@
     MetadataV14: MetadataV14;
     MetadataV9: MetadataV9;
     MigrationStatusResult: MigrationStatusResult;
-    MmrBatchProof: MmrBatchProof;
-    MmrEncodableOpaqueLeaf: MmrEncodableOpaqueLeaf;
-    MmrError: MmrError;
     MmrLeafBatchProof: MmrLeafBatchProof;
-    MmrLeafIndex: MmrLeafIndex;
     MmrLeafProof: MmrLeafProof;
-    MmrNodeIndex: MmrNodeIndex;
-    MmrProof: MmrProof;
     MmrRootHash: MmrRootHash;
     ModuleConstantMetadataV10: ModuleConstantMetadataV10;
     ModuleConstantMetadataV11: ModuleConstantMetadataV11;
@@ -761,20 +714,14 @@
     NominatorIndex: NominatorIndex;
     NominatorIndexCompact: NominatorIndexCompact;
     NotConnectedPeer: NotConnectedPeer;
-    NpApiError: NpApiError;
     Null: Null;
-    OccupiedCore: OccupiedCore;
-    OccupiedCoreAssumption: OccupiedCoreAssumption;
     OffchainAccuracy: OffchainAccuracy;
     OffchainAccuracyCompact: OffchainAccuracyCompact;
     OffenceDetails: OffenceDetails;
     Offender: Offender;
-    OldV1SessionInfo: OldV1SessionInfo;
     OpalRuntimeOriginCaller: OpalRuntimeOriginCaller;
     OpalRuntimeRuntime: OpalRuntimeRuntime;
     OpaqueCall: OpaqueCall;
-    OpaqueKeyOwnershipProof: OpaqueKeyOwnershipProof;
-    OpaqueMetadata: OpaqueMetadata;
     OpaqueMultiaddr: OpaqueMultiaddr;
     OpaqueNetworkState: OpaqueNetworkState;
     OpaquePeerId: OpaquePeerId;
@@ -790,10 +737,19 @@
     OriginKindV0: OriginKindV0;
     OriginKindV1: OriginKindV1;
     OriginKindV2: OriginKindV2;
+    OrmlTokensAccountData: OrmlTokensAccountData;
+    OrmlTokensBalanceLock: OrmlTokensBalanceLock;
+    OrmlTokensModuleCall: OrmlTokensModuleCall;
+    OrmlTokensModuleError: OrmlTokensModuleError;
+    OrmlTokensModuleEvent: OrmlTokensModuleEvent;
+    OrmlTokensReserveData: OrmlTokensReserveData;
     OrmlVestingModuleCall: OrmlVestingModuleCall;
     OrmlVestingModuleError: OrmlVestingModuleError;
     OrmlVestingModuleEvent: OrmlVestingModuleEvent;
     OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;
+    OrmlXtokensModuleCall: OrmlXtokensModuleCall;
+    OrmlXtokensModuleError: OrmlXtokensModuleError;
+    OrmlXtokensModuleEvent: OrmlXtokensModuleEvent;
     OutboundHrmpMessage: OutboundHrmpMessage;
     OutboundLaneData: OutboundLaneData;
     OutboundMessageFee: OutboundMessageFee;
@@ -837,6 +793,12 @@
     PalletEvmEvent: PalletEvmEvent;
     PalletEvmMigrationCall: PalletEvmMigrationCall;
     PalletEvmMigrationError: PalletEvmMigrationError;
+    PalletForeingAssetsAssetIds: PalletForeingAssetsAssetIds;
+    PalletForeingAssetsModuleAssetMetadata: PalletForeingAssetsModuleAssetMetadata;
+    PalletForeingAssetsModuleCall: PalletForeingAssetsModuleCall;
+    PalletForeingAssetsModuleError: PalletForeingAssetsModuleError;
+    PalletForeingAssetsModuleEvent: PalletForeingAssetsModuleEvent;
+    PalletForeingAssetsNativeCurrency: PalletForeingAssetsNativeCurrency;
     PalletFungibleError: PalletFungibleError;
     PalletId: PalletId;
     PalletInflationCall: PalletInflationCall;
@@ -951,7 +913,6 @@
     ProxyDefinition: ProxyDefinition;
     ProxyState: ProxyState;
     ProxyType: ProxyType;
-    PvfCheckStatement: PvfCheckStatement;
     QueryId: QueryId;
     QueryStatus: QueryStatus;
     QueueConfigData: QueueConfigData;
@@ -1040,11 +1001,8 @@
     RuntimeVersion: RuntimeVersion;
     RuntimeVersionApi: RuntimeVersionApi;
     RuntimeVersionPartial: RuntimeVersionPartial;
-    RuntimeVersionPre3: RuntimeVersionPre3;
-    RuntimeVersionPre4: RuntimeVersionPre4;
     Schedule: Schedule;
     Scheduled: Scheduled;
-    ScheduledCore: ScheduledCore;
     ScheduledTo254: ScheduledTo254;
     SchedulePeriod: SchedulePeriod;
     SchedulePriority: SchedulePriority;
@@ -1052,7 +1010,6 @@
     ScheduleTo258: ScheduleTo258;
     ScheduleTo264: ScheduleTo264;
     Scheduling: Scheduling;
-    ScrapedOnChainVotes: ScrapedOnChainVotes;
     Seal: Seal;
     SealV0: SealV0;
     SeatHolder: SeatHolder;
@@ -1141,7 +1098,6 @@
     SlashingSpansTo204: SlashingSpansTo204;
     SlashJournalEntry: SlashJournalEntry;
     Slot: Slot;
-    SlotDuration: SlotDuration;
     SlotNumber: SlotNumber;
     SlotRange: SlotRange;
     SlotRange10: SlotRange10;
@@ -1204,7 +1160,6 @@
     StorageHasherV13: StorageHasherV13;
     StorageHasherV14: StorageHasherV14;
     StorageHasherV9: StorageHasherV9;
-    StorageInfo: StorageInfo;
     StorageKey: StorageKey;
     StorageKind: StorageKind;
     StorageMetadataV10: StorageMetadataV10;
@@ -1234,15 +1189,11 @@
     TraceError: TraceError;
     TransactionalError: TransactionalError;
     TransactionInfo: TransactionInfo;
-    TransactionLongevity: TransactionLongevity;
     TransactionPriority: TransactionPriority;
-    TransactionSource: TransactionSource;
     TransactionStorageProof: TransactionStorageProof;
-    TransactionTag: TransactionTag;
     TransactionV0: TransactionV0;
     TransactionV1: TransactionV1;
     TransactionV2: TransactionV2;
-    TransactionValidity: TransactionValidity;
     TransactionValidityError: TransactionValidityError;
     TransientValidationData: TransientValidationData;
     TreasuryProposal: TreasuryProposal;
@@ -1318,12 +1269,10 @@
     ValidatorPrefsTo196: ValidatorPrefsTo196;
     ValidatorPrefsWithBlocked: ValidatorPrefsWithBlocked;
     ValidatorPrefsWithCommission: ValidatorPrefsWithCommission;
-    ValidatorSet: ValidatorSet;
     ValidatorSetId: ValidatorSetId;
     ValidatorSignature: ValidatorSignature;
     ValidDisputeStatementKind: ValidDisputeStatementKind;
     ValidityAttestation: ValidityAttestation;
-    ValidTransaction: ValidTransaction;
     VecInboundHrmpMessage: VecInboundHrmpMessage;
     VersionedMultiAsset: VersionedMultiAsset;
     VersionedMultiAssets: VersionedMultiAssets;
@@ -1417,6 +1366,7 @@
     XcmV2WeightLimit: XcmV2WeightLimit;
     XcmV2Xcm: XcmV2Xcm;
     XcmVersion: XcmVersion;
+    XcmVersionedMultiAsset: XcmVersionedMultiAsset;
     XcmVersionedMultiAssets: XcmVersionedMultiAssets;
     XcmVersionedMultiLocation: XcmVersionedMultiLocation;
     XcmVersionedXcm: XcmVersionedXcm;
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
before · tests/src/interfaces/default/types.ts
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';5import type { ITuple } from '@polkadot/types-codec/types';6import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';7import type { Event } from '@polkadot/types/interfaces/system';89/** @name CumulusPalletDmpQueueCall */10export interface CumulusPalletDmpQueueCall extends Enum {11  readonly isServiceOverweight: boolean;12  readonly asServiceOverweight: {13    readonly index: u64;14    readonly weightLimit: u64;15  } & Struct;16  readonly type: 'ServiceOverweight';17}1819/** @name CumulusPalletDmpQueueConfigData */20export interface CumulusPalletDmpQueueConfigData extends Struct {21  readonly maxIndividual: u64;22}2324/** @name CumulusPalletDmpQueueError */25export interface CumulusPalletDmpQueueError extends Enum {26  readonly isUnknown: boolean;27  readonly isOverLimit: boolean;28  readonly type: 'Unknown' | 'OverLimit';29}3031/** @name CumulusPalletDmpQueueEvent */32export interface CumulusPalletDmpQueueEvent extends Enum {33  readonly isInvalidFormat: boolean;34  readonly asInvalidFormat: {35    readonly messageId: U8aFixed;36  } & Struct;37  readonly isUnsupportedVersion: boolean;38  readonly asUnsupportedVersion: {39    readonly messageId: U8aFixed;40  } & Struct;41  readonly isExecutedDownward: boolean;42  readonly asExecutedDownward: {43    readonly messageId: U8aFixed;44    readonly outcome: XcmV2TraitsOutcome;45  } & Struct;46  readonly isWeightExhausted: boolean;47  readonly asWeightExhausted: {48    readonly messageId: U8aFixed;49    readonly remainingWeight: u64;50    readonly requiredWeight: u64;51  } & Struct;52  readonly isOverweightEnqueued: boolean;53  readonly asOverweightEnqueued: {54    readonly messageId: U8aFixed;55    readonly overweightIndex: u64;56    readonly requiredWeight: u64;57  } & Struct;58  readonly isOverweightServiced: boolean;59  readonly asOverweightServiced: {60    readonly overweightIndex: u64;61    readonly weightUsed: u64;62  } & Struct;63  readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';64}6566/** @name CumulusPalletDmpQueuePageIndexData */67export interface CumulusPalletDmpQueuePageIndexData extends Struct {68  readonly beginUsed: u32;69  readonly endUsed: u32;70  readonly overweightCount: u64;71}7273/** @name CumulusPalletParachainSystemCall */74export interface CumulusPalletParachainSystemCall extends Enum {75  readonly isSetValidationData: boolean;76  readonly asSetValidationData: {77    readonly data: CumulusPrimitivesParachainInherentParachainInherentData;78  } & Struct;79  readonly isSudoSendUpwardMessage: boolean;80  readonly asSudoSendUpwardMessage: {81    readonly message: Bytes;82  } & Struct;83  readonly isAuthorizeUpgrade: boolean;84  readonly asAuthorizeUpgrade: {85    readonly codeHash: H256;86  } & Struct;87  readonly isEnactAuthorizedUpgrade: boolean;88  readonly asEnactAuthorizedUpgrade: {89    readonly code: Bytes;90  } & Struct;91  readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';92}9394/** @name CumulusPalletParachainSystemError */95export interface CumulusPalletParachainSystemError extends Enum {96  readonly isOverlappingUpgrades: boolean;97  readonly isProhibitedByPolkadot: boolean;98  readonly isTooBig: boolean;99  readonly isValidationDataNotAvailable: boolean;100  readonly isHostConfigurationNotAvailable: boolean;101  readonly isNotScheduled: boolean;102  readonly isNothingAuthorized: boolean;103  readonly isUnauthorized: boolean;104  readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';105}106107/** @name CumulusPalletParachainSystemEvent */108export interface CumulusPalletParachainSystemEvent extends Enum {109  readonly isValidationFunctionStored: boolean;110  readonly isValidationFunctionApplied: boolean;111  readonly asValidationFunctionApplied: {112    readonly relayChainBlockNum: u32;113  } & Struct;114  readonly isValidationFunctionDiscarded: boolean;115  readonly isUpgradeAuthorized: boolean;116  readonly asUpgradeAuthorized: {117    readonly codeHash: H256;118  } & Struct;119  readonly isDownwardMessagesReceived: boolean;120  readonly asDownwardMessagesReceived: {121    readonly count: u32;122  } & Struct;123  readonly isDownwardMessagesProcessed: boolean;124  readonly asDownwardMessagesProcessed: {125    readonly weightUsed: u64;126    readonly dmqHead: H256;127  } & Struct;128  readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';129}130131/** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot */132export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {133  readonly dmqMqcHead: H256;134  readonly relayDispatchQueueSize: ITuple<[u32, u32]>;135  readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;136  readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;137}138139/** @name CumulusPalletXcmCall */140export interface CumulusPalletXcmCall extends Null {}141142/** @name CumulusPalletXcmError */143export interface CumulusPalletXcmError extends Null {}144145/** @name CumulusPalletXcmEvent */146export interface CumulusPalletXcmEvent extends Enum {147  readonly isInvalidFormat: boolean;148  readonly asInvalidFormat: U8aFixed;149  readonly isUnsupportedVersion: boolean;150  readonly asUnsupportedVersion: U8aFixed;151  readonly isExecutedDownward: boolean;152  readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;153  readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';154}155156/** @name CumulusPalletXcmOrigin */157export interface CumulusPalletXcmOrigin extends Enum {158  readonly isRelay: boolean;159  readonly isSiblingParachain: boolean;160  readonly asSiblingParachain: u32;161  readonly type: 'Relay' | 'SiblingParachain';162}163164/** @name CumulusPalletXcmpQueueCall */165export interface CumulusPalletXcmpQueueCall extends Enum {166  readonly isServiceOverweight: boolean;167  readonly asServiceOverweight: {168    readonly index: u64;169    readonly weightLimit: u64;170  } & Struct;171  readonly isSuspendXcmExecution: boolean;172  readonly isResumeXcmExecution: boolean;173  readonly isUpdateSuspendThreshold: boolean;174  readonly asUpdateSuspendThreshold: {175    readonly new_: u32;176  } & Struct;177  readonly isUpdateDropThreshold: boolean;178  readonly asUpdateDropThreshold: {179    readonly new_: u32;180  } & Struct;181  readonly isUpdateResumeThreshold: boolean;182  readonly asUpdateResumeThreshold: {183    readonly new_: u32;184  } & Struct;185  readonly isUpdateThresholdWeight: boolean;186  readonly asUpdateThresholdWeight: {187    readonly new_: u64;188  } & Struct;189  readonly isUpdateWeightRestrictDecay: boolean;190  readonly asUpdateWeightRestrictDecay: {191    readonly new_: u64;192  } & Struct;193  readonly isUpdateXcmpMaxIndividualWeight: boolean;194  readonly asUpdateXcmpMaxIndividualWeight: {195    readonly new_: u64;196  } & Struct;197  readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';198}199200/** @name CumulusPalletXcmpQueueError */201export interface CumulusPalletXcmpQueueError extends Enum {202  readonly isFailedToSend: boolean;203  readonly isBadXcmOrigin: boolean;204  readonly isBadXcm: boolean;205  readonly isBadOverweightIndex: boolean;206  readonly isWeightOverLimit: boolean;207  readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';208}209210/** @name CumulusPalletXcmpQueueEvent */211export interface CumulusPalletXcmpQueueEvent extends Enum {212  readonly isSuccess: boolean;213  readonly asSuccess: {214    readonly messageHash: Option<H256>;215    readonly weight: u64;216  } & Struct;217  readonly isFail: boolean;218  readonly asFail: {219    readonly messageHash: Option<H256>;220    readonly error: XcmV2TraitsError;221    readonly weight: u64;222  } & Struct;223  readonly isBadVersion: boolean;224  readonly asBadVersion: {225    readonly messageHash: Option<H256>;226  } & Struct;227  readonly isBadFormat: boolean;228  readonly asBadFormat: {229    readonly messageHash: Option<H256>;230  } & Struct;231  readonly isUpwardMessageSent: boolean;232  readonly asUpwardMessageSent: {233    readonly messageHash: Option<H256>;234  } & Struct;235  readonly isXcmpMessageSent: boolean;236  readonly asXcmpMessageSent: {237    readonly messageHash: Option<H256>;238  } & Struct;239  readonly isOverweightEnqueued: boolean;240  readonly asOverweightEnqueued: {241    readonly sender: u32;242    readonly sentAt: u32;243    readonly index: u64;244    readonly required: u64;245  } & Struct;246  readonly isOverweightServiced: boolean;247  readonly asOverweightServiced: {248    readonly index: u64;249    readonly used: u64;250  } & Struct;251  readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';252}253254/** @name CumulusPalletXcmpQueueInboundChannelDetails */255export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {256  readonly sender: u32;257  readonly state: CumulusPalletXcmpQueueInboundState;258  readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;259}260261/** @name CumulusPalletXcmpQueueInboundState */262export interface CumulusPalletXcmpQueueInboundState extends Enum {263  readonly isOk: boolean;264  readonly isSuspended: boolean;265  readonly type: 'Ok' | 'Suspended';266}267268/** @name CumulusPalletXcmpQueueOutboundChannelDetails */269export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {270  readonly recipient: u32;271  readonly state: CumulusPalletXcmpQueueOutboundState;272  readonly signalsExist: bool;273  readonly firstIndex: u16;274  readonly lastIndex: u16;275}276277/** @name CumulusPalletXcmpQueueOutboundState */278export interface CumulusPalletXcmpQueueOutboundState extends Enum {279  readonly isOk: boolean;280  readonly isSuspended: boolean;281  readonly type: 'Ok' | 'Suspended';282}283284/** @name CumulusPalletXcmpQueueQueueConfigData */285export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {286  readonly suspendThreshold: u32;287  readonly dropThreshold: u32;288  readonly resumeThreshold: u32;289  readonly thresholdWeight: u64;290  readonly weightRestrictDecay: u64;291  readonly xcmpMaxIndividualWeight: u64;292}293294/** @name CumulusPrimitivesParachainInherentParachainInherentData */295export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {296  readonly validationData: PolkadotPrimitivesV2PersistedValidationData;297  readonly relayChainState: SpTrieStorageProof;298  readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;299  readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;300}301302/** @name EthbloomBloom */303export interface EthbloomBloom extends U8aFixed {}304305/** @name EthereumBlock */306export interface EthereumBlock extends Struct {307  readonly header: EthereumHeader;308  readonly transactions: Vec<EthereumTransactionTransactionV2>;309  readonly ommers: Vec<EthereumHeader>;310}311312/** @name EthereumHeader */313export interface EthereumHeader extends Struct {314  readonly parentHash: H256;315  readonly ommersHash: H256;316  readonly beneficiary: H160;317  readonly stateRoot: H256;318  readonly transactionsRoot: H256;319  readonly receiptsRoot: H256;320  readonly logsBloom: EthbloomBloom;321  readonly difficulty: U256;322  readonly number: U256;323  readonly gasLimit: U256;324  readonly gasUsed: U256;325  readonly timestamp: u64;326  readonly extraData: Bytes;327  readonly mixHash: H256;328  readonly nonce: EthereumTypesHashH64;329}330331/** @name EthereumLog */332export interface EthereumLog extends Struct {333  readonly address: H160;334  readonly topics: Vec<H256>;335  readonly data: Bytes;336}337338/** @name EthereumReceiptEip658ReceiptData */339export interface EthereumReceiptEip658ReceiptData extends Struct {340  readonly statusCode: u8;341  readonly usedGas: U256;342  readonly logsBloom: EthbloomBloom;343  readonly logs: Vec<EthereumLog>;344}345346/** @name EthereumReceiptReceiptV3 */347export interface EthereumReceiptReceiptV3 extends Enum {348  readonly isLegacy: boolean;349  readonly asLegacy: EthereumReceiptEip658ReceiptData;350  readonly isEip2930: boolean;351  readonly asEip2930: EthereumReceiptEip658ReceiptData;352  readonly isEip1559: boolean;353  readonly asEip1559: EthereumReceiptEip658ReceiptData;354  readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';355}356357/** @name EthereumTransactionAccessListItem */358export interface EthereumTransactionAccessListItem extends Struct {359  readonly address: H160;360  readonly storageKeys: Vec<H256>;361}362363/** @name EthereumTransactionEip1559Transaction */364export interface EthereumTransactionEip1559Transaction extends Struct {365  readonly chainId: u64;366  readonly nonce: U256;367  readonly maxPriorityFeePerGas: U256;368  readonly maxFeePerGas: U256;369  readonly gasLimit: U256;370  readonly action: EthereumTransactionTransactionAction;371  readonly value: U256;372  readonly input: Bytes;373  readonly accessList: Vec<EthereumTransactionAccessListItem>;374  readonly oddYParity: bool;375  readonly r: H256;376  readonly s: H256;377}378379/** @name EthereumTransactionEip2930Transaction */380export interface EthereumTransactionEip2930Transaction extends Struct {381  readonly chainId: u64;382  readonly nonce: U256;383  readonly gasPrice: U256;384  readonly gasLimit: U256;385  readonly action: EthereumTransactionTransactionAction;386  readonly value: U256;387  readonly input: Bytes;388  readonly accessList: Vec<EthereumTransactionAccessListItem>;389  readonly oddYParity: bool;390  readonly r: H256;391  readonly s: H256;392}393394/** @name EthereumTransactionLegacyTransaction */395export interface EthereumTransactionLegacyTransaction extends Struct {396  readonly nonce: U256;397  readonly gasPrice: U256;398  readonly gasLimit: U256;399  readonly action: EthereumTransactionTransactionAction;400  readonly value: U256;401  readonly input: Bytes;402  readonly signature: EthereumTransactionTransactionSignature;403}404405/** @name EthereumTransactionTransactionAction */406export interface EthereumTransactionTransactionAction extends Enum {407  readonly isCall: boolean;408  readonly asCall: H160;409  readonly isCreate: boolean;410  readonly type: 'Call' | 'Create';411}412413/** @name EthereumTransactionTransactionSignature */414export interface EthereumTransactionTransactionSignature extends Struct {415  readonly v: u64;416  readonly r: H256;417  readonly s: H256;418}419420/** @name EthereumTransactionTransactionV2 */421export interface EthereumTransactionTransactionV2 extends Enum {422  readonly isLegacy: boolean;423  readonly asLegacy: EthereumTransactionLegacyTransaction;424  readonly isEip2930: boolean;425  readonly asEip2930: EthereumTransactionEip2930Transaction;426  readonly isEip1559: boolean;427  readonly asEip1559: EthereumTransactionEip1559Transaction;428  readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';429}430431/** @name EthereumTypesHashH64 */432export interface EthereumTypesHashH64 extends U8aFixed {}433434/** @name EvmCoreErrorExitError */435export interface EvmCoreErrorExitError extends Enum {436  readonly isStackUnderflow: boolean;437  readonly isStackOverflow: boolean;438  readonly isInvalidJump: boolean;439  readonly isInvalidRange: boolean;440  readonly isDesignatedInvalid: boolean;441  readonly isCallTooDeep: boolean;442  readonly isCreateCollision: boolean;443  readonly isCreateContractLimit: boolean;444  readonly isOutOfOffset: boolean;445  readonly isOutOfGas: boolean;446  readonly isOutOfFund: boolean;447  readonly isPcUnderflow: boolean;448  readonly isCreateEmpty: boolean;449  readonly isOther: boolean;450  readonly asOther: Text;451  readonly isInvalidCode: boolean;452  readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';453}454455/** @name EvmCoreErrorExitFatal */456export interface EvmCoreErrorExitFatal extends Enum {457  readonly isNotSupported: boolean;458  readonly isUnhandledInterrupt: boolean;459  readonly isCallErrorAsFatal: boolean;460  readonly asCallErrorAsFatal: EvmCoreErrorExitError;461  readonly isOther: boolean;462  readonly asOther: Text;463  readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';464}465466/** @name EvmCoreErrorExitReason */467export interface EvmCoreErrorExitReason extends Enum {468  readonly isSucceed: boolean;469  readonly asSucceed: EvmCoreErrorExitSucceed;470  readonly isError: boolean;471  readonly asError: EvmCoreErrorExitError;472  readonly isRevert: boolean;473  readonly asRevert: EvmCoreErrorExitRevert;474  readonly isFatal: boolean;475  readonly asFatal: EvmCoreErrorExitFatal;476  readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';477}478479/** @name EvmCoreErrorExitRevert */480export interface EvmCoreErrorExitRevert extends Enum {481  readonly isReverted: boolean;482  readonly type: 'Reverted';483}484485/** @name EvmCoreErrorExitSucceed */486export interface EvmCoreErrorExitSucceed extends Enum {487  readonly isStopped: boolean;488  readonly isReturned: boolean;489  readonly isSuicided: boolean;490  readonly type: 'Stopped' | 'Returned' | 'Suicided';491}492493/** @name FpRpcTransactionStatus */494export interface FpRpcTransactionStatus extends Struct {495  readonly transactionHash: H256;496  readonly transactionIndex: u32;497  readonly from: H160;498  readonly to: Option<H160>;499  readonly contractAddress: Option<H160>;500  readonly logs: Vec<EthereumLog>;501  readonly logsBloom: EthbloomBloom;502}503504/** @name FrameSupportDispatchRawOrigin */505export interface FrameSupportDispatchRawOrigin extends Enum {506  readonly isRoot: boolean;507  readonly isSigned: boolean;508  readonly asSigned: AccountId32;509  readonly isNone: boolean;510  readonly type: 'Root' | 'Signed' | 'None';511}512513/** @name FrameSupportPalletId */514export interface FrameSupportPalletId extends U8aFixed {}515516/** @name FrameSupportScheduleLookupError */517export interface FrameSupportScheduleLookupError extends Enum {518  readonly isUnknown: boolean;519  readonly isBadFormat: boolean;520  readonly type: 'Unknown' | 'BadFormat';521}522523/** @name FrameSupportScheduleMaybeHashed */524export interface FrameSupportScheduleMaybeHashed extends Enum {525  readonly isValue: boolean;526  readonly asValue: Call;527  readonly isHash: boolean;528  readonly asHash: H256;529  readonly type: 'Value' | 'Hash';530}531532/** @name FrameSupportTokensMiscBalanceStatus */533export interface FrameSupportTokensMiscBalanceStatus extends Enum {534  readonly isFree: boolean;535  readonly isReserved: boolean;536  readonly type: 'Free' | 'Reserved';537}538539/** @name FrameSupportWeightsDispatchClass */540export interface FrameSupportWeightsDispatchClass extends Enum {541  readonly isNormal: boolean;542  readonly isOperational: boolean;543  readonly isMandatory: boolean;544  readonly type: 'Normal' | 'Operational' | 'Mandatory';545}546547/** @name FrameSupportWeightsDispatchInfo */548export interface FrameSupportWeightsDispatchInfo extends Struct {549  readonly weight: u64;550  readonly class: FrameSupportWeightsDispatchClass;551  readonly paysFee: FrameSupportWeightsPays;552}553554/** @name FrameSupportWeightsPays */555export interface FrameSupportWeightsPays extends Enum {556  readonly isYes: boolean;557  readonly isNo: boolean;558  readonly type: 'Yes' | 'No';559}560561/** @name FrameSupportWeightsPerDispatchClassU32 */562export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {563  readonly normal: u32;564  readonly operational: u32;565  readonly mandatory: u32;566}567568/** @name FrameSupportWeightsPerDispatchClassU64 */569export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {570  readonly normal: u64;571  readonly operational: u64;572  readonly mandatory: u64;573}574575/** @name FrameSupportWeightsPerDispatchClassWeightsPerClass */576export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {577  readonly normal: FrameSystemLimitsWeightsPerClass;578  readonly operational: FrameSystemLimitsWeightsPerClass;579  readonly mandatory: FrameSystemLimitsWeightsPerClass;580}581582/** @name FrameSupportWeightsRuntimeDbWeight */583export interface FrameSupportWeightsRuntimeDbWeight extends Struct {584  readonly read: u64;585  readonly write: u64;586}587588/** @name FrameSystemAccountInfo */589export interface FrameSystemAccountInfo extends Struct {590  readonly nonce: u32;591  readonly consumers: u32;592  readonly providers: u32;593  readonly sufficients: u32;594  readonly data: PalletBalancesAccountData;595}596597/** @name FrameSystemCall */598export interface FrameSystemCall extends Enum {599  readonly isFillBlock: boolean;600  readonly asFillBlock: {601    readonly ratio: Perbill;602  } & Struct;603  readonly isRemark: boolean;604  readonly asRemark: {605    readonly remark: Bytes;606  } & Struct;607  readonly isSetHeapPages: boolean;608  readonly asSetHeapPages: {609    readonly pages: u64;610  } & Struct;611  readonly isSetCode: boolean;612  readonly asSetCode: {613    readonly code: Bytes;614  } & Struct;615  readonly isSetCodeWithoutChecks: boolean;616  readonly asSetCodeWithoutChecks: {617    readonly code: Bytes;618  } & Struct;619  readonly isSetStorage: boolean;620  readonly asSetStorage: {621    readonly items: Vec<ITuple<[Bytes, Bytes]>>;622  } & Struct;623  readonly isKillStorage: boolean;624  readonly asKillStorage: {625    readonly keys_: Vec<Bytes>;626  } & Struct;627  readonly isKillPrefix: boolean;628  readonly asKillPrefix: {629    readonly prefix: Bytes;630    readonly subkeys: u32;631  } & Struct;632  readonly isRemarkWithEvent: boolean;633  readonly asRemarkWithEvent: {634    readonly remark: Bytes;635  } & Struct;636  readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';637}638639/** @name FrameSystemError */640export interface FrameSystemError extends Enum {641  readonly isInvalidSpecName: boolean;642  readonly isSpecVersionNeedsToIncrease: boolean;643  readonly isFailedToExtractRuntimeVersion: boolean;644  readonly isNonDefaultComposite: boolean;645  readonly isNonZeroRefCount: boolean;646  readonly isCallFiltered: boolean;647  readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';648}649650/** @name FrameSystemEvent */651export interface FrameSystemEvent extends Enum {652  readonly isExtrinsicSuccess: boolean;653  readonly asExtrinsicSuccess: {654    readonly dispatchInfo: FrameSupportWeightsDispatchInfo;655  } & Struct;656  readonly isExtrinsicFailed: boolean;657  readonly asExtrinsicFailed: {658    readonly dispatchError: SpRuntimeDispatchError;659    readonly dispatchInfo: FrameSupportWeightsDispatchInfo;660  } & Struct;661  readonly isCodeUpdated: boolean;662  readonly isNewAccount: boolean;663  readonly asNewAccount: {664    readonly account: AccountId32;665  } & Struct;666  readonly isKilledAccount: boolean;667  readonly asKilledAccount: {668    readonly account: AccountId32;669  } & Struct;670  readonly isRemarked: boolean;671  readonly asRemarked: {672    readonly sender: AccountId32;673    readonly hash_: H256;674  } & Struct;675  readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';676}677678/** @name FrameSystemEventRecord */679export interface FrameSystemEventRecord extends Struct {680  readonly phase: FrameSystemPhase;681  readonly event: Event;682  readonly topics: Vec<H256>;683}684685/** @name FrameSystemExtensionsCheckGenesis */686export interface FrameSystemExtensionsCheckGenesis extends Null {}687688/** @name FrameSystemExtensionsCheckNonce */689export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}690691/** @name FrameSystemExtensionsCheckSpecVersion */692export interface FrameSystemExtensionsCheckSpecVersion extends Null {}693694/** @name FrameSystemExtensionsCheckWeight */695export interface FrameSystemExtensionsCheckWeight extends Null {}696697/** @name FrameSystemLastRuntimeUpgradeInfo */698export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {699  readonly specVersion: Compact<u32>;700  readonly specName: Text;701}702703/** @name FrameSystemLimitsBlockLength */704export interface FrameSystemLimitsBlockLength extends Struct {705  readonly max: FrameSupportWeightsPerDispatchClassU32;706}707708/** @name FrameSystemLimitsBlockWeights */709export interface FrameSystemLimitsBlockWeights extends Struct {710  readonly baseBlock: u64;711  readonly maxBlock: u64;712  readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;713}714715/** @name FrameSystemLimitsWeightsPerClass */716export interface FrameSystemLimitsWeightsPerClass extends Struct {717  readonly baseExtrinsic: u64;718  readonly maxExtrinsic: Option<u64>;719  readonly maxTotal: Option<u64>;720  readonly reserved: Option<u64>;721}722723/** @name FrameSystemPhase */724export interface FrameSystemPhase extends Enum {725  readonly isApplyExtrinsic: boolean;726  readonly asApplyExtrinsic: u32;727  readonly isFinalization: boolean;728  readonly isInitialization: boolean;729  readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';730}731732/** @name OpalRuntimeOriginCaller */733export interface OpalRuntimeOriginCaller extends Enum {734  readonly isSystem: boolean;735  readonly asSystem: FrameSupportDispatchRawOrigin;736  readonly isVoid: boolean;737  readonly asVoid: SpCoreVoid;738  readonly isPolkadotXcm: boolean;739  readonly asPolkadotXcm: PalletXcmOrigin;740  readonly isCumulusXcm: boolean;741  readonly asCumulusXcm: CumulusPalletXcmOrigin;742  readonly isEthereum: boolean;743  readonly asEthereum: PalletEthereumRawOrigin;744  readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';745}746747/** @name OpalRuntimeRuntime */748export interface OpalRuntimeRuntime extends Null {}749750/** @name OrmlVestingModuleCall */751export interface OrmlVestingModuleCall extends Enum {752  readonly isClaim: boolean;753  readonly isVestedTransfer: boolean;754  readonly asVestedTransfer: {755    readonly dest: MultiAddress;756    readonly schedule: OrmlVestingVestingSchedule;757  } & Struct;758  readonly isUpdateVestingSchedules: boolean;759  readonly asUpdateVestingSchedules: {760    readonly who: MultiAddress;761    readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;762  } & Struct;763  readonly isClaimFor: boolean;764  readonly asClaimFor: {765    readonly dest: MultiAddress;766  } & Struct;767  readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';768}769770/** @name OrmlVestingModuleError */771export interface OrmlVestingModuleError extends Enum {772  readonly isZeroVestingPeriod: boolean;773  readonly isZeroVestingPeriodCount: boolean;774  readonly isInsufficientBalanceToLock: boolean;775  readonly isTooManyVestingSchedules: boolean;776  readonly isAmountLow: boolean;777  readonly isMaxVestingSchedulesExceeded: boolean;778  readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';779}780781/** @name OrmlVestingModuleEvent */782export interface OrmlVestingModuleEvent extends Enum {783  readonly isVestingScheduleAdded: boolean;784  readonly asVestingScheduleAdded: {785    readonly from: AccountId32;786    readonly to: AccountId32;787    readonly vestingSchedule: OrmlVestingVestingSchedule;788  } & Struct;789  readonly isClaimed: boolean;790  readonly asClaimed: {791    readonly who: AccountId32;792    readonly amount: u128;793  } & Struct;794  readonly isVestingSchedulesUpdated: boolean;795  readonly asVestingSchedulesUpdated: {796    readonly who: AccountId32;797  } & Struct;798  readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';799}800801/** @name OrmlVestingVestingSchedule */802export interface OrmlVestingVestingSchedule extends Struct {803  readonly start: u32;804  readonly period: u32;805  readonly periodCount: u32;806  readonly perPeriod: Compact<u128>;807}808809/** @name PalletBalancesAccountData */810export interface PalletBalancesAccountData extends Struct {811  readonly free: u128;812  readonly reserved: u128;813  readonly miscFrozen: u128;814  readonly feeFrozen: u128;815}816817/** @name PalletBalancesBalanceLock */818export interface PalletBalancesBalanceLock extends Struct {819  readonly id: U8aFixed;820  readonly amount: u128;821  readonly reasons: PalletBalancesReasons;822}823824/** @name PalletBalancesCall */825export interface PalletBalancesCall extends Enum {826  readonly isTransfer: boolean;827  readonly asTransfer: {828    readonly dest: MultiAddress;829    readonly value: Compact<u128>;830  } & Struct;831  readonly isSetBalance: boolean;832  readonly asSetBalance: {833    readonly who: MultiAddress;834    readonly newFree: Compact<u128>;835    readonly newReserved: Compact<u128>;836  } & Struct;837  readonly isForceTransfer: boolean;838  readonly asForceTransfer: {839    readonly source: MultiAddress;840    readonly dest: MultiAddress;841    readonly value: Compact<u128>;842  } & Struct;843  readonly isTransferKeepAlive: boolean;844  readonly asTransferKeepAlive: {845    readonly dest: MultiAddress;846    readonly value: Compact<u128>;847  } & Struct;848  readonly isTransferAll: boolean;849  readonly asTransferAll: {850    readonly dest: MultiAddress;851    readonly keepAlive: bool;852  } & Struct;853  readonly isForceUnreserve: boolean;854  readonly asForceUnreserve: {855    readonly who: MultiAddress;856    readonly amount: u128;857  } & Struct;858  readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';859}860861/** @name PalletBalancesError */862export interface PalletBalancesError extends Enum {863  readonly isVestingBalance: boolean;864  readonly isLiquidityRestrictions: boolean;865  readonly isInsufficientBalance: boolean;866  readonly isExistentialDeposit: boolean;867  readonly isKeepAlive: boolean;868  readonly isExistingVestingSchedule: boolean;869  readonly isDeadAccount: boolean;870  readonly isTooManyReserves: boolean;871  readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';872}873874/** @name PalletBalancesEvent */875export interface PalletBalancesEvent extends Enum {876  readonly isEndowed: boolean;877  readonly asEndowed: {878    readonly account: AccountId32;879    readonly freeBalance: u128;880  } & Struct;881  readonly isDustLost: boolean;882  readonly asDustLost: {883    readonly account: AccountId32;884    readonly amount: u128;885  } & Struct;886  readonly isTransfer: boolean;887  readonly asTransfer: {888    readonly from: AccountId32;889    readonly to: AccountId32;890    readonly amount: u128;891  } & Struct;892  readonly isBalanceSet: boolean;893  readonly asBalanceSet: {894    readonly who: AccountId32;895    readonly free: u128;896    readonly reserved: u128;897  } & Struct;898  readonly isReserved: boolean;899  readonly asReserved: {900    readonly who: AccountId32;901    readonly amount: u128;902  } & Struct;903  readonly isUnreserved: boolean;904  readonly asUnreserved: {905    readonly who: AccountId32;906    readonly amount: u128;907  } & Struct;908  readonly isReserveRepatriated: boolean;909  readonly asReserveRepatriated: {910    readonly from: AccountId32;911    readonly to: AccountId32;912    readonly amount: u128;913    readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;914  } & Struct;915  readonly isDeposit: boolean;916  readonly asDeposit: {917    readonly who: AccountId32;918    readonly amount: u128;919  } & Struct;920  readonly isWithdraw: boolean;921  readonly asWithdraw: {922    readonly who: AccountId32;923    readonly amount: u128;924  } & Struct;925  readonly isSlashed: boolean;926  readonly asSlashed: {927    readonly who: AccountId32;928    readonly amount: u128;929  } & Struct;930  readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';931}932933/** @name PalletBalancesReasons */934export interface PalletBalancesReasons extends Enum {935  readonly isFee: boolean;936  readonly isMisc: boolean;937  readonly isAll: boolean;938  readonly type: 'Fee' | 'Misc' | 'All';939}940941/** @name PalletBalancesReleases */942export interface PalletBalancesReleases extends Enum {943  readonly isV100: boolean;944  readonly isV200: boolean;945  readonly type: 'V100' | 'V200';946}947948/** @name PalletBalancesReserveData */949export interface PalletBalancesReserveData extends Struct {950  readonly id: U8aFixed;951  readonly amount: u128;952}953954/** @name PalletCommonError */955export interface PalletCommonError extends Enum {956  readonly isCollectionNotFound: boolean;957  readonly isMustBeTokenOwner: boolean;958  readonly isNoPermission: boolean;959  readonly isCantDestroyNotEmptyCollection: boolean;960  readonly isPublicMintingNotAllowed: boolean;961  readonly isAddressNotInAllowlist: boolean;962  readonly isCollectionNameLimitExceeded: boolean;963  readonly isCollectionDescriptionLimitExceeded: boolean;964  readonly isCollectionTokenPrefixLimitExceeded: boolean;965  readonly isTotalCollectionsLimitExceeded: boolean;966  readonly isCollectionAdminCountExceeded: boolean;967  readonly isCollectionLimitBoundsExceeded: boolean;968  readonly isOwnerPermissionsCantBeReverted: boolean;969  readonly isTransferNotAllowed: boolean;970  readonly isAccountTokenLimitExceeded: boolean;971  readonly isCollectionTokenLimitExceeded: boolean;972  readonly isMetadataFlagFrozen: boolean;973  readonly isTokenNotFound: boolean;974  readonly isTokenValueTooLow: boolean;975  readonly isApprovedValueTooLow: boolean;976  readonly isCantApproveMoreThanOwned: boolean;977  readonly isAddressIsZero: boolean;978  readonly isUnsupportedOperation: boolean;979  readonly isNotSufficientFounds: boolean;980  readonly isUserIsNotAllowedToNest: boolean;981  readonly isSourceCollectionIsNotAllowedToNest: boolean;982  readonly isCollectionFieldSizeExceeded: boolean;983  readonly isNoSpaceForProperty: boolean;984  readonly isPropertyLimitReached: boolean;985  readonly isPropertyKeyIsTooLong: boolean;986  readonly isInvalidCharacterInPropertyKey: boolean;987  readonly isEmptyPropertyKey: boolean;988  readonly isCollectionIsExternal: boolean;989  readonly isCollectionIsInternal: boolean;990  readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';991}992993/** @name PalletCommonEvent */994export interface PalletCommonEvent extends Enum {995  readonly isCollectionCreated: boolean;996  readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;997  readonly isCollectionDestroyed: boolean;998  readonly asCollectionDestroyed: u32;999  readonly isItemCreated: boolean;1000  readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1001  readonly isItemDestroyed: boolean;1002  readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1003  readonly isTransfer: boolean;1004  readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1005  readonly isApproved: boolean;1006  readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1007  readonly isCollectionPropertySet: boolean;1008  readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;1009  readonly isCollectionPropertyDeleted: boolean;1010  readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;1011  readonly isTokenPropertySet: boolean;1012  readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;1013  readonly isTokenPropertyDeleted: boolean;1014  readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;1015  readonly isPropertyPermissionSet: boolean;1016  readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;1017  readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';1018}10191020/** @name PalletConfigurationCall */1021export interface PalletConfigurationCall extends Enum {1022  readonly isSetWeightToFeeCoefficientOverride: boolean;1023  readonly asSetWeightToFeeCoefficientOverride: {1024    readonly coeff: Option<u32>;1025  } & Struct;1026  readonly isSetMinGasPriceOverride: boolean;1027  readonly asSetMinGasPriceOverride: {1028    readonly coeff: Option<u64>;1029  } & Struct;1030  readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride';1031}10321033/** @name PalletEthereumCall */1034export interface PalletEthereumCall extends Enum {1035  readonly isTransact: boolean;1036  readonly asTransact: {1037    readonly transaction: EthereumTransactionTransactionV2;1038  } & Struct;1039  readonly type: 'Transact';1040}10411042/** @name PalletEthereumError */1043export interface PalletEthereumError extends Enum {1044  readonly isInvalidSignature: boolean;1045  readonly isPreLogExists: boolean;1046  readonly type: 'InvalidSignature' | 'PreLogExists';1047}10481049/** @name PalletEthereumEvent */1050export interface PalletEthereumEvent extends Enum {1051  readonly isExecuted: boolean;1052  readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;1053  readonly type: 'Executed';1054}10551056/** @name PalletEthereumFakeTransactionFinalizer */1057export interface PalletEthereumFakeTransactionFinalizer extends Null {}10581059/** @name PalletEthereumRawOrigin */1060export interface PalletEthereumRawOrigin extends Enum {1061  readonly isEthereumTransaction: boolean;1062  readonly asEthereumTransaction: H160;1063  readonly type: 'EthereumTransaction';1064}10651066/** @name PalletEvmAccountBasicCrossAccountIdRepr */1067export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1068  readonly isSubstrate: boolean;1069  readonly asSubstrate: AccountId32;1070  readonly isEthereum: boolean;1071  readonly asEthereum: H160;1072  readonly type: 'Substrate' | 'Ethereum';1073}10741075/** @name PalletEvmCall */1076export interface PalletEvmCall extends Enum {1077  readonly isWithdraw: boolean;1078  readonly asWithdraw: {1079    readonly address: H160;1080    readonly value: u128;1081  } & Struct;1082  readonly isCall: boolean;1083  readonly asCall: {1084    readonly source: H160;1085    readonly target: H160;1086    readonly input: Bytes;1087    readonly value: U256;1088    readonly gasLimit: u64;1089    readonly maxFeePerGas: U256;1090    readonly maxPriorityFeePerGas: Option<U256>;1091    readonly nonce: Option<U256>;1092    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1093  } & Struct;1094  readonly isCreate: boolean;1095  readonly asCreate: {1096    readonly source: H160;1097    readonly init: Bytes;1098    readonly value: U256;1099    readonly gasLimit: u64;1100    readonly maxFeePerGas: U256;1101    readonly maxPriorityFeePerGas: Option<U256>;1102    readonly nonce: Option<U256>;1103    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1104  } & Struct;1105  readonly isCreate2: boolean;1106  readonly asCreate2: {1107    readonly source: H160;1108    readonly init: Bytes;1109    readonly salt: H256;1110    readonly value: U256;1111    readonly gasLimit: u64;1112    readonly maxFeePerGas: U256;1113    readonly maxPriorityFeePerGas: Option<U256>;1114    readonly nonce: Option<U256>;1115    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1116  } & Struct;1117  readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1118}11191120/** @name PalletEvmCoderSubstrateError */1121export interface PalletEvmCoderSubstrateError extends Enum {1122  readonly isOutOfGas: boolean;1123  readonly isOutOfFund: boolean;1124  readonly type: 'OutOfGas' | 'OutOfFund';1125}11261127/** @name PalletEvmContractHelpersError */1128export interface PalletEvmContractHelpersError extends Enum {1129  readonly isNoPermission: boolean;1130  readonly type: 'NoPermission';1131}11321133/** @name PalletEvmContractHelpersSponsoringModeT */1134export interface PalletEvmContractHelpersSponsoringModeT extends Enum {1135  readonly isDisabled: boolean;1136  readonly isAllowlisted: boolean;1137  readonly isGenerous: boolean;1138  readonly type: 'Disabled' | 'Allowlisted' | 'Generous';1139}11401141/** @name PalletEvmError */1142export interface PalletEvmError extends Enum {1143  readonly isBalanceLow: boolean;1144  readonly isFeeOverflow: boolean;1145  readonly isPaymentOverflow: boolean;1146  readonly isWithdrawFailed: boolean;1147  readonly isGasPriceTooLow: boolean;1148  readonly isInvalidNonce: boolean;1149  readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';1150}11511152/** @name PalletEvmEvent */1153export interface PalletEvmEvent extends Enum {1154  readonly isLog: boolean;1155  readonly asLog: EthereumLog;1156  readonly isCreated: boolean;1157  readonly asCreated: H160;1158  readonly isCreatedFailed: boolean;1159  readonly asCreatedFailed: H160;1160  readonly isExecuted: boolean;1161  readonly asExecuted: H160;1162  readonly isExecutedFailed: boolean;1163  readonly asExecutedFailed: H160;1164  readonly isBalanceDeposit: boolean;1165  readonly asBalanceDeposit: ITuple<[AccountId32, H160, U256]>;1166  readonly isBalanceWithdraw: boolean;1167  readonly asBalanceWithdraw: ITuple<[AccountId32, H160, U256]>;1168  readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';1169}11701171/** @name PalletEvmMigrationCall */1172export interface PalletEvmMigrationCall extends Enum {1173  readonly isBegin: boolean;1174  readonly asBegin: {1175    readonly address: H160;1176  } & Struct;1177  readonly isSetData: boolean;1178  readonly asSetData: {1179    readonly address: H160;1180    readonly data: Vec<ITuple<[H256, H256]>>;1181  } & Struct;1182  readonly isFinish: boolean;1183  readonly asFinish: {1184    readonly address: H160;1185    readonly code: Bytes;1186  } & Struct;1187  readonly type: 'Begin' | 'SetData' | 'Finish';1188}11891190/** @name PalletEvmMigrationError */1191export interface PalletEvmMigrationError extends Enum {1192  readonly isAccountNotEmpty: boolean;1193  readonly isAccountIsNotMigrating: boolean;1194  readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';1195}11961197/** @name PalletFungibleError */1198export interface PalletFungibleError extends Enum {1199  readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;1200  readonly isFungibleItemsHaveNoId: boolean;1201  readonly isFungibleItemsDontHaveData: boolean;1202  readonly isFungibleDisallowsNesting: boolean;1203  readonly isSettingPropertiesNotAllowed: boolean;1204  readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1205}12061207/** @name PalletInflationCall */1208export interface PalletInflationCall extends Enum {1209  readonly isStartInflation: boolean;1210  readonly asStartInflation: {1211    readonly inflationStartRelayBlock: u32;1212  } & Struct;1213  readonly type: 'StartInflation';1214}12151216/** @name PalletNonfungibleError */1217export interface PalletNonfungibleError extends Enum {1218  readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;1219  readonly isNonfungibleItemsHaveNoAmount: boolean;1220  readonly isCantBurnNftWithChildren: boolean;1221  readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';1222}12231224/** @name PalletNonfungibleItemData */1225export interface PalletNonfungibleItemData extends Struct {1226  readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1227}12281229/** @name PalletRefungibleError */1230export interface PalletRefungibleError extends Enum {1231  readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;1232  readonly isWrongRefungiblePieces: boolean;1233  readonly isRepartitionWhileNotOwningAllPieces: boolean;1234  readonly isRefungibleDisallowsNesting: boolean;1235  readonly isSettingPropertiesNotAllowed: boolean;1236  readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1237}12381239/** @name PalletRefungibleItemData */1240export interface PalletRefungibleItemData extends Struct {1241  readonly constData: Bytes;1242}12431244/** @name PalletRmrkCoreCall */1245export interface PalletRmrkCoreCall extends Enum {1246  readonly isCreateCollection: boolean;1247  readonly asCreateCollection: {1248    readonly metadata: Bytes;1249    readonly max: Option<u32>;1250    readonly symbol: Bytes;1251  } & Struct;1252  readonly isDestroyCollection: boolean;1253  readonly asDestroyCollection: {1254    readonly collectionId: u32;1255  } & Struct;1256  readonly isChangeCollectionIssuer: boolean;1257  readonly asChangeCollectionIssuer: {1258    readonly collectionId: u32;1259    readonly newIssuer: MultiAddress;1260  } & Struct;1261  readonly isLockCollection: boolean;1262  readonly asLockCollection: {1263    readonly collectionId: u32;1264  } & Struct;1265  readonly isMintNft: boolean;1266  readonly asMintNft: {1267    readonly owner: Option<AccountId32>;1268    readonly collectionId: u32;1269    readonly recipient: Option<AccountId32>;1270    readonly royaltyAmount: Option<Permill>;1271    readonly metadata: Bytes;1272    readonly transferable: bool;1273    readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;1274  } & Struct;1275  readonly isBurnNft: boolean;1276  readonly asBurnNft: {1277    readonly collectionId: u32;1278    readonly nftId: u32;1279    readonly maxBurns: u32;1280  } & Struct;1281  readonly isSend: boolean;1282  readonly asSend: {1283    readonly rmrkCollectionId: u32;1284    readonly rmrkNftId: u32;1285    readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1286  } & Struct;1287  readonly isAcceptNft: boolean;1288  readonly asAcceptNft: {1289    readonly rmrkCollectionId: u32;1290    readonly rmrkNftId: u32;1291    readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1292  } & Struct;1293  readonly isRejectNft: boolean;1294  readonly asRejectNft: {1295    readonly rmrkCollectionId: u32;1296    readonly rmrkNftId: u32;1297  } & Struct;1298  readonly isAcceptResource: boolean;1299  readonly asAcceptResource: {1300    readonly rmrkCollectionId: u32;1301    readonly rmrkNftId: u32;1302    readonly resourceId: u32;1303  } & Struct;1304  readonly isAcceptResourceRemoval: boolean;1305  readonly asAcceptResourceRemoval: {1306    readonly rmrkCollectionId: u32;1307    readonly rmrkNftId: u32;1308    readonly resourceId: u32;1309  } & Struct;1310  readonly isSetProperty: boolean;1311  readonly asSetProperty: {1312    readonly rmrkCollectionId: Compact<u32>;1313    readonly maybeNftId: Option<u32>;1314    readonly key: Bytes;1315    readonly value: Bytes;1316  } & Struct;1317  readonly isSetPriority: boolean;1318  readonly asSetPriority: {1319    readonly rmrkCollectionId: u32;1320    readonly rmrkNftId: u32;1321    readonly priorities: Vec<u32>;1322  } & Struct;1323  readonly isAddBasicResource: boolean;1324  readonly asAddBasicResource: {1325    readonly rmrkCollectionId: u32;1326    readonly nftId: u32;1327    readonly resource: RmrkTraitsResourceBasicResource;1328  } & Struct;1329  readonly isAddComposableResource: boolean;1330  readonly asAddComposableResource: {1331    readonly rmrkCollectionId: u32;1332    readonly nftId: u32;1333    readonly resource: RmrkTraitsResourceComposableResource;1334  } & Struct;1335  readonly isAddSlotResource: boolean;1336  readonly asAddSlotResource: {1337    readonly rmrkCollectionId: u32;1338    readonly nftId: u32;1339    readonly resource: RmrkTraitsResourceSlotResource;1340  } & Struct;1341  readonly isRemoveResource: boolean;1342  readonly asRemoveResource: {1343    readonly rmrkCollectionId: u32;1344    readonly nftId: u32;1345    readonly resourceId: u32;1346  } & Struct;1347  readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1348}13491350/** @name PalletRmrkCoreError */1351export interface PalletRmrkCoreError extends Enum {1352  readonly isCorruptedCollectionType: boolean;1353  readonly isRmrkPropertyKeyIsTooLong: boolean;1354  readonly isRmrkPropertyValueIsTooLong: boolean;1355  readonly isRmrkPropertyIsNotFound: boolean;1356  readonly isUnableToDecodeRmrkData: boolean;1357  readonly isCollectionNotEmpty: boolean;1358  readonly isNoAvailableCollectionId: boolean;1359  readonly isNoAvailableNftId: boolean;1360  readonly isCollectionUnknown: boolean;1361  readonly isNoPermission: boolean;1362  readonly isNonTransferable: boolean;1363  readonly isCollectionFullOrLocked: boolean;1364  readonly isResourceDoesntExist: boolean;1365  readonly isCannotSendToDescendentOrSelf: boolean;1366  readonly isCannotAcceptNonOwnedNft: boolean;1367  readonly isCannotRejectNonOwnedNft: boolean;1368  readonly isCannotRejectNonPendingNft: boolean;1369  readonly isResourceNotPending: boolean;1370  readonly isNoAvailableResourceId: boolean;1371  readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';1372}13731374/** @name PalletRmrkCoreEvent */1375export interface PalletRmrkCoreEvent extends Enum {1376  readonly isCollectionCreated: boolean;1377  readonly asCollectionCreated: {1378    readonly issuer: AccountId32;1379    readonly collectionId: u32;1380  } & Struct;1381  readonly isCollectionDestroyed: boolean;1382  readonly asCollectionDestroyed: {1383    readonly issuer: AccountId32;1384    readonly collectionId: u32;1385  } & Struct;1386  readonly isIssuerChanged: boolean;1387  readonly asIssuerChanged: {1388    readonly oldIssuer: AccountId32;1389    readonly newIssuer: AccountId32;1390    readonly collectionId: u32;1391  } & Struct;1392  readonly isCollectionLocked: boolean;1393  readonly asCollectionLocked: {1394    readonly issuer: AccountId32;1395    readonly collectionId: u32;1396  } & Struct;1397  readonly isNftMinted: boolean;1398  readonly asNftMinted: {1399    readonly owner: AccountId32;1400    readonly collectionId: u32;1401    readonly nftId: u32;1402  } & Struct;1403  readonly isNftBurned: boolean;1404  readonly asNftBurned: {1405    readonly owner: AccountId32;1406    readonly nftId: u32;1407  } & Struct;1408  readonly isNftSent: boolean;1409  readonly asNftSent: {1410    readonly sender: AccountId32;1411    readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1412    readonly collectionId: u32;1413    readonly nftId: u32;1414    readonly approvalRequired: bool;1415  } & Struct;1416  readonly isNftAccepted: boolean;1417  readonly asNftAccepted: {1418    readonly sender: AccountId32;1419    readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1420    readonly collectionId: u32;1421    readonly nftId: u32;1422  } & Struct;1423  readonly isNftRejected: boolean;1424  readonly asNftRejected: {1425    readonly sender: AccountId32;1426    readonly collectionId: u32;1427    readonly nftId: u32;1428  } & Struct;1429  readonly isPropertySet: boolean;1430  readonly asPropertySet: {1431    readonly collectionId: u32;1432    readonly maybeNftId: Option<u32>;1433    readonly key: Bytes;1434    readonly value: Bytes;1435  } & Struct;1436  readonly isResourceAdded: boolean;1437  readonly asResourceAdded: {1438    readonly nftId: u32;1439    readonly resourceId: u32;1440  } & Struct;1441  readonly isResourceRemoval: boolean;1442  readonly asResourceRemoval: {1443    readonly nftId: u32;1444    readonly resourceId: u32;1445  } & Struct;1446  readonly isResourceAccepted: boolean;1447  readonly asResourceAccepted: {1448    readonly nftId: u32;1449    readonly resourceId: u32;1450  } & Struct;1451  readonly isResourceRemovalAccepted: boolean;1452  readonly asResourceRemovalAccepted: {1453    readonly nftId: u32;1454    readonly resourceId: u32;1455  } & Struct;1456  readonly isPrioritySet: boolean;1457  readonly asPrioritySet: {1458    readonly collectionId: u32;1459    readonly nftId: u32;1460  } & Struct;1461  readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';1462}14631464/** @name PalletRmrkEquipCall */1465export interface PalletRmrkEquipCall extends Enum {1466  readonly isCreateBase: boolean;1467  readonly asCreateBase: {1468    readonly baseType: Bytes;1469    readonly symbol: Bytes;1470    readonly parts: Vec<RmrkTraitsPartPartType>;1471  } & Struct;1472  readonly isThemeAdd: boolean;1473  readonly asThemeAdd: {1474    readonly baseId: u32;1475    readonly theme: RmrkTraitsTheme;1476  } & Struct;1477  readonly isEquippable: boolean;1478  readonly asEquippable: {1479    readonly baseId: u32;1480    readonly slotId: u32;1481    readonly equippables: RmrkTraitsPartEquippableList;1482  } & Struct;1483  readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';1484}14851486/** @name PalletRmrkEquipError */1487export interface PalletRmrkEquipError extends Enum {1488  readonly isPermissionError: boolean;1489  readonly isNoAvailableBaseId: boolean;1490  readonly isNoAvailablePartId: boolean;1491  readonly isBaseDoesntExist: boolean;1492  readonly isNeedsDefaultThemeFirst: boolean;1493  readonly isPartDoesntExist: boolean;1494  readonly isNoEquippableOnFixedPart: boolean;1495  readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';1496}14971498/** @name PalletRmrkEquipEvent */1499export interface PalletRmrkEquipEvent extends Enum {1500  readonly isBaseCreated: boolean;1501  readonly asBaseCreated: {1502    readonly issuer: AccountId32;1503    readonly baseId: u32;1504  } & Struct;1505  readonly isEquippablesUpdated: boolean;1506  readonly asEquippablesUpdated: {1507    readonly baseId: u32;1508    readonly slotId: u32;1509  } & Struct;1510  readonly type: 'BaseCreated' | 'EquippablesUpdated';1511}15121513/** @name PalletStructureCall */1514export interface PalletStructureCall extends Null {}15151516/** @name PalletStructureError */1517export interface PalletStructureError extends Enum {1518  readonly isOuroborosDetected: boolean;1519  readonly isDepthLimit: boolean;1520  readonly isBreadthLimit: boolean;1521  readonly isTokenNotFound: boolean;1522  readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';1523}15241525/** @name PalletStructureEvent */1526export interface PalletStructureEvent extends Enum {1527  readonly isExecuted: boolean;1528  readonly asExecuted: Result<Null, SpRuntimeDispatchError>;1529  readonly type: 'Executed';1530}15311532/** @name PalletSudoCall */1533export interface PalletSudoCall extends Enum {1534  readonly isSudo: boolean;1535  readonly asSudo: {1536    readonly call: Call;1537  } & Struct;1538  readonly isSudoUncheckedWeight: boolean;1539  readonly asSudoUncheckedWeight: {1540    readonly call: Call;1541    readonly weight: u64;1542  } & Struct;1543  readonly isSetKey: boolean;1544  readonly asSetKey: {1545    readonly new_: MultiAddress;1546  } & Struct;1547  readonly isSudoAs: boolean;1548  readonly asSudoAs: {1549    readonly who: MultiAddress;1550    readonly call: Call;1551  } & Struct;1552  readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';1553}15541555/** @name PalletSudoError */1556export interface PalletSudoError extends Enum {1557  readonly isRequireSudo: boolean;1558  readonly type: 'RequireSudo';1559}15601561/** @name PalletSudoEvent */1562export interface PalletSudoEvent extends Enum {1563  readonly isSudid: boolean;1564  readonly asSudid: {1565    readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1566  } & Struct;1567  readonly isKeyChanged: boolean;1568  readonly asKeyChanged: {1569    readonly oldSudoer: Option<AccountId32>;1570  } & Struct;1571  readonly isSudoAsDone: boolean;1572  readonly asSudoAsDone: {1573    readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1574  } & Struct;1575  readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1576}15771578/** @name PalletTemplateTransactionPaymentCall */1579export interface PalletTemplateTransactionPaymentCall extends Null {}15801581/** @name PalletTemplateTransactionPaymentChargeTransactionPayment */1582export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}15831584/** @name PalletTimestampCall */1585export interface PalletTimestampCall extends Enum {1586  readonly isSet: boolean;1587  readonly asSet: {1588    readonly now: Compact<u64>;1589  } & Struct;1590  readonly type: 'Set';1591}15921593/** @name PalletTransactionPaymentEvent */1594export interface PalletTransactionPaymentEvent extends Enum {1595  readonly isTransactionFeePaid: boolean;1596  readonly asTransactionFeePaid: {1597    readonly who: AccountId32;1598    readonly actualFee: u128;1599    readonly tip: u128;1600  } & Struct;1601  readonly type: 'TransactionFeePaid';1602}16031604/** @name PalletTransactionPaymentReleases */1605export interface PalletTransactionPaymentReleases extends Enum {1606  readonly isV1Ancient: boolean;1607  readonly isV2: boolean;1608  readonly type: 'V1Ancient' | 'V2';1609}16101611/** @name PalletTreasuryCall */1612export interface PalletTreasuryCall extends Enum {1613  readonly isProposeSpend: boolean;1614  readonly asProposeSpend: {1615    readonly value: Compact<u128>;1616    readonly beneficiary: MultiAddress;1617  } & Struct;1618  readonly isRejectProposal: boolean;1619  readonly asRejectProposal: {1620    readonly proposalId: Compact<u32>;1621  } & Struct;1622  readonly isApproveProposal: boolean;1623  readonly asApproveProposal: {1624    readonly proposalId: Compact<u32>;1625  } & Struct;1626  readonly isSpend: boolean;1627  readonly asSpend: {1628    readonly amount: Compact<u128>;1629    readonly beneficiary: MultiAddress;1630  } & Struct;1631  readonly isRemoveApproval: boolean;1632  readonly asRemoveApproval: {1633    readonly proposalId: Compact<u32>;1634  } & Struct;1635  readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';1636}16371638/** @name PalletTreasuryError */1639export interface PalletTreasuryError extends Enum {1640  readonly isInsufficientProposersBalance: boolean;1641  readonly isInvalidIndex: boolean;1642  readonly isTooManyApprovals: boolean;1643  readonly isInsufficientPermission: boolean;1644  readonly isProposalNotApproved: boolean;1645  readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';1646}16471648/** @name PalletTreasuryEvent */1649export interface PalletTreasuryEvent extends Enum {1650  readonly isProposed: boolean;1651  readonly asProposed: {1652    readonly proposalIndex: u32;1653  } & Struct;1654  readonly isSpending: boolean;1655  readonly asSpending: {1656    readonly budgetRemaining: u128;1657  } & Struct;1658  readonly isAwarded: boolean;1659  readonly asAwarded: {1660    readonly proposalIndex: u32;1661    readonly award: u128;1662    readonly account: AccountId32;1663  } & Struct;1664  readonly isRejected: boolean;1665  readonly asRejected: {1666    readonly proposalIndex: u32;1667    readonly slashed: u128;1668  } & Struct;1669  readonly isBurnt: boolean;1670  readonly asBurnt: {1671    readonly burntFunds: u128;1672  } & Struct;1673  readonly isRollover: boolean;1674  readonly asRollover: {1675    readonly rolloverBalance: u128;1676  } & Struct;1677  readonly isDeposit: boolean;1678  readonly asDeposit: {1679    readonly value: u128;1680  } & Struct;1681  readonly isSpendApproved: boolean;1682  readonly asSpendApproved: {1683    readonly proposalIndex: u32;1684    readonly amount: u128;1685    readonly beneficiary: AccountId32;1686  } & Struct;1687  readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit' | 'SpendApproved';1688}16891690/** @name PalletTreasuryProposal */1691export interface PalletTreasuryProposal extends Struct {1692  readonly proposer: AccountId32;1693  readonly value: u128;1694  readonly beneficiary: AccountId32;1695  readonly bond: u128;1696}16971698/** @name PalletUniqueCall */1699export interface PalletUniqueCall extends Enum {1700  readonly isCreateCollection: boolean;1701  readonly asCreateCollection: {1702    readonly collectionName: Vec<u16>;1703    readonly collectionDescription: Vec<u16>;1704    readonly tokenPrefix: Bytes;1705    readonly mode: UpDataStructsCollectionMode;1706  } & Struct;1707  readonly isCreateCollectionEx: boolean;1708  readonly asCreateCollectionEx: {1709    readonly data: UpDataStructsCreateCollectionData;1710  } & Struct;1711  readonly isDestroyCollection: boolean;1712  readonly asDestroyCollection: {1713    readonly collectionId: u32;1714  } & Struct;1715  readonly isAddToAllowList: boolean;1716  readonly asAddToAllowList: {1717    readonly collectionId: u32;1718    readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1719  } & Struct;1720  readonly isRemoveFromAllowList: boolean;1721  readonly asRemoveFromAllowList: {1722    readonly collectionId: u32;1723    readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1724  } & Struct;1725  readonly isChangeCollectionOwner: boolean;1726  readonly asChangeCollectionOwner: {1727    readonly collectionId: u32;1728    readonly newOwner: AccountId32;1729  } & Struct;1730  readonly isAddCollectionAdmin: boolean;1731  readonly asAddCollectionAdmin: {1732    readonly collectionId: u32;1733    readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;1734  } & Struct;1735  readonly isRemoveCollectionAdmin: boolean;1736  readonly asRemoveCollectionAdmin: {1737    readonly collectionId: u32;1738    readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;1739  } & Struct;1740  readonly isSetCollectionSponsor: boolean;1741  readonly asSetCollectionSponsor: {1742    readonly collectionId: u32;1743    readonly newSponsor: AccountId32;1744  } & Struct;1745  readonly isConfirmSponsorship: boolean;1746  readonly asConfirmSponsorship: {1747    readonly collectionId: u32;1748  } & Struct;1749  readonly isRemoveCollectionSponsor: boolean;1750  readonly asRemoveCollectionSponsor: {1751    readonly collectionId: u32;1752  } & Struct;1753  readonly isCreateItem: boolean;1754  readonly asCreateItem: {1755    readonly collectionId: u32;1756    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1757    readonly data: UpDataStructsCreateItemData;1758  } & Struct;1759  readonly isCreateMultipleItems: boolean;1760  readonly asCreateMultipleItems: {1761    readonly collectionId: u32;1762    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1763    readonly itemsData: Vec<UpDataStructsCreateItemData>;1764  } & Struct;1765  readonly isSetCollectionProperties: boolean;1766  readonly asSetCollectionProperties: {1767    readonly collectionId: u32;1768    readonly properties: Vec<UpDataStructsProperty>;1769  } & Struct;1770  readonly isDeleteCollectionProperties: boolean;1771  readonly asDeleteCollectionProperties: {1772    readonly collectionId: u32;1773    readonly propertyKeys: Vec<Bytes>;1774  } & Struct;1775  readonly isSetTokenProperties: boolean;1776  readonly asSetTokenProperties: {1777    readonly collectionId: u32;1778    readonly tokenId: u32;1779    readonly properties: Vec<UpDataStructsProperty>;1780  } & Struct;1781  readonly isDeleteTokenProperties: boolean;1782  readonly asDeleteTokenProperties: {1783    readonly collectionId: u32;1784    readonly tokenId: u32;1785    readonly propertyKeys: Vec<Bytes>;1786  } & Struct;1787  readonly isSetTokenPropertyPermissions: boolean;1788  readonly asSetTokenPropertyPermissions: {1789    readonly collectionId: u32;1790    readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1791  } & Struct;1792  readonly isCreateMultipleItemsEx: boolean;1793  readonly asCreateMultipleItemsEx: {1794    readonly collectionId: u32;1795    readonly data: UpDataStructsCreateItemExData;1796  } & Struct;1797  readonly isSetTransfersEnabledFlag: boolean;1798  readonly asSetTransfersEnabledFlag: {1799    readonly collectionId: u32;1800    readonly value: bool;1801  } & Struct;1802  readonly isBurnItem: boolean;1803  readonly asBurnItem: {1804    readonly collectionId: u32;1805    readonly itemId: u32;1806    readonly value: u128;1807  } & Struct;1808  readonly isBurnFrom: boolean;1809  readonly asBurnFrom: {1810    readonly collectionId: u32;1811    readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1812    readonly itemId: u32;1813    readonly value: u128;1814  } & Struct;1815  readonly isTransfer: boolean;1816  readonly asTransfer: {1817    readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1818    readonly collectionId: u32;1819    readonly itemId: u32;1820    readonly value: u128;1821  } & Struct;1822  readonly isApprove: boolean;1823  readonly asApprove: {1824    readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;1825    readonly collectionId: u32;1826    readonly itemId: u32;1827    readonly amount: u128;1828  } & Struct;1829  readonly isTransferFrom: boolean;1830  readonly asTransferFrom: {1831    readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1832    readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1833    readonly collectionId: u32;1834    readonly itemId: u32;1835    readonly value: u128;1836  } & Struct;1837  readonly isSetCollectionLimits: boolean;1838  readonly asSetCollectionLimits: {1839    readonly collectionId: u32;1840    readonly newLimit: UpDataStructsCollectionLimits;1841  } & Struct;1842  readonly isSetCollectionPermissions: boolean;1843  readonly asSetCollectionPermissions: {1844    readonly collectionId: u32;1845    readonly newPermission: UpDataStructsCollectionPermissions;1846  } & Struct;1847  readonly isRepartition: boolean;1848  readonly asRepartition: {1849    readonly collectionId: u32;1850    readonly tokenId: u32;1851    readonly amount: u128;1852  } & Struct;1853  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition';1854}18551856/** @name PalletUniqueError */1857export interface PalletUniqueError extends Enum {1858  readonly isCollectionDecimalPointLimitExceeded: boolean;1859  readonly isConfirmUnsetSponsorFail: boolean;1860  readonly isEmptyArgument: boolean;1861  readonly isRepartitionCalledOnNonRefungibleCollection: boolean;1862  readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';1863}18641865/** @name PalletUniqueRawEvent */1866export interface PalletUniqueRawEvent extends Enum {1867  readonly isCollectionSponsorRemoved: boolean;1868  readonly asCollectionSponsorRemoved: u32;1869  readonly isCollectionAdminAdded: boolean;1870  readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1871  readonly isCollectionOwnedChanged: boolean;1872  readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;1873  readonly isCollectionSponsorSet: boolean;1874  readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;1875  readonly isSponsorshipConfirmed: boolean;1876  readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;1877  readonly isCollectionAdminRemoved: boolean;1878  readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1879  readonly isAllowListAddressRemoved: boolean;1880  readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1881  readonly isAllowListAddressAdded: boolean;1882  readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1883  readonly isCollectionLimitSet: boolean;1884  readonly asCollectionLimitSet: u32;1885  readonly isCollectionPermissionSet: boolean;1886  readonly asCollectionPermissionSet: u32;1887  readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1888}18891890/** @name PalletUniqueSchedulerCall */1891export interface PalletUniqueSchedulerCall extends Enum {1892  readonly isScheduleNamed: boolean;1893  readonly asScheduleNamed: {1894    readonly id: U8aFixed;1895    readonly when: u32;1896    readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1897    readonly priority: u8;1898    readonly call: FrameSupportScheduleMaybeHashed;1899  } & Struct;1900  readonly isCancelNamed: boolean;1901  readonly asCancelNamed: {1902    readonly id: U8aFixed;1903  } & Struct;1904  readonly isScheduleNamedAfter: boolean;1905  readonly asScheduleNamedAfter: {1906    readonly id: U8aFixed;1907    readonly after: u32;1908    readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1909    readonly priority: u8;1910    readonly call: FrameSupportScheduleMaybeHashed;1911  } & Struct;1912  readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1913}19141915/** @name PalletUniqueSchedulerError */1916export interface PalletUniqueSchedulerError extends Enum {1917  readonly isFailedToSchedule: boolean;1918  readonly isNotFound: boolean;1919  readonly isTargetBlockNumberInPast: boolean;1920  readonly isRescheduleNoChange: boolean;1921  readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';1922}19231924/** @name PalletUniqueSchedulerEvent */1925export interface PalletUniqueSchedulerEvent extends Enum {1926  readonly isScheduled: boolean;1927  readonly asScheduled: {1928    readonly when: u32;1929    readonly index: u32;1930  } & Struct;1931  readonly isCanceled: boolean;1932  readonly asCanceled: {1933    readonly when: u32;1934    readonly index: u32;1935  } & Struct;1936  readonly isDispatched: boolean;1937  readonly asDispatched: {1938    readonly task: ITuple<[u32, u32]>;1939    readonly id: Option<U8aFixed>;1940    readonly result: Result<Null, SpRuntimeDispatchError>;1941  } & Struct;1942  readonly isCallLookupFailed: boolean;1943  readonly asCallLookupFailed: {1944    readonly task: ITuple<[u32, u32]>;1945    readonly id: Option<U8aFixed>;1946    readonly error: FrameSupportScheduleLookupError;1947  } & Struct;1948  readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1949}19501951/** @name PalletUniqueSchedulerScheduledV3 */1952export interface PalletUniqueSchedulerScheduledV3 extends Struct {1953  readonly maybeId: Option<U8aFixed>;1954  readonly priority: u8;1955  readonly call: FrameSupportScheduleMaybeHashed;1956  readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1957  readonly origin: OpalRuntimeOriginCaller;1958}19591960/** @name PalletXcmCall */1961export interface PalletXcmCall extends Enum {1962  readonly isSend: boolean;1963  readonly asSend: {1964    readonly dest: XcmVersionedMultiLocation;1965    readonly message: XcmVersionedXcm;1966  } & Struct;1967  readonly isTeleportAssets: boolean;1968  readonly asTeleportAssets: {1969    readonly dest: XcmVersionedMultiLocation;1970    readonly beneficiary: XcmVersionedMultiLocation;1971    readonly assets: XcmVersionedMultiAssets;1972    readonly feeAssetItem: u32;1973  } & Struct;1974  readonly isReserveTransferAssets: boolean;1975  readonly asReserveTransferAssets: {1976    readonly dest: XcmVersionedMultiLocation;1977    readonly beneficiary: XcmVersionedMultiLocation;1978    readonly assets: XcmVersionedMultiAssets;1979    readonly feeAssetItem: u32;1980  } & Struct;1981  readonly isExecute: boolean;1982  readonly asExecute: {1983    readonly message: XcmVersionedXcm;1984    readonly maxWeight: u64;1985  } & Struct;1986  readonly isForceXcmVersion: boolean;1987  readonly asForceXcmVersion: {1988    readonly location: XcmV1MultiLocation;1989    readonly xcmVersion: u32;1990  } & Struct;1991  readonly isForceDefaultXcmVersion: boolean;1992  readonly asForceDefaultXcmVersion: {1993    readonly maybeXcmVersion: Option<u32>;1994  } & Struct;1995  readonly isForceSubscribeVersionNotify: boolean;1996  readonly asForceSubscribeVersionNotify: {1997    readonly location: XcmVersionedMultiLocation;1998  } & Struct;1999  readonly isForceUnsubscribeVersionNotify: boolean;2000  readonly asForceUnsubscribeVersionNotify: {2001    readonly location: XcmVersionedMultiLocation;2002  } & Struct;2003  readonly isLimitedReserveTransferAssets: boolean;2004  readonly asLimitedReserveTransferAssets: {2005    readonly dest: XcmVersionedMultiLocation;2006    readonly beneficiary: XcmVersionedMultiLocation;2007    readonly assets: XcmVersionedMultiAssets;2008    readonly feeAssetItem: u32;2009    readonly weightLimit: XcmV2WeightLimit;2010  } & Struct;2011  readonly isLimitedTeleportAssets: boolean;2012  readonly asLimitedTeleportAssets: {2013    readonly dest: XcmVersionedMultiLocation;2014    readonly beneficiary: XcmVersionedMultiLocation;2015    readonly assets: XcmVersionedMultiAssets;2016    readonly feeAssetItem: u32;2017    readonly weightLimit: XcmV2WeightLimit;2018  } & Struct;2019  readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';2020}20212022/** @name PalletXcmError */2023export interface PalletXcmError extends Enum {2024  readonly isUnreachable: boolean;2025  readonly isSendFailure: boolean;2026  readonly isFiltered: boolean;2027  readonly isUnweighableMessage: boolean;2028  readonly isDestinationNotInvertible: boolean;2029  readonly isEmpty: boolean;2030  readonly isCannotReanchor: boolean;2031  readonly isTooManyAssets: boolean;2032  readonly isInvalidOrigin: boolean;2033  readonly isBadVersion: boolean;2034  readonly isBadLocation: boolean;2035  readonly isNoSubscription: boolean;2036  readonly isAlreadySubscribed: boolean;2037  readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2038}20392040/** @name PalletXcmEvent */2041export interface PalletXcmEvent extends Enum {2042  readonly isAttempted: boolean;2043  readonly asAttempted: XcmV2TraitsOutcome;2044  readonly isSent: boolean;2045  readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;2046  readonly isUnexpectedResponse: boolean;2047  readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;2048  readonly isResponseReady: boolean;2049  readonly asResponseReady: ITuple<[u64, XcmV2Response]>;2050  readonly isNotified: boolean;2051  readonly asNotified: ITuple<[u64, u8, u8]>;2052  readonly isNotifyOverweight: boolean;2053  readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;2054  readonly isNotifyDispatchError: boolean;2055  readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;2056  readonly isNotifyDecodeFailed: boolean;2057  readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;2058  readonly isInvalidResponder: boolean;2059  readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;2060  readonly isInvalidResponderVersion: boolean;2061  readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;2062  readonly isResponseTaken: boolean;2063  readonly asResponseTaken: u64;2064  readonly isAssetsTrapped: boolean;2065  readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;2066  readonly isVersionChangeNotified: boolean;2067  readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;2068  readonly isSupportedVersionChanged: boolean;2069  readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;2070  readonly isNotifyTargetSendFail: boolean;2071  readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;2072  readonly isNotifyTargetMigrationFail: boolean;2073  readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;2074  readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2075}20762077/** @name PalletXcmOrigin */2078export interface PalletXcmOrigin extends Enum {2079  readonly isXcm: boolean;2080  readonly asXcm: XcmV1MultiLocation;2081  readonly isResponse: boolean;2082  readonly asResponse: XcmV1MultiLocation;2083  readonly type: 'Xcm' | 'Response';2084}20852086/** @name PhantomTypeUpDataStructs */2087export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}20882089/** @name PolkadotCorePrimitivesInboundDownwardMessage */2090export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {2091  readonly sentAt: u32;2092  readonly msg: Bytes;2093}20942095/** @name PolkadotCorePrimitivesInboundHrmpMessage */2096export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {2097  readonly sentAt: u32;2098  readonly data: Bytes;2099}21002101/** @name PolkadotCorePrimitivesOutboundHrmpMessage */2102export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {2103  readonly recipient: u32;2104  readonly data: Bytes;2105}21062107/** @name PolkadotParachainPrimitivesXcmpMessageFormat */2108export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2109  readonly isConcatenatedVersionedXcm: boolean;2110  readonly isConcatenatedEncodedBlob: boolean;2111  readonly isSignals: boolean;2112  readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2113}21142115/** @name PolkadotPrimitivesV2AbridgedHostConfiguration */2116export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {2117  readonly maxCodeSize: u32;2118  readonly maxHeadDataSize: u32;2119  readonly maxUpwardQueueCount: u32;2120  readonly maxUpwardQueueSize: u32;2121  readonly maxUpwardMessageSize: u32;2122  readonly maxUpwardMessageNumPerCandidate: u32;2123  readonly hrmpMaxMessageNumPerCandidate: u32;2124  readonly validationUpgradeCooldown: u32;2125  readonly validationUpgradeDelay: u32;2126}21272128/** @name PolkadotPrimitivesV2AbridgedHrmpChannel */2129export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {2130  readonly maxCapacity: u32;2131  readonly maxTotalSize: u32;2132  readonly maxMessageSize: u32;2133  readonly msgCount: u32;2134  readonly totalSize: u32;2135  readonly mqcHead: Option<H256>;2136}21372138/** @name PolkadotPrimitivesV2PersistedValidationData */2139export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {2140  readonly parentHead: Bytes;2141  readonly relayParentNumber: u32;2142  readonly relayParentStorageRoot: H256;2143  readonly maxPovSize: u32;2144}21452146/** @name PolkadotPrimitivesV2UpgradeRestriction */2147export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {2148  readonly isPresent: boolean;2149  readonly type: 'Present';2150}21512152/** @name RmrkTraitsBaseBaseInfo */2153export interface RmrkTraitsBaseBaseInfo extends Struct {2154  readonly issuer: AccountId32;2155  readonly baseType: Bytes;2156  readonly symbol: Bytes;2157}21582159/** @name RmrkTraitsCollectionCollectionInfo */2160export interface RmrkTraitsCollectionCollectionInfo extends Struct {2161  readonly issuer: AccountId32;2162  readonly metadata: Bytes;2163  readonly max: Option<u32>;2164  readonly symbol: Bytes;2165  readonly nftsCount: u32;2166}21672168/** @name RmrkTraitsNftAccountIdOrCollectionNftTuple */2169export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {2170  readonly isAccountId: boolean;2171  readonly asAccountId: AccountId32;2172  readonly isCollectionAndNftTuple: boolean;2173  readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2174  readonly type: 'AccountId' | 'CollectionAndNftTuple';2175}21762177/** @name RmrkTraitsNftNftChild */2178export interface RmrkTraitsNftNftChild extends Struct {2179  readonly collectionId: u32;2180  readonly nftId: u32;2181}21822183/** @name RmrkTraitsNftNftInfo */2184export interface RmrkTraitsNftNftInfo extends Struct {2185  readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2186  readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2187  readonly metadata: Bytes;2188  readonly equipped: bool;2189  readonly pending: bool;2190}21912192/** @name RmrkTraitsNftRoyaltyInfo */2193export interface RmrkTraitsNftRoyaltyInfo extends Struct {2194  readonly recipient: AccountId32;2195  readonly amount: Permill;2196}21972198/** @name RmrkTraitsPartEquippableList */2199export interface RmrkTraitsPartEquippableList extends Enum {2200  readonly isAll: boolean;2201  readonly isEmpty: boolean;2202  readonly isCustom: boolean;2203  readonly asCustom: Vec<u32>;2204  readonly type: 'All' | 'Empty' | 'Custom';2205}22062207/** @name RmrkTraitsPartFixedPart */2208export interface RmrkTraitsPartFixedPart extends Struct {2209  readonly id: u32;2210  readonly z: u32;2211  readonly src: Bytes;2212}22132214/** @name RmrkTraitsPartPartType */2215export interface RmrkTraitsPartPartType extends Enum {2216  readonly isFixedPart: boolean;2217  readonly asFixedPart: RmrkTraitsPartFixedPart;2218  readonly isSlotPart: boolean;2219  readonly asSlotPart: RmrkTraitsPartSlotPart;2220  readonly type: 'FixedPart' | 'SlotPart';2221}22222223/** @name RmrkTraitsPartSlotPart */2224export interface RmrkTraitsPartSlotPart extends Struct {2225  readonly id: u32;2226  readonly equippable: RmrkTraitsPartEquippableList;2227  readonly src: Bytes;2228  readonly z: u32;2229}22302231/** @name RmrkTraitsPropertyPropertyInfo */2232export interface RmrkTraitsPropertyPropertyInfo extends Struct {2233  readonly key: Bytes;2234  readonly value: Bytes;2235}22362237/** @name RmrkTraitsResourceBasicResource */2238export interface RmrkTraitsResourceBasicResource extends Struct {2239  readonly src: Option<Bytes>;2240  readonly metadata: Option<Bytes>;2241  readonly license: Option<Bytes>;2242  readonly thumb: Option<Bytes>;2243}22442245/** @name RmrkTraitsResourceComposableResource */2246export interface RmrkTraitsResourceComposableResource extends Struct {2247  readonly parts: Vec<u32>;2248  readonly base: u32;2249  readonly src: Option<Bytes>;2250  readonly metadata: Option<Bytes>;2251  readonly license: Option<Bytes>;2252  readonly thumb: Option<Bytes>;2253}22542255/** @name RmrkTraitsResourceResourceInfo */2256export interface RmrkTraitsResourceResourceInfo extends Struct {2257  readonly id: u32;2258  readonly resource: RmrkTraitsResourceResourceTypes;2259  readonly pending: bool;2260  readonly pendingRemoval: bool;2261}22622263/** @name RmrkTraitsResourceResourceTypes */2264export interface RmrkTraitsResourceResourceTypes extends Enum {2265  readonly isBasic: boolean;2266  readonly asBasic: RmrkTraitsResourceBasicResource;2267  readonly isComposable: boolean;2268  readonly asComposable: RmrkTraitsResourceComposableResource;2269  readonly isSlot: boolean;2270  readonly asSlot: RmrkTraitsResourceSlotResource;2271  readonly type: 'Basic' | 'Composable' | 'Slot';2272}22732274/** @name RmrkTraitsResourceSlotResource */2275export interface RmrkTraitsResourceSlotResource extends Struct {2276  readonly base: u32;2277  readonly src: Option<Bytes>;2278  readonly metadata: Option<Bytes>;2279  readonly slot: u32;2280  readonly license: Option<Bytes>;2281  readonly thumb: Option<Bytes>;2282}22832284/** @name RmrkTraitsTheme */2285export interface RmrkTraitsTheme extends Struct {2286  readonly name: Bytes;2287  readonly properties: Vec<RmrkTraitsThemeThemeProperty>;2288  readonly inherit: bool;2289}22902291/** @name RmrkTraitsThemeThemeProperty */2292export interface RmrkTraitsThemeThemeProperty extends Struct {2293  readonly key: Bytes;2294  readonly value: Bytes;2295}22962297/** @name SpCoreEcdsaSignature */2298export interface SpCoreEcdsaSignature extends U8aFixed {}22992300/** @name SpCoreEd25519Signature */2301export interface SpCoreEd25519Signature extends U8aFixed {}23022303/** @name SpCoreSr25519Signature */2304export interface SpCoreSr25519Signature extends U8aFixed {}23052306/** @name SpCoreVoid */2307export interface SpCoreVoid extends Null {}23082309/** @name SpRuntimeArithmeticError */2310export interface SpRuntimeArithmeticError extends Enum {2311  readonly isUnderflow: boolean;2312  readonly isOverflow: boolean;2313  readonly isDivisionByZero: boolean;2314  readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2315}23162317/** @name SpRuntimeDigest */2318export interface SpRuntimeDigest extends Struct {2319  readonly logs: Vec<SpRuntimeDigestDigestItem>;2320}23212322/** @name SpRuntimeDigestDigestItem */2323export interface SpRuntimeDigestDigestItem extends Enum {2324  readonly isOther: boolean;2325  readonly asOther: Bytes;2326  readonly isConsensus: boolean;2327  readonly asConsensus: ITuple<[U8aFixed, Bytes]>;2328  readonly isSeal: boolean;2329  readonly asSeal: ITuple<[U8aFixed, Bytes]>;2330  readonly isPreRuntime: boolean;2331  readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;2332  readonly isRuntimeEnvironmentUpdated: boolean;2333  readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2334}23352336/** @name SpRuntimeDispatchError */2337export interface SpRuntimeDispatchError extends Enum {2338  readonly isOther: boolean;2339  readonly isCannotLookup: boolean;2340  readonly isBadOrigin: boolean;2341  readonly isModule: boolean;2342  readonly asModule: SpRuntimeModuleError;2343  readonly isConsumerRemaining: boolean;2344  readonly isNoProviders: boolean;2345  readonly isTooManyConsumers: boolean;2346  readonly isToken: boolean;2347  readonly asToken: SpRuntimeTokenError;2348  readonly isArithmetic: boolean;2349  readonly asArithmetic: SpRuntimeArithmeticError;2350  readonly isTransactional: boolean;2351  readonly asTransactional: SpRuntimeTransactionalError;2352  readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2353}23542355/** @name SpRuntimeModuleError */2356export interface SpRuntimeModuleError extends Struct {2357  readonly index: u8;2358  readonly error: U8aFixed;2359}23602361/** @name SpRuntimeMultiSignature */2362export interface SpRuntimeMultiSignature extends Enum {2363  readonly isEd25519: boolean;2364  readonly asEd25519: SpCoreEd25519Signature;2365  readonly isSr25519: boolean;2366  readonly asSr25519: SpCoreSr25519Signature;2367  readonly isEcdsa: boolean;2368  readonly asEcdsa: SpCoreEcdsaSignature;2369  readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2370}23712372/** @name SpRuntimeTokenError */2373export interface SpRuntimeTokenError extends Enum {2374  readonly isNoFunds: boolean;2375  readonly isWouldDie: boolean;2376  readonly isBelowMinimum: boolean;2377  readonly isCannotCreate: boolean;2378  readonly isUnknownAsset: boolean;2379  readonly isFrozen: boolean;2380  readonly isUnsupported: boolean;2381  readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2382}23832384/** @name SpRuntimeTransactionalError */2385export interface SpRuntimeTransactionalError extends Enum {2386  readonly isLimitReached: boolean;2387  readonly isNoLayer: boolean;2388  readonly type: 'LimitReached' | 'NoLayer';2389}23902391/** @name SpTrieStorageProof */2392export interface SpTrieStorageProof extends Struct {2393  readonly trieNodes: BTreeSet<Bytes>;2394}23952396/** @name SpVersionRuntimeVersion */2397export interface SpVersionRuntimeVersion extends Struct {2398  readonly specName: Text;2399  readonly implName: Text;2400  readonly authoringVersion: u32;2401  readonly specVersion: u32;2402  readonly implVersion: u32;2403  readonly apis: Vec<ITuple<[U8aFixed, u32]>>;2404  readonly transactionVersion: u32;2405  readonly stateVersion: u8;2406}24072408/** @name UpDataStructsAccessMode */2409export interface UpDataStructsAccessMode extends Enum {2410  readonly isNormal: boolean;2411  readonly isAllowList: boolean;2412  readonly type: 'Normal' | 'AllowList';2413}24142415/** @name UpDataStructsCollection */2416export interface UpDataStructsCollection extends Struct {2417  readonly owner: AccountId32;2418  readonly mode: UpDataStructsCollectionMode;2419  readonly name: Vec<u16>;2420  readonly description: Vec<u16>;2421  readonly tokenPrefix: Bytes;2422  readonly sponsorship: UpDataStructsSponsorshipState;2423  readonly limits: UpDataStructsCollectionLimits;2424  readonly permissions: UpDataStructsCollectionPermissions;2425  readonly externalCollection: bool;2426}24272428/** @name UpDataStructsCollectionLimits */2429export interface UpDataStructsCollectionLimits extends Struct {2430  readonly accountTokenOwnershipLimit: Option<u32>;2431  readonly sponsoredDataSize: Option<u32>;2432  readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;2433  readonly tokenLimit: Option<u32>;2434  readonly sponsorTransferTimeout: Option<u32>;2435  readonly sponsorApproveTimeout: Option<u32>;2436  readonly ownerCanTransfer: Option<bool>;2437  readonly ownerCanDestroy: Option<bool>;2438  readonly transfersEnabled: Option<bool>;2439}24402441/** @name UpDataStructsCollectionMode */2442export interface UpDataStructsCollectionMode extends Enum {2443  readonly isNft: boolean;2444  readonly isFungible: boolean;2445  readonly asFungible: u8;2446  readonly isReFungible: boolean;2447  readonly type: 'Nft' | 'Fungible' | 'ReFungible';2448}24492450/** @name UpDataStructsCollectionPermissions */2451export interface UpDataStructsCollectionPermissions extends Struct {2452  readonly access: Option<UpDataStructsAccessMode>;2453  readonly mintMode: Option<bool>;2454  readonly nesting: Option<UpDataStructsNestingPermissions>;2455}24562457/** @name UpDataStructsCollectionStats */2458export interface UpDataStructsCollectionStats extends Struct {2459  readonly created: u32;2460  readonly destroyed: u32;2461  readonly alive: u32;2462}24632464/** @name UpDataStructsCreateCollectionData */2465export interface UpDataStructsCreateCollectionData extends Struct {2466  readonly mode: UpDataStructsCollectionMode;2467  readonly access: Option<UpDataStructsAccessMode>;2468  readonly name: Vec<u16>;2469  readonly description: Vec<u16>;2470  readonly tokenPrefix: Bytes;2471  readonly pendingSponsor: Option<AccountId32>;2472  readonly limits: Option<UpDataStructsCollectionLimits>;2473  readonly permissions: Option<UpDataStructsCollectionPermissions>;2474  readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2475  readonly properties: Vec<UpDataStructsProperty>;2476}24772478/** @name UpDataStructsCreateFungibleData */2479export interface UpDataStructsCreateFungibleData extends Struct {2480  readonly value: u128;2481}24822483/** @name UpDataStructsCreateItemData */2484export interface UpDataStructsCreateItemData extends Enum {2485  readonly isNft: boolean;2486  readonly asNft: UpDataStructsCreateNftData;2487  readonly isFungible: boolean;2488  readonly asFungible: UpDataStructsCreateFungibleData;2489  readonly isReFungible: boolean;2490  readonly asReFungible: UpDataStructsCreateReFungibleData;2491  readonly type: 'Nft' | 'Fungible' | 'ReFungible';2492}24932494/** @name UpDataStructsCreateItemExData */2495export interface UpDataStructsCreateItemExData extends Enum {2496  readonly isNft: boolean;2497  readonly asNft: Vec<UpDataStructsCreateNftExData>;2498  readonly isFungible: boolean;2499  readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr,u128>;2500  readonly isRefungibleMultipleItems: boolean;2501  readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExSingleOwner>;2502  readonly isRefungibleMultipleOwners: boolean;2503  readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExMultipleOwners;2504  readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';2505}25062507/** @name UpDataStructsCreateNftData */2508export interface UpDataStructsCreateNftData extends Struct {2509  readonly properties: Vec<UpDataStructsProperty>;2510}25112512/** @name UpDataStructsCreateNftExData */2513export interface UpDataStructsCreateNftExData extends Struct {2514  readonly properties: Vec<UpDataStructsProperty>;2515  readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2516}25172518/** @name UpDataStructsCreateReFungibleData */2519export interface UpDataStructsCreateReFungibleData extends Struct {2520  readonly pieces: u128;2521  readonly properties: Vec<UpDataStructsProperty>;2522}25232524/** @name UpDataStructsCreateRefungibleExMultipleOwners */2525export interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {2526  readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;2527  readonly properties: Vec<UpDataStructsProperty>;2528}25292530/** @name UpDataStructsCreateRefungibleExSingleOwner */2531export interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {2532  readonly user: PalletEvmAccountBasicCrossAccountIdRepr;2533  readonly pieces: u128;2534  readonly properties: Vec<UpDataStructsProperty>;2535}25362537/** @name UpDataStructsNestingPermissions */2538export interface UpDataStructsNestingPermissions extends Struct {2539  readonly tokenOwner: bool;2540  readonly collectionAdmin: bool;2541  readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2542}25432544/** @name UpDataStructsOwnerRestrictedSet */2545export interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}25462547/** @name UpDataStructsProperties */2548export interface UpDataStructsProperties extends Struct {2549  readonly map: UpDataStructsPropertiesMapBoundedVec;2550  readonly consumedSpace: u32;2551  readonly spaceLimit: u32;2552}25532554/** @name UpDataStructsPropertiesMapBoundedVec */2555export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}25562557/** @name UpDataStructsPropertiesMapPropertyPermission */2558export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}25592560/** @name UpDataStructsProperty */2561export interface UpDataStructsProperty extends Struct {2562  readonly key: Bytes;2563  readonly value: Bytes;2564}25652566/** @name UpDataStructsPropertyKeyPermission */2567export interface UpDataStructsPropertyKeyPermission extends Struct {2568  readonly key: Bytes;2569  readonly permission: UpDataStructsPropertyPermission;2570}25712572/** @name UpDataStructsPropertyPermission */2573export interface UpDataStructsPropertyPermission extends Struct {2574  readonly mutable: bool;2575  readonly collectionAdmin: bool;2576  readonly tokenOwner: bool;2577}25782579/** @name UpDataStructsPropertyScope */2580export interface UpDataStructsPropertyScope extends Enum {2581  readonly isNone: boolean;2582  readonly isRmrk: boolean;2583  readonly isEth: boolean;2584  readonly type: 'None' | 'Rmrk' | 'Eth';2585}25862587/** @name UpDataStructsRpcCollection */2588export interface UpDataStructsRpcCollection extends Struct {2589  readonly owner: AccountId32;2590  readonly mode: UpDataStructsCollectionMode;2591  readonly name: Vec<u16>;2592  readonly description: Vec<u16>;2593  readonly tokenPrefix: Bytes;2594  readonly sponsorship: UpDataStructsSponsorshipState;2595  readonly limits: UpDataStructsCollectionLimits;2596  readonly permissions: UpDataStructsCollectionPermissions;2597  readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2598  readonly properties: Vec<UpDataStructsProperty>;2599  readonly readOnly: bool;2600}26012602/** @name UpDataStructsSponsoringRateLimit */2603export interface UpDataStructsSponsoringRateLimit extends Enum {2604  readonly isSponsoringDisabled: boolean;2605  readonly isBlocks: boolean;2606  readonly asBlocks: u32;2607  readonly type: 'SponsoringDisabled' | 'Blocks';2608}26092610/** @name UpDataStructsSponsorshipState */2611export interface UpDataStructsSponsorshipState extends Enum {2612  readonly isDisabled: boolean;2613  readonly isUnconfirmed: boolean;2614  readonly asUnconfirmed: AccountId32;2615  readonly isConfirmed: boolean;2616  readonly asConfirmed: AccountId32;2617  readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2618}26192620/** @name UpDataStructsTokenChild */2621export interface UpDataStructsTokenChild extends Struct {2622  readonly token: u32;2623  readonly collection: u32;2624}26252626/** @name UpDataStructsTokenData */2627export interface UpDataStructsTokenData extends Struct {2628  readonly properties: Vec<UpDataStructsProperty>;2629  readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2630  readonly pieces: u128;2631}26322633/** @name XcmDoubleEncoded */2634export interface XcmDoubleEncoded extends Struct {2635  readonly encoded: Bytes;2636}26372638/** @name XcmV0Junction */2639export interface XcmV0Junction extends Enum {2640  readonly isParent: boolean;2641  readonly isParachain: boolean;2642  readonly asParachain: Compact<u32>;2643  readonly isAccountId32: boolean;2644  readonly asAccountId32: {2645    readonly network: XcmV0JunctionNetworkId;2646    readonly id: U8aFixed;2647  } & Struct;2648  readonly isAccountIndex64: boolean;2649  readonly asAccountIndex64: {2650    readonly network: XcmV0JunctionNetworkId;2651    readonly index: Compact<u64>;2652  } & Struct;2653  readonly isAccountKey20: boolean;2654  readonly asAccountKey20: {2655    readonly network: XcmV0JunctionNetworkId;2656    readonly key: U8aFixed;2657  } & Struct;2658  readonly isPalletInstance: boolean;2659  readonly asPalletInstance: u8;2660  readonly isGeneralIndex: boolean;2661  readonly asGeneralIndex: Compact<u128>;2662  readonly isGeneralKey: boolean;2663  readonly asGeneralKey: Bytes;2664  readonly isOnlyChild: boolean;2665  readonly isPlurality: boolean;2666  readonly asPlurality: {2667    readonly id: XcmV0JunctionBodyId;2668    readonly part: XcmV0JunctionBodyPart;2669  } & Struct;2670  readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';2671}26722673/** @name XcmV0JunctionBodyId */2674export interface XcmV0JunctionBodyId extends Enum {2675  readonly isUnit: boolean;2676  readonly isNamed: boolean;2677  readonly asNamed: Bytes;2678  readonly isIndex: boolean;2679  readonly asIndex: Compact<u32>;2680  readonly isExecutive: boolean;2681  readonly isTechnical: boolean;2682  readonly isLegislative: boolean;2683  readonly isJudicial: boolean;2684  readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';2685}26862687/** @name XcmV0JunctionBodyPart */2688export interface XcmV0JunctionBodyPart extends Enum {2689  readonly isVoice: boolean;2690  readonly isMembers: boolean;2691  readonly asMembers: {2692    readonly count: Compact<u32>;2693  } & Struct;2694  readonly isFraction: boolean;2695  readonly asFraction: {2696    readonly nom: Compact<u32>;2697    readonly denom: Compact<u32>;2698  } & Struct;2699  readonly isAtLeastProportion: boolean;2700  readonly asAtLeastProportion: {2701    readonly nom: Compact<u32>;2702    readonly denom: Compact<u32>;2703  } & Struct;2704  readonly isMoreThanProportion: boolean;2705  readonly asMoreThanProportion: {2706    readonly nom: Compact<u32>;2707    readonly denom: Compact<u32>;2708  } & Struct;2709  readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';2710}27112712/** @name XcmV0JunctionNetworkId */2713export interface XcmV0JunctionNetworkId extends Enum {2714  readonly isAny: boolean;2715  readonly isNamed: boolean;2716  readonly asNamed: Bytes;2717  readonly isPolkadot: boolean;2718  readonly isKusama: boolean;2719  readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';2720}27212722/** @name XcmV0MultiAsset */2723export interface XcmV0MultiAsset extends Enum {2724  readonly isNone: boolean;2725  readonly isAll: boolean;2726  readonly isAllFungible: boolean;2727  readonly isAllNonFungible: boolean;2728  readonly isAllAbstractFungible: boolean;2729  readonly asAllAbstractFungible: {2730    readonly id: Bytes;2731  } & Struct;2732  readonly isAllAbstractNonFungible: boolean;2733  readonly asAllAbstractNonFungible: {2734    readonly class: Bytes;2735  } & Struct;2736  readonly isAllConcreteFungible: boolean;2737  readonly asAllConcreteFungible: {2738    readonly id: XcmV0MultiLocation;2739  } & Struct;2740  readonly isAllConcreteNonFungible: boolean;2741  readonly asAllConcreteNonFungible: {2742    readonly class: XcmV0MultiLocation;2743  } & Struct;2744  readonly isAbstractFungible: boolean;2745  readonly asAbstractFungible: {2746    readonly id: Bytes;2747    readonly amount: Compact<u128>;2748  } & Struct;2749  readonly isAbstractNonFungible: boolean;2750  readonly asAbstractNonFungible: {2751    readonly class: Bytes;2752    readonly instance: XcmV1MultiassetAssetInstance;2753  } & Struct;2754  readonly isConcreteFungible: boolean;2755  readonly asConcreteFungible: {2756    readonly id: XcmV0MultiLocation;2757    readonly amount: Compact<u128>;2758  } & Struct;2759  readonly isConcreteNonFungible: boolean;2760  readonly asConcreteNonFungible: {2761    readonly class: XcmV0MultiLocation;2762    readonly instance: XcmV1MultiassetAssetInstance;2763  } & Struct;2764  readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';2765}27662767/** @name XcmV0MultiLocation */2768export interface XcmV0MultiLocation extends Enum {2769  readonly isNull: boolean;2770  readonly isX1: boolean;2771  readonly asX1: XcmV0Junction;2772  readonly isX2: boolean;2773  readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;2774  readonly isX3: boolean;2775  readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2776  readonly isX4: boolean;2777  readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2778  readonly isX5: boolean;2779  readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2780  readonly isX6: boolean;2781  readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2782  readonly isX7: boolean;2783  readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2784  readonly isX8: boolean;2785  readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2786  readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';2787}27882789/** @name XcmV0Order */2790export interface XcmV0Order extends Enum {2791  readonly isNull: boolean;2792  readonly isDepositAsset: boolean;2793  readonly asDepositAsset: {2794    readonly assets: Vec<XcmV0MultiAsset>;2795    readonly dest: XcmV0MultiLocation;2796  } & Struct;2797  readonly isDepositReserveAsset: boolean;2798  readonly asDepositReserveAsset: {2799    readonly assets: Vec<XcmV0MultiAsset>;2800    readonly dest: XcmV0MultiLocation;2801    readonly effects: Vec<XcmV0Order>;2802  } & Struct;2803  readonly isExchangeAsset: boolean;2804  readonly asExchangeAsset: {2805    readonly give: Vec<XcmV0MultiAsset>;2806    readonly receive: Vec<XcmV0MultiAsset>;2807  } & Struct;2808  readonly isInitiateReserveWithdraw: boolean;2809  readonly asInitiateReserveWithdraw: {2810    readonly assets: Vec<XcmV0MultiAsset>;2811    readonly reserve: XcmV0MultiLocation;2812    readonly effects: Vec<XcmV0Order>;2813  } & Struct;2814  readonly isInitiateTeleport: boolean;2815  readonly asInitiateTeleport: {2816    readonly assets: Vec<XcmV0MultiAsset>;2817    readonly dest: XcmV0MultiLocation;2818    readonly effects: Vec<XcmV0Order>;2819  } & Struct;2820  readonly isQueryHolding: boolean;2821  readonly asQueryHolding: {2822    readonly queryId: Compact<u64>;2823    readonly dest: XcmV0MultiLocation;2824    readonly assets: Vec<XcmV0MultiAsset>;2825  } & Struct;2826  readonly isBuyExecution: boolean;2827  readonly asBuyExecution: {2828    readonly fees: XcmV0MultiAsset;2829    readonly weight: u64;2830    readonly debt: u64;2831    readonly haltOnError: bool;2832    readonly xcm: Vec<XcmV0Xcm>;2833  } & Struct;2834  readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';2835}28362837/** @name XcmV0OriginKind */2838export interface XcmV0OriginKind extends Enum {2839  readonly isNative: boolean;2840  readonly isSovereignAccount: boolean;2841  readonly isSuperuser: boolean;2842  readonly isXcm: boolean;2843  readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';2844}28452846/** @name XcmV0Response */2847export interface XcmV0Response extends Enum {2848  readonly isAssets: boolean;2849  readonly asAssets: Vec<XcmV0MultiAsset>;2850  readonly type: 'Assets';2851}28522853/** @name XcmV0Xcm */2854export interface XcmV0Xcm extends Enum {2855  readonly isWithdrawAsset: boolean;2856  readonly asWithdrawAsset: {2857    readonly assets: Vec<XcmV0MultiAsset>;2858    readonly effects: Vec<XcmV0Order>;2859  } & Struct;2860  readonly isReserveAssetDeposit: boolean;2861  readonly asReserveAssetDeposit: {2862    readonly assets: Vec<XcmV0MultiAsset>;2863    readonly effects: Vec<XcmV0Order>;2864  } & Struct;2865  readonly isTeleportAsset: boolean;2866  readonly asTeleportAsset: {2867    readonly assets: Vec<XcmV0MultiAsset>;2868    readonly effects: Vec<XcmV0Order>;2869  } & Struct;2870  readonly isQueryResponse: boolean;2871  readonly asQueryResponse: {2872    readonly queryId: Compact<u64>;2873    readonly response: XcmV0Response;2874  } & Struct;2875  readonly isTransferAsset: boolean;2876  readonly asTransferAsset: {2877    readonly assets: Vec<XcmV0MultiAsset>;2878    readonly dest: XcmV0MultiLocation;2879  } & Struct;2880  readonly isTransferReserveAsset: boolean;2881  readonly asTransferReserveAsset: {2882    readonly assets: Vec<XcmV0MultiAsset>;2883    readonly dest: XcmV0MultiLocation;2884    readonly effects: Vec<XcmV0Order>;2885  } & Struct;2886  readonly isTransact: boolean;2887  readonly asTransact: {2888    readonly originType: XcmV0OriginKind;2889    readonly requireWeightAtMost: u64;2890    readonly call: XcmDoubleEncoded;2891  } & Struct;2892  readonly isHrmpNewChannelOpenRequest: boolean;2893  readonly asHrmpNewChannelOpenRequest: {2894    readonly sender: Compact<u32>;2895    readonly maxMessageSize: Compact<u32>;2896    readonly maxCapacity: Compact<u32>;2897  } & Struct;2898  readonly isHrmpChannelAccepted: boolean;2899  readonly asHrmpChannelAccepted: {2900    readonly recipient: Compact<u32>;2901  } & Struct;2902  readonly isHrmpChannelClosing: boolean;2903  readonly asHrmpChannelClosing: {2904    readonly initiator: Compact<u32>;2905    readonly sender: Compact<u32>;2906    readonly recipient: Compact<u32>;2907  } & Struct;2908  readonly isRelayedFrom: boolean;2909  readonly asRelayedFrom: {2910    readonly who: XcmV0MultiLocation;2911    readonly message: XcmV0Xcm;2912  } & Struct;2913  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';2914}29152916/** @name XcmV1Junction */2917export interface XcmV1Junction extends Enum {2918  readonly isParachain: boolean;2919  readonly asParachain: Compact<u32>;2920  readonly isAccountId32: boolean;2921  readonly asAccountId32: {2922    readonly network: XcmV0JunctionNetworkId;2923    readonly id: U8aFixed;2924  } & Struct;2925  readonly isAccountIndex64: boolean;2926  readonly asAccountIndex64: {2927    readonly network: XcmV0JunctionNetworkId;2928    readonly index: Compact<u64>;2929  } & Struct;2930  readonly isAccountKey20: boolean;2931  readonly asAccountKey20: {2932    readonly network: XcmV0JunctionNetworkId;2933    readonly key: U8aFixed;2934  } & Struct;2935  readonly isPalletInstance: boolean;2936  readonly asPalletInstance: u8;2937  readonly isGeneralIndex: boolean;2938  readonly asGeneralIndex: Compact<u128>;2939  readonly isGeneralKey: boolean;2940  readonly asGeneralKey: Bytes;2941  readonly isOnlyChild: boolean;2942  readonly isPlurality: boolean;2943  readonly asPlurality: {2944    readonly id: XcmV0JunctionBodyId;2945    readonly part: XcmV0JunctionBodyPart;2946  } & Struct;2947  readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';2948}29492950/** @name XcmV1MultiAsset */2951export interface XcmV1MultiAsset extends Struct {2952  readonly id: XcmV1MultiassetAssetId;2953  readonly fun: XcmV1MultiassetFungibility;2954}29552956/** @name XcmV1MultiassetAssetId */2957export interface XcmV1MultiassetAssetId extends Enum {2958  readonly isConcrete: boolean;2959  readonly asConcrete: XcmV1MultiLocation;2960  readonly isAbstract: boolean;2961  readonly asAbstract: Bytes;2962  readonly type: 'Concrete' | 'Abstract';2963}29642965/** @name XcmV1MultiassetAssetInstance */2966export interface XcmV1MultiassetAssetInstance extends Enum {2967  readonly isUndefined: boolean;2968  readonly isIndex: boolean;2969  readonly asIndex: Compact<u128>;2970  readonly isArray4: boolean;2971  readonly asArray4: U8aFixed;2972  readonly isArray8: boolean;2973  readonly asArray8: U8aFixed;2974  readonly isArray16: boolean;2975  readonly asArray16: U8aFixed;2976  readonly isArray32: boolean;2977  readonly asArray32: U8aFixed;2978  readonly isBlob: boolean;2979  readonly asBlob: Bytes;2980  readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';2981}29822983/** @name XcmV1MultiassetFungibility */2984export interface XcmV1MultiassetFungibility extends Enum {2985  readonly isFungible: boolean;2986  readonly asFungible: Compact<u128>;2987  readonly isNonFungible: boolean;2988  readonly asNonFungible: XcmV1MultiassetAssetInstance;2989  readonly type: 'Fungible' | 'NonFungible';2990}29912992/** @name XcmV1MultiassetMultiAssetFilter */2993export interface XcmV1MultiassetMultiAssetFilter extends Enum {2994  readonly isDefinite: boolean;2995  readonly asDefinite: XcmV1MultiassetMultiAssets;2996  readonly isWild: boolean;2997  readonly asWild: XcmV1MultiassetWildMultiAsset;2998  readonly type: 'Definite' | 'Wild';2999}30003001/** @name XcmV1MultiassetMultiAssets */3002export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}30033004/** @name XcmV1MultiassetWildFungibility */3005export interface XcmV1MultiassetWildFungibility extends Enum {3006  readonly isFungible: boolean;3007  readonly isNonFungible: boolean;3008  readonly type: 'Fungible' | 'NonFungible';3009}30103011/** @name XcmV1MultiassetWildMultiAsset */3012export interface XcmV1MultiassetWildMultiAsset extends Enum {3013  readonly isAll: boolean;3014  readonly isAllOf: boolean;3015  readonly asAllOf: {3016    readonly id: XcmV1MultiassetAssetId;3017    readonly fun: XcmV1MultiassetWildFungibility;3018  } & Struct;3019  readonly type: 'All' | 'AllOf';3020}30213022/** @name XcmV1MultiLocation */3023export interface XcmV1MultiLocation extends Struct {3024  readonly parents: u8;3025  readonly interior: XcmV1MultilocationJunctions;3026}30273028/** @name XcmV1MultilocationJunctions */3029export interface XcmV1MultilocationJunctions extends Enum {3030  readonly isHere: boolean;3031  readonly isX1: boolean;3032  readonly asX1: XcmV1Junction;3033  readonly isX2: boolean;3034  readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;3035  readonly isX3: boolean;3036  readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3037  readonly isX4: boolean;3038  readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3039  readonly isX5: boolean;3040  readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3041  readonly isX6: boolean;3042  readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3043  readonly isX7: boolean;3044  readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3045  readonly isX8: boolean;3046  readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3047  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';3048}30493050/** @name XcmV1Order */3051export interface XcmV1Order extends Enum {3052  readonly isNoop: boolean;3053  readonly isDepositAsset: boolean;3054  readonly asDepositAsset: {3055    readonly assets: XcmV1MultiassetMultiAssetFilter;3056    readonly maxAssets: u32;3057    readonly beneficiary: XcmV1MultiLocation;3058  } & Struct;3059  readonly isDepositReserveAsset: boolean;3060  readonly asDepositReserveAsset: {3061    readonly assets: XcmV1MultiassetMultiAssetFilter;3062    readonly maxAssets: u32;3063    readonly dest: XcmV1MultiLocation;3064    readonly effects: Vec<XcmV1Order>;3065  } & Struct;3066  readonly isExchangeAsset: boolean;3067  readonly asExchangeAsset: {3068    readonly give: XcmV1MultiassetMultiAssetFilter;3069    readonly receive: XcmV1MultiassetMultiAssets;3070  } & Struct;3071  readonly isInitiateReserveWithdraw: boolean;3072  readonly asInitiateReserveWithdraw: {3073    readonly assets: XcmV1MultiassetMultiAssetFilter;3074    readonly reserve: XcmV1MultiLocation;3075    readonly effects: Vec<XcmV1Order>;3076  } & Struct;3077  readonly isInitiateTeleport: boolean;3078  readonly asInitiateTeleport: {3079    readonly assets: XcmV1MultiassetMultiAssetFilter;3080    readonly dest: XcmV1MultiLocation;3081    readonly effects: Vec<XcmV1Order>;3082  } & Struct;3083  readonly isQueryHolding: boolean;3084  readonly asQueryHolding: {3085    readonly queryId: Compact<u64>;3086    readonly dest: XcmV1MultiLocation;3087    readonly assets: XcmV1MultiassetMultiAssetFilter;3088  } & Struct;3089  readonly isBuyExecution: boolean;3090  readonly asBuyExecution: {3091    readonly fees: XcmV1MultiAsset;3092    readonly weight: u64;3093    readonly debt: u64;3094    readonly haltOnError: bool;3095    readonly instructions: Vec<XcmV1Xcm>;3096  } & Struct;3097  readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';3098}30993100/** @name XcmV1Response */3101export interface XcmV1Response extends Enum {3102  readonly isAssets: boolean;3103  readonly asAssets: XcmV1MultiassetMultiAssets;3104  readonly isVersion: boolean;3105  readonly asVersion: u32;3106  readonly type: 'Assets' | 'Version';3107}31083109/** @name XcmV1Xcm */3110export interface XcmV1Xcm extends Enum {3111  readonly isWithdrawAsset: boolean;3112  readonly asWithdrawAsset: {3113    readonly assets: XcmV1MultiassetMultiAssets;3114    readonly effects: Vec<XcmV1Order>;3115  } & Struct;3116  readonly isReserveAssetDeposited: boolean;3117  readonly asReserveAssetDeposited: {3118    readonly assets: XcmV1MultiassetMultiAssets;3119    readonly effects: Vec<XcmV1Order>;3120  } & Struct;3121  readonly isReceiveTeleportedAsset: boolean;3122  readonly asReceiveTeleportedAsset: {3123    readonly assets: XcmV1MultiassetMultiAssets;3124    readonly effects: Vec<XcmV1Order>;3125  } & Struct;3126  readonly isQueryResponse: boolean;3127  readonly asQueryResponse: {3128    readonly queryId: Compact<u64>;3129    readonly response: XcmV1Response;3130  } & Struct;3131  readonly isTransferAsset: boolean;3132  readonly asTransferAsset: {3133    readonly assets: XcmV1MultiassetMultiAssets;3134    readonly beneficiary: XcmV1MultiLocation;3135  } & Struct;3136  readonly isTransferReserveAsset: boolean;3137  readonly asTransferReserveAsset: {3138    readonly assets: XcmV1MultiassetMultiAssets;3139    readonly dest: XcmV1MultiLocation;3140    readonly effects: Vec<XcmV1Order>;3141  } & Struct;3142  readonly isTransact: boolean;3143  readonly asTransact: {3144    readonly originType: XcmV0OriginKind;3145    readonly requireWeightAtMost: u64;3146    readonly call: XcmDoubleEncoded;3147  } & Struct;3148  readonly isHrmpNewChannelOpenRequest: boolean;3149  readonly asHrmpNewChannelOpenRequest: {3150    readonly sender: Compact<u32>;3151    readonly maxMessageSize: Compact<u32>;3152    readonly maxCapacity: Compact<u32>;3153  } & Struct;3154  readonly isHrmpChannelAccepted: boolean;3155  readonly asHrmpChannelAccepted: {3156    readonly recipient: Compact<u32>;3157  } & Struct;3158  readonly isHrmpChannelClosing: boolean;3159  readonly asHrmpChannelClosing: {3160    readonly initiator: Compact<u32>;3161    readonly sender: Compact<u32>;3162    readonly recipient: Compact<u32>;3163  } & Struct;3164  readonly isRelayedFrom: boolean;3165  readonly asRelayedFrom: {3166    readonly who: XcmV1MultilocationJunctions;3167    readonly message: XcmV1Xcm;3168  } & Struct;3169  readonly isSubscribeVersion: boolean;3170  readonly asSubscribeVersion: {3171    readonly queryId: Compact<u64>;3172    readonly maxResponseWeight: Compact<u64>;3173  } & Struct;3174  readonly isUnsubscribeVersion: boolean;3175  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';3176}31773178/** @name XcmV2Instruction */3179export interface XcmV2Instruction extends Enum {3180  readonly isWithdrawAsset: boolean;3181  readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;3182  readonly isReserveAssetDeposited: boolean;3183  readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;3184  readonly isReceiveTeleportedAsset: boolean;3185  readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;3186  readonly isQueryResponse: boolean;3187  readonly asQueryResponse: {3188    readonly queryId: Compact<u64>;3189    readonly response: XcmV2Response;3190    readonly maxWeight: Compact<u64>;3191  } & Struct;3192  readonly isTransferAsset: boolean;3193  readonly asTransferAsset: {3194    readonly assets: XcmV1MultiassetMultiAssets;3195    readonly beneficiary: XcmV1MultiLocation;3196  } & Struct;3197  readonly isTransferReserveAsset: boolean;3198  readonly asTransferReserveAsset: {3199    readonly assets: XcmV1MultiassetMultiAssets;3200    readonly dest: XcmV1MultiLocation;3201    readonly xcm: XcmV2Xcm;3202  } & Struct;3203  readonly isTransact: boolean;3204  readonly asTransact: {3205    readonly originType: XcmV0OriginKind;3206    readonly requireWeightAtMost: Compact<u64>;3207    readonly call: XcmDoubleEncoded;3208  } & Struct;3209  readonly isHrmpNewChannelOpenRequest: boolean;3210  readonly asHrmpNewChannelOpenRequest: {3211    readonly sender: Compact<u32>;3212    readonly maxMessageSize: Compact<u32>;3213    readonly maxCapacity: Compact<u32>;3214  } & Struct;3215  readonly isHrmpChannelAccepted: boolean;3216  readonly asHrmpChannelAccepted: {3217    readonly recipient: Compact<u32>;3218  } & Struct;3219  readonly isHrmpChannelClosing: boolean;3220  readonly asHrmpChannelClosing: {3221    readonly initiator: Compact<u32>;3222    readonly sender: Compact<u32>;3223    readonly recipient: Compact<u32>;3224  } & Struct;3225  readonly isClearOrigin: boolean;3226  readonly isDescendOrigin: boolean;3227  readonly asDescendOrigin: XcmV1MultilocationJunctions;3228  readonly isReportError: boolean;3229  readonly asReportError: {3230    readonly queryId: Compact<u64>;3231    readonly dest: XcmV1MultiLocation;3232    readonly maxResponseWeight: Compact<u64>;3233  } & Struct;3234  readonly isDepositAsset: boolean;3235  readonly asDepositAsset: {3236    readonly assets: XcmV1MultiassetMultiAssetFilter;3237    readonly maxAssets: Compact<u32>;3238    readonly beneficiary: XcmV1MultiLocation;3239  } & Struct;3240  readonly isDepositReserveAsset: boolean;3241  readonly asDepositReserveAsset: {3242    readonly assets: XcmV1MultiassetMultiAssetFilter;3243    readonly maxAssets: Compact<u32>;3244    readonly dest: XcmV1MultiLocation;3245    readonly xcm: XcmV2Xcm;3246  } & Struct;3247  readonly isExchangeAsset: boolean;3248  readonly asExchangeAsset: {3249    readonly give: XcmV1MultiassetMultiAssetFilter;3250    readonly receive: XcmV1MultiassetMultiAssets;3251  } & Struct;3252  readonly isInitiateReserveWithdraw: boolean;3253  readonly asInitiateReserveWithdraw: {3254    readonly assets: XcmV1MultiassetMultiAssetFilter;3255    readonly reserve: XcmV1MultiLocation;3256    readonly xcm: XcmV2Xcm;3257  } & Struct;3258  readonly isInitiateTeleport: boolean;3259  readonly asInitiateTeleport: {3260    readonly assets: XcmV1MultiassetMultiAssetFilter;3261    readonly dest: XcmV1MultiLocation;3262    readonly xcm: XcmV2Xcm;3263  } & Struct;3264  readonly isQueryHolding: boolean;3265  readonly asQueryHolding: {3266    readonly queryId: Compact<u64>;3267    readonly dest: XcmV1MultiLocation;3268    readonly assets: XcmV1MultiassetMultiAssetFilter;3269    readonly maxResponseWeight: Compact<u64>;3270  } & Struct;3271  readonly isBuyExecution: boolean;3272  readonly asBuyExecution: {3273    readonly fees: XcmV1MultiAsset;3274    readonly weightLimit: XcmV2WeightLimit;3275  } & Struct;3276  readonly isRefundSurplus: boolean;3277  readonly isSetErrorHandler: boolean;3278  readonly asSetErrorHandler: XcmV2Xcm;3279  readonly isSetAppendix: boolean;3280  readonly asSetAppendix: XcmV2Xcm;3281  readonly isClearError: boolean;3282  readonly isClaimAsset: boolean;3283  readonly asClaimAsset: {3284    readonly assets: XcmV1MultiassetMultiAssets;3285    readonly ticket: XcmV1MultiLocation;3286  } & Struct;3287  readonly isTrap: boolean;3288  readonly asTrap: Compact<u64>;3289  readonly isSubscribeVersion: boolean;3290  readonly asSubscribeVersion: {3291    readonly queryId: Compact<u64>;3292    readonly maxResponseWeight: Compact<u64>;3293  } & Struct;3294  readonly isUnsubscribeVersion: boolean;3295  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion';3296}32973298/** @name XcmV2Response */3299export interface XcmV2Response extends Enum {3300  readonly isNull: boolean;3301  readonly isAssets: boolean;3302  readonly asAssets: XcmV1MultiassetMultiAssets;3303  readonly isExecutionResult: boolean;3304  readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;3305  readonly isVersion: boolean;3306  readonly asVersion: u32;3307  readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';3308}33093310/** @name XcmV2TraitsError */3311export interface XcmV2TraitsError extends Enum {3312  readonly isOverflow: boolean;3313  readonly isUnimplemented: boolean;3314  readonly isUntrustedReserveLocation: boolean;3315  readonly isUntrustedTeleportLocation: boolean;3316  readonly isMultiLocationFull: boolean;3317  readonly isMultiLocationNotInvertible: boolean;3318  readonly isBadOrigin: boolean;3319  readonly isInvalidLocation: boolean;3320  readonly isAssetNotFound: boolean;3321  readonly isFailedToTransactAsset: boolean;3322  readonly isNotWithdrawable: boolean;3323  readonly isLocationCannotHold: boolean;3324  readonly isExceedsMaxMessageSize: boolean;3325  readonly isDestinationUnsupported: boolean;3326  readonly isTransport: boolean;3327  readonly isUnroutable: boolean;3328  readonly isUnknownClaim: boolean;3329  readonly isFailedToDecode: boolean;3330  readonly isMaxWeightInvalid: boolean;3331  readonly isNotHoldingFees: boolean;3332  readonly isTooExpensive: boolean;3333  readonly isTrap: boolean;3334  readonly asTrap: u64;3335  readonly isUnhandledXcmVersion: boolean;3336  readonly isWeightLimitReached: boolean;3337  readonly asWeightLimitReached: u64;3338  readonly isBarrier: boolean;3339  readonly isWeightNotComputable: boolean;3340  readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'MultiLocationFull' | 'MultiLocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'WeightNotComputable';3341}33423343/** @name XcmV2TraitsOutcome */3344export interface XcmV2TraitsOutcome extends Enum {3345  readonly isComplete: boolean;3346  readonly asComplete: u64;3347  readonly isIncomplete: boolean;3348  readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;3349  readonly isError: boolean;3350  readonly asError: XcmV2TraitsError;3351  readonly type: 'Complete' | 'Incomplete' | 'Error';3352}33533354/** @name XcmV2WeightLimit */3355export interface XcmV2WeightLimit extends Enum {3356  readonly isUnlimited: boolean;3357  readonly isLimited: boolean;3358  readonly asLimited: Compact<u64>;3359  readonly type: 'Unlimited' | 'Limited';3360}33613362/** @name XcmV2Xcm */3363export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}33643365/** @name XcmVersionedMultiAssets */3366export interface XcmVersionedMultiAssets extends Enum {3367  readonly isV0: boolean;3368  readonly asV0: Vec<XcmV0MultiAsset>;3369  readonly isV1: boolean;3370  readonly asV1: XcmV1MultiassetMultiAssets;3371  readonly type: 'V0' | 'V1';3372}33733374/** @name XcmVersionedMultiLocation */3375export interface XcmVersionedMultiLocation extends Enum {3376  readonly isV0: boolean;3377  readonly asV0: XcmV0MultiLocation;3378  readonly isV1: boolean;3379  readonly asV1: XcmV1MultiLocation;3380  readonly type: 'V0' | 'V1';3381}33823383/** @name XcmVersionedXcm */3384export interface XcmVersionedXcm extends Enum {3385  readonly isV0: boolean;3386  readonly asV0: XcmV0Xcm;3387  readonly isV1: boolean;3388  readonly asV1: XcmV1Xcm;3389  readonly isV2: boolean;3390  readonly asV2: XcmV2Xcm;3391  readonly type: 'V0' | 'V1' | 'V2';3392}33933394export type PHANTOM_DEFAULT = 'default';
after · tests/src/interfaces/default/types.ts
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';5import type { ITuple } from '@polkadot/types-codec/types';6import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';7import type { Event } from '@polkadot/types/interfaces/system';89/** @name CumulusPalletDmpQueueCall */10export interface CumulusPalletDmpQueueCall extends Enum {11  readonly isServiceOverweight: boolean;12  readonly asServiceOverweight: {13    readonly index: u64;14    readonly weightLimit: u64;15  } & Struct;16  readonly type: 'ServiceOverweight';17}1819/** @name CumulusPalletDmpQueueConfigData */20export interface CumulusPalletDmpQueueConfigData extends Struct {21  readonly maxIndividual: u64;22}2324/** @name CumulusPalletDmpQueueError */25export interface CumulusPalletDmpQueueError extends Enum {26  readonly isUnknown: boolean;27  readonly isOverLimit: boolean;28  readonly type: 'Unknown' | 'OverLimit';29}3031/** @name CumulusPalletDmpQueueEvent */32export interface CumulusPalletDmpQueueEvent extends Enum {33  readonly isInvalidFormat: boolean;34  readonly asInvalidFormat: {35    readonly messageId: U8aFixed;36  } & Struct;37  readonly isUnsupportedVersion: boolean;38  readonly asUnsupportedVersion: {39    readonly messageId: U8aFixed;40  } & Struct;41  readonly isExecutedDownward: boolean;42  readonly asExecutedDownward: {43    readonly messageId: U8aFixed;44    readonly outcome: XcmV2TraitsOutcome;45  } & Struct;46  readonly isWeightExhausted: boolean;47  readonly asWeightExhausted: {48    readonly messageId: U8aFixed;49    readonly remainingWeight: u64;50    readonly requiredWeight: u64;51  } & Struct;52  readonly isOverweightEnqueued: boolean;53  readonly asOverweightEnqueued: {54    readonly messageId: U8aFixed;55    readonly overweightIndex: u64;56    readonly requiredWeight: u64;57  } & Struct;58  readonly isOverweightServiced: boolean;59  readonly asOverweightServiced: {60    readonly overweightIndex: u64;61    readonly weightUsed: u64;62  } & Struct;63  readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';64}6566/** @name CumulusPalletDmpQueuePageIndexData */67export interface CumulusPalletDmpQueuePageIndexData extends Struct {68  readonly beginUsed: u32;69  readonly endUsed: u32;70  readonly overweightCount: u64;71}7273/** @name CumulusPalletParachainSystemCall */74export interface CumulusPalletParachainSystemCall extends Enum {75  readonly isSetValidationData: boolean;76  readonly asSetValidationData: {77    readonly data: CumulusPrimitivesParachainInherentParachainInherentData;78  } & Struct;79  readonly isSudoSendUpwardMessage: boolean;80  readonly asSudoSendUpwardMessage: {81    readonly message: Bytes;82  } & Struct;83  readonly isAuthorizeUpgrade: boolean;84  readonly asAuthorizeUpgrade: {85    readonly codeHash: H256;86  } & Struct;87  readonly isEnactAuthorizedUpgrade: boolean;88  readonly asEnactAuthorizedUpgrade: {89    readonly code: Bytes;90  } & Struct;91  readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';92}9394/** @name CumulusPalletParachainSystemError */95export interface CumulusPalletParachainSystemError extends Enum {96  readonly isOverlappingUpgrades: boolean;97  readonly isProhibitedByPolkadot: boolean;98  readonly isTooBig: boolean;99  readonly isValidationDataNotAvailable: boolean;100  readonly isHostConfigurationNotAvailable: boolean;101  readonly isNotScheduled: boolean;102  readonly isNothingAuthorized: boolean;103  readonly isUnauthorized: boolean;104  readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';105}106107/** @name CumulusPalletParachainSystemEvent */108export interface CumulusPalletParachainSystemEvent extends Enum {109  readonly isValidationFunctionStored: boolean;110  readonly isValidationFunctionApplied: boolean;111  readonly asValidationFunctionApplied: {112    readonly relayChainBlockNum: u32;113  } & Struct;114  readonly isValidationFunctionDiscarded: boolean;115  readonly isUpgradeAuthorized: boolean;116  readonly asUpgradeAuthorized: {117    readonly codeHash: H256;118  } & Struct;119  readonly isDownwardMessagesReceived: boolean;120  readonly asDownwardMessagesReceived: {121    readonly count: u32;122  } & Struct;123  readonly isDownwardMessagesProcessed: boolean;124  readonly asDownwardMessagesProcessed: {125    readonly weightUsed: u64;126    readonly dmqHead: H256;127  } & Struct;128  readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';129}130131/** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot */132export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {133  readonly dmqMqcHead: H256;134  readonly relayDispatchQueueSize: ITuple<[u32, u32]>;135  readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;136  readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;137}138139/** @name CumulusPalletXcmCall */140export interface CumulusPalletXcmCall extends Null {}141142/** @name CumulusPalletXcmError */143export interface CumulusPalletXcmError extends Null {}144145/** @name CumulusPalletXcmEvent */146export interface CumulusPalletXcmEvent extends Enum {147  readonly isInvalidFormat: boolean;148  readonly asInvalidFormat: U8aFixed;149  readonly isUnsupportedVersion: boolean;150  readonly asUnsupportedVersion: U8aFixed;151  readonly isExecutedDownward: boolean;152  readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;153  readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';154}155156/** @name CumulusPalletXcmOrigin */157export interface CumulusPalletXcmOrigin extends Enum {158  readonly isRelay: boolean;159  readonly isSiblingParachain: boolean;160  readonly asSiblingParachain: u32;161  readonly type: 'Relay' | 'SiblingParachain';162}163164/** @name CumulusPalletXcmpQueueCall */165export interface CumulusPalletXcmpQueueCall extends Enum {166  readonly isServiceOverweight: boolean;167  readonly asServiceOverweight: {168    readonly index: u64;169    readonly weightLimit: u64;170  } & Struct;171  readonly isSuspendXcmExecution: boolean;172  readonly isResumeXcmExecution: boolean;173  readonly isUpdateSuspendThreshold: boolean;174  readonly asUpdateSuspendThreshold: {175    readonly new_: u32;176  } & Struct;177  readonly isUpdateDropThreshold: boolean;178  readonly asUpdateDropThreshold: {179    readonly new_: u32;180  } & Struct;181  readonly isUpdateResumeThreshold: boolean;182  readonly asUpdateResumeThreshold: {183    readonly new_: u32;184  } & Struct;185  readonly isUpdateThresholdWeight: boolean;186  readonly asUpdateThresholdWeight: {187    readonly new_: u64;188  } & Struct;189  readonly isUpdateWeightRestrictDecay: boolean;190  readonly asUpdateWeightRestrictDecay: {191    readonly new_: u64;192  } & Struct;193  readonly isUpdateXcmpMaxIndividualWeight: boolean;194  readonly asUpdateXcmpMaxIndividualWeight: {195    readonly new_: u64;196  } & Struct;197  readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';198}199200/** @name CumulusPalletXcmpQueueError */201export interface CumulusPalletXcmpQueueError extends Enum {202  readonly isFailedToSend: boolean;203  readonly isBadXcmOrigin: boolean;204  readonly isBadXcm: boolean;205  readonly isBadOverweightIndex: boolean;206  readonly isWeightOverLimit: boolean;207  readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';208}209210/** @name CumulusPalletXcmpQueueEvent */211export interface CumulusPalletXcmpQueueEvent extends Enum {212  readonly isSuccess: boolean;213  readonly asSuccess: {214    readonly messageHash: Option<H256>;215    readonly weight: u64;216  } & Struct;217  readonly isFail: boolean;218  readonly asFail: {219    readonly messageHash: Option<H256>;220    readonly error: XcmV2TraitsError;221    readonly weight: u64;222  } & Struct;223  readonly isBadVersion: boolean;224  readonly asBadVersion: {225    readonly messageHash: Option<H256>;226  } & Struct;227  readonly isBadFormat: boolean;228  readonly asBadFormat: {229    readonly messageHash: Option<H256>;230  } & Struct;231  readonly isUpwardMessageSent: boolean;232  readonly asUpwardMessageSent: {233    readonly messageHash: Option<H256>;234  } & Struct;235  readonly isXcmpMessageSent: boolean;236  readonly asXcmpMessageSent: {237    readonly messageHash: Option<H256>;238  } & Struct;239  readonly isOverweightEnqueued: boolean;240  readonly asOverweightEnqueued: {241    readonly sender: u32;242    readonly sentAt: u32;243    readonly index: u64;244    readonly required: u64;245  } & Struct;246  readonly isOverweightServiced: boolean;247  readonly asOverweightServiced: {248    readonly index: u64;249    readonly used: u64;250  } & Struct;251  readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';252}253254/** @name CumulusPalletXcmpQueueInboundChannelDetails */255export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {256  readonly sender: u32;257  readonly state: CumulusPalletXcmpQueueInboundState;258  readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;259}260261/** @name CumulusPalletXcmpQueueInboundState */262export interface CumulusPalletXcmpQueueInboundState extends Enum {263  readonly isOk: boolean;264  readonly isSuspended: boolean;265  readonly type: 'Ok' | 'Suspended';266}267268/** @name CumulusPalletXcmpQueueOutboundChannelDetails */269export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {270  readonly recipient: u32;271  readonly state: CumulusPalletXcmpQueueOutboundState;272  readonly signalsExist: bool;273  readonly firstIndex: u16;274  readonly lastIndex: u16;275}276277/** @name CumulusPalletXcmpQueueOutboundState */278export interface CumulusPalletXcmpQueueOutboundState extends Enum {279  readonly isOk: boolean;280  readonly isSuspended: boolean;281  readonly type: 'Ok' | 'Suspended';282}283284/** @name CumulusPalletXcmpQueueQueueConfigData */285export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {286  readonly suspendThreshold: u32;287  readonly dropThreshold: u32;288  readonly resumeThreshold: u32;289  readonly thresholdWeight: u64;290  readonly weightRestrictDecay: u64;291  readonly xcmpMaxIndividualWeight: u64;292}293294/** @name CumulusPrimitivesParachainInherentParachainInherentData */295export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {296  readonly validationData: PolkadotPrimitivesV2PersistedValidationData;297  readonly relayChainState: SpTrieStorageProof;298  readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;299  readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;300}301302/** @name EthbloomBloom */303export interface EthbloomBloom extends U8aFixed {}304305/** @name EthereumBlock */306export interface EthereumBlock extends Struct {307  readonly header: EthereumHeader;308  readonly transactions: Vec<EthereumTransactionTransactionV2>;309  readonly ommers: Vec<EthereumHeader>;310}311312/** @name EthereumHeader */313export interface EthereumHeader extends Struct {314  readonly parentHash: H256;315  readonly ommersHash: H256;316  readonly beneficiary: H160;317  readonly stateRoot: H256;318  readonly transactionsRoot: H256;319  readonly receiptsRoot: H256;320  readonly logsBloom: EthbloomBloom;321  readonly difficulty: U256;322  readonly number: U256;323  readonly gasLimit: U256;324  readonly gasUsed: U256;325  readonly timestamp: u64;326  readonly extraData: Bytes;327  readonly mixHash: H256;328  readonly nonce: EthereumTypesHashH64;329}330331/** @name EthereumLog */332export interface EthereumLog extends Struct {333  readonly address: H160;334  readonly topics: Vec<H256>;335  readonly data: Bytes;336}337338/** @name EthereumReceiptEip658ReceiptData */339export interface EthereumReceiptEip658ReceiptData extends Struct {340  readonly statusCode: u8;341  readonly usedGas: U256;342  readonly logsBloom: EthbloomBloom;343  readonly logs: Vec<EthereumLog>;344}345346/** @name EthereumReceiptReceiptV3 */347export interface EthereumReceiptReceiptV3 extends Enum {348  readonly isLegacy: boolean;349  readonly asLegacy: EthereumReceiptEip658ReceiptData;350  readonly isEip2930: boolean;351  readonly asEip2930: EthereumReceiptEip658ReceiptData;352  readonly isEip1559: boolean;353  readonly asEip1559: EthereumReceiptEip658ReceiptData;354  readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';355}356357/** @name EthereumTransactionAccessListItem */358export interface EthereumTransactionAccessListItem extends Struct {359  readonly address: H160;360  readonly storageKeys: Vec<H256>;361}362363/** @name EthereumTransactionEip1559Transaction */364export interface EthereumTransactionEip1559Transaction extends Struct {365  readonly chainId: u64;366  readonly nonce: U256;367  readonly maxPriorityFeePerGas: U256;368  readonly maxFeePerGas: U256;369  readonly gasLimit: U256;370  readonly action: EthereumTransactionTransactionAction;371  readonly value: U256;372  readonly input: Bytes;373  readonly accessList: Vec<EthereumTransactionAccessListItem>;374  readonly oddYParity: bool;375  readonly r: H256;376  readonly s: H256;377}378379/** @name EthereumTransactionEip2930Transaction */380export interface EthereumTransactionEip2930Transaction extends Struct {381  readonly chainId: u64;382  readonly nonce: U256;383  readonly gasPrice: U256;384  readonly gasLimit: U256;385  readonly action: EthereumTransactionTransactionAction;386  readonly value: U256;387  readonly input: Bytes;388  readonly accessList: Vec<EthereumTransactionAccessListItem>;389  readonly oddYParity: bool;390  readonly r: H256;391  readonly s: H256;392}393394/** @name EthereumTransactionLegacyTransaction */395export interface EthereumTransactionLegacyTransaction extends Struct {396  readonly nonce: U256;397  readonly gasPrice: U256;398  readonly gasLimit: U256;399  readonly action: EthereumTransactionTransactionAction;400  readonly value: U256;401  readonly input: Bytes;402  readonly signature: EthereumTransactionTransactionSignature;403}404405/** @name EthereumTransactionTransactionAction */406export interface EthereumTransactionTransactionAction extends Enum {407  readonly isCall: boolean;408  readonly asCall: H160;409  readonly isCreate: boolean;410  readonly type: 'Call' | 'Create';411}412413/** @name EthereumTransactionTransactionSignature */414export interface EthereumTransactionTransactionSignature extends Struct {415  readonly v: u64;416  readonly r: H256;417  readonly s: H256;418}419420/** @name EthereumTransactionTransactionV2 */421export interface EthereumTransactionTransactionV2 extends Enum {422  readonly isLegacy: boolean;423  readonly asLegacy: EthereumTransactionLegacyTransaction;424  readonly isEip2930: boolean;425  readonly asEip2930: EthereumTransactionEip2930Transaction;426  readonly isEip1559: boolean;427  readonly asEip1559: EthereumTransactionEip1559Transaction;428  readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';429}430431/** @name EthereumTypesHashH64 */432export interface EthereumTypesHashH64 extends U8aFixed {}433434/** @name EvmCoreErrorExitError */435export interface EvmCoreErrorExitError extends Enum {436  readonly isStackUnderflow: boolean;437  readonly isStackOverflow: boolean;438  readonly isInvalidJump: boolean;439  readonly isInvalidRange: boolean;440  readonly isDesignatedInvalid: boolean;441  readonly isCallTooDeep: boolean;442  readonly isCreateCollision: boolean;443  readonly isCreateContractLimit: boolean;444  readonly isOutOfOffset: boolean;445  readonly isOutOfGas: boolean;446  readonly isOutOfFund: boolean;447  readonly isPcUnderflow: boolean;448  readonly isCreateEmpty: boolean;449  readonly isOther: boolean;450  readonly asOther: Text;451  readonly isInvalidCode: boolean;452  readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';453}454455/** @name EvmCoreErrorExitFatal */456export interface EvmCoreErrorExitFatal extends Enum {457  readonly isNotSupported: boolean;458  readonly isUnhandledInterrupt: boolean;459  readonly isCallErrorAsFatal: boolean;460  readonly asCallErrorAsFatal: EvmCoreErrorExitError;461  readonly isOther: boolean;462  readonly asOther: Text;463  readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';464}465466/** @name EvmCoreErrorExitReason */467export interface EvmCoreErrorExitReason extends Enum {468  readonly isSucceed: boolean;469  readonly asSucceed: EvmCoreErrorExitSucceed;470  readonly isError: boolean;471  readonly asError: EvmCoreErrorExitError;472  readonly isRevert: boolean;473  readonly asRevert: EvmCoreErrorExitRevert;474  readonly isFatal: boolean;475  readonly asFatal: EvmCoreErrorExitFatal;476  readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';477}478479/** @name EvmCoreErrorExitRevert */480export interface EvmCoreErrorExitRevert extends Enum {481  readonly isReverted: boolean;482  readonly type: 'Reverted';483}484485/** @name EvmCoreErrorExitSucceed */486export interface EvmCoreErrorExitSucceed extends Enum {487  readonly isStopped: boolean;488  readonly isReturned: boolean;489  readonly isSuicided: boolean;490  readonly type: 'Stopped' | 'Returned' | 'Suicided';491}492493/** @name FpRpcTransactionStatus */494export interface FpRpcTransactionStatus extends Struct {495  readonly transactionHash: H256;496  readonly transactionIndex: u32;497  readonly from: H160;498  readonly to: Option<H160>;499  readonly contractAddress: Option<H160>;500  readonly logs: Vec<EthereumLog>;501  readonly logsBloom: EthbloomBloom;502}503504/** @name FrameSupportDispatchRawOrigin */505export interface FrameSupportDispatchRawOrigin extends Enum {506  readonly isRoot: boolean;507  readonly isSigned: boolean;508  readonly asSigned: AccountId32;509  readonly isNone: boolean;510  readonly type: 'Root' | 'Signed' | 'None';511}512513/** @name FrameSupportPalletId */514export interface FrameSupportPalletId extends U8aFixed {}515516/** @name FrameSupportScheduleLookupError */517export interface FrameSupportScheduleLookupError extends Enum {518  readonly isUnknown: boolean;519  readonly isBadFormat: boolean;520  readonly type: 'Unknown' | 'BadFormat';521}522523/** @name FrameSupportScheduleMaybeHashed */524export interface FrameSupportScheduleMaybeHashed extends Enum {525  readonly isValue: boolean;526  readonly asValue: Call;527  readonly isHash: boolean;528  readonly asHash: H256;529  readonly type: 'Value' | 'Hash';530}531532/** @name FrameSupportTokensMiscBalanceStatus */533export interface FrameSupportTokensMiscBalanceStatus extends Enum {534  readonly isFree: boolean;535  readonly isReserved: boolean;536  readonly type: 'Free' | 'Reserved';537}538539/** @name FrameSupportWeightsDispatchClass */540export interface FrameSupportWeightsDispatchClass extends Enum {541  readonly isNormal: boolean;542  readonly isOperational: boolean;543  readonly isMandatory: boolean;544  readonly type: 'Normal' | 'Operational' | 'Mandatory';545}546547/** @name FrameSupportWeightsDispatchInfo */548export interface FrameSupportWeightsDispatchInfo extends Struct {549  readonly weight: u64;550  readonly class: FrameSupportWeightsDispatchClass;551  readonly paysFee: FrameSupportWeightsPays;552}553554/** @name FrameSupportWeightsPays */555export interface FrameSupportWeightsPays extends Enum {556  readonly isYes: boolean;557  readonly isNo: boolean;558  readonly type: 'Yes' | 'No';559}560561/** @name FrameSupportWeightsPerDispatchClassU32 */562export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {563  readonly normal: u32;564  readonly operational: u32;565  readonly mandatory: u32;566}567568/** @name FrameSupportWeightsPerDispatchClassU64 */569export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {570  readonly normal: u64;571  readonly operational: u64;572  readonly mandatory: u64;573}574575/** @name FrameSupportWeightsPerDispatchClassWeightsPerClass */576export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {577  readonly normal: FrameSystemLimitsWeightsPerClass;578  readonly operational: FrameSystemLimitsWeightsPerClass;579  readonly mandatory: FrameSystemLimitsWeightsPerClass;580}581582/** @name FrameSupportWeightsRuntimeDbWeight */583export interface FrameSupportWeightsRuntimeDbWeight extends Struct {584  readonly read: u64;585  readonly write: u64;586}587588/** @name FrameSystemAccountInfo */589export interface FrameSystemAccountInfo extends Struct {590  readonly nonce: u32;591  readonly consumers: u32;592  readonly providers: u32;593  readonly sufficients: u32;594  readonly data: PalletBalancesAccountData;595}596597/** @name FrameSystemCall */598export interface FrameSystemCall extends Enum {599  readonly isFillBlock: boolean;600  readonly asFillBlock: {601    readonly ratio: Perbill;602  } & Struct;603  readonly isRemark: boolean;604  readonly asRemark: {605    readonly remark: Bytes;606  } & Struct;607  readonly isSetHeapPages: boolean;608  readonly asSetHeapPages: {609    readonly pages: u64;610  } & Struct;611  readonly isSetCode: boolean;612  readonly asSetCode: {613    readonly code: Bytes;614  } & Struct;615  readonly isSetCodeWithoutChecks: boolean;616  readonly asSetCodeWithoutChecks: {617    readonly code: Bytes;618  } & Struct;619  readonly isSetStorage: boolean;620  readonly asSetStorage: {621    readonly items: Vec<ITuple<[Bytes, Bytes]>>;622  } & Struct;623  readonly isKillStorage: boolean;624  readonly asKillStorage: {625    readonly keys_: Vec<Bytes>;626  } & Struct;627  readonly isKillPrefix: boolean;628  readonly asKillPrefix: {629    readonly prefix: Bytes;630    readonly subkeys: u32;631  } & Struct;632  readonly isRemarkWithEvent: boolean;633  readonly asRemarkWithEvent: {634    readonly remark: Bytes;635  } & Struct;636  readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';637}638639/** @name FrameSystemError */640export interface FrameSystemError extends Enum {641  readonly isInvalidSpecName: boolean;642  readonly isSpecVersionNeedsToIncrease: boolean;643  readonly isFailedToExtractRuntimeVersion: boolean;644  readonly isNonDefaultComposite: boolean;645  readonly isNonZeroRefCount: boolean;646  readonly isCallFiltered: boolean;647  readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';648}649650/** @name FrameSystemEvent */651export interface FrameSystemEvent extends Enum {652  readonly isExtrinsicSuccess: boolean;653  readonly asExtrinsicSuccess: {654    readonly dispatchInfo: FrameSupportWeightsDispatchInfo;655  } & Struct;656  readonly isExtrinsicFailed: boolean;657  readonly asExtrinsicFailed: {658    readonly dispatchError: SpRuntimeDispatchError;659    readonly dispatchInfo: FrameSupportWeightsDispatchInfo;660  } & Struct;661  readonly isCodeUpdated: boolean;662  readonly isNewAccount: boolean;663  readonly asNewAccount: {664    readonly account: AccountId32;665  } & Struct;666  readonly isKilledAccount: boolean;667  readonly asKilledAccount: {668    readonly account: AccountId32;669  } & Struct;670  readonly isRemarked: boolean;671  readonly asRemarked: {672    readonly sender: AccountId32;673    readonly hash_: H256;674  } & Struct;675  readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';676}677678/** @name FrameSystemEventRecord */679export interface FrameSystemEventRecord extends Struct {680  readonly phase: FrameSystemPhase;681  readonly event: Event;682  readonly topics: Vec<H256>;683}684685/** @name FrameSystemExtensionsCheckGenesis */686export interface FrameSystemExtensionsCheckGenesis extends Null {}687688/** @name FrameSystemExtensionsCheckNonce */689export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}690691/** @name FrameSystemExtensionsCheckSpecVersion */692export interface FrameSystemExtensionsCheckSpecVersion extends Null {}693694/** @name FrameSystemExtensionsCheckWeight */695export interface FrameSystemExtensionsCheckWeight extends Null {}696697/** @name FrameSystemLastRuntimeUpgradeInfo */698export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {699  readonly specVersion: Compact<u32>;700  readonly specName: Text;701}702703/** @name FrameSystemLimitsBlockLength */704export interface FrameSystemLimitsBlockLength extends Struct {705  readonly max: FrameSupportWeightsPerDispatchClassU32;706}707708/** @name FrameSystemLimitsBlockWeights */709export interface FrameSystemLimitsBlockWeights extends Struct {710  readonly baseBlock: u64;711  readonly maxBlock: u64;712  readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;713}714715/** @name FrameSystemLimitsWeightsPerClass */716export interface FrameSystemLimitsWeightsPerClass extends Struct {717  readonly baseExtrinsic: u64;718  readonly maxExtrinsic: Option<u64>;719  readonly maxTotal: Option<u64>;720  readonly reserved: Option<u64>;721}722723/** @name FrameSystemPhase */724export interface FrameSystemPhase extends Enum {725  readonly isApplyExtrinsic: boolean;726  readonly asApplyExtrinsic: u32;727  readonly isFinalization: boolean;728  readonly isInitialization: boolean;729  readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';730}731732/** @name OpalRuntimeOriginCaller */733export interface OpalRuntimeOriginCaller extends Enum {734  readonly isSystem: boolean;735  readonly asSystem: FrameSupportDispatchRawOrigin;736  readonly isVoid: boolean;737  readonly asVoid: SpCoreVoid;738  readonly isPolkadotXcm: boolean;739  readonly asPolkadotXcm: PalletXcmOrigin;740  readonly isCumulusXcm: boolean;741  readonly asCumulusXcm: CumulusPalletXcmOrigin;742  readonly isEthereum: boolean;743  readonly asEthereum: PalletEthereumRawOrigin;744  readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';745}746747/** @name OpalRuntimeRuntime */748export interface OpalRuntimeRuntime extends Null {}749750/** @name OrmlTokensAccountData */751export interface OrmlTokensAccountData extends Struct {752  readonly free: u128;753  readonly reserved: u128;754  readonly frozen: u128;755}756757/** @name OrmlTokensBalanceLock */758export interface OrmlTokensBalanceLock extends Struct {759  readonly id: U8aFixed;760  readonly amount: u128;761}762763/** @name OrmlTokensModuleCall */764export interface OrmlTokensModuleCall extends Enum {765  readonly isTransfer: boolean;766  readonly asTransfer: {767    readonly dest: MultiAddress;768    readonly currencyId: PalletForeingAssetsAssetIds;769    readonly amount: Compact<u128>;770  } & Struct;771  readonly isTransferAll: boolean;772  readonly asTransferAll: {773    readonly dest: MultiAddress;774    readonly currencyId: PalletForeingAssetsAssetIds;775    readonly keepAlive: bool;776  } & Struct;777  readonly isTransferKeepAlive: boolean;778  readonly asTransferKeepAlive: {779    readonly dest: MultiAddress;780    readonly currencyId: PalletForeingAssetsAssetIds;781    readonly amount: Compact<u128>;782  } & Struct;783  readonly isForceTransfer: boolean;784  readonly asForceTransfer: {785    readonly source: MultiAddress;786    readonly dest: MultiAddress;787    readonly currencyId: PalletForeingAssetsAssetIds;788    readonly amount: Compact<u128>;789  } & Struct;790  readonly isSetBalance: boolean;791  readonly asSetBalance: {792    readonly who: MultiAddress;793    readonly currencyId: PalletForeingAssetsAssetIds;794    readonly newFree: Compact<u128>;795    readonly newReserved: Compact<u128>;796  } & Struct;797  readonly type: 'Transfer' | 'TransferAll' | 'TransferKeepAlive' | 'ForceTransfer' | 'SetBalance';798}799800/** @name OrmlTokensModuleError */801export interface OrmlTokensModuleError extends Enum {802  readonly isBalanceTooLow: boolean;803  readonly isAmountIntoBalanceFailed: boolean;804  readonly isLiquidityRestrictions: boolean;805  readonly isMaxLocksExceeded: boolean;806  readonly isKeepAlive: boolean;807  readonly isExistentialDeposit: boolean;808  readonly isDeadAccount: boolean;809  readonly isTooManyReserves: boolean;810  readonly type: 'BalanceTooLow' | 'AmountIntoBalanceFailed' | 'LiquidityRestrictions' | 'MaxLocksExceeded' | 'KeepAlive' | 'ExistentialDeposit' | 'DeadAccount' | 'TooManyReserves';811}812813/** @name OrmlTokensModuleEvent */814export interface OrmlTokensModuleEvent extends Enum {815  readonly isEndowed: boolean;816  readonly asEndowed: {817    readonly currencyId: PalletForeingAssetsAssetIds;818    readonly who: AccountId32;819    readonly amount: u128;820  } & Struct;821  readonly isDustLost: boolean;822  readonly asDustLost: {823    readonly currencyId: PalletForeingAssetsAssetIds;824    readonly who: AccountId32;825    readonly amount: u128;826  } & Struct;827  readonly isTransfer: boolean;828  readonly asTransfer: {829    readonly currencyId: PalletForeingAssetsAssetIds;830    readonly from: AccountId32;831    readonly to: AccountId32;832    readonly amount: u128;833  } & Struct;834  readonly isReserved: boolean;835  readonly asReserved: {836    readonly currencyId: PalletForeingAssetsAssetIds;837    readonly who: AccountId32;838    readonly amount: u128;839  } & Struct;840  readonly isUnreserved: boolean;841  readonly asUnreserved: {842    readonly currencyId: PalletForeingAssetsAssetIds;843    readonly who: AccountId32;844    readonly amount: u128;845  } & Struct;846  readonly isReserveRepatriated: boolean;847  readonly asReserveRepatriated: {848    readonly currencyId: PalletForeingAssetsAssetIds;849    readonly from: AccountId32;850    readonly to: AccountId32;851    readonly amount: u128;852    readonly status: FrameSupportTokensMiscBalanceStatus;853  } & Struct;854  readonly isBalanceSet: boolean;855  readonly asBalanceSet: {856    readonly currencyId: PalletForeingAssetsAssetIds;857    readonly who: AccountId32;858    readonly free: u128;859    readonly reserved: u128;860  } & Struct;861  readonly isTotalIssuanceSet: boolean;862  readonly asTotalIssuanceSet: {863    readonly currencyId: PalletForeingAssetsAssetIds;864    readonly amount: u128;865  } & Struct;866  readonly isWithdrawn: boolean;867  readonly asWithdrawn: {868    readonly currencyId: PalletForeingAssetsAssetIds;869    readonly who: AccountId32;870    readonly amount: u128;871  } & Struct;872  readonly isSlashed: boolean;873  readonly asSlashed: {874    readonly currencyId: PalletForeingAssetsAssetIds;875    readonly who: AccountId32;876    readonly freeAmount: u128;877    readonly reservedAmount: u128;878  } & Struct;879  readonly isDeposited: boolean;880  readonly asDeposited: {881    readonly currencyId: PalletForeingAssetsAssetIds;882    readonly who: AccountId32;883    readonly amount: u128;884  } & Struct;885  readonly isLockSet: boolean;886  readonly asLockSet: {887    readonly lockId: U8aFixed;888    readonly currencyId: PalletForeingAssetsAssetIds;889    readonly who: AccountId32;890    readonly amount: u128;891  } & Struct;892  readonly isLockRemoved: boolean;893  readonly asLockRemoved: {894    readonly lockId: U8aFixed;895    readonly currencyId: PalletForeingAssetsAssetIds;896    readonly who: AccountId32;897  } & Struct;898  readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'BalanceSet' | 'TotalIssuanceSet' | 'Withdrawn' | 'Slashed' | 'Deposited' | 'LockSet' | 'LockRemoved';899}900901/** @name OrmlTokensReserveData */902export interface OrmlTokensReserveData extends Struct {903  readonly id: Null;904  readonly amount: u128;905}906907/** @name OrmlVestingModuleCall */908export interface OrmlVestingModuleCall extends Enum {909  readonly isClaim: boolean;910  readonly isVestedTransfer: boolean;911  readonly asVestedTransfer: {912    readonly dest: MultiAddress;913    readonly schedule: OrmlVestingVestingSchedule;914  } & Struct;915  readonly isUpdateVestingSchedules: boolean;916  readonly asUpdateVestingSchedules: {917    readonly who: MultiAddress;918    readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;919  } & Struct;920  readonly isClaimFor: boolean;921  readonly asClaimFor: {922    readonly dest: MultiAddress;923  } & Struct;924  readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';925}926927/** @name OrmlVestingModuleError */928export interface OrmlVestingModuleError extends Enum {929  readonly isZeroVestingPeriod: boolean;930  readonly isZeroVestingPeriodCount: boolean;931  readonly isInsufficientBalanceToLock: boolean;932  readonly isTooManyVestingSchedules: boolean;933  readonly isAmountLow: boolean;934  readonly isMaxVestingSchedulesExceeded: boolean;935  readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';936}937938/** @name OrmlVestingModuleEvent */939export interface OrmlVestingModuleEvent extends Enum {940  readonly isVestingScheduleAdded: boolean;941  readonly asVestingScheduleAdded: {942    readonly from: AccountId32;943    readonly to: AccountId32;944    readonly vestingSchedule: OrmlVestingVestingSchedule;945  } & Struct;946  readonly isClaimed: boolean;947  readonly asClaimed: {948    readonly who: AccountId32;949    readonly amount: u128;950  } & Struct;951  readonly isVestingSchedulesUpdated: boolean;952  readonly asVestingSchedulesUpdated: {953    readonly who: AccountId32;954  } & Struct;955  readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';956}957958/** @name OrmlVestingVestingSchedule */959export interface OrmlVestingVestingSchedule extends Struct {960  readonly start: u32;961  readonly period: u32;962  readonly periodCount: u32;963  readonly perPeriod: Compact<u128>;964}965966/** @name OrmlXtokensModuleCall */967export interface OrmlXtokensModuleCall extends Enum {968  readonly isTransfer: boolean;969  readonly asTransfer: {970    readonly currencyId: PalletForeingAssetsAssetIds;971    readonly amount: u128;972    readonly dest: XcmVersionedMultiLocation;973    readonly destWeight: u64;974  } & Struct;975  readonly isTransferMultiasset: boolean;976  readonly asTransferMultiasset: {977    readonly asset: XcmVersionedMultiAsset;978    readonly dest: XcmVersionedMultiLocation;979    readonly destWeight: u64;980  } & Struct;981  readonly isTransferWithFee: boolean;982  readonly asTransferWithFee: {983    readonly currencyId: PalletForeingAssetsAssetIds;984    readonly amount: u128;985    readonly fee: u128;986    readonly dest: XcmVersionedMultiLocation;987    readonly destWeight: u64;988  } & Struct;989  readonly isTransferMultiassetWithFee: boolean;990  readonly asTransferMultiassetWithFee: {991    readonly asset: XcmVersionedMultiAsset;992    readonly fee: XcmVersionedMultiAsset;993    readonly dest: XcmVersionedMultiLocation;994    readonly destWeight: u64;995  } & Struct;996  readonly isTransferMulticurrencies: boolean;997  readonly asTransferMulticurrencies: {998    readonly currencies: Vec<ITuple<[PalletForeingAssetsAssetIds, u128]>>;999    readonly feeItem: u32;1000    readonly dest: XcmVersionedMultiLocation;1001    readonly destWeight: u64;1002  } & Struct;1003  readonly isTransferMultiassets: boolean;1004  readonly asTransferMultiassets: {1005    readonly assets: XcmVersionedMultiAssets;1006    readonly feeItem: u32;1007    readonly dest: XcmVersionedMultiLocation;1008    readonly destWeight: u64;1009  } & Struct;1010  readonly type: 'Transfer' | 'TransferMultiasset' | 'TransferWithFee' | 'TransferMultiassetWithFee' | 'TransferMulticurrencies' | 'TransferMultiassets';1011}10121013/** @name OrmlXtokensModuleError */1014export interface OrmlXtokensModuleError extends Enum {1015  readonly isAssetHasNoReserve: boolean;1016  readonly isNotCrossChainTransfer: boolean;1017  readonly isInvalidDest: boolean;1018  readonly isNotCrossChainTransferableCurrency: boolean;1019  readonly isUnweighableMessage: boolean;1020  readonly isXcmExecutionFailed: boolean;1021  readonly isCannotReanchor: boolean;1022  readonly isInvalidAncestry: boolean;1023  readonly isInvalidAsset: boolean;1024  readonly isDestinationNotInvertible: boolean;1025  readonly isBadVersion: boolean;1026  readonly isDistinctReserveForAssetAndFee: boolean;1027  readonly isZeroFee: boolean;1028  readonly isZeroAmount: boolean;1029  readonly isTooManyAssetsBeingSent: boolean;1030  readonly isAssetIndexNonExistent: boolean;1031  readonly isFeeNotEnough: boolean;1032  readonly isNotSupportedMultiLocation: boolean;1033  readonly isMinXcmFeeNotDefined: boolean;1034  readonly type: 'AssetHasNoReserve' | 'NotCrossChainTransfer' | 'InvalidDest' | 'NotCrossChainTransferableCurrency' | 'UnweighableMessage' | 'XcmExecutionFailed' | 'CannotReanchor' | 'InvalidAncestry' | 'InvalidAsset' | 'DestinationNotInvertible' | 'BadVersion' | 'DistinctReserveForAssetAndFee' | 'ZeroFee' | 'ZeroAmount' | 'TooManyAssetsBeingSent' | 'AssetIndexNonExistent' | 'FeeNotEnough' | 'NotSupportedMultiLocation' | 'MinXcmFeeNotDefined';1035}10361037/** @name OrmlXtokensModuleEvent */1038export interface OrmlXtokensModuleEvent extends Enum {1039  readonly isTransferredMultiAssets: boolean;1040  readonly asTransferredMultiAssets: {1041    readonly sender: AccountId32;1042    readonly assets: XcmV1MultiassetMultiAssets;1043    readonly fee: XcmV1MultiAsset;1044    readonly dest: XcmV1MultiLocation;1045  } & Struct;1046  readonly type: 'TransferredMultiAssets';1047}10481049/** @name PalletBalancesAccountData */1050export interface PalletBalancesAccountData extends Struct {1051  readonly free: u128;1052  readonly reserved: u128;1053  readonly miscFrozen: u128;1054  readonly feeFrozen: u128;1055}10561057/** @name PalletBalancesBalanceLock */1058export interface PalletBalancesBalanceLock extends Struct {1059  readonly id: U8aFixed;1060  readonly amount: u128;1061  readonly reasons: PalletBalancesReasons;1062}10631064/** @name PalletBalancesCall */1065export interface PalletBalancesCall extends Enum {1066  readonly isTransfer: boolean;1067  readonly asTransfer: {1068    readonly dest: MultiAddress;1069    readonly value: Compact<u128>;1070  } & Struct;1071  readonly isSetBalance: boolean;1072  readonly asSetBalance: {1073    readonly who: MultiAddress;1074    readonly newFree: Compact<u128>;1075    readonly newReserved: Compact<u128>;1076  } & Struct;1077  readonly isForceTransfer: boolean;1078  readonly asForceTransfer: {1079    readonly source: MultiAddress;1080    readonly dest: MultiAddress;1081    readonly value: Compact<u128>;1082  } & Struct;1083  readonly isTransferKeepAlive: boolean;1084  readonly asTransferKeepAlive: {1085    readonly dest: MultiAddress;1086    readonly value: Compact<u128>;1087  } & Struct;1088  readonly isTransferAll: boolean;1089  readonly asTransferAll: {1090    readonly dest: MultiAddress;1091    readonly keepAlive: bool;1092  } & Struct;1093  readonly isForceUnreserve: boolean;1094  readonly asForceUnreserve: {1095    readonly who: MultiAddress;1096    readonly amount: u128;1097  } & Struct;1098  readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';1099}11001101/** @name PalletBalancesError */1102export interface PalletBalancesError extends Enum {1103  readonly isVestingBalance: boolean;1104  readonly isLiquidityRestrictions: boolean;1105  readonly isInsufficientBalance: boolean;1106  readonly isExistentialDeposit: boolean;1107  readonly isKeepAlive: boolean;1108  readonly isExistingVestingSchedule: boolean;1109  readonly isDeadAccount: boolean;1110  readonly isTooManyReserves: boolean;1111  readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';1112}11131114/** @name PalletBalancesEvent */1115export interface PalletBalancesEvent extends Enum {1116  readonly isEndowed: boolean;1117  readonly asEndowed: {1118    readonly account: AccountId32;1119    readonly freeBalance: u128;1120  } & Struct;1121  readonly isDustLost: boolean;1122  readonly asDustLost: {1123    readonly account: AccountId32;1124    readonly amount: u128;1125  } & Struct;1126  readonly isTransfer: boolean;1127  readonly asTransfer: {1128    readonly from: AccountId32;1129    readonly to: AccountId32;1130    readonly amount: u128;1131  } & Struct;1132  readonly isBalanceSet: boolean;1133  readonly asBalanceSet: {1134    readonly who: AccountId32;1135    readonly free: u128;1136    readonly reserved: u128;1137  } & Struct;1138  readonly isReserved: boolean;1139  readonly asReserved: {1140    readonly who: AccountId32;1141    readonly amount: u128;1142  } & Struct;1143  readonly isUnreserved: boolean;1144  readonly asUnreserved: {1145    readonly who: AccountId32;1146    readonly amount: u128;1147  } & Struct;1148  readonly isReserveRepatriated: boolean;1149  readonly asReserveRepatriated: {1150    readonly from: AccountId32;1151    readonly to: AccountId32;1152    readonly amount: u128;1153    readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;1154  } & Struct;1155  readonly isDeposit: boolean;1156  readonly asDeposit: {1157    readonly who: AccountId32;1158    readonly amount: u128;1159  } & Struct;1160  readonly isWithdraw: boolean;1161  readonly asWithdraw: {1162    readonly who: AccountId32;1163    readonly amount: u128;1164  } & Struct;1165  readonly isSlashed: boolean;1166  readonly asSlashed: {1167    readonly who: AccountId32;1168    readonly amount: u128;1169  } & Struct;1170  readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';1171}11721173/** @name PalletBalancesReasons */1174export interface PalletBalancesReasons extends Enum {1175  readonly isFee: boolean;1176  readonly isMisc: boolean;1177  readonly isAll: boolean;1178  readonly type: 'Fee' | 'Misc' | 'All';1179}11801181/** @name PalletBalancesReleases */1182export interface PalletBalancesReleases extends Enum {1183  readonly isV100: boolean;1184  readonly isV200: boolean;1185  readonly type: 'V100' | 'V200';1186}11871188/** @name PalletBalancesReserveData */1189export interface PalletBalancesReserveData extends Struct {1190  readonly id: U8aFixed;1191  readonly amount: u128;1192}11931194/** @name PalletCommonError */1195export interface PalletCommonError extends Enum {1196  readonly isCollectionNotFound: boolean;1197  readonly isMustBeTokenOwner: boolean;1198  readonly isNoPermission: boolean;1199  readonly isCantDestroyNotEmptyCollection: boolean;1200  readonly isPublicMintingNotAllowed: boolean;1201  readonly isAddressNotInAllowlist: boolean;1202  readonly isCollectionNameLimitExceeded: boolean;1203  readonly isCollectionDescriptionLimitExceeded: boolean;1204  readonly isCollectionTokenPrefixLimitExceeded: boolean;1205  readonly isTotalCollectionsLimitExceeded: boolean;1206  readonly isCollectionAdminCountExceeded: boolean;1207  readonly isCollectionLimitBoundsExceeded: boolean;1208  readonly isOwnerPermissionsCantBeReverted: boolean;1209  readonly isTransferNotAllowed: boolean;1210  readonly isAccountTokenLimitExceeded: boolean;1211  readonly isCollectionTokenLimitExceeded: boolean;1212  readonly isMetadataFlagFrozen: boolean;1213  readonly isTokenNotFound: boolean;1214  readonly isTokenValueTooLow: boolean;1215  readonly isApprovedValueTooLow: boolean;1216  readonly isCantApproveMoreThanOwned: boolean;1217  readonly isAddressIsZero: boolean;1218  readonly isUnsupportedOperation: boolean;1219  readonly isNotSufficientFounds: boolean;1220  readonly isUserIsNotAllowedToNest: boolean;1221  readonly isSourceCollectionIsNotAllowedToNest: boolean;1222  readonly isCollectionFieldSizeExceeded: boolean;1223  readonly isNoSpaceForProperty: boolean;1224  readonly isPropertyLimitReached: boolean;1225  readonly isPropertyKeyIsTooLong: boolean;1226  readonly isInvalidCharacterInPropertyKey: boolean;1227  readonly isEmptyPropertyKey: boolean;1228  readonly isCollectionIsExternal: boolean;1229  readonly isCollectionIsInternal: boolean;1230  readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';1231}12321233/** @name PalletCommonEvent */1234export interface PalletCommonEvent extends Enum {1235  readonly isCollectionCreated: boolean;1236  readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;1237  readonly isCollectionDestroyed: boolean;1238  readonly asCollectionDestroyed: u32;1239  readonly isItemCreated: boolean;1240  readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1241  readonly isItemDestroyed: boolean;1242  readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1243  readonly isTransfer: boolean;1244  readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1245  readonly isApproved: boolean;1246  readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1247  readonly isCollectionPropertySet: boolean;1248  readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;1249  readonly isCollectionPropertyDeleted: boolean;1250  readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;1251  readonly isTokenPropertySet: boolean;1252  readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;1253  readonly isTokenPropertyDeleted: boolean;1254  readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;1255  readonly isPropertyPermissionSet: boolean;1256  readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;1257  readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';1258}12591260/** @name PalletConfigurationCall */1261export interface PalletConfigurationCall extends Enum {1262  readonly isSetWeightToFeeCoefficientOverride: boolean;1263  readonly asSetWeightToFeeCoefficientOverride: {1264    readonly coeff: Option<u32>;1265  } & Struct;1266  readonly isSetMinGasPriceOverride: boolean;1267  readonly asSetMinGasPriceOverride: {1268    readonly coeff: Option<u64>;1269  } & Struct;1270  readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride';1271}12721273/** @name PalletEthereumCall */1274export interface PalletEthereumCall extends Enum {1275  readonly isTransact: boolean;1276  readonly asTransact: {1277    readonly transaction: EthereumTransactionTransactionV2;1278  } & Struct;1279  readonly type: 'Transact';1280}12811282/** @name PalletEthereumError */1283export interface PalletEthereumError extends Enum {1284  readonly isInvalidSignature: boolean;1285  readonly isPreLogExists: boolean;1286  readonly type: 'InvalidSignature' | 'PreLogExists';1287}12881289/** @name PalletEthereumEvent */1290export interface PalletEthereumEvent extends Enum {1291  readonly isExecuted: boolean;1292  readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;1293  readonly type: 'Executed';1294}12951296/** @name PalletEthereumFakeTransactionFinalizer */1297export interface PalletEthereumFakeTransactionFinalizer extends Null {}12981299/** @name PalletEthereumRawOrigin */1300export interface PalletEthereumRawOrigin extends Enum {1301  readonly isEthereumTransaction: boolean;1302  readonly asEthereumTransaction: H160;1303  readonly type: 'EthereumTransaction';1304}13051306/** @name PalletEvmAccountBasicCrossAccountIdRepr */1307export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1308  readonly isSubstrate: boolean;1309  readonly asSubstrate: AccountId32;1310  readonly isEthereum: boolean;1311  readonly asEthereum: H160;1312  readonly type: 'Substrate' | 'Ethereum';1313}13141315/** @name PalletEvmCall */1316export interface PalletEvmCall extends Enum {1317  readonly isWithdraw: boolean;1318  readonly asWithdraw: {1319    readonly address: H160;1320    readonly value: u128;1321  } & Struct;1322  readonly isCall: boolean;1323  readonly asCall: {1324    readonly source: H160;1325    readonly target: H160;1326    readonly input: Bytes;1327    readonly value: U256;1328    readonly gasLimit: u64;1329    readonly maxFeePerGas: U256;1330    readonly maxPriorityFeePerGas: Option<U256>;1331    readonly nonce: Option<U256>;1332    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1333  } & Struct;1334  readonly isCreate: boolean;1335  readonly asCreate: {1336    readonly source: H160;1337    readonly init: Bytes;1338    readonly value: U256;1339    readonly gasLimit: u64;1340    readonly maxFeePerGas: U256;1341    readonly maxPriorityFeePerGas: Option<U256>;1342    readonly nonce: Option<U256>;1343    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1344  } & Struct;1345  readonly isCreate2: boolean;1346  readonly asCreate2: {1347    readonly source: H160;1348    readonly init: Bytes;1349    readonly salt: H256;1350    readonly value: U256;1351    readonly gasLimit: u64;1352    readonly maxFeePerGas: U256;1353    readonly maxPriorityFeePerGas: Option<U256>;1354    readonly nonce: Option<U256>;1355    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1356  } & Struct;1357  readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1358}13591360/** @name PalletEvmCoderSubstrateError */1361export interface PalletEvmCoderSubstrateError extends Enum {1362  readonly isOutOfGas: boolean;1363  readonly isOutOfFund: boolean;1364  readonly type: 'OutOfGas' | 'OutOfFund';1365}13661367/** @name PalletEvmContractHelpersError */1368export interface PalletEvmContractHelpersError extends Enum {1369  readonly isNoPermission: boolean;1370  readonly type: 'NoPermission';1371}13721373/** @name PalletEvmContractHelpersSponsoringModeT */1374export interface PalletEvmContractHelpersSponsoringModeT extends Enum {1375  readonly isDisabled: boolean;1376  readonly isAllowlisted: boolean;1377  readonly isGenerous: boolean;1378  readonly type: 'Disabled' | 'Allowlisted' | 'Generous';1379}13801381/** @name PalletEvmError */1382export interface PalletEvmError extends Enum {1383  readonly isBalanceLow: boolean;1384  readonly isFeeOverflow: boolean;1385  readonly isPaymentOverflow: boolean;1386  readonly isWithdrawFailed: boolean;1387  readonly isGasPriceTooLow: boolean;1388  readonly isInvalidNonce: boolean;1389  readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';1390}13911392/** @name PalletEvmEvent */1393export interface PalletEvmEvent extends Enum {1394  readonly isLog: boolean;1395  readonly asLog: EthereumLog;1396  readonly isCreated: boolean;1397  readonly asCreated: H160;1398  readonly isCreatedFailed: boolean;1399  readonly asCreatedFailed: H160;1400  readonly isExecuted: boolean;1401  readonly asExecuted: H160;1402  readonly isExecutedFailed: boolean;1403  readonly asExecutedFailed: H160;1404  readonly isBalanceDeposit: boolean;1405  readonly asBalanceDeposit: ITuple<[AccountId32, H160, U256]>;1406  readonly isBalanceWithdraw: boolean;1407  readonly asBalanceWithdraw: ITuple<[AccountId32, H160, U256]>;1408  readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';1409}14101411/** @name PalletEvmMigrationCall */1412export interface PalletEvmMigrationCall extends Enum {1413  readonly isBegin: boolean;1414  readonly asBegin: {1415    readonly address: H160;1416  } & Struct;1417  readonly isSetData: boolean;1418  readonly asSetData: {1419    readonly address: H160;1420    readonly data: Vec<ITuple<[H256, H256]>>;1421  } & Struct;1422  readonly isFinish: boolean;1423  readonly asFinish: {1424    readonly address: H160;1425    readonly code: Bytes;1426  } & Struct;1427  readonly type: 'Begin' | 'SetData' | 'Finish';1428}14291430/** @name PalletEvmMigrationError */1431export interface PalletEvmMigrationError extends Enum {1432  readonly isAccountNotEmpty: boolean;1433  readonly isAccountIsNotMigrating: boolean;1434  readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';1435}14361437/** @name PalletForeingAssetsAssetIds */1438export interface PalletForeingAssetsAssetIds extends Enum {1439  readonly isForeignAssetId: boolean;1440  readonly asForeignAssetId: u32;1441  readonly isNativeAssetId: boolean;1442  readonly asNativeAssetId: PalletForeingAssetsNativeCurrency;1443  readonly type: 'ForeignAssetId' | 'NativeAssetId';1444}14451446/** @name PalletForeingAssetsModuleAssetMetadata */1447export interface PalletForeingAssetsModuleAssetMetadata extends Struct {1448  readonly name: Bytes;1449  readonly symbol: Bytes;1450  readonly decimals: u8;1451  readonly minimalBalance: u128;1452}14531454/** @name PalletForeingAssetsModuleCall */1455export interface PalletForeingAssetsModuleCall extends Enum {1456  readonly isRegisterForeignAsset: boolean;1457  readonly asRegisterForeignAsset: {1458    readonly owner: AccountId32;1459    readonly location: XcmVersionedMultiLocation;1460    readonly metadata: PalletForeingAssetsModuleAssetMetadata;1461  } & Struct;1462  readonly isUpdateForeignAsset: boolean;1463  readonly asUpdateForeignAsset: {1464    readonly foreignAssetId: u32;1465    readonly location: XcmVersionedMultiLocation;1466    readonly metadata: PalletForeingAssetsModuleAssetMetadata;1467  } & Struct;1468  readonly type: 'RegisterForeignAsset' | 'UpdateForeignAsset';1469}14701471/** @name PalletForeingAssetsModuleError */1472export interface PalletForeingAssetsModuleError extends Enum {1473  readonly isBadLocation: boolean;1474  readonly isMultiLocationExisted: boolean;1475  readonly isAssetIdNotExists: boolean;1476  readonly isAssetIdExisted: boolean;1477  readonly type: 'BadLocation' | 'MultiLocationExisted' | 'AssetIdNotExists' | 'AssetIdExisted';1478}14791480/** @name PalletForeingAssetsModuleEvent */1481export interface PalletForeingAssetsModuleEvent extends Enum {1482  readonly isForeignAssetRegistered: boolean;1483  readonly asForeignAssetRegistered: {1484    readonly assetId: u32;1485    readonly assetAddress: XcmV1MultiLocation;1486    readonly metadata: PalletForeingAssetsModuleAssetMetadata;1487  } & Struct;1488  readonly isForeignAssetUpdated: boolean;1489  readonly asForeignAssetUpdated: {1490    readonly assetId: u32;1491    readonly assetAddress: XcmV1MultiLocation;1492    readonly metadata: PalletForeingAssetsModuleAssetMetadata;1493  } & Struct;1494  readonly isAssetRegistered: boolean;1495  readonly asAssetRegistered: {1496    readonly assetId: PalletForeingAssetsAssetIds;1497    readonly metadata: PalletForeingAssetsModuleAssetMetadata;1498  } & Struct;1499  readonly isAssetUpdated: boolean;1500  readonly asAssetUpdated: {1501    readonly assetId: PalletForeingAssetsAssetIds;1502    readonly metadata: PalletForeingAssetsModuleAssetMetadata;1503  } & Struct;1504  readonly type: 'ForeignAssetRegistered' | 'ForeignAssetUpdated' | 'AssetRegistered' | 'AssetUpdated';1505}15061507/** @name PalletForeingAssetsNativeCurrency */1508export interface PalletForeingAssetsNativeCurrency extends Enum {1509  readonly isHere: boolean;1510  readonly isParent: boolean;1511  readonly type: 'Here' | 'Parent';1512}15131514/** @name PalletFungibleError */1515export interface PalletFungibleError extends Enum {1516  readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;1517  readonly isFungibleItemsHaveNoId: boolean;1518  readonly isFungibleItemsDontHaveData: boolean;1519  readonly isFungibleDisallowsNesting: boolean;1520  readonly isSettingPropertiesNotAllowed: boolean;1521  readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1522}15231524/** @name PalletInflationCall */1525export interface PalletInflationCall extends Enum {1526  readonly isStartInflation: boolean;1527  readonly asStartInflation: {1528    readonly inflationStartRelayBlock: u32;1529  } & Struct;1530  readonly type: 'StartInflation';1531}15321533/** @name PalletNonfungibleError */1534export interface PalletNonfungibleError extends Enum {1535  readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;1536  readonly isNonfungibleItemsHaveNoAmount: boolean;1537  readonly isCantBurnNftWithChildren: boolean;1538  readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';1539}15401541/** @name PalletNonfungibleItemData */1542export interface PalletNonfungibleItemData extends Struct {1543  readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1544}15451546/** @name PalletRefungibleError */1547export interface PalletRefungibleError extends Enum {1548  readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;1549  readonly isWrongRefungiblePieces: boolean;1550  readonly isRepartitionWhileNotOwningAllPieces: boolean;1551  readonly isRefungibleDisallowsNesting: boolean;1552  readonly isSettingPropertiesNotAllowed: boolean;1553  readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1554}15551556/** @name PalletRefungibleItemData */1557export interface PalletRefungibleItemData extends Struct {1558  readonly constData: Bytes;1559}15601561/** @name PalletRmrkCoreCall */1562export interface PalletRmrkCoreCall extends Enum {1563  readonly isCreateCollection: boolean;1564  readonly asCreateCollection: {1565    readonly metadata: Bytes;1566    readonly max: Option<u32>;1567    readonly symbol: Bytes;1568  } & Struct;1569  readonly isDestroyCollection: boolean;1570  readonly asDestroyCollection: {1571    readonly collectionId: u32;1572  } & Struct;1573  readonly isChangeCollectionIssuer: boolean;1574  readonly asChangeCollectionIssuer: {1575    readonly collectionId: u32;1576    readonly newIssuer: MultiAddress;1577  } & Struct;1578  readonly isLockCollection: boolean;1579  readonly asLockCollection: {1580    readonly collectionId: u32;1581  } & Struct;1582  readonly isMintNft: boolean;1583  readonly asMintNft: {1584    readonly owner: Option<AccountId32>;1585    readonly collectionId: u32;1586    readonly recipient: Option<AccountId32>;1587    readonly royaltyAmount: Option<Permill>;1588    readonly metadata: Bytes;1589    readonly transferable: bool;1590    readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;1591  } & Struct;1592  readonly isBurnNft: boolean;1593  readonly asBurnNft: {1594    readonly collectionId: u32;1595    readonly nftId: u32;1596    readonly maxBurns: u32;1597  } & Struct;1598  readonly isSend: boolean;1599  readonly asSend: {1600    readonly rmrkCollectionId: u32;1601    readonly rmrkNftId: u32;1602    readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1603  } & Struct;1604  readonly isAcceptNft: boolean;1605  readonly asAcceptNft: {1606    readonly rmrkCollectionId: u32;1607    readonly rmrkNftId: u32;1608    readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1609  } & Struct;1610  readonly isRejectNft: boolean;1611  readonly asRejectNft: {1612    readonly rmrkCollectionId: u32;1613    readonly rmrkNftId: u32;1614  } & Struct;1615  readonly isAcceptResource: boolean;1616  readonly asAcceptResource: {1617    readonly rmrkCollectionId: u32;1618    readonly rmrkNftId: u32;1619    readonly resourceId: u32;1620  } & Struct;1621  readonly isAcceptResourceRemoval: boolean;1622  readonly asAcceptResourceRemoval: {1623    readonly rmrkCollectionId: u32;1624    readonly rmrkNftId: u32;1625    readonly resourceId: u32;1626  } & Struct;1627  readonly isSetProperty: boolean;1628  readonly asSetProperty: {1629    readonly rmrkCollectionId: Compact<u32>;1630    readonly maybeNftId: Option<u32>;1631    readonly key: Bytes;1632    readonly value: Bytes;1633  } & Struct;1634  readonly isSetPriority: boolean;1635  readonly asSetPriority: {1636    readonly rmrkCollectionId: u32;1637    readonly rmrkNftId: u32;1638    readonly priorities: Vec<u32>;1639  } & Struct;1640  readonly isAddBasicResource: boolean;1641  readonly asAddBasicResource: {1642    readonly rmrkCollectionId: u32;1643    readonly nftId: u32;1644    readonly resource: RmrkTraitsResourceBasicResource;1645  } & Struct;1646  readonly isAddComposableResource: boolean;1647  readonly asAddComposableResource: {1648    readonly rmrkCollectionId: u32;1649    readonly nftId: u32;1650    readonly resource: RmrkTraitsResourceComposableResource;1651  } & Struct;1652  readonly isAddSlotResource: boolean;1653  readonly asAddSlotResource: {1654    readonly rmrkCollectionId: u32;1655    readonly nftId: u32;1656    readonly resource: RmrkTraitsResourceSlotResource;1657  } & Struct;1658  readonly isRemoveResource: boolean;1659  readonly asRemoveResource: {1660    readonly rmrkCollectionId: u32;1661    readonly nftId: u32;1662    readonly resourceId: u32;1663  } & Struct;1664  readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1665}16661667/** @name PalletRmrkCoreError */1668export interface PalletRmrkCoreError extends Enum {1669  readonly isCorruptedCollectionType: boolean;1670  readonly isRmrkPropertyKeyIsTooLong: boolean;1671  readonly isRmrkPropertyValueIsTooLong: boolean;1672  readonly isRmrkPropertyIsNotFound: boolean;1673  readonly isUnableToDecodeRmrkData: boolean;1674  readonly isCollectionNotEmpty: boolean;1675  readonly isNoAvailableCollectionId: boolean;1676  readonly isNoAvailableNftId: boolean;1677  readonly isCollectionUnknown: boolean;1678  readonly isNoPermission: boolean;1679  readonly isNonTransferable: boolean;1680  readonly isCollectionFullOrLocked: boolean;1681  readonly isResourceDoesntExist: boolean;1682  readonly isCannotSendToDescendentOrSelf: boolean;1683  readonly isCannotAcceptNonOwnedNft: boolean;1684  readonly isCannotRejectNonOwnedNft: boolean;1685  readonly isCannotRejectNonPendingNft: boolean;1686  readonly isResourceNotPending: boolean;1687  readonly isNoAvailableResourceId: boolean;1688  readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';1689}16901691/** @name PalletRmrkCoreEvent */1692export interface PalletRmrkCoreEvent extends Enum {1693  readonly isCollectionCreated: boolean;1694  readonly asCollectionCreated: {1695    readonly issuer: AccountId32;1696    readonly collectionId: u32;1697  } & Struct;1698  readonly isCollectionDestroyed: boolean;1699  readonly asCollectionDestroyed: {1700    readonly issuer: AccountId32;1701    readonly collectionId: u32;1702  } & Struct;1703  readonly isIssuerChanged: boolean;1704  readonly asIssuerChanged: {1705    readonly oldIssuer: AccountId32;1706    readonly newIssuer: AccountId32;1707    readonly collectionId: u32;1708  } & Struct;1709  readonly isCollectionLocked: boolean;1710  readonly asCollectionLocked: {1711    readonly issuer: AccountId32;1712    readonly collectionId: u32;1713  } & Struct;1714  readonly isNftMinted: boolean;1715  readonly asNftMinted: {1716    readonly owner: AccountId32;1717    readonly collectionId: u32;1718    readonly nftId: u32;1719  } & Struct;1720  readonly isNftBurned: boolean;1721  readonly asNftBurned: {1722    readonly owner: AccountId32;1723    readonly nftId: u32;1724  } & Struct;1725  readonly isNftSent: boolean;1726  readonly asNftSent: {1727    readonly sender: AccountId32;1728    readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1729    readonly collectionId: u32;1730    readonly nftId: u32;1731    readonly approvalRequired: bool;1732  } & Struct;1733  readonly isNftAccepted: boolean;1734  readonly asNftAccepted: {1735    readonly sender: AccountId32;1736    readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1737    readonly collectionId: u32;1738    readonly nftId: u32;1739  } & Struct;1740  readonly isNftRejected: boolean;1741  readonly asNftRejected: {1742    readonly sender: AccountId32;1743    readonly collectionId: u32;1744    readonly nftId: u32;1745  } & Struct;1746  readonly isPropertySet: boolean;1747  readonly asPropertySet: {1748    readonly collectionId: u32;1749    readonly maybeNftId: Option<u32>;1750    readonly key: Bytes;1751    readonly value: Bytes;1752  } & Struct;1753  readonly isResourceAdded: boolean;1754  readonly asResourceAdded: {1755    readonly nftId: u32;1756    readonly resourceId: u32;1757  } & Struct;1758  readonly isResourceRemoval: boolean;1759  readonly asResourceRemoval: {1760    readonly nftId: u32;1761    readonly resourceId: u32;1762  } & Struct;1763  readonly isResourceAccepted: boolean;1764  readonly asResourceAccepted: {1765    readonly nftId: u32;1766    readonly resourceId: u32;1767  } & Struct;1768  readonly isResourceRemovalAccepted: boolean;1769  readonly asResourceRemovalAccepted: {1770    readonly nftId: u32;1771    readonly resourceId: u32;1772  } & Struct;1773  readonly isPrioritySet: boolean;1774  readonly asPrioritySet: {1775    readonly collectionId: u32;1776    readonly nftId: u32;1777  } & Struct;1778  readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';1779}17801781/** @name PalletRmrkEquipCall */1782export interface PalletRmrkEquipCall extends Enum {1783  readonly isCreateBase: boolean;1784  readonly asCreateBase: {1785    readonly baseType: Bytes;1786    readonly symbol: Bytes;1787    readonly parts: Vec<RmrkTraitsPartPartType>;1788  } & Struct;1789  readonly isThemeAdd: boolean;1790  readonly asThemeAdd: {1791    readonly baseId: u32;1792    readonly theme: RmrkTraitsTheme;1793  } & Struct;1794  readonly isEquippable: boolean;1795  readonly asEquippable: {1796    readonly baseId: u32;1797    readonly slotId: u32;1798    readonly equippables: RmrkTraitsPartEquippableList;1799  } & Struct;1800  readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';1801}18021803/** @name PalletRmrkEquipError */1804export interface PalletRmrkEquipError extends Enum {1805  readonly isPermissionError: boolean;1806  readonly isNoAvailableBaseId: boolean;1807  readonly isNoAvailablePartId: boolean;1808  readonly isBaseDoesntExist: boolean;1809  readonly isNeedsDefaultThemeFirst: boolean;1810  readonly isPartDoesntExist: boolean;1811  readonly isNoEquippableOnFixedPart: boolean;1812  readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';1813}18141815/** @name PalletRmrkEquipEvent */1816export interface PalletRmrkEquipEvent extends Enum {1817  readonly isBaseCreated: boolean;1818  readonly asBaseCreated: {1819    readonly issuer: AccountId32;1820    readonly baseId: u32;1821  } & Struct;1822  readonly isEquippablesUpdated: boolean;1823  readonly asEquippablesUpdated: {1824    readonly baseId: u32;1825    readonly slotId: u32;1826  } & Struct;1827  readonly type: 'BaseCreated' | 'EquippablesUpdated';1828}18291830/** @name PalletStructureCall */1831export interface PalletStructureCall extends Null {}18321833/** @name PalletStructureError */1834export interface PalletStructureError extends Enum {1835  readonly isOuroborosDetected: boolean;1836  readonly isDepthLimit: boolean;1837  readonly isBreadthLimit: boolean;1838  readonly isTokenNotFound: boolean;1839  readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';1840}18411842/** @name PalletStructureEvent */1843export interface PalletStructureEvent extends Enum {1844  readonly isExecuted: boolean;1845  readonly asExecuted: Result<Null, SpRuntimeDispatchError>;1846  readonly type: 'Executed';1847}18481849/** @name PalletSudoCall */1850export interface PalletSudoCall extends Enum {1851  readonly isSudo: boolean;1852  readonly asSudo: {1853    readonly call: Call;1854  } & Struct;1855  readonly isSudoUncheckedWeight: boolean;1856  readonly asSudoUncheckedWeight: {1857    readonly call: Call;1858    readonly weight: u64;1859  } & Struct;1860  readonly isSetKey: boolean;1861  readonly asSetKey: {1862    readonly new_: MultiAddress;1863  } & Struct;1864  readonly isSudoAs: boolean;1865  readonly asSudoAs: {1866    readonly who: MultiAddress;1867    readonly call: Call;1868  } & Struct;1869  readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';1870}18711872/** @name PalletSudoError */1873export interface PalletSudoError extends Enum {1874  readonly isRequireSudo: boolean;1875  readonly type: 'RequireSudo';1876}18771878/** @name PalletSudoEvent */1879export interface PalletSudoEvent extends Enum {1880  readonly isSudid: boolean;1881  readonly asSudid: {1882    readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1883  } & Struct;1884  readonly isKeyChanged: boolean;1885  readonly asKeyChanged: {1886    readonly oldSudoer: Option<AccountId32>;1887  } & Struct;1888  readonly isSudoAsDone: boolean;1889  readonly asSudoAsDone: {1890    readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1891  } & Struct;1892  readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1893}18941895/** @name PalletTemplateTransactionPaymentCall */1896export interface PalletTemplateTransactionPaymentCall extends Null {}18971898/** @name PalletTemplateTransactionPaymentChargeTransactionPayment */1899export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}19001901/** @name PalletTimestampCall */1902export interface PalletTimestampCall extends Enum {1903  readonly isSet: boolean;1904  readonly asSet: {1905    readonly now: Compact<u64>;1906  } & Struct;1907  readonly type: 'Set';1908}19091910/** @name PalletTransactionPaymentEvent */1911export interface PalletTransactionPaymentEvent extends Enum {1912  readonly isTransactionFeePaid: boolean;1913  readonly asTransactionFeePaid: {1914    readonly who: AccountId32;1915    readonly actualFee: u128;1916    readonly tip: u128;1917  } & Struct;1918  readonly type: 'TransactionFeePaid';1919}19201921/** @name PalletTransactionPaymentReleases */1922export interface PalletTransactionPaymentReleases extends Enum {1923  readonly isV1Ancient: boolean;1924  readonly isV2: boolean;1925  readonly type: 'V1Ancient' | 'V2';1926}19271928/** @name PalletTreasuryCall */1929export interface PalletTreasuryCall extends Enum {1930  readonly isProposeSpend: boolean;1931  readonly asProposeSpend: {1932    readonly value: Compact<u128>;1933    readonly beneficiary: MultiAddress;1934  } & Struct;1935  readonly isRejectProposal: boolean;1936  readonly asRejectProposal: {1937    readonly proposalId: Compact<u32>;1938  } & Struct;1939  readonly isApproveProposal: boolean;1940  readonly asApproveProposal: {1941    readonly proposalId: Compact<u32>;1942  } & Struct;1943  readonly isSpend: boolean;1944  readonly asSpend: {1945    readonly amount: Compact<u128>;1946    readonly beneficiary: MultiAddress;1947  } & Struct;1948  readonly isRemoveApproval: boolean;1949  readonly asRemoveApproval: {1950    readonly proposalId: Compact<u32>;1951  } & Struct;1952  readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';1953}19541955/** @name PalletTreasuryError */1956export interface PalletTreasuryError extends Enum {1957  readonly isInsufficientProposersBalance: boolean;1958  readonly isInvalidIndex: boolean;1959  readonly isTooManyApprovals: boolean;1960  readonly isInsufficientPermission: boolean;1961  readonly isProposalNotApproved: boolean;1962  readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';1963}19641965/** @name PalletTreasuryEvent */1966export interface PalletTreasuryEvent extends Enum {1967  readonly isProposed: boolean;1968  readonly asProposed: {1969    readonly proposalIndex: u32;1970  } & Struct;1971  readonly isSpending: boolean;1972  readonly asSpending: {1973    readonly budgetRemaining: u128;1974  } & Struct;1975  readonly isAwarded: boolean;1976  readonly asAwarded: {1977    readonly proposalIndex: u32;1978    readonly award: u128;1979    readonly account: AccountId32;1980  } & Struct;1981  readonly isRejected: boolean;1982  readonly asRejected: {1983    readonly proposalIndex: u32;1984    readonly slashed: u128;1985  } & Struct;1986  readonly isBurnt: boolean;1987  readonly asBurnt: {1988    readonly burntFunds: u128;1989  } & Struct;1990  readonly isRollover: boolean;1991  readonly asRollover: {1992    readonly rolloverBalance: u128;1993  } & Struct;1994  readonly isDeposit: boolean;1995  readonly asDeposit: {1996    readonly value: u128;1997  } & Struct;1998  readonly isSpendApproved: boolean;1999  readonly asSpendApproved: {2000    readonly proposalIndex: u32;2001    readonly amount: u128;2002    readonly beneficiary: AccountId32;2003  } & Struct;2004  readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit' | 'SpendApproved';2005}20062007/** @name PalletTreasuryProposal */2008export interface PalletTreasuryProposal extends Struct {2009  readonly proposer: AccountId32;2010  readonly value: u128;2011  readonly beneficiary: AccountId32;2012  readonly bond: u128;2013}20142015/** @name PalletUniqueCall */2016export interface PalletUniqueCall extends Enum {2017  readonly isCreateCollection: boolean;2018  readonly asCreateCollection: {2019    readonly collectionName: Vec<u16>;2020    readonly collectionDescription: Vec<u16>;2021    readonly tokenPrefix: Bytes;2022    readonly mode: UpDataStructsCollectionMode;2023  } & Struct;2024  readonly isCreateCollectionEx: boolean;2025  readonly asCreateCollectionEx: {2026    readonly data: UpDataStructsCreateCollectionData;2027  } & Struct;2028  readonly isDestroyCollection: boolean;2029  readonly asDestroyCollection: {2030    readonly collectionId: u32;2031  } & Struct;2032  readonly isAddToAllowList: boolean;2033  readonly asAddToAllowList: {2034    readonly collectionId: u32;2035    readonly address: PalletEvmAccountBasicCrossAccountIdRepr;2036  } & Struct;2037  readonly isRemoveFromAllowList: boolean;2038  readonly asRemoveFromAllowList: {2039    readonly collectionId: u32;2040    readonly address: PalletEvmAccountBasicCrossAccountIdRepr;2041  } & Struct;2042  readonly isChangeCollectionOwner: boolean;2043  readonly asChangeCollectionOwner: {2044    readonly collectionId: u32;2045    readonly newOwner: AccountId32;2046  } & Struct;2047  readonly isAddCollectionAdmin: boolean;2048  readonly asAddCollectionAdmin: {2049    readonly collectionId: u32;2050    readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;2051  } & Struct;2052  readonly isRemoveCollectionAdmin: boolean;2053  readonly asRemoveCollectionAdmin: {2054    readonly collectionId: u32;2055    readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;2056  } & Struct;2057  readonly isSetCollectionSponsor: boolean;2058  readonly asSetCollectionSponsor: {2059    readonly collectionId: u32;2060    readonly newSponsor: AccountId32;2061  } & Struct;2062  readonly isConfirmSponsorship: boolean;2063  readonly asConfirmSponsorship: {2064    readonly collectionId: u32;2065  } & Struct;2066  readonly isRemoveCollectionSponsor: boolean;2067  readonly asRemoveCollectionSponsor: {2068    readonly collectionId: u32;2069  } & Struct;2070  readonly isCreateItem: boolean;2071  readonly asCreateItem: {2072    readonly collectionId: u32;2073    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2074    readonly data: UpDataStructsCreateItemData;2075  } & Struct;2076  readonly isCreateMultipleItems: boolean;2077  readonly asCreateMultipleItems: {2078    readonly collectionId: u32;2079    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2080    readonly itemsData: Vec<UpDataStructsCreateItemData>;2081  } & Struct;2082  readonly isSetCollectionProperties: boolean;2083  readonly asSetCollectionProperties: {2084    readonly collectionId: u32;2085    readonly properties: Vec<UpDataStructsProperty>;2086  } & Struct;2087  readonly isDeleteCollectionProperties: boolean;2088  readonly asDeleteCollectionProperties: {2089    readonly collectionId: u32;2090    readonly propertyKeys: Vec<Bytes>;2091  } & Struct;2092  readonly isSetTokenProperties: boolean;2093  readonly asSetTokenProperties: {2094    readonly collectionId: u32;2095    readonly tokenId: u32;2096    readonly properties: Vec<UpDataStructsProperty>;2097  } & Struct;2098  readonly isDeleteTokenProperties: boolean;2099  readonly asDeleteTokenProperties: {2100    readonly collectionId: u32;2101    readonly tokenId: u32;2102    readonly propertyKeys: Vec<Bytes>;2103  } & Struct;2104  readonly isSetTokenPropertyPermissions: boolean;2105  readonly asSetTokenPropertyPermissions: {2106    readonly collectionId: u32;2107    readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2108  } & Struct;2109  readonly isCreateMultipleItemsEx: boolean;2110  readonly asCreateMultipleItemsEx: {2111    readonly collectionId: u32;2112    readonly data: UpDataStructsCreateItemExData;2113  } & Struct;2114  readonly isSetTransfersEnabledFlag: boolean;2115  readonly asSetTransfersEnabledFlag: {2116    readonly collectionId: u32;2117    readonly value: bool;2118  } & Struct;2119  readonly isBurnItem: boolean;2120  readonly asBurnItem: {2121    readonly collectionId: u32;2122    readonly itemId: u32;2123    readonly value: u128;2124  } & Struct;2125  readonly isBurnFrom: boolean;2126  readonly asBurnFrom: {2127    readonly collectionId: u32;2128    readonly from: PalletEvmAccountBasicCrossAccountIdRepr;2129    readonly itemId: u32;2130    readonly value: u128;2131  } & Struct;2132  readonly isTransfer: boolean;2133  readonly asTransfer: {2134    readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;2135    readonly collectionId: u32;2136    readonly itemId: u32;2137    readonly value: u128;2138  } & Struct;2139  readonly isApprove: boolean;2140  readonly asApprove: {2141    readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;2142    readonly collectionId: u32;2143    readonly itemId: u32;2144    readonly amount: u128;2145  } & Struct;2146  readonly isTransferFrom: boolean;2147  readonly asTransferFrom: {2148    readonly from: PalletEvmAccountBasicCrossAccountIdRepr;2149    readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;2150    readonly collectionId: u32;2151    readonly itemId: u32;2152    readonly value: u128;2153  } & Struct;2154  readonly isSetCollectionLimits: boolean;2155  readonly asSetCollectionLimits: {2156    readonly collectionId: u32;2157    readonly newLimit: UpDataStructsCollectionLimits;2158  } & Struct;2159  readonly isSetCollectionPermissions: boolean;2160  readonly asSetCollectionPermissions: {2161    readonly collectionId: u32;2162    readonly newPermission: UpDataStructsCollectionPermissions;2163  } & Struct;2164  readonly isRepartition: boolean;2165  readonly asRepartition: {2166    readonly collectionId: u32;2167    readonly tokenId: u32;2168    readonly amount: u128;2169  } & Struct;2170  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition';2171}21722173/** @name PalletUniqueError */2174export interface PalletUniqueError extends Enum {2175  readonly isCollectionDecimalPointLimitExceeded: boolean;2176  readonly isConfirmUnsetSponsorFail: boolean;2177  readonly isEmptyArgument: boolean;2178  readonly isRepartitionCalledOnNonRefungibleCollection: boolean;2179  readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';2180}21812182/** @name PalletUniqueRawEvent */2183export interface PalletUniqueRawEvent extends Enum {2184  readonly isCollectionSponsorRemoved: boolean;2185  readonly asCollectionSponsorRemoved: u32;2186  readonly isCollectionAdminAdded: boolean;2187  readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2188  readonly isCollectionOwnedChanged: boolean;2189  readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;2190  readonly isCollectionSponsorSet: boolean;2191  readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;2192  readonly isSponsorshipConfirmed: boolean;2193  readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;2194  readonly isCollectionAdminRemoved: boolean;2195  readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2196  readonly isAllowListAddressRemoved: boolean;2197  readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2198  readonly isAllowListAddressAdded: boolean;2199  readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2200  readonly isCollectionLimitSet: boolean;2201  readonly asCollectionLimitSet: u32;2202  readonly isCollectionPermissionSet: boolean;2203  readonly asCollectionPermissionSet: u32;2204  readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';2205}22062207/** @name PalletUniqueSchedulerCall */2208export interface PalletUniqueSchedulerCall extends Enum {2209  readonly isScheduleNamed: boolean;2210  readonly asScheduleNamed: {2211    readonly id: U8aFixed;2212    readonly when: u32;2213    readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2214    readonly priority: u8;2215    readonly call: FrameSupportScheduleMaybeHashed;2216  } & Struct;2217  readonly isCancelNamed: boolean;2218  readonly asCancelNamed: {2219    readonly id: U8aFixed;2220  } & Struct;2221  readonly isScheduleNamedAfter: boolean;2222  readonly asScheduleNamedAfter: {2223    readonly id: U8aFixed;2224    readonly after: u32;2225    readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2226    readonly priority: u8;2227    readonly call: FrameSupportScheduleMaybeHashed;2228  } & Struct;2229  readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';2230}22312232/** @name PalletUniqueSchedulerError */2233export interface PalletUniqueSchedulerError extends Enum {2234  readonly isFailedToSchedule: boolean;2235  readonly isNotFound: boolean;2236  readonly isTargetBlockNumberInPast: boolean;2237  readonly isRescheduleNoChange: boolean;2238  readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';2239}22402241/** @name PalletUniqueSchedulerEvent */2242export interface PalletUniqueSchedulerEvent extends Enum {2243  readonly isScheduled: boolean;2244  readonly asScheduled: {2245    readonly when: u32;2246    readonly index: u32;2247  } & Struct;2248  readonly isCanceled: boolean;2249  readonly asCanceled: {2250    readonly when: u32;2251    readonly index: u32;2252  } & Struct;2253  readonly isDispatched: boolean;2254  readonly asDispatched: {2255    readonly task: ITuple<[u32, u32]>;2256    readonly id: Option<U8aFixed>;2257    readonly result: Result<Null, SpRuntimeDispatchError>;2258  } & Struct;2259  readonly isCallLookupFailed: boolean;2260  readonly asCallLookupFailed: {2261    readonly task: ITuple<[u32, u32]>;2262    readonly id: Option<U8aFixed>;2263    readonly error: FrameSupportScheduleLookupError;2264  } & Struct;2265  readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';2266}22672268/** @name PalletUniqueSchedulerScheduledV3 */2269export interface PalletUniqueSchedulerScheduledV3 extends Struct {2270  readonly maybeId: Option<U8aFixed>;2271  readonly priority: u8;2272  readonly call: FrameSupportScheduleMaybeHashed;2273  readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2274  readonly origin: OpalRuntimeOriginCaller;2275}22762277/** @name PalletXcmCall */2278export interface PalletXcmCall extends Enum {2279  readonly isSend: boolean;2280  readonly asSend: {2281    readonly dest: XcmVersionedMultiLocation;2282    readonly message: XcmVersionedXcm;2283  } & Struct;2284  readonly isTeleportAssets: boolean;2285  readonly asTeleportAssets: {2286    readonly dest: XcmVersionedMultiLocation;2287    readonly beneficiary: XcmVersionedMultiLocation;2288    readonly assets: XcmVersionedMultiAssets;2289    readonly feeAssetItem: u32;2290  } & Struct;2291  readonly isReserveTransferAssets: boolean;2292  readonly asReserveTransferAssets: {2293    readonly dest: XcmVersionedMultiLocation;2294    readonly beneficiary: XcmVersionedMultiLocation;2295    readonly assets: XcmVersionedMultiAssets;2296    readonly feeAssetItem: u32;2297  } & Struct;2298  readonly isExecute: boolean;2299  readonly asExecute: {2300    readonly message: XcmVersionedXcm;2301    readonly maxWeight: u64;2302  } & Struct;2303  readonly isForceXcmVersion: boolean;2304  readonly asForceXcmVersion: {2305    readonly location: XcmV1MultiLocation;2306    readonly xcmVersion: u32;2307  } & Struct;2308  readonly isForceDefaultXcmVersion: boolean;2309  readonly asForceDefaultXcmVersion: {2310    readonly maybeXcmVersion: Option<u32>;2311  } & Struct;2312  readonly isForceSubscribeVersionNotify: boolean;2313  readonly asForceSubscribeVersionNotify: {2314    readonly location: XcmVersionedMultiLocation;2315  } & Struct;2316  readonly isForceUnsubscribeVersionNotify: boolean;2317  readonly asForceUnsubscribeVersionNotify: {2318    readonly location: XcmVersionedMultiLocation;2319  } & Struct;2320  readonly isLimitedReserveTransferAssets: boolean;2321  readonly asLimitedReserveTransferAssets: {2322    readonly dest: XcmVersionedMultiLocation;2323    readonly beneficiary: XcmVersionedMultiLocation;2324    readonly assets: XcmVersionedMultiAssets;2325    readonly feeAssetItem: u32;2326    readonly weightLimit: XcmV2WeightLimit;2327  } & Struct;2328  readonly isLimitedTeleportAssets: boolean;2329  readonly asLimitedTeleportAssets: {2330    readonly dest: XcmVersionedMultiLocation;2331    readonly beneficiary: XcmVersionedMultiLocation;2332    readonly assets: XcmVersionedMultiAssets;2333    readonly feeAssetItem: u32;2334    readonly weightLimit: XcmV2WeightLimit;2335  } & Struct;2336  readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';2337}23382339/** @name PalletXcmError */2340export interface PalletXcmError extends Enum {2341  readonly isUnreachable: boolean;2342  readonly isSendFailure: boolean;2343  readonly isFiltered: boolean;2344  readonly isUnweighableMessage: boolean;2345  readonly isDestinationNotInvertible: boolean;2346  readonly isEmpty: boolean;2347  readonly isCannotReanchor: boolean;2348  readonly isTooManyAssets: boolean;2349  readonly isInvalidOrigin: boolean;2350  readonly isBadVersion: boolean;2351  readonly isBadLocation: boolean;2352  readonly isNoSubscription: boolean;2353  readonly isAlreadySubscribed: boolean;2354  readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2355}23562357/** @name PalletXcmEvent */2358export interface PalletXcmEvent extends Enum {2359  readonly isAttempted: boolean;2360  readonly asAttempted: XcmV2TraitsOutcome;2361  readonly isSent: boolean;2362  readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;2363  readonly isUnexpectedResponse: boolean;2364  readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;2365  readonly isResponseReady: boolean;2366  readonly asResponseReady: ITuple<[u64, XcmV2Response]>;2367  readonly isNotified: boolean;2368  readonly asNotified: ITuple<[u64, u8, u8]>;2369  readonly isNotifyOverweight: boolean;2370  readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;2371  readonly isNotifyDispatchError: boolean;2372  readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;2373  readonly isNotifyDecodeFailed: boolean;2374  readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;2375  readonly isInvalidResponder: boolean;2376  readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;2377  readonly isInvalidResponderVersion: boolean;2378  readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;2379  readonly isResponseTaken: boolean;2380  readonly asResponseTaken: u64;2381  readonly isAssetsTrapped: boolean;2382  readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;2383  readonly isVersionChangeNotified: boolean;2384  readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;2385  readonly isSupportedVersionChanged: boolean;2386  readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;2387  readonly isNotifyTargetSendFail: boolean;2388  readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;2389  readonly isNotifyTargetMigrationFail: boolean;2390  readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;2391  readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2392}23932394/** @name PalletXcmOrigin */2395export interface PalletXcmOrigin extends Enum {2396  readonly isXcm: boolean;2397  readonly asXcm: XcmV1MultiLocation;2398  readonly isResponse: boolean;2399  readonly asResponse: XcmV1MultiLocation;2400  readonly type: 'Xcm' | 'Response';2401}24022403/** @name PhantomTypeUpDataStructs */2404export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}24052406/** @name PolkadotCorePrimitivesInboundDownwardMessage */2407export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {2408  readonly sentAt: u32;2409  readonly msg: Bytes;2410}24112412/** @name PolkadotCorePrimitivesInboundHrmpMessage */2413export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {2414  readonly sentAt: u32;2415  readonly data: Bytes;2416}24172418/** @name PolkadotCorePrimitivesOutboundHrmpMessage */2419export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {2420  readonly recipient: u32;2421  readonly data: Bytes;2422}24232424/** @name PolkadotParachainPrimitivesXcmpMessageFormat */2425export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2426  readonly isConcatenatedVersionedXcm: boolean;2427  readonly isConcatenatedEncodedBlob: boolean;2428  readonly isSignals: boolean;2429  readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2430}24312432/** @name PolkadotPrimitivesV2AbridgedHostConfiguration */2433export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {2434  readonly maxCodeSize: u32;2435  readonly maxHeadDataSize: u32;2436  readonly maxUpwardQueueCount: u32;2437  readonly maxUpwardQueueSize: u32;2438  readonly maxUpwardMessageSize: u32;2439  readonly maxUpwardMessageNumPerCandidate: u32;2440  readonly hrmpMaxMessageNumPerCandidate: u32;2441  readonly validationUpgradeCooldown: u32;2442  readonly validationUpgradeDelay: u32;2443}24442445/** @name PolkadotPrimitivesV2AbridgedHrmpChannel */2446export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {2447  readonly maxCapacity: u32;2448  readonly maxTotalSize: u32;2449  readonly maxMessageSize: u32;2450  readonly msgCount: u32;2451  readonly totalSize: u32;2452  readonly mqcHead: Option<H256>;2453}24542455/** @name PolkadotPrimitivesV2PersistedValidationData */2456export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {2457  readonly parentHead: Bytes;2458  readonly relayParentNumber: u32;2459  readonly relayParentStorageRoot: H256;2460  readonly maxPovSize: u32;2461}24622463/** @name PolkadotPrimitivesV2UpgradeRestriction */2464export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {2465  readonly isPresent: boolean;2466  readonly type: 'Present';2467}24682469/** @name RmrkTraitsBaseBaseInfo */2470export interface RmrkTraitsBaseBaseInfo extends Struct {2471  readonly issuer: AccountId32;2472  readonly baseType: Bytes;2473  readonly symbol: Bytes;2474}24752476/** @name RmrkTraitsCollectionCollectionInfo */2477export interface RmrkTraitsCollectionCollectionInfo extends Struct {2478  readonly issuer: AccountId32;2479  readonly metadata: Bytes;2480  readonly max: Option<u32>;2481  readonly symbol: Bytes;2482  readonly nftsCount: u32;2483}24842485/** @name RmrkTraitsNftAccountIdOrCollectionNftTuple */2486export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {2487  readonly isAccountId: boolean;2488  readonly asAccountId: AccountId32;2489  readonly isCollectionAndNftTuple: boolean;2490  readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2491  readonly type: 'AccountId' | 'CollectionAndNftTuple';2492}24932494/** @name RmrkTraitsNftNftChild */2495export interface RmrkTraitsNftNftChild extends Struct {2496  readonly collectionId: u32;2497  readonly nftId: u32;2498}24992500/** @name RmrkTraitsNftNftInfo */2501export interface RmrkTraitsNftNftInfo extends Struct {2502  readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2503  readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2504  readonly metadata: Bytes;2505  readonly equipped: bool;2506  readonly pending: bool;2507}25082509/** @name RmrkTraitsNftRoyaltyInfo */2510export interface RmrkTraitsNftRoyaltyInfo extends Struct {2511  readonly recipient: AccountId32;2512  readonly amount: Permill;2513}25142515/** @name RmrkTraitsPartEquippableList */2516export interface RmrkTraitsPartEquippableList extends Enum {2517  readonly isAll: boolean;2518  readonly isEmpty: boolean;2519  readonly isCustom: boolean;2520  readonly asCustom: Vec<u32>;2521  readonly type: 'All' | 'Empty' | 'Custom';2522}25232524/** @name RmrkTraitsPartFixedPart */2525export interface RmrkTraitsPartFixedPart extends Struct {2526  readonly id: u32;2527  readonly z: u32;2528  readonly src: Bytes;2529}25302531/** @name RmrkTraitsPartPartType */2532export interface RmrkTraitsPartPartType extends Enum {2533  readonly isFixedPart: boolean;2534  readonly asFixedPart: RmrkTraitsPartFixedPart;2535  readonly isSlotPart: boolean;2536  readonly asSlotPart: RmrkTraitsPartSlotPart;2537  readonly type: 'FixedPart' | 'SlotPart';2538}25392540/** @name RmrkTraitsPartSlotPart */2541export interface RmrkTraitsPartSlotPart extends Struct {2542  readonly id: u32;2543  readonly equippable: RmrkTraitsPartEquippableList;2544  readonly src: Bytes;2545  readonly z: u32;2546}25472548/** @name RmrkTraitsPropertyPropertyInfo */2549export interface RmrkTraitsPropertyPropertyInfo extends Struct {2550  readonly key: Bytes;2551  readonly value: Bytes;2552}25532554/** @name RmrkTraitsResourceBasicResource */2555export interface RmrkTraitsResourceBasicResource extends Struct {2556  readonly src: Option<Bytes>;2557  readonly metadata: Option<Bytes>;2558  readonly license: Option<Bytes>;2559  readonly thumb: Option<Bytes>;2560}25612562/** @name RmrkTraitsResourceComposableResource */2563export interface RmrkTraitsResourceComposableResource extends Struct {2564  readonly parts: Vec<u32>;2565  readonly base: u32;2566  readonly src: Option<Bytes>;2567  readonly metadata: Option<Bytes>;2568  readonly license: Option<Bytes>;2569  readonly thumb: Option<Bytes>;2570}25712572/** @name RmrkTraitsResourceResourceInfo */2573export interface RmrkTraitsResourceResourceInfo extends Struct {2574  readonly id: u32;2575  readonly resource: RmrkTraitsResourceResourceTypes;2576  readonly pending: bool;2577  readonly pendingRemoval: bool;2578}25792580/** @name RmrkTraitsResourceResourceTypes */2581export interface RmrkTraitsResourceResourceTypes extends Enum {2582  readonly isBasic: boolean;2583  readonly asBasic: RmrkTraitsResourceBasicResource;2584  readonly isComposable: boolean;2585  readonly asComposable: RmrkTraitsResourceComposableResource;2586  readonly isSlot: boolean;2587  readonly asSlot: RmrkTraitsResourceSlotResource;2588  readonly type: 'Basic' | 'Composable' | 'Slot';2589}25902591/** @name RmrkTraitsResourceSlotResource */2592export interface RmrkTraitsResourceSlotResource extends Struct {2593  readonly base: u32;2594  readonly src: Option<Bytes>;2595  readonly metadata: Option<Bytes>;2596  readonly slot: u32;2597  readonly license: Option<Bytes>;2598  readonly thumb: Option<Bytes>;2599}26002601/** @name RmrkTraitsTheme */2602export interface RmrkTraitsTheme extends Struct {2603  readonly name: Bytes;2604  readonly properties: Vec<RmrkTraitsThemeThemeProperty>;2605  readonly inherit: bool;2606}26072608/** @name RmrkTraitsThemeThemeProperty */2609export interface RmrkTraitsThemeThemeProperty extends Struct {2610  readonly key: Bytes;2611  readonly value: Bytes;2612}26132614/** @name SpCoreEcdsaSignature */2615export interface SpCoreEcdsaSignature extends U8aFixed {}26162617/** @name SpCoreEd25519Signature */2618export interface SpCoreEd25519Signature extends U8aFixed {}26192620/** @name SpCoreSr25519Signature */2621export interface SpCoreSr25519Signature extends U8aFixed {}26222623/** @name SpCoreVoid */2624export interface SpCoreVoid extends Null {}26252626/** @name SpRuntimeArithmeticError */2627export interface SpRuntimeArithmeticError extends Enum {2628  readonly isUnderflow: boolean;2629  readonly isOverflow: boolean;2630  readonly isDivisionByZero: boolean;2631  readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2632}26332634/** @name SpRuntimeDigest */2635export interface SpRuntimeDigest extends Struct {2636  readonly logs: Vec<SpRuntimeDigestDigestItem>;2637}26382639/** @name SpRuntimeDigestDigestItem */2640export interface SpRuntimeDigestDigestItem extends Enum {2641  readonly isOther: boolean;2642  readonly asOther: Bytes;2643  readonly isConsensus: boolean;2644  readonly asConsensus: ITuple<[U8aFixed, Bytes]>;2645  readonly isSeal: boolean;2646  readonly asSeal: ITuple<[U8aFixed, Bytes]>;2647  readonly isPreRuntime: boolean;2648  readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;2649  readonly isRuntimeEnvironmentUpdated: boolean;2650  readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2651}26522653/** @name SpRuntimeDispatchError */2654export interface SpRuntimeDispatchError extends Enum {2655  readonly isOther: boolean;2656  readonly isCannotLookup: boolean;2657  readonly isBadOrigin: boolean;2658  readonly isModule: boolean;2659  readonly asModule: SpRuntimeModuleError;2660  readonly isConsumerRemaining: boolean;2661  readonly isNoProviders: boolean;2662  readonly isTooManyConsumers: boolean;2663  readonly isToken: boolean;2664  readonly asToken: SpRuntimeTokenError;2665  readonly isArithmetic: boolean;2666  readonly asArithmetic: SpRuntimeArithmeticError;2667  readonly isTransactional: boolean;2668  readonly asTransactional: SpRuntimeTransactionalError;2669  readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2670}26712672/** @name SpRuntimeModuleError */2673export interface SpRuntimeModuleError extends Struct {2674  readonly index: u8;2675  readonly error: U8aFixed;2676}26772678/** @name SpRuntimeMultiSignature */2679export interface SpRuntimeMultiSignature extends Enum {2680  readonly isEd25519: boolean;2681  readonly asEd25519: SpCoreEd25519Signature;2682  readonly isSr25519: boolean;2683  readonly asSr25519: SpCoreSr25519Signature;2684  readonly isEcdsa: boolean;2685  readonly asEcdsa: SpCoreEcdsaSignature;2686  readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2687}26882689/** @name SpRuntimeTokenError */2690export interface SpRuntimeTokenError extends Enum {2691  readonly isNoFunds: boolean;2692  readonly isWouldDie: boolean;2693  readonly isBelowMinimum: boolean;2694  readonly isCannotCreate: boolean;2695  readonly isUnknownAsset: boolean;2696  readonly isFrozen: boolean;2697  readonly isUnsupported: boolean;2698  readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2699}27002701/** @name SpRuntimeTransactionalError */2702export interface SpRuntimeTransactionalError extends Enum {2703  readonly isLimitReached: boolean;2704  readonly isNoLayer: boolean;2705  readonly type: 'LimitReached' | 'NoLayer';2706}27072708/** @name SpTrieStorageProof */2709export interface SpTrieStorageProof extends Struct {2710  readonly trieNodes: BTreeSet<Bytes>;2711}27122713/** @name SpVersionRuntimeVersion */2714export interface SpVersionRuntimeVersion extends Struct {2715  readonly specName: Text;2716  readonly implName: Text;2717  readonly authoringVersion: u32;2718  readonly specVersion: u32;2719  readonly implVersion: u32;2720  readonly apis: Vec<ITuple<[U8aFixed, u32]>>;2721  readonly transactionVersion: u32;2722  readonly stateVersion: u8;2723}27242725/** @name UpDataStructsAccessMode */2726export interface UpDataStructsAccessMode extends Enum {2727  readonly isNormal: boolean;2728  readonly isAllowList: boolean;2729  readonly type: 'Normal' | 'AllowList';2730}27312732/** @name UpDataStructsCollection */2733export interface UpDataStructsCollection extends Struct {2734  readonly owner: AccountId32;2735  readonly mode: UpDataStructsCollectionMode;2736  readonly name: Vec<u16>;2737  readonly description: Vec<u16>;2738  readonly tokenPrefix: Bytes;2739  readonly sponsorship: UpDataStructsSponsorshipState;2740  readonly limits: UpDataStructsCollectionLimits;2741  readonly permissions: UpDataStructsCollectionPermissions;2742  readonly externalCollection: bool;2743}27442745/** @name UpDataStructsCollectionLimits */2746export interface UpDataStructsCollectionLimits extends Struct {2747  readonly accountTokenOwnershipLimit: Option<u32>;2748  readonly sponsoredDataSize: Option<u32>;2749  readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;2750  readonly tokenLimit: Option<u32>;2751  readonly sponsorTransferTimeout: Option<u32>;2752  readonly sponsorApproveTimeout: Option<u32>;2753  readonly ownerCanTransfer: Option<bool>;2754  readonly ownerCanDestroy: Option<bool>;2755  readonly transfersEnabled: Option<bool>;2756}27572758/** @name UpDataStructsCollectionMode */2759export interface UpDataStructsCollectionMode extends Enum {2760  readonly isNft: boolean;2761  readonly isFungible: boolean;2762  readonly asFungible: u8;2763  readonly isReFungible: boolean;2764  readonly type: 'Nft' | 'Fungible' | 'ReFungible';2765}27662767/** @name UpDataStructsCollectionPermissions */2768export interface UpDataStructsCollectionPermissions extends Struct {2769  readonly access: Option<UpDataStructsAccessMode>;2770  readonly mintMode: Option<bool>;2771  readonly nesting: Option<UpDataStructsNestingPermissions>;2772}27732774/** @name UpDataStructsCollectionStats */2775export interface UpDataStructsCollectionStats extends Struct {2776  readonly created: u32;2777  readonly destroyed: u32;2778  readonly alive: u32;2779}27802781/** @name UpDataStructsCreateCollectionData */2782export interface UpDataStructsCreateCollectionData extends Struct {2783  readonly mode: UpDataStructsCollectionMode;2784  readonly access: Option<UpDataStructsAccessMode>;2785  readonly name: Vec<u16>;2786  readonly description: Vec<u16>;2787  readonly tokenPrefix: Bytes;2788  readonly pendingSponsor: Option<AccountId32>;2789  readonly limits: Option<UpDataStructsCollectionLimits>;2790  readonly permissions: Option<UpDataStructsCollectionPermissions>;2791  readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2792  readonly properties: Vec<UpDataStructsProperty>;2793}27942795/** @name UpDataStructsCreateFungibleData */2796export interface UpDataStructsCreateFungibleData extends Struct {2797  readonly value: u128;2798}27992800/** @name UpDataStructsCreateItemData */2801export interface UpDataStructsCreateItemData extends Enum {2802  readonly isNft: boolean;2803  readonly asNft: UpDataStructsCreateNftData;2804  readonly isFungible: boolean;2805  readonly asFungible: UpDataStructsCreateFungibleData;2806  readonly isReFungible: boolean;2807  readonly asReFungible: UpDataStructsCreateReFungibleData;2808  readonly type: 'Nft' | 'Fungible' | 'ReFungible';2809}28102811/** @name UpDataStructsCreateItemExData */2812export interface UpDataStructsCreateItemExData extends Enum {2813  readonly isNft: boolean;2814  readonly asNft: Vec<UpDataStructsCreateNftExData>;2815  readonly isFungible: boolean;2816  readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr,u128>;2817  readonly isRefungibleMultipleItems: boolean;2818  readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExSingleOwner>;2819  readonly isRefungibleMultipleOwners: boolean;2820  readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExMultipleOwners;2821  readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';2822}28232824/** @name UpDataStructsCreateNftData */2825export interface UpDataStructsCreateNftData extends Struct {2826  readonly properties: Vec<UpDataStructsProperty>;2827}28282829/** @name UpDataStructsCreateNftExData */2830export interface UpDataStructsCreateNftExData extends Struct {2831  readonly properties: Vec<UpDataStructsProperty>;2832  readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2833}28342835/** @name UpDataStructsCreateReFungibleData */2836export interface UpDataStructsCreateReFungibleData extends Struct {2837  readonly pieces: u128;2838  readonly properties: Vec<UpDataStructsProperty>;2839}28402841/** @name UpDataStructsCreateRefungibleExMultipleOwners */2842export interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {2843  readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;2844  readonly properties: Vec<UpDataStructsProperty>;2845}28462847/** @name UpDataStructsCreateRefungibleExSingleOwner */2848export interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {2849  readonly user: PalletEvmAccountBasicCrossAccountIdRepr;2850  readonly pieces: u128;2851  readonly properties: Vec<UpDataStructsProperty>;2852}28532854/** @name UpDataStructsNestingPermissions */2855export interface UpDataStructsNestingPermissions extends Struct {2856  readonly tokenOwner: bool;2857  readonly collectionAdmin: bool;2858  readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2859}28602861/** @name UpDataStructsOwnerRestrictedSet */2862export interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}28632864/** @name UpDataStructsProperties */2865export interface UpDataStructsProperties extends Struct {2866  readonly map: UpDataStructsPropertiesMapBoundedVec;2867  readonly consumedSpace: u32;2868  readonly spaceLimit: u32;2869}28702871/** @name UpDataStructsPropertiesMapBoundedVec */2872export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}28732874/** @name UpDataStructsPropertiesMapPropertyPermission */2875export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}28762877/** @name UpDataStructsProperty */2878export interface UpDataStructsProperty extends Struct {2879  readonly key: Bytes;2880  readonly value: Bytes;2881}28822883/** @name UpDataStructsPropertyKeyPermission */2884export interface UpDataStructsPropertyKeyPermission extends Struct {2885  readonly key: Bytes;2886  readonly permission: UpDataStructsPropertyPermission;2887}28882889/** @name UpDataStructsPropertyPermission */2890export interface UpDataStructsPropertyPermission extends Struct {2891  readonly mutable: bool;2892  readonly collectionAdmin: bool;2893  readonly tokenOwner: bool;2894}28952896/** @name UpDataStructsPropertyScope */2897export interface UpDataStructsPropertyScope extends Enum {2898  readonly isNone: boolean;2899  readonly isRmrk: boolean;2900  readonly isEth: boolean;2901  readonly type: 'None' | 'Rmrk' | 'Eth';2902}29032904/** @name UpDataStructsRpcCollection */2905export interface UpDataStructsRpcCollection extends Struct {2906  readonly owner: AccountId32;2907  readonly mode: UpDataStructsCollectionMode;2908  readonly name: Vec<u16>;2909  readonly description: Vec<u16>;2910  readonly tokenPrefix: Bytes;2911  readonly sponsorship: UpDataStructsSponsorshipState;2912  readonly limits: UpDataStructsCollectionLimits;2913  readonly permissions: UpDataStructsCollectionPermissions;2914  readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2915  readonly properties: Vec<UpDataStructsProperty>;2916  readonly readOnly: bool;2917}29182919/** @name UpDataStructsSponsoringRateLimit */2920export interface UpDataStructsSponsoringRateLimit extends Enum {2921  readonly isSponsoringDisabled: boolean;2922  readonly isBlocks: boolean;2923  readonly asBlocks: u32;2924  readonly type: 'SponsoringDisabled' | 'Blocks';2925}29262927/** @name UpDataStructsSponsorshipState */2928export interface UpDataStructsSponsorshipState extends Enum {2929  readonly isDisabled: boolean;2930  readonly isUnconfirmed: boolean;2931  readonly asUnconfirmed: AccountId32;2932  readonly isConfirmed: boolean;2933  readonly asConfirmed: AccountId32;2934  readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2935}29362937/** @name UpDataStructsTokenChild */2938export interface UpDataStructsTokenChild extends Struct {2939  readonly token: u32;2940  readonly collection: u32;2941}29422943/** @name UpDataStructsTokenData */2944export interface UpDataStructsTokenData extends Struct {2945  readonly properties: Vec<UpDataStructsProperty>;2946  readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2947  readonly pieces: u128;2948}29492950/** @name XcmDoubleEncoded */2951export interface XcmDoubleEncoded extends Struct {2952  readonly encoded: Bytes;2953}29542955/** @name XcmV0Junction */2956export interface XcmV0Junction extends Enum {2957  readonly isParent: boolean;2958  readonly isParachain: boolean;2959  readonly asParachain: Compact<u32>;2960  readonly isAccountId32: boolean;2961  readonly asAccountId32: {2962    readonly network: XcmV0JunctionNetworkId;2963    readonly id: U8aFixed;2964  } & Struct;2965  readonly isAccountIndex64: boolean;2966  readonly asAccountIndex64: {2967    readonly network: XcmV0JunctionNetworkId;2968    readonly index: Compact<u64>;2969  } & Struct;2970  readonly isAccountKey20: boolean;2971  readonly asAccountKey20: {2972    readonly network: XcmV0JunctionNetworkId;2973    readonly key: U8aFixed;2974  } & Struct;2975  readonly isPalletInstance: boolean;2976  readonly asPalletInstance: u8;2977  readonly isGeneralIndex: boolean;2978  readonly asGeneralIndex: Compact<u128>;2979  readonly isGeneralKey: boolean;2980  readonly asGeneralKey: Bytes;2981  readonly isOnlyChild: boolean;2982  readonly isPlurality: boolean;2983  readonly asPlurality: {2984    readonly id: XcmV0JunctionBodyId;2985    readonly part: XcmV0JunctionBodyPart;2986  } & Struct;2987  readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';2988}29892990/** @name XcmV0JunctionBodyId */2991export interface XcmV0JunctionBodyId extends Enum {2992  readonly isUnit: boolean;2993  readonly isNamed: boolean;2994  readonly asNamed: Bytes;2995  readonly isIndex: boolean;2996  readonly asIndex: Compact<u32>;2997  readonly isExecutive: boolean;2998  readonly isTechnical: boolean;2999  readonly isLegislative: boolean;3000  readonly isJudicial: boolean;3001  readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';3002}30033004/** @name XcmV0JunctionBodyPart */3005export interface XcmV0JunctionBodyPart extends Enum {3006  readonly isVoice: boolean;3007  readonly isMembers: boolean;3008  readonly asMembers: {3009    readonly count: Compact<u32>;3010  } & Struct;3011  readonly isFraction: boolean;3012  readonly asFraction: {3013    readonly nom: Compact<u32>;3014    readonly denom: Compact<u32>;3015  } & Struct;3016  readonly isAtLeastProportion: boolean;3017  readonly asAtLeastProportion: {3018    readonly nom: Compact<u32>;3019    readonly denom: Compact<u32>;3020  } & Struct;3021  readonly isMoreThanProportion: boolean;3022  readonly asMoreThanProportion: {3023    readonly nom: Compact<u32>;3024    readonly denom: Compact<u32>;3025  } & Struct;3026  readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';3027}30283029/** @name XcmV0JunctionNetworkId */3030export interface XcmV0JunctionNetworkId extends Enum {3031  readonly isAny: boolean;3032  readonly isNamed: boolean;3033  readonly asNamed: Bytes;3034  readonly isPolkadot: boolean;3035  readonly isKusama: boolean;3036  readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';3037}30383039/** @name XcmV0MultiAsset */3040export interface XcmV0MultiAsset extends Enum {3041  readonly isNone: boolean;3042  readonly isAll: boolean;3043  readonly isAllFungible: boolean;3044  readonly isAllNonFungible: boolean;3045  readonly isAllAbstractFungible: boolean;3046  readonly asAllAbstractFungible: {3047    readonly id: Bytes;3048  } & Struct;3049  readonly isAllAbstractNonFungible: boolean;3050  readonly asAllAbstractNonFungible: {3051    readonly class: Bytes;3052  } & Struct;3053  readonly isAllConcreteFungible: boolean;3054  readonly asAllConcreteFungible: {3055    readonly id: XcmV0MultiLocation;3056  } & Struct;3057  readonly isAllConcreteNonFungible: boolean;3058  readonly asAllConcreteNonFungible: {3059    readonly class: XcmV0MultiLocation;3060  } & Struct;3061  readonly isAbstractFungible: boolean;3062  readonly asAbstractFungible: {3063    readonly id: Bytes;3064    readonly amount: Compact<u128>;3065  } & Struct;3066  readonly isAbstractNonFungible: boolean;3067  readonly asAbstractNonFungible: {3068    readonly class: Bytes;3069    readonly instance: XcmV1MultiassetAssetInstance;3070  } & Struct;3071  readonly isConcreteFungible: boolean;3072  readonly asConcreteFungible: {3073    readonly id: XcmV0MultiLocation;3074    readonly amount: Compact<u128>;3075  } & Struct;3076  readonly isConcreteNonFungible: boolean;3077  readonly asConcreteNonFungible: {3078    readonly class: XcmV0MultiLocation;3079    readonly instance: XcmV1MultiassetAssetInstance;3080  } & Struct;3081  readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';3082}30833084/** @name XcmV0MultiLocation */3085export interface XcmV0MultiLocation extends Enum {3086  readonly isNull: boolean;3087  readonly isX1: boolean;3088  readonly asX1: XcmV0Junction;3089  readonly isX2: boolean;3090  readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;3091  readonly isX3: boolean;3092  readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3093  readonly isX4: boolean;3094  readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3095  readonly isX5: boolean;3096  readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3097  readonly isX6: boolean;3098  readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3099  readonly isX7: boolean;3100  readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3101  readonly isX8: boolean;3102  readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3103  readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';3104}31053106/** @name XcmV0Order */3107export interface XcmV0Order extends Enum {3108  readonly isNull: boolean;3109  readonly isDepositAsset: boolean;3110  readonly asDepositAsset: {3111    readonly assets: Vec<XcmV0MultiAsset>;3112    readonly dest: XcmV0MultiLocation;3113  } & Struct;3114  readonly isDepositReserveAsset: boolean;3115  readonly asDepositReserveAsset: {3116    readonly assets: Vec<XcmV0MultiAsset>;3117    readonly dest: XcmV0MultiLocation;3118    readonly effects: Vec<XcmV0Order>;3119  } & Struct;3120  readonly isExchangeAsset: boolean;3121  readonly asExchangeAsset: {3122    readonly give: Vec<XcmV0MultiAsset>;3123    readonly receive: Vec<XcmV0MultiAsset>;3124  } & Struct;3125  readonly isInitiateReserveWithdraw: boolean;3126  readonly asInitiateReserveWithdraw: {3127    readonly assets: Vec<XcmV0MultiAsset>;3128    readonly reserve: XcmV0MultiLocation;3129    readonly effects: Vec<XcmV0Order>;3130  } & Struct;3131  readonly isInitiateTeleport: boolean;3132  readonly asInitiateTeleport: {3133    readonly assets: Vec<XcmV0MultiAsset>;3134    readonly dest: XcmV0MultiLocation;3135    readonly effects: Vec<XcmV0Order>;3136  } & Struct;3137  readonly isQueryHolding: boolean;3138  readonly asQueryHolding: {3139    readonly queryId: Compact<u64>;3140    readonly dest: XcmV0MultiLocation;3141    readonly assets: Vec<XcmV0MultiAsset>;3142  } & Struct;3143  readonly isBuyExecution: boolean;3144  readonly asBuyExecution: {3145    readonly fees: XcmV0MultiAsset;3146    readonly weight: u64;3147    readonly debt: u64;3148    readonly haltOnError: bool;3149    readonly xcm: Vec<XcmV0Xcm>;3150  } & Struct;3151  readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';3152}31533154/** @name XcmV0OriginKind */3155export interface XcmV0OriginKind extends Enum {3156  readonly isNative: boolean;3157  readonly isSovereignAccount: boolean;3158  readonly isSuperuser: boolean;3159  readonly isXcm: boolean;3160  readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';3161}31623163/** @name XcmV0Response */3164export interface XcmV0Response extends Enum {3165  readonly isAssets: boolean;3166  readonly asAssets: Vec<XcmV0MultiAsset>;3167  readonly type: 'Assets';3168}31693170/** @name XcmV0Xcm */3171export interface XcmV0Xcm extends Enum {3172  readonly isWithdrawAsset: boolean;3173  readonly asWithdrawAsset: {3174    readonly assets: Vec<XcmV0MultiAsset>;3175    readonly effects: Vec<XcmV0Order>;3176  } & Struct;3177  readonly isReserveAssetDeposit: boolean;3178  readonly asReserveAssetDeposit: {3179    readonly assets: Vec<XcmV0MultiAsset>;3180    readonly effects: Vec<XcmV0Order>;3181  } & Struct;3182  readonly isTeleportAsset: boolean;3183  readonly asTeleportAsset: {3184    readonly assets: Vec<XcmV0MultiAsset>;3185    readonly effects: Vec<XcmV0Order>;3186  } & Struct;3187  readonly isQueryResponse: boolean;3188  readonly asQueryResponse: {3189    readonly queryId: Compact<u64>;3190    readonly response: XcmV0Response;3191  } & Struct;3192  readonly isTransferAsset: boolean;3193  readonly asTransferAsset: {3194    readonly assets: Vec<XcmV0MultiAsset>;3195    readonly dest: XcmV0MultiLocation;3196  } & Struct;3197  readonly isTransferReserveAsset: boolean;3198  readonly asTransferReserveAsset: {3199    readonly assets: Vec<XcmV0MultiAsset>;3200    readonly dest: XcmV0MultiLocation;3201    readonly effects: Vec<XcmV0Order>;3202  } & Struct;3203  readonly isTransact: boolean;3204  readonly asTransact: {3205    readonly originType: XcmV0OriginKind;3206    readonly requireWeightAtMost: u64;3207    readonly call: XcmDoubleEncoded;3208  } & Struct;3209  readonly isHrmpNewChannelOpenRequest: boolean;3210  readonly asHrmpNewChannelOpenRequest: {3211    readonly sender: Compact<u32>;3212    readonly maxMessageSize: Compact<u32>;3213    readonly maxCapacity: Compact<u32>;3214  } & Struct;3215  readonly isHrmpChannelAccepted: boolean;3216  readonly asHrmpChannelAccepted: {3217    readonly recipient: Compact<u32>;3218  } & Struct;3219  readonly isHrmpChannelClosing: boolean;3220  readonly asHrmpChannelClosing: {3221    readonly initiator: Compact<u32>;3222    readonly sender: Compact<u32>;3223    readonly recipient: Compact<u32>;3224  } & Struct;3225  readonly isRelayedFrom: boolean;3226  readonly asRelayedFrom: {3227    readonly who: XcmV0MultiLocation;3228    readonly message: XcmV0Xcm;3229  } & Struct;3230  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';3231}32323233/** @name XcmV1Junction */3234export interface XcmV1Junction extends Enum {3235  readonly isParachain: boolean;3236  readonly asParachain: Compact<u32>;3237  readonly isAccountId32: boolean;3238  readonly asAccountId32: {3239    readonly network: XcmV0JunctionNetworkId;3240    readonly id: U8aFixed;3241  } & Struct;3242  readonly isAccountIndex64: boolean;3243  readonly asAccountIndex64: {3244    readonly network: XcmV0JunctionNetworkId;3245    readonly index: Compact<u64>;3246  } & Struct;3247  readonly isAccountKey20: boolean;3248  readonly asAccountKey20: {3249    readonly network: XcmV0JunctionNetworkId;3250    readonly key: U8aFixed;3251  } & Struct;3252  readonly isPalletInstance: boolean;3253  readonly asPalletInstance: u8;3254  readonly isGeneralIndex: boolean;3255  readonly asGeneralIndex: Compact<u128>;3256  readonly isGeneralKey: boolean;3257  readonly asGeneralKey: Bytes;3258  readonly isOnlyChild: boolean;3259  readonly isPlurality: boolean;3260  readonly asPlurality: {3261    readonly id: XcmV0JunctionBodyId;3262    readonly part: XcmV0JunctionBodyPart;3263  } & Struct;3264  readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';3265}32663267/** @name XcmV1MultiAsset */3268export interface XcmV1MultiAsset extends Struct {3269  readonly id: XcmV1MultiassetAssetId;3270  readonly fun: XcmV1MultiassetFungibility;3271}32723273/** @name XcmV1MultiassetAssetId */3274export interface XcmV1MultiassetAssetId extends Enum {3275  readonly isConcrete: boolean;3276  readonly asConcrete: XcmV1MultiLocation;3277  readonly isAbstract: boolean;3278  readonly asAbstract: Bytes;3279  readonly type: 'Concrete' | 'Abstract';3280}32813282/** @name XcmV1MultiassetAssetInstance */3283export interface XcmV1MultiassetAssetInstance extends Enum {3284  readonly isUndefined: boolean;3285  readonly isIndex: boolean;3286  readonly asIndex: Compact<u128>;3287  readonly isArray4: boolean;3288  readonly asArray4: U8aFixed;3289  readonly isArray8: boolean;3290  readonly asArray8: U8aFixed;3291  readonly isArray16: boolean;3292  readonly asArray16: U8aFixed;3293  readonly isArray32: boolean;3294  readonly asArray32: U8aFixed;3295  readonly isBlob: boolean;3296  readonly asBlob: Bytes;3297  readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';3298}32993300/** @name XcmV1MultiassetFungibility */3301export interface XcmV1MultiassetFungibility extends Enum {3302  readonly isFungible: boolean;3303  readonly asFungible: Compact<u128>;3304  readonly isNonFungible: boolean;3305  readonly asNonFungible: XcmV1MultiassetAssetInstance;3306  readonly type: 'Fungible' | 'NonFungible';3307}33083309/** @name XcmV1MultiassetMultiAssetFilter */3310export interface XcmV1MultiassetMultiAssetFilter extends Enum {3311  readonly isDefinite: boolean;3312  readonly asDefinite: XcmV1MultiassetMultiAssets;3313  readonly isWild: boolean;3314  readonly asWild: XcmV1MultiassetWildMultiAsset;3315  readonly type: 'Definite' | 'Wild';3316}33173318/** @name XcmV1MultiassetMultiAssets */3319export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}33203321/** @name XcmV1MultiassetWildFungibility */3322export interface XcmV1MultiassetWildFungibility extends Enum {3323  readonly isFungible: boolean;3324  readonly isNonFungible: boolean;3325  readonly type: 'Fungible' | 'NonFungible';3326}33273328/** @name XcmV1MultiassetWildMultiAsset */3329export interface XcmV1MultiassetWildMultiAsset extends Enum {3330  readonly isAll: boolean;3331  readonly isAllOf: boolean;3332  readonly asAllOf: {3333    readonly id: XcmV1MultiassetAssetId;3334    readonly fun: XcmV1MultiassetWildFungibility;3335  } & Struct;3336  readonly type: 'All' | 'AllOf';3337}33383339/** @name XcmV1MultiLocation */3340export interface XcmV1MultiLocation extends Struct {3341  readonly parents: u8;3342  readonly interior: XcmV1MultilocationJunctions;3343}33443345/** @name XcmV1MultilocationJunctions */3346export interface XcmV1MultilocationJunctions extends Enum {3347  readonly isHere: boolean;3348  readonly isX1: boolean;3349  readonly asX1: XcmV1Junction;3350  readonly isX2: boolean;3351  readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;3352  readonly isX3: boolean;3353  readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3354  readonly isX4: boolean;3355  readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3356  readonly isX5: boolean;3357  readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3358  readonly isX6: boolean;3359  readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3360  readonly isX7: boolean;3361  readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3362  readonly isX8: boolean;3363  readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3364  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';3365}33663367/** @name XcmV1Order */3368export interface XcmV1Order extends Enum {3369  readonly isNoop: boolean;3370  readonly isDepositAsset: boolean;3371  readonly asDepositAsset: {3372    readonly assets: XcmV1MultiassetMultiAssetFilter;3373    readonly maxAssets: u32;3374    readonly beneficiary: XcmV1MultiLocation;3375  } & Struct;3376  readonly isDepositReserveAsset: boolean;3377  readonly asDepositReserveAsset: {3378    readonly assets: XcmV1MultiassetMultiAssetFilter;3379    readonly maxAssets: u32;3380    readonly dest: XcmV1MultiLocation;3381    readonly effects: Vec<XcmV1Order>;3382  } & Struct;3383  readonly isExchangeAsset: boolean;3384  readonly asExchangeAsset: {3385    readonly give: XcmV1MultiassetMultiAssetFilter;3386    readonly receive: XcmV1MultiassetMultiAssets;3387  } & Struct;3388  readonly isInitiateReserveWithdraw: boolean;3389  readonly asInitiateReserveWithdraw: {3390    readonly assets: XcmV1MultiassetMultiAssetFilter;3391    readonly reserve: XcmV1MultiLocation;3392    readonly effects: Vec<XcmV1Order>;3393  } & Struct;3394  readonly isInitiateTeleport: boolean;3395  readonly asInitiateTeleport: {3396    readonly assets: XcmV1MultiassetMultiAssetFilter;3397    readonly dest: XcmV1MultiLocation;3398    readonly effects: Vec<XcmV1Order>;3399  } & Struct;3400  readonly isQueryHolding: boolean;3401  readonly asQueryHolding: {3402    readonly queryId: Compact<u64>;3403    readonly dest: XcmV1MultiLocation;3404    readonly assets: XcmV1MultiassetMultiAssetFilter;3405  } & Struct;3406  readonly isBuyExecution: boolean;3407  readonly asBuyExecution: {3408    readonly fees: XcmV1MultiAsset;3409    readonly weight: u64;3410    readonly debt: u64;3411    readonly haltOnError: bool;3412    readonly instructions: Vec<XcmV1Xcm>;3413  } & Struct;3414  readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';3415}34163417/** @name XcmV1Response */3418export interface XcmV1Response extends Enum {3419  readonly isAssets: boolean;3420  readonly asAssets: XcmV1MultiassetMultiAssets;3421  readonly isVersion: boolean;3422  readonly asVersion: u32;3423  readonly type: 'Assets' | 'Version';3424}34253426/** @name XcmV1Xcm */3427export interface XcmV1Xcm extends Enum {3428  readonly isWithdrawAsset: boolean;3429  readonly asWithdrawAsset: {3430    readonly assets: XcmV1MultiassetMultiAssets;3431    readonly effects: Vec<XcmV1Order>;3432  } & Struct;3433  readonly isReserveAssetDeposited: boolean;3434  readonly asReserveAssetDeposited: {3435    readonly assets: XcmV1MultiassetMultiAssets;3436    readonly effects: Vec<XcmV1Order>;3437  } & Struct;3438  readonly isReceiveTeleportedAsset: boolean;3439  readonly asReceiveTeleportedAsset: {3440    readonly assets: XcmV1MultiassetMultiAssets;3441    readonly effects: Vec<XcmV1Order>;3442  } & Struct;3443  readonly isQueryResponse: boolean;3444  readonly asQueryResponse: {3445    readonly queryId: Compact<u64>;3446    readonly response: XcmV1Response;3447  } & Struct;3448  readonly isTransferAsset: boolean;3449  readonly asTransferAsset: {3450    readonly assets: XcmV1MultiassetMultiAssets;3451    readonly beneficiary: XcmV1MultiLocation;3452  } & Struct;3453  readonly isTransferReserveAsset: boolean;3454  readonly asTransferReserveAsset: {3455    readonly assets: XcmV1MultiassetMultiAssets;3456    readonly dest: XcmV1MultiLocation;3457    readonly effects: Vec<XcmV1Order>;3458  } & Struct;3459  readonly isTransact: boolean;3460  readonly asTransact: {3461    readonly originType: XcmV0OriginKind;3462    readonly requireWeightAtMost: u64;3463    readonly call: XcmDoubleEncoded;3464  } & Struct;3465  readonly isHrmpNewChannelOpenRequest: boolean;3466  readonly asHrmpNewChannelOpenRequest: {3467    readonly sender: Compact<u32>;3468    readonly maxMessageSize: Compact<u32>;3469    readonly maxCapacity: Compact<u32>;3470  } & Struct;3471  readonly isHrmpChannelAccepted: boolean;3472  readonly asHrmpChannelAccepted: {3473    readonly recipient: Compact<u32>;3474  } & Struct;3475  readonly isHrmpChannelClosing: boolean;3476  readonly asHrmpChannelClosing: {3477    readonly initiator: Compact<u32>;3478    readonly sender: Compact<u32>;3479    readonly recipient: Compact<u32>;3480  } & Struct;3481  readonly isRelayedFrom: boolean;3482  readonly asRelayedFrom: {3483    readonly who: XcmV1MultilocationJunctions;3484    readonly message: XcmV1Xcm;3485  } & Struct;3486  readonly isSubscribeVersion: boolean;3487  readonly asSubscribeVersion: {3488    readonly queryId: Compact<u64>;3489    readonly maxResponseWeight: Compact<u64>;3490  } & Struct;3491  readonly isUnsubscribeVersion: boolean;3492  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';3493}34943495/** @name XcmV2Instruction */3496export interface XcmV2Instruction extends Enum {3497  readonly isWithdrawAsset: boolean;3498  readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;3499  readonly isReserveAssetDeposited: boolean;3500  readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;3501  readonly isReceiveTeleportedAsset: boolean;3502  readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;3503  readonly isQueryResponse: boolean;3504  readonly asQueryResponse: {3505    readonly queryId: Compact<u64>;3506    readonly response: XcmV2Response;3507    readonly maxWeight: Compact<u64>;3508  } & Struct;3509  readonly isTransferAsset: boolean;3510  readonly asTransferAsset: {3511    readonly assets: XcmV1MultiassetMultiAssets;3512    readonly beneficiary: XcmV1MultiLocation;3513  } & Struct;3514  readonly isTransferReserveAsset: boolean;3515  readonly asTransferReserveAsset: {3516    readonly assets: XcmV1MultiassetMultiAssets;3517    readonly dest: XcmV1MultiLocation;3518    readonly xcm: XcmV2Xcm;3519  } & Struct;3520  readonly isTransact: boolean;3521  readonly asTransact: {3522    readonly originType: XcmV0OriginKind;3523    readonly requireWeightAtMost: Compact<u64>;3524    readonly call: XcmDoubleEncoded;3525  } & Struct;3526  readonly isHrmpNewChannelOpenRequest: boolean;3527  readonly asHrmpNewChannelOpenRequest: {3528    readonly sender: Compact<u32>;3529    readonly maxMessageSize: Compact<u32>;3530    readonly maxCapacity: Compact<u32>;3531  } & Struct;3532  readonly isHrmpChannelAccepted: boolean;3533  readonly asHrmpChannelAccepted: {3534    readonly recipient: Compact<u32>;3535  } & Struct;3536  readonly isHrmpChannelClosing: boolean;3537  readonly asHrmpChannelClosing: {3538    readonly initiator: Compact<u32>;3539    readonly sender: Compact<u32>;3540    readonly recipient: Compact<u32>;3541  } & Struct;3542  readonly isClearOrigin: boolean;3543  readonly isDescendOrigin: boolean;3544  readonly asDescendOrigin: XcmV1MultilocationJunctions;3545  readonly isReportError: boolean;3546  readonly asReportError: {3547    readonly queryId: Compact<u64>;3548    readonly dest: XcmV1MultiLocation;3549    readonly maxResponseWeight: Compact<u64>;3550  } & Struct;3551  readonly isDepositAsset: boolean;3552  readonly asDepositAsset: {3553    readonly assets: XcmV1MultiassetMultiAssetFilter;3554    readonly maxAssets: Compact<u32>;3555    readonly beneficiary: XcmV1MultiLocation;3556  } & Struct;3557  readonly isDepositReserveAsset: boolean;3558  readonly asDepositReserveAsset: {3559    readonly assets: XcmV1MultiassetMultiAssetFilter;3560    readonly maxAssets: Compact<u32>;3561    readonly dest: XcmV1MultiLocation;3562    readonly xcm: XcmV2Xcm;3563  } & Struct;3564  readonly isExchangeAsset: boolean;3565  readonly asExchangeAsset: {3566    readonly give: XcmV1MultiassetMultiAssetFilter;3567    readonly receive: XcmV1MultiassetMultiAssets;3568  } & Struct;3569  readonly isInitiateReserveWithdraw: boolean;3570  readonly asInitiateReserveWithdraw: {3571    readonly assets: XcmV1MultiassetMultiAssetFilter;3572    readonly reserve: XcmV1MultiLocation;3573    readonly xcm: XcmV2Xcm;3574  } & Struct;3575  readonly isInitiateTeleport: boolean;3576  readonly asInitiateTeleport: {3577    readonly assets: XcmV1MultiassetMultiAssetFilter;3578    readonly dest: XcmV1MultiLocation;3579    readonly xcm: XcmV2Xcm;3580  } & Struct;3581  readonly isQueryHolding: boolean;3582  readonly asQueryHolding: {3583    readonly queryId: Compact<u64>;3584    readonly dest: XcmV1MultiLocation;3585    readonly assets: XcmV1MultiassetMultiAssetFilter;3586    readonly maxResponseWeight: Compact<u64>;3587  } & Struct;3588  readonly isBuyExecution: boolean;3589  readonly asBuyExecution: {3590    readonly fees: XcmV1MultiAsset;3591    readonly weightLimit: XcmV2WeightLimit;3592  } & Struct;3593  readonly isRefundSurplus: boolean;3594  readonly isSetErrorHandler: boolean;3595  readonly asSetErrorHandler: XcmV2Xcm;3596  readonly isSetAppendix: boolean;3597  readonly asSetAppendix: XcmV2Xcm;3598  readonly isClearError: boolean;3599  readonly isClaimAsset: boolean;3600  readonly asClaimAsset: {3601    readonly assets: XcmV1MultiassetMultiAssets;3602    readonly ticket: XcmV1MultiLocation;3603  } & Struct;3604  readonly isTrap: boolean;3605  readonly asTrap: Compact<u64>;3606  readonly isSubscribeVersion: boolean;3607  readonly asSubscribeVersion: {3608    readonly queryId: Compact<u64>;3609    readonly maxResponseWeight: Compact<u64>;3610  } & Struct;3611  readonly isUnsubscribeVersion: boolean;3612  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion';3613}36143615/** @name XcmV2Response */3616export interface XcmV2Response extends Enum {3617  readonly isNull: boolean;3618  readonly isAssets: boolean;3619  readonly asAssets: XcmV1MultiassetMultiAssets;3620  readonly isExecutionResult: boolean;3621  readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;3622  readonly isVersion: boolean;3623  readonly asVersion: u32;3624  readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';3625}36263627/** @name XcmV2TraitsError */3628export interface XcmV2TraitsError extends Enum {3629  readonly isOverflow: boolean;3630  readonly isUnimplemented: boolean;3631  readonly isUntrustedReserveLocation: boolean;3632  readonly isUntrustedTeleportLocation: boolean;3633  readonly isMultiLocationFull: boolean;3634  readonly isMultiLocationNotInvertible: boolean;3635  readonly isBadOrigin: boolean;3636  readonly isInvalidLocation: boolean;3637  readonly isAssetNotFound: boolean;3638  readonly isFailedToTransactAsset: boolean;3639  readonly isNotWithdrawable: boolean;3640  readonly isLocationCannotHold: boolean;3641  readonly isExceedsMaxMessageSize: boolean;3642  readonly isDestinationUnsupported: boolean;3643  readonly isTransport: boolean;3644  readonly isUnroutable: boolean;3645  readonly isUnknownClaim: boolean;3646  readonly isFailedToDecode: boolean;3647  readonly isMaxWeightInvalid: boolean;3648  readonly isNotHoldingFees: boolean;3649  readonly isTooExpensive: boolean;3650  readonly isTrap: boolean;3651  readonly asTrap: u64;3652  readonly isUnhandledXcmVersion: boolean;3653  readonly isWeightLimitReached: boolean;3654  readonly asWeightLimitReached: u64;3655  readonly isBarrier: boolean;3656  readonly isWeightNotComputable: boolean;3657  readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'MultiLocationFull' | 'MultiLocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'WeightNotComputable';3658}36593660/** @name XcmV2TraitsOutcome */3661export interface XcmV2TraitsOutcome extends Enum {3662  readonly isComplete: boolean;3663  readonly asComplete: u64;3664  readonly isIncomplete: boolean;3665  readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;3666  readonly isError: boolean;3667  readonly asError: XcmV2TraitsError;3668  readonly type: 'Complete' | 'Incomplete' | 'Error';3669}36703671/** @name XcmV2WeightLimit */3672export interface XcmV2WeightLimit extends Enum {3673  readonly isUnlimited: boolean;3674  readonly isLimited: boolean;3675  readonly asLimited: Compact<u64>;3676  readonly type: 'Unlimited' | 'Limited';3677}36783679/** @name XcmV2Xcm */3680export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}36813682/** @name XcmVersionedMultiAsset */3683export interface XcmVersionedMultiAsset extends Enum {3684  readonly isV0: boolean;3685  readonly asV0: XcmV0MultiAsset;3686  readonly isV1: boolean;3687  readonly asV1: XcmV1MultiAsset;3688  readonly type: 'V0' | 'V1';3689}36903691/** @name XcmVersionedMultiAssets */3692export interface XcmVersionedMultiAssets extends Enum {3693  readonly isV0: boolean;3694  readonly asV0: Vec<XcmV0MultiAsset>;3695  readonly isV1: boolean;3696  readonly asV1: XcmV1MultiassetMultiAssets;3697  readonly type: 'V0' | 'V1';3698}36993700/** @name XcmVersionedMultiLocation */3701export interface XcmVersionedMultiLocation extends Enum {3702  readonly isV0: boolean;3703  readonly asV0: XcmV0MultiLocation;3704  readonly isV1: boolean;3705  readonly asV1: XcmV1MultiLocation;3706  readonly type: 'V0' | 'V1';3707}37083709/** @name XcmVersionedXcm */3710export interface XcmVersionedXcm extends Enum {3711  readonly isV0: boolean;3712  readonly asV0: XcmV0Xcm;3713  readonly isV1: boolean;3714  readonly asV1: XcmV1Xcm;3715  readonly isV2: boolean;3716  readonly asV2: XcmV2Xcm;3717  readonly type: 'V0' | 'V1' | 'V2';3718}37193720export type PHANTOM_DEFAULT = 'default';
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -323,118 +323,47 @@
     perPeriod: 'Compact<u128>'
   },
   /**
-   * Lookup39: cumulus_pallet_xcmp_queue::pallet::Event<T>
+   * Lookup39: orml_xtokens::module::Event<T>
    **/
-  CumulusPalletXcmpQueueEvent: {
+  OrmlXtokensModuleEvent: {
     _enum: {
-      Success: {
-        messageHash: 'Option<H256>',
-        weight: 'u64',
-      },
-      Fail: {
-        messageHash: 'Option<H256>',
-        error: 'XcmV2TraitsError',
-        weight: 'u64',
-      },
-      BadVersion: {
-        messageHash: 'Option<H256>',
-      },
-      BadFormat: {
-        messageHash: 'Option<H256>',
-      },
-      UpwardMessageSent: {
-        messageHash: 'Option<H256>',
-      },
-      XcmpMessageSent: {
-        messageHash: 'Option<H256>',
-      },
-      OverweightEnqueued: {
-        sender: 'u32',
-        sentAt: 'u32',
-        index: 'u64',
-        required: 'u64',
-      },
-      OverweightServiced: {
-        index: 'u64',
-        used: 'u64'
+      TransferredMultiAssets: {
+        sender: 'AccountId32',
+        assets: 'XcmV1MultiassetMultiAssets',
+        fee: 'XcmV1MultiAsset',
+        dest: 'XcmV1MultiLocation'
       }
     }
   },
   /**
-   * Lookup41: xcm::v2::traits::Error
+   * Lookup40: xcm::v1::multiasset::MultiAssets
    **/
-  XcmV2TraitsError: {
-    _enum: {
-      Overflow: 'Null',
-      Unimplemented: 'Null',
-      UntrustedReserveLocation: 'Null',
-      UntrustedTeleportLocation: 'Null',
-      MultiLocationFull: 'Null',
-      MultiLocationNotInvertible: 'Null',
-      BadOrigin: 'Null',
-      InvalidLocation: 'Null',
-      AssetNotFound: 'Null',
-      FailedToTransactAsset: 'Null',
-      NotWithdrawable: 'Null',
-      LocationCannotHold: 'Null',
-      ExceedsMaxMessageSize: 'Null',
-      DestinationUnsupported: 'Null',
-      Transport: 'Null',
-      Unroutable: 'Null',
-      UnknownClaim: 'Null',
-      FailedToDecode: 'Null',
-      MaxWeightInvalid: 'Null',
-      NotHoldingFees: 'Null',
-      TooExpensive: 'Null',
-      Trap: 'u64',
-      UnhandledXcmVersion: 'Null',
-      WeightLimitReached: 'u64',
-      Barrier: 'Null',
-      WeightNotComputable: 'Null'
-    }
-  },
+  XcmV1MultiassetMultiAssets: 'Vec<XcmV1MultiAsset>',
   /**
-   * Lookup43: pallet_xcm::pallet::Event<T>
+   * Lookup42: xcm::v1::multiasset::MultiAsset
    **/
-  PalletXcmEvent: {
-    _enum: {
-      Attempted: 'XcmV2TraitsOutcome',
-      Sent: '(XcmV1MultiLocation,XcmV1MultiLocation,XcmV2Xcm)',
-      UnexpectedResponse: '(XcmV1MultiLocation,u64)',
-      ResponseReady: '(u64,XcmV2Response)',
-      Notified: '(u64,u8,u8)',
-      NotifyOverweight: '(u64,u8,u8,u64,u64)',
-      NotifyDispatchError: '(u64,u8,u8)',
-      NotifyDecodeFailed: '(u64,u8,u8)',
-      InvalidResponder: '(XcmV1MultiLocation,u64,Option<XcmV1MultiLocation>)',
-      InvalidResponderVersion: '(XcmV1MultiLocation,u64)',
-      ResponseTaken: 'u64',
-      AssetsTrapped: '(H256,XcmV1MultiLocation,XcmVersionedMultiAssets)',
-      VersionChangeNotified: '(XcmV1MultiLocation,u32)',
-      SupportedVersionChanged: '(XcmV1MultiLocation,u32)',
-      NotifyTargetSendFail: '(XcmV1MultiLocation,u64,XcmV2TraitsError)',
-      NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'
-    }
+  XcmV1MultiAsset: {
+    id: 'XcmV1MultiassetAssetId',
+    fun: 'XcmV1MultiassetFungibility'
   },
   /**
-   * Lookup44: xcm::v2::traits::Outcome
+   * Lookup43: xcm::v1::multiasset::AssetId
    **/
-  XcmV2TraitsOutcome: {
+  XcmV1MultiassetAssetId: {
     _enum: {
-      Complete: 'u64',
-      Incomplete: '(u64,XcmV2TraitsError)',
-      Error: 'XcmV2TraitsError'
+      Concrete: 'XcmV1MultiLocation',
+      Abstract: 'Bytes'
     }
   },
   /**
-   * Lookup45: xcm::v1::multilocation::MultiLocation
+   * Lookup44: xcm::v1::multilocation::MultiLocation
    **/
   XcmV1MultiLocation: {
     parents: 'u8',
     interior: 'XcmV1MultilocationJunctions'
   },
   /**
-   * Lookup46: xcm::v1::multilocation::Junctions
+   * Lookup45: xcm::v1::multilocation::Junctions
    **/
   XcmV1MultilocationJunctions: {
     _enum: {
@@ -450,7 +379,7 @@
     }
   },
   /**
-   * Lookup47: xcm::v1::junction::Junction
+   * Lookup46: xcm::v1::junction::Junction
    **/
   XcmV1Junction: {
     _enum: {
@@ -478,7 +407,7 @@
     }
   },
   /**
-   * Lookup49: xcm::v0::junction::NetworkId
+   * Lookup48: xcm::v0::junction::NetworkId
    **/
   XcmV0JunctionNetworkId: {
     _enum: {
@@ -489,7 +418,7 @@
     }
   },
   /**
-   * Lookup53: xcm::v0::junction::BodyId
+   * Lookup52: xcm::v0::junction::BodyId
    **/
   XcmV0JunctionBodyId: {
     _enum: {
@@ -503,7 +432,7 @@
     }
   },
   /**
-   * Lookup54: xcm::v0::junction::BodyPart
+   * Lookup53: xcm::v0::junction::BodyPart
    **/
   XcmV0JunctionBodyPart: {
     _enum: {
@@ -526,11 +455,230 @@
     }
   },
   /**
-   * Lookup55: xcm::v2::Xcm<Call>
+   * Lookup54: xcm::v1::multiasset::Fungibility
    **/
+  XcmV1MultiassetFungibility: {
+    _enum: {
+      Fungible: 'Compact<u128>',
+      NonFungible: 'XcmV1MultiassetAssetInstance'
+    }
+  },
+  /**
+   * Lookup55: xcm::v1::multiasset::AssetInstance
+   **/
+  XcmV1MultiassetAssetInstance: {
+    _enum: {
+      Undefined: 'Null',
+      Index: 'Compact<u128>',
+      Array4: '[u8;4]',
+      Array8: '[u8;8]',
+      Array16: '[u8;16]',
+      Array32: '[u8;32]',
+      Blob: 'Bytes'
+    }
+  },
+  /**
+   * Lookup58: orml_tokens::module::Event<T>
+   **/
+  OrmlTokensModuleEvent: {
+    _enum: {
+      Endowed: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        amount: 'u128',
+      },
+      DustLost: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        amount: 'u128',
+      },
+      Transfer: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        from: 'AccountId32',
+        to: 'AccountId32',
+        amount: 'u128',
+      },
+      Reserved: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        amount: 'u128',
+      },
+      Unreserved: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        amount: 'u128',
+      },
+      ReserveRepatriated: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        from: 'AccountId32',
+        to: 'AccountId32',
+        amount: 'u128',
+        status: 'FrameSupportTokensMiscBalanceStatus',
+      },
+      BalanceSet: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        free: 'u128',
+        reserved: 'u128',
+      },
+      TotalIssuanceSet: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        amount: 'u128',
+      },
+      Withdrawn: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        amount: 'u128',
+      },
+      Slashed: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        freeAmount: 'u128',
+        reservedAmount: 'u128',
+      },
+      Deposited: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        amount: 'u128',
+      },
+      LockSet: {
+        lockId: '[u8;8]',
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32',
+        amount: 'u128',
+      },
+      LockRemoved: {
+        lockId: '[u8;8]',
+        currencyId: 'PalletForeingAssetsAssetIds',
+        who: 'AccountId32'
+      }
+    }
+  },
+  /**
+   * Lookup59: pallet_foreing_assets::AssetIds
+   **/
+  PalletForeingAssetsAssetIds: {
+    _enum: {
+      ForeignAssetId: 'u32',
+      NativeAssetId: 'PalletForeingAssetsNativeCurrency'
+    }
+  },
+  /**
+   * Lookup60: pallet_foreing_assets::NativeCurrency
+   **/
+  PalletForeingAssetsNativeCurrency: {
+    _enum: ['Here', 'Parent']
+  },
+  /**
+   * Lookup61: cumulus_pallet_xcmp_queue::pallet::Event<T>
+   **/
+  CumulusPalletXcmpQueueEvent: {
+    _enum: {
+      Success: {
+        messageHash: 'Option<H256>',
+        weight: 'u64',
+      },
+      Fail: {
+        messageHash: 'Option<H256>',
+        error: 'XcmV2TraitsError',
+        weight: 'u64',
+      },
+      BadVersion: {
+        messageHash: 'Option<H256>',
+      },
+      BadFormat: {
+        messageHash: 'Option<H256>',
+      },
+      UpwardMessageSent: {
+        messageHash: 'Option<H256>',
+      },
+      XcmpMessageSent: {
+        messageHash: 'Option<H256>',
+      },
+      OverweightEnqueued: {
+        sender: 'u32',
+        sentAt: 'u32',
+        index: 'u64',
+        required: 'u64',
+      },
+      OverweightServiced: {
+        index: 'u64',
+        used: 'u64'
+      }
+    }
+  },
+  /**
+   * Lookup63: xcm::v2::traits::Error
+   **/
+  XcmV2TraitsError: {
+    _enum: {
+      Overflow: 'Null',
+      Unimplemented: 'Null',
+      UntrustedReserveLocation: 'Null',
+      UntrustedTeleportLocation: 'Null',
+      MultiLocationFull: 'Null',
+      MultiLocationNotInvertible: 'Null',
+      BadOrigin: 'Null',
+      InvalidLocation: 'Null',
+      AssetNotFound: 'Null',
+      FailedToTransactAsset: 'Null',
+      NotWithdrawable: 'Null',
+      LocationCannotHold: 'Null',
+      ExceedsMaxMessageSize: 'Null',
+      DestinationUnsupported: 'Null',
+      Transport: 'Null',
+      Unroutable: 'Null',
+      UnknownClaim: 'Null',
+      FailedToDecode: 'Null',
+      MaxWeightInvalid: 'Null',
+      NotHoldingFees: 'Null',
+      TooExpensive: 'Null',
+      Trap: 'u64',
+      UnhandledXcmVersion: 'Null',
+      WeightLimitReached: 'u64',
+      Barrier: 'Null',
+      WeightNotComputable: 'Null'
+    }
+  },
+  /**
+   * Lookup65: pallet_xcm::pallet::Event<T>
+   **/
+  PalletXcmEvent: {
+    _enum: {
+      Attempted: 'XcmV2TraitsOutcome',
+      Sent: '(XcmV1MultiLocation,XcmV1MultiLocation,XcmV2Xcm)',
+      UnexpectedResponse: '(XcmV1MultiLocation,u64)',
+      ResponseReady: '(u64,XcmV2Response)',
+      Notified: '(u64,u8,u8)',
+      NotifyOverweight: '(u64,u8,u8,u64,u64)',
+      NotifyDispatchError: '(u64,u8,u8)',
+      NotifyDecodeFailed: '(u64,u8,u8)',
+      InvalidResponder: '(XcmV1MultiLocation,u64,Option<XcmV1MultiLocation>)',
+      InvalidResponderVersion: '(XcmV1MultiLocation,u64)',
+      ResponseTaken: 'u64',
+      AssetsTrapped: '(H256,XcmV1MultiLocation,XcmVersionedMultiAssets)',
+      VersionChangeNotified: '(XcmV1MultiLocation,u32)',
+      SupportedVersionChanged: '(XcmV1MultiLocation,u32)',
+      NotifyTargetSendFail: '(XcmV1MultiLocation,u64,XcmV2TraitsError)',
+      NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'
+    }
+  },
+  /**
+   * Lookup66: xcm::v2::traits::Outcome
+   **/
+  XcmV2TraitsOutcome: {
+    _enum: {
+      Complete: 'u64',
+      Incomplete: '(u64,XcmV2TraitsError)',
+      Error: 'XcmV2TraitsError'
+    }
+  },
+  /**
+   * Lookup67: xcm::v2::Xcm<Call>
+   **/
   XcmV2Xcm: 'Vec<XcmV2Instruction>',
   /**
-   * Lookup57: xcm::v2::Instruction<Call>
+   * Lookup69: xcm::v2::Instruction<Call>
    **/
   XcmV2Instruction: {
     _enum: {
@@ -628,50 +776,7 @@
     }
   },
   /**
-   * Lookup58: xcm::v1::multiasset::MultiAssets
-   **/
-  XcmV1MultiassetMultiAssets: 'Vec<XcmV1MultiAsset>',
-  /**
-   * Lookup60: xcm::v1::multiasset::MultiAsset
-   **/
-  XcmV1MultiAsset: {
-    id: 'XcmV1MultiassetAssetId',
-    fun: 'XcmV1MultiassetFungibility'
-  },
-  /**
-   * Lookup61: xcm::v1::multiasset::AssetId
-   **/
-  XcmV1MultiassetAssetId: {
-    _enum: {
-      Concrete: 'XcmV1MultiLocation',
-      Abstract: 'Bytes'
-    }
-  },
-  /**
-   * Lookup62: xcm::v1::multiasset::Fungibility
-   **/
-  XcmV1MultiassetFungibility: {
-    _enum: {
-      Fungible: 'Compact<u128>',
-      NonFungible: 'XcmV1MultiassetAssetInstance'
-    }
-  },
-  /**
-   * Lookup63: xcm::v1::multiasset::AssetInstance
-   **/
-  XcmV1MultiassetAssetInstance: {
-    _enum: {
-      Undefined: 'Null',
-      Index: 'Compact<u128>',
-      Array4: '[u8;4]',
-      Array8: '[u8;8]',
-      Array16: '[u8;16]',
-      Array32: '[u8;32]',
-      Blob: 'Bytes'
-    }
-  },
-  /**
-   * Lookup66: xcm::v2::Response
+   * Lookup70: xcm::v2::Response
    **/
   XcmV2Response: {
     _enum: {
@@ -682,19 +787,19 @@
     }
   },
   /**
-   * Lookup69: xcm::v0::OriginKind
+   * Lookup73: xcm::v0::OriginKind
    **/
   XcmV0OriginKind: {
     _enum: ['Native', 'SovereignAccount', 'Superuser', 'Xcm']
   },
   /**
-   * Lookup70: xcm::double_encoded::DoubleEncoded<T>
+   * Lookup74: xcm::double_encoded::DoubleEncoded<T>
    **/
   XcmDoubleEncoded: {
     encoded: 'Bytes'
   },
   /**
-   * Lookup71: xcm::v1::multiasset::MultiAssetFilter
+   * Lookup75: xcm::v1::multiasset::MultiAssetFilter
    **/
   XcmV1MultiassetMultiAssetFilter: {
     _enum: {
@@ -703,7 +808,7 @@
     }
   },
   /**
-   * Lookup72: xcm::v1::multiasset::WildMultiAsset
+   * Lookup76: xcm::v1::multiasset::WildMultiAsset
    **/
   XcmV1MultiassetWildMultiAsset: {
     _enum: {
@@ -715,13 +820,13 @@
     }
   },
   /**
-   * Lookup73: xcm::v1::multiasset::WildFungibility
+   * Lookup77: xcm::v1::multiasset::WildFungibility
    **/
   XcmV1MultiassetWildFungibility: {
     _enum: ['Fungible', 'NonFungible']
   },
   /**
-   * Lookup74: xcm::v2::WeightLimit
+   * Lookup78: xcm::v2::WeightLimit
    **/
   XcmV2WeightLimit: {
     _enum: {
@@ -730,7 +835,7 @@
     }
   },
   /**
-   * Lookup76: xcm::VersionedMultiAssets
+   * Lookup80: xcm::VersionedMultiAssets
    **/
   XcmVersionedMultiAssets: {
     _enum: {
@@ -739,7 +844,7 @@
     }
   },
   /**
-   * Lookup78: xcm::v0::multi_asset::MultiAsset
+   * Lookup82: xcm::v0::multi_asset::MultiAsset
    **/
   XcmV0MultiAsset: {
     _enum: {
@@ -778,7 +883,7 @@
     }
   },
   /**
-   * Lookup79: xcm::v0::multi_location::MultiLocation
+   * Lookup83: xcm::v0::multi_location::MultiLocation
    **/
   XcmV0MultiLocation: {
     _enum: {
@@ -794,7 +899,7 @@
     }
   },
   /**
-   * Lookup80: xcm::v0::junction::Junction
+   * Lookup84: xcm::v0::junction::Junction
    **/
   XcmV0Junction: {
     _enum: {
@@ -823,7 +928,7 @@
     }
   },
   /**
-   * Lookup81: xcm::VersionedMultiLocation
+   * Lookup85: xcm::VersionedMultiLocation
    **/
   XcmVersionedMultiLocation: {
     _enum: {
@@ -832,7 +937,7 @@
     }
   },
   /**
-   * Lookup82: cumulus_pallet_xcm::pallet::Event<T>
+   * Lookup86: cumulus_pallet_xcm::pallet::Event<T>
    **/
   CumulusPalletXcmEvent: {
     _enum: {
@@ -842,7 +947,7 @@
     }
   },
   /**
-   * Lookup83: cumulus_pallet_dmp_queue::pallet::Event<T>
+   * Lookup87: cumulus_pallet_dmp_queue::pallet::Event<T>
    **/
   CumulusPalletDmpQueueEvent: {
     _enum: {
@@ -873,7 +978,7 @@
     }
   },
   /**
-   * Lookup84: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup88: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   PalletUniqueRawEvent: {
     _enum: {
@@ -890,7 +995,7 @@
     }
   },
   /**
-   * Lookup85: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
+   * Lookup89: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
    **/
   PalletEvmAccountBasicCrossAccountIdRepr: {
     _enum: {
@@ -899,7 +1004,7 @@
     }
   },
   /**
-   * Lookup88: pallet_unique_scheduler::pallet::Event<T>
+   * Lookup92: pallet_unique_scheduler::pallet::Event<T>
    **/
   PalletUniqueSchedulerEvent: {
     _enum: {
@@ -924,13 +1029,13 @@
     }
   },
   /**
-   * Lookup91: frame_support::traits::schedule::LookupError
+   * Lookup95: frame_support::traits::schedule::LookupError
    **/
   FrameSupportScheduleLookupError: {
     _enum: ['Unknown', 'BadFormat']
   },
   /**
-   * Lookup92: pallet_common::pallet::Event<T>
+   * Lookup96: pallet_common::pallet::Event<T>
    **/
   PalletCommonEvent: {
     _enum: {
@@ -948,7 +1053,7 @@
     }
   },
   /**
-   * Lookup95: pallet_structure::pallet::Event<T>
+   * Lookup99: pallet_structure::pallet::Event<T>
    **/
   PalletStructureEvent: {
     _enum: {
@@ -956,7 +1061,7 @@
     }
   },
   /**
-   * Lookup96: pallet_rmrk_core::pallet::Event<T>
+   * Lookup100: pallet_rmrk_core::pallet::Event<T>
    **/
   PalletRmrkCoreEvent: {
     _enum: {
@@ -1033,7 +1138,7 @@
     }
   },
   /**
-   * Lookup97: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
+   * Lookup101: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
    **/
   RmrkTraitsNftAccountIdOrCollectionNftTuple: {
     _enum: {
@@ -1042,7 +1147,7 @@
     }
   },
   /**
-   * Lookup102: pallet_rmrk_equip::pallet::Event<T>
+   * Lookup106: pallet_rmrk_equip::pallet::Event<T>
    **/
   PalletRmrkEquipEvent: {
     _enum: {
@@ -1057,8 +1162,42 @@
     }
   },
   /**
-   * Lookup103: pallet_evm::pallet::Event<T>
+   * Lookup107: pallet_foreing_assets::module::Event<T>
+   **/
+  PalletForeingAssetsModuleEvent: {
+    _enum: {
+      ForeignAssetRegistered: {
+        assetId: 'u32',
+        assetAddress: 'XcmV1MultiLocation',
+        metadata: 'PalletForeingAssetsModuleAssetMetadata',
+      },
+      ForeignAssetUpdated: {
+        assetId: 'u32',
+        assetAddress: 'XcmV1MultiLocation',
+        metadata: 'PalletForeingAssetsModuleAssetMetadata',
+      },
+      AssetRegistered: {
+        assetId: 'PalletForeingAssetsAssetIds',
+        metadata: 'PalletForeingAssetsModuleAssetMetadata',
+      },
+      AssetUpdated: {
+        assetId: 'PalletForeingAssetsAssetIds',
+        metadata: 'PalletForeingAssetsModuleAssetMetadata'
+      }
+    }
+  },
+  /**
+   * Lookup108: pallet_foreing_assets::module::AssetMetadata<Balance>
    **/
+  PalletForeingAssetsModuleAssetMetadata: {
+    name: 'Bytes',
+    symbol: 'Bytes',
+    decimals: 'u8',
+    minimalBalance: 'u128'
+  },
+  /**
+   * Lookup109: pallet_evm::pallet::Event<T>
+   **/
   PalletEvmEvent: {
     _enum: {
       Log: 'EthereumLog',
@@ -1071,7 +1210,7 @@
     }
   },
   /**
-   * Lookup104: ethereum::log::Log
+   * Lookup110: ethereum::log::Log
    **/
   EthereumLog: {
     address: 'H160',
@@ -1079,7 +1218,7 @@
     data: 'Bytes'
   },
   /**
-   * Lookup108: pallet_ethereum::pallet::Event
+   * Lookup114: pallet_ethereum::pallet::Event
    **/
   PalletEthereumEvent: {
     _enum: {
@@ -1087,7 +1226,7 @@
     }
   },
   /**
-   * Lookup109: evm_core::error::ExitReason
+   * Lookup115: evm_core::error::ExitReason
    **/
   EvmCoreErrorExitReason: {
     _enum: {
@@ -1098,13 +1237,13 @@
     }
   },
   /**
-   * Lookup110: evm_core::error::ExitSucceed
+   * Lookup116: evm_core::error::ExitSucceed
    **/
   EvmCoreErrorExitSucceed: {
     _enum: ['Stopped', 'Returned', 'Suicided']
   },
   /**
-   * Lookup111: evm_core::error::ExitError
+   * Lookup117: evm_core::error::ExitError
    **/
   EvmCoreErrorExitError: {
     _enum: {
@@ -1126,13 +1265,13 @@
     }
   },
   /**
-   * Lookup114: evm_core::error::ExitRevert
+   * Lookup120: evm_core::error::ExitRevert
    **/
   EvmCoreErrorExitRevert: {
     _enum: ['Reverted']
   },
   /**
-   * Lookup115: evm_core::error::ExitFatal
+   * Lookup121: evm_core::error::ExitFatal
    **/
   EvmCoreErrorExitFatal: {
     _enum: {
@@ -1143,7 +1282,7 @@
     }
   },
   /**
-   * Lookup116: frame_system::Phase
+   * Lookup122: frame_system::Phase
    **/
   FrameSystemPhase: {
     _enum: {
@@ -1153,14 +1292,14 @@
     }
   },
   /**
-   * Lookup118: frame_system::LastRuntimeUpgradeInfo
+   * Lookup124: frame_system::LastRuntimeUpgradeInfo
    **/
   FrameSystemLastRuntimeUpgradeInfo: {
     specVersion: 'Compact<u32>',
     specName: 'Text'
   },
   /**
-   * Lookup119: frame_system::pallet::Call<T>
+   * Lookup125: frame_system::pallet::Call<T>
    **/
   FrameSystemCall: {
     _enum: {
@@ -1198,7 +1337,7 @@
     }
   },
   /**
-   * Lookup124: frame_system::limits::BlockWeights
+   * Lookup130: frame_system::limits::BlockWeights
    **/
   FrameSystemLimitsBlockWeights: {
     baseBlock: 'u64',
@@ -1206,7 +1345,7 @@
     perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'
   },
   /**
-   * Lookup125: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
+   * Lookup131: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
    **/
   FrameSupportWeightsPerDispatchClassWeightsPerClass: {
     normal: 'FrameSystemLimitsWeightsPerClass',
@@ -1214,7 +1353,7 @@
     mandatory: 'FrameSystemLimitsWeightsPerClass'
   },
   /**
-   * Lookup126: frame_system::limits::WeightsPerClass
+   * Lookup132: frame_system::limits::WeightsPerClass
    **/
   FrameSystemLimitsWeightsPerClass: {
     baseExtrinsic: 'u64',
@@ -1223,13 +1362,13 @@
     reserved: 'Option<u64>'
   },
   /**
-   * Lookup128: frame_system::limits::BlockLength
+   * Lookup134: frame_system::limits::BlockLength
    **/
   FrameSystemLimitsBlockLength: {
     max: 'FrameSupportWeightsPerDispatchClassU32'
   },
   /**
-   * Lookup129: frame_support::weights::PerDispatchClass<T>
+   * Lookup135: frame_support::weights::PerDispatchClass<T>
    **/
   FrameSupportWeightsPerDispatchClassU32: {
     normal: 'u32',
@@ -1237,14 +1376,14 @@
     mandatory: 'u32'
   },
   /**
-   * Lookup130: frame_support::weights::RuntimeDbWeight
+   * Lookup136: frame_support::weights::RuntimeDbWeight
    **/
   FrameSupportWeightsRuntimeDbWeight: {
     read: 'u64',
     write: 'u64'
   },
   /**
-   * Lookup131: sp_version::RuntimeVersion
+   * Lookup137: sp_version::RuntimeVersion
    **/
   SpVersionRuntimeVersion: {
     specName: 'Text',
@@ -1257,13 +1396,13 @@
     stateVersion: 'u8'
   },
   /**
-   * Lookup136: frame_system::pallet::Error<T>
+   * Lookup142: frame_system::pallet::Error<T>
    **/
   FrameSystemError: {
     _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
   },
   /**
-   * Lookup137: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>
+   * Lookup143: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>
    **/
   PolkadotPrimitivesV2PersistedValidationData: {
     parentHead: 'Bytes',
@@ -1272,19 +1411,19 @@
     maxPovSize: 'u32'
   },
   /**
-   * Lookup140: polkadot_primitives::v2::UpgradeRestriction
+   * Lookup146: polkadot_primitives::v2::UpgradeRestriction
    **/
   PolkadotPrimitivesV2UpgradeRestriction: {
     _enum: ['Present']
   },
   /**
-   * Lookup141: sp_trie::storage_proof::StorageProof
+   * Lookup147: sp_trie::storage_proof::StorageProof
    **/
   SpTrieStorageProof: {
     trieNodes: 'BTreeSet<Bytes>'
   },
   /**
-   * Lookup143: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
+   * Lookup149: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
    **/
   CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {
     dmqMqcHead: 'H256',
@@ -1293,7 +1432,7 @@
     egressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>'
   },
   /**
-   * Lookup146: polkadot_primitives::v2::AbridgedHrmpChannel
+   * Lookup152: polkadot_primitives::v2::AbridgedHrmpChannel
    **/
   PolkadotPrimitivesV2AbridgedHrmpChannel: {
     maxCapacity: 'u32',
@@ -1304,7 +1443,7 @@
     mqcHead: 'Option<H256>'
   },
   /**
-   * Lookup147: polkadot_primitives::v2::AbridgedHostConfiguration
+   * Lookup153: polkadot_primitives::v2::AbridgedHostConfiguration
    **/
   PolkadotPrimitivesV2AbridgedHostConfiguration: {
     maxCodeSize: 'u32',
@@ -1318,14 +1457,14 @@
     validationUpgradeDelay: 'u32'
   },
   /**
-   * Lookup153: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
+   * Lookup159: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
    **/
   PolkadotCorePrimitivesOutboundHrmpMessage: {
     recipient: 'u32',
     data: 'Bytes'
   },
   /**
-   * Lookup154: cumulus_pallet_parachain_system::pallet::Call<T>
+   * Lookup160: cumulus_pallet_parachain_system::pallet::Call<T>
    **/
   CumulusPalletParachainSystemCall: {
     _enum: {
@@ -1344,7 +1483,7 @@
     }
   },
   /**
-   * Lookup155: cumulus_primitives_parachain_inherent::ParachainInherentData
+   * Lookup161: cumulus_primitives_parachain_inherent::ParachainInherentData
    **/
   CumulusPrimitivesParachainInherentParachainInherentData: {
     validationData: 'PolkadotPrimitivesV2PersistedValidationData',
@@ -1353,27 +1492,27 @@
     horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'
   },
   /**
-   * Lookup157: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
+   * Lookup163: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
    **/
   PolkadotCorePrimitivesInboundDownwardMessage: {
     sentAt: 'u32',
     msg: 'Bytes'
   },
   /**
-   * Lookup160: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
+   * Lookup166: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
    **/
   PolkadotCorePrimitivesInboundHrmpMessage: {
     sentAt: 'u32',
     data: 'Bytes'
   },
   /**
-   * Lookup163: cumulus_pallet_parachain_system::pallet::Error<T>
+   * Lookup169: cumulus_pallet_parachain_system::pallet::Error<T>
    **/
   CumulusPalletParachainSystemError: {
     _enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']
   },
   /**
-   * Lookup165: pallet_balances::BalanceLock<Balance>
+   * Lookup171: pallet_balances::BalanceLock<Balance>
    **/
   PalletBalancesBalanceLock: {
     id: '[u8;8]',
@@ -1381,26 +1520,26 @@
     reasons: 'PalletBalancesReasons'
   },
   /**
-   * Lookup166: pallet_balances::Reasons
+   * Lookup172: pallet_balances::Reasons
    **/
   PalletBalancesReasons: {
     _enum: ['Fee', 'Misc', 'All']
   },
   /**
-   * Lookup169: pallet_balances::ReserveData<ReserveIdentifier, Balance>
+   * Lookup175: pallet_balances::ReserveData<ReserveIdentifier, Balance>
    **/
   PalletBalancesReserveData: {
     id: '[u8;16]',
     amount: 'u128'
   },
   /**
-   * Lookup171: pallet_balances::Releases
+   * Lookup177: pallet_balances::Releases
    **/
   PalletBalancesReleases: {
     _enum: ['V1_0_0', 'V2_0_0']
   },
   /**
-   * Lookup172: pallet_balances::pallet::Call<T, I>
+   * Lookup178: pallet_balances::pallet::Call<T, I>
    **/
   PalletBalancesCall: {
     _enum: {
@@ -1433,13 +1572,13 @@
     }
   },
   /**
-   * Lookup175: pallet_balances::pallet::Error<T, I>
+   * Lookup181: pallet_balances::pallet::Error<T, I>
    **/
   PalletBalancesError: {
     _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']
   },
   /**
-   * Lookup177: pallet_timestamp::pallet::Call<T>
+   * Lookup183: pallet_timestamp::pallet::Call<T>
    **/
   PalletTimestampCall: {
     _enum: {
@@ -1449,13 +1588,13 @@
     }
   },
   /**
-   * Lookup179: pallet_transaction_payment::Releases
+   * Lookup185: pallet_transaction_payment::Releases
    **/
   PalletTransactionPaymentReleases: {
     _enum: ['V1Ancient', 'V2']
   },
   /**
-   * Lookup180: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
+   * Lookup186: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
    **/
   PalletTreasuryProposal: {
     proposer: 'AccountId32',
@@ -1464,7 +1603,7 @@
     bond: 'u128'
   },
   /**
-   * Lookup183: pallet_treasury::pallet::Call<T, I>
+   * Lookup189: pallet_treasury::pallet::Call<T, I>
    **/
   PalletTreasuryCall: {
     _enum: {
@@ -1488,17 +1627,17 @@
     }
   },
   /**
-   * Lookup186: frame_support::PalletId
+   * Lookup192: frame_support::PalletId
    **/
   FrameSupportPalletId: '[u8;8]',
   /**
-   * Lookup187: pallet_treasury::pallet::Error<T, I>
+   * Lookup193: pallet_treasury::pallet::Error<T, I>
    **/
   PalletTreasuryError: {
     _enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals', 'InsufficientPermission', 'ProposalNotApproved']
   },
   /**
-   * Lookup188: pallet_sudo::pallet::Call<T>
+   * Lookup194: pallet_sudo::pallet::Call<T>
    **/
   PalletSudoCall: {
     _enum: {
@@ -1522,7 +1661,7 @@
     }
   },
   /**
-   * Lookup190: orml_vesting::module::Call<T>
+   * Lookup196: orml_vesting::module::Call<T>
    **/
   OrmlVestingModuleCall: {
     _enum: {
@@ -1541,8 +1680,94 @@
     }
   },
   /**
-   * Lookup192: cumulus_pallet_xcmp_queue::pallet::Call<T>
+   * Lookup198: orml_xtokens::module::Call<T>
+   **/
+  OrmlXtokensModuleCall: {
+    _enum: {
+      transfer: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        amount: 'u128',
+        dest: 'XcmVersionedMultiLocation',
+        destWeight: 'u64',
+      },
+      transfer_multiasset: {
+        asset: 'XcmVersionedMultiAsset',
+        dest: 'XcmVersionedMultiLocation',
+        destWeight: 'u64',
+      },
+      transfer_with_fee: {
+        currencyId: 'PalletForeingAssetsAssetIds',
+        amount: 'u128',
+        fee: 'u128',
+        dest: 'XcmVersionedMultiLocation',
+        destWeight: 'u64',
+      },
+      transfer_multiasset_with_fee: {
+        asset: 'XcmVersionedMultiAsset',
+        fee: 'XcmVersionedMultiAsset',
+        dest: 'XcmVersionedMultiLocation',
+        destWeight: 'u64',
+      },
+      transfer_multicurrencies: {
+        currencies: 'Vec<(PalletForeingAssetsAssetIds,u128)>',
+        feeItem: 'u32',
+        dest: 'XcmVersionedMultiLocation',
+        destWeight: 'u64',
+      },
+      transfer_multiassets: {
+        assets: 'XcmVersionedMultiAssets',
+        feeItem: 'u32',
+        dest: 'XcmVersionedMultiLocation',
+        destWeight: 'u64'
+      }
+    }
+  },
+  /**
+   * Lookup199: xcm::VersionedMultiAsset
    **/
+  XcmVersionedMultiAsset: {
+    _enum: {
+      V0: 'XcmV0MultiAsset',
+      V1: 'XcmV1MultiAsset'
+    }
+  },
+  /**
+   * Lookup202: orml_tokens::module::Call<T>
+   **/
+  OrmlTokensModuleCall: {
+    _enum: {
+      transfer: {
+        dest: 'MultiAddress',
+        currencyId: 'PalletForeingAssetsAssetIds',
+        amount: 'Compact<u128>',
+      },
+      transfer_all: {
+        dest: 'MultiAddress',
+        currencyId: 'PalletForeingAssetsAssetIds',
+        keepAlive: 'bool',
+      },
+      transfer_keep_alive: {
+        dest: 'MultiAddress',
+        currencyId: 'PalletForeingAssetsAssetIds',
+        amount: 'Compact<u128>',
+      },
+      force_transfer: {
+        source: 'MultiAddress',
+        dest: 'MultiAddress',
+        currencyId: 'PalletForeingAssetsAssetIds',
+        amount: 'Compact<u128>',
+      },
+      set_balance: {
+        who: 'MultiAddress',
+        currencyId: 'PalletForeingAssetsAssetIds',
+        newFree: 'Compact<u128>',
+        newReserved: 'Compact<u128>'
+      }
+    }
+  },
+  /**
+   * Lookup203: cumulus_pallet_xcmp_queue::pallet::Call<T>
+   **/
   CumulusPalletXcmpQueueCall: {
     _enum: {
       service_overweight: {
@@ -1590,7 +1815,7 @@
     }
   },
   /**
-   * Lookup193: pallet_xcm::pallet::Call<T>
+   * Lookup204: pallet_xcm::pallet::Call<T>
    **/
   PalletXcmCall: {
     _enum: {
@@ -1644,7 +1869,7 @@
     }
   },
   /**
-   * Lookup194: xcm::VersionedXcm<Call>
+   * Lookup205: xcm::VersionedXcm<Call>
    **/
   XcmVersionedXcm: {
     _enum: {
@@ -1654,7 +1879,7 @@
     }
   },
   /**
-   * Lookup195: xcm::v0::Xcm<Call>
+   * Lookup206: xcm::v0::Xcm<Call>
    **/
   XcmV0Xcm: {
     _enum: {
@@ -1708,7 +1933,7 @@
     }
   },
   /**
-   * Lookup197: xcm::v0::order::Order<Call>
+   * Lookup208: xcm::v0::order::Order<Call>
    **/
   XcmV0Order: {
     _enum: {
@@ -1751,7 +1976,7 @@
     }
   },
   /**
-   * Lookup199: xcm::v0::Response
+   * Lookup210: xcm::v0::Response
    **/
   XcmV0Response: {
     _enum: {
@@ -1759,7 +1984,7 @@
     }
   },
   /**
-   * Lookup200: xcm::v1::Xcm<Call>
+   * Lookup211: xcm::v1::Xcm<Call>
    **/
   XcmV1Xcm: {
     _enum: {
@@ -1818,7 +2043,7 @@
     }
   },
   /**
-   * Lookup202: xcm::v1::order::Order<Call>
+   * Lookup213: xcm::v1::order::Order<Call>
    **/
   XcmV1Order: {
     _enum: {
@@ -1863,7 +2088,7 @@
     }
   },
   /**
-   * Lookup204: xcm::v1::Response
+   * Lookup215: xcm::v1::Response
    **/
   XcmV1Response: {
     _enum: {
@@ -1872,11 +2097,11 @@
     }
   },
   /**
-   * Lookup218: cumulus_pallet_xcm::pallet::Call<T>
+   * Lookup229: cumulus_pallet_xcm::pallet::Call<T>
    **/
   CumulusPalletXcmCall: 'Null',
   /**
-   * Lookup219: cumulus_pallet_dmp_queue::pallet::Call<T>
+   * Lookup230: cumulus_pallet_dmp_queue::pallet::Call<T>
    **/
   CumulusPalletDmpQueueCall: {
     _enum: {
@@ -1887,7 +2112,7 @@
     }
   },
   /**
-   * Lookup220: pallet_inflation::pallet::Call<T>
+   * Lookup231: pallet_inflation::pallet::Call<T>
    **/
   PalletInflationCall: {
     _enum: {
@@ -1897,7 +2122,7 @@
     }
   },
   /**
-   * Lookup221: pallet_unique::Call<T>
+   * Lookup232: pallet_unique::Call<T>
    **/
   PalletUniqueCall: {
     _enum: {
@@ -2029,7 +2254,7 @@
     }
   },
   /**
-   * Lookup226: up_data_structs::CollectionMode
+   * Lookup237: up_data_structs::CollectionMode
    **/
   UpDataStructsCollectionMode: {
     _enum: {
@@ -2039,7 +2264,7 @@
     }
   },
   /**
-   * Lookup227: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
+   * Lookup238: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
    **/
   UpDataStructsCreateCollectionData: {
     mode: 'UpDataStructsCollectionMode',
@@ -2054,13 +2279,13 @@
     properties: 'Vec<UpDataStructsProperty>'
   },
   /**
-   * Lookup229: up_data_structs::AccessMode
+   * Lookup240: up_data_structs::AccessMode
    **/
   UpDataStructsAccessMode: {
     _enum: ['Normal', 'AllowList']
   },
   /**
-   * Lookup231: up_data_structs::CollectionLimits
+   * Lookup242: up_data_structs::CollectionLimits
    **/
   UpDataStructsCollectionLimits: {
     accountTokenOwnershipLimit: 'Option<u32>',
@@ -2074,7 +2299,7 @@
     transfersEnabled: 'Option<bool>'
   },
   /**
-   * Lookup233: up_data_structs::SponsoringRateLimit
+   * Lookup244: up_data_structs::SponsoringRateLimit
    **/
   UpDataStructsSponsoringRateLimit: {
     _enum: {
@@ -2083,7 +2308,7 @@
     }
   },
   /**
-   * Lookup236: up_data_structs::CollectionPermissions
+   * Lookup247: up_data_structs::CollectionPermissions
    **/
   UpDataStructsCollectionPermissions: {
     access: 'Option<UpDataStructsAccessMode>',
@@ -2091,7 +2316,7 @@
     nesting: 'Option<UpDataStructsNestingPermissions>'
   },
   /**
-   * Lookup238: up_data_structs::NestingPermissions
+   * Lookup249: up_data_structs::NestingPermissions
    **/
   UpDataStructsNestingPermissions: {
     tokenOwner: 'bool',
@@ -2099,18 +2324,18 @@
     restricted: 'Option<UpDataStructsOwnerRestrictedSet>'
   },
   /**
-   * Lookup240: up_data_structs::OwnerRestrictedSet
+   * Lookup251: up_data_structs::OwnerRestrictedSet
    **/
   UpDataStructsOwnerRestrictedSet: 'BTreeSet<u32>',
   /**
-   * Lookup245: up_data_structs::PropertyKeyPermission
+   * Lookup256: up_data_structs::PropertyKeyPermission
    **/
   UpDataStructsPropertyKeyPermission: {
     key: 'Bytes',
     permission: 'UpDataStructsPropertyPermission'
   },
   /**
-   * Lookup246: up_data_structs::PropertyPermission
+   * Lookup257: up_data_structs::PropertyPermission
    **/
   UpDataStructsPropertyPermission: {
     mutable: 'bool',
@@ -2118,14 +2343,14 @@
     tokenOwner: 'bool'
   },
   /**
-   * Lookup249: up_data_structs::Property
+   * Lookup260: up_data_structs::Property
    **/
   UpDataStructsProperty: {
     key: 'Bytes',
     value: 'Bytes'
   },
   /**
-   * Lookup252: up_data_structs::CreateItemData
+   * Lookup263: up_data_structs::CreateItemData
    **/
   UpDataStructsCreateItemData: {
     _enum: {
@@ -2135,26 +2360,26 @@
     }
   },
   /**
-   * Lookup253: up_data_structs::CreateNftData
+   * Lookup264: up_data_structs::CreateNftData
    **/
   UpDataStructsCreateNftData: {
     properties: 'Vec<UpDataStructsProperty>'
   },
   /**
-   * Lookup254: up_data_structs::CreateFungibleData
+   * Lookup265: up_data_structs::CreateFungibleData
    **/
   UpDataStructsCreateFungibleData: {
     value: 'u128'
   },
   /**
-   * Lookup255: up_data_structs::CreateReFungibleData
+   * Lookup266: up_data_structs::CreateReFungibleData
    **/
   UpDataStructsCreateReFungibleData: {
     pieces: 'u128',
     properties: 'Vec<UpDataStructsProperty>'
   },
   /**
-   * Lookup258: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup269: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsCreateItemExData: {
     _enum: {
@@ -2165,14 +2390,14 @@
     }
   },
   /**
-   * Lookup260: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup271: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsCreateNftExData: {
     properties: 'Vec<UpDataStructsProperty>',
     owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
   },
   /**
-   * Lookup267: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup278: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsCreateRefungibleExSingleOwner: {
     user: 'PalletEvmAccountBasicCrossAccountIdRepr',
@@ -2180,14 +2405,14 @@
     properties: 'Vec<UpDataStructsProperty>'
   },
   /**
-   * Lookup269: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup280: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsCreateRefungibleExMultipleOwners: {
     users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',
     properties: 'Vec<UpDataStructsProperty>'
   },
   /**
-   * Lookup270: pallet_unique_scheduler::pallet::Call<T>
+   * Lookup281: pallet_unique_scheduler::pallet::Call<T>
    **/
   PalletUniqueSchedulerCall: {
     _enum: {
@@ -2211,7 +2436,7 @@
     }
   },
   /**
-   * Lookup272: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>
+   * Lookup283: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>
    **/
   FrameSupportScheduleMaybeHashed: {
     _enum: {
@@ -2220,7 +2445,7 @@
     }
   },
   /**
-   * Lookup273: pallet_configuration::pallet::Call<T>
+   * Lookup284: pallet_configuration::pallet::Call<T>
    **/
   PalletConfigurationCall: {
     _enum: {
@@ -2233,15 +2458,15 @@
     }
   },
   /**
-   * Lookup274: pallet_template_transaction_payment::Call<T>
+   * Lookup285: pallet_template_transaction_payment::Call<T>
    **/
   PalletTemplateTransactionPaymentCall: 'Null',
   /**
-   * Lookup275: pallet_structure::pallet::Call<T>
+   * Lookup286: pallet_structure::pallet::Call<T>
    **/
   PalletStructureCall: 'Null',
   /**
-   * Lookup276: pallet_rmrk_core::pallet::Call<T>
+   * Lookup287: pallet_rmrk_core::pallet::Call<T>
    **/
   PalletRmrkCoreCall: {
     _enum: {
@@ -2332,7 +2557,7 @@
     }
   },
   /**
-   * Lookup282: rmrk_traits::resource::ResourceTypes<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup293: rmrk_traits::resource::ResourceTypes<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsResourceResourceTypes: {
     _enum: {
@@ -2342,7 +2567,7 @@
     }
   },
   /**
-   * Lookup284: rmrk_traits::resource::BasicResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup295: rmrk_traits::resource::BasicResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsResourceBasicResource: {
     src: 'Option<Bytes>',
@@ -2351,7 +2576,7 @@
     thumb: 'Option<Bytes>'
   },
   /**
-   * Lookup286: rmrk_traits::resource::ComposableResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup297: rmrk_traits::resource::ComposableResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsResourceComposableResource: {
     parts: 'Vec<u32>',
@@ -2362,7 +2587,7 @@
     thumb: 'Option<Bytes>'
   },
   /**
-   * Lookup287: rmrk_traits::resource::SlotResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup298: rmrk_traits::resource::SlotResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsResourceSlotResource: {
     base: 'u32',
@@ -2373,7 +2598,7 @@
     thumb: 'Option<Bytes>'
   },
   /**
-   * Lookup290: pallet_rmrk_equip::pallet::Call<T>
+   * Lookup301: pallet_rmrk_equip::pallet::Call<T>
    **/
   PalletRmrkEquipCall: {
     _enum: {
@@ -2394,7 +2619,7 @@
     }
   },
   /**
-   * Lookup293: rmrk_traits::part::PartType<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup304: rmrk_traits::part::PartType<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsPartPartType: {
     _enum: {
@@ -2403,7 +2628,7 @@
     }
   },
   /**
-   * Lookup295: rmrk_traits::part::FixedPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup306: rmrk_traits::part::FixedPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsPartFixedPart: {
     id: 'u32',
@@ -2411,7 +2636,7 @@
     src: 'Bytes'
   },
   /**
-   * Lookup296: rmrk_traits::part::SlotPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup307: rmrk_traits::part::SlotPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsPartSlotPart: {
     id: 'u32',
@@ -2420,7 +2645,7 @@
     z: 'u32'
   },
   /**
-   * Lookup297: rmrk_traits::part::EquippableList<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup308: rmrk_traits::part::EquippableList<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsPartEquippableList: {
     _enum: {
@@ -2430,7 +2655,7 @@
     }
   },
   /**
-   * Lookup299: rmrk_traits::theme::Theme<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>, S>>
+   * Lookup310: rmrk_traits::theme::Theme<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>, S>>
    **/
   RmrkTraitsTheme: {
     name: 'Bytes',
@@ -2438,14 +2663,31 @@
     inherit: 'bool'
   },
   /**
-   * Lookup301: rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup312: rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsThemeThemeProperty: {
     key: 'Bytes',
     value: 'Bytes'
   },
   /**
-   * Lookup303: pallet_evm::pallet::Call<T>
+   * Lookup314: pallet_foreing_assets::module::Call<T>
+   **/
+  PalletForeingAssetsModuleCall: {
+    _enum: {
+      register_foreign_asset: {
+        owner: 'AccountId32',
+        location: 'XcmVersionedMultiLocation',
+        metadata: 'PalletForeingAssetsModuleAssetMetadata',
+      },
+      update_foreign_asset: {
+        foreignAssetId: 'u32',
+        location: 'XcmVersionedMultiLocation',
+        metadata: 'PalletForeingAssetsModuleAssetMetadata'
+      }
+    }
+  },
+  /**
+   * Lookup315: pallet_evm::pallet::Call<T>
    **/
   PalletEvmCall: {
     _enum: {
@@ -2488,7 +2730,7 @@
     }
   },
   /**
-   * Lookup307: pallet_ethereum::pallet::Call<T>
+   * Lookup319: pallet_ethereum::pallet::Call<T>
    **/
   PalletEthereumCall: {
     _enum: {
@@ -2498,7 +2740,7 @@
     }
   },
   /**
-   * Lookup308: ethereum::transaction::TransactionV2
+   * Lookup320: ethereum::transaction::TransactionV2
    **/
   EthereumTransactionTransactionV2: {
     _enum: {
@@ -2508,7 +2750,7 @@
     }
   },
   /**
-   * Lookup309: ethereum::transaction::LegacyTransaction
+   * Lookup321: ethereum::transaction::LegacyTransaction
    **/
   EthereumTransactionLegacyTransaction: {
     nonce: 'U256',
@@ -2520,7 +2762,7 @@
     signature: 'EthereumTransactionTransactionSignature'
   },
   /**
-   * Lookup310: ethereum::transaction::TransactionAction
+   * Lookup322: ethereum::transaction::TransactionAction
    **/
   EthereumTransactionTransactionAction: {
     _enum: {
@@ -2529,7 +2771,7 @@
     }
   },
   /**
-   * Lookup311: ethereum::transaction::TransactionSignature
+   * Lookup323: ethereum::transaction::TransactionSignature
    **/
   EthereumTransactionTransactionSignature: {
     v: 'u64',
@@ -2537,7 +2779,7 @@
     s: 'H256'
   },
   /**
-   * Lookup313: ethereum::transaction::EIP2930Transaction
+   * Lookup325: ethereum::transaction::EIP2930Transaction
    **/
   EthereumTransactionEip2930Transaction: {
     chainId: 'u64',
@@ -2553,14 +2795,14 @@
     s: 'H256'
   },
   /**
-   * Lookup315: ethereum::transaction::AccessListItem
+   * Lookup327: ethereum::transaction::AccessListItem
    **/
   EthereumTransactionAccessListItem: {
     address: 'H160',
     storageKeys: 'Vec<H256>'
   },
   /**
-   * Lookup316: ethereum::transaction::EIP1559Transaction
+   * Lookup328: ethereum::transaction::EIP1559Transaction
    **/
   EthereumTransactionEip1559Transaction: {
     chainId: 'u64',
@@ -2577,7 +2819,7 @@
     s: 'H256'
   },
   /**
-   * Lookup317: pallet_evm_migration::pallet::Call<T>
+   * Lookup329: pallet_evm_migration::pallet::Call<T>
    **/
   PalletEvmMigrationCall: {
     _enum: {
@@ -2595,19 +2837,53 @@
     }
   },
   /**
-   * Lookup320: pallet_sudo::pallet::Error<T>
+   * Lookup332: pallet_sudo::pallet::Error<T>
    **/
   PalletSudoError: {
     _enum: ['RequireSudo']
   },
   /**
-   * Lookup322: orml_vesting::module::Error<T>
+   * Lookup334: orml_vesting::module::Error<T>
    **/
   OrmlVestingModuleError: {
     _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
   },
   /**
-   * Lookup324: cumulus_pallet_xcmp_queue::InboundChannelDetails
+   * Lookup335: orml_xtokens::module::Error<T>
+   **/
+  OrmlXtokensModuleError: {
+    _enum: ['AssetHasNoReserve', 'NotCrossChainTransfer', 'InvalidDest', 'NotCrossChainTransferableCurrency', 'UnweighableMessage', 'XcmExecutionFailed', 'CannotReanchor', 'InvalidAncestry', 'InvalidAsset', 'DestinationNotInvertible', 'BadVersion', 'DistinctReserveForAssetAndFee', 'ZeroFee', 'ZeroAmount', 'TooManyAssetsBeingSent', 'AssetIndexNonExistent', 'FeeNotEnough', 'NotSupportedMultiLocation', 'MinXcmFeeNotDefined']
+  },
+  /**
+   * Lookup338: orml_tokens::BalanceLock<Balance>
+   **/
+  OrmlTokensBalanceLock: {
+    id: '[u8;8]',
+    amount: 'u128'
+  },
+  /**
+   * Lookup340: orml_tokens::AccountData<Balance>
+   **/
+  OrmlTokensAccountData: {
+    free: 'u128',
+    reserved: 'u128',
+    frozen: 'u128'
+  },
+  /**
+   * Lookup342: orml_tokens::ReserveData<ReserveIdentifier, Balance>
+   **/
+  OrmlTokensReserveData: {
+    id: 'Null',
+    amount: 'u128'
+  },
+  /**
+   * Lookup344: orml_tokens::module::Error<T>
+   **/
+  OrmlTokensModuleError: {
+    _enum: ['BalanceTooLow', 'AmountIntoBalanceFailed', 'LiquidityRestrictions', 'MaxLocksExceeded', 'KeepAlive', 'ExistentialDeposit', 'DeadAccount', 'TooManyReserves']
+  },
+  /**
+   * Lookup346: cumulus_pallet_xcmp_queue::InboundChannelDetails
    **/
   CumulusPalletXcmpQueueInboundChannelDetails: {
     sender: 'u32',
@@ -2615,19 +2891,19 @@
     messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
   },
   /**
-   * Lookup325: cumulus_pallet_xcmp_queue::InboundState
+   * Lookup347: cumulus_pallet_xcmp_queue::InboundState
    **/
   CumulusPalletXcmpQueueInboundState: {
     _enum: ['Ok', 'Suspended']
   },
   /**
-   * Lookup328: polkadot_parachain::primitives::XcmpMessageFormat
+   * Lookup350: polkadot_parachain::primitives::XcmpMessageFormat
    **/
   PolkadotParachainPrimitivesXcmpMessageFormat: {
     _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
   },
   /**
-   * Lookup331: cumulus_pallet_xcmp_queue::OutboundChannelDetails
+   * Lookup353: cumulus_pallet_xcmp_queue::OutboundChannelDetails
    **/
   CumulusPalletXcmpQueueOutboundChannelDetails: {
     recipient: 'u32',
@@ -2637,13 +2913,13 @@
     lastIndex: 'u16'
   },
   /**
-   * Lookup332: cumulus_pallet_xcmp_queue::OutboundState
+   * Lookup354: cumulus_pallet_xcmp_queue::OutboundState
    **/
   CumulusPalletXcmpQueueOutboundState: {
     _enum: ['Ok', 'Suspended']
   },
   /**
-   * Lookup334: cumulus_pallet_xcmp_queue::QueueConfigData
+   * Lookup356: cumulus_pallet_xcmp_queue::QueueConfigData
    **/
   CumulusPalletXcmpQueueQueueConfigData: {
     suspendThreshold: 'u32',
@@ -2654,29 +2930,29 @@
     xcmpMaxIndividualWeight: 'u64'
   },
   /**
-   * Lookup336: cumulus_pallet_xcmp_queue::pallet::Error<T>
+   * Lookup358: cumulus_pallet_xcmp_queue::pallet::Error<T>
    **/
   CumulusPalletXcmpQueueError: {
     _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
   },
   /**
-   * Lookup337: pallet_xcm::pallet::Error<T>
+   * Lookup359: pallet_xcm::pallet::Error<T>
    **/
   PalletXcmError: {
     _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
   },
   /**
-   * Lookup338: cumulus_pallet_xcm::pallet::Error<T>
+   * Lookup360: cumulus_pallet_xcm::pallet::Error<T>
    **/
   CumulusPalletXcmError: 'Null',
   /**
-   * Lookup339: cumulus_pallet_dmp_queue::ConfigData
+   * Lookup361: cumulus_pallet_dmp_queue::ConfigData
    **/
   CumulusPalletDmpQueueConfigData: {
     maxIndividual: 'u64'
   },
   /**
-   * Lookup340: cumulus_pallet_dmp_queue::PageIndexData
+   * Lookup362: cumulus_pallet_dmp_queue::PageIndexData
    **/
   CumulusPalletDmpQueuePageIndexData: {
     beginUsed: 'u32',
@@ -2684,19 +2960,19 @@
     overweightCount: 'u64'
   },
   /**
-   * Lookup343: cumulus_pallet_dmp_queue::pallet::Error<T>
+   * Lookup365: cumulus_pallet_dmp_queue::pallet::Error<T>
    **/
   CumulusPalletDmpQueueError: {
     _enum: ['Unknown', 'OverLimit']
   },
   /**
-   * Lookup347: pallet_unique::Error<T>
+   * Lookup369: pallet_unique::Error<T>
    **/
   PalletUniqueError: {
     _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']
   },
   /**
-   * Lookup350: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
+   * Lookup372: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
    **/
   PalletUniqueSchedulerScheduledV3: {
     maybeId: 'Option<[u8;16]>',
@@ -2706,7 +2982,7 @@
     origin: 'OpalRuntimeOriginCaller'
   },
   /**
-   * Lookup351: opal_runtime::OriginCaller
+   * Lookup373: opal_runtime::OriginCaller
    **/
   OpalRuntimeOriginCaller: {
     _enum: {
@@ -2815,7 +3091,7 @@
     }
   },
   /**
-   * Lookup352: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
+   * Lookup374: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
    **/
   FrameSupportDispatchRawOrigin: {
     _enum: {
@@ -2825,7 +3101,7 @@
     }
   },
   /**
-   * Lookup353: pallet_xcm::pallet::Origin
+   * Lookup375: pallet_xcm::pallet::Origin
    **/
   PalletXcmOrigin: {
     _enum: {
@@ -2834,7 +3110,7 @@
     }
   },
   /**
-   * Lookup354: cumulus_pallet_xcm::pallet::Origin
+   * Lookup376: cumulus_pallet_xcm::pallet::Origin
    **/
   CumulusPalletXcmOrigin: {
     _enum: {
@@ -2843,7 +3119,7 @@
     }
   },
   /**
-   * Lookup355: pallet_ethereum::RawOrigin
+   * Lookup377: pallet_ethereum::RawOrigin
    **/
   PalletEthereumRawOrigin: {
     _enum: {
@@ -2851,17 +3127,17 @@
     }
   },
   /**
-   * Lookup356: sp_core::Void
+   * Lookup378: sp_core::Void
    **/
   SpCoreVoid: 'Null',
   /**
-   * Lookup357: pallet_unique_scheduler::pallet::Error<T>
+   * Lookup379: pallet_unique_scheduler::pallet::Error<T>
    **/
   PalletUniqueSchedulerError: {
     _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']
   },
   /**
-   * Lookup358: up_data_structs::Collection<sp_core::crypto::AccountId32>
+   * Lookup380: up_data_structs::Collection<sp_core::crypto::AccountId32>
    **/
   UpDataStructsCollection: {
     owner: 'AccountId32',
@@ -2875,7 +3151,7 @@
     externalCollection: 'bool'
   },
   /**
-   * Lookup359: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
+   * Lookup381: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
    **/
   UpDataStructsSponsorshipState: {
     _enum: {
@@ -2885,7 +3161,7 @@
     }
   },
   /**
-   * Lookup360: up_data_structs::Properties
+   * Lookup382: up_data_structs::Properties
    **/
   UpDataStructsProperties: {
     map: 'UpDataStructsPropertiesMapBoundedVec',
@@ -2893,15 +3169,15 @@
     spaceLimit: 'u32'
   },
   /**
-   * Lookup361: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup383: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
   /**
-   * Lookup366: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
+   * Lookup388: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
    **/
   UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
   /**
-   * Lookup373: up_data_structs::CollectionStats
+   * Lookup395: up_data_structs::CollectionStats
    **/
   UpDataStructsCollectionStats: {
     created: 'u32',
@@ -2909,18 +3185,18 @@
     alive: 'u32'
   },
   /**
-   * Lookup374: up_data_structs::TokenChild
+   * Lookup396: up_data_structs::TokenChild
    **/
   UpDataStructsTokenChild: {
     token: 'u32',
     collection: 'u32'
   },
   /**
-   * Lookup375: PhantomType::up_data_structs<T>
+   * Lookup397: PhantomType::up_data_structs<T>
    **/
   PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',
   /**
-   * Lookup377: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup399: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsTokenData: {
     properties: 'Vec<UpDataStructsProperty>',
@@ -2928,7 +3204,7 @@
     pieces: 'u128'
   },
   /**
-   * Lookup379: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+   * Lookup401: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
    **/
   UpDataStructsRpcCollection: {
     owner: 'AccountId32',
@@ -2944,7 +3220,7 @@
     readOnly: 'bool'
   },
   /**
-   * Lookup380: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
+   * Lookup402: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
    **/
   RmrkTraitsCollectionCollectionInfo: {
     issuer: 'AccountId32',
@@ -2954,7 +3230,7 @@
     nftsCount: 'u32'
   },
   /**
-   * Lookup381: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup403: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsNftNftInfo: {
     owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
@@ -2964,14 +3240,14 @@
     pending: 'bool'
   },
   /**
-   * Lookup383: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
+   * Lookup405: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
    **/
   RmrkTraitsNftRoyaltyInfo: {
     recipient: 'AccountId32',
     amount: 'Permill'
   },
   /**
-   * Lookup384: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup406: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsResourceResourceInfo: {
     id: 'u32',
@@ -2980,14 +3256,14 @@
     pendingRemoval: 'bool'
   },
   /**
-   * Lookup385: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup407: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsPropertyPropertyInfo: {
     key: 'Bytes',
     value: 'Bytes'
   },
   /**
-   * Lookup386: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+   * Lookup408: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTraitsBaseBaseInfo: {
     issuer: 'AccountId32',
@@ -2995,80 +3271,86 @@
     symbol: 'Bytes'
   },
   /**
-   * Lookup387: rmrk_traits::nft::NftChild
+   * Lookup409: rmrk_traits::nft::NftChild
    **/
   RmrkTraitsNftNftChild: {
     collectionId: 'u32',
     nftId: 'u32'
   },
   /**
-   * Lookup389: pallet_common::pallet::Error<T>
+   * Lookup411: pallet_common::pallet::Error<T>
    **/
   PalletCommonError: {
     _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal']
   },
   /**
-   * Lookup391: pallet_fungible::pallet::Error<T>
+   * Lookup413: pallet_fungible::pallet::Error<T>
    **/
   PalletFungibleError: {
     _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup392: pallet_refungible::ItemData
+   * Lookup414: pallet_refungible::ItemData
    **/
   PalletRefungibleItemData: {
     constData: 'Bytes'
   },
   /**
-   * Lookup397: pallet_refungible::pallet::Error<T>
+   * Lookup419: pallet_refungible::pallet::Error<T>
    **/
   PalletRefungibleError: {
     _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup398: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup420: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   PalletNonfungibleItemData: {
     owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
   },
   /**
-   * Lookup400: up_data_structs::PropertyScope
+   * Lookup422: up_data_structs::PropertyScope
    **/
   UpDataStructsPropertyScope: {
     _enum: ['None', 'Rmrk', 'Eth']
   },
   /**
-   * Lookup402: pallet_nonfungible::pallet::Error<T>
+   * Lookup424: pallet_nonfungible::pallet::Error<T>
    **/
   PalletNonfungibleError: {
     _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
   },
   /**
-   * Lookup403: pallet_structure::pallet::Error<T>
+   * Lookup425: pallet_structure::pallet::Error<T>
    **/
   PalletStructureError: {
     _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
   },
   /**
-   * Lookup404: pallet_rmrk_core::pallet::Error<T>
+   * Lookup426: pallet_rmrk_core::pallet::Error<T>
    **/
   PalletRmrkCoreError: {
     _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
   },
   /**
-   * Lookup406: pallet_rmrk_equip::pallet::Error<T>
+   * Lookup428: pallet_rmrk_equip::pallet::Error<T>
    **/
   PalletRmrkEquipError: {
     _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']
   },
   /**
-   * Lookup409: pallet_evm::pallet::Error<T>
+   * Lookup429: pallet_foreing_assets::module::Error<T>
    **/
+  PalletForeingAssetsModuleError: {
+    _enum: ['BadLocation', 'MultiLocationExisted', 'AssetIdNotExists', 'AssetIdExisted']
+  },
+  /**
+   * Lookup432: pallet_evm::pallet::Error<T>
+   **/
   PalletEvmError: {
     _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
   },
   /**
-   * Lookup412: fp_rpc::TransactionStatus
+   * Lookup435: fp_rpc::TransactionStatus
    **/
   FpRpcTransactionStatus: {
     transactionHash: 'H256',
@@ -3080,11 +3362,11 @@
     logsBloom: 'EthbloomBloom'
   },
   /**
-   * Lookup414: ethbloom::Bloom
+   * Lookup437: ethbloom::Bloom
    **/
   EthbloomBloom: '[u8;256]',
   /**
-   * Lookup416: ethereum::receipt::ReceiptV3
+   * Lookup439: ethereum::receipt::ReceiptV3
    **/
   EthereumReceiptReceiptV3: {
     _enum: {
@@ -3094,7 +3376,7 @@
     }
   },
   /**
-   * Lookup417: ethereum::receipt::EIP658ReceiptData
+   * Lookup440: ethereum::receipt::EIP658ReceiptData
    **/
   EthereumReceiptEip658ReceiptData: {
     statusCode: 'u8',
@@ -3103,7 +3385,7 @@
     logs: 'Vec<EthereumLog>'
   },
   /**
-   * Lookup418: ethereum::block::Block<ethereum::transaction::TransactionV2>
+   * Lookup441: ethereum::block::Block<ethereum::transaction::TransactionV2>
    **/
   EthereumBlock: {
     header: 'EthereumHeader',
@@ -3111,7 +3393,7 @@
     ommers: 'Vec<EthereumHeader>'
   },
   /**
-   * Lookup419: ethereum::header::Header
+   * Lookup442: ethereum::header::Header
    **/
   EthereumHeader: {
     parentHash: 'H256',
@@ -3131,41 +3413,41 @@
     nonce: 'EthereumTypesHashH64'
   },
   /**
-   * Lookup420: ethereum_types::hash::H64
+   * Lookup443: ethereum_types::hash::H64
    **/
   EthereumTypesHashH64: '[u8;8]',
   /**
-   * Lookup425: pallet_ethereum::pallet::Error<T>
+   * Lookup448: pallet_ethereum::pallet::Error<T>
    **/
   PalletEthereumError: {
     _enum: ['InvalidSignature', 'PreLogExists']
   },
   /**
-   * Lookup426: pallet_evm_coder_substrate::pallet::Error<T>
+   * Lookup449: pallet_evm_coder_substrate::pallet::Error<T>
    **/
   PalletEvmCoderSubstrateError: {
     _enum: ['OutOfGas', 'OutOfFund']
   },
   /**
-   * Lookup427: pallet_evm_contract_helpers::SponsoringModeT
+   * Lookup450: pallet_evm_contract_helpers::SponsoringModeT
    **/
   PalletEvmContractHelpersSponsoringModeT: {
     _enum: ['Disabled', 'Allowlisted', 'Generous']
   },
   /**
-   * Lookup429: pallet_evm_contract_helpers::pallet::Error<T>
+   * Lookup452: pallet_evm_contract_helpers::pallet::Error<T>
    **/
   PalletEvmContractHelpersError: {
     _enum: ['NoPermission']
   },
   /**
-   * Lookup430: pallet_evm_migration::pallet::Error<T>
+   * Lookup453: pallet_evm_migration::pallet::Error<T>
    **/
   PalletEvmMigrationError: {
     _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
   },
   /**
-   * Lookup432: sp_runtime::MultiSignature
+   * Lookup455: sp_runtime::MultiSignature
    **/
   SpRuntimeMultiSignature: {
     _enum: {
@@ -3175,43 +3457,43 @@
     }
   },
   /**
-   * Lookup433: sp_core::ed25519::Signature
+   * Lookup456: sp_core::ed25519::Signature
    **/
   SpCoreEd25519Signature: '[u8;64]',
   /**
-   * Lookup435: sp_core::sr25519::Signature
+   * Lookup458: sp_core::sr25519::Signature
    **/
   SpCoreSr25519Signature: '[u8;64]',
   /**
-   * Lookup436: sp_core::ecdsa::Signature
+   * Lookup459: sp_core::ecdsa::Signature
    **/
   SpCoreEcdsaSignature: '[u8;65]',
   /**
-   * Lookup439: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+   * Lookup462: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
    **/
   FrameSystemExtensionsCheckSpecVersion: 'Null',
   /**
-   * Lookup440: frame_system::extensions::check_genesis::CheckGenesis<T>
+   * Lookup463: frame_system::extensions::check_genesis::CheckGenesis<T>
    **/
   FrameSystemExtensionsCheckGenesis: 'Null',
   /**
-   * Lookup443: frame_system::extensions::check_nonce::CheckNonce<T>
+   * Lookup466: frame_system::extensions::check_nonce::CheckNonce<T>
    **/
   FrameSystemExtensionsCheckNonce: 'Compact<u32>',
   /**
-   * Lookup444: frame_system::extensions::check_weight::CheckWeight<T>
+   * Lookup467: frame_system::extensions::check_weight::CheckWeight<T>
    **/
   FrameSystemExtensionsCheckWeight: 'Null',
   /**
-   * Lookup445: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+   * Lookup468: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
    **/
   PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
   /**
-   * Lookup446: opal_runtime::Runtime
+   * Lookup469: opal_runtime::Runtime
    **/
   OpalRuntimeRuntime: 'Null',
   /**
-   * Lookup447: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
+   * Lookup470: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
    **/
   PalletEthereumFakeTransactionFinalizer: 'Null'
 };
modifiedtests/src/interfaces/registry.tsdiffbeforeafterboth
--- a/tests/src/interfaces/registry.ts
+++ b/tests/src/interfaces/registry.ts
@@ -1,14 +1,10 @@
 // Auto-generated via `yarn polkadot-types-from-defs`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/types/types/registry';
-
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensModuleCall, OrmlTokensModuleError, OrmlTokensModuleEvent, OrmlTokensReserveData, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, OrmlXtokensModuleCall, OrmlXtokensModuleError, OrmlXtokensModuleEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletForeingAssetsAssetIds, PalletForeingAssetsModuleAssetMetadata, PalletForeingAssetsModuleCall, PalletForeingAssetsModuleError, PalletForeingAssetsModuleEvent, PalletForeingAssetsNativeCurrency, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAsset, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
 
 declare module '@polkadot/types/types/registry' {
-  interface InterfaceTypes {
+  export interface InterfaceTypes {
     CumulusPalletDmpQueueCall: CumulusPalletDmpQueueCall;
     CumulusPalletDmpQueueConfigData: CumulusPalletDmpQueueConfigData;
     CumulusPalletDmpQueueError: CumulusPalletDmpQueueError;
@@ -79,10 +75,19 @@
     FrameSystemPhase: FrameSystemPhase;
     OpalRuntimeOriginCaller: OpalRuntimeOriginCaller;
     OpalRuntimeRuntime: OpalRuntimeRuntime;
+    OrmlTokensAccountData: OrmlTokensAccountData;
+    OrmlTokensBalanceLock: OrmlTokensBalanceLock;
+    OrmlTokensModuleCall: OrmlTokensModuleCall;
+    OrmlTokensModuleError: OrmlTokensModuleError;
+    OrmlTokensModuleEvent: OrmlTokensModuleEvent;
+    OrmlTokensReserveData: OrmlTokensReserveData;
     OrmlVestingModuleCall: OrmlVestingModuleCall;
     OrmlVestingModuleError: OrmlVestingModuleError;
     OrmlVestingModuleEvent: OrmlVestingModuleEvent;
     OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;
+    OrmlXtokensModuleCall: OrmlXtokensModuleCall;
+    OrmlXtokensModuleError: OrmlXtokensModuleError;
+    OrmlXtokensModuleEvent: OrmlXtokensModuleEvent;
     PalletBalancesAccountData: PalletBalancesAccountData;
     PalletBalancesBalanceLock: PalletBalancesBalanceLock;
     PalletBalancesCall: PalletBalancesCall;
@@ -108,6 +113,12 @@
     PalletEvmEvent: PalletEvmEvent;
     PalletEvmMigrationCall: PalletEvmMigrationCall;
     PalletEvmMigrationError: PalletEvmMigrationError;
+    PalletForeingAssetsAssetIds: PalletForeingAssetsAssetIds;
+    PalletForeingAssetsModuleAssetMetadata: PalletForeingAssetsModuleAssetMetadata;
+    PalletForeingAssetsModuleCall: PalletForeingAssetsModuleCall;
+    PalletForeingAssetsModuleError: PalletForeingAssetsModuleError;
+    PalletForeingAssetsModuleEvent: PalletForeingAssetsModuleEvent;
+    PalletForeingAssetsNativeCurrency: PalletForeingAssetsNativeCurrency;
     PalletFungibleError: PalletFungibleError;
     PalletInflationCall: PalletInflationCall;
     PalletNonfungibleError: PalletNonfungibleError;
@@ -247,6 +258,7 @@
     XcmV2TraitsOutcome: XcmV2TraitsOutcome;
     XcmV2WeightLimit: XcmV2WeightLimit;
     XcmV2Xcm: XcmV2Xcm;
+    XcmVersionedMultiAsset: XcmVersionedMultiAsset;
     XcmVersionedMultiAssets: XcmVersionedMultiAssets;
     XcmVersionedMultiLocation: XcmVersionedMultiLocation;
     XcmVersionedXcm: XcmVersionedXcm;
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1,18 +1,14 @@
 // Auto-generated via `yarn polkadot-types-from-defs`, do not edit
 /* eslint-disable */
 
-// import type lookup before we augment - in some environments
-// this is required to allow for ambient/previous definitions
-import '@polkadot/types/lookup';
-
-import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
-import type { ITuple } from '@polkadot/types-codec/types';
-import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
-import type { Event } from '@polkadot/types/interfaces/system';
+declare module '@polkadot/types/lookup' {
+  import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
+  import type { ITuple } from '@polkadot/types-codec/types';
+  import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
+  import type { Event } from '@polkadot/types/interfaces/system';
 
-declare module '@polkadot/types/lookup' {
   /** @name FrameSystemAccountInfo (3) */
-  interface FrameSystemAccountInfo extends Struct {
+  export interface FrameSystemAccountInfo extends Struct {
     readonly nonce: u32;
     readonly consumers: u32;
     readonly providers: u32;
@@ -21,7 +17,7 @@
   }
 
   /** @name PalletBalancesAccountData (5) */
-  interface PalletBalancesAccountData extends Struct {
+  export interface PalletBalancesAccountData extends Struct {
     readonly free: u128;
     readonly reserved: u128;
     readonly miscFrozen: u128;
@@ -29,19 +25,19 @@
   }
 
   /** @name FrameSupportWeightsPerDispatchClassU64 (7) */
-  interface FrameSupportWeightsPerDispatchClassU64 extends Struct {
+  export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {
     readonly normal: u64;
     readonly operational: u64;
     readonly mandatory: u64;
   }
 
   /** @name SpRuntimeDigest (11) */
-  interface SpRuntimeDigest extends Struct {
+  export interface SpRuntimeDigest extends Struct {
     readonly logs: Vec<SpRuntimeDigestDigestItem>;
   }
 
   /** @name SpRuntimeDigestDigestItem (13) */
-  interface SpRuntimeDigestDigestItem extends Enum {
+  export interface SpRuntimeDigestDigestItem extends Enum {
     readonly isOther: boolean;
     readonly asOther: Bytes;
     readonly isConsensus: boolean;
@@ -55,14 +51,14 @@
   }
 
   /** @name FrameSystemEventRecord (16) */
-  interface FrameSystemEventRecord extends Struct {
+  export interface FrameSystemEventRecord extends Struct {
     readonly phase: FrameSystemPhase;
     readonly event: Event;
     readonly topics: Vec<H256>;
   }
 
   /** @name FrameSystemEvent (18) */
-  interface FrameSystemEvent extends Enum {
+  export interface FrameSystemEvent extends Enum {
     readonly isExtrinsicSuccess: boolean;
     readonly asExtrinsicSuccess: {
       readonly dispatchInfo: FrameSupportWeightsDispatchInfo;
@@ -90,14 +86,14 @@
   }
 
   /** @name FrameSupportWeightsDispatchInfo (19) */
-  interface FrameSupportWeightsDispatchInfo extends Struct {
+  export interface FrameSupportWeightsDispatchInfo extends Struct {
     readonly weight: u64;
     readonly class: FrameSupportWeightsDispatchClass;
     readonly paysFee: FrameSupportWeightsPays;
   }
 
   /** @name FrameSupportWeightsDispatchClass (20) */
-  interface FrameSupportWeightsDispatchClass extends Enum {
+  export interface FrameSupportWeightsDispatchClass extends Enum {
     readonly isNormal: boolean;
     readonly isOperational: boolean;
     readonly isMandatory: boolean;
@@ -105,14 +101,14 @@
   }
 
   /** @name FrameSupportWeightsPays (21) */
-  interface FrameSupportWeightsPays extends Enum {
+  export interface FrameSupportWeightsPays extends Enum {
     readonly isYes: boolean;
     readonly isNo: boolean;
     readonly type: 'Yes' | 'No';
   }
 
   /** @name SpRuntimeDispatchError (22) */
-  interface SpRuntimeDispatchError extends Enum {
+  export interface SpRuntimeDispatchError extends Enum {
     readonly isOther: boolean;
     readonly isCannotLookup: boolean;
     readonly isBadOrigin: boolean;
@@ -131,13 +127,13 @@
   }
 
   /** @name SpRuntimeModuleError (23) */
-  interface SpRuntimeModuleError extends Struct {
+  export interface SpRuntimeModuleError extends Struct {
     readonly index: u8;
     readonly error: U8aFixed;
   }
 
   /** @name SpRuntimeTokenError (24) */
-  interface SpRuntimeTokenError extends Enum {
+  export interface SpRuntimeTokenError extends Enum {
     readonly isNoFunds: boolean;
     readonly isWouldDie: boolean;
     readonly isBelowMinimum: boolean;
@@ -149,7 +145,7 @@
   }
 
   /** @name SpRuntimeArithmeticError (25) */
-  interface SpRuntimeArithmeticError extends Enum {
+  export interface SpRuntimeArithmeticError extends Enum {
     readonly isUnderflow: boolean;
     readonly isOverflow: boolean;
     readonly isDivisionByZero: boolean;
@@ -157,14 +153,14 @@
   }
 
   /** @name SpRuntimeTransactionalError (26) */
-  interface SpRuntimeTransactionalError extends Enum {
+  export interface SpRuntimeTransactionalError extends Enum {
     readonly isLimitReached: boolean;
     readonly isNoLayer: boolean;
     readonly type: 'LimitReached' | 'NoLayer';
   }
 
   /** @name CumulusPalletParachainSystemEvent (27) */
-  interface CumulusPalletParachainSystemEvent extends Enum {
+  export interface CumulusPalletParachainSystemEvent extends Enum {
     readonly isValidationFunctionStored: boolean;
     readonly isValidationFunctionApplied: boolean;
     readonly asValidationFunctionApplied: {
@@ -188,7 +184,7 @@
   }
 
   /** @name PalletBalancesEvent (28) */
-  interface PalletBalancesEvent extends Enum {
+  export interface PalletBalancesEvent extends Enum {
     readonly isEndowed: boolean;
     readonly asEndowed: {
       readonly account: AccountId32;
@@ -247,14 +243,14 @@
   }
 
   /** @name FrameSupportTokensMiscBalanceStatus (29) */
-  interface FrameSupportTokensMiscBalanceStatus extends Enum {
+  export interface FrameSupportTokensMiscBalanceStatus extends Enum {
     readonly isFree: boolean;
     readonly isReserved: boolean;
     readonly type: 'Free' | 'Reserved';
   }
 
   /** @name PalletTransactionPaymentEvent (30) */
-  interface PalletTransactionPaymentEvent extends Enum {
+  export interface PalletTransactionPaymentEvent extends Enum {
     readonly isTransactionFeePaid: boolean;
     readonly asTransactionFeePaid: {
       readonly who: AccountId32;
@@ -265,7 +261,7 @@
   }
 
   /** @name PalletTreasuryEvent (31) */
-  interface PalletTreasuryEvent extends Enum {
+  export interface PalletTreasuryEvent extends Enum {
     readonly isProposed: boolean;
     readonly asProposed: {
       readonly proposalIndex: u32;
@@ -307,7 +303,7 @@
   }
 
   /** @name PalletSudoEvent (32) */
-  interface PalletSudoEvent extends Enum {
+  export interface PalletSudoEvent extends Enum {
     readonly isSudid: boolean;
     readonly asSudid: {
       readonly sudoResult: Result<Null, SpRuntimeDispatchError>;
@@ -324,7 +320,7 @@
   }
 
   /** @name OrmlVestingModuleEvent (36) */
-  interface OrmlVestingModuleEvent extends Enum {
+  export interface OrmlVestingModuleEvent extends Enum {
     readonly isVestingScheduleAdded: boolean;
     readonly asVestingScheduleAdded: {
       readonly from: AccountId32;
@@ -344,15 +340,287 @@
   }
 
   /** @name OrmlVestingVestingSchedule (37) */
-  interface OrmlVestingVestingSchedule extends Struct {
+  export interface OrmlVestingVestingSchedule extends Struct {
     readonly start: u32;
     readonly period: u32;
     readonly periodCount: u32;
     readonly perPeriod: Compact<u128>;
   }
 
-  /** @name CumulusPalletXcmpQueueEvent (39) */
-  interface CumulusPalletXcmpQueueEvent extends Enum {
+  /** @name OrmlXtokensModuleEvent (39) */
+  export interface OrmlXtokensModuleEvent extends Enum {
+    readonly isTransferredMultiAssets: boolean;
+    readonly asTransferredMultiAssets: {
+      readonly sender: AccountId32;
+      readonly assets: XcmV1MultiassetMultiAssets;
+      readonly fee: XcmV1MultiAsset;
+      readonly dest: XcmV1MultiLocation;
+    } & Struct;
+    readonly type: 'TransferredMultiAssets';
+  }
+
+  /** @name XcmV1MultiassetMultiAssets (40) */
+  export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}
+
+  /** @name XcmV1MultiAsset (42) */
+  export interface XcmV1MultiAsset extends Struct {
+    readonly id: XcmV1MultiassetAssetId;
+    readonly fun: XcmV1MultiassetFungibility;
+  }
+
+  /** @name XcmV1MultiassetAssetId (43) */
+  export interface XcmV1MultiassetAssetId extends Enum {
+    readonly isConcrete: boolean;
+    readonly asConcrete: XcmV1MultiLocation;
+    readonly isAbstract: boolean;
+    readonly asAbstract: Bytes;
+    readonly type: 'Concrete' | 'Abstract';
+  }
+
+  /** @name XcmV1MultiLocation (44) */
+  export interface XcmV1MultiLocation extends Struct {
+    readonly parents: u8;
+    readonly interior: XcmV1MultilocationJunctions;
+  }
+
+  /** @name XcmV1MultilocationJunctions (45) */
+  export interface XcmV1MultilocationJunctions extends Enum {
+    readonly isHere: boolean;
+    readonly isX1: boolean;
+    readonly asX1: XcmV1Junction;
+    readonly isX2: boolean;
+    readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;
+    readonly isX3: boolean;
+    readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+    readonly isX4: boolean;
+    readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+    readonly isX5: boolean;
+    readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+    readonly isX6: boolean;
+    readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+    readonly isX7: boolean;
+    readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+    readonly isX8: boolean;
+    readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
+    readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
+  }
+
+  /** @name XcmV1Junction (46) */
+  export interface XcmV1Junction extends Enum {
+    readonly isParachain: boolean;
+    readonly asParachain: Compact<u32>;
+    readonly isAccountId32: boolean;
+    readonly asAccountId32: {
+      readonly network: XcmV0JunctionNetworkId;
+      readonly id: U8aFixed;
+    } & Struct;
+    readonly isAccountIndex64: boolean;
+    readonly asAccountIndex64: {
+      readonly network: XcmV0JunctionNetworkId;
+      readonly index: Compact<u64>;
+    } & Struct;
+    readonly isAccountKey20: boolean;
+    readonly asAccountKey20: {
+      readonly network: XcmV0JunctionNetworkId;
+      readonly key: U8aFixed;
+    } & Struct;
+    readonly isPalletInstance: boolean;
+    readonly asPalletInstance: u8;
+    readonly isGeneralIndex: boolean;
+    readonly asGeneralIndex: Compact<u128>;
+    readonly isGeneralKey: boolean;
+    readonly asGeneralKey: Bytes;
+    readonly isOnlyChild: boolean;
+    readonly isPlurality: boolean;
+    readonly asPlurality: {
+      readonly id: XcmV0JunctionBodyId;
+      readonly part: XcmV0JunctionBodyPart;
+    } & Struct;
+    readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
+  }
+
+  /** @name XcmV0JunctionNetworkId (48) */
+  export interface XcmV0JunctionNetworkId extends Enum {
+    readonly isAny: boolean;
+    readonly isNamed: boolean;
+    readonly asNamed: Bytes;
+    readonly isPolkadot: boolean;
+    readonly isKusama: boolean;
+    readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';
+  }
+
+  /** @name XcmV0JunctionBodyId (52) */
+  export interface XcmV0JunctionBodyId extends Enum {
+    readonly isUnit: boolean;
+    readonly isNamed: boolean;
+    readonly asNamed: Bytes;
+    readonly isIndex: boolean;
+    readonly asIndex: Compact<u32>;
+    readonly isExecutive: boolean;
+    readonly isTechnical: boolean;
+    readonly isLegislative: boolean;
+    readonly isJudicial: boolean;
+    readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';
+  }
+
+  /** @name XcmV0JunctionBodyPart (53) */
+  export interface XcmV0JunctionBodyPart extends Enum {
+    readonly isVoice: boolean;
+    readonly isMembers: boolean;
+    readonly asMembers: {
+      readonly count: Compact<u32>;
+    } & Struct;
+    readonly isFraction: boolean;
+    readonly asFraction: {
+      readonly nom: Compact<u32>;
+      readonly denom: Compact<u32>;
+    } & Struct;
+    readonly isAtLeastProportion: boolean;
+    readonly asAtLeastProportion: {
+      readonly nom: Compact<u32>;
+      readonly denom: Compact<u32>;
+    } & Struct;
+    readonly isMoreThanProportion: boolean;
+    readonly asMoreThanProportion: {
+      readonly nom: Compact<u32>;
+      readonly denom: Compact<u32>;
+    } & Struct;
+    readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
+  }
+
+  /** @name XcmV1MultiassetFungibility (54) */
+  export interface XcmV1MultiassetFungibility extends Enum {
+    readonly isFungible: boolean;
+    readonly asFungible: Compact<u128>;
+    readonly isNonFungible: boolean;
+    readonly asNonFungible: XcmV1MultiassetAssetInstance;
+    readonly type: 'Fungible' | 'NonFungible';
+  }
+
+  /** @name XcmV1MultiassetAssetInstance (55) */
+  export interface XcmV1MultiassetAssetInstance extends Enum {
+    readonly isUndefined: boolean;
+    readonly isIndex: boolean;
+    readonly asIndex: Compact<u128>;
+    readonly isArray4: boolean;
+    readonly asArray4: U8aFixed;
+    readonly isArray8: boolean;
+    readonly asArray8: U8aFixed;
+    readonly isArray16: boolean;
+    readonly asArray16: U8aFixed;
+    readonly isArray32: boolean;
+    readonly asArray32: U8aFixed;
+    readonly isBlob: boolean;
+    readonly asBlob: Bytes;
+    readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
+  }
+
+  /** @name OrmlTokensModuleEvent (58) */
+  export interface OrmlTokensModuleEvent extends Enum {
+    readonly isEndowed: boolean;
+    readonly asEndowed: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isDustLost: boolean;
+    readonly asDustLost: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isTransfer: boolean;
+    readonly asTransfer: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly from: AccountId32;
+      readonly to: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isReserved: boolean;
+    readonly asReserved: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isUnreserved: boolean;
+    readonly asUnreserved: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isReserveRepatriated: boolean;
+    readonly asReserveRepatriated: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly from: AccountId32;
+      readonly to: AccountId32;
+      readonly amount: u128;
+      readonly status: FrameSupportTokensMiscBalanceStatus;
+    } & Struct;
+    readonly isBalanceSet: boolean;
+    readonly asBalanceSet: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly free: u128;
+      readonly reserved: u128;
+    } & Struct;
+    readonly isTotalIssuanceSet: boolean;
+    readonly asTotalIssuanceSet: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly amount: u128;
+    } & Struct;
+    readonly isWithdrawn: boolean;
+    readonly asWithdrawn: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isSlashed: boolean;
+    readonly asSlashed: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly freeAmount: u128;
+      readonly reservedAmount: u128;
+    } & Struct;
+    readonly isDeposited: boolean;
+    readonly asDeposited: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isLockSet: boolean;
+    readonly asLockSet: {
+      readonly lockId: U8aFixed;
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+      readonly amount: u128;
+    } & Struct;
+    readonly isLockRemoved: boolean;
+    readonly asLockRemoved: {
+      readonly lockId: U8aFixed;
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly who: AccountId32;
+    } & Struct;
+    readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'BalanceSet' | 'TotalIssuanceSet' | 'Withdrawn' | 'Slashed' | 'Deposited' | 'LockSet' | 'LockRemoved';
+  }
+
+  /** @name PalletForeingAssetsAssetIds (59) */
+  export interface PalletForeingAssetsAssetIds extends Enum {
+    readonly isForeignAssetId: boolean;
+    readonly asForeignAssetId: u32;
+    readonly isNativeAssetId: boolean;
+    readonly asNativeAssetId: PalletForeingAssetsNativeCurrency;
+    readonly type: 'ForeignAssetId' | 'NativeAssetId';
+  }
+
+  /** @name PalletForeingAssetsNativeCurrency (60) */
+  export interface PalletForeingAssetsNativeCurrency extends Enum {
+    readonly isHere: boolean;
+    readonly isParent: boolean;
+    readonly type: 'Here' | 'Parent';
+  }
+
+  /** @name CumulusPalletXcmpQueueEvent (61) */
+  export interface CumulusPalletXcmpQueueEvent extends Enum {
     readonly isSuccess: boolean;
     readonly asSuccess: {
       readonly messageHash: Option<H256>;
@@ -395,8 +663,8 @@
     readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';
   }
 
-  /** @name XcmV2TraitsError (41) */
-  interface XcmV2TraitsError extends Enum {
+  /** @name XcmV2TraitsError (63) */
+  export interface XcmV2TraitsError extends Enum {
     readonly isOverflow: boolean;
     readonly isUnimplemented: boolean;
     readonly isUntrustedReserveLocation: boolean;
@@ -428,8 +696,8 @@
     readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'MultiLocationFull' | 'MultiLocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'WeightNotComputable';
   }
 
-  /** @name PalletXcmEvent (43) */
-  interface PalletXcmEvent extends Enum {
+  /** @name PalletXcmEvent (65) */
+  export interface PalletXcmEvent extends Enum {
     readonly isAttempted: boolean;
     readonly asAttempted: XcmV2TraitsOutcome;
     readonly isSent: boolean;
@@ -465,8 +733,8 @@
     readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
   }
 
-  /** @name XcmV2TraitsOutcome (44) */
-  interface XcmV2TraitsOutcome extends Enum {
+  /** @name XcmV2TraitsOutcome (66) */
+  export interface XcmV2TraitsOutcome extends Enum {
     readonly isComplete: boolean;
     readonly asComplete: u64;
     readonly isIncomplete: boolean;
@@ -474,124 +742,13 @@
     readonly isError: boolean;
     readonly asError: XcmV2TraitsError;
     readonly type: 'Complete' | 'Incomplete' | 'Error';
-  }
-
-  /** @name XcmV1MultiLocation (45) */
-  interface XcmV1MultiLocation extends Struct {
-    readonly parents: u8;
-    readonly interior: XcmV1MultilocationJunctions;
   }
 
-  /** @name XcmV1MultilocationJunctions (46) */
-  interface XcmV1MultilocationJunctions extends Enum {
-    readonly isHere: boolean;
-    readonly isX1: boolean;
-    readonly asX1: XcmV1Junction;
-    readonly isX2: boolean;
-    readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;
-    readonly isX3: boolean;
-    readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
-    readonly isX4: boolean;
-    readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
-    readonly isX5: boolean;
-    readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
-    readonly isX6: boolean;
-    readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
-    readonly isX7: boolean;
-    readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
-    readonly isX8: boolean;
-    readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;
-    readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
-  }
-
-  /** @name XcmV1Junction (47) */
-  interface XcmV1Junction extends Enum {
-    readonly isParachain: boolean;
-    readonly asParachain: Compact<u32>;
-    readonly isAccountId32: boolean;
-    readonly asAccountId32: {
-      readonly network: XcmV0JunctionNetworkId;
-      readonly id: U8aFixed;
-    } & Struct;
-    readonly isAccountIndex64: boolean;
-    readonly asAccountIndex64: {
-      readonly network: XcmV0JunctionNetworkId;
-      readonly index: Compact<u64>;
-    } & Struct;
-    readonly isAccountKey20: boolean;
-    readonly asAccountKey20: {
-      readonly network: XcmV0JunctionNetworkId;
-      readonly key: U8aFixed;
-    } & Struct;
-    readonly isPalletInstance: boolean;
-    readonly asPalletInstance: u8;
-    readonly isGeneralIndex: boolean;
-    readonly asGeneralIndex: Compact<u128>;
-    readonly isGeneralKey: boolean;
-    readonly asGeneralKey: Bytes;
-    readonly isOnlyChild: boolean;
-    readonly isPlurality: boolean;
-    readonly asPlurality: {
-      readonly id: XcmV0JunctionBodyId;
-      readonly part: XcmV0JunctionBodyPart;
-    } & Struct;
-    readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
-  }
+  /** @name XcmV2Xcm (67) */
+  export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}
 
-  /** @name XcmV0JunctionNetworkId (49) */
-  interface XcmV0JunctionNetworkId extends Enum {
-    readonly isAny: boolean;
-    readonly isNamed: boolean;
-    readonly asNamed: Bytes;
-    readonly isPolkadot: boolean;
-    readonly isKusama: boolean;
-    readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';
-  }
-
-  /** @name XcmV0JunctionBodyId (53) */
-  interface XcmV0JunctionBodyId extends Enum {
-    readonly isUnit: boolean;
-    readonly isNamed: boolean;
-    readonly asNamed: Bytes;
-    readonly isIndex: boolean;
-    readonly asIndex: Compact<u32>;
-    readonly isExecutive: boolean;
-    readonly isTechnical: boolean;
-    readonly isLegislative: boolean;
-    readonly isJudicial: boolean;
-    readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';
-  }
-
-  /** @name XcmV0JunctionBodyPart (54) */
-  interface XcmV0JunctionBodyPart extends Enum {
-    readonly isVoice: boolean;
-    readonly isMembers: boolean;
-    readonly asMembers: {
-      readonly count: Compact<u32>;
-    } & Struct;
-    readonly isFraction: boolean;
-    readonly asFraction: {
-      readonly nom: Compact<u32>;
-      readonly denom: Compact<u32>;
-    } & Struct;
-    readonly isAtLeastProportion: boolean;
-    readonly asAtLeastProportion: {
-      readonly nom: Compact<u32>;
-      readonly denom: Compact<u32>;
-    } & Struct;
-    readonly isMoreThanProportion: boolean;
-    readonly asMoreThanProportion: {
-      readonly nom: Compact<u32>;
-      readonly denom: Compact<u32>;
-    } & Struct;
-    readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
-  }
-
-  /** @name XcmV2Xcm (55) */
-  interface XcmV2Xcm extends Vec<XcmV2Instruction> {}
-
-  /** @name XcmV2Instruction (57) */
-  interface XcmV2Instruction extends Enum {
+  /** @name XcmV2Instruction (69) */
+  export interface XcmV2Instruction extends Enum {
     readonly isWithdrawAsset: boolean;
     readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;
     readonly isReserveAssetDeposited: boolean;
@@ -708,55 +865,10 @@
     } & Struct;
     readonly isUnsubscribeVersion: boolean;
     readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion';
-  }
-
-  /** @name XcmV1MultiassetMultiAssets (58) */
-  interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}
-
-  /** @name XcmV1MultiAsset (60) */
-  interface XcmV1MultiAsset extends Struct {
-    readonly id: XcmV1MultiassetAssetId;
-    readonly fun: XcmV1MultiassetFungibility;
   }
 
-  /** @name XcmV1MultiassetAssetId (61) */
-  interface XcmV1MultiassetAssetId extends Enum {
-    readonly isConcrete: boolean;
-    readonly asConcrete: XcmV1MultiLocation;
-    readonly isAbstract: boolean;
-    readonly asAbstract: Bytes;
-    readonly type: 'Concrete' | 'Abstract';
-  }
-
-  /** @name XcmV1MultiassetFungibility (62) */
-  interface XcmV1MultiassetFungibility extends Enum {
-    readonly isFungible: boolean;
-    readonly asFungible: Compact<u128>;
-    readonly isNonFungible: boolean;
-    readonly asNonFungible: XcmV1MultiassetAssetInstance;
-    readonly type: 'Fungible' | 'NonFungible';
-  }
-
-  /** @name XcmV1MultiassetAssetInstance (63) */
-  interface XcmV1MultiassetAssetInstance extends Enum {
-    readonly isUndefined: boolean;
-    readonly isIndex: boolean;
-    readonly asIndex: Compact<u128>;
-    readonly isArray4: boolean;
-    readonly asArray4: U8aFixed;
-    readonly isArray8: boolean;
-    readonly asArray8: U8aFixed;
-    readonly isArray16: boolean;
-    readonly asArray16: U8aFixed;
-    readonly isArray32: boolean;
-    readonly asArray32: U8aFixed;
-    readonly isBlob: boolean;
-    readonly asBlob: Bytes;
-    readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
-  }
-
-  /** @name XcmV2Response (66) */
-  interface XcmV2Response extends Enum {
+  /** @name XcmV2Response (70) */
+  export interface XcmV2Response extends Enum {
     readonly isNull: boolean;
     readonly isAssets: boolean;
     readonly asAssets: XcmV1MultiassetMultiAssets;
@@ -767,8 +879,8 @@
     readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';
   }
 
-  /** @name XcmV0OriginKind (69) */
-  interface XcmV0OriginKind extends Enum {
+  /** @name XcmV0OriginKind (73) */
+  export interface XcmV0OriginKind extends Enum {
     readonly isNative: boolean;
     readonly isSovereignAccount: boolean;
     readonly isSuperuser: boolean;
@@ -776,13 +888,13 @@
     readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';
   }
 
-  /** @name XcmDoubleEncoded (70) */
-  interface XcmDoubleEncoded extends Struct {
+  /** @name XcmDoubleEncoded (74) */
+  export interface XcmDoubleEncoded extends Struct {
     readonly encoded: Bytes;
   }
 
-  /** @name XcmV1MultiassetMultiAssetFilter (71) */
-  interface XcmV1MultiassetMultiAssetFilter extends Enum {
+  /** @name XcmV1MultiassetMultiAssetFilter (75) */
+  export interface XcmV1MultiassetMultiAssetFilter extends Enum {
     readonly isDefinite: boolean;
     readonly asDefinite: XcmV1MultiassetMultiAssets;
     readonly isWild: boolean;
@@ -790,8 +902,8 @@
     readonly type: 'Definite' | 'Wild';
   }
 
-  /** @name XcmV1MultiassetWildMultiAsset (72) */
-  interface XcmV1MultiassetWildMultiAsset extends Enum {
+  /** @name XcmV1MultiassetWildMultiAsset (76) */
+  export interface XcmV1MultiassetWildMultiAsset extends Enum {
     readonly isAll: boolean;
     readonly isAllOf: boolean;
     readonly asAllOf: {
@@ -801,23 +913,23 @@
     readonly type: 'All' | 'AllOf';
   }
 
-  /** @name XcmV1MultiassetWildFungibility (73) */
-  interface XcmV1MultiassetWildFungibility extends Enum {
+  /** @name XcmV1MultiassetWildFungibility (77) */
+  export interface XcmV1MultiassetWildFungibility extends Enum {
     readonly isFungible: boolean;
     readonly isNonFungible: boolean;
     readonly type: 'Fungible' | 'NonFungible';
   }
 
-  /** @name XcmV2WeightLimit (74) */
-  interface XcmV2WeightLimit extends Enum {
+  /** @name XcmV2WeightLimit (78) */
+  export interface XcmV2WeightLimit extends Enum {
     readonly isUnlimited: boolean;
     readonly isLimited: boolean;
     readonly asLimited: Compact<u64>;
     readonly type: 'Unlimited' | 'Limited';
   }
 
-  /** @name XcmVersionedMultiAssets (76) */
-  interface XcmVersionedMultiAssets extends Enum {
+  /** @name XcmVersionedMultiAssets (80) */
+  export interface XcmVersionedMultiAssets extends Enum {
     readonly isV0: boolean;
     readonly asV0: Vec<XcmV0MultiAsset>;
     readonly isV1: boolean;
@@ -825,8 +937,8 @@
     readonly type: 'V0' | 'V1';
   }
 
-  /** @name XcmV0MultiAsset (78) */
-  interface XcmV0MultiAsset extends Enum {
+  /** @name XcmV0MultiAsset (82) */
+  export interface XcmV0MultiAsset extends Enum {
     readonly isNone: boolean;
     readonly isAll: boolean;
     readonly isAllFungible: boolean;
@@ -870,8 +982,8 @@
     readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';
   }
 
-  /** @name XcmV0MultiLocation (79) */
-  interface XcmV0MultiLocation extends Enum {
+  /** @name XcmV0MultiLocation (83) */
+  export interface XcmV0MultiLocation extends Enum {
     readonly isNull: boolean;
     readonly isX1: boolean;
     readonly asX1: XcmV0Junction;
@@ -892,8 +1004,8 @@
     readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
   }
 
-  /** @name XcmV0Junction (80) */
-  interface XcmV0Junction extends Enum {
+  /** @name XcmV0Junction (84) */
+  export interface XcmV0Junction extends Enum {
     readonly isParent: boolean;
     readonly isParachain: boolean;
     readonly asParachain: Compact<u32>;
@@ -927,8 +1039,8 @@
     readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
   }
 
-  /** @name XcmVersionedMultiLocation (81) */
-  interface XcmVersionedMultiLocation extends Enum {
+  /** @name XcmVersionedMultiLocation (85) */
+  export interface XcmVersionedMultiLocation extends Enum {
     readonly isV0: boolean;
     readonly asV0: XcmV0MultiLocation;
     readonly isV1: boolean;
@@ -936,8 +1048,8 @@
     readonly type: 'V0' | 'V1';
   }
 
-  /** @name CumulusPalletXcmEvent (82) */
-  interface CumulusPalletXcmEvent extends Enum {
+  /** @name CumulusPalletXcmEvent (86) */
+  export interface CumulusPalletXcmEvent extends Enum {
     readonly isInvalidFormat: boolean;
     readonly asInvalidFormat: U8aFixed;
     readonly isUnsupportedVersion: boolean;
@@ -947,8 +1059,8 @@
     readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';
   }
 
-  /** @name CumulusPalletDmpQueueEvent (83) */
-  interface CumulusPalletDmpQueueEvent extends Enum {
+  /** @name CumulusPalletDmpQueueEvent (87) */
+  export interface CumulusPalletDmpQueueEvent extends Enum {
     readonly isInvalidFormat: boolean;
     readonly asInvalidFormat: {
       readonly messageId: U8aFixed;
@@ -982,8 +1094,8 @@
     readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
   }
 
-  /** @name PalletUniqueRawEvent (84) */
-  interface PalletUniqueRawEvent extends Enum {
+  /** @name PalletUniqueRawEvent (88) */
+  export interface PalletUniqueRawEvent extends Enum {
     readonly isCollectionSponsorRemoved: boolean;
     readonly asCollectionSponsorRemoved: u32;
     readonly isCollectionAdminAdded: boolean;
@@ -1007,8 +1119,8 @@
     readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';
   }
 
-  /** @name PalletEvmAccountBasicCrossAccountIdRepr (85) */
-  interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {
+  /** @name PalletEvmAccountBasicCrossAccountIdRepr (89) */
+  export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {
     readonly isSubstrate: boolean;
     readonly asSubstrate: AccountId32;
     readonly isEthereum: boolean;
@@ -1016,8 +1128,8 @@
     readonly type: 'Substrate' | 'Ethereum';
   }
 
-  /** @name PalletUniqueSchedulerEvent (88) */
-  interface PalletUniqueSchedulerEvent extends Enum {
+  /** @name PalletUniqueSchedulerEvent (92) */
+  export interface PalletUniqueSchedulerEvent extends Enum {
     readonly isScheduled: boolean;
     readonly asScheduled: {
       readonly when: u32;
@@ -1043,15 +1155,15 @@
     readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';
   }
 
-  /** @name FrameSupportScheduleLookupError (91) */
-  interface FrameSupportScheduleLookupError extends Enum {
+  /** @name FrameSupportScheduleLookupError (95) */
+  export interface FrameSupportScheduleLookupError extends Enum {
     readonly isUnknown: boolean;
     readonly isBadFormat: boolean;
     readonly type: 'Unknown' | 'BadFormat';
   }
 
-  /** @name PalletCommonEvent (92) */
-  interface PalletCommonEvent extends Enum {
+  /** @name PalletCommonEvent (96) */
+  export interface PalletCommonEvent extends Enum {
     readonly isCollectionCreated: boolean;
     readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
     readonly isCollectionDestroyed: boolean;
@@ -1077,15 +1189,15 @@
     readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
   }
 
-  /** @name PalletStructureEvent (95) */
-  interface PalletStructureEvent extends Enum {
+  /** @name PalletStructureEvent (99) */
+  export interface PalletStructureEvent extends Enum {
     readonly isExecuted: boolean;
     readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
     readonly type: 'Executed';
   }
 
-  /** @name PalletRmrkCoreEvent (96) */
-  interface PalletRmrkCoreEvent extends Enum {
+  /** @name PalletRmrkCoreEvent (100) */
+  export interface PalletRmrkCoreEvent extends Enum {
     readonly isCollectionCreated: boolean;
     readonly asCollectionCreated: {
       readonly issuer: AccountId32;
@@ -1174,8 +1286,8 @@
     readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';
   }
 
-  /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (97) */
-  interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
+  /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (101) */
+  export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
     readonly isAccountId: boolean;
     readonly asAccountId: AccountId32;
     readonly isCollectionAndNftTuple: boolean;
@@ -1183,8 +1295,8 @@
     readonly type: 'AccountId' | 'CollectionAndNftTuple';
   }
 
-  /** @name PalletRmrkEquipEvent (102) */
-  interface PalletRmrkEquipEvent extends Enum {
+  /** @name PalletRmrkEquipEvent (106) */
+  export interface PalletRmrkEquipEvent extends Enum {
     readonly isBaseCreated: boolean;
     readonly asBaseCreated: {
       readonly issuer: AccountId32;
@@ -1198,8 +1310,43 @@
     readonly type: 'BaseCreated' | 'EquippablesUpdated';
   }
 
-  /** @name PalletEvmEvent (103) */
-  interface PalletEvmEvent extends Enum {
+  /** @name PalletForeingAssetsModuleEvent (107) */
+  export interface PalletForeingAssetsModuleEvent extends Enum {
+    readonly isForeignAssetRegistered: boolean;
+    readonly asForeignAssetRegistered: {
+      readonly assetId: u32;
+      readonly assetAddress: XcmV1MultiLocation;
+      readonly metadata: PalletForeingAssetsModuleAssetMetadata;
+    } & Struct;
+    readonly isForeignAssetUpdated: boolean;
+    readonly asForeignAssetUpdated: {
+      readonly assetId: u32;
+      readonly assetAddress: XcmV1MultiLocation;
+      readonly metadata: PalletForeingAssetsModuleAssetMetadata;
+    } & Struct;
+    readonly isAssetRegistered: boolean;
+    readonly asAssetRegistered: {
+      readonly assetId: PalletForeingAssetsAssetIds;
+      readonly metadata: PalletForeingAssetsModuleAssetMetadata;
+    } & Struct;
+    readonly isAssetUpdated: boolean;
+    readonly asAssetUpdated: {
+      readonly assetId: PalletForeingAssetsAssetIds;
+      readonly metadata: PalletForeingAssetsModuleAssetMetadata;
+    } & Struct;
+    readonly type: 'ForeignAssetRegistered' | 'ForeignAssetUpdated' | 'AssetRegistered' | 'AssetUpdated';
+  }
+
+  /** @name PalletForeingAssetsModuleAssetMetadata (108) */
+  export interface PalletForeingAssetsModuleAssetMetadata extends Struct {
+    readonly name: Bytes;
+    readonly symbol: Bytes;
+    readonly decimals: u8;
+    readonly minimalBalance: u128;
+  }
+
+  /** @name PalletEvmEvent (109) */
+  export interface PalletEvmEvent extends Enum {
     readonly isLog: boolean;
     readonly asLog: EthereumLog;
     readonly isCreated: boolean;
@@ -1217,22 +1364,22 @@
     readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
   }
 
-  /** @name EthereumLog (104) */
-  interface EthereumLog extends Struct {
+  /** @name EthereumLog (110) */
+  export interface EthereumLog extends Struct {
     readonly address: H160;
     readonly topics: Vec<H256>;
     readonly data: Bytes;
   }
 
-  /** @name PalletEthereumEvent (108) */
-  interface PalletEthereumEvent extends Enum {
+  /** @name PalletEthereumEvent (114) */
+  export interface PalletEthereumEvent extends Enum {
     readonly isExecuted: boolean;
     readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
     readonly type: 'Executed';
   }
 
-  /** @name EvmCoreErrorExitReason (109) */
-  interface EvmCoreErrorExitReason extends Enum {
+  /** @name EvmCoreErrorExitReason (115) */
+  export interface EvmCoreErrorExitReason extends Enum {
     readonly isSucceed: boolean;
     readonly asSucceed: EvmCoreErrorExitSucceed;
     readonly isError: boolean;
@@ -1244,16 +1391,16 @@
     readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
   }
 
-  /** @name EvmCoreErrorExitSucceed (110) */
-  interface EvmCoreErrorExitSucceed extends Enum {
+  /** @name EvmCoreErrorExitSucceed (116) */
+  export interface EvmCoreErrorExitSucceed extends Enum {
     readonly isStopped: boolean;
     readonly isReturned: boolean;
     readonly isSuicided: boolean;
     readonly type: 'Stopped' | 'Returned' | 'Suicided';
   }
 
-  /** @name EvmCoreErrorExitError (111) */
-  interface EvmCoreErrorExitError extends Enum {
+  /** @name EvmCoreErrorExitError (117) */
+  export interface EvmCoreErrorExitError extends Enum {
     readonly isStackUnderflow: boolean;
     readonly isStackOverflow: boolean;
     readonly isInvalidJump: boolean;
@@ -1273,14 +1420,14 @@
     readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
   }
 
-  /** @name EvmCoreErrorExitRevert (114) */
-  interface EvmCoreErrorExitRevert extends Enum {
+  /** @name EvmCoreErrorExitRevert (120) */
+  export interface EvmCoreErrorExitRevert extends Enum {
     readonly isReverted: boolean;
     readonly type: 'Reverted';
   }
 
-  /** @name EvmCoreErrorExitFatal (115) */
-  interface EvmCoreErrorExitFatal extends Enum {
+  /** @name EvmCoreErrorExitFatal (121) */
+  export interface EvmCoreErrorExitFatal extends Enum {
     readonly isNotSupported: boolean;
     readonly isUnhandledInterrupt: boolean;
     readonly isCallErrorAsFatal: boolean;
@@ -1290,8 +1437,8 @@
     readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
   }
 
-  /** @name FrameSystemPhase (116) */
-  interface FrameSystemPhase extends Enum {
+  /** @name FrameSystemPhase (122) */
+  export interface FrameSystemPhase extends Enum {
     readonly isApplyExtrinsic: boolean;
     readonly asApplyExtrinsic: u32;
     readonly isFinalization: boolean;
@@ -1299,14 +1446,14 @@
     readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
   }
 
-  /** @name FrameSystemLastRuntimeUpgradeInfo (118) */
-  interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
+  /** @name FrameSystemLastRuntimeUpgradeInfo (124) */
+  export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
     readonly specVersion: Compact<u32>;
     readonly specName: Text;
   }
 
-  /** @name FrameSystemCall (119) */
-  interface FrameSystemCall extends Enum {
+  /** @name FrameSystemCall (125) */
+  export interface FrameSystemCall extends Enum {
     readonly isFillBlock: boolean;
     readonly asFillBlock: {
       readonly ratio: Perbill;
@@ -1347,48 +1494,48 @@
     readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';
   }
 
-  /** @name FrameSystemLimitsBlockWeights (124) */
-  interface FrameSystemLimitsBlockWeights extends Struct {
+  /** @name FrameSystemLimitsBlockWeights (130) */
+  export interface FrameSystemLimitsBlockWeights extends Struct {
     readonly baseBlock: u64;
     readonly maxBlock: u64;
     readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
   }
 
-  /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (125) */
-  interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
+  /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (131) */
+  export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
     readonly normal: FrameSystemLimitsWeightsPerClass;
     readonly operational: FrameSystemLimitsWeightsPerClass;
     readonly mandatory: FrameSystemLimitsWeightsPerClass;
   }
 
-  /** @name FrameSystemLimitsWeightsPerClass (126) */
-  interface FrameSystemLimitsWeightsPerClass extends Struct {
+  /** @name FrameSystemLimitsWeightsPerClass (132) */
+  export interface FrameSystemLimitsWeightsPerClass extends Struct {
     readonly baseExtrinsic: u64;
     readonly maxExtrinsic: Option<u64>;
     readonly maxTotal: Option<u64>;
     readonly reserved: Option<u64>;
   }
 
-  /** @name FrameSystemLimitsBlockLength (128) */
-  interface FrameSystemLimitsBlockLength extends Struct {
+  /** @name FrameSystemLimitsBlockLength (134) */
+  export interface FrameSystemLimitsBlockLength extends Struct {
     readonly max: FrameSupportWeightsPerDispatchClassU32;
   }
 
-  /** @name FrameSupportWeightsPerDispatchClassU32 (129) */
-  interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
+  /** @name FrameSupportWeightsPerDispatchClassU32 (135) */
+  export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
     readonly normal: u32;
     readonly operational: u32;
     readonly mandatory: u32;
   }
 
-  /** @name FrameSupportWeightsRuntimeDbWeight (130) */
-  interface FrameSupportWeightsRuntimeDbWeight extends Struct {
+  /** @name FrameSupportWeightsRuntimeDbWeight (136) */
+  export interface FrameSupportWeightsRuntimeDbWeight extends Struct {
     readonly read: u64;
     readonly write: u64;
   }
 
-  /** @name SpVersionRuntimeVersion (131) */
-  interface SpVersionRuntimeVersion extends Struct {
+  /** @name SpVersionRuntimeVersion (137) */
+  export interface SpVersionRuntimeVersion extends Struct {
     readonly specName: Text;
     readonly implName: Text;
     readonly authoringVersion: u32;
@@ -1399,8 +1546,8 @@
     readonly stateVersion: u8;
   }
 
-  /** @name FrameSystemError (136) */
-  interface FrameSystemError extends Enum {
+  /** @name FrameSystemError (142) */
+  export interface FrameSystemError extends Enum {
     readonly isInvalidSpecName: boolean;
     readonly isSpecVersionNeedsToIncrease: boolean;
     readonly isFailedToExtractRuntimeVersion: boolean;
@@ -1410,35 +1557,35 @@
     readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
   }
 
-  /** @name PolkadotPrimitivesV2PersistedValidationData (137) */
-  interface PolkadotPrimitivesV2PersistedValidationData extends Struct {
+  /** @name PolkadotPrimitivesV2PersistedValidationData (143) */
+  export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {
     readonly parentHead: Bytes;
     readonly relayParentNumber: u32;
     readonly relayParentStorageRoot: H256;
     readonly maxPovSize: u32;
   }
 
-  /** @name PolkadotPrimitivesV2UpgradeRestriction (140) */
-  interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {
+  /** @name PolkadotPrimitivesV2UpgradeRestriction (146) */
+  export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {
     readonly isPresent: boolean;
     readonly type: 'Present';
   }
 
-  /** @name SpTrieStorageProof (141) */
-  interface SpTrieStorageProof extends Struct {
+  /** @name SpTrieStorageProof (147) */
+  export interface SpTrieStorageProof extends Struct {
     readonly trieNodes: BTreeSet<Bytes>;
   }
 
-  /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (143) */
-  interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {
+  /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (149) */
+  export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {
     readonly dmqMqcHead: H256;
     readonly relayDispatchQueueSize: ITuple<[u32, u32]>;
     readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
     readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
   }
 
-  /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (146) */
-  interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {
+  /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (152) */
+  export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {
     readonly maxCapacity: u32;
     readonly maxTotalSize: u32;
     readonly maxMessageSize: u32;
@@ -1447,8 +1594,8 @@
     readonly mqcHead: Option<H256>;
   }
 
-  /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (147) */
-  interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {
+  /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (153) */
+  export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {
     readonly maxCodeSize: u32;
     readonly maxHeadDataSize: u32;
     readonly maxUpwardQueueCount: u32;
@@ -1460,14 +1607,14 @@
     readonly validationUpgradeDelay: u32;
   }
 
-  /** @name PolkadotCorePrimitivesOutboundHrmpMessage (153) */
-  interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {
+  /** @name PolkadotCorePrimitivesOutboundHrmpMessage (159) */
+  export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {
     readonly recipient: u32;
     readonly data: Bytes;
   }
 
-  /** @name CumulusPalletParachainSystemCall (154) */
-  interface CumulusPalletParachainSystemCall extends Enum {
+  /** @name CumulusPalletParachainSystemCall (160) */
+  export interface CumulusPalletParachainSystemCall extends Enum {
     readonly isSetValidationData: boolean;
     readonly asSetValidationData: {
       readonly data: CumulusPrimitivesParachainInherentParachainInherentData;
@@ -1487,28 +1634,28 @@
     readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';
   }
 
-  /** @name CumulusPrimitivesParachainInherentParachainInherentData (155) */
-  interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {
+  /** @name CumulusPrimitivesParachainInherentParachainInherentData (161) */
+  export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {
     readonly validationData: PolkadotPrimitivesV2PersistedValidationData;
     readonly relayChainState: SpTrieStorageProof;
     readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;
     readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;
   }
 
-  /** @name PolkadotCorePrimitivesInboundDownwardMessage (157) */
-  interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
+  /** @name PolkadotCorePrimitivesInboundDownwardMessage (163) */
+  export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
     readonly sentAt: u32;
     readonly msg: Bytes;
   }
 
-  /** @name PolkadotCorePrimitivesInboundHrmpMessage (160) */
-  interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {
+  /** @name PolkadotCorePrimitivesInboundHrmpMessage (166) */
+  export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {
     readonly sentAt: u32;
     readonly data: Bytes;
   }
 
-  /** @name CumulusPalletParachainSystemError (163) */
-  interface CumulusPalletParachainSystemError extends Enum {
+  /** @name CumulusPalletParachainSystemError (169) */
+  export interface CumulusPalletParachainSystemError extends Enum {
     readonly isOverlappingUpgrades: boolean;
     readonly isProhibitedByPolkadot: boolean;
     readonly isTooBig: boolean;
@@ -1520,36 +1667,36 @@
     readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';
   }
 
-  /** @name PalletBalancesBalanceLock (165) */
-  interface PalletBalancesBalanceLock extends Struct {
+  /** @name PalletBalancesBalanceLock (171) */
+  export interface PalletBalancesBalanceLock extends Struct {
     readonly id: U8aFixed;
     readonly amount: u128;
     readonly reasons: PalletBalancesReasons;
   }
 
-  /** @name PalletBalancesReasons (166) */
-  interface PalletBalancesReasons extends Enum {
+  /** @name PalletBalancesReasons (172) */
+  export interface PalletBalancesReasons extends Enum {
     readonly isFee: boolean;
     readonly isMisc: boolean;
     readonly isAll: boolean;
     readonly type: 'Fee' | 'Misc' | 'All';
   }
 
-  /** @name PalletBalancesReserveData (169) */
-  interface PalletBalancesReserveData extends Struct {
+  /** @name PalletBalancesReserveData (175) */
+  export interface PalletBalancesReserveData extends Struct {
     readonly id: U8aFixed;
     readonly amount: u128;
   }
 
-  /** @name PalletBalancesReleases (171) */
-  interface PalletBalancesReleases extends Enum {
+  /** @name PalletBalancesReleases (177) */
+  export interface PalletBalancesReleases extends Enum {
     readonly isV100: boolean;
     readonly isV200: boolean;
     readonly type: 'V100' | 'V200';
   }
 
-  /** @name PalletBalancesCall (172) */
-  interface PalletBalancesCall extends Enum {
+  /** @name PalletBalancesCall (178) */
+  export interface PalletBalancesCall extends Enum {
     readonly isTransfer: boolean;
     readonly asTransfer: {
       readonly dest: MultiAddress;
@@ -1585,8 +1732,8 @@
     readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';
   }
 
-  /** @name PalletBalancesError (175) */
-  interface PalletBalancesError extends Enum {
+  /** @name PalletBalancesError (181) */
+  export interface PalletBalancesError extends Enum {
     readonly isVestingBalance: boolean;
     readonly isLiquidityRestrictions: boolean;
     readonly isInsufficientBalance: boolean;
@@ -1598,8 +1745,8 @@
     readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';
   }
 
-  /** @name PalletTimestampCall (177) */
-  interface PalletTimestampCall extends Enum {
+  /** @name PalletTimestampCall (183) */
+  export interface PalletTimestampCall extends Enum {
     readonly isSet: boolean;
     readonly asSet: {
       readonly now: Compact<u64>;
@@ -1607,23 +1754,23 @@
     readonly type: 'Set';
   }
 
-  /** @name PalletTransactionPaymentReleases (179) */
-  interface PalletTransactionPaymentReleases extends Enum {
+  /** @name PalletTransactionPaymentReleases (185) */
+  export interface PalletTransactionPaymentReleases extends Enum {
     readonly isV1Ancient: boolean;
     readonly isV2: boolean;
     readonly type: 'V1Ancient' | 'V2';
   }
 
-  /** @name PalletTreasuryProposal (180) */
-  interface PalletTreasuryProposal extends Struct {
+  /** @name PalletTreasuryProposal (186) */
+  export interface PalletTreasuryProposal extends Struct {
     readonly proposer: AccountId32;
     readonly value: u128;
     readonly beneficiary: AccountId32;
     readonly bond: u128;
   }
 
-  /** @name PalletTreasuryCall (183) */
-  interface PalletTreasuryCall extends Enum {
+  /** @name PalletTreasuryCall (189) */
+  export interface PalletTreasuryCall extends Enum {
     readonly isProposeSpend: boolean;
     readonly asProposeSpend: {
       readonly value: Compact<u128>;
@@ -1649,11 +1796,11 @@
     readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';
   }
 
-  /** @name FrameSupportPalletId (186) */
-  interface FrameSupportPalletId extends U8aFixed {}
+  /** @name FrameSupportPalletId (192) */
+  export interface FrameSupportPalletId extends U8aFixed {}
 
-  /** @name PalletTreasuryError (187) */
-  interface PalletTreasuryError extends Enum {
+  /** @name PalletTreasuryError (193) */
+  export interface PalletTreasuryError extends Enum {
     readonly isInsufficientProposersBalance: boolean;
     readonly isInvalidIndex: boolean;
     readonly isTooManyApprovals: boolean;
@@ -1662,8 +1809,8 @@
     readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';
   }
 
-  /** @name PalletSudoCall (188) */
-  interface PalletSudoCall extends Enum {
+  /** @name PalletSudoCall (194) */
+  export interface PalletSudoCall extends Enum {
     readonly isSudo: boolean;
     readonly asSudo: {
       readonly call: Call;
@@ -1685,8 +1832,8 @@
     readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';
   }
 
-  /** @name OrmlVestingModuleCall (190) */
-  interface OrmlVestingModuleCall extends Enum {
+  /** @name OrmlVestingModuleCall (196) */
+  export interface OrmlVestingModuleCall extends Enum {
     readonly isClaim: boolean;
     readonly isVestedTransfer: boolean;
     readonly asVestedTransfer: {
@@ -1705,8 +1852,101 @@
     readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';
   }
 
-  /** @name CumulusPalletXcmpQueueCall (192) */
-  interface CumulusPalletXcmpQueueCall extends Enum {
+  /** @name OrmlXtokensModuleCall (198) */
+  export interface OrmlXtokensModuleCall extends Enum {
+    readonly isTransfer: boolean;
+    readonly asTransfer: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly amount: u128;
+      readonly dest: XcmVersionedMultiLocation;
+      readonly destWeight: u64;
+    } & Struct;
+    readonly isTransferMultiasset: boolean;
+    readonly asTransferMultiasset: {
+      readonly asset: XcmVersionedMultiAsset;
+      readonly dest: XcmVersionedMultiLocation;
+      readonly destWeight: u64;
+    } & Struct;
+    readonly isTransferWithFee: boolean;
+    readonly asTransferWithFee: {
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly amount: u128;
+      readonly fee: u128;
+      readonly dest: XcmVersionedMultiLocation;
+      readonly destWeight: u64;
+    } & Struct;
+    readonly isTransferMultiassetWithFee: boolean;
+    readonly asTransferMultiassetWithFee: {
+      readonly asset: XcmVersionedMultiAsset;
+      readonly fee: XcmVersionedMultiAsset;
+      readonly dest: XcmVersionedMultiLocation;
+      readonly destWeight: u64;
+    } & Struct;
+    readonly isTransferMulticurrencies: boolean;
+    readonly asTransferMulticurrencies: {
+      readonly currencies: Vec<ITuple<[PalletForeingAssetsAssetIds, u128]>>;
+      readonly feeItem: u32;
+      readonly dest: XcmVersionedMultiLocation;
+      readonly destWeight: u64;
+    } & Struct;
+    readonly isTransferMultiassets: boolean;
+    readonly asTransferMultiassets: {
+      readonly assets: XcmVersionedMultiAssets;
+      readonly feeItem: u32;
+      readonly dest: XcmVersionedMultiLocation;
+      readonly destWeight: u64;
+    } & Struct;
+    readonly type: 'Transfer' | 'TransferMultiasset' | 'TransferWithFee' | 'TransferMultiassetWithFee' | 'TransferMulticurrencies' | 'TransferMultiassets';
+  }
+
+  /** @name XcmVersionedMultiAsset (199) */
+  export interface XcmVersionedMultiAsset extends Enum {
+    readonly isV0: boolean;
+    readonly asV0: XcmV0MultiAsset;
+    readonly isV1: boolean;
+    readonly asV1: XcmV1MultiAsset;
+    readonly type: 'V0' | 'V1';
+  }
+
+  /** @name OrmlTokensModuleCall (202) */
+  export interface OrmlTokensModuleCall extends Enum {
+    readonly isTransfer: boolean;
+    readonly asTransfer: {
+      readonly dest: MultiAddress;
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly amount: Compact<u128>;
+    } & Struct;
+    readonly isTransferAll: boolean;
+    readonly asTransferAll: {
+      readonly dest: MultiAddress;
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly keepAlive: bool;
+    } & Struct;
+    readonly isTransferKeepAlive: boolean;
+    readonly asTransferKeepAlive: {
+      readonly dest: MultiAddress;
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly amount: Compact<u128>;
+    } & Struct;
+    readonly isForceTransfer: boolean;
+    readonly asForceTransfer: {
+      readonly source: MultiAddress;
+      readonly dest: MultiAddress;
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly amount: Compact<u128>;
+    } & Struct;
+    readonly isSetBalance: boolean;
+    readonly asSetBalance: {
+      readonly who: MultiAddress;
+      readonly currencyId: PalletForeingAssetsAssetIds;
+      readonly newFree: Compact<u128>;
+      readonly newReserved: Compact<u128>;
+    } & Struct;
+    readonly type: 'Transfer' | 'TransferAll' | 'TransferKeepAlive' | 'ForceTransfer' | 'SetBalance';
+  }
+
+  /** @name CumulusPalletXcmpQueueCall (203) */
+  export interface CumulusPalletXcmpQueueCall extends Enum {
     readonly isServiceOverweight: boolean;
     readonly asServiceOverweight: {
       readonly index: u64;
@@ -1741,8 +1981,8 @@
     readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';
   }
 
-  /** @name PalletXcmCall (193) */
-  interface PalletXcmCall extends Enum {
+  /** @name PalletXcmCall (204) */
+  export interface PalletXcmCall extends Enum {
     readonly isSend: boolean;
     readonly asSend: {
       readonly dest: XcmVersionedMultiLocation;
@@ -1803,8 +2043,8 @@
     readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';
   }
 
-  /** @name XcmVersionedXcm (194) */
-  interface XcmVersionedXcm extends Enum {
+  /** @name XcmVersionedXcm (205) */
+  export interface XcmVersionedXcm extends Enum {
     readonly isV0: boolean;
     readonly asV0: XcmV0Xcm;
     readonly isV1: boolean;
@@ -1814,8 +2054,8 @@
     readonly type: 'V0' | 'V1' | 'V2';
   }
 
-  /** @name XcmV0Xcm (195) */
-  interface XcmV0Xcm extends Enum {
+  /** @name XcmV0Xcm (206) */
+  export interface XcmV0Xcm extends Enum {
     readonly isWithdrawAsset: boolean;
     readonly asWithdrawAsset: {
       readonly assets: Vec<XcmV0MultiAsset>;
@@ -1877,8 +2117,8 @@
     readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
   }
 
-  /** @name XcmV0Order (197) */
-  interface XcmV0Order extends Enum {
+  /** @name XcmV0Order (208) */
+  export interface XcmV0Order extends Enum {
     readonly isNull: boolean;
     readonly isDepositAsset: boolean;
     readonly asDepositAsset: {
@@ -1925,15 +2165,15 @@
     readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
   }
 
-  /** @name XcmV0Response (199) */
-  interface XcmV0Response extends Enum {
+  /** @name XcmV0Response (210) */
+  export interface XcmV0Response extends Enum {
     readonly isAssets: boolean;
     readonly asAssets: Vec<XcmV0MultiAsset>;
     readonly type: 'Assets';
   }
 
-  /** @name XcmV1Xcm (200) */
-  interface XcmV1Xcm extends Enum {
+  /** @name XcmV1Xcm (211) */
+  export interface XcmV1Xcm extends Enum {
     readonly isWithdrawAsset: boolean;
     readonly asWithdrawAsset: {
       readonly assets: XcmV1MultiassetMultiAssets;
@@ -2001,8 +2241,8 @@
     readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';
   }
 
-  /** @name XcmV1Order (202) */
-  interface XcmV1Order extends Enum {
+  /** @name XcmV1Order (213) */
+  export interface XcmV1Order extends Enum {
     readonly isNoop: boolean;
     readonly isDepositAsset: boolean;
     readonly asDepositAsset: {
@@ -2051,8 +2291,8 @@
     readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
   }
 
-  /** @name XcmV1Response (204) */
-  interface XcmV1Response extends Enum {
+  /** @name XcmV1Response (215) */
+  export interface XcmV1Response extends Enum {
     readonly isAssets: boolean;
     readonly asAssets: XcmV1MultiassetMultiAssets;
     readonly isVersion: boolean;
@@ -2060,11 +2300,11 @@
     readonly type: 'Assets' | 'Version';
   }
 
-  /** @name CumulusPalletXcmCall (218) */
-  type CumulusPalletXcmCall = Null;
+  /** @name CumulusPalletXcmCall (229) */
+  export type CumulusPalletXcmCall = Null;
 
-  /** @name CumulusPalletDmpQueueCall (219) */
-  interface CumulusPalletDmpQueueCall extends Enum {
+  /** @name CumulusPalletDmpQueueCall (230) */
+  export interface CumulusPalletDmpQueueCall extends Enum {
     readonly isServiceOverweight: boolean;
     readonly asServiceOverweight: {
       readonly index: u64;
@@ -2073,8 +2313,8 @@
     readonly type: 'ServiceOverweight';
   }
 
-  /** @name PalletInflationCall (220) */
-  interface PalletInflationCall extends Enum {
+  /** @name PalletInflationCall (231) */
+  export interface PalletInflationCall extends Enum {
     readonly isStartInflation: boolean;
     readonly asStartInflation: {
       readonly inflationStartRelayBlock: u32;
@@ -2082,8 +2322,8 @@
     readonly type: 'StartInflation';
   }
 
-  /** @name PalletUniqueCall (221) */
-  interface PalletUniqueCall extends Enum {
+  /** @name PalletUniqueCall (232) */
+  export interface PalletUniqueCall extends Enum {
     readonly isCreateCollection: boolean;
     readonly asCreateCollection: {
       readonly collectionName: Vec<u16>;
@@ -2240,8 +2480,8 @@
     readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition';
   }
 
-  /** @name UpDataStructsCollectionMode (226) */
-  interface UpDataStructsCollectionMode extends Enum {
+  /** @name UpDataStructsCollectionMode (237) */
+  export interface UpDataStructsCollectionMode extends Enum {
     readonly isNft: boolean;
     readonly isFungible: boolean;
     readonly asFungible: u8;
@@ -2249,8 +2489,8 @@
     readonly type: 'Nft' | 'Fungible' | 'ReFungible';
   }
 
-  /** @name UpDataStructsCreateCollectionData (227) */
-  interface UpDataStructsCreateCollectionData extends Struct {
+  /** @name UpDataStructsCreateCollectionData (238) */
+  export interface UpDataStructsCreateCollectionData extends Struct {
     readonly mode: UpDataStructsCollectionMode;
     readonly access: Option<UpDataStructsAccessMode>;
     readonly name: Vec<u16>;
@@ -2263,15 +2503,15 @@
     readonly properties: Vec<UpDataStructsProperty>;
   }
 
-  /** @name UpDataStructsAccessMode (229) */
-  interface UpDataStructsAccessMode extends Enum {
+  /** @name UpDataStructsAccessMode (240) */
+  export interface UpDataStructsAccessMode extends Enum {
     readonly isNormal: boolean;
     readonly isAllowList: boolean;
     readonly type: 'Normal' | 'AllowList';
   }
 
-  /** @name UpDataStructsCollectionLimits (231) */
-  interface UpDataStructsCollectionLimits extends Struct {
+  /** @name UpDataStructsCollectionLimits (242) */
+  export interface UpDataStructsCollectionLimits extends Struct {
     readonly accountTokenOwnershipLimit: Option<u32>;
     readonly sponsoredDataSize: Option<u32>;
     readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;
@@ -2283,52 +2523,52 @@
     readonly transfersEnabled: Option<bool>;
   }
 
-  /** @name UpDataStructsSponsoringRateLimit (233) */
-  interface UpDataStructsSponsoringRateLimit extends Enum {
+  /** @name UpDataStructsSponsoringRateLimit (244) */
+  export interface UpDataStructsSponsoringRateLimit extends Enum {
     readonly isSponsoringDisabled: boolean;
     readonly isBlocks: boolean;
     readonly asBlocks: u32;
     readonly type: 'SponsoringDisabled' | 'Blocks';
   }
 
-  /** @name UpDataStructsCollectionPermissions (236) */
-  interface UpDataStructsCollectionPermissions extends Struct {
+  /** @name UpDataStructsCollectionPermissions (247) */
+  export interface UpDataStructsCollectionPermissions extends Struct {
     readonly access: Option<UpDataStructsAccessMode>;
     readonly mintMode: Option<bool>;
     readonly nesting: Option<UpDataStructsNestingPermissions>;
   }
 
-  /** @name UpDataStructsNestingPermissions (238) */
-  interface UpDataStructsNestingPermissions extends Struct {
+  /** @name UpDataStructsNestingPermissions (249) */
+  export interface UpDataStructsNestingPermissions extends Struct {
     readonly tokenOwner: bool;
     readonly collectionAdmin: bool;
     readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;
   }
 
-  /** @name UpDataStructsOwnerRestrictedSet (240) */
-  interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}
+  /** @name UpDataStructsOwnerRestrictedSet (251) */
+  export interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}
 
-  /** @name UpDataStructsPropertyKeyPermission (245) */
-  interface UpDataStructsPropertyKeyPermission extends Struct {
+  /** @name UpDataStructsPropertyKeyPermission (256) */
+  export interface UpDataStructsPropertyKeyPermission extends Struct {
     readonly key: Bytes;
     readonly permission: UpDataStructsPropertyPermission;
   }
 
-  /** @name UpDataStructsPropertyPermission (246) */
-  interface UpDataStructsPropertyPermission extends Struct {
+  /** @name UpDataStructsPropertyPermission (257) */
+  export interface UpDataStructsPropertyPermission extends Struct {
     readonly mutable: bool;
     readonly collectionAdmin: bool;
     readonly tokenOwner: bool;
   }
 
-  /** @name UpDataStructsProperty (249) */
-  interface UpDataStructsProperty extends Struct {
+  /** @name UpDataStructsProperty (260) */
+  export interface UpDataStructsProperty extends Struct {
     readonly key: Bytes;
     readonly value: Bytes;
   }
 
-  /** @name UpDataStructsCreateItemData (252) */
-  interface UpDataStructsCreateItemData extends Enum {
+  /** @name UpDataStructsCreateItemData (263) */
+  export interface UpDataStructsCreateItemData extends Enum {
     readonly isNft: boolean;
     readonly asNft: UpDataStructsCreateNftData;
     readonly isFungible: boolean;
@@ -2338,24 +2578,24 @@
     readonly type: 'Nft' | 'Fungible' | 'ReFungible';
   }
 
-  /** @name UpDataStructsCreateNftData (253) */
-  interface UpDataStructsCreateNftData extends Struct {
+  /** @name UpDataStructsCreateNftData (264) */
+  export interface UpDataStructsCreateNftData extends Struct {
     readonly properties: Vec<UpDataStructsProperty>;
   }
 
-  /** @name UpDataStructsCreateFungibleData (254) */
-  interface UpDataStructsCreateFungibleData extends Struct {
+  /** @name UpDataStructsCreateFungibleData (265) */
+  export interface UpDataStructsCreateFungibleData extends Struct {
     readonly value: u128;
   }
 
-  /** @name UpDataStructsCreateReFungibleData (255) */
-  interface UpDataStructsCreateReFungibleData extends Struct {
+  /** @name UpDataStructsCreateReFungibleData (266) */
+  export interface UpDataStructsCreateReFungibleData extends Struct {
     readonly pieces: u128;
     readonly properties: Vec<UpDataStructsProperty>;
   }
 
-  /** @name UpDataStructsCreateItemExData (258) */
-  interface UpDataStructsCreateItemExData extends Enum {
+  /** @name UpDataStructsCreateItemExData (269) */
+  export interface UpDataStructsCreateItemExData extends Enum {
     readonly isNft: boolean;
     readonly asNft: Vec<UpDataStructsCreateNftExData>;
     readonly isFungible: boolean;
@@ -2367,27 +2607,27 @@
     readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';
   }
 
-  /** @name UpDataStructsCreateNftExData (260) */
-  interface UpDataStructsCreateNftExData extends Struct {
+  /** @name UpDataStructsCreateNftExData (271) */
+  export interface UpDataStructsCreateNftExData extends Struct {
     readonly properties: Vec<UpDataStructsProperty>;
     readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
   }
 
-  /** @name UpDataStructsCreateRefungibleExSingleOwner (267) */
-  interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {
+  /** @name UpDataStructsCreateRefungibleExSingleOwner (278) */
+  export interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {
     readonly user: PalletEvmAccountBasicCrossAccountIdRepr;
     readonly pieces: u128;
     readonly properties: Vec<UpDataStructsProperty>;
   }
 
-  /** @name UpDataStructsCreateRefungibleExMultipleOwners (269) */
-  interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {
+  /** @name UpDataStructsCreateRefungibleExMultipleOwners (280) */
+  export interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {
     readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
     readonly properties: Vec<UpDataStructsProperty>;
   }
 
-  /** @name PalletUniqueSchedulerCall (270) */
-  interface PalletUniqueSchedulerCall extends Enum {
+  /** @name PalletUniqueSchedulerCall (281) */
+  export interface PalletUniqueSchedulerCall extends Enum {
     readonly isScheduleNamed: boolean;
     readonly asScheduleNamed: {
       readonly id: U8aFixed;
@@ -2411,8 +2651,8 @@
     readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';
   }
 
-  /** @name FrameSupportScheduleMaybeHashed (272) */
-  interface FrameSupportScheduleMaybeHashed extends Enum {
+  /** @name FrameSupportScheduleMaybeHashed (283) */
+  export interface FrameSupportScheduleMaybeHashed extends Enum {
     readonly isValue: boolean;
     readonly asValue: Call;
     readonly isHash: boolean;
@@ -2420,8 +2660,8 @@
     readonly type: 'Value' | 'Hash';
   }
 
-  /** @name PalletConfigurationCall (273) */
-  interface PalletConfigurationCall extends Enum {
+  /** @name PalletConfigurationCall (284) */
+  export interface PalletConfigurationCall extends Enum {
     readonly isSetWeightToFeeCoefficientOverride: boolean;
     readonly asSetWeightToFeeCoefficientOverride: {
       readonly coeff: Option<u32>;
@@ -2433,14 +2673,14 @@
     readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride';
   }
 
-  /** @name PalletTemplateTransactionPaymentCall (274) */
-  type PalletTemplateTransactionPaymentCall = Null;
+  /** @name PalletTemplateTransactionPaymentCall (285) */
+  export type PalletTemplateTransactionPaymentCall = Null;
 
-  /** @name PalletStructureCall (275) */
-  type PalletStructureCall = Null;
+  /** @name PalletStructureCall (286) */
+  export type PalletStructureCall = Null;
 
-  /** @name PalletRmrkCoreCall (276) */
-  interface PalletRmrkCoreCall extends Enum {
+  /** @name PalletRmrkCoreCall (287) */
+  export interface PalletRmrkCoreCall extends Enum {
     readonly isCreateCollection: boolean;
     readonly asCreateCollection: {
       readonly metadata: Bytes;
@@ -2545,8 +2785,8 @@
     readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';
   }
 
-  /** @name RmrkTraitsResourceResourceTypes (282) */
-  interface RmrkTraitsResourceResourceTypes extends Enum {
+  /** @name RmrkTraitsResourceResourceTypes (293) */
+  export interface RmrkTraitsResourceResourceTypes extends Enum {
     readonly isBasic: boolean;
     readonly asBasic: RmrkTraitsResourceBasicResource;
     readonly isComposable: boolean;
@@ -2556,16 +2796,16 @@
     readonly type: 'Basic' | 'Composable' | 'Slot';
   }
 
-  /** @name RmrkTraitsResourceBasicResource (284) */
-  interface RmrkTraitsResourceBasicResource extends Struct {
+  /** @name RmrkTraitsResourceBasicResource (295) */
+  export interface RmrkTraitsResourceBasicResource extends Struct {
     readonly src: Option<Bytes>;
     readonly metadata: Option<Bytes>;
     readonly license: Option<Bytes>;
     readonly thumb: Option<Bytes>;
   }
 
-  /** @name RmrkTraitsResourceComposableResource (286) */
-  interface RmrkTraitsResourceComposableResource extends Struct {
+  /** @name RmrkTraitsResourceComposableResource (297) */
+  export interface RmrkTraitsResourceComposableResource extends Struct {
     readonly parts: Vec<u32>;
     readonly base: u32;
     readonly src: Option<Bytes>;
@@ -2574,8 +2814,8 @@
     readonly thumb: Option<Bytes>;
   }
 
-  /** @name RmrkTraitsResourceSlotResource (287) */
-  interface RmrkTraitsResourceSlotResource extends Struct {
+  /** @name RmrkTraitsResourceSlotResource (298) */
+  export interface RmrkTraitsResourceSlotResource extends Struct {
     readonly base: u32;
     readonly src: Option<Bytes>;
     readonly metadata: Option<Bytes>;
@@ -2584,8 +2824,8 @@
     readonly thumb: Option<Bytes>;
   }
 
-  /** @name PalletRmrkEquipCall (290) */
-  interface PalletRmrkEquipCall extends Enum {
+  /** @name PalletRmrkEquipCall (301) */
+  export interface PalletRmrkEquipCall extends Enum {
     readonly isCreateBase: boolean;
     readonly asCreateBase: {
       readonly baseType: Bytes;
@@ -2606,8 +2846,8 @@
     readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';
   }
 
-  /** @name RmrkTraitsPartPartType (293) */
-  interface RmrkTraitsPartPartType extends Enum {
+  /** @name RmrkTraitsPartPartType (304) */
+  export interface RmrkTraitsPartPartType extends Enum {
     readonly isFixedPart: boolean;
     readonly asFixedPart: RmrkTraitsPartFixedPart;
     readonly isSlotPart: boolean;
@@ -2615,23 +2855,23 @@
     readonly type: 'FixedPart' | 'SlotPart';
   }
 
-  /** @name RmrkTraitsPartFixedPart (295) */
-  interface RmrkTraitsPartFixedPart extends Struct {
+  /** @name RmrkTraitsPartFixedPart (306) */
+  export interface RmrkTraitsPartFixedPart extends Struct {
     readonly id: u32;
     readonly z: u32;
     readonly src: Bytes;
   }
 
-  /** @name RmrkTraitsPartSlotPart (296) */
-  interface RmrkTraitsPartSlotPart extends Struct {
+  /** @name RmrkTraitsPartSlotPart (307) */
+  export interface RmrkTraitsPartSlotPart extends Struct {
     readonly id: u32;
     readonly equippable: RmrkTraitsPartEquippableList;
     readonly src: Bytes;
     readonly z: u32;
   }
 
-  /** @name RmrkTraitsPartEquippableList (297) */
-  interface RmrkTraitsPartEquippableList extends Enum {
+  /** @name RmrkTraitsPartEquippableList (308) */
+  export interface RmrkTraitsPartEquippableList extends Enum {
     readonly isAll: boolean;
     readonly isEmpty: boolean;
     readonly isCustom: boolean;
@@ -2639,21 +2879,38 @@
     readonly type: 'All' | 'Empty' | 'Custom';
   }
 
-  /** @name RmrkTraitsTheme (299) */
-  interface RmrkTraitsTheme extends Struct {
+  /** @name RmrkTraitsTheme (310) */
+  export interface RmrkTraitsTheme extends Struct {
     readonly name: Bytes;
     readonly properties: Vec<RmrkTraitsThemeThemeProperty>;
     readonly inherit: bool;
   }
 
-  /** @name RmrkTraitsThemeThemeProperty (301) */
-  interface RmrkTraitsThemeThemeProperty extends Struct {
+  /** @name RmrkTraitsThemeThemeProperty (312) */
+  export interface RmrkTraitsThemeThemeProperty extends Struct {
     readonly key: Bytes;
     readonly value: Bytes;
   }
 
-  /** @name PalletEvmCall (303) */
-  interface PalletEvmCall extends Enum {
+  /** @name PalletForeingAssetsModuleCall (314) */
+  export interface PalletForeingAssetsModuleCall extends Enum {
+    readonly isRegisterForeignAsset: boolean;
+    readonly asRegisterForeignAsset: {
+      readonly owner: AccountId32;
+      readonly location: XcmVersionedMultiLocation;
+      readonly metadata: PalletForeingAssetsModuleAssetMetadata;
+    } & Struct;
+    readonly isUpdateForeignAsset: boolean;
+    readonly asUpdateForeignAsset: {
+      readonly foreignAssetId: u32;
+      readonly location: XcmVersionedMultiLocation;
+      readonly metadata: PalletForeingAssetsModuleAssetMetadata;
+    } & Struct;
+    readonly type: 'RegisterForeignAsset' | 'UpdateForeignAsset';
+  }
+
+  /** @name PalletEvmCall (315) */
+  export interface PalletEvmCall extends Enum {
     readonly isWithdraw: boolean;
     readonly asWithdraw: {
       readonly address: H160;
@@ -2697,8 +2954,8 @@
     readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
   }
 
-  /** @name PalletEthereumCall (307) */
-  interface PalletEthereumCall extends Enum {
+  /** @name PalletEthereumCall (319) */
+  export interface PalletEthereumCall extends Enum {
     readonly isTransact: boolean;
     readonly asTransact: {
       readonly transaction: EthereumTransactionTransactionV2;
@@ -2706,8 +2963,8 @@
     readonly type: 'Transact';
   }
 
-  /** @name EthereumTransactionTransactionV2 (308) */
-  interface EthereumTransactionTransactionV2 extends Enum {
+  /** @name EthereumTransactionTransactionV2 (320) */
+  export interface EthereumTransactionTransactionV2 extends Enum {
     readonly isLegacy: boolean;
     readonly asLegacy: EthereumTransactionLegacyTransaction;
     readonly isEip2930: boolean;
@@ -2717,8 +2974,8 @@
     readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
   }
 
-  /** @name EthereumTransactionLegacyTransaction (309) */
-  interface EthereumTransactionLegacyTransaction extends Struct {
+  /** @name EthereumTransactionLegacyTransaction (321) */
+  export interface EthereumTransactionLegacyTransaction extends Struct {
     readonly nonce: U256;
     readonly gasPrice: U256;
     readonly gasLimit: U256;
@@ -2728,23 +2985,23 @@
     readonly signature: EthereumTransactionTransactionSignature;
   }
 
-  /** @name EthereumTransactionTransactionAction (310) */
-  interface EthereumTransactionTransactionAction extends Enum {
+  /** @name EthereumTransactionTransactionAction (322) */
+  export interface EthereumTransactionTransactionAction extends Enum {
     readonly isCall: boolean;
     readonly asCall: H160;
     readonly isCreate: boolean;
     readonly type: 'Call' | 'Create';
   }
 
-  /** @name EthereumTransactionTransactionSignature (311) */
-  interface EthereumTransactionTransactionSignature extends Struct {
+  /** @name EthereumTransactionTransactionSignature (323) */
+  export interface EthereumTransactionTransactionSignature extends Struct {
     readonly v: u64;
     readonly r: H256;
     readonly s: H256;
   }
 
-  /** @name EthereumTransactionEip2930Transaction (313) */
-  interface EthereumTransactionEip2930Transaction extends Struct {
+  /** @name EthereumTransactionEip2930Transaction (325) */
+  export interface EthereumTransactionEip2930Transaction extends Struct {
     readonly chainId: u64;
     readonly nonce: U256;
     readonly gasPrice: U256;
@@ -2758,14 +3015,14 @@
     readonly s: H256;
   }
 
-  /** @name EthereumTransactionAccessListItem (315) */
-  interface EthereumTransactionAccessListItem extends Struct {
+  /** @name EthereumTransactionAccessListItem (327) */
+  export interface EthereumTransactionAccessListItem extends Struct {
     readonly address: H160;
     readonly storageKeys: Vec<H256>;
   }
 
-  /** @name EthereumTransactionEip1559Transaction (316) */
-  interface EthereumTransactionEip1559Transaction extends Struct {
+  /** @name EthereumTransactionEip1559Transaction (328) */
+  export interface EthereumTransactionEip1559Transaction extends Struct {
     readonly chainId: u64;
     readonly nonce: U256;
     readonly maxPriorityFeePerGas: U256;
@@ -2780,8 +3037,8 @@
     readonly s: H256;
   }
 
-  /** @name PalletEvmMigrationCall (317) */
-  interface PalletEvmMigrationCall extends Enum {
+  /** @name PalletEvmMigrationCall (329) */
+  export interface PalletEvmMigrationCall extends Enum {
     readonly isBegin: boolean;
     readonly asBegin: {
       readonly address: H160;
@@ -2799,14 +3056,14 @@
     readonly type: 'Begin' | 'SetData' | 'Finish';
   }
 
-  /** @name PalletSudoError (320) */
-  interface PalletSudoError extends Enum {
+  /** @name PalletSudoError (332) */
+  export interface PalletSudoError extends Enum {
     readonly isRequireSudo: boolean;
     readonly type: 'RequireSudo';
   }
 
-  /** @name OrmlVestingModuleError (322) */
-  interface OrmlVestingModuleError extends Enum {
+  /** @name OrmlVestingModuleError (334) */
+  export interface OrmlVestingModuleError extends Enum {
     readonly isZeroVestingPeriod: boolean;
     readonly isZeroVestingPeriodCount: boolean;
     readonly isInsufficientBalanceToLock: boolean;
@@ -2816,30 +3073,86 @@
     readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
   }
 
-  /** @name CumulusPalletXcmpQueueInboundChannelDetails (324) */
-  interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
+  /** @name OrmlXtokensModuleError (335) */
+  export interface OrmlXtokensModuleError extends Enum {
+    readonly isAssetHasNoReserve: boolean;
+    readonly isNotCrossChainTransfer: boolean;
+    readonly isInvalidDest: boolean;
+    readonly isNotCrossChainTransferableCurrency: boolean;
+    readonly isUnweighableMessage: boolean;
+    readonly isXcmExecutionFailed: boolean;
+    readonly isCannotReanchor: boolean;
+    readonly isInvalidAncestry: boolean;
+    readonly isInvalidAsset: boolean;
+    readonly isDestinationNotInvertible: boolean;
+    readonly isBadVersion: boolean;
+    readonly isDistinctReserveForAssetAndFee: boolean;
+    readonly isZeroFee: boolean;
+    readonly isZeroAmount: boolean;
+    readonly isTooManyAssetsBeingSent: boolean;
+    readonly isAssetIndexNonExistent: boolean;
+    readonly isFeeNotEnough: boolean;
+    readonly isNotSupportedMultiLocation: boolean;
+    readonly isMinXcmFeeNotDefined: boolean;
+    readonly type: 'AssetHasNoReserve' | 'NotCrossChainTransfer' | 'InvalidDest' | 'NotCrossChainTransferableCurrency' | 'UnweighableMessage' | 'XcmExecutionFailed' | 'CannotReanchor' | 'InvalidAncestry' | 'InvalidAsset' | 'DestinationNotInvertible' | 'BadVersion' | 'DistinctReserveForAssetAndFee' | 'ZeroFee' | 'ZeroAmount' | 'TooManyAssetsBeingSent' | 'AssetIndexNonExistent' | 'FeeNotEnough' | 'NotSupportedMultiLocation' | 'MinXcmFeeNotDefined';
+  }
+
+  /** @name OrmlTokensBalanceLock (338) */
+  export interface OrmlTokensBalanceLock extends Struct {
+    readonly id: U8aFixed;
+    readonly amount: u128;
+  }
+
+  /** @name OrmlTokensAccountData (340) */
+  export interface OrmlTokensAccountData extends Struct {
+    readonly free: u128;
+    readonly reserved: u128;
+    readonly frozen: u128;
+  }
+
+  /** @name OrmlTokensReserveData (342) */
+  export interface OrmlTokensReserveData extends Struct {
+    readonly id: Null;
+    readonly amount: u128;
+  }
+
+  /** @name OrmlTokensModuleError (344) */
+  export interface OrmlTokensModuleError extends Enum {
+    readonly isBalanceTooLow: boolean;
+    readonly isAmountIntoBalanceFailed: boolean;
+    readonly isLiquidityRestrictions: boolean;
+    readonly isMaxLocksExceeded: boolean;
+    readonly isKeepAlive: boolean;
+    readonly isExistentialDeposit: boolean;
+    readonly isDeadAccount: boolean;
+    readonly isTooManyReserves: boolean;
+    readonly type: 'BalanceTooLow' | 'AmountIntoBalanceFailed' | 'LiquidityRestrictions' | 'MaxLocksExceeded' | 'KeepAlive' | 'ExistentialDeposit' | 'DeadAccount' | 'TooManyReserves';
+  }
+
+  /** @name CumulusPalletXcmpQueueInboundChannelDetails (346) */
+  export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
     readonly sender: u32;
     readonly state: CumulusPalletXcmpQueueInboundState;
     readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
   }
 
-  /** @name CumulusPalletXcmpQueueInboundState (325) */
-  interface CumulusPalletXcmpQueueInboundState extends Enum {
+  /** @name CumulusPalletXcmpQueueInboundState (347) */
+  export interface CumulusPalletXcmpQueueInboundState extends Enum {
     readonly isOk: boolean;
     readonly isSuspended: boolean;
     readonly type: 'Ok' | 'Suspended';
   }
 
-  /** @name PolkadotParachainPrimitivesXcmpMessageFormat (328) */
-  interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
+  /** @name PolkadotParachainPrimitivesXcmpMessageFormat (350) */
+  export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
     readonly isConcatenatedVersionedXcm: boolean;
     readonly isConcatenatedEncodedBlob: boolean;
     readonly isSignals: boolean;
     readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
   }
 
-  /** @name CumulusPalletXcmpQueueOutboundChannelDetails (331) */
-  interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
+  /** @name CumulusPalletXcmpQueueOutboundChannelDetails (353) */
+  export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
     readonly recipient: u32;
     readonly state: CumulusPalletXcmpQueueOutboundState;
     readonly signalsExist: bool;
@@ -2847,15 +3160,15 @@
     readonly lastIndex: u16;
   }
 
-  /** @name CumulusPalletXcmpQueueOutboundState (332) */
-  interface CumulusPalletXcmpQueueOutboundState extends Enum {
+  /** @name CumulusPalletXcmpQueueOutboundState (354) */
+  export interface CumulusPalletXcmpQueueOutboundState extends Enum {
     readonly isOk: boolean;
     readonly isSuspended: boolean;
     readonly type: 'Ok' | 'Suspended';
   }
 
-  /** @name CumulusPalletXcmpQueueQueueConfigData (334) */
-  interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
+  /** @name CumulusPalletXcmpQueueQueueConfigData (356) */
+  export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
     readonly suspendThreshold: u32;
     readonly dropThreshold: u32;
     readonly resumeThreshold: u32;
@@ -2864,8 +3177,8 @@
     readonly xcmpMaxIndividualWeight: u64;
   }
 
-  /** @name CumulusPalletXcmpQueueError (336) */
-  interface CumulusPalletXcmpQueueError extends Enum {
+  /** @name CumulusPalletXcmpQueueError (358) */
+  export interface CumulusPalletXcmpQueueError extends Enum {
     readonly isFailedToSend: boolean;
     readonly isBadXcmOrigin: boolean;
     readonly isBadXcm: boolean;
@@ -2874,8 +3187,8 @@
     readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
   }
 
-  /** @name PalletXcmError (337) */
-  interface PalletXcmError extends Enum {
+  /** @name PalletXcmError (359) */
+  export interface PalletXcmError extends Enum {
     readonly isUnreachable: boolean;
     readonly isSendFailure: boolean;
     readonly isFiltered: boolean;
@@ -2892,30 +3205,30 @@
     readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
   }
 
-  /** @name CumulusPalletXcmError (338) */
-  type CumulusPalletXcmError = Null;
+  /** @name CumulusPalletXcmError (360) */
+  export type CumulusPalletXcmError = Null;
 
-  /** @name CumulusPalletDmpQueueConfigData (339) */
-  interface CumulusPalletDmpQueueConfigData extends Struct {
+  /** @name CumulusPalletDmpQueueConfigData (361) */
+  export interface CumulusPalletDmpQueueConfigData extends Struct {
     readonly maxIndividual: u64;
   }
 
-  /** @name CumulusPalletDmpQueuePageIndexData (340) */
-  interface CumulusPalletDmpQueuePageIndexData extends Struct {
+  /** @name CumulusPalletDmpQueuePageIndexData (362) */
+  export interface CumulusPalletDmpQueuePageIndexData extends Struct {
     readonly beginUsed: u32;
     readonly endUsed: u32;
     readonly overweightCount: u64;
   }
 
-  /** @name CumulusPalletDmpQueueError (343) */
-  interface CumulusPalletDmpQueueError extends Enum {
+  /** @name CumulusPalletDmpQueueError (365) */
+  export interface CumulusPalletDmpQueueError extends Enum {
     readonly isUnknown: boolean;
     readonly isOverLimit: boolean;
     readonly type: 'Unknown' | 'OverLimit';
   }
 
-  /** @name PalletUniqueError (347) */
-  interface PalletUniqueError extends Enum {
+  /** @name PalletUniqueError (369) */
+  export interface PalletUniqueError extends Enum {
     readonly isCollectionDecimalPointLimitExceeded: boolean;
     readonly isConfirmUnsetSponsorFail: boolean;
     readonly isEmptyArgument: boolean;
@@ -2923,8 +3236,8 @@
     readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';
   }
 
-  /** @name PalletUniqueSchedulerScheduledV3 (350) */
-  interface PalletUniqueSchedulerScheduledV3 extends Struct {
+  /** @name PalletUniqueSchedulerScheduledV3 (372) */
+  export interface PalletUniqueSchedulerScheduledV3 extends Struct {
     readonly maybeId: Option<U8aFixed>;
     readonly priority: u8;
     readonly call: FrameSupportScheduleMaybeHashed;
@@ -2932,8 +3245,8 @@
     readonly origin: OpalRuntimeOriginCaller;
   }
 
-  /** @name OpalRuntimeOriginCaller (351) */
-  interface OpalRuntimeOriginCaller extends Enum {
+  /** @name OpalRuntimeOriginCaller (373) */
+  export interface OpalRuntimeOriginCaller extends Enum {
     readonly isSystem: boolean;
     readonly asSystem: FrameSupportDispatchRawOrigin;
     readonly isVoid: boolean;
@@ -2946,8 +3259,8 @@
     readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';
   }
 
-  /** @name FrameSupportDispatchRawOrigin (352) */
-  interface FrameSupportDispatchRawOrigin extends Enum {
+  /** @name FrameSupportDispatchRawOrigin (374) */
+  export interface FrameSupportDispatchRawOrigin extends Enum {
     readonly isRoot: boolean;
     readonly isSigned: boolean;
     readonly asSigned: AccountId32;
@@ -2955,8 +3268,8 @@
     readonly type: 'Root' | 'Signed' | 'None';
   }
 
-  /** @name PalletXcmOrigin (353) */
-  interface PalletXcmOrigin extends Enum {
+  /** @name PalletXcmOrigin (375) */
+  export interface PalletXcmOrigin extends Enum {
     readonly isXcm: boolean;
     readonly asXcm: XcmV1MultiLocation;
     readonly isResponse: boolean;
@@ -2964,26 +3277,26 @@
     readonly type: 'Xcm' | 'Response';
   }
 
-  /** @name CumulusPalletXcmOrigin (354) */
-  interface CumulusPalletXcmOrigin extends Enum {
+  /** @name CumulusPalletXcmOrigin (376) */
+  export interface CumulusPalletXcmOrigin extends Enum {
     readonly isRelay: boolean;
     readonly isSiblingParachain: boolean;
     readonly asSiblingParachain: u32;
     readonly type: 'Relay' | 'SiblingParachain';
   }
 
-  /** @name PalletEthereumRawOrigin (355) */
-  interface PalletEthereumRawOrigin extends Enum {
+  /** @name PalletEthereumRawOrigin (377) */
+  export interface PalletEthereumRawOrigin extends Enum {
     readonly isEthereumTransaction: boolean;
     readonly asEthereumTransaction: H160;
     readonly type: 'EthereumTransaction';
   }
 
-  /** @name SpCoreVoid (356) */
-  type SpCoreVoid = Null;
+  /** @name SpCoreVoid (378) */
+  export type SpCoreVoid = Null;
 
-  /** @name PalletUniqueSchedulerError (357) */
-  interface PalletUniqueSchedulerError extends Enum {
+  /** @name PalletUniqueSchedulerError (379) */
+  export interface PalletUniqueSchedulerError extends Enum {
     readonly isFailedToSchedule: boolean;
     readonly isNotFound: boolean;
     readonly isTargetBlockNumberInPast: boolean;
@@ -2991,8 +3304,8 @@
     readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';
   }
 
-  /** @name UpDataStructsCollection (358) */
-  interface UpDataStructsCollection extends Struct {
+  /** @name UpDataStructsCollection (380) */
+  export interface UpDataStructsCollection extends Struct {
     readonly owner: AccountId32;
     readonly mode: UpDataStructsCollectionMode;
     readonly name: Vec<u16>;
@@ -3004,8 +3317,8 @@
     readonly externalCollection: bool;
   }
 
-  /** @name UpDataStructsSponsorshipState (359) */
-  interface UpDataStructsSponsorshipState extends Enum {
+  /** @name UpDataStructsSponsorshipState (381) */
+  export interface UpDataStructsSponsorshipState extends Enum {
     readonly isDisabled: boolean;
     readonly isUnconfirmed: boolean;
     readonly asUnconfirmed: AccountId32;
@@ -3014,44 +3327,44 @@
     readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
   }
 
-  /** @name UpDataStructsProperties (360) */
-  interface UpDataStructsProperties extends Struct {
+  /** @name UpDataStructsProperties (382) */
+  export interface UpDataStructsProperties extends Struct {
     readonly map: UpDataStructsPropertiesMapBoundedVec;
     readonly consumedSpace: u32;
     readonly spaceLimit: u32;
   }
 
-  /** @name UpDataStructsPropertiesMapBoundedVec (361) */
-  interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
+  /** @name UpDataStructsPropertiesMapBoundedVec (383) */
+  export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
 
-  /** @name UpDataStructsPropertiesMapPropertyPermission (366) */
-  interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
+  /** @name UpDataStructsPropertiesMapPropertyPermission (388) */
+  export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
 
-  /** @name UpDataStructsCollectionStats (373) */
-  interface UpDataStructsCollectionStats extends Struct {
+  /** @name UpDataStructsCollectionStats (395) */
+  export interface UpDataStructsCollectionStats extends Struct {
     readonly created: u32;
     readonly destroyed: u32;
     readonly alive: u32;
   }
 
-  /** @name UpDataStructsTokenChild (374) */
-  interface UpDataStructsTokenChild extends Struct {
+  /** @name UpDataStructsTokenChild (396) */
+  export interface UpDataStructsTokenChild extends Struct {
     readonly token: u32;
     readonly collection: u32;
   }
 
-  /** @name PhantomTypeUpDataStructs (375) */
-  interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
+  /** @name PhantomTypeUpDataStructs (397) */
+  export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
 
-  /** @name UpDataStructsTokenData (377) */
-  interface UpDataStructsTokenData extends Struct {
+  /** @name UpDataStructsTokenData (399) */
+  export interface UpDataStructsTokenData extends Struct {
     readonly properties: Vec<UpDataStructsProperty>;
     readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
     readonly pieces: u128;
   }
 
-  /** @name UpDataStructsRpcCollection (379) */
-  interface UpDataStructsRpcCollection extends Struct {
+  /** @name UpDataStructsRpcCollection (401) */
+  export interface UpDataStructsRpcCollection extends Struct {
     readonly owner: AccountId32;
     readonly mode: UpDataStructsCollectionMode;
     readonly name: Vec<u16>;
@@ -3065,8 +3378,8 @@
     readonly readOnly: bool;
   }
 
-  /** @name RmrkTraitsCollectionCollectionInfo (380) */
-  interface RmrkTraitsCollectionCollectionInfo extends Struct {
+  /** @name RmrkTraitsCollectionCollectionInfo (402) */
+  export interface RmrkTraitsCollectionCollectionInfo extends Struct {
     readonly issuer: AccountId32;
     readonly metadata: Bytes;
     readonly max: Option<u32>;
@@ -3074,8 +3387,8 @@
     readonly nftsCount: u32;
   }
 
-  /** @name RmrkTraitsNftNftInfo (381) */
-  interface RmrkTraitsNftNftInfo extends Struct {
+  /** @name RmrkTraitsNftNftInfo (403) */
+  export interface RmrkTraitsNftNftInfo extends Struct {
     readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;
     readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;
     readonly metadata: Bytes;
@@ -3083,41 +3396,41 @@
     readonly pending: bool;
   }
 
-  /** @name RmrkTraitsNftRoyaltyInfo (383) */
-  interface RmrkTraitsNftRoyaltyInfo extends Struct {
+  /** @name RmrkTraitsNftRoyaltyInfo (405) */
+  export interface RmrkTraitsNftRoyaltyInfo extends Struct {
     readonly recipient: AccountId32;
     readonly amount: Permill;
   }
 
-  /** @name RmrkTraitsResourceResourceInfo (384) */
-  interface RmrkTraitsResourceResourceInfo extends Struct {
+  /** @name RmrkTraitsResourceResourceInfo (406) */
+  export interface RmrkTraitsResourceResourceInfo extends Struct {
     readonly id: u32;
     readonly resource: RmrkTraitsResourceResourceTypes;
     readonly pending: bool;
     readonly pendingRemoval: bool;
   }
 
-  /** @name RmrkTraitsPropertyPropertyInfo (385) */
-  interface RmrkTraitsPropertyPropertyInfo extends Struct {
+  /** @name RmrkTraitsPropertyPropertyInfo (407) */
+  export interface RmrkTraitsPropertyPropertyInfo extends Struct {
     readonly key: Bytes;
     readonly value: Bytes;
   }
 
-  /** @name RmrkTraitsBaseBaseInfo (386) */
-  interface RmrkTraitsBaseBaseInfo extends Struct {
+  /** @name RmrkTraitsBaseBaseInfo (408) */
+  export interface RmrkTraitsBaseBaseInfo extends Struct {
     readonly issuer: AccountId32;
     readonly baseType: Bytes;
     readonly symbol: Bytes;
   }
 
-  /** @name RmrkTraitsNftNftChild (387) */
-  interface RmrkTraitsNftNftChild extends Struct {
+  /** @name RmrkTraitsNftNftChild (409) */
+  export interface RmrkTraitsNftNftChild extends Struct {
     readonly collectionId: u32;
     readonly nftId: u32;
   }
 
-  /** @name PalletCommonError (389) */
-  interface PalletCommonError extends Enum {
+  /** @name PalletCommonError (411) */
+  export interface PalletCommonError extends Enum {
     readonly isCollectionNotFound: boolean;
     readonly isMustBeTokenOwner: boolean;
     readonly isNoPermission: boolean;
@@ -3155,8 +3468,8 @@
     readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';
   }
 
-  /** @name PalletFungibleError (391) */
-  interface PalletFungibleError extends Enum {
+  /** @name PalletFungibleError (413) */
+  export interface PalletFungibleError extends Enum {
     readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
     readonly isFungibleItemsHaveNoId: boolean;
     readonly isFungibleItemsDontHaveData: boolean;
@@ -3165,13 +3478,13 @@
     readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
   }
 
-  /** @name PalletRefungibleItemData (392) */
-  interface PalletRefungibleItemData extends Struct {
+  /** @name PalletRefungibleItemData (414) */
+  export interface PalletRefungibleItemData extends Struct {
     readonly constData: Bytes;
   }
 
-  /** @name PalletRefungibleError (397) */
-  interface PalletRefungibleError extends Enum {
+  /** @name PalletRefungibleError (419) */
+  export interface PalletRefungibleError extends Enum {
     readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
     readonly isWrongRefungiblePieces: boolean;
     readonly isRepartitionWhileNotOwningAllPieces: boolean;
@@ -3180,29 +3493,29 @@
     readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
   }
 
-  /** @name PalletNonfungibleItemData (398) */
-  interface PalletNonfungibleItemData extends Struct {
+  /** @name PalletNonfungibleItemData (420) */
+  export interface PalletNonfungibleItemData extends Struct {
     readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
   }
 
-  /** @name UpDataStructsPropertyScope (400) */
-  interface UpDataStructsPropertyScope extends Enum {
+  /** @name UpDataStructsPropertyScope (422) */
+  export interface UpDataStructsPropertyScope extends Enum {
     readonly isNone: boolean;
     readonly isRmrk: boolean;
     readonly isEth: boolean;
     readonly type: 'None' | 'Rmrk' | 'Eth';
   }
 
-  /** @name PalletNonfungibleError (402) */
-  interface PalletNonfungibleError extends Enum {
+  /** @name PalletNonfungibleError (424) */
+  export interface PalletNonfungibleError extends Enum {
     readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
     readonly isNonfungibleItemsHaveNoAmount: boolean;
     readonly isCantBurnNftWithChildren: boolean;
     readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';
   }
 
-  /** @name PalletStructureError (403) */
-  interface PalletStructureError extends Enum {
+  /** @name PalletStructureError (425) */
+  export interface PalletStructureError extends Enum {
     readonly isOuroborosDetected: boolean;
     readonly isDepthLimit: boolean;
     readonly isBreadthLimit: boolean;
@@ -3210,8 +3523,8 @@
     readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';
   }
 
-  /** @name PalletRmrkCoreError (404) */
-  interface PalletRmrkCoreError extends Enum {
+  /** @name PalletRmrkCoreError (426) */
+  export interface PalletRmrkCoreError extends Enum {
     readonly isCorruptedCollectionType: boolean;
     readonly isRmrkPropertyKeyIsTooLong: boolean;
     readonly isRmrkPropertyValueIsTooLong: boolean;
@@ -3234,8 +3547,8 @@
     readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';
   }
 
-  /** @name PalletRmrkEquipError (406) */
-  interface PalletRmrkEquipError extends Enum {
+  /** @name PalletRmrkEquipError (428) */
+  export interface PalletRmrkEquipError extends Enum {
     readonly isPermissionError: boolean;
     readonly isNoAvailableBaseId: boolean;
     readonly isNoAvailablePartId: boolean;
@@ -3246,8 +3559,17 @@
     readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';
   }
 
-  /** @name PalletEvmError (409) */
-  interface PalletEvmError extends Enum {
+  /** @name PalletForeingAssetsModuleError (429) */
+  export interface PalletForeingAssetsModuleError extends Enum {
+    readonly isBadLocation: boolean;
+    readonly isMultiLocationExisted: boolean;
+    readonly isAssetIdNotExists: boolean;
+    readonly isAssetIdExisted: boolean;
+    readonly type: 'BadLocation' | 'MultiLocationExisted' | 'AssetIdNotExists' | 'AssetIdExisted';
+  }
+
+  /** @name PalletEvmError (432) */
+  export interface PalletEvmError extends Enum {
     readonly isBalanceLow: boolean;
     readonly isFeeOverflow: boolean;
     readonly isPaymentOverflow: boolean;
@@ -3257,8 +3579,8 @@
     readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
   }
 
-  /** @name FpRpcTransactionStatus (412) */
-  interface FpRpcTransactionStatus extends Struct {
+  /** @name FpRpcTransactionStatus (435) */
+  export interface FpRpcTransactionStatus extends Struct {
     readonly transactionHash: H256;
     readonly transactionIndex: u32;
     readonly from: H160;
@@ -3268,11 +3590,11 @@
     readonly logsBloom: EthbloomBloom;
   }
 
-  /** @name EthbloomBloom (414) */
-  interface EthbloomBloom extends U8aFixed {}
+  /** @name EthbloomBloom (437) */
+  export interface EthbloomBloom extends U8aFixed {}
 
-  /** @name EthereumReceiptReceiptV3 (416) */
-  interface EthereumReceiptReceiptV3 extends Enum {
+  /** @name EthereumReceiptReceiptV3 (439) */
+  export interface EthereumReceiptReceiptV3 extends Enum {
     readonly isLegacy: boolean;
     readonly asLegacy: EthereumReceiptEip658ReceiptData;
     readonly isEip2930: boolean;
@@ -3282,23 +3604,23 @@
     readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
   }
 
-  /** @name EthereumReceiptEip658ReceiptData (417) */
-  interface EthereumReceiptEip658ReceiptData extends Struct {
+  /** @name EthereumReceiptEip658ReceiptData (440) */
+  export interface EthereumReceiptEip658ReceiptData extends Struct {
     readonly statusCode: u8;
     readonly usedGas: U256;
     readonly logsBloom: EthbloomBloom;
     readonly logs: Vec<EthereumLog>;
   }
 
-  /** @name EthereumBlock (418) */
-  interface EthereumBlock extends Struct {
+  /** @name EthereumBlock (441) */
+  export interface EthereumBlock extends Struct {
     readonly header: EthereumHeader;
     readonly transactions: Vec<EthereumTransactionTransactionV2>;
     readonly ommers: Vec<EthereumHeader>;
   }
 
-  /** @name EthereumHeader (419) */
-  interface EthereumHeader extends Struct {
+  /** @name EthereumHeader (442) */
+  export interface EthereumHeader extends Struct {
     readonly parentHash: H256;
     readonly ommersHash: H256;
     readonly beneficiary: H160;
@@ -3316,46 +3638,46 @@
     readonly nonce: EthereumTypesHashH64;
   }
 
-  /** @name EthereumTypesHashH64 (420) */
-  interface EthereumTypesHashH64 extends U8aFixed {}
+  /** @name EthereumTypesHashH64 (443) */
+  export interface EthereumTypesHashH64 extends U8aFixed {}
 
-  /** @name PalletEthereumError (425) */
-  interface PalletEthereumError extends Enum {
+  /** @name PalletEthereumError (448) */
+  export interface PalletEthereumError extends Enum {
     readonly isInvalidSignature: boolean;
     readonly isPreLogExists: boolean;
     readonly type: 'InvalidSignature' | 'PreLogExists';
   }
 
-  /** @name PalletEvmCoderSubstrateError (426) */
-  interface PalletEvmCoderSubstrateError extends Enum {
+  /** @name PalletEvmCoderSubstrateError (449) */
+  export interface PalletEvmCoderSubstrateError extends Enum {
     readonly isOutOfGas: boolean;
     readonly isOutOfFund: boolean;
     readonly type: 'OutOfGas' | 'OutOfFund';
   }
 
-  /** @name PalletEvmContractHelpersSponsoringModeT (427) */
-  interface PalletEvmContractHelpersSponsoringModeT extends Enum {
+  /** @name PalletEvmContractHelpersSponsoringModeT (450) */
+  export interface PalletEvmContractHelpersSponsoringModeT extends Enum {
     readonly isDisabled: boolean;
     readonly isAllowlisted: boolean;
     readonly isGenerous: boolean;
     readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
   }
 
-  /** @name PalletEvmContractHelpersError (429) */
-  interface PalletEvmContractHelpersError extends Enum {
+  /** @name PalletEvmContractHelpersError (452) */
+  export interface PalletEvmContractHelpersError extends Enum {
     readonly isNoPermission: boolean;
     readonly type: 'NoPermission';
   }
 
-  /** @name PalletEvmMigrationError (430) */
-  interface PalletEvmMigrationError extends Enum {
+  /** @name PalletEvmMigrationError (453) */
+  export interface PalletEvmMigrationError extends Enum {
     readonly isAccountNotEmpty: boolean;
     readonly isAccountIsNotMigrating: boolean;
     readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
   }
 
-  /** @name SpRuntimeMultiSignature (432) */
-  interface SpRuntimeMultiSignature extends Enum {
+  /** @name SpRuntimeMultiSignature (455) */
+  export interface SpRuntimeMultiSignature extends Enum {
     readonly isEd25519: boolean;
     readonly asEd25519: SpCoreEd25519Signature;
     readonly isSr25519: boolean;
@@ -3365,34 +3687,34 @@
     readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
   }
 
-  /** @name SpCoreEd25519Signature (433) */
-  interface SpCoreEd25519Signature extends U8aFixed {}
+  /** @name SpCoreEd25519Signature (456) */
+  export interface SpCoreEd25519Signature extends U8aFixed {}
 
-  /** @name SpCoreSr25519Signature (435) */
-  interface SpCoreSr25519Signature extends U8aFixed {}
+  /** @name SpCoreSr25519Signature (458) */
+  export interface SpCoreSr25519Signature extends U8aFixed {}
 
-  /** @name SpCoreEcdsaSignature (436) */
-  interface SpCoreEcdsaSignature extends U8aFixed {}
+  /** @name SpCoreEcdsaSignature (459) */
+  export interface SpCoreEcdsaSignature extends U8aFixed {}
 
-  /** @name FrameSystemExtensionsCheckSpecVersion (439) */
-  type FrameSystemExtensionsCheckSpecVersion = Null;
+  /** @name FrameSystemExtensionsCheckSpecVersion (462) */
+  export type FrameSystemExtensionsCheckSpecVersion = Null;
 
-  /** @name FrameSystemExtensionsCheckGenesis (440) */
-  type FrameSystemExtensionsCheckGenesis = Null;
+  /** @name FrameSystemExtensionsCheckGenesis (463) */
+  export type FrameSystemExtensionsCheckGenesis = Null;
 
-  /** @name FrameSystemExtensionsCheckNonce (443) */
-  interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
+  /** @name FrameSystemExtensionsCheckNonce (466) */
+  export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
 
-  /** @name FrameSystemExtensionsCheckWeight (444) */
-  type FrameSystemExtensionsCheckWeight = Null;
+  /** @name FrameSystemExtensionsCheckWeight (467) */
+  export type FrameSystemExtensionsCheckWeight = Null;
 
-  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (445) */
-  interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
+  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (468) */
+  export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
 
-  /** @name OpalRuntimeRuntime (446) */
-  type OpalRuntimeRuntime = Null;
+  /** @name OpalRuntimeRuntime (469) */
+  export type OpalRuntimeRuntime = Null;
 
-  /** @name PalletEthereumFakeTransactionFinalizer (447) */
-  type PalletEthereumFakeTransactionFinalizer = Null;
+  /** @name PalletEthereumFakeTransactionFinalizer (470) */
+  export type PalletEthereumFakeTransactionFinalizer = Null;
 
 } // declare module
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -16,7 +16,7 @@
 
 import '../interfaces/augment-api-rpc';
 import '../interfaces/augment-api-query';
-import {ApiPromise} from '@polkadot/api';
+import {ApiPromise, Keyring} from '@polkadot/api';
 import type {AccountId, EventRecord, Event} from '@polkadot/types/interfaces';
 import type {GenericEventData} from '@polkadot/types';
 import {AnyTuple, IEvent, IKeyringPair} from '@polkadot/types/types';
@@ -1100,6 +1100,16 @@
   return balance;
 }
 
+export async function paraSiblingSovereignAccount(paraid: number): Promise<string> {
+  return usingApi(async api => {
+    const siblingPrefix = '0x7369626c';
+    const encodedParaId = api.createType('u32', paraid).toHex(true).substring(2);
+    const suffix = '000000000000000000000000000000000000000000000000';
+
+    return siblingPrefix + encodedParaId + suffix;
+  });
+}
+
 export async function transferBalanceTo(api: ApiPromise, source: IKeyringPair, target: string, amount = 1000n * UNIQUE) {
   const tx = api.tx.balances.transfer(target, amount);
   const events = await submitTransactionAsync(source, tx);
@@ -1779,3 +1789,19 @@
 
 itApi.only = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {only: true});
 itApi.skip = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {skip: true});
+
+let accountSeed = 10000;
+
+const keyringEth = new Keyring({type: 'ethereum'});
+const keyringEd25519 = new Keyring({type: 'ed25519'});
+const keyringSr25519 = new Keyring({type: 'sr25519'});
+
+export function generateKeyringPair(type: 'ethereum' | 'sr25519' | 'ed25519' = 'sr25519') {
+  const privateKey = `0xDEADBEEF${(accountSeed++).toString(16).padStart(56, '0')}`;
+  if (type == 'sr25519') {
+    return keyringSr25519.addFromUri(privateKey);
+  } else if (type == 'ed25519') {
+    return keyringEd25519.addFromUri(privateKey);
+  }
+  return keyringEth.addFromUri(privateKey);
+}
addedtests/src/xcm/xcmTransfer.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/xcm/xcmTransfer.test.ts
@@ -0,0 +1,186 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+
+import {WsProvider} from '@polkadot/api';
+import {ApiOptions} from '@polkadot/api/types';
+import {IKeyringPair} from '@polkadot/types/types';
+import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
+import {getGenericResult} from './util/helpers';
+import waitNewBlocks from './substrate/wait-new-blocks';
+import getBalance from './substrate/get-balance';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+const UNIQUE_CHAIN = 1000;
+const KARURA_CHAIN = 2000;
+const KARURA_PORT = '9946';
+const TRANSFER_AMOUNT = 2000000000000000000000000n;
+
+describe.skip('Integration test: Exchanging QTZ with Karura', () => {
+  let alice: IKeyringPair;
+
+  before(async () => {
+    await usingApi(async (api, privateKeyWrapper) => {
+      alice = privateKeyWrapper('//Alice');
+    });
+
+    const karuraApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT),
+    };
+
+    await usingApi(async (api) => {
+      const destination = {
+        V0: {
+          X2: [
+            'Parent',
+            {
+              Parachain: UNIQUE_CHAIN,
+            },
+          ],
+        },
+      };
+
+      const metadata =
+      {
+        name: 'QTZ',
+        symbol: 'QTZ',
+        decimals: 18,
+        minimalBalance: 1,
+      };
+
+      const tx = api.tx.assetRegistry.registerForeignAsset(destination, metadata);
+      const sudoTx = api.tx.sudo.sudo(tx as any);
+      const events = await submitTransactionAsync(alice, sudoTx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+    }, karuraApiOptions);
+  });
+
+  it('Should connect and send QTZ to Karura', async () => {
+    let balanceOnKaruraBefore: bigint;
+
+    await usingApi(async (api) => {
+      const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+      balanceOnKaruraBefore = free;
+    }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
+
+    await usingApi(async (api) => {
+      const destination = {
+        V0: {
+          X2: [
+            'Parent',
+            {
+              Parachain: KARURA_CHAIN,
+            },
+          ],
+        },
+      };
+
+      const beneficiary = {
+        V0: {
+          X1: {
+            AccountId32: {
+              network: 'Any',
+              id: alice.addressRaw,
+            },
+          },
+        },
+      };
+
+      const assets = {
+        V1: [
+          {
+            id: {
+              Concrete: {
+                parents: 0,
+                interior: 'Here',
+              },
+            },
+            fun: {
+              Fungible: TRANSFER_AMOUNT,
+            },
+          },
+        ],
+      };
+
+      const feeAssetItem = 0;
+
+      const weightLimit = {
+        Limited: 5000000000,
+      };
+
+      const tx = api.tx.polkadotXcm.limitedReserveTransferAssets(destination, beneficiary, assets, feeAssetItem, weightLimit);
+      const events = await submitTransactionAsync(alice, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+    });
+
+    await usingApi(async (api) => {
+      // todo do something about instant sealing, where there might not be any new blocks
+      await waitNewBlocks(api, 3);
+      const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+      expect(free > balanceOnKaruraBefore).to.be.true;
+    }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
+  });
+
+  it('Should connect to Karura and send QTZ back', async () => {
+    let balanceBefore: bigint;
+
+    await usingApi(async (api) => {
+      [balanceBefore] = await getBalance(api, [alice.address]);
+    });
+
+    await usingApi(async (api) => {
+      const destination = {
+        V1: {
+          parents: 1,
+          interior: {
+            X2: [
+              {Parachain: UNIQUE_CHAIN},
+              {AccountId32: {
+                network: 'Any',
+                id: alice.addressRaw,
+              }},
+            ],
+          },
+        },
+      };
+
+      const id = {
+        ForeignAsset: 0,
+      };
+
+      const amount = TRANSFER_AMOUNT;
+      const destWeight = 50000000;
+
+      const tx = api.tx.xTokens.transfer(id, amount, destination, destWeight);
+      const events = await submitTransactionAsync(alice, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+    }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
+
+    await usingApi(async (api) => {
+      // todo do something about instant sealing, where there might not be any new blocks
+      await waitNewBlocks(api, 3);
+      const [balanceAfter] = await getBalance(api, [alice.address]);
+      expect(balanceAfter > balanceBefore).to.be.true;
+    });
+  });
+});
addedtests/src/xcm/xcmTransferAcala.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/xcm/xcmTransferAcala.test.ts
@@ -0,0 +1,265 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+
+import {WsProvider} from '@polkadot/api';
+import {ApiOptions} from '@polkadot/api/types';
+import {IKeyringPair} from '@polkadot/types/types';
+import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
+import {getGenericResult, generateKeyringPair} from './util/helpers';
+import waitNewBlocks from './substrate/wait-new-blocks';
+import getBalance from './substrate/get-balance';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+let UNIQUE_CHAIN = 0;
+let ACALA_CHAIN = 0;
+
+// parse parachain id numbers
+process.argv.forEach((val) => {
+
+  const ai = val.indexOf('acalaId=');
+  const ui = val.indexOf('uniqueId=');
+  if (ai != -1)
+  {
+    ACALA_CHAIN = Number(val.substring('acalaId='.length));
+  }
+  if (ui != -1)
+  {
+    UNIQUE_CHAIN = Number(val.substring('uniqueId='.length));
+  }
+});
+
+const ACALA_PORT = '9946';
+const TRANSFER_AMOUNT = 2000000000000000000000000n;
+
+describe('Integration test: Exchanging UNQ with Acala', () => {
+  let alice: IKeyringPair;
+  let randomAccount: IKeyringPair;
+
+  let balanceUniqueTokenBefore: bigint;
+  let balanceUniqueTokenAfter: bigint;
+  let balanceUniqueTokenFinal: bigint;
+  let balanceAcalaTokenBefore: bigint;
+  let balanceAcalaTokenAfter: bigint;
+  let balanceAcalaTokenFinal: bigint;
+  let balanceUniqueForeignTokenAfter: bigint;
+  let balanceUniqueForeignTokenBefore: bigint;
+  let balanceUniqueForeignTokenFinal: bigint;
+
+  before(async () => {
+    await usingApi(async (api, privateKeyWrapper) => {
+      alice = privateKeyWrapper('//Alice');
+      randomAccount = generateKeyringPair();
+    });
+
+    const acalaApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + ACALA_PORT),
+    };
+
+    await usingApi(
+      async (api) => {
+        const destination = {
+          V0: {
+            X2: [
+              'Parent',
+              {
+                Parachain: UNIQUE_CHAIN,
+              },
+            ],
+          },
+        };
+
+        const metadata = {
+          name: 'UNQ',
+          symbol: 'UNQ',
+          decimals: 18,
+          minimalBalance: 1,
+        };
+
+        const tx = api.tx.assetRegistry.registerForeignAsset(destination, metadata);
+        const sudoTx = api.tx.sudo.sudo(tx as any);
+        const events = await submitTransactionAsync(alice, sudoTx);
+        const result = getGenericResult(events);
+        expect(result.success).to.be.true;
+
+        const tx1 = api.tx.balances.transfer(randomAccount.address, 10000000000000n);
+        const events1 = await submitTransactionAsync(alice, tx1);
+        const result1 = getGenericResult(events1);
+        expect(result1.success).to.be.true;
+
+        [balanceAcalaTokenBefore] = await getBalance(api, [randomAccount.address]);
+        {
+          const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+          balanceUniqueForeignTokenBefore = BigInt(free);
+        }
+      },
+      acalaApiOptions,
+    );
+
+    await usingApi(async (api) => {
+      const tx0 = api.tx.balances.transfer(randomAccount.address, 10n * TRANSFER_AMOUNT);
+      const events0 = await submitTransactionAsync(alice, tx0);
+      const result0 = getGenericResult(events0);
+      expect(result0.success).to.be.true;
+
+      [balanceUniqueTokenBefore] = await getBalance(api, [randomAccount.address]);
+    });
+  });
+
+  it('Should connect and send UNQ to Acala', async () => {
+
+    await usingApi(async (api) => {
+
+      const destination = {
+        V0: {
+          X2: [
+            'Parent',
+            {
+              Parachain: ACALA_CHAIN,
+            },
+          ],
+        },
+      };
+
+      const beneficiary = {
+        V0: {
+          X1: {
+            AccountId32: {
+              network: 'Any',
+              id: randomAccount.addressRaw,
+            },
+          },
+        },
+      };
+
+      const assets = {
+        V1: [
+          {
+            id: {
+              Concrete: {
+                parents: 0,
+                interior: 'Here',
+              },
+            },
+            fun: {
+              Fungible: TRANSFER_AMOUNT,
+            },
+          },
+        ],
+      };
+
+      const feeAssetItem = 0;
+
+      const weightLimit = {
+        Limited: 5000000000,
+      };
+
+      const tx = api.tx.polkadotXcm.limitedReserveTransferAssets(destination, beneficiary, assets, feeAssetItem, weightLimit);
+      const events = await submitTransactionAsync(randomAccount, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+
+      [balanceUniqueTokenAfter] = await getBalance(api, [randomAccount.address]);
+
+      expect((balanceUniqueTokenBefore - balanceUniqueTokenAfter) > 0n).to.be.true;
+    });
+
+    await usingApi(
+      async (api) => {
+        // todo do something about instant sealing, where there might not be any new blocks
+        await waitNewBlocks(api, 3);
+        const {free} = (await api.query.tokens.accounts(randomAccount.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+        balanceUniqueForeignTokenAfter = BigInt(free);
+
+        [balanceAcalaTokenAfter] = await getBalance(api, [randomAccount.address]);
+        const acaFees = balanceAcalaTokenBefore - balanceAcalaTokenAfter;
+        const unqFees = balanceUniqueForeignTokenBefore - balanceUniqueForeignTokenAfter;
+        console.log('Unique to Acala transaction fees on Acala: %s ACA', acaFees);
+        console.log('Unique to Acala transaction fees on Acala: %s UNQ', unqFees);
+        expect(acaFees == 0n).to.be.true;
+        expect(unqFees == 0n).to.be.true;
+      },
+      {provider: new WsProvider('ws://127.0.0.1:' + ACALA_PORT)},
+    );
+  });
+
+  it('Should connect to Acala and send UNQ back', async () => {
+
+    await usingApi(
+      async (api) => {
+        const destination = {
+          V1: {
+            parents: 1,
+            interior: {
+              X2: [
+                {Parachain: UNIQUE_CHAIN},
+                {
+                  AccountId32: {
+                    network: 'Any',
+                    id: randomAccount.addressRaw,
+                  },
+                },
+              ],
+            },
+          },
+        };
+
+        const id = {
+          ForeignAsset: 0,
+        };
+
+        const amount = TRANSFER_AMOUNT;
+        const destWeight = 50000000;
+
+        const tx = api.tx.xTokens.transfer(id, amount, destination, destWeight);
+        const events = await submitTransactionAsync(randomAccount, tx);
+        const result = getGenericResult(events);
+        expect(result.success).to.be.true;
+
+        [balanceAcalaTokenFinal] = await getBalance(api, [randomAccount.address]);
+        {
+          const {free} = (await api.query.tokens.accounts(randomAccount.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+          balanceUniqueForeignTokenFinal = BigInt(free);
+        }
+
+        const acaFees = balanceAcalaTokenFinal - balanceAcalaTokenAfter;
+        const unqFees = balanceUniqueForeignTokenFinal - balanceUniqueForeignTokenAfter;
+        console.log('Acala to Unique transaction fees on Acala: %s ACA', acaFees);
+        console.log('Acala to Unique transaction fees on Acala: %s UNQ', unqFees);
+        expect(acaFees > 0).to.be.true;
+        expect(unqFees == 0n).to.be.true;
+      },
+      {provider: new WsProvider('ws://127.0.0.1:' + ACALA_PORT)},
+    );
+
+    await usingApi(async (api) => {
+      // todo do something about instant sealing, where there might not be any new blocks
+      await waitNewBlocks(api, 3);
+
+      [balanceUniqueTokenFinal] = await getBalance(api, [randomAccount.address]);
+      const actuallyDelivered = balanceUniqueTokenFinal - balanceUniqueTokenAfter;
+      expect(actuallyDelivered > 0).to.be.true;
+
+      const unqFees = TRANSFER_AMOUNT - actuallyDelivered;
+      console.log('Acala to Unique transaction fees on Unique: %s UNQ', unqFees);
+      expect(unqFees > 0).to.be.true;
+    });
+  });
+});
\ No newline at end of file
addedtests/src/xcm/xcmTransferMoonbeam.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/xcm/xcmTransferMoonbeam.test.ts
@@ -0,0 +1,382 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+
+import {Keyring, WsProvider} from '@polkadot/api';
+import {ApiOptions} from '@polkadot/api/types';
+import {IKeyringPair} from '@polkadot/types/types';
+import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
+import {getGenericResult, generateKeyringPair} from './util/helpers';
+import {MultiLocation} from '@polkadot/types/interfaces';
+import {blake2AsHex} from '@polkadot/util-crypto';
+import getBalance from './substrate/get-balance';
+import waitNewBlocks from './substrate/wait-new-blocks';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+
+let UNIQUE_CHAIN = 0;
+let MOONBEAM_CHAIN = 0;
+
+// parse parachain id numbers
+process.argv.forEach((val) => {
+
+  const ai = val.indexOf('moonbeamId=');
+  const ui = val.indexOf('uniqueId=');
+  if (ai != -1)
+  {
+    MOONBEAM_CHAIN = Number(val.substring('moonbeamId='.length));
+  }
+  if (ui != -1)
+  {
+    UNIQUE_CHAIN = Number(val.substring('uniqueId='.length));
+  }
+});
+
+const UNIQUE_PORT = '9944';
+const MOONBEAM_PORT = '9946';
+const TRANSFER_AMOUNT = 2000000000000000000000000n;
+
+describe('Integration test: Exchanging UNQ with Moonbeam', () => {
+
+  // Unique constants
+  let uniqueAlice: IKeyringPair;
+  let uniqueAssetLocation;
+
+  let randomAccountUnique: IKeyringPair;
+  let randomAccountMoonbeam: IKeyringPair;
+
+  // Moonbeam constants
+  let assetId: Uint8Array;
+
+  const moonbeamKeyring = new Keyring({type: 'ethereum'});
+  const alithPrivateKey = '0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133';
+  const baltatharPrivateKey = '0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b';
+  const dorothyPrivateKey = '0x39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68';
+
+  const alithAccount = moonbeamKeyring.addFromUri(alithPrivateKey, undefined, 'ethereum');
+  const baltatharAccount = moonbeamKeyring.addFromUri(baltatharPrivateKey, undefined, 'ethereum');
+  const dorothyAccount = moonbeamKeyring.addFromUri(dorothyPrivateKey, undefined, 'ethereum');
+
+  const councilVotingThreshold = 2;
+  const technicalCommitteeThreshold = 2;
+  const votingPeriod = 3;
+  const delayPeriod = 0;
+
+  const uniqueAssetMetadata = {
+    name: 'xcUnique',
+    symbol: 'xcUNQ',
+    decimals: 18,
+    isFrozen: false,
+    minimalBalance: 1,
+  };
+
+  // let actuallySent1: bigint;
+  // let actuallySent2: bigint;
+
+  // let balanceUnique1: bigint;
+  // let balanceUnique2: bigint;
+  // let balanceUnique3: bigint;
+  
+  // let balanceMoonbeamGlmr1: bigint;
+  // let balanceMoonbeamGlmr2: bigint;
+  // let balanceMoonbeamGlmr3: bigint;
+
+  let balanceUniqueTokenBefore: bigint;
+  let balanceUniqueTokenAfter: bigint;
+  let balanceUniqueTokenFinal: bigint;
+  let balanceGlmrTokenBefore: bigint;
+  let balanceGlmrTokenAfter: bigint;
+  let balanceGlmrTokenFinal: bigint;
+
+  before(async () => {
+    await usingApi(async (api, privateKeyWrapper) => {
+      uniqueAlice = privateKeyWrapper('//Alice');
+      randomAccountUnique = generateKeyringPair();
+      randomAccountMoonbeam = generateKeyringPair('ethereum');
+    });
+
+    const moonbeamApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + MOONBEAM_PORT),
+    };
+
+    await usingApi(
+      async (api) => {
+
+        // >>> Sponsoring Dorothy >>>
+        const tx0 = api.tx.balances.transfer(dorothyAccount.address, 11_000_000_000_000_000_000n);
+        const events0 = await submitTransactionAsync(alithAccount, tx0);
+        const result0 = getGenericResult(events0);
+        expect(result0.success).to.be.true;
+        // <<< Sponsoring Dorothy <<<
+
+        const sourceLocation: MultiLocation = api.createType(
+          'MultiLocation',
+          {
+            parents: 1,
+            interior: {X1: {Parachain: UNIQUE_CHAIN}},
+          },
+        );
+
+        assetId = api.registry.hash(sourceLocation.toU8a()).slice(0, 16).reverse();
+        console.log('Internal asset ID is %s', assetId);
+        uniqueAssetLocation = {XCM: sourceLocation};
+        const existentialDeposit = 1;
+        const isSufficient = true;
+        const unitsPerSecond = '1';
+        const numAssetsWeightHint = 0;
+
+        const registerTx = api.tx.assetManager.registerForeignAsset(
+          uniqueAssetLocation,
+          uniqueAssetMetadata,
+          existentialDeposit,
+          isSufficient,
+        );
+        console.log('Encoded proposal for registerAsset is %s', registerTx.method.toHex() || '');
+
+        const setUnitsTx = api.tx.assetManager.setAssetUnitsPerSecond(
+          uniqueAssetLocation,
+          unitsPerSecond,
+          numAssetsWeightHint,
+        );
+        console.log('Encoded proposal for setAssetUnitsPerSecond is %s', setUnitsTx.method.toHex() || '');
+
+        const batchCall = api.tx.utility.batchAll([registerTx, setUnitsTx]);
+        console.log('Encoded proposal for batchCall is %s', batchCall.method.toHex() || '');
+
+        // >>> Note motion preimage >>>
+        const encodedProposal = batchCall?.method.toHex() || '';
+        const proposalHash = blake2AsHex(encodedProposal);
+        console.log('Encoded proposal for batch utility after schedule is %s', encodedProposal);
+        console.log('Encoded proposal hash for batch utility after schedule is %s', proposalHash);
+        console.log('Encoded length %d', encodedProposal.length);
+
+        const tx1 = api.tx.democracy.notePreimage(encodedProposal);
+        const events1 = await submitTransactionAsync(baltatharAccount, tx1);
+        const result1 = getGenericResult(events1);
+        expect(result1.success).to.be.true;
+        // <<< Note motion preimage <<<
+
+        // >>> Propose external motion through council >>>
+        const externalMotion = api.tx.democracy.externalProposeMajority(proposalHash);
+        const tx2 = api.tx.councilCollective.propose(
+          councilVotingThreshold,
+          externalMotion,
+          externalMotion.encodedLength,
+        );
+        const events2 = await submitTransactionAsync(baltatharAccount, tx2);
+        const result2 = getGenericResult(events2);
+        expect(result2.success).to.be.true;
+
+        const encodedMotion = externalMotion?.method.toHex() || '';
+        const motionHash = blake2AsHex(encodedMotion);
+        console.log('Motion hash is %s', motionHash);
+
+        const tx3 = api.tx.councilCollective.vote(motionHash, 0, true);
+        {
+          const events3 = await submitTransactionAsync(dorothyAccount, tx3);
+          const result3 = getGenericResult(events3);
+          expect(result3.success).to.be.true;
+        }
+        {
+          const events3 = await submitTransactionAsync(baltatharAccount, tx3);
+          const result3 = getGenericResult(events3);
+          expect(result3.success).to.be.true;
+        }
+
+        const tx4 = api.tx.councilCollective.close(motionHash, 0, 1_000_000_000, externalMotion.encodedLength);
+        const events4 = await submitTransactionAsync(dorothyAccount, tx4);
+        const result4 = getGenericResult(events4);
+        expect(result4.success).to.be.true;
+        // <<< Propose external motion through council <<<
+
+        // >>> Fast track proposal through technical committee >>>
+        const fastTrack = api.tx.democracy.fastTrack(proposalHash, votingPeriod, delayPeriod);
+        const tx5 = api.tx.techCommitteeCollective.propose(
+          technicalCommitteeThreshold,
+          fastTrack,
+          fastTrack.encodedLength,
+        );
+        const events5 = await submitTransactionAsync(alithAccount, tx5);
+        const result5 = getGenericResult(events5);
+        expect(result5.success).to.be.true;
+
+        const encodedFastTrack = fastTrack?.method.toHex() || '';
+        const fastTrackHash = blake2AsHex(encodedFastTrack);
+        console.log('FastTrack hash is %s', fastTrackHash);
+
+        const proposalIdx = Number(await api.query.techCommitteeCollective.proposalCount()) - 1;
+        const tx6 = api.tx.techCommitteeCollective.vote(fastTrackHash, proposalIdx, true);
+        {
+          const events6 = await submitTransactionAsync(baltatharAccount, tx6);
+          const result6 = getGenericResult(events6);
+          expect(result6.success).to.be.true;
+        }
+        {
+          const events6 = await submitTransactionAsync(alithAccount, tx6);
+          const result6 = getGenericResult(events6);
+          expect(result6.success).to.be.true;
+        }
+
+        const tx7 = api.tx.techCommitteeCollective
+          .close(fastTrackHash, proposalIdx, 1_000_000_000, fastTrack.encodedLength);
+        const events7 = await submitTransactionAsync(baltatharAccount, tx7);
+        const result7 = getGenericResult(events7);
+        expect(result7.success).to.be.true;
+        // <<< Fast track proposal through technical committee <<<
+
+        // >>> Referendum voting >>>
+        const tx8 = api.tx.democracy.vote(
+          0,
+          {Standard: {balance: 10_000_000_000_000_000_000n, vote: {aye: true, conviction: 1}}},
+        );
+        const events8 = await submitTransactionAsync(dorothyAccount, tx8);
+        const result8 = getGenericResult(events8);
+        expect(result8.success).to.be.true;
+        // <<< Referendum voting <<<
+
+        // >>> Sponsoring random Account >>>
+        const tx9 = api.tx.balances.transfer(randomAccountMoonbeam.address, 11_000_000_000_000_000_000n);
+        const events9 = await submitTransactionAsync(baltatharAccount, tx9);
+        const result9 = getGenericResult(events9);
+        expect(result9.success).to.be.true;
+        // <<< Sponsoring random Account <<<
+
+        [balanceGlmrTokenBefore] = await getBalance(api, [randomAccountMoonbeam.address]);
+      },
+      moonbeamApiOptions,
+    );
+
+    await usingApi(async (api) => {
+      const tx0 = api.tx.balances.transfer(randomAccountUnique.address, 10n * TRANSFER_AMOUNT);
+      const events0 = await submitTransactionAsync(uniqueAlice, tx0);
+      const result0 = getGenericResult(events0);
+      expect(result0.success).to.be.true;
+
+      [balanceUniqueTokenBefore] = await getBalance(api, [randomAccountUnique.address]);
+    });
+  });
+
+  it('Should connect and send UNQ to Moonbeam', async () => {
+    await usingApi(async (api) => {
+      const currencyId = {
+        NativeAssetId: 'Here',
+      };
+      const dest = {
+        V1: {
+          parents: 1,
+          interior: {
+            X2: [
+              {Parachain: MOONBEAM_CHAIN},
+              {AccountKey20: {network: 'Any', key: randomAccountMoonbeam.address}},
+            ],
+          },
+        },
+      };
+      const amount = TRANSFER_AMOUNT;
+      const destWeight = 50000000;
+
+      const tx = api.tx.xTokens.transfer(currencyId, amount, dest, destWeight);
+      const events = await submitTransactionAsync(uniqueAlice, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+
+      [balanceUniqueTokenAfter] = await getBalance(api, [randomAccountUnique.address]);
+      expect(balanceUniqueTokenAfter < balanceUniqueTokenBefore).to.be.true;
+
+      const transactionFees = balanceUniqueTokenBefore - balanceUniqueTokenAfter - TRANSFER_AMOUNT;
+      console.log('Unique to Moonbeam transaction fees on Unique: %s UNQ', transactionFees);
+      expect(transactionFees > 0).to.be.true;
+    });
+
+    await usingApi(
+      async (api) => {
+        // todo do something about instant sealing, where there might not be any new blocks
+        await waitNewBlocks(api, 3);
+
+        [balanceGlmrTokenAfter] = await getBalance(api, [randomAccountMoonbeam.address]);
+
+        const glmrFees = balanceGlmrTokenBefore - balanceGlmrTokenAfter;
+        console.log('Unique to Moonbeam transaction fees on Moonbeam: %s GLMR', glmrFees);
+        expect(glmrFees == 0n).to.be.true;
+      },
+      {provider: new WsProvider('ws://127.0.0.1:' + MOONBEAM_PORT)},
+    );
+  });
+
+  it('Should connect to Moonbeam and send UNQ back', async () => {
+    await usingApi(
+      async (api) => {
+        const amount = TRANSFER_AMOUNT / 2n;
+        const asset = {
+          V1: {
+            id: {
+              Concrete: {
+                parents: 1,
+                interior: {
+                  X1: {Parachain: UNIQUE_CHAIN},
+                },
+              },
+            },
+            fun: {
+              Fungible: amount,
+            },
+          },
+        };
+        const destination = {
+          V1: {
+            parents: 1,
+            interior: {
+              X2: [
+                {Parachain: UNIQUE_CHAIN},
+                {AccountId32: {network: 'Any', id: randomAccountUnique.addressRaw}},
+              ],
+            },
+          },
+        };
+        const destWeight = 50000000;
+
+        const tx = api.tx.xTokens.transferMultiasset(asset, destination, destWeight);
+        const events = await submitTransactionAsync(randomAccountMoonbeam, tx);
+        const result = getGenericResult(events);
+        expect(result.success).to.be.true;
+
+        [balanceGlmrTokenFinal] = await getBalance(api, [randomAccountMoonbeam.address]);
+
+        const glmrFees = balanceGlmrTokenAfter - balanceGlmrTokenFinal;
+        console.log('Moonbeam to Unique transaction fees on Moonbeam: %s GLMR', glmrFees);
+        expect(glmrFees > 0).to.be.true;
+      },
+      {provider: new WsProvider('ws://127.0.0.1:' + MOONBEAM_PORT)},
+    );
+
+    await usingApi(async (api) => {
+      // todo do something about instant sealing, where there might not be any new blocks
+      await waitNewBlocks(api, 3);
+
+      [balanceUniqueTokenFinal] = await getBalance(api, [randomAccountUnique.address]);
+      const actuallyDelivered = balanceUniqueTokenFinal - balanceUniqueTokenAfter;
+      expect(actuallyDelivered > 0).to.be.true;
+
+      const unqFees = TRANSFER_AMOUNT - actuallyDelivered;
+      console.log('Moonbeam to Unique transaction fees on Unique: %s UNQ', unqFees);
+      expect(unqFees > 0).to.be.true;
+    });
+  });
+});
addedtests/src/xcm/xcmTransferStatemine.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/xcm/xcmTransferStatemine.test.ts
@@ -0,0 +1,360 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+
+import {WsProvider} from '@polkadot/api';
+import {ApiOptions} from '@polkadot/api/types';
+import {IKeyringPair} from '@polkadot/types/types';
+import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
+import {getGenericResult} from './util/helpers';
+import waitNewBlocks from './substrate/wait-new-blocks';
+import {normalizeAccountId} from './util/helpers';
+import getBalance from './substrate/get-balance';
+
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+// const STATEMINE_CHAIN = 1000;
+// const UNIQUE_CHAIN = 2037;
+
+let UNIQUE_CHAIN = 0;
+let STATEMINE_CHAIN = 0;
+
+// parse parachain id numbers
+process.argv.forEach((val) => {
+
+  const ai = val.indexOf('statemineId=');
+  const ui = val.indexOf('uniqueId=');
+  if (ai != -1)
+  {
+    STATEMINE_CHAIN = Number(val.substring('statemineId='.length));
+  }
+  if (ui != -1)
+  {
+    UNIQUE_CHAIN = Number(val.substring('uniqueId='.length));
+  }
+});
+
+const RELAY_PORT = '9844';
+const UNIQUE_PORT = '9944';
+const STATEMINE_PORT = '9946';
+const STATEMINE_PALLET_INSTANCE = 50;
+const ASSET_ID = 100;
+const ASSET_METADATA_DECIMALS = 18;
+const ASSET_METADATA_NAME = 'USDT';
+const ASSET_METADATA_DESCRIPTION = 'USDT';
+const ASSET_METADATA_MINIMAL_BALANCE = 1;
+
+const TRANSFER_AMOUNT = 1_000_000_000_000_000_000n;
+const TRANSFER_AMOUNT2 = 10_000_000_000_000_000n;
+
+describe('Integration test: Exchanging USDT with Statemine', () => {
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  
+  let balanceStmnBefore: bigint;
+  let balanceStmnAfter: bigint;
+  let balanceStmnFinal: bigint;
+
+  before(async () => {
+    await usingApi(async (api, privateKeyWrapper) => {
+      alice = privateKeyWrapper('//Alice');
+      bob = privateKeyWrapper('//Bob'); // funds donor
+    });
+
+    const statemineApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + STATEMINE_PORT),
+    };
+
+    const uniqueApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + UNIQUE_PORT),
+    };
+
+    const relayApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + RELAY_PORT),
+    };
+
+    await usingApi(async (api) => {
+
+      // 10,000.00 (ten thousands) USDT
+      const assetAmount = 1_000_000_000_000_000_000_000n; 
+      // 350.00 (three hundred fifty) DOT
+      const fundingAmount = 3_500_000_000_000; 
+
+      const tx = api.tx.assets.create(ASSET_ID, alice.addressRaw, ASSET_METADATA_MINIMAL_BALANCE);
+      const events = await submitTransactionAsync(alice, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+
+      // set metadata
+      const tx2 = api.tx.assets.setMetadata(ASSET_ID, ASSET_METADATA_NAME, ASSET_METADATA_DESCRIPTION, ASSET_METADATA_DECIMALS);
+      const events2 = await submitTransactionAsync(alice, tx2);
+      const result2 = getGenericResult(events2);
+      expect(result2.success).to.be.true;
+
+      // mint some amount of asset
+      const tx3 = api.tx.assets.mint(ASSET_ID, alice.addressRaw, assetAmount);
+      const events3 = await submitTransactionAsync(alice, tx3);
+      const result3 = getGenericResult(events3);
+      expect(result3.success).to.be.true;
+
+      // funding parachain sovereing account (Parachain: 2037)
+      //const parachainSovereingAccount = '0x70617261f5070000000000000000000000000000000000000000000000000000';
+      const parachainSovereingAccount = '0x7369626cf5070000000000000000000000000000000000000000000000000000';
+      const tx4 = api.tx.balances.transfer(parachainSovereingAccount, fundingAmount);
+      const events4 = await submitTransactionAsync(bob, tx4);
+      const result4 = getGenericResult(events4);
+      expect(result4.success).to.be.true;
+
+    }, statemineApiOptions);
+
+
+    await usingApi(async (api) => {
+
+      const location = {
+        V1: {
+          parents: 1,
+          interior: {X3: [
+            {
+              Parachain: STATEMINE_CHAIN,
+            },
+            {
+              PalletInstance: STATEMINE_PALLET_INSTANCE,
+            },
+            {
+              GeneralIndex: ASSET_ID,
+            },
+          ]},
+        },
+      };
+
+      const metadata =
+      {
+        name: ASSET_ID,
+        symbol: ASSET_METADATA_NAME,
+        decimals: ASSET_METADATA_DECIMALS,
+        minimalBalance: ASSET_METADATA_MINIMAL_BALANCE,
+      };
+      //registerForeignAsset(owner, location, metadata)
+      const tx = api.tx.foreingAssets.registerForeignAsset(alice.addressRaw, location, metadata);
+      const sudoTx = api.tx.sudo.sudo(tx as any);
+      const events = await submitTransactionAsync(alice, sudoTx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+
+    }, uniqueApiOptions);
+
+
+    // Providing the relay currency to the unique sender account
+    await usingApi(async (api) => {
+      const destination = {
+        V1: {
+          parents: 0,
+          interior: {X1: {
+            Parachain: UNIQUE_CHAIN,
+          },
+          },
+        }};
+
+      const beneficiary = {
+        V1: {
+          parents: 0,
+          interior: {X1: {
+            AccountId32: {
+              network: 'Any',
+              id: alice.addressRaw,
+            },
+          }},
+        },
+      };
+
+      const assets = {
+        V1: [
+          {
+            id: {
+              Concrete: {
+                parents: 0,
+                interior: 'Here',
+              },
+            },
+            fun: {
+              Fungible: 50_000_000_000_000_000n,
+            },
+          },
+        ],
+      };
+
+      const feeAssetItem = 0;
+
+      const weightLimit = {
+        Limited: 5_000_000_000,
+      };
+
+      const tx = api.tx.xcmPallet.limitedReserveTransferAssets(destination, beneficiary, assets, feeAssetItem, weightLimit);
+      const events = await submitTransactionAsync(alice, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+    }, relayApiOptions);
+  
+  });
+
+  it('Should connect and send USDT from Statemine to Unique', async () => {
+    
+    const statemineApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + STATEMINE_PORT),
+    };
+
+    const uniqueApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + UNIQUE_PORT),
+    };
+
+    await usingApi(async (api) => {
+
+      const dest = {
+        V1: {
+          parents: 1,
+          interior: {X1: {
+            Parachain: UNIQUE_CHAIN,
+          },
+          },
+        }};
+
+      const beneficiary = {
+        V1: {
+          parents: 0,
+          interior: {X1: {
+            AccountId32: {
+              network: 'Any',
+              id: alice.addressRaw,
+            },
+          }},
+        },
+      };
+
+      const assets = {
+        V1: [
+          {
+            id: {
+              Concrete: {
+                parents: 0,
+                interior: {
+                  X2: [
+                    {
+                      PalletInstance: STATEMINE_PALLET_INSTANCE,
+                    },
+                    {
+                      GeneralIndex: ASSET_ID,
+                    }, 
+                  ]},
+              },
+            },
+            fun: {
+              Fungible: TRANSFER_AMOUNT,
+            },
+          },
+        ],
+      };
+
+      const feeAssetItem = 0;
+
+      const weightLimit = {
+        Limited: 5000000000,
+      };
+
+      [balanceStmnBefore] = await getBalance(api, [alice.address]);
+
+      const tx = api.tx.polkadotXcm.limitedReserveTransferAssets(dest, beneficiary, assets, feeAssetItem, weightLimit);
+      const events = await submitTransactionAsync(alice, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+
+      [balanceStmnAfter] = await getBalance(api, [alice.address]);
+      expect(balanceStmnBefore > balanceStmnAfter).to.be.true;
+
+    }, statemineApiOptions);
+
+
+    // ensure that asset has been delivered
+    await usingApi(async (api) => {
+      await waitNewBlocks(api, 3);
+      // expext collection id will be with id 1
+      const free = (await api.query.fungible.balance(1, normalizeAccountId(alice.address))).toBigInt();
+      expect(free == TRANSFER_AMOUNT).to.be.true;
+
+    }, uniqueApiOptions);
+  });
+
+  it('Should connect and send USDT from Unique to Statemine back', async () => {
+    let balanceBefore: bigint;
+    const uniqueApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + UNIQUE_PORT),
+    };
+
+    await usingApi(async (api) => {
+      balanceBefore = (await api.query.fungible.balance(1, normalizeAccountId(alice.address))).toBigInt();
+
+      const destination = {
+        V1: {
+          parents: 1,
+          interior: {X2: [
+            {
+              Parachain: STATEMINE_CHAIN,
+            },
+            {
+              AccountId32: {
+                network: 'Any',
+                id: alice.addressRaw,
+              },
+            },
+          ]},
+        },
+      };
+
+      const currencies = [[
+        {
+          ForeignAssetId: 0,
+        },
+        10_000_000_000_000_000n,
+      ], 
+      [
+        {
+          NativeAssetId: 'Parent',
+        },
+        400_000_000_000_000n,
+      ]];
+
+      const feeItem = 1;
+      const destWeight = 500000000000;
+
+      const tx = api.tx.xTokens.transferMulticurrencies(currencies, feeItem, destination, destWeight);
+      const events = await submitTransactionAsync(alice, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+
+      
+      [balanceStmnFinal] = await getBalance(api, [alice.address]);
+      expect(balanceStmnFinal > balanceStmnBefore).to.be.true;
+
+      // todo do something about instant sealing, where there might not be any new blocks
+      await waitNewBlocks(api, 3);
+      const balanceAfter = (await api.query.fungible.balance(1, normalizeAccountId(alice.address))).toBigInt();
+      expect(balanceAfter < balanceBefore).to.be.true;
+    }, uniqueApiOptions);
+  });
+});
\ No newline at end of file
addedtests/src/xcm/xcmUnique.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/xcm/xcmUnique.test.ts
@@ -0,0 +1,267 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+
+import {WsProvider} from '@polkadot/api';
+import {ApiOptions} from '@polkadot/api/types';
+import {IKeyringPair} from '@polkadot/types/types';
+import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
+import {getGenericResult, generateKeyringPair} from '../util/helpers';
+import waitNewBlocks from '../substrate/wait-new-blocks';
+import getBalance from '../substrate/get-balance';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+const UNIQUE_CHAIN = 2037;
+const ACALA_CHAIN = 2000;
+
+const ACALA_PORT = '9946';
+
+const TRANSFER_AMOUNT = 2000000000000000000000000n;
+
+describe('Integration test: Exchanging UNQ with Acala', () => {
+  let alice: IKeyringPair;
+  let randomAccount: IKeyringPair;
+  
+  let balanceUniqueTokenBefore: bigint;
+  let balanceUniqueTokenAfter: bigint;
+  let balanceUniqueTokenFinal: bigint;
+  let balanceAcalaTokenBefore: bigint;
+  let balanceAcalaTokenAfter: bigint;
+  let balanceAcalaTokenFinal: bigint;
+  let balanceUniqueForeignTokenAfter: bigint;
+  let balanceUniqueForeignTokenBefore: bigint;
+  let balanceUniqueForeignTokenFinal: bigint;
+  
+  before(async () => {
+    await usingApi(async (api, privateKeyWrapper) => {
+      alice = privateKeyWrapper('//Alice');
+      randomAccount = generateKeyringPair();
+    });
+  
+    const acalaApiOptions: ApiOptions = {
+      provider: new WsProvider('ws://127.0.0.1:' + ACALA_PORT),
+    };
+  
+    // Acala side
+    await usingApi(
+      async (api) => {
+        const destination = {
+          V0: {
+            X2: [
+              'Parent',
+              {
+                Parachain: UNIQUE_CHAIN,
+              },
+            ],
+          },
+        };
+  
+        const metadata = {
+          name: 'UNQ',
+          symbol: 'UNQ',
+          decimals: 18,
+          minimalBalance: 1,
+        };
+  
+        const tx = api.tx.assetRegistry.registerForeignAsset(destination, metadata);
+        const sudoTx = api.tx.sudo.sudo(tx as any);
+        const events = await submitTransactionAsync(alice, sudoTx);
+        const result = getGenericResult(events);
+        expect(result.success).to.be.true;
+  
+        const tx1 = api.tx.balances.transfer(randomAccount.address, 10000000000000n);
+        const events1 = await submitTransactionAsync(alice, tx1);
+        const result1 = getGenericResult(events1);
+        expect(result1.success).to.be.true;
+  
+        [balanceAcalaTokenBefore] = await getBalance(api, [randomAccount.address]);
+        {
+          const {free} = (await api.query.tokens.accounts(randomAccount.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+          balanceUniqueForeignTokenBefore = BigInt(free);
+        }
+      },
+      acalaApiOptions,
+    );
+  
+    // Unique side
+    await usingApi(async (api) => {
+      const tx0 = api.tx.balances.transfer(randomAccount.address, 10n * TRANSFER_AMOUNT);
+      const events0 = await submitTransactionAsync(alice, tx0);
+      const result0 = getGenericResult(events0);
+      expect(result0.success).to.be.true;
+  
+      [balanceUniqueTokenBefore] = await getBalance(api, [randomAccount.address]);
+    });
+  });
+  
+  it('Should connect and send UNQ to Acala', async () => {
+  
+    // Unique side
+    await usingApi(async (api) => {
+  
+      const destination = {
+        V0: {
+          X2: [
+            'Parent',
+            {
+              Parachain: ACALA_CHAIN,
+            },
+          ],
+        },
+      };
+  
+      const beneficiary = {
+        V0: {
+          X1: {
+            AccountId32: {
+              network: 'Any',
+              id: randomAccount.addressRaw,
+            },
+          },
+        },
+      };
+  
+      const assets = {
+        V1: [
+          {
+            id: {
+              Concrete: {
+                parents: 0,
+                interior: 'Here',
+              },
+            },
+            fun: {
+              Fungible: TRANSFER_AMOUNT,
+            },
+          },
+        ],
+      };
+  
+      const feeAssetItem = 0;
+  
+      const weightLimit = {
+        Limited: 5000000000,
+      };
+  
+      const tx = api.tx.polkadotXcm.limitedReserveTransferAssets(destination, beneficiary, assets, feeAssetItem, weightLimit);
+      const events = await submitTransactionAsync(randomAccount, tx);
+      const result = getGenericResult(events);
+      expect(result.success).to.be.true;
+  
+      [balanceUniqueTokenAfter] = await getBalance(api, [randomAccount.address]);
+  
+      const unqFees = balanceUniqueTokenBefore - balanceUniqueTokenAfter;
+      console.log('[Unique -> Acala] transaction fees on Unique: %s UNQ', unqFees);
+      expect(unqFees > 0n).to.be.true;
+    });
+  
+    // Acala side
+    await usingApi(
+      async (api) => {
+        // todo do something about instant sealing, where there might not be any new blocks
+        await waitNewBlocks(api, 3);
+        const {free} = (await api.query.tokens.accounts(randomAccount.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+        balanceUniqueForeignTokenAfter = BigInt(free);
+  
+        [balanceAcalaTokenAfter] = await getBalance(api, [randomAccount.address]);
+
+        const acaFees = balanceAcalaTokenBefore - balanceAcalaTokenAfter;
+        const unqDiffAfterIncomeTransfer = balanceUniqueForeignTokenAfter - balanceUniqueForeignTokenBefore;
+
+        const unqFees = unqDiffAfterIncomeTransfer - TRANSFER_AMOUNT;
+
+        console.log('[Unique -> Acala] transaction fees on Acala: %s ACA', acaFees);
+        console.log('[Unique -> Acala] transaction fees on Acala: %s UNQ', unqFees);
+        expect(acaFees == 0n).to.be.true;
+        expect(unqFees == 0n).to.be.true;
+      },
+      {provider: new WsProvider('ws://127.0.0.1:' + ACALA_PORT)},
+    );
+  });
+  
+  it('Should connect to Acala and send UNQ back', async () => {
+  
+    // Acala side
+    await usingApi(
+      async (api) => {
+        const destination = {
+          V1: {
+            parents: 1,
+            interior: {
+              X2: [
+                {Parachain: UNIQUE_CHAIN},
+                {
+                  AccountId32: {
+                    network: 'Any',
+                    id: randomAccount.addressRaw,
+                  },
+                },
+              ],
+            },
+          },
+        };
+  
+        const id = {
+          ForeignAsset: 0,
+        };
+  
+        const amount = TRANSFER_AMOUNT;
+        const destWeight = 50000000;
+  
+        const tx = api.tx.xTokens.transfer(id, amount, destination, destWeight);
+        const events = await submitTransactionAsync(randomAccount, tx);
+        const result = getGenericResult(events);
+        expect(result.success).to.be.true;
+  
+        [balanceAcalaTokenFinal] = await getBalance(api, [randomAccount.address]);
+        {
+          const {free} = (await api.query.tokens.accounts(randomAccount.addressRaw, {ForeignAsset: 0})).toJSON() as any;
+          balanceUniqueForeignTokenFinal = BigInt(free);
+        }
+  
+        const acaFees = balanceAcalaTokenAfter - balanceAcalaTokenFinal;
+        const unqDiffAfterOutcomeTransfer = balanceUniqueForeignTokenAfter - TRANSFER_AMOUNT;
+
+        const unqFees = unqDiffAfterOutcomeTransfer - balanceUniqueForeignTokenFinal;
+
+        console.log('[Acala -> Unique] transaction fees on Acala: %s ACA', acaFees);
+        console.log('[Acala -> Unique] transaction fees on Acala: %s UNQ', unqFees);
+
+        expect(acaFees > 0).to.be.true;
+        expect(unqFees == 0n).to.be.true;
+      },
+      {provider: new WsProvider('ws://127.0.0.1:' + ACALA_PORT)},
+    );
+
+    // Unique side
+    await usingApi(async (api) => {
+      // todo do something about instant sealing, where there might not be any new blocks
+      await waitNewBlocks(api, 3);
+  
+      [balanceUniqueTokenFinal] = await getBalance(api, [randomAccount.address]);
+      const actuallyDelivered = balanceUniqueTokenFinal - balanceUniqueTokenAfter;
+      expect(actuallyDelivered > 0).to.be.true;
+  
+      const unqFees = TRANSFER_AMOUNT - actuallyDelivered;
+      console.log('[Acala -> Unique] transaction fees on Unique: %s UNQ', unqFees);
+      expect(unqFees == 0n).to.be.true;
+    });
+  });
+});
deletedtests/src/xcmTransfer.test.tsdiffbeforeafterboth
--- a/tests/src/xcmTransfer.test.ts
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-import chai from 'chai';
-import chaiAsPromised from 'chai-as-promised';
-
-import {WsProvider} from '@polkadot/api';
-import {ApiOptions} from '@polkadot/api/types';
-import {IKeyringPair} from '@polkadot/types/types';
-import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
-import {getGenericResult} from './util/helpers';
-import waitNewBlocks from './substrate/wait-new-blocks';
-import getBalance from './substrate/get-balance';
-
-chai.use(chaiAsPromised);
-const expect = chai.expect;
-
-const UNIQUE_CHAIN = 1000;
-const KARURA_CHAIN = 2000;
-const KARURA_PORT = '9946';
-const TRANSFER_AMOUNT = 2000000000000000000000000n;
-
-describe.skip('Integration test: Exchanging QTZ with Karura', () => {
-  let alice: IKeyringPair;
-
-  before(async () => {
-    await usingApi(async (api, privateKeyWrapper) => {
-      alice = privateKeyWrapper('//Alice');
-    });
-
-    const karuraApiOptions: ApiOptions = {
-      provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT),
-    };
-
-    await usingApi(async (api) => {
-      const destination = {
-        V0: {
-          X2: [
-            'Parent',
-            {
-              Parachain: UNIQUE_CHAIN,
-            },
-          ],
-        },
-      };
-
-      const metadata =
-      {
-        name: 'QTZ',
-        symbol: 'QTZ',
-        decimals: 18,
-        minimalBalance: 1,
-      };
-
-      const tx = api.tx.assetRegistry.registerForeignAsset(destination, metadata);
-      const sudoTx = api.tx.sudo.sudo(tx as any);
-      const events = await submitTransactionAsync(alice, sudoTx);
-      const result = getGenericResult(events);
-      expect(result.success).to.be.true;
-    }, karuraApiOptions);
-  });
-
-  it('Should connect and send QTZ to Karura', async () => {
-    let balanceOnKaruraBefore: bigint;
-
-    await usingApi(async (api) => {
-      const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAsset: 0})).toJSON() as any;
-      balanceOnKaruraBefore = free;
-    }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
-
-    await usingApi(async (api) => {
-      const destination = {
-        V0: {
-          X2: [
-            'Parent',
-            {
-              Parachain: KARURA_CHAIN,
-            },
-          ],
-        },
-      };
-
-      const beneficiary = {
-        V0: {
-          X1: {
-            AccountId32: {
-              network: 'Any',
-              id: alice.addressRaw,
-            },
-          },
-        },
-      };
-
-      const assets = {
-        V1: [
-          {
-            id: {
-              Concrete: {
-                parents: 0,
-                interior: 'Here',
-              },
-            },
-            fun: {
-              Fungible: TRANSFER_AMOUNT,
-            },
-          },
-        ],
-      };
-
-      const feeAssetItem = 0;
-
-      const weightLimit = {
-        Limited: 5000000000,
-      };
-
-      const tx = api.tx.polkadotXcm.limitedReserveTransferAssets(destination, beneficiary, assets, feeAssetItem, weightLimit);
-      const events = await submitTransactionAsync(alice, tx);
-      const result = getGenericResult(events);
-      expect(result.success).to.be.true;
-    });
-
-    await usingApi(async (api) => {
-      // todo do something about instant sealing, where there might not be any new blocks
-      await waitNewBlocks(api, 3);
-      const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAsset: 0})).toJSON() as any;
-      expect(free > balanceOnKaruraBefore).to.be.true;
-    }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
-  });
-
-  it('Should connect to Karura and send QTZ back', async () => {
-    let balanceBefore: bigint;
-
-    await usingApi(async (api) => {
-      [balanceBefore] = await getBalance(api, [alice.address]);
-    });
-
-    await usingApi(async (api) => {
-      const destination = {
-        V1: {
-          parents: 1,
-          interior: {
-            X2: [
-              {Parachain: UNIQUE_CHAIN},
-              {AccountId32: {
-                network: 'Any',
-                id: alice.addressRaw,
-              }},
-            ],
-          },
-        },
-      };
-
-      const id = {
-        ForeignAsset: 0,
-      };
-
-      const amount = TRANSFER_AMOUNT;
-      const destWeight = 50000000;
-
-      const tx = api.tx.xTokens.transfer(id, amount, destination, destWeight);
-      const events = await submitTransactionAsync(alice, tx);
-      const result = getGenericResult(events);
-      expect(result.success).to.be.true;
-    }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
-
-    await usingApi(async (api) => {
-      // todo do something about instant sealing, where there might not be any new blocks
-      await waitNewBlocks(api, 3);
-      const [balanceAfter] = await getBalance(api, [alice.address]);
-      expect(balanceAfter > balanceBefore).to.be.true;
-    });
-  });
-});