difftreelog
Merge remote-tracking branch 'origin/feature/multi-assets-redone' into XCM-CI-RUN-TESTS
in: master
51 files changed
.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
+
+
.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
.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
-
.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"
.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"
.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
.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
.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
+
.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
.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
Cargo.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",
node/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,
},
)
}
pallets/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"]
pallets/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)
+ }
+ }
+ }
+}
pallets/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));
+ }
+}
pallets/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
pallets/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,
runtime/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 = ();
+}
runtime/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;
runtime/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;
runtime/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,
runtime/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
runtime/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";
runtime/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;
+}
runtime/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
runtime/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";
runtime/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()
+ }
+}
runtime/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
runtime/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";
runtime/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
tests/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",
tests/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,
tests/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
tests/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
tests/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
tests/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, []>;
tests/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
**/
tests/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
tests/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';
tests/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;
tests/src/interfaces/default/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -747,6 +747,163 @@
/** @name OpalRuntimeRuntime */
export interface OpalRuntimeRuntime extends Null {}
+/** @name OrmlTokensAccountData */
+export interface OrmlTokensAccountData extends Struct {
+ readonly free: u128;
+ readonly reserved: u128;
+ readonly frozen: u128;
+}
+
+/** @name OrmlTokensBalanceLock */
+export interface OrmlTokensBalanceLock extends Struct {
+ readonly id: U8aFixed;
+ readonly amount: u128;
+}
+
+/** @name OrmlTokensModuleCall */
+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 OrmlTokensModuleError */
+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 OrmlTokensModuleEvent */
+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 OrmlTokensReserveData */
+export interface OrmlTokensReserveData extends Struct {
+ readonly id: Null;
+ readonly amount: u128;
+}
+
/** @name OrmlVestingModuleCall */
export interface OrmlVestingModuleCall extends Enum {
readonly isClaim: boolean;
@@ -806,6 +963,89 @@
readonly perPeriod: Compact<u128>;
}
+/** @name OrmlXtokensModuleCall */
+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 OrmlXtokensModuleError */
+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 OrmlXtokensModuleEvent */
+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 PalletBalancesAccountData */
export interface PalletBalancesAccountData extends Struct {
readonly free: u128;
@@ -1194,6 +1434,83 @@
readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
}
+/** @name PalletForeingAssetsAssetIds */
+export interface PalletForeingAssetsAssetIds extends Enum {
+ readonly isForeignAssetId: boolean;
+ readonly asForeignAssetId: u32;
+ readonly isNativeAssetId: boolean;
+ readonly asNativeAssetId: PalletForeingAssetsNativeCurrency;
+ readonly type: 'ForeignAssetId' | 'NativeAssetId';
+}
+
+/** @name PalletForeingAssetsModuleAssetMetadata */
+export interface PalletForeingAssetsModuleAssetMetadata extends Struct {
+ readonly name: Bytes;
+ readonly symbol: Bytes;
+ readonly decimals: u8;
+ readonly minimalBalance: u128;
+}
+
+/** @name PalletForeingAssetsModuleCall */
+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 PalletForeingAssetsModuleError */
+export interface PalletForeingAssetsModuleError extends Enum {
+ readonly isBadLocation: boolean;
+ readonly isMultiLocationExisted: boolean;
+ readonly isAssetIdNotExists: boolean;
+ readonly isAssetIdExisted: boolean;
+ readonly type: 'BadLocation' | 'MultiLocationExisted' | 'AssetIdNotExists' | 'AssetIdExisted';
+}
+
+/** @name PalletForeingAssetsModuleEvent */
+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 PalletForeingAssetsNativeCurrency */
+export interface PalletForeingAssetsNativeCurrency extends Enum {
+ readonly isHere: boolean;
+ readonly isParent: boolean;
+ readonly type: 'Here' | 'Parent';
+}
+
/** @name PalletFungibleError */
export interface PalletFungibleError extends Enum {
readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
@@ -3362,6 +3679,15 @@
/** @name XcmV2Xcm */
export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}
+/** @name XcmVersionedMultiAsset */
+export interface XcmVersionedMultiAsset extends Enum {
+ readonly isV0: boolean;
+ readonly asV0: XcmV0MultiAsset;
+ readonly isV1: boolean;
+ readonly asV1: XcmV1MultiAsset;
+ readonly type: 'V0' | 'V1';
+}
+
/** @name XcmVersionedMultiAssets */
export interface XcmVersionedMultiAssets extends Enum {
readonly isV0: boolean;
tests/src/interfaces/lookup.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34/* eslint-disable sort-keys */56export default {7 /**8 * Lookup3: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>9 **/10 FrameSystemAccountInfo: {11 nonce: 'u32',12 consumers: 'u32',13 providers: 'u32',14 sufficients: 'u32',15 data: 'PalletBalancesAccountData'16 },17 /**18 * Lookup5: pallet_balances::AccountData<Balance>19 **/20 PalletBalancesAccountData: {21 free: 'u128',22 reserved: 'u128',23 miscFrozen: 'u128',24 feeFrozen: 'u128'25 },26 /**27 * Lookup7: frame_support::weights::PerDispatchClass<T>28 **/29 FrameSupportWeightsPerDispatchClassU64: {30 normal: 'u64',31 operational: 'u64',32 mandatory: 'u64'33 },34 /**35 * Lookup11: sp_runtime::generic::digest::Digest36 **/37 SpRuntimeDigest: {38 logs: 'Vec<SpRuntimeDigestDigestItem>'39 },40 /**41 * Lookup13: sp_runtime::generic::digest::DigestItem42 **/43 SpRuntimeDigestDigestItem: {44 _enum: {45 Other: 'Bytes',46 __Unused1: 'Null',47 __Unused2: 'Null',48 __Unused3: 'Null',49 Consensus: '([u8;4],Bytes)',50 Seal: '([u8;4],Bytes)',51 PreRuntime: '([u8;4],Bytes)',52 __Unused7: 'Null',53 RuntimeEnvironmentUpdated: 'Null'54 }55 },56 /**57 * Lookup16: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>58 **/59 FrameSystemEventRecord: {60 phase: 'FrameSystemPhase',61 event: 'Event',62 topics: 'Vec<H256>'63 },64 /**65 * Lookup18: frame_system::pallet::Event<T>66 **/67 FrameSystemEvent: {68 _enum: {69 ExtrinsicSuccess: {70 dispatchInfo: 'FrameSupportWeightsDispatchInfo',71 },72 ExtrinsicFailed: {73 dispatchError: 'SpRuntimeDispatchError',74 dispatchInfo: 'FrameSupportWeightsDispatchInfo',75 },76 CodeUpdated: 'Null',77 NewAccount: {78 account: 'AccountId32',79 },80 KilledAccount: {81 account: 'AccountId32',82 },83 Remarked: {84 _alias: {85 hash_: 'hash',86 },87 sender: 'AccountId32',88 hash_: 'H256'89 }90 }91 },92 /**93 * Lookup19: frame_support::weights::DispatchInfo94 **/95 FrameSupportWeightsDispatchInfo: {96 weight: 'u64',97 class: 'FrameSupportWeightsDispatchClass',98 paysFee: 'FrameSupportWeightsPays'99 },100 /**101 * Lookup20: frame_support::weights::DispatchClass102 **/103 FrameSupportWeightsDispatchClass: {104 _enum: ['Normal', 'Operational', 'Mandatory']105 },106 /**107 * Lookup21: frame_support::weights::Pays108 **/109 FrameSupportWeightsPays: {110 _enum: ['Yes', 'No']111 },112 /**113 * Lookup22: sp_runtime::DispatchError114 **/115 SpRuntimeDispatchError: {116 _enum: {117 Other: 'Null',118 CannotLookup: 'Null',119 BadOrigin: 'Null',120 Module: 'SpRuntimeModuleError',121 ConsumerRemaining: 'Null',122 NoProviders: 'Null',123 TooManyConsumers: 'Null',124 Token: 'SpRuntimeTokenError',125 Arithmetic: 'SpRuntimeArithmeticError',126 Transactional: 'SpRuntimeTransactionalError'127 }128 },129 /**130 * Lookup23: sp_runtime::ModuleError131 **/132 SpRuntimeModuleError: {133 index: 'u8',134 error: '[u8;4]'135 },136 /**137 * Lookup24: sp_runtime::TokenError138 **/139 SpRuntimeTokenError: {140 _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']141 },142 /**143 * Lookup25: sp_runtime::ArithmeticError144 **/145 SpRuntimeArithmeticError: {146 _enum: ['Underflow', 'Overflow', 'DivisionByZero']147 },148 /**149 * Lookup26: sp_runtime::TransactionalError150 **/151 SpRuntimeTransactionalError: {152 _enum: ['LimitReached', 'NoLayer']153 },154 /**155 * Lookup27: cumulus_pallet_parachain_system::pallet::Event<T>156 **/157 CumulusPalletParachainSystemEvent: {158 _enum: {159 ValidationFunctionStored: 'Null',160 ValidationFunctionApplied: {161 relayChainBlockNum: 'u32',162 },163 ValidationFunctionDiscarded: 'Null',164 UpgradeAuthorized: {165 codeHash: 'H256',166 },167 DownwardMessagesReceived: {168 count: 'u32',169 },170 DownwardMessagesProcessed: {171 weightUsed: 'u64',172 dmqHead: 'H256'173 }174 }175 },176 /**177 * Lookup28: pallet_balances::pallet::Event<T, I>178 **/179 PalletBalancesEvent: {180 _enum: {181 Endowed: {182 account: 'AccountId32',183 freeBalance: 'u128',184 },185 DustLost: {186 account: 'AccountId32',187 amount: 'u128',188 },189 Transfer: {190 from: 'AccountId32',191 to: 'AccountId32',192 amount: 'u128',193 },194 BalanceSet: {195 who: 'AccountId32',196 free: 'u128',197 reserved: 'u128',198 },199 Reserved: {200 who: 'AccountId32',201 amount: 'u128',202 },203 Unreserved: {204 who: 'AccountId32',205 amount: 'u128',206 },207 ReserveRepatriated: {208 from: 'AccountId32',209 to: 'AccountId32',210 amount: 'u128',211 destinationStatus: 'FrameSupportTokensMiscBalanceStatus',212 },213 Deposit: {214 who: 'AccountId32',215 amount: 'u128',216 },217 Withdraw: {218 who: 'AccountId32',219 amount: 'u128',220 },221 Slashed: {222 who: 'AccountId32',223 amount: 'u128'224 }225 }226 },227 /**228 * Lookup29: frame_support::traits::tokens::misc::BalanceStatus229 **/230 FrameSupportTokensMiscBalanceStatus: {231 _enum: ['Free', 'Reserved']232 },233 /**234 * Lookup30: pallet_transaction_payment::pallet::Event<T>235 **/236 PalletTransactionPaymentEvent: {237 _enum: {238 TransactionFeePaid: {239 who: 'AccountId32',240 actualFee: 'u128',241 tip: 'u128'242 }243 }244 },245 /**246 * Lookup31: pallet_treasury::pallet::Event<T, I>247 **/248 PalletTreasuryEvent: {249 _enum: {250 Proposed: {251 proposalIndex: 'u32',252 },253 Spending: {254 budgetRemaining: 'u128',255 },256 Awarded: {257 proposalIndex: 'u32',258 award: 'u128',259 account: 'AccountId32',260 },261 Rejected: {262 proposalIndex: 'u32',263 slashed: 'u128',264 },265 Burnt: {266 burntFunds: 'u128',267 },268 Rollover: {269 rolloverBalance: 'u128',270 },271 Deposit: {272 value: 'u128',273 },274 SpendApproved: {275 proposalIndex: 'u32',276 amount: 'u128',277 beneficiary: 'AccountId32'278 }279 }280 },281 /**282 * Lookup32: pallet_sudo::pallet::Event<T>283 **/284 PalletSudoEvent: {285 _enum: {286 Sudid: {287 sudoResult: 'Result<Null, SpRuntimeDispatchError>',288 },289 KeyChanged: {290 oldSudoer: 'Option<AccountId32>',291 },292 SudoAsDone: {293 sudoResult: 'Result<Null, SpRuntimeDispatchError>'294 }295 }296 },297 /**298 * Lookup36: orml_vesting::module::Event<T>299 **/300 OrmlVestingModuleEvent: {301 _enum: {302 VestingScheduleAdded: {303 from: 'AccountId32',304 to: 'AccountId32',305 vestingSchedule: 'OrmlVestingVestingSchedule',306 },307 Claimed: {308 who: 'AccountId32',309 amount: 'u128',310 },311 VestingSchedulesUpdated: {312 who: 'AccountId32'313 }314 }315 },316 /**317 * Lookup37: orml_vesting::VestingSchedule<BlockNumber, Balance>318 **/319 OrmlVestingVestingSchedule: {320 start: 'u32',321 period: 'u32',322 periodCount: 'u32',323 perPeriod: 'Compact<u128>'324 },325 /**326 * Lookup39: cumulus_pallet_xcmp_queue::pallet::Event<T>327 **/328 CumulusPalletXcmpQueueEvent: {329 _enum: {330 Success: {331 messageHash: 'Option<H256>',332 weight: 'u64',333 },334 Fail: {335 messageHash: 'Option<H256>',336 error: 'XcmV2TraitsError',337 weight: 'u64',338 },339 BadVersion: {340 messageHash: 'Option<H256>',341 },342 BadFormat: {343 messageHash: 'Option<H256>',344 },345 UpwardMessageSent: {346 messageHash: 'Option<H256>',347 },348 XcmpMessageSent: {349 messageHash: 'Option<H256>',350 },351 OverweightEnqueued: {352 sender: 'u32',353 sentAt: 'u32',354 index: 'u64',355 required: 'u64',356 },357 OverweightServiced: {358 index: 'u64',359 used: 'u64'360 }361 }362 },363 /**364 * Lookup41: xcm::v2::traits::Error365 **/366 XcmV2TraitsError: {367 _enum: {368 Overflow: 'Null',369 Unimplemented: 'Null',370 UntrustedReserveLocation: 'Null',371 UntrustedTeleportLocation: 'Null',372 MultiLocationFull: 'Null',373 MultiLocationNotInvertible: 'Null',374 BadOrigin: 'Null',375 InvalidLocation: 'Null',376 AssetNotFound: 'Null',377 FailedToTransactAsset: 'Null',378 NotWithdrawable: 'Null',379 LocationCannotHold: 'Null',380 ExceedsMaxMessageSize: 'Null',381 DestinationUnsupported: 'Null',382 Transport: 'Null',383 Unroutable: 'Null',384 UnknownClaim: 'Null',385 FailedToDecode: 'Null',386 MaxWeightInvalid: 'Null',387 NotHoldingFees: 'Null',388 TooExpensive: 'Null',389 Trap: 'u64',390 UnhandledXcmVersion: 'Null',391 WeightLimitReached: 'u64',392 Barrier: 'Null',393 WeightNotComputable: 'Null'394 }395 },396 /**397 * Lookup43: pallet_xcm::pallet::Event<T>398 **/399 PalletXcmEvent: {400 _enum: {401 Attempted: 'XcmV2TraitsOutcome',402 Sent: '(XcmV1MultiLocation,XcmV1MultiLocation,XcmV2Xcm)',403 UnexpectedResponse: '(XcmV1MultiLocation,u64)',404 ResponseReady: '(u64,XcmV2Response)',405 Notified: '(u64,u8,u8)',406 NotifyOverweight: '(u64,u8,u8,u64,u64)',407 NotifyDispatchError: '(u64,u8,u8)',408 NotifyDecodeFailed: '(u64,u8,u8)',409 InvalidResponder: '(XcmV1MultiLocation,u64,Option<XcmV1MultiLocation>)',410 InvalidResponderVersion: '(XcmV1MultiLocation,u64)',411 ResponseTaken: 'u64',412 AssetsTrapped: '(H256,XcmV1MultiLocation,XcmVersionedMultiAssets)',413 VersionChangeNotified: '(XcmV1MultiLocation,u32)',414 SupportedVersionChanged: '(XcmV1MultiLocation,u32)',415 NotifyTargetSendFail: '(XcmV1MultiLocation,u64,XcmV2TraitsError)',416 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'417 }418 },419 /**420 * Lookup44: xcm::v2::traits::Outcome421 **/422 XcmV2TraitsOutcome: {423 _enum: {424 Complete: 'u64',425 Incomplete: '(u64,XcmV2TraitsError)',426 Error: 'XcmV2TraitsError'427 }428 },429 /**430 * Lookup45: xcm::v1::multilocation::MultiLocation431 **/432 XcmV1MultiLocation: {433 parents: 'u8',434 interior: 'XcmV1MultilocationJunctions'435 },436 /**437 * Lookup46: xcm::v1::multilocation::Junctions438 **/439 XcmV1MultilocationJunctions: {440 _enum: {441 Here: 'Null',442 X1: 'XcmV1Junction',443 X2: '(XcmV1Junction,XcmV1Junction)',444 X3: '(XcmV1Junction,XcmV1Junction,XcmV1Junction)',445 X4: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',446 X5: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',447 X6: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',448 X7: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',449 X8: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)'450 }451 },452 /**453 * Lookup47: xcm::v1::junction::Junction454 **/455 XcmV1Junction: {456 _enum: {457 Parachain: 'Compact<u32>',458 AccountId32: {459 network: 'XcmV0JunctionNetworkId',460 id: '[u8;32]',461 },462 AccountIndex64: {463 network: 'XcmV0JunctionNetworkId',464 index: 'Compact<u64>',465 },466 AccountKey20: {467 network: 'XcmV0JunctionNetworkId',468 key: '[u8;20]',469 },470 PalletInstance: 'u8',471 GeneralIndex: 'Compact<u128>',472 GeneralKey: 'Bytes',473 OnlyChild: 'Null',474 Plurality: {475 id: 'XcmV0JunctionBodyId',476 part: 'XcmV0JunctionBodyPart'477 }478 }479 },480 /**481 * Lookup49: xcm::v0::junction::NetworkId482 **/483 XcmV0JunctionNetworkId: {484 _enum: {485 Any: 'Null',486 Named: 'Bytes',487 Polkadot: 'Null',488 Kusama: 'Null'489 }490 },491 /**492 * Lookup53: xcm::v0::junction::BodyId493 **/494 XcmV0JunctionBodyId: {495 _enum: {496 Unit: 'Null',497 Named: 'Bytes',498 Index: 'Compact<u32>',499 Executive: 'Null',500 Technical: 'Null',501 Legislative: 'Null',502 Judicial: 'Null'503 }504 },505 /**506 * Lookup54: xcm::v0::junction::BodyPart507 **/508 XcmV0JunctionBodyPart: {509 _enum: {510 Voice: 'Null',511 Members: {512 count: 'Compact<u32>',513 },514 Fraction: {515 nom: 'Compact<u32>',516 denom: 'Compact<u32>',517 },518 AtLeastProportion: {519 nom: 'Compact<u32>',520 denom: 'Compact<u32>',521 },522 MoreThanProportion: {523 nom: 'Compact<u32>',524 denom: 'Compact<u32>'525 }526 }527 },528 /**529 * Lookup55: xcm::v2::Xcm<Call>530 **/531 XcmV2Xcm: 'Vec<XcmV2Instruction>',532 /**533 * Lookup57: xcm::v2::Instruction<Call>534 **/535 XcmV2Instruction: {536 _enum: {537 WithdrawAsset: 'XcmV1MultiassetMultiAssets',538 ReserveAssetDeposited: 'XcmV1MultiassetMultiAssets',539 ReceiveTeleportedAsset: 'XcmV1MultiassetMultiAssets',540 QueryResponse: {541 queryId: 'Compact<u64>',542 response: 'XcmV2Response',543 maxWeight: 'Compact<u64>',544 },545 TransferAsset: {546 assets: 'XcmV1MultiassetMultiAssets',547 beneficiary: 'XcmV1MultiLocation',548 },549 TransferReserveAsset: {550 assets: 'XcmV1MultiassetMultiAssets',551 dest: 'XcmV1MultiLocation',552 xcm: 'XcmV2Xcm',553 },554 Transact: {555 originType: 'XcmV0OriginKind',556 requireWeightAtMost: 'Compact<u64>',557 call: 'XcmDoubleEncoded',558 },559 HrmpNewChannelOpenRequest: {560 sender: 'Compact<u32>',561 maxMessageSize: 'Compact<u32>',562 maxCapacity: 'Compact<u32>',563 },564 HrmpChannelAccepted: {565 recipient: 'Compact<u32>',566 },567 HrmpChannelClosing: {568 initiator: 'Compact<u32>',569 sender: 'Compact<u32>',570 recipient: 'Compact<u32>',571 },572 ClearOrigin: 'Null',573 DescendOrigin: 'XcmV1MultilocationJunctions',574 ReportError: {575 queryId: 'Compact<u64>',576 dest: 'XcmV1MultiLocation',577 maxResponseWeight: 'Compact<u64>',578 },579 DepositAsset: {580 assets: 'XcmV1MultiassetMultiAssetFilter',581 maxAssets: 'Compact<u32>',582 beneficiary: 'XcmV1MultiLocation',583 },584 DepositReserveAsset: {585 assets: 'XcmV1MultiassetMultiAssetFilter',586 maxAssets: 'Compact<u32>',587 dest: 'XcmV1MultiLocation',588 xcm: 'XcmV2Xcm',589 },590 ExchangeAsset: {591 give: 'XcmV1MultiassetMultiAssetFilter',592 receive: 'XcmV1MultiassetMultiAssets',593 },594 InitiateReserveWithdraw: {595 assets: 'XcmV1MultiassetMultiAssetFilter',596 reserve: 'XcmV1MultiLocation',597 xcm: 'XcmV2Xcm',598 },599 InitiateTeleport: {600 assets: 'XcmV1MultiassetMultiAssetFilter',601 dest: 'XcmV1MultiLocation',602 xcm: 'XcmV2Xcm',603 },604 QueryHolding: {605 queryId: 'Compact<u64>',606 dest: 'XcmV1MultiLocation',607 assets: 'XcmV1MultiassetMultiAssetFilter',608 maxResponseWeight: 'Compact<u64>',609 },610 BuyExecution: {611 fees: 'XcmV1MultiAsset',612 weightLimit: 'XcmV2WeightLimit',613 },614 RefundSurplus: 'Null',615 SetErrorHandler: 'XcmV2Xcm',616 SetAppendix: 'XcmV2Xcm',617 ClearError: 'Null',618 ClaimAsset: {619 assets: 'XcmV1MultiassetMultiAssets',620 ticket: 'XcmV1MultiLocation',621 },622 Trap: 'Compact<u64>',623 SubscribeVersion: {624 queryId: 'Compact<u64>',625 maxResponseWeight: 'Compact<u64>',626 },627 UnsubscribeVersion: 'Null'628 }629 },630 /**631 * Lookup58: xcm::v1::multiasset::MultiAssets632 **/633 XcmV1MultiassetMultiAssets: 'Vec<XcmV1MultiAsset>',634 /**635 * Lookup60: xcm::v1::multiasset::MultiAsset636 **/637 XcmV1MultiAsset: {638 id: 'XcmV1MultiassetAssetId',639 fun: 'XcmV1MultiassetFungibility'640 },641 /**642 * Lookup61: xcm::v1::multiasset::AssetId643 **/644 XcmV1MultiassetAssetId: {645 _enum: {646 Concrete: 'XcmV1MultiLocation',647 Abstract: 'Bytes'648 }649 },650 /**651 * Lookup62: xcm::v1::multiasset::Fungibility652 **/653 XcmV1MultiassetFungibility: {654 _enum: {655 Fungible: 'Compact<u128>',656 NonFungible: 'XcmV1MultiassetAssetInstance'657 }658 },659 /**660 * Lookup63: xcm::v1::multiasset::AssetInstance661 **/662 XcmV1MultiassetAssetInstance: {663 _enum: {664 Undefined: 'Null',665 Index: 'Compact<u128>',666 Array4: '[u8;4]',667 Array8: '[u8;8]',668 Array16: '[u8;16]',669 Array32: '[u8;32]',670 Blob: 'Bytes'671 }672 },673 /**674 * Lookup66: xcm::v2::Response675 **/676 XcmV2Response: {677 _enum: {678 Null: 'Null',679 Assets: 'XcmV1MultiassetMultiAssets',680 ExecutionResult: 'Option<(u32,XcmV2TraitsError)>',681 Version: 'u32'682 }683 },684 /**685 * Lookup69: xcm::v0::OriginKind686 **/687 XcmV0OriginKind: {688 _enum: ['Native', 'SovereignAccount', 'Superuser', 'Xcm']689 },690 /**691 * Lookup70: xcm::double_encoded::DoubleEncoded<T>692 **/693 XcmDoubleEncoded: {694 encoded: 'Bytes'695 },696 /**697 * Lookup71: xcm::v1::multiasset::MultiAssetFilter698 **/699 XcmV1MultiassetMultiAssetFilter: {700 _enum: {701 Definite: 'XcmV1MultiassetMultiAssets',702 Wild: 'XcmV1MultiassetWildMultiAsset'703 }704 },705 /**706 * Lookup72: xcm::v1::multiasset::WildMultiAsset707 **/708 XcmV1MultiassetWildMultiAsset: {709 _enum: {710 All: 'Null',711 AllOf: {712 id: 'XcmV1MultiassetAssetId',713 fun: 'XcmV1MultiassetWildFungibility'714 }715 }716 },717 /**718 * Lookup73: xcm::v1::multiasset::WildFungibility719 **/720 XcmV1MultiassetWildFungibility: {721 _enum: ['Fungible', 'NonFungible']722 },723 /**724 * Lookup74: xcm::v2::WeightLimit725 **/726 XcmV2WeightLimit: {727 _enum: {728 Unlimited: 'Null',729 Limited: 'Compact<u64>'730 }731 },732 /**733 * Lookup76: xcm::VersionedMultiAssets734 **/735 XcmVersionedMultiAssets: {736 _enum: {737 V0: 'Vec<XcmV0MultiAsset>',738 V1: 'XcmV1MultiassetMultiAssets'739 }740 },741 /**742 * Lookup78: xcm::v0::multi_asset::MultiAsset743 **/744 XcmV0MultiAsset: {745 _enum: {746 None: 'Null',747 All: 'Null',748 AllFungible: 'Null',749 AllNonFungible: 'Null',750 AllAbstractFungible: {751 id: 'Bytes',752 },753 AllAbstractNonFungible: {754 class: 'Bytes',755 },756 AllConcreteFungible: {757 id: 'XcmV0MultiLocation',758 },759 AllConcreteNonFungible: {760 class: 'XcmV0MultiLocation',761 },762 AbstractFungible: {763 id: 'Bytes',764 amount: 'Compact<u128>',765 },766 AbstractNonFungible: {767 class: 'Bytes',768 instance: 'XcmV1MultiassetAssetInstance',769 },770 ConcreteFungible: {771 id: 'XcmV0MultiLocation',772 amount: 'Compact<u128>',773 },774 ConcreteNonFungible: {775 class: 'XcmV0MultiLocation',776 instance: 'XcmV1MultiassetAssetInstance'777 }778 }779 },780 /**781 * Lookup79: xcm::v0::multi_location::MultiLocation782 **/783 XcmV0MultiLocation: {784 _enum: {785 Null: 'Null',786 X1: 'XcmV0Junction',787 X2: '(XcmV0Junction,XcmV0Junction)',788 X3: '(XcmV0Junction,XcmV0Junction,XcmV0Junction)',789 X4: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',790 X5: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',791 X6: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',792 X7: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',793 X8: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)'794 }795 },796 /**797 * Lookup80: xcm::v0::junction::Junction798 **/799 XcmV0Junction: {800 _enum: {801 Parent: 'Null',802 Parachain: 'Compact<u32>',803 AccountId32: {804 network: 'XcmV0JunctionNetworkId',805 id: '[u8;32]',806 },807 AccountIndex64: {808 network: 'XcmV0JunctionNetworkId',809 index: 'Compact<u64>',810 },811 AccountKey20: {812 network: 'XcmV0JunctionNetworkId',813 key: '[u8;20]',814 },815 PalletInstance: 'u8',816 GeneralIndex: 'Compact<u128>',817 GeneralKey: 'Bytes',818 OnlyChild: 'Null',819 Plurality: {820 id: 'XcmV0JunctionBodyId',821 part: 'XcmV0JunctionBodyPart'822 }823 }824 },825 /**826 * Lookup81: xcm::VersionedMultiLocation827 **/828 XcmVersionedMultiLocation: {829 _enum: {830 V0: 'XcmV0MultiLocation',831 V1: 'XcmV1MultiLocation'832 }833 },834 /**835 * Lookup82: cumulus_pallet_xcm::pallet::Event<T>836 **/837 CumulusPalletXcmEvent: {838 _enum: {839 InvalidFormat: '[u8;8]',840 UnsupportedVersion: '[u8;8]',841 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'842 }843 },844 /**845 * Lookup83: cumulus_pallet_dmp_queue::pallet::Event<T>846 **/847 CumulusPalletDmpQueueEvent: {848 _enum: {849 InvalidFormat: {850 messageId: '[u8;32]',851 },852 UnsupportedVersion: {853 messageId: '[u8;32]',854 },855 ExecutedDownward: {856 messageId: '[u8;32]',857 outcome: 'XcmV2TraitsOutcome',858 },859 WeightExhausted: {860 messageId: '[u8;32]',861 remainingWeight: 'u64',862 requiredWeight: 'u64',863 },864 OverweightEnqueued: {865 messageId: '[u8;32]',866 overweightIndex: 'u64',867 requiredWeight: 'u64',868 },869 OverweightServiced: {870 overweightIndex: 'u64',871 weightUsed: 'u64'872 }873 }874 },875 /**876 * Lookup84: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>877 **/878 PalletUniqueRawEvent: {879 _enum: {880 CollectionSponsorRemoved: 'u32',881 CollectionAdminAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',882 CollectionOwnedChanged: '(u32,AccountId32)',883 CollectionSponsorSet: '(u32,AccountId32)',884 SponsorshipConfirmed: '(u32,AccountId32)',885 CollectionAdminRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',886 AllowListAddressRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',887 AllowListAddressAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',888 CollectionLimitSet: 'u32',889 CollectionPermissionSet: 'u32'890 }891 },892 /**893 * Lookup85: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>894 **/895 PalletEvmAccountBasicCrossAccountIdRepr: {896 _enum: {897 Substrate: 'AccountId32',898 Ethereum: 'H160'899 }900 },901 /**902 * Lookup88: pallet_unique_scheduler::pallet::Event<T>903 **/904 PalletUniqueSchedulerEvent: {905 _enum: {906 Scheduled: {907 when: 'u32',908 index: 'u32',909 },910 Canceled: {911 when: 'u32',912 index: 'u32',913 },914 Dispatched: {915 task: '(u32,u32)',916 id: 'Option<[u8;16]>',917 result: 'Result<Null, SpRuntimeDispatchError>',918 },919 CallLookupFailed: {920 task: '(u32,u32)',921 id: 'Option<[u8;16]>',922 error: 'FrameSupportScheduleLookupError'923 }924 }925 },926 /**927 * Lookup91: frame_support::traits::schedule::LookupError928 **/929 FrameSupportScheduleLookupError: {930 _enum: ['Unknown', 'BadFormat']931 },932 /**933 * Lookup92: pallet_common::pallet::Event<T>934 **/935 PalletCommonEvent: {936 _enum: {937 CollectionCreated: '(u32,u8,AccountId32)',938 CollectionDestroyed: 'u32',939 ItemCreated: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',940 ItemDestroyed: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',941 Transfer: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',942 Approved: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',943 CollectionPropertySet: '(u32,Bytes)',944 CollectionPropertyDeleted: '(u32,Bytes)',945 TokenPropertySet: '(u32,u32,Bytes)',946 TokenPropertyDeleted: '(u32,u32,Bytes)',947 PropertyPermissionSet: '(u32,Bytes)'948 }949 },950 /**951 * Lookup95: pallet_structure::pallet::Event<T>952 **/953 PalletStructureEvent: {954 _enum: {955 Executed: 'Result<Null, SpRuntimeDispatchError>'956 }957 },958 /**959 * Lookup96: pallet_rmrk_core::pallet::Event<T>960 **/961 PalletRmrkCoreEvent: {962 _enum: {963 CollectionCreated: {964 issuer: 'AccountId32',965 collectionId: 'u32',966 },967 CollectionDestroyed: {968 issuer: 'AccountId32',969 collectionId: 'u32',970 },971 IssuerChanged: {972 oldIssuer: 'AccountId32',973 newIssuer: 'AccountId32',974 collectionId: 'u32',975 },976 CollectionLocked: {977 issuer: 'AccountId32',978 collectionId: 'u32',979 },980 NftMinted: {981 owner: 'AccountId32',982 collectionId: 'u32',983 nftId: 'u32',984 },985 NFTBurned: {986 owner: 'AccountId32',987 nftId: 'u32',988 },989 NFTSent: {990 sender: 'AccountId32',991 recipient: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',992 collectionId: 'u32',993 nftId: 'u32',994 approvalRequired: 'bool',995 },996 NFTAccepted: {997 sender: 'AccountId32',998 recipient: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',999 collectionId: 'u32',1000 nftId: 'u32',1001 },1002 NFTRejected: {1003 sender: 'AccountId32',1004 collectionId: 'u32',1005 nftId: 'u32',1006 },1007 PropertySet: {1008 collectionId: 'u32',1009 maybeNftId: 'Option<u32>',1010 key: 'Bytes',1011 value: 'Bytes',1012 },1013 ResourceAdded: {1014 nftId: 'u32',1015 resourceId: 'u32',1016 },1017 ResourceRemoval: {1018 nftId: 'u32',1019 resourceId: 'u32',1020 },1021 ResourceAccepted: {1022 nftId: 'u32',1023 resourceId: 'u32',1024 },1025 ResourceRemovalAccepted: {1026 nftId: 'u32',1027 resourceId: 'u32',1028 },1029 PrioritySet: {1030 collectionId: 'u32',1031 nftId: 'u32'1032 }1033 }1034 },1035 /**1036 * Lookup97: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>1037 **/1038 RmrkTraitsNftAccountIdOrCollectionNftTuple: {1039 _enum: {1040 AccountId: 'AccountId32',1041 CollectionAndNftTuple: '(u32,u32)'1042 }1043 },1044 /**1045 * Lookup102: pallet_rmrk_equip::pallet::Event<T>1046 **/1047 PalletRmrkEquipEvent: {1048 _enum: {1049 BaseCreated: {1050 issuer: 'AccountId32',1051 baseId: 'u32',1052 },1053 EquippablesUpdated: {1054 baseId: 'u32',1055 slotId: 'u32'1056 }1057 }1058 },1059 /**1060 * Lookup103: pallet_evm::pallet::Event<T>1061 **/1062 PalletEvmEvent: {1063 _enum: {1064 Log: 'EthereumLog',1065 Created: 'H160',1066 CreatedFailed: 'H160',1067 Executed: 'H160',1068 ExecutedFailed: 'H160',1069 BalanceDeposit: '(AccountId32,H160,U256)',1070 BalanceWithdraw: '(AccountId32,H160,U256)'1071 }1072 },1073 /**1074 * Lookup104: ethereum::log::Log1075 **/1076 EthereumLog: {1077 address: 'H160',1078 topics: 'Vec<H256>',1079 data: 'Bytes'1080 },1081 /**1082 * Lookup108: pallet_ethereum::pallet::Event1083 **/1084 PalletEthereumEvent: {1085 _enum: {1086 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'1087 }1088 },1089 /**1090 * Lookup109: evm_core::error::ExitReason1091 **/1092 EvmCoreErrorExitReason: {1093 _enum: {1094 Succeed: 'EvmCoreErrorExitSucceed',1095 Error: 'EvmCoreErrorExitError',1096 Revert: 'EvmCoreErrorExitRevert',1097 Fatal: 'EvmCoreErrorExitFatal'1098 }1099 },1100 /**1101 * Lookup110: evm_core::error::ExitSucceed1102 **/1103 EvmCoreErrorExitSucceed: {1104 _enum: ['Stopped', 'Returned', 'Suicided']1105 },1106 /**1107 * Lookup111: evm_core::error::ExitError1108 **/1109 EvmCoreErrorExitError: {1110 _enum: {1111 StackUnderflow: 'Null',1112 StackOverflow: 'Null',1113 InvalidJump: 'Null',1114 InvalidRange: 'Null',1115 DesignatedInvalid: 'Null',1116 CallTooDeep: 'Null',1117 CreateCollision: 'Null',1118 CreateContractLimit: 'Null',1119 OutOfOffset: 'Null',1120 OutOfGas: 'Null',1121 OutOfFund: 'Null',1122 PCUnderflow: 'Null',1123 CreateEmpty: 'Null',1124 Other: 'Text',1125 InvalidCode: 'Null'1126 }1127 },1128 /**1129 * Lookup114: evm_core::error::ExitRevert1130 **/1131 EvmCoreErrorExitRevert: {1132 _enum: ['Reverted']1133 },1134 /**1135 * Lookup115: evm_core::error::ExitFatal1136 **/1137 EvmCoreErrorExitFatal: {1138 _enum: {1139 NotSupported: 'Null',1140 UnhandledInterrupt: 'Null',1141 CallErrorAsFatal: 'EvmCoreErrorExitError',1142 Other: 'Text'1143 }1144 },1145 /**1146 * Lookup116: frame_system::Phase1147 **/1148 FrameSystemPhase: {1149 _enum: {1150 ApplyExtrinsic: 'u32',1151 Finalization: 'Null',1152 Initialization: 'Null'1153 }1154 },1155 /**1156 * Lookup118: frame_system::LastRuntimeUpgradeInfo1157 **/1158 FrameSystemLastRuntimeUpgradeInfo: {1159 specVersion: 'Compact<u32>',1160 specName: 'Text'1161 },1162 /**1163 * Lookup119: frame_system::pallet::Call<T>1164 **/1165 FrameSystemCall: {1166 _enum: {1167 fill_block: {1168 ratio: 'Perbill',1169 },1170 remark: {1171 remark: 'Bytes',1172 },1173 set_heap_pages: {1174 pages: 'u64',1175 },1176 set_code: {1177 code: 'Bytes',1178 },1179 set_code_without_checks: {1180 code: 'Bytes',1181 },1182 set_storage: {1183 items: 'Vec<(Bytes,Bytes)>',1184 },1185 kill_storage: {1186 _alias: {1187 keys_: 'keys',1188 },1189 keys_: 'Vec<Bytes>',1190 },1191 kill_prefix: {1192 prefix: 'Bytes',1193 subkeys: 'u32',1194 },1195 remark_with_event: {1196 remark: 'Bytes'1197 }1198 }1199 },1200 /**1201 * Lookup124: frame_system::limits::BlockWeights1202 **/1203 FrameSystemLimitsBlockWeights: {1204 baseBlock: 'u64',1205 maxBlock: 'u64',1206 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'1207 },1208 /**1209 * Lookup125: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>1210 **/1211 FrameSupportWeightsPerDispatchClassWeightsPerClass: {1212 normal: 'FrameSystemLimitsWeightsPerClass',1213 operational: 'FrameSystemLimitsWeightsPerClass',1214 mandatory: 'FrameSystemLimitsWeightsPerClass'1215 },1216 /**1217 * Lookup126: frame_system::limits::WeightsPerClass1218 **/1219 FrameSystemLimitsWeightsPerClass: {1220 baseExtrinsic: 'u64',1221 maxExtrinsic: 'Option<u64>',1222 maxTotal: 'Option<u64>',1223 reserved: 'Option<u64>'1224 },1225 /**1226 * Lookup128: frame_system::limits::BlockLength1227 **/1228 FrameSystemLimitsBlockLength: {1229 max: 'FrameSupportWeightsPerDispatchClassU32'1230 },1231 /**1232 * Lookup129: frame_support::weights::PerDispatchClass<T>1233 **/1234 FrameSupportWeightsPerDispatchClassU32: {1235 normal: 'u32',1236 operational: 'u32',1237 mandatory: 'u32'1238 },1239 /**1240 * Lookup130: frame_support::weights::RuntimeDbWeight1241 **/1242 FrameSupportWeightsRuntimeDbWeight: {1243 read: 'u64',1244 write: 'u64'1245 },1246 /**1247 * Lookup131: sp_version::RuntimeVersion1248 **/1249 SpVersionRuntimeVersion: {1250 specName: 'Text',1251 implName: 'Text',1252 authoringVersion: 'u32',1253 specVersion: 'u32',1254 implVersion: 'u32',1255 apis: 'Vec<([u8;8],u32)>',1256 transactionVersion: 'u32',1257 stateVersion: 'u8'1258 },1259 /**1260 * Lookup136: frame_system::pallet::Error<T>1261 **/1262 FrameSystemError: {1263 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']1264 },1265 /**1266 * Lookup137: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>1267 **/1268 PolkadotPrimitivesV2PersistedValidationData: {1269 parentHead: 'Bytes',1270 relayParentNumber: 'u32',1271 relayParentStorageRoot: 'H256',1272 maxPovSize: 'u32'1273 },1274 /**1275 * Lookup140: polkadot_primitives::v2::UpgradeRestriction1276 **/1277 PolkadotPrimitivesV2UpgradeRestriction: {1278 _enum: ['Present']1279 },1280 /**1281 * Lookup141: sp_trie::storage_proof::StorageProof1282 **/1283 SpTrieStorageProof: {1284 trieNodes: 'BTreeSet<Bytes>'1285 },1286 /**1287 * Lookup143: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot1288 **/1289 CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {1290 dmqMqcHead: 'H256',1291 relayDispatchQueueSize: '(u32,u32)',1292 ingressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>',1293 egressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>'1294 },1295 /**1296 * Lookup146: polkadot_primitives::v2::AbridgedHrmpChannel1297 **/1298 PolkadotPrimitivesV2AbridgedHrmpChannel: {1299 maxCapacity: 'u32',1300 maxTotalSize: 'u32',1301 maxMessageSize: 'u32',1302 msgCount: 'u32',1303 totalSize: 'u32',1304 mqcHead: 'Option<H256>'1305 },1306 /**1307 * Lookup147: polkadot_primitives::v2::AbridgedHostConfiguration1308 **/1309 PolkadotPrimitivesV2AbridgedHostConfiguration: {1310 maxCodeSize: 'u32',1311 maxHeadDataSize: 'u32',1312 maxUpwardQueueCount: 'u32',1313 maxUpwardQueueSize: 'u32',1314 maxUpwardMessageSize: 'u32',1315 maxUpwardMessageNumPerCandidate: 'u32',1316 hrmpMaxMessageNumPerCandidate: 'u32',1317 validationUpgradeCooldown: 'u32',1318 validationUpgradeDelay: 'u32'1319 },1320 /**1321 * Lookup153: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>1322 **/1323 PolkadotCorePrimitivesOutboundHrmpMessage: {1324 recipient: 'u32',1325 data: 'Bytes'1326 },1327 /**1328 * Lookup154: cumulus_pallet_parachain_system::pallet::Call<T>1329 **/1330 CumulusPalletParachainSystemCall: {1331 _enum: {1332 set_validation_data: {1333 data: 'CumulusPrimitivesParachainInherentParachainInherentData',1334 },1335 sudo_send_upward_message: {1336 message: 'Bytes',1337 },1338 authorize_upgrade: {1339 codeHash: 'H256',1340 },1341 enact_authorized_upgrade: {1342 code: 'Bytes'1343 }1344 }1345 },1346 /**1347 * Lookup155: cumulus_primitives_parachain_inherent::ParachainInherentData1348 **/1349 CumulusPrimitivesParachainInherentParachainInherentData: {1350 validationData: 'PolkadotPrimitivesV2PersistedValidationData',1351 relayChainState: 'SpTrieStorageProof',1352 downwardMessages: 'Vec<PolkadotCorePrimitivesInboundDownwardMessage>',1353 horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'1354 },1355 /**1356 * Lookup157: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>1357 **/1358 PolkadotCorePrimitivesInboundDownwardMessage: {1359 sentAt: 'u32',1360 msg: 'Bytes'1361 },1362 /**1363 * Lookup160: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>1364 **/1365 PolkadotCorePrimitivesInboundHrmpMessage: {1366 sentAt: 'u32',1367 data: 'Bytes'1368 },1369 /**1370 * Lookup163: cumulus_pallet_parachain_system::pallet::Error<T>1371 **/1372 CumulusPalletParachainSystemError: {1373 _enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']1374 },1375 /**1376 * Lookup165: pallet_balances::BalanceLock<Balance>1377 **/1378 PalletBalancesBalanceLock: {1379 id: '[u8;8]',1380 amount: 'u128',1381 reasons: 'PalletBalancesReasons'1382 },1383 /**1384 * Lookup166: pallet_balances::Reasons1385 **/1386 PalletBalancesReasons: {1387 _enum: ['Fee', 'Misc', 'All']1388 },1389 /**1390 * Lookup169: pallet_balances::ReserveData<ReserveIdentifier, Balance>1391 **/1392 PalletBalancesReserveData: {1393 id: '[u8;16]',1394 amount: 'u128'1395 },1396 /**1397 * Lookup171: pallet_balances::Releases1398 **/1399 PalletBalancesReleases: {1400 _enum: ['V1_0_0', 'V2_0_0']1401 },1402 /**1403 * Lookup172: pallet_balances::pallet::Call<T, I>1404 **/1405 PalletBalancesCall: {1406 _enum: {1407 transfer: {1408 dest: 'MultiAddress',1409 value: 'Compact<u128>',1410 },1411 set_balance: {1412 who: 'MultiAddress',1413 newFree: 'Compact<u128>',1414 newReserved: 'Compact<u128>',1415 },1416 force_transfer: {1417 source: 'MultiAddress',1418 dest: 'MultiAddress',1419 value: 'Compact<u128>',1420 },1421 transfer_keep_alive: {1422 dest: 'MultiAddress',1423 value: 'Compact<u128>',1424 },1425 transfer_all: {1426 dest: 'MultiAddress',1427 keepAlive: 'bool',1428 },1429 force_unreserve: {1430 who: 'MultiAddress',1431 amount: 'u128'1432 }1433 }1434 },1435 /**1436 * Lookup175: pallet_balances::pallet::Error<T, I>1437 **/1438 PalletBalancesError: {1439 _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']1440 },1441 /**1442 * Lookup177: pallet_timestamp::pallet::Call<T>1443 **/1444 PalletTimestampCall: {1445 _enum: {1446 set: {1447 now: 'Compact<u64>'1448 }1449 }1450 },1451 /**1452 * Lookup179: pallet_transaction_payment::Releases1453 **/1454 PalletTransactionPaymentReleases: {1455 _enum: ['V1Ancient', 'V2']1456 },1457 /**1458 * Lookup180: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>1459 **/1460 PalletTreasuryProposal: {1461 proposer: 'AccountId32',1462 value: 'u128',1463 beneficiary: 'AccountId32',1464 bond: 'u128'1465 },1466 /**1467 * Lookup183: pallet_treasury::pallet::Call<T, I>1468 **/1469 PalletTreasuryCall: {1470 _enum: {1471 propose_spend: {1472 value: 'Compact<u128>',1473 beneficiary: 'MultiAddress',1474 },1475 reject_proposal: {1476 proposalId: 'Compact<u32>',1477 },1478 approve_proposal: {1479 proposalId: 'Compact<u32>',1480 },1481 spend: {1482 amount: 'Compact<u128>',1483 beneficiary: 'MultiAddress',1484 },1485 remove_approval: {1486 proposalId: 'Compact<u32>'1487 }1488 }1489 },1490 /**1491 * Lookup186: frame_support::PalletId1492 **/1493 FrameSupportPalletId: '[u8;8]',1494 /**1495 * Lookup187: pallet_treasury::pallet::Error<T, I>1496 **/1497 PalletTreasuryError: {1498 _enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals', 'InsufficientPermission', 'ProposalNotApproved']1499 },1500 /**1501 * Lookup188: pallet_sudo::pallet::Call<T>1502 **/1503 PalletSudoCall: {1504 _enum: {1505 sudo: {1506 call: 'Call',1507 },1508 sudo_unchecked_weight: {1509 call: 'Call',1510 weight: 'u64',1511 },1512 set_key: {1513 _alias: {1514 new_: 'new',1515 },1516 new_: 'MultiAddress',1517 },1518 sudo_as: {1519 who: 'MultiAddress',1520 call: 'Call'1521 }1522 }1523 },1524 /**1525 * Lookup190: orml_vesting::module::Call<T>1526 **/1527 OrmlVestingModuleCall: {1528 _enum: {1529 claim: 'Null',1530 vested_transfer: {1531 dest: 'MultiAddress',1532 schedule: 'OrmlVestingVestingSchedule',1533 },1534 update_vesting_schedules: {1535 who: 'MultiAddress',1536 vestingSchedules: 'Vec<OrmlVestingVestingSchedule>',1537 },1538 claim_for: {1539 dest: 'MultiAddress'1540 }1541 }1542 },1543 /**1544 * Lookup192: cumulus_pallet_xcmp_queue::pallet::Call<T>1545 **/1546 CumulusPalletXcmpQueueCall: {1547 _enum: {1548 service_overweight: {1549 index: 'u64',1550 weightLimit: 'u64',1551 },1552 suspend_xcm_execution: 'Null',1553 resume_xcm_execution: 'Null',1554 update_suspend_threshold: {1555 _alias: {1556 new_: 'new',1557 },1558 new_: 'u32',1559 },1560 update_drop_threshold: {1561 _alias: {1562 new_: 'new',1563 },1564 new_: 'u32',1565 },1566 update_resume_threshold: {1567 _alias: {1568 new_: 'new',1569 },1570 new_: 'u32',1571 },1572 update_threshold_weight: {1573 _alias: {1574 new_: 'new',1575 },1576 new_: 'u64',1577 },1578 update_weight_restrict_decay: {1579 _alias: {1580 new_: 'new',1581 },1582 new_: 'u64',1583 },1584 update_xcmp_max_individual_weight: {1585 _alias: {1586 new_: 'new',1587 },1588 new_: 'u64'1589 }1590 }1591 },1592 /**1593 * Lookup193: pallet_xcm::pallet::Call<T>1594 **/1595 PalletXcmCall: {1596 _enum: {1597 send: {1598 dest: 'XcmVersionedMultiLocation',1599 message: 'XcmVersionedXcm',1600 },1601 teleport_assets: {1602 dest: 'XcmVersionedMultiLocation',1603 beneficiary: 'XcmVersionedMultiLocation',1604 assets: 'XcmVersionedMultiAssets',1605 feeAssetItem: 'u32',1606 },1607 reserve_transfer_assets: {1608 dest: 'XcmVersionedMultiLocation',1609 beneficiary: 'XcmVersionedMultiLocation',1610 assets: 'XcmVersionedMultiAssets',1611 feeAssetItem: 'u32',1612 },1613 execute: {1614 message: 'XcmVersionedXcm',1615 maxWeight: 'u64',1616 },1617 force_xcm_version: {1618 location: 'XcmV1MultiLocation',1619 xcmVersion: 'u32',1620 },1621 force_default_xcm_version: {1622 maybeXcmVersion: 'Option<u32>',1623 },1624 force_subscribe_version_notify: {1625 location: 'XcmVersionedMultiLocation',1626 },1627 force_unsubscribe_version_notify: {1628 location: 'XcmVersionedMultiLocation',1629 },1630 limited_reserve_transfer_assets: {1631 dest: 'XcmVersionedMultiLocation',1632 beneficiary: 'XcmVersionedMultiLocation',1633 assets: 'XcmVersionedMultiAssets',1634 feeAssetItem: 'u32',1635 weightLimit: 'XcmV2WeightLimit',1636 },1637 limited_teleport_assets: {1638 dest: 'XcmVersionedMultiLocation',1639 beneficiary: 'XcmVersionedMultiLocation',1640 assets: 'XcmVersionedMultiAssets',1641 feeAssetItem: 'u32',1642 weightLimit: 'XcmV2WeightLimit'1643 }1644 }1645 },1646 /**1647 * Lookup194: xcm::VersionedXcm<Call>1648 **/1649 XcmVersionedXcm: {1650 _enum: {1651 V0: 'XcmV0Xcm',1652 V1: 'XcmV1Xcm',1653 V2: 'XcmV2Xcm'1654 }1655 },1656 /**1657 * Lookup195: xcm::v0::Xcm<Call>1658 **/1659 XcmV0Xcm: {1660 _enum: {1661 WithdrawAsset: {1662 assets: 'Vec<XcmV0MultiAsset>',1663 effects: 'Vec<XcmV0Order>',1664 },1665 ReserveAssetDeposit: {1666 assets: 'Vec<XcmV0MultiAsset>',1667 effects: 'Vec<XcmV0Order>',1668 },1669 TeleportAsset: {1670 assets: 'Vec<XcmV0MultiAsset>',1671 effects: 'Vec<XcmV0Order>',1672 },1673 QueryResponse: {1674 queryId: 'Compact<u64>',1675 response: 'XcmV0Response',1676 },1677 TransferAsset: {1678 assets: 'Vec<XcmV0MultiAsset>',1679 dest: 'XcmV0MultiLocation',1680 },1681 TransferReserveAsset: {1682 assets: 'Vec<XcmV0MultiAsset>',1683 dest: 'XcmV0MultiLocation',1684 effects: 'Vec<XcmV0Order>',1685 },1686 Transact: {1687 originType: 'XcmV0OriginKind',1688 requireWeightAtMost: 'u64',1689 call: 'XcmDoubleEncoded',1690 },1691 HrmpNewChannelOpenRequest: {1692 sender: 'Compact<u32>',1693 maxMessageSize: 'Compact<u32>',1694 maxCapacity: 'Compact<u32>',1695 },1696 HrmpChannelAccepted: {1697 recipient: 'Compact<u32>',1698 },1699 HrmpChannelClosing: {1700 initiator: 'Compact<u32>',1701 sender: 'Compact<u32>',1702 recipient: 'Compact<u32>',1703 },1704 RelayedFrom: {1705 who: 'XcmV0MultiLocation',1706 message: 'XcmV0Xcm'1707 }1708 }1709 },1710 /**1711 * Lookup197: xcm::v0::order::Order<Call>1712 **/1713 XcmV0Order: {1714 _enum: {1715 Null: 'Null',1716 DepositAsset: {1717 assets: 'Vec<XcmV0MultiAsset>',1718 dest: 'XcmV0MultiLocation',1719 },1720 DepositReserveAsset: {1721 assets: 'Vec<XcmV0MultiAsset>',1722 dest: 'XcmV0MultiLocation',1723 effects: 'Vec<XcmV0Order>',1724 },1725 ExchangeAsset: {1726 give: 'Vec<XcmV0MultiAsset>',1727 receive: 'Vec<XcmV0MultiAsset>',1728 },1729 InitiateReserveWithdraw: {1730 assets: 'Vec<XcmV0MultiAsset>',1731 reserve: 'XcmV0MultiLocation',1732 effects: 'Vec<XcmV0Order>',1733 },1734 InitiateTeleport: {1735 assets: 'Vec<XcmV0MultiAsset>',1736 dest: 'XcmV0MultiLocation',1737 effects: 'Vec<XcmV0Order>',1738 },1739 QueryHolding: {1740 queryId: 'Compact<u64>',1741 dest: 'XcmV0MultiLocation',1742 assets: 'Vec<XcmV0MultiAsset>',1743 },1744 BuyExecution: {1745 fees: 'XcmV0MultiAsset',1746 weight: 'u64',1747 debt: 'u64',1748 haltOnError: 'bool',1749 xcm: 'Vec<XcmV0Xcm>'1750 }1751 }1752 },1753 /**1754 * Lookup199: xcm::v0::Response1755 **/1756 XcmV0Response: {1757 _enum: {1758 Assets: 'Vec<XcmV0MultiAsset>'1759 }1760 },1761 /**1762 * Lookup200: xcm::v1::Xcm<Call>1763 **/1764 XcmV1Xcm: {1765 _enum: {1766 WithdrawAsset: {1767 assets: 'XcmV1MultiassetMultiAssets',1768 effects: 'Vec<XcmV1Order>',1769 },1770 ReserveAssetDeposited: {1771 assets: 'XcmV1MultiassetMultiAssets',1772 effects: 'Vec<XcmV1Order>',1773 },1774 ReceiveTeleportedAsset: {1775 assets: 'XcmV1MultiassetMultiAssets',1776 effects: 'Vec<XcmV1Order>',1777 },1778 QueryResponse: {1779 queryId: 'Compact<u64>',1780 response: 'XcmV1Response',1781 },1782 TransferAsset: {1783 assets: 'XcmV1MultiassetMultiAssets',1784 beneficiary: 'XcmV1MultiLocation',1785 },1786 TransferReserveAsset: {1787 assets: 'XcmV1MultiassetMultiAssets',1788 dest: 'XcmV1MultiLocation',1789 effects: 'Vec<XcmV1Order>',1790 },1791 Transact: {1792 originType: 'XcmV0OriginKind',1793 requireWeightAtMost: 'u64',1794 call: 'XcmDoubleEncoded',1795 },1796 HrmpNewChannelOpenRequest: {1797 sender: 'Compact<u32>',1798 maxMessageSize: 'Compact<u32>',1799 maxCapacity: 'Compact<u32>',1800 },1801 HrmpChannelAccepted: {1802 recipient: 'Compact<u32>',1803 },1804 HrmpChannelClosing: {1805 initiator: 'Compact<u32>',1806 sender: 'Compact<u32>',1807 recipient: 'Compact<u32>',1808 },1809 RelayedFrom: {1810 who: 'XcmV1MultilocationJunctions',1811 message: 'XcmV1Xcm',1812 },1813 SubscribeVersion: {1814 queryId: 'Compact<u64>',1815 maxResponseWeight: 'Compact<u64>',1816 },1817 UnsubscribeVersion: 'Null'1818 }1819 },1820 /**1821 * Lookup202: xcm::v1::order::Order<Call>1822 **/1823 XcmV1Order: {1824 _enum: {1825 Noop: 'Null',1826 DepositAsset: {1827 assets: 'XcmV1MultiassetMultiAssetFilter',1828 maxAssets: 'u32',1829 beneficiary: 'XcmV1MultiLocation',1830 },1831 DepositReserveAsset: {1832 assets: 'XcmV1MultiassetMultiAssetFilter',1833 maxAssets: 'u32',1834 dest: 'XcmV1MultiLocation',1835 effects: 'Vec<XcmV1Order>',1836 },1837 ExchangeAsset: {1838 give: 'XcmV1MultiassetMultiAssetFilter',1839 receive: 'XcmV1MultiassetMultiAssets',1840 },1841 InitiateReserveWithdraw: {1842 assets: 'XcmV1MultiassetMultiAssetFilter',1843 reserve: 'XcmV1MultiLocation',1844 effects: 'Vec<XcmV1Order>',1845 },1846 InitiateTeleport: {1847 assets: 'XcmV1MultiassetMultiAssetFilter',1848 dest: 'XcmV1MultiLocation',1849 effects: 'Vec<XcmV1Order>',1850 },1851 QueryHolding: {1852 queryId: 'Compact<u64>',1853 dest: 'XcmV1MultiLocation',1854 assets: 'XcmV1MultiassetMultiAssetFilter',1855 },1856 BuyExecution: {1857 fees: 'XcmV1MultiAsset',1858 weight: 'u64',1859 debt: 'u64',1860 haltOnError: 'bool',1861 instructions: 'Vec<XcmV1Xcm>'1862 }1863 }1864 },1865 /**1866 * Lookup204: xcm::v1::Response1867 **/1868 XcmV1Response: {1869 _enum: {1870 Assets: 'XcmV1MultiassetMultiAssets',1871 Version: 'u32'1872 }1873 },1874 /**1875 * Lookup218: cumulus_pallet_xcm::pallet::Call<T>1876 **/1877 CumulusPalletXcmCall: 'Null',1878 /**1879 * Lookup219: cumulus_pallet_dmp_queue::pallet::Call<T>1880 **/1881 CumulusPalletDmpQueueCall: {1882 _enum: {1883 service_overweight: {1884 index: 'u64',1885 weightLimit: 'u64'1886 }1887 }1888 },1889 /**1890 * Lookup220: pallet_inflation::pallet::Call<T>1891 **/1892 PalletInflationCall: {1893 _enum: {1894 start_inflation: {1895 inflationStartRelayBlock: 'u32'1896 }1897 }1898 },1899 /**1900 * Lookup221: pallet_unique::Call<T>1901 **/1902 PalletUniqueCall: {1903 _enum: {1904 create_collection: {1905 collectionName: 'Vec<u16>',1906 collectionDescription: 'Vec<u16>',1907 tokenPrefix: 'Bytes',1908 mode: 'UpDataStructsCollectionMode',1909 },1910 create_collection_ex: {1911 data: 'UpDataStructsCreateCollectionData',1912 },1913 destroy_collection: {1914 collectionId: 'u32',1915 },1916 add_to_allow_list: {1917 collectionId: 'u32',1918 address: 'PalletEvmAccountBasicCrossAccountIdRepr',1919 },1920 remove_from_allow_list: {1921 collectionId: 'u32',1922 address: 'PalletEvmAccountBasicCrossAccountIdRepr',1923 },1924 change_collection_owner: {1925 collectionId: 'u32',1926 newOwner: 'AccountId32',1927 },1928 add_collection_admin: {1929 collectionId: 'u32',1930 newAdminId: 'PalletEvmAccountBasicCrossAccountIdRepr',1931 },1932 remove_collection_admin: {1933 collectionId: 'u32',1934 accountId: 'PalletEvmAccountBasicCrossAccountIdRepr',1935 },1936 set_collection_sponsor: {1937 collectionId: 'u32',1938 newSponsor: 'AccountId32',1939 },1940 confirm_sponsorship: {1941 collectionId: 'u32',1942 },1943 remove_collection_sponsor: {1944 collectionId: 'u32',1945 },1946 create_item: {1947 collectionId: 'u32',1948 owner: 'PalletEvmAccountBasicCrossAccountIdRepr',1949 data: 'UpDataStructsCreateItemData',1950 },1951 create_multiple_items: {1952 collectionId: 'u32',1953 owner: 'PalletEvmAccountBasicCrossAccountIdRepr',1954 itemsData: 'Vec<UpDataStructsCreateItemData>',1955 },1956 set_collection_properties: {1957 collectionId: 'u32',1958 properties: 'Vec<UpDataStructsProperty>',1959 },1960 delete_collection_properties: {1961 collectionId: 'u32',1962 propertyKeys: 'Vec<Bytes>',1963 },1964 set_token_properties: {1965 collectionId: 'u32',1966 tokenId: 'u32',1967 properties: 'Vec<UpDataStructsProperty>',1968 },1969 delete_token_properties: {1970 collectionId: 'u32',1971 tokenId: 'u32',1972 propertyKeys: 'Vec<Bytes>',1973 },1974 set_token_property_permissions: {1975 collectionId: 'u32',1976 propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1977 },1978 create_multiple_items_ex: {1979 collectionId: 'u32',1980 data: 'UpDataStructsCreateItemExData',1981 },1982 set_transfers_enabled_flag: {1983 collectionId: 'u32',1984 value: 'bool',1985 },1986 burn_item: {1987 collectionId: 'u32',1988 itemId: 'u32',1989 value: 'u128',1990 },1991 burn_from: {1992 collectionId: 'u32',1993 from: 'PalletEvmAccountBasicCrossAccountIdRepr',1994 itemId: 'u32',1995 value: 'u128',1996 },1997 transfer: {1998 recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',1999 collectionId: 'u32',2000 itemId: 'u32',2001 value: 'u128',2002 },2003 approve: {2004 spender: 'PalletEvmAccountBasicCrossAccountIdRepr',2005 collectionId: 'u32',2006 itemId: 'u32',2007 amount: 'u128',2008 },2009 transfer_from: {2010 from: 'PalletEvmAccountBasicCrossAccountIdRepr',2011 recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',2012 collectionId: 'u32',2013 itemId: 'u32',2014 value: 'u128',2015 },2016 set_collection_limits: {2017 collectionId: 'u32',2018 newLimit: 'UpDataStructsCollectionLimits',2019 },2020 set_collection_permissions: {2021 collectionId: 'u32',2022 newPermission: 'UpDataStructsCollectionPermissions',2023 },2024 repartition: {2025 collectionId: 'u32',2026 tokenId: 'u32',2027 amount: 'u128'2028 }2029 }2030 },2031 /**2032 * Lookup226: up_data_structs::CollectionMode2033 **/2034 UpDataStructsCollectionMode: {2035 _enum: {2036 NFT: 'Null',2037 Fungible: 'u8',2038 ReFungible: 'Null'2039 }2040 },2041 /**2042 * Lookup227: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>2043 **/2044 UpDataStructsCreateCollectionData: {2045 mode: 'UpDataStructsCollectionMode',2046 access: 'Option<UpDataStructsAccessMode>',2047 name: 'Vec<u16>',2048 description: 'Vec<u16>',2049 tokenPrefix: 'Bytes',2050 pendingSponsor: 'Option<AccountId32>',2051 limits: 'Option<UpDataStructsCollectionLimits>',2052 permissions: 'Option<UpDataStructsCollectionPermissions>',2053 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',2054 properties: 'Vec<UpDataStructsProperty>'2055 },2056 /**2057 * Lookup229: up_data_structs::AccessMode2058 **/2059 UpDataStructsAccessMode: {2060 _enum: ['Normal', 'AllowList']2061 },2062 /**2063 * Lookup231: up_data_structs::CollectionLimits2064 **/2065 UpDataStructsCollectionLimits: {2066 accountTokenOwnershipLimit: 'Option<u32>',2067 sponsoredDataSize: 'Option<u32>',2068 sponsoredDataRateLimit: 'Option<UpDataStructsSponsoringRateLimit>',2069 tokenLimit: 'Option<u32>',2070 sponsorTransferTimeout: 'Option<u32>',2071 sponsorApproveTimeout: 'Option<u32>',2072 ownerCanTransfer: 'Option<bool>',2073 ownerCanDestroy: 'Option<bool>',2074 transfersEnabled: 'Option<bool>'2075 },2076 /**2077 * Lookup233: up_data_structs::SponsoringRateLimit2078 **/2079 UpDataStructsSponsoringRateLimit: {2080 _enum: {2081 SponsoringDisabled: 'Null',2082 Blocks: 'u32'2083 }2084 },2085 /**2086 * Lookup236: up_data_structs::CollectionPermissions2087 **/2088 UpDataStructsCollectionPermissions: {2089 access: 'Option<UpDataStructsAccessMode>',2090 mintMode: 'Option<bool>',2091 nesting: 'Option<UpDataStructsNestingPermissions>'2092 },2093 /**2094 * Lookup238: up_data_structs::NestingPermissions2095 **/2096 UpDataStructsNestingPermissions: {2097 tokenOwner: 'bool',2098 collectionAdmin: 'bool',2099 restricted: 'Option<UpDataStructsOwnerRestrictedSet>'2100 },2101 /**2102 * Lookup240: up_data_structs::OwnerRestrictedSet2103 **/2104 UpDataStructsOwnerRestrictedSet: 'BTreeSet<u32>',2105 /**2106 * Lookup245: up_data_structs::PropertyKeyPermission2107 **/2108 UpDataStructsPropertyKeyPermission: {2109 key: 'Bytes',2110 permission: 'UpDataStructsPropertyPermission'2111 },2112 /**2113 * Lookup246: up_data_structs::PropertyPermission2114 **/2115 UpDataStructsPropertyPermission: {2116 mutable: 'bool',2117 collectionAdmin: 'bool',2118 tokenOwner: 'bool'2119 },2120 /**2121 * Lookup249: up_data_structs::Property2122 **/2123 UpDataStructsProperty: {2124 key: 'Bytes',2125 value: 'Bytes'2126 },2127 /**2128 * Lookup252: up_data_structs::CreateItemData2129 **/2130 UpDataStructsCreateItemData: {2131 _enum: {2132 NFT: 'UpDataStructsCreateNftData',2133 Fungible: 'UpDataStructsCreateFungibleData',2134 ReFungible: 'UpDataStructsCreateReFungibleData'2135 }2136 },2137 /**2138 * Lookup253: up_data_structs::CreateNftData2139 **/2140 UpDataStructsCreateNftData: {2141 properties: 'Vec<UpDataStructsProperty>'2142 },2143 /**2144 * Lookup254: up_data_structs::CreateFungibleData2145 **/2146 UpDataStructsCreateFungibleData: {2147 value: 'u128'2148 },2149 /**2150 * Lookup255: up_data_structs::CreateReFungibleData2151 **/2152 UpDataStructsCreateReFungibleData: {2153 pieces: 'u128',2154 properties: 'Vec<UpDataStructsProperty>'2155 },2156 /**2157 * Lookup258: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2158 **/2159 UpDataStructsCreateItemExData: {2160 _enum: {2161 NFT: 'Vec<UpDataStructsCreateNftExData>',2162 Fungible: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',2163 RefungibleMultipleItems: 'Vec<UpDataStructsCreateRefungibleExSingleOwner>',2164 RefungibleMultipleOwners: 'UpDataStructsCreateRefungibleExMultipleOwners'2165 }2166 },2167 /**2168 * Lookup260: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2169 **/2170 UpDataStructsCreateNftExData: {2171 properties: 'Vec<UpDataStructsProperty>',2172 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2173 },2174 /**2175 * Lookup267: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2176 **/2177 UpDataStructsCreateRefungibleExSingleOwner: {2178 user: 'PalletEvmAccountBasicCrossAccountIdRepr',2179 pieces: 'u128',2180 properties: 'Vec<UpDataStructsProperty>'2181 },2182 /**2183 * Lookup269: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2184 **/2185 UpDataStructsCreateRefungibleExMultipleOwners: {2186 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',2187 properties: 'Vec<UpDataStructsProperty>'2188 },2189 /**2190 * Lookup270: pallet_unique_scheduler::pallet::Call<T>2191 **/2192 PalletUniqueSchedulerCall: {2193 _enum: {2194 schedule_named: {2195 id: '[u8;16]',2196 when: 'u32',2197 maybePeriodic: 'Option<(u32,u32)>',2198 priority: 'u8',2199 call: 'FrameSupportScheduleMaybeHashed',2200 },2201 cancel_named: {2202 id: '[u8;16]',2203 },2204 schedule_named_after: {2205 id: '[u8;16]',2206 after: 'u32',2207 maybePeriodic: 'Option<(u32,u32)>',2208 priority: 'u8',2209 call: 'FrameSupportScheduleMaybeHashed'2210 }2211 }2212 },2213 /**2214 * Lookup272: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>2215 **/2216 FrameSupportScheduleMaybeHashed: {2217 _enum: {2218 Value: 'Call',2219 Hash: 'H256'2220 }2221 },2222 /**2223 * Lookup273: pallet_configuration::pallet::Call<T>2224 **/2225 PalletConfigurationCall: {2226 _enum: {2227 set_weight_to_fee_coefficient_override: {2228 coeff: 'Option<u32>',2229 },2230 set_min_gas_price_override: {2231 coeff: 'Option<u64>'2232 }2233 }2234 },2235 /**2236 * Lookup274: pallet_template_transaction_payment::Call<T>2237 **/2238 PalletTemplateTransactionPaymentCall: 'Null',2239 /**2240 * Lookup275: pallet_structure::pallet::Call<T>2241 **/2242 PalletStructureCall: 'Null',2243 /**2244 * Lookup276: pallet_rmrk_core::pallet::Call<T>2245 **/2246 PalletRmrkCoreCall: {2247 _enum: {2248 create_collection: {2249 metadata: 'Bytes',2250 max: 'Option<u32>',2251 symbol: 'Bytes',2252 },2253 destroy_collection: {2254 collectionId: 'u32',2255 },2256 change_collection_issuer: {2257 collectionId: 'u32',2258 newIssuer: 'MultiAddress',2259 },2260 lock_collection: {2261 collectionId: 'u32',2262 },2263 mint_nft: {2264 owner: 'Option<AccountId32>',2265 collectionId: 'u32',2266 recipient: 'Option<AccountId32>',2267 royaltyAmount: 'Option<Permill>',2268 metadata: 'Bytes',2269 transferable: 'bool',2270 resources: 'Option<Vec<RmrkTraitsResourceResourceTypes>>',2271 },2272 burn_nft: {2273 collectionId: 'u32',2274 nftId: 'u32',2275 maxBurns: 'u32',2276 },2277 send: {2278 rmrkCollectionId: 'u32',2279 rmrkNftId: 'u32',2280 newOwner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2281 },2282 accept_nft: {2283 rmrkCollectionId: 'u32',2284 rmrkNftId: 'u32',2285 newOwner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2286 },2287 reject_nft: {2288 rmrkCollectionId: 'u32',2289 rmrkNftId: 'u32',2290 },2291 accept_resource: {2292 rmrkCollectionId: 'u32',2293 rmrkNftId: 'u32',2294 resourceId: 'u32',2295 },2296 accept_resource_removal: {2297 rmrkCollectionId: 'u32',2298 rmrkNftId: 'u32',2299 resourceId: 'u32',2300 },2301 set_property: {2302 rmrkCollectionId: 'Compact<u32>',2303 maybeNftId: 'Option<u32>',2304 key: 'Bytes',2305 value: 'Bytes',2306 },2307 set_priority: {2308 rmrkCollectionId: 'u32',2309 rmrkNftId: 'u32',2310 priorities: 'Vec<u32>',2311 },2312 add_basic_resource: {2313 rmrkCollectionId: 'u32',2314 nftId: 'u32',2315 resource: 'RmrkTraitsResourceBasicResource',2316 },2317 add_composable_resource: {2318 rmrkCollectionId: 'u32',2319 nftId: 'u32',2320 resource: 'RmrkTraitsResourceComposableResource',2321 },2322 add_slot_resource: {2323 rmrkCollectionId: 'u32',2324 nftId: 'u32',2325 resource: 'RmrkTraitsResourceSlotResource',2326 },2327 remove_resource: {2328 rmrkCollectionId: 'u32',2329 nftId: 'u32',2330 resourceId: 'u32'2331 }2332 }2333 },2334 /**2335 * Lookup282: rmrk_traits::resource::ResourceTypes<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2336 **/2337 RmrkTraitsResourceResourceTypes: {2338 _enum: {2339 Basic: 'RmrkTraitsResourceBasicResource',2340 Composable: 'RmrkTraitsResourceComposableResource',2341 Slot: 'RmrkTraitsResourceSlotResource'2342 }2343 },2344 /**2345 * Lookup284: rmrk_traits::resource::BasicResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2346 **/2347 RmrkTraitsResourceBasicResource: {2348 src: 'Option<Bytes>',2349 metadata: 'Option<Bytes>',2350 license: 'Option<Bytes>',2351 thumb: 'Option<Bytes>'2352 },2353 /**2354 * Lookup286: rmrk_traits::resource::ComposableResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2355 **/2356 RmrkTraitsResourceComposableResource: {2357 parts: 'Vec<u32>',2358 base: 'u32',2359 src: 'Option<Bytes>',2360 metadata: 'Option<Bytes>',2361 license: 'Option<Bytes>',2362 thumb: 'Option<Bytes>'2363 },2364 /**2365 * Lookup287: rmrk_traits::resource::SlotResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2366 **/2367 RmrkTraitsResourceSlotResource: {2368 base: 'u32',2369 src: 'Option<Bytes>',2370 metadata: 'Option<Bytes>',2371 slot: 'u32',2372 license: 'Option<Bytes>',2373 thumb: 'Option<Bytes>'2374 },2375 /**2376 * Lookup290: pallet_rmrk_equip::pallet::Call<T>2377 **/2378 PalletRmrkEquipCall: {2379 _enum: {2380 create_base: {2381 baseType: 'Bytes',2382 symbol: 'Bytes',2383 parts: 'Vec<RmrkTraitsPartPartType>',2384 },2385 theme_add: {2386 baseId: 'u32',2387 theme: 'RmrkTraitsTheme',2388 },2389 equippable: {2390 baseId: 'u32',2391 slotId: 'u32',2392 equippables: 'RmrkTraitsPartEquippableList'2393 }2394 }2395 },2396 /**2397 * Lookup293: rmrk_traits::part::PartType<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2398 **/2399 RmrkTraitsPartPartType: {2400 _enum: {2401 FixedPart: 'RmrkTraitsPartFixedPart',2402 SlotPart: 'RmrkTraitsPartSlotPart'2403 }2404 },2405 /**2406 * Lookup295: rmrk_traits::part::FixedPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2407 **/2408 RmrkTraitsPartFixedPart: {2409 id: 'u32',2410 z: 'u32',2411 src: 'Bytes'2412 },2413 /**2414 * Lookup296: rmrk_traits::part::SlotPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2415 **/2416 RmrkTraitsPartSlotPart: {2417 id: 'u32',2418 equippable: 'RmrkTraitsPartEquippableList',2419 src: 'Bytes',2420 z: 'u32'2421 },2422 /**2423 * Lookup297: rmrk_traits::part::EquippableList<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2424 **/2425 RmrkTraitsPartEquippableList: {2426 _enum: {2427 All: 'Null',2428 Empty: 'Null',2429 Custom: 'Vec<u32>'2430 }2431 },2432 /**2433 * 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>>2434 **/2435 RmrkTraitsTheme: {2436 name: 'Bytes',2437 properties: 'Vec<RmrkTraitsThemeThemeProperty>',2438 inherit: 'bool'2439 },2440 /**2441 * Lookup301: rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2442 **/2443 RmrkTraitsThemeThemeProperty: {2444 key: 'Bytes',2445 value: 'Bytes'2446 },2447 /**2448 * Lookup303: pallet_evm::pallet::Call<T>2449 **/2450 PalletEvmCall: {2451 _enum: {2452 withdraw: {2453 address: 'H160',2454 value: 'u128',2455 },2456 call: {2457 source: 'H160',2458 target: 'H160',2459 input: 'Bytes',2460 value: 'U256',2461 gasLimit: 'u64',2462 maxFeePerGas: 'U256',2463 maxPriorityFeePerGas: 'Option<U256>',2464 nonce: 'Option<U256>',2465 accessList: 'Vec<(H160,Vec<H256>)>',2466 },2467 create: {2468 source: 'H160',2469 init: 'Bytes',2470 value: 'U256',2471 gasLimit: 'u64',2472 maxFeePerGas: 'U256',2473 maxPriorityFeePerGas: 'Option<U256>',2474 nonce: 'Option<U256>',2475 accessList: 'Vec<(H160,Vec<H256>)>',2476 },2477 create2: {2478 source: 'H160',2479 init: 'Bytes',2480 salt: 'H256',2481 value: 'U256',2482 gasLimit: 'u64',2483 maxFeePerGas: 'U256',2484 maxPriorityFeePerGas: 'Option<U256>',2485 nonce: 'Option<U256>',2486 accessList: 'Vec<(H160,Vec<H256>)>'2487 }2488 }2489 },2490 /**2491 * Lookup307: pallet_ethereum::pallet::Call<T>2492 **/2493 PalletEthereumCall: {2494 _enum: {2495 transact: {2496 transaction: 'EthereumTransactionTransactionV2'2497 }2498 }2499 },2500 /**2501 * Lookup308: ethereum::transaction::TransactionV22502 **/2503 EthereumTransactionTransactionV2: {2504 _enum: {2505 Legacy: 'EthereumTransactionLegacyTransaction',2506 EIP2930: 'EthereumTransactionEip2930Transaction',2507 EIP1559: 'EthereumTransactionEip1559Transaction'2508 }2509 },2510 /**2511 * Lookup309: ethereum::transaction::LegacyTransaction2512 **/2513 EthereumTransactionLegacyTransaction: {2514 nonce: 'U256',2515 gasPrice: 'U256',2516 gasLimit: 'U256',2517 action: 'EthereumTransactionTransactionAction',2518 value: 'U256',2519 input: 'Bytes',2520 signature: 'EthereumTransactionTransactionSignature'2521 },2522 /**2523 * Lookup310: ethereum::transaction::TransactionAction2524 **/2525 EthereumTransactionTransactionAction: {2526 _enum: {2527 Call: 'H160',2528 Create: 'Null'2529 }2530 },2531 /**2532 * Lookup311: ethereum::transaction::TransactionSignature2533 **/2534 EthereumTransactionTransactionSignature: {2535 v: 'u64',2536 r: 'H256',2537 s: 'H256'2538 },2539 /**2540 * Lookup313: ethereum::transaction::EIP2930Transaction2541 **/2542 EthereumTransactionEip2930Transaction: {2543 chainId: 'u64',2544 nonce: 'U256',2545 gasPrice: 'U256',2546 gasLimit: 'U256',2547 action: 'EthereumTransactionTransactionAction',2548 value: 'U256',2549 input: 'Bytes',2550 accessList: 'Vec<EthereumTransactionAccessListItem>',2551 oddYParity: 'bool',2552 r: 'H256',2553 s: 'H256'2554 },2555 /**2556 * Lookup315: ethereum::transaction::AccessListItem2557 **/2558 EthereumTransactionAccessListItem: {2559 address: 'H160',2560 storageKeys: 'Vec<H256>'2561 },2562 /**2563 * Lookup316: ethereum::transaction::EIP1559Transaction2564 **/2565 EthereumTransactionEip1559Transaction: {2566 chainId: 'u64',2567 nonce: 'U256',2568 maxPriorityFeePerGas: 'U256',2569 maxFeePerGas: 'U256',2570 gasLimit: 'U256',2571 action: 'EthereumTransactionTransactionAction',2572 value: 'U256',2573 input: 'Bytes',2574 accessList: 'Vec<EthereumTransactionAccessListItem>',2575 oddYParity: 'bool',2576 r: 'H256',2577 s: 'H256'2578 },2579 /**2580 * Lookup317: pallet_evm_migration::pallet::Call<T>2581 **/2582 PalletEvmMigrationCall: {2583 _enum: {2584 begin: {2585 address: 'H160',2586 },2587 set_data: {2588 address: 'H160',2589 data: 'Vec<(H256,H256)>',2590 },2591 finish: {2592 address: 'H160',2593 code: 'Bytes'2594 }2595 }2596 },2597 /**2598 * Lookup320: pallet_sudo::pallet::Error<T>2599 **/2600 PalletSudoError: {2601 _enum: ['RequireSudo']2602 },2603 /**2604 * Lookup322: orml_vesting::module::Error<T>2605 **/2606 OrmlVestingModuleError: {2607 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2608 },2609 /**2610 * Lookup324: cumulus_pallet_xcmp_queue::InboundChannelDetails2611 **/2612 CumulusPalletXcmpQueueInboundChannelDetails: {2613 sender: 'u32',2614 state: 'CumulusPalletXcmpQueueInboundState',2615 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2616 },2617 /**2618 * Lookup325: cumulus_pallet_xcmp_queue::InboundState2619 **/2620 CumulusPalletXcmpQueueInboundState: {2621 _enum: ['Ok', 'Suspended']2622 },2623 /**2624 * Lookup328: polkadot_parachain::primitives::XcmpMessageFormat2625 **/2626 PolkadotParachainPrimitivesXcmpMessageFormat: {2627 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2628 },2629 /**2630 * Lookup331: cumulus_pallet_xcmp_queue::OutboundChannelDetails2631 **/2632 CumulusPalletXcmpQueueOutboundChannelDetails: {2633 recipient: 'u32',2634 state: 'CumulusPalletXcmpQueueOutboundState',2635 signalsExist: 'bool',2636 firstIndex: 'u16',2637 lastIndex: 'u16'2638 },2639 /**2640 * Lookup332: cumulus_pallet_xcmp_queue::OutboundState2641 **/2642 CumulusPalletXcmpQueueOutboundState: {2643 _enum: ['Ok', 'Suspended']2644 },2645 /**2646 * Lookup334: cumulus_pallet_xcmp_queue::QueueConfigData2647 **/2648 CumulusPalletXcmpQueueQueueConfigData: {2649 suspendThreshold: 'u32',2650 dropThreshold: 'u32',2651 resumeThreshold: 'u32',2652 thresholdWeight: 'u64',2653 weightRestrictDecay: 'u64',2654 xcmpMaxIndividualWeight: 'u64'2655 },2656 /**2657 * Lookup336: cumulus_pallet_xcmp_queue::pallet::Error<T>2658 **/2659 CumulusPalletXcmpQueueError: {2660 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2661 },2662 /**2663 * Lookup337: pallet_xcm::pallet::Error<T>2664 **/2665 PalletXcmError: {2666 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2667 },2668 /**2669 * Lookup338: cumulus_pallet_xcm::pallet::Error<T>2670 **/2671 CumulusPalletXcmError: 'Null',2672 /**2673 * Lookup339: cumulus_pallet_dmp_queue::ConfigData2674 **/2675 CumulusPalletDmpQueueConfigData: {2676 maxIndividual: 'u64'2677 },2678 /**2679 * Lookup340: cumulus_pallet_dmp_queue::PageIndexData2680 **/2681 CumulusPalletDmpQueuePageIndexData: {2682 beginUsed: 'u32',2683 endUsed: 'u32',2684 overweightCount: 'u64'2685 },2686 /**2687 * Lookup343: cumulus_pallet_dmp_queue::pallet::Error<T>2688 **/2689 CumulusPalletDmpQueueError: {2690 _enum: ['Unknown', 'OverLimit']2691 },2692 /**2693 * Lookup347: pallet_unique::Error<T>2694 **/2695 PalletUniqueError: {2696 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']2697 },2698 /**2699 * Lookup350: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>2700 **/2701 PalletUniqueSchedulerScheduledV3: {2702 maybeId: 'Option<[u8;16]>',2703 priority: 'u8',2704 call: 'FrameSupportScheduleMaybeHashed',2705 maybePeriodic: 'Option<(u32,u32)>',2706 origin: 'OpalRuntimeOriginCaller'2707 },2708 /**2709 * Lookup351: opal_runtime::OriginCaller2710 **/2711 OpalRuntimeOriginCaller: {2712 _enum: {2713 system: 'FrameSupportDispatchRawOrigin',2714 __Unused1: 'Null',2715 __Unused2: 'Null',2716 __Unused3: 'Null',2717 Void: 'SpCoreVoid',2718 __Unused5: 'Null',2719 __Unused6: 'Null',2720 __Unused7: 'Null',2721 __Unused8: 'Null',2722 __Unused9: 'Null',2723 __Unused10: 'Null',2724 __Unused11: 'Null',2725 __Unused12: 'Null',2726 __Unused13: 'Null',2727 __Unused14: 'Null',2728 __Unused15: 'Null',2729 __Unused16: 'Null',2730 __Unused17: 'Null',2731 __Unused18: 'Null',2732 __Unused19: 'Null',2733 __Unused20: 'Null',2734 __Unused21: 'Null',2735 __Unused22: 'Null',2736 __Unused23: 'Null',2737 __Unused24: 'Null',2738 __Unused25: 'Null',2739 __Unused26: 'Null',2740 __Unused27: 'Null',2741 __Unused28: 'Null',2742 __Unused29: 'Null',2743 __Unused30: 'Null',2744 __Unused31: 'Null',2745 __Unused32: 'Null',2746 __Unused33: 'Null',2747 __Unused34: 'Null',2748 __Unused35: 'Null',2749 __Unused36: 'Null',2750 __Unused37: 'Null',2751 __Unused38: 'Null',2752 __Unused39: 'Null',2753 __Unused40: 'Null',2754 __Unused41: 'Null',2755 __Unused42: 'Null',2756 __Unused43: 'Null',2757 __Unused44: 'Null',2758 __Unused45: 'Null',2759 __Unused46: 'Null',2760 __Unused47: 'Null',2761 __Unused48: 'Null',2762 __Unused49: 'Null',2763 __Unused50: 'Null',2764 PolkadotXcm: 'PalletXcmOrigin',2765 CumulusXcm: 'CumulusPalletXcmOrigin',2766 __Unused53: 'Null',2767 __Unused54: 'Null',2768 __Unused55: 'Null',2769 __Unused56: 'Null',2770 __Unused57: 'Null',2771 __Unused58: 'Null',2772 __Unused59: 'Null',2773 __Unused60: 'Null',2774 __Unused61: 'Null',2775 __Unused62: 'Null',2776 __Unused63: 'Null',2777 __Unused64: 'Null',2778 __Unused65: 'Null',2779 __Unused66: 'Null',2780 __Unused67: 'Null',2781 __Unused68: 'Null',2782 __Unused69: 'Null',2783 __Unused70: 'Null',2784 __Unused71: 'Null',2785 __Unused72: 'Null',2786 __Unused73: 'Null',2787 __Unused74: 'Null',2788 __Unused75: 'Null',2789 __Unused76: 'Null',2790 __Unused77: 'Null',2791 __Unused78: 'Null',2792 __Unused79: 'Null',2793 __Unused80: 'Null',2794 __Unused81: 'Null',2795 __Unused82: 'Null',2796 __Unused83: 'Null',2797 __Unused84: 'Null',2798 __Unused85: 'Null',2799 __Unused86: 'Null',2800 __Unused87: 'Null',2801 __Unused88: 'Null',2802 __Unused89: 'Null',2803 __Unused90: 'Null',2804 __Unused91: 'Null',2805 __Unused92: 'Null',2806 __Unused93: 'Null',2807 __Unused94: 'Null',2808 __Unused95: 'Null',2809 __Unused96: 'Null',2810 __Unused97: 'Null',2811 __Unused98: 'Null',2812 __Unused99: 'Null',2813 __Unused100: 'Null',2814 Ethereum: 'PalletEthereumRawOrigin'2815 }2816 },2817 /**2818 * Lookup352: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>2819 **/2820 FrameSupportDispatchRawOrigin: {2821 _enum: {2822 Root: 'Null',2823 Signed: 'AccountId32',2824 None: 'Null'2825 }2826 },2827 /**2828 * Lookup353: pallet_xcm::pallet::Origin2829 **/2830 PalletXcmOrigin: {2831 _enum: {2832 Xcm: 'XcmV1MultiLocation',2833 Response: 'XcmV1MultiLocation'2834 }2835 },2836 /**2837 * Lookup354: cumulus_pallet_xcm::pallet::Origin2838 **/2839 CumulusPalletXcmOrigin: {2840 _enum: {2841 Relay: 'Null',2842 SiblingParachain: 'u32'2843 }2844 },2845 /**2846 * Lookup355: pallet_ethereum::RawOrigin2847 **/2848 PalletEthereumRawOrigin: {2849 _enum: {2850 EthereumTransaction: 'H160'2851 }2852 },2853 /**2854 * Lookup356: sp_core::Void2855 **/2856 SpCoreVoid: 'Null',2857 /**2858 * Lookup357: pallet_unique_scheduler::pallet::Error<T>2859 **/2860 PalletUniqueSchedulerError: {2861 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']2862 },2863 /**2864 * Lookup358: up_data_structs::Collection<sp_core::crypto::AccountId32>2865 **/2866 UpDataStructsCollection: {2867 owner: 'AccountId32',2868 mode: 'UpDataStructsCollectionMode',2869 name: 'Vec<u16>',2870 description: 'Vec<u16>',2871 tokenPrefix: 'Bytes',2872 sponsorship: 'UpDataStructsSponsorshipState',2873 limits: 'UpDataStructsCollectionLimits',2874 permissions: 'UpDataStructsCollectionPermissions',2875 externalCollection: 'bool'2876 },2877 /**2878 * Lookup359: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2879 **/2880 UpDataStructsSponsorshipState: {2881 _enum: {2882 Disabled: 'Null',2883 Unconfirmed: 'AccountId32',2884 Confirmed: 'AccountId32'2885 }2886 },2887 /**2888 * Lookup360: up_data_structs::Properties2889 **/2890 UpDataStructsProperties: {2891 map: 'UpDataStructsPropertiesMapBoundedVec',2892 consumedSpace: 'u32',2893 spaceLimit: 'u32'2894 },2895 /**2896 * Lookup361: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2897 **/2898 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2899 /**2900 * Lookup366: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2901 **/2902 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2903 /**2904 * Lookup373: up_data_structs::CollectionStats2905 **/2906 UpDataStructsCollectionStats: {2907 created: 'u32',2908 destroyed: 'u32',2909 alive: 'u32'2910 },2911 /**2912 * Lookup374: up_data_structs::TokenChild2913 **/2914 UpDataStructsTokenChild: {2915 token: 'u32',2916 collection: 'u32'2917 },2918 /**2919 * Lookup375: PhantomType::up_data_structs<T>2920 **/2921 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',2922 /**2923 * Lookup377: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2924 **/2925 UpDataStructsTokenData: {2926 properties: 'Vec<UpDataStructsProperty>',2927 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>',2928 pieces: 'u128'2929 },2930 /**2931 * Lookup379: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2932 **/2933 UpDataStructsRpcCollection: {2934 owner: 'AccountId32',2935 mode: 'UpDataStructsCollectionMode',2936 name: 'Vec<u16>',2937 description: 'Vec<u16>',2938 tokenPrefix: 'Bytes',2939 sponsorship: 'UpDataStructsSponsorshipState',2940 limits: 'UpDataStructsCollectionLimits',2941 permissions: 'UpDataStructsCollectionPermissions',2942 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',2943 properties: 'Vec<UpDataStructsProperty>',2944 readOnly: 'bool'2945 },2946 /**2947 * 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>2948 **/2949 RmrkTraitsCollectionCollectionInfo: {2950 issuer: 'AccountId32',2951 metadata: 'Bytes',2952 max: 'Option<u32>',2953 symbol: 'Bytes',2954 nftsCount: 'u32'2955 },2956 /**2957 * Lookup381: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2958 **/2959 RmrkTraitsNftNftInfo: {2960 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2961 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',2962 metadata: 'Bytes',2963 equipped: 'bool',2964 pending: 'bool'2965 },2966 /**2967 * Lookup383: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>2968 **/2969 RmrkTraitsNftRoyaltyInfo: {2970 recipient: 'AccountId32',2971 amount: 'Permill'2972 },2973 /**2974 * Lookup384: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2975 **/2976 RmrkTraitsResourceResourceInfo: {2977 id: 'u32',2978 resource: 'RmrkTraitsResourceResourceTypes',2979 pending: 'bool',2980 pendingRemoval: 'bool'2981 },2982 /**2983 * Lookup385: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2984 **/2985 RmrkTraitsPropertyPropertyInfo: {2986 key: 'Bytes',2987 value: 'Bytes'2988 },2989 /**2990 * Lookup386: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2991 **/2992 RmrkTraitsBaseBaseInfo: {2993 issuer: 'AccountId32',2994 baseType: 'Bytes',2995 symbol: 'Bytes'2996 },2997 /**2998 * Lookup387: rmrk_traits::nft::NftChild2999 **/3000 RmrkTraitsNftNftChild: {3001 collectionId: 'u32',3002 nftId: 'u32'3003 },3004 /**3005 * Lookup389: pallet_common::pallet::Error<T>3006 **/3007 PalletCommonError: {3008 _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']3009 },3010 /**3011 * Lookup391: pallet_fungible::pallet::Error<T>3012 **/3013 PalletFungibleError: {3014 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']3015 },3016 /**3017 * Lookup392: pallet_refungible::ItemData3018 **/3019 PalletRefungibleItemData: {3020 constData: 'Bytes'3021 },3022 /**3023 * Lookup397: pallet_refungible::pallet::Error<T>3024 **/3025 PalletRefungibleError: {3026 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']3027 },3028 /**3029 * Lookup398: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>3030 **/3031 PalletNonfungibleItemData: {3032 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'3033 },3034 /**3035 * Lookup400: up_data_structs::PropertyScope3036 **/3037 UpDataStructsPropertyScope: {3038 _enum: ['None', 'Rmrk', 'Eth']3039 },3040 /**3041 * Lookup402: pallet_nonfungible::pallet::Error<T>3042 **/3043 PalletNonfungibleError: {3044 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']3045 },3046 /**3047 * Lookup403: pallet_structure::pallet::Error<T>3048 **/3049 PalletStructureError: {3050 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']3051 },3052 /**3053 * Lookup404: pallet_rmrk_core::pallet::Error<T>3054 **/3055 PalletRmrkCoreError: {3056 _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']3057 },3058 /**3059 * Lookup406: pallet_rmrk_equip::pallet::Error<T>3060 **/3061 PalletRmrkEquipError: {3062 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']3063 },3064 /**3065 * Lookup409: pallet_evm::pallet::Error<T>3066 **/3067 PalletEvmError: {3068 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']3069 },3070 /**3071 * Lookup412: fp_rpc::TransactionStatus3072 **/3073 FpRpcTransactionStatus: {3074 transactionHash: 'H256',3075 transactionIndex: 'u32',3076 from: 'H160',3077 to: 'Option<H160>',3078 contractAddress: 'Option<H160>',3079 logs: 'Vec<EthereumLog>',3080 logsBloom: 'EthbloomBloom'3081 },3082 /**3083 * Lookup414: ethbloom::Bloom3084 **/3085 EthbloomBloom: '[u8;256]',3086 /**3087 * Lookup416: ethereum::receipt::ReceiptV33088 **/3089 EthereumReceiptReceiptV3: {3090 _enum: {3091 Legacy: 'EthereumReceiptEip658ReceiptData',3092 EIP2930: 'EthereumReceiptEip658ReceiptData',3093 EIP1559: 'EthereumReceiptEip658ReceiptData'3094 }3095 },3096 /**3097 * Lookup417: ethereum::receipt::EIP658ReceiptData3098 **/3099 EthereumReceiptEip658ReceiptData: {3100 statusCode: 'u8',3101 usedGas: 'U256',3102 logsBloom: 'EthbloomBloom',3103 logs: 'Vec<EthereumLog>'3104 },3105 /**3106 * Lookup418: ethereum::block::Block<ethereum::transaction::TransactionV2>3107 **/3108 EthereumBlock: {3109 header: 'EthereumHeader',3110 transactions: 'Vec<EthereumTransactionTransactionV2>',3111 ommers: 'Vec<EthereumHeader>'3112 },3113 /**3114 * Lookup419: ethereum::header::Header3115 **/3116 EthereumHeader: {3117 parentHash: 'H256',3118 ommersHash: 'H256',3119 beneficiary: 'H160',3120 stateRoot: 'H256',3121 transactionsRoot: 'H256',3122 receiptsRoot: 'H256',3123 logsBloom: 'EthbloomBloom',3124 difficulty: 'U256',3125 number: 'U256',3126 gasLimit: 'U256',3127 gasUsed: 'U256',3128 timestamp: 'u64',3129 extraData: 'Bytes',3130 mixHash: 'H256',3131 nonce: 'EthereumTypesHashH64'3132 },3133 /**3134 * Lookup420: ethereum_types::hash::H643135 **/3136 EthereumTypesHashH64: '[u8;8]',3137 /**3138 * Lookup425: pallet_ethereum::pallet::Error<T>3139 **/3140 PalletEthereumError: {3141 _enum: ['InvalidSignature', 'PreLogExists']3142 },3143 /**3144 * Lookup426: pallet_evm_coder_substrate::pallet::Error<T>3145 **/3146 PalletEvmCoderSubstrateError: {3147 _enum: ['OutOfGas', 'OutOfFund']3148 },3149 /**3150 * Lookup427: pallet_evm_contract_helpers::SponsoringModeT3151 **/3152 PalletEvmContractHelpersSponsoringModeT: {3153 _enum: ['Disabled', 'Allowlisted', 'Generous']3154 },3155 /**3156 * Lookup429: pallet_evm_contract_helpers::pallet::Error<T>3157 **/3158 PalletEvmContractHelpersError: {3159 _enum: ['NoPermission']3160 },3161 /**3162 * Lookup430: pallet_evm_migration::pallet::Error<T>3163 **/3164 PalletEvmMigrationError: {3165 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']3166 },3167 /**3168 * Lookup432: sp_runtime::MultiSignature3169 **/3170 SpRuntimeMultiSignature: {3171 _enum: {3172 Ed25519: 'SpCoreEd25519Signature',3173 Sr25519: 'SpCoreSr25519Signature',3174 Ecdsa: 'SpCoreEcdsaSignature'3175 }3176 },3177 /**3178 * Lookup433: sp_core::ed25519::Signature3179 **/3180 SpCoreEd25519Signature: '[u8;64]',3181 /**3182 * Lookup435: sp_core::sr25519::Signature3183 **/3184 SpCoreSr25519Signature: '[u8;64]',3185 /**3186 * Lookup436: sp_core::ecdsa::Signature3187 **/3188 SpCoreEcdsaSignature: '[u8;65]',3189 /**3190 * Lookup439: frame_system::extensions::check_spec_version::CheckSpecVersion<T>3191 **/3192 FrameSystemExtensionsCheckSpecVersion: 'Null',3193 /**3194 * Lookup440: frame_system::extensions::check_genesis::CheckGenesis<T>3195 **/3196 FrameSystemExtensionsCheckGenesis: 'Null',3197 /**3198 * Lookup443: frame_system::extensions::check_nonce::CheckNonce<T>3199 **/3200 FrameSystemExtensionsCheckNonce: 'Compact<u32>',3201 /**3202 * Lookup444: frame_system::extensions::check_weight::CheckWeight<T>3203 **/3204 FrameSystemExtensionsCheckWeight: 'Null',3205 /**3206 * Lookup445: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>3207 **/3208 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',3209 /**3210 * Lookup446: opal_runtime::Runtime3211 **/3212 OpalRuntimeRuntime: 'Null',3213 /**3214 * Lookup447: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>3215 **/3216 PalletEthereumFakeTransactionFinalizer: 'Null'3217};tests/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;
tests/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
tests/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);
+}
tests/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;
+ });
+ });
+});
tests/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
tests/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;
+ });
+ });
+});
tests/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
tests/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;
+ });
+ });
+});
tests/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;
- });
- });
-});