git.delta.rocks / unique-network / refs/commits / b45c52c13630

difftreelog

merge develop into /test/playground-migration

rkv2022-09-21parents: #f5a3434 #ad0580a.patch.diff
in: master

154 files changed

added.docker/Dockerfile-acala.j2diffbeforeafterboth

no changes

modified.docker/Dockerfile-chain-devdiffbeforeafterboth
1FROM ubuntu:20.041FROM ubuntu:20.04
22
3ARG RUST_TOOLCHAIN=
4ARG FEATURE=
5
3ENV DEBIAN_FRONTEND=noninteractive6ENV DEBIAN_FRONTEND=noninteractive
4ENV TZ=Etc/UTC7ENV TZ=Etc/UTC
5
6RUN apt-get update && apt-get install -y git curl libssl-dev llvm pkg-config libclang-dev clang git make cmake8ENV FEATURE=$FEATURE
7
8ENV CARGO_HOME="/cargo-home"9ENV CARGO_HOME="/cargo-home"
9ENV PATH="/cargo-home/bin:$PATH"10ENV PATH="/cargo-home/bin:$PATH"
1011
11RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none12RUN echo "$FEATURE\n" && echo "$RUST_TOOLCHAIN\n"
1213
13ARG RUST_TOOLCHAIN=14RUN apt-get update && apt-get install -y git curl libssl-dev llvm pkg-config libclang-dev clang git make cmake
15
14ARG FEATURE=16RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
1517
16RUN rustup toolchain uninstall $(rustup toolchain list) && \18RUN rustup toolchain uninstall $(rustup toolchain list) && \
17 rustup toolchain install $RUST_TOOLCHAIN && \19 rustup toolchain install $RUST_TOOLCHAIN && \
24WORKDIR /dev_chain26WORKDIR /dev_chain
2527
26RUN cargo build --release28RUN cargo build --release
29RUN echo "$FEATURE"
2730
28CMD cargo run --release --features=$FEATURE -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external31CMD cargo run --release --features=$FEATURE -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external
2932
added.docker/Dockerfile-cumulus.j2diffbeforeafterboth

no changes

added.docker/Dockerfile-moonbeam.j2diffbeforeafterboth

no changes

added.docker/Dockerfile-polkadot.j2diffbeforeafterboth

no changes

modified.docker/Dockerfile-try-runtimediffbeforeafterboth
47 cargo build --features=$FEATURE --release47 cargo build --features=$FEATURE --release
48 48
4949
50CMD cargo run --features=$FEATURE --release -- try-runtime on-runtime-upgrade live --uri $REPLICA_FROM50CMD cargo run --features=try-runtime,$FEATURE --release -- try-runtime on-runtime-upgrade live --uri $REPLICA_FROM
5151
added.docker/Dockerfile-xcm.j2diffbeforeafterboth

no changes

modified.docker/docker-compose.tmp-dev.j2diffbeforeafterboth
18 options:18 options:
19 max-size: "1m"19 max-size: "1m"
20 max-file: "3"20 max-file: "3"
21 command: cargo run --release --features=$FEATURE -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external21 command: cargo run --release --features={{ FEATURE }} -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external
2222
added.docker/docker-compose.tmp-xcm-tests.j2diffbeforeafterboth

no changes

added.docker/xcm-config/5validators.jsonnetdiffbeforeafterboth

no changes

added.docker/xcm-config/launch-config-xcm-opal.jsondiffbeforeafterboth

no changes

added.docker/xcm-config/launch-config-xcm-quartz.jsondiffbeforeafterboth

no changes

added.docker/xcm-config/launch-config-xcm-unique-rococo.jsondiffbeforeafterboth

no changes

added.docker/xcm-config/launch-config-xcm-unique.jsondiffbeforeafterboth

no changes

added.docker/xcm-config/minBondFix.jsonnetdiffbeforeafterboth

no changes

modified.envdiffbeforeafterboth
13QUARTZ_REPLICA_FROM=wss://eu-ws-quartz.unique.network:44313QUARTZ_REPLICA_FROM=wss://eu-ws-quartz.unique.network:443
14UNIQUE_REPLICA_FROM=wss://eu-ws.unique.network:44314UNIQUE_REPLICA_FROM=wss://eu-ws.unique.network:443
15
16POLKADOT_LAUNCH_BRANCH=feature/rewrite-chain-id-in-spec
17
18KARURA_BUILD_BRANCH=2.9.1
19ACALA_BUILD_BRANCH=2.9.2
20
21MOONRIVER_BUILD_BRANCH=runtime-1701
22MOONBEAM_BUILD_BRANCH=runtime-1701
23
24STATEMINE_BUILD_BRANCH=parachains-v9270
25STATEMINT_BUILD_BRANCH=release-parachains-v9230
26WESTMINT_BUILD_BRANCH=parachains-v9270
1527
28
modified.github/workflows/dev-build-tests_v2.ymldiffbeforeafterboth
6868
69 - name: Run tests69 - name: Run tests
70 working-directory: tests70 working-directory: tests
71 run: |71 run: |
72 yarn install72 yarn install
73 yarn add mochawesome73 yarn add mochawesome
74 echo "Ready to start tests"74 node scripts/readyness.js
75 node scripts/readyness.js75 echo "Ready to start tests"
76 yarn polkadot-types76 yarn polkadot-types
77 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW}77 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW}
78 env:78 env:
79 RPC_URL: http://127.0.0.1:9933/79 RPC_URL: http://127.0.0.1:9933/
8080
96 if: always() # run this step always96 if: always() # run this step always
97 run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down97 run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down
9898
99 - name: Remove builder cache
100 if: always() # run this step always
101 run: |
102 docker builder prune -f -a
103 docker system prune -f
104 docker image prune -f -a
modified.github/workflows/market-test_v2.ymldiffbeforeafterboth
45 repository: 'UniqueNetwork/market-e2e-tests'45 repository: 'UniqueNetwork/market-e2e-tests'
46 ssh-key: ${{ secrets.GH_PAT }}46 ssh-key: ${{ secrets.GH_PAT }}
47 path: 'qa-tests'47 path: 'qa-tests'
48 ref: 'ci_test_v2'48 ref: 'master'
4949
50 - name: Read .env file50 - name: Read .env file
51 uses: xom9ikk/dotenv@v1.0.251 uses: xom9ikk/dotenv@v1.0.2
175 - name: Stop running containers174 - name: Stop running containers
176 if: always() # run this step always175 if: always() # run this step always
177 run: docker-compose -f "qa-tests/.docker/docker-compose.market.yml" -f "qa-tests/.docker/docker-compose.${{ matrix.network }}.yml" down --volumes176 run: docker-compose -f "qa-tests/.docker/docker-compose.market.yml" -f "qa-tests/.docker/docker-compose.${{ matrix.network }}.yml" down --volumes
178# run: docker-compose -f "qa-tests/.docker/docker-compose.market.yml" -f "qa-tests/.docker/docker-compose.${{ matrix.network }}.yml" down
179177
180 - name: Remove builder cache178 - name: Remove builder cache
181 if: always() # run this step always179 if: always() # run this step always
modified.github/workflows/node-only-update_v2.ymldiffbeforeafterboth
10# A workflow run is made up of one or more jobs that can run sequentially or in parallel10# A workflow run is made up of one or more jobs that can run sequentially or in parallel
11jobs:11jobs:
1212
13 execution-marix:13 nodes-execution-matrix:
1414
15 name: execution matrix15 name: execution matrix
1616
4242
4343
4444
45 forkless-update-nodata:45 nodes-only-update:
46 needs: execution-marix46 needs: nodes-execution-matrix
47 # The type of runner that the job will run on47 # The type of runner that the job will run on
48 runs-on: [self-hosted-ci,large]48 runs-on: [self-hosted-ci,large]
4949
5757
58 strategy:58 strategy:
59 matrix:59 matrix:
60 include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}}60 include: ${{fromJson(needs.nodes-execution-matrix.outputs.matrix)}}
6161
62 steps:62 steps:
6363
156 exit 0156 exit 0
157 shell: bash157 shell: bash
158
159 - name: Checkout at '${{ matrix.mainnet_branch }}' branch
160 uses: actions/checkout@master
161 with:
162 ref: ${{ matrix.mainnet_branch }} #Checking out head commit
163 path: ${{ matrix.mainnet_branch }}
164
158165
159 - name: Run tests before Node Parachain upgrade166 - name: Run tests before Node Parachain upgrade
160 working-directory: tests167 working-directory: ${{ matrix.mainnet_branch }}/tests
161 run: |168 run: |
162 yarn install169 yarn install
163 yarn add mochawesome170 yarn add mochawesome
164 node scripts/readyness.js171 echo "Ready to start tests"
165 echo "Ready to start tests"172 yarn polkadot-types
166 yarn polkadot-types173 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW}
167 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW}
168 env:174 env:
169 RPC_URL: http://127.0.0.1:9933/175 RPC_URL: http://127.0.0.1:9933/
170176
174 if: success() || failure() # run this step even if previous step failed180 if: success() || failure() # run this step even if previous step failed
175 with:181 with:
176 name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created182 name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created
177 path: tests/mochawesome-report/test-*.json # Path to test results183 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-*.json # Path to test results
178 reporter: mochawesome-json184 reporter: mochawesome-json
179 fail-on-error: 'false'185 fail-on-error: 'false'
180186
262268
263 - name: Remove builder cache269 - name: Remove builder cache
264 if: always() # run this step always270 if: always() # run this step always
265 run: |271 run: |
266 docker builder prune -f272 docker builder prune -f -a
267 docker system prune -f273 docker system prune -f
274 docker image prune -f -a
268275
269 - name: Clean Workspace276 - name: Clean Workspace
270 if: always()277 if: always()
modified.github/workflows/try-runtime_v2.ymldiffbeforeafterboth

no syntactic changes

deleted.github/workflows/xcm-testnet-build.ymldiffbeforeafterboth

no changes

deleted.github/workflows/xcm-tests_v2.ymldiffbeforeafterboth

no changes

modified.github/workflows/xcm.ymldiffbeforeafterboth
1name: Nesting XCM1name: xcm-testnet-build
22
3# Controls when the action will run.
3on:4on:
4 workflow_call:5 workflow_call:
56
67 # Allows you to run this workflow manually from the Actions tab
8 workflow_dispatch:
9
10#Define Workflow variables
11env:
12 REPO_URL: ${{ github.server_url }}/${{ github.repository }}
13
14# A workflow run is made up of one or more jobs that can run sequentially or in parallel
7jobs:15jobs:
16
17 prepare-execution-marix:
18
19 name: Prepare execution matrix
20
21 runs-on: [XL]
22 outputs:
23 matrix: ${{ steps.create_matrix.outputs.matrix }}
24
25 steps:
26
27 - name: Clean Workspace
28 uses: AutoModality/action-clean@v1.1.0
29
30 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
31 - uses: actions/checkout@v3
32 with:
33 ref: ${{ github.head_ref }} #Checking out head commit
34
35 - name: Read .env file
36 uses: xom9ikk/dotenv@v1.0.2
37
38 - name: Create Execution matrix
39 uses: fabiocaccamo/create-matrix-action@v2
40 id: create_matrix
41 with:
42 matrix: |
43 network {opal}, runtime {opal}, features {opal-runtime}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.WESTMINT_BUILD_BRANCH }}}, runtest {testXcmOpal}
44 network {quartz}, runtime {quartz}, features {quartz-runtime}, acala_version {${{ env.KARURA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONRIVER_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINE_BUILD_BRANCH }}}, runtest {testXcmQuartz}
45 network {unique}, runtime {unique}, features {unique-runtime}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINT_BUILD_BRANCH }}}, runtest {testXcmUnique}
846
9 xcm-testnet-build:47 xcm-build:
48
49 needs: prepare-execution-marix
50 # The type of runner that the job will run on
51 runs-on: [XL]
52
53 timeout-minutes: 600
54
10 name: testnet build55 name: ${{ matrix.network }}
56
57 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.
58
59 strategy:
60 matrix:
61 include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}}
62
63 steps:
64 - name: Skip if pull request is in Draft
65 if: github.event.pull_request.draft == true
66 run: exit 1
67
68 - name: Clean Workspace
11 uses: ./.github/workflows/xcm-testnet-build.yml69 uses: AutoModality/action-clean@v1.1.0
70
71 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
12 secrets: inherit72 - uses: actions/checkout@v3
73 with:
74 ref: ${{ github.head_ref }} #Checking out head commit
75
76 - name: Read .env file
77 uses: xom9ikk/dotenv@v1.0.2
78
79 - name: Log in to Docker Hub
80 uses: docker/login-action@v2.0.0
81 with:
82 username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}
83 password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}
84
85 - name: Install jq
86 run: sudo apt install jq -y
87
88 # Check POLKADOT version and build it if it doesn't exist in repository
89 - name: Generate ENV related extend Dockerfile file for POLKADOT
90 uses: cuchi/jinja2-action@v1.2.0
91 with:
92 template: .docker/Dockerfile-polkadot.j2
93 output_file: .docker/Dockerfile-polkadot.${{ env.POLKADOT_BUILD_BRANCH }}.yml
94 variables: |
95 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
96 POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }}
97
98 - name: Check if the dockerhub repository contains the needed version POLKADOT
99 run: |
100 # aquire token
101 TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
102 export TOKEN=$TOKEN
103
104 # Get TAGS from DOCKERHUB POLKADOT repository
105 POLKADOT_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-polkadot/tags/?page_size=100 | jq -r '."results"[]["name"]')
106 # Show TAGS
107 echo "POLKADOT TAGS:"
108 echo $POLKADOT_TAGS
109 # Check correct version POLKADOT and build it if it doesn't exist in POLKADOT TAGS
110 if [[ ${POLKADOT_TAGS[*]} =~ (^|[[:space:]])"${{ env.POLKADOT_BUILD_BRANCH }}"($|[[:space:]]) ]]; then
111 echo "Repository has needed POLKADOT version";
112 docker pull uniquenetwork/builder-polkadot:${{ env.POLKADOT_BUILD_BRANCH }}
113 else
114 echo "Repository has not needed POLKADOT version, so build it";
115 cd .docker/ && docker build --no-cache --file ./Dockerfile-polkadot.${{ env.POLKADOT_BUILD_BRANCH }}.yml --tag uniquenetwork/builder-polkadot:${{ env.POLKADOT_BUILD_BRANCH }} .
116 echo "Push needed POLKADOT version to the repository";
117 docker push uniquenetwork/builder-polkadot:${{ env.POLKADOT_BUILD_BRANCH }}
118 fi
119 shell: bash
120
121 # Check ACALA version and build it if it doesn't exist in repository
122 - name: Generate ENV related extend Dockerfile file for ACALA
123 uses: cuchi/jinja2-action@v1.2.0
124 with:
125 template: .docker/Dockerfile-acala.j2
126 output_file: .docker/Dockerfile-acala.${{ matrix.acala_version }}.yml
127 variables: |
128 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
129 ACALA_BUILD_BRANCH=${{ matrix.acala_version }}
130
131 - name: Check if the dockerhub repository contains the needed ACALA version
132 run: |
133 # aquire token
134 TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
135 export TOKEN=$TOKEN
136
137 # Get TAGS from DOCKERHUB repository
138 ACALA_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-acala/tags/?page_size=100 | jq -r '."results"[]["name"]')
139 # Show TAGS
140 echo "ACALA TAGS:"
141 echo $ACALA_TAGS
142 # Check correct version ACALA and build it if it doesn't exist in ACALA TAGS
143 if [[ ${ACALA_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.acala_version }}"($|[[:space:]]) ]]; then
144 echo "Repository has needed ACALA version";
145 docker pull uniquenetwork/builder-acala:${{ matrix.acala_version }}
146 else
147 echo "Repository has not needed ACALA version, so build it";
148 cd .docker/ && docker build --no-cache --file ./Dockerfile-acala.${{ matrix.acala_version }}.yml --tag uniquenetwork/builder-acala:${{ matrix.acala_version }} .
149 echo "Push needed ACALA version to the repository";
150 docker push uniquenetwork/builder-acala:${{ matrix.acala_version }}
151 fi
152 shell: bash
153
154 # Check MOONBEAM version and build it if it doesn't exist in repository
155 - name: Generate ENV related extend Dockerfile file for MOONBEAM
156 uses: cuchi/jinja2-action@v1.2.0
157 with:
158 template: .docker/Dockerfile-moonbeam.j2
159 output_file: .docker/Dockerfile-moonbeam.${{ matrix.moonbeam_version }}.yml
160 variables: |
161 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
162 MOONBEAM_BUILD_BRANCH=${{ matrix.moonbeam_version }}
163
164 - name: Check if the dockerhub repository contains the needed MOONBEAM version
165 run: |
166 # aquire token
167 TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
168 export TOKEN=$TOKEN
169
170 # Get TAGS from DOCKERHUB repository
171 MOONBEAM_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-moonbeam/tags/?page_size=100 | jq -r '."results"[]["name"]')
172 # Show TAGS
173 echo "MOONBEAM TAGS:"
174 echo $MOONBEAM_TAGS
175 # Check correct version MOONBEAM and build it if it doesn't exist in MOONBEAM TAGS
176 if [[ ${MOONBEAM_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.moonbeam_version }}"($|[[:space:]]) ]]; then
177 echo "Repository has needed MOONBEAM version";
178 docker pull uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}
179 else
180 echo "Repository has not needed MOONBEAM version, so build it";
181 cd .docker/ && docker build --no-cache --file ./Dockerfile-moonbeam.${{ matrix.moonbeam_version }}.yml --tag uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }} .
182 echo "Push needed MOONBEAM version to the repository";
183 docker push uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}
184 fi
185 shell: bash
186
187
188 # Check CUMULUS version and build it if it doesn't exist in repository
189 - name: Generate ENV related extend Dockerfile file for CUMULUS
190 uses: cuchi/jinja2-action@v1.2.0
191 with:
192 template: .docker/Dockerfile-cumulus.j2
193 output_file: .docker/Dockerfile-cumulus.${{ matrix.cumulus_version }}.yml
194 variables: |
195 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
196 CUMULUS_BUILD_BRANCH=${{ matrix.cumulus_version }}
197
198 - name: Check if the dockerhub repository contains the needed CUMULUS version
199 run: |
200 # aquire token
201 TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
202 export TOKEN=$TOKEN
203
204 # Get TAGS from DOCKERHUB repository
205 CUMULUS_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-cumulus/tags/?page_size=100 | jq -r '."results"[]["name"]')
206 # Show TAGS
207 echo "CUMULUS TAGS:"
208 echo $CUMULUS_TAGS
209 # Check correct version CUMULUS and build it if it doesn't exist in CUMULUS TAGS
210 if [[ ${CUMULUS_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.cumulus_version }}"($|[[:space:]]) ]]; then
211 echo "Repository has needed CUMULUS version";
212 docker pull uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}
213 else
214 echo "Repository has not needed CUMULUS version, so build it";
215 cd .docker/ && docker build --no-cache --file ./Dockerfile-cumulus.${{ matrix.cumulus_version }}.yml --tag uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }} .
216 echo "Push needed CUMULUS version to the repository";
217 docker push uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}
218 fi
219 shell: bash
220
221
222 # Build main image for XCM
223 - name: Generate ENV related extend Dockerfile file
224 uses: cuchi/jinja2-action@v1.2.0
225 with:
226 template: .docker/Dockerfile-xcm.j2
227 output_file: .docker/Dockerfile-xcm.${{ matrix.network }}.yml
228 variables: |
229 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
230 NETWORK=${{ matrix.network }}
231 POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }}
232 POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }}
233 FEATURE=${{ matrix.features }}
234 RUNTIME=${{ matrix.runtime }}
235 BRANCH=${{ github.head_ref }}
236 ACALA_BUILD_BRANCH=${{ matrix.acala_version }}
237 MOONBEAM_BUILD_BRANCH=${{ matrix.moonbeam_version }}
238 CUMULUS_BUILD_BRANCH=${{ matrix.cumulus_version }}
239
240 - name: Show build Dockerfile
241 run: cat .docker/Dockerfile-xcm.${{ matrix.network }}.yml
242
243 - name: Show launch-config-xcm-${{ matrix.network }} configuration
244 run: cat .docker/xcm-config/launch-config-xcm-${{ matrix.network }}.json
245
246 - name: Run find-and-replace to remove slashes from branch name
247 uses: mad9000/actions-find-and-replace-string@2
248 id: branchname
249 with:
250 source: ${{ github.head_ref }}
251 find: '/'
252 replace: '-'
253
254 - name: Pull chainql docker image
255 run: docker pull uniquenetwork/builder-chainql:latest
256
257 - name: Build the stack
258 run: cd .docker/ && docker build --no-cache --file ./Dockerfile-xcm.${{ matrix.network }}.yml --tag uniquenetwork/xcm-${{ matrix.network }}-testnet-local:nightly-${{ steps.branchname.outputs.value }}-${{ github.sha }} --tag uniquenetwork/xcm-${{ matrix.network }}-testnet-local:latest .
259
260 - name: Push docker image version
261 run: docker push uniquenetwork/xcm-${{ matrix.network }}-testnet-local:nightly-${{ steps.branchname.outputs.value }}-${{ github.sha }}
262
263 - name: Push docker image latest
264 run: docker push uniquenetwork/xcm-${{ matrix.network }}-testnet-local:latest
265
266 - name: Remove builder cache
267 if: always() # run this step always
268 run: |
269 docker builder prune -f
270 docker system prune -f
13271
14 xcm-tests:272 xcm-tests:
273 needs: [prepare-execution-marix, xcm-build]
274 # The type of runner that the job will run on
275 runs-on: [XL]
276
277 timeout-minutes: 600
278
279 name: ${{ matrix.network }}
280
281 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.
282
283 strategy:
284 matrix:
285 include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}}
286
287 steps:
288 - name: Skip if pull request is in Draft
289 if: github.event.pull_request.draft == true
290 run: exit 1
291
292 - name: Clean Workspace
293 uses: AutoModality/action-clean@v1.1.0
294
295 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
296 - uses: actions/checkout@v3
297 with:
298 ref: ${{ github.head_ref }} #Checking out head commit
299
300 - name: Read .env file
301 uses: xom9ikk/dotenv@v1.0.2
302
303 - name: Generate ENV related extend file for docker-compose
304 uses: cuchi/jinja2-action@v1.2.0
305 with:
306 template: .docker/docker-compose.tmp-xcm-tests.j2
307 output_file: .docker/docker-compose.xcm-tests.${{ matrix.network }}.yml
308 variables: |
309 NETWORK=${{ matrix.network }}
310
311 - name: Show build configuration
312 run: cat .docker/docker-compose.xcm-tests.${{ matrix.network }}.yml
313
314 - uses: actions/setup-node@v3
315 with:
316 node-version: 16
317
318 - name: Build the stack
319 run: docker-compose -f ".docker/docker-compose.xcm-tests.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300
320
321 # 🚀 POLKADOT LAUNCH COMPLETE 🚀
322 - name: Check if docker logs consist messages related to testing of xcm tests
323 if: success()
324 run: |
325 counter=160
326 function check_container_status {
327 docker inspect -f {{.State.Running}} xcm-${{ matrix.network }}-testnet-local
328 }
329 function do_docker_logs {
330 docker logs --details xcm-${{ matrix.network }}-testnet-local 2>&1
331 }
332 function is_started {
333 if [ "$(check_container_status)" == "true" ]; then
334 echo "Container: xcm-${{ matrix.network }}-testnet-local RUNNING";
335 echo "Check Docker logs"
336 DOCKER_LOGS=$(do_docker_logs)
337 if [[ ${DOCKER_LOGS} = *"POLKADOT LAUNCH COMPLETE"* ]];then
338 echo "🚀 POLKADOT LAUNCH COMPLETE 🚀"
339 return 0
340 else
341 echo "Message not found in logs output, repeating..."
342 return 1
343 fi
344 else
345 echo "Container xcm-${{ matrix.network }}-testnet-local NOT RUNNING"
346 echo "Halting all future checks"
347 exit 1
348 fi
349 echo "something goes wrong"
350 exit 1
351 }
352 while ! is_started; do
353 echo "Waiting for special message in log files "
354 sleep 30s
355 counter=$(( $counter - 1 ))
356 echo "Counter: $counter"
357 if [ "$counter" -gt "0" ]; then
358 continue
359 else
360 break
361 fi
362 done
363 echo "Halting script"
364 exit 0
365 shell: bash
366
15 name: tests367 - name: Run XCM tests
368 working-directory: tests
369 run: |
370 yarn install
371 yarn add mochawesome
372 node scripts/readyness.js
373 echo "Ready to start tests"
374 yarn polkadot-types
375 NOW=$(date +%s) && yarn ${{ matrix.runtest }} --reporter mochawesome --reporter-options reportFilename=test-${NOW}
376 env:
377 RPC_URL: http://127.0.0.1:9933/
378
379 - name: XCM Test Report
16 needs: [ xcm-testnet-build ]380 uses: phoenix-actions/test-reporting@v8
381 id: test-report
382 if: success() || failure() # run this step even if previous step failed
383 with:
384 name: XCM Tests ${{ matrix.network }} # Name of the check run which will be created
385 path: tests/mochawesome-report/test-*.json # Path to test results
386 reporter: mochawesome-json
387 fail-on-error: 'false'
388
389 - name: Stop running containers
390 if: always() # run this step always
391 run: docker-compose -f ".docker/docker-compose.xcm-tests.${{ matrix.network }}.yml" down
392
393 - name: Clean Workspace
394 if: always()
17 uses: ./.github/workflows/xcm-tests_v2.yml395 uses: AutoModality/action-clean@v1.1.0
396
397 - name: Remove builder cache
398 if: always() # run this step always
399 run: |
400 docker system prune -a -f
18401
19
20
modifiedCargo.lockdiffbeforeafterboth
696 "once_cell",696 "once_cell",
697]697]
698
699[[package]]
700name = "bondrewd"
701version = "0.1.14"
702source = "registry+https://github.com/rust-lang/crates.io-index"
703checksum = "6d1660fac8d3acced44dac64453fafedf5aab2de196b932c727e63e4ae42d1cc"
704dependencies = [
705 "bondrewd-derive",
706]
707
708[[package]]
709name = "bondrewd-derive"
710version = "0.3.18"
711source = "registry+https://github.com/rust-lang/crates.io-index"
712checksum = "723da0dee1eef38edc021b0793f892bdc024500c6a5b0727a2efe16f0e0a6977"
713dependencies = [
714 "proc-macro2",
715 "quote",
716 "syn",
717]
698718
699[[package]]719[[package]]
700name = "bounded-vec"720name = "bounded-vec"
4585 "value-bag",4605 "value-bag",
4586]4606]
4607
4608[[package]]
4609name = "logtest"
4610version = "2.0.0"
4611source = "registry+https://github.com/rust-lang/crates.io-index"
4612checksum = "eb3e43a8657c1d64516dcc9db8ca03826a4aceaf89d5ce1b37b59f6ff0e43026"
4613dependencies = [
4614 "lazy_static",
4615 "log",
4616]
45874617
4588[[package]]4618[[package]]
4589name = "lru"4619name = "lru"
5163 "frame-system-rpc-runtime-api",5193 "frame-system-rpc-runtime-api",
5164 "frame-try-runtime",5194 "frame-try-runtime",
5165 "hex-literal",5195 "hex-literal",
5196 "impl-trait-for-tuples",
5166 "log",5197 "log",
5198 "logtest",
5199 "orml-tokens",
5200 "orml-traits",
5167 "orml-vesting",5201 "orml-vesting",
5202 "orml-xtokens",
5168 "pallet-app-promotion",5203 "pallet-app-promotion",
5169 "pallet-aura",5204 "pallet-aura",
5170 "pallet-balances",5205 "pallet-balances",
5177 "pallet-evm-contract-helpers",5212 "pallet-evm-contract-helpers",
5178 "pallet-evm-migration",5213 "pallet-evm-migration",
5179 "pallet-evm-transaction-payment",5214 "pallet-evm-transaction-payment",
5215 "pallet-foreign-assets",
5180 "pallet-fungible",5216 "pallet-fungible",
5181 "pallet-inflation",5217 "pallet-inflation",
5182 "pallet-nonfungible",5218 "pallet-nonfungible",
5281 "num-traits",5317 "num-traits",
5282]5318]
5319
5320[[package]]
5321name = "orml-tokens"
5322version = "0.4.1-dev"
5323source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
5324dependencies = [
5325 "frame-support",
5326 "frame-system",
5327 "orml-traits",
5328 "parity-scale-codec 3.1.5",
5329 "scale-info",
5330 "serde",
5331 "sp-runtime",
5332 "sp-std",
5333]
5334
5335[[package]]
5336name = "orml-traits"
5337version = "0.4.1-dev"
5338source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
5339dependencies = [
5340 "frame-support",
5341 "impl-trait-for-tuples",
5342 "num-traits",
5343 "orml-utilities",
5344 "parity-scale-codec 3.1.5",
5345 "scale-info",
5346 "serde",
5347 "sp-io",
5348 "sp-runtime",
5349 "sp-std",
5350 "xcm",
5351]
5352
5353[[package]]
5354name = "orml-utilities"
5355version = "0.4.1-dev"
5356source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
5357dependencies = [
5358 "frame-support",
5359 "parity-scale-codec 3.1.5",
5360 "scale-info",
5361 "serde",
5362 "sp-io",
5363 "sp-runtime",
5364 "sp-std",
5365]
52835366
5284[[package]]5367[[package]]
5285name = "orml-vesting"5368name = "orml-vesting"
5296 "sp-std",5379 "sp-std",
5297]5380]
5381
5382[[package]]
5383name = "orml-xcm-support"
5384version = "0.4.1-dev"
5385source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
5386dependencies = [
5387 "frame-support",
5388 "orml-traits",
5389 "parity-scale-codec 3.1.5",
5390 "sp-runtime",
5391 "sp-std",
5392 "xcm",
5393 "xcm-executor",
5394]
5395
5396[[package]]
5397name = "orml-xtokens"
5398version = "0.4.1-dev"
5399source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362"
5400dependencies = [
5401 "cumulus-primitives-core",
5402 "frame-support",
5403 "frame-system",
5404 "orml-traits",
5405 "orml-xcm-support",
5406 "pallet-xcm",
5407 "parity-scale-codec 3.1.5",
5408 "scale-info",
5409 "serde",
5410 "sp-io",
5411 "sp-runtime",
5412 "sp-std",
5413 "xcm",
5414 "xcm-executor",
5415]
52985416
5299[[package]]5417[[package]]
5300name = "os_str_bytes"5418name = "os_str_bytes"
5790 "up-sponsorship",5908 "up-sponsorship",
5791]5909]
5910
5911[[package]]
5912name = "pallet-foreign-assets"
5913version = "0.1.0"
5914dependencies = [
5915 "frame-benchmarking",
5916 "frame-support",
5917 "frame-system",
5918 "hex",
5919 "log",
5920 "orml-tokens",
5921 "pallet-balances",
5922 "pallet-common",
5923 "pallet-fungible",
5924 "pallet-timestamp",
5925 "parity-scale-codec 3.1.5",
5926 "scale-info",
5927 "serde",
5928 "serde_json",
5929 "sp-core",
5930 "sp-io",
5931 "sp-runtime",
5932 "sp-std",
5933 "up-data-structs",
5934 "xcm",
5935 "xcm-builder",
5936 "xcm-executor",
5937]
57925938
5793[[package]]5939[[package]]
5794name = "pallet-fungible"5940name = "pallet-fungible"
64756621
6476[[package]]6622[[package]]
6477name = "pallet-unique"6623name = "pallet-unique"
6478version = "0.1.4"6624version = "0.2.0"
6479dependencies = [6625dependencies = [
6480 "ethereum",6626 "ethereum",
6481 "evm-coder",6627 "evm-coder",
8397 "frame-system-rpc-runtime-api",8543 "frame-system-rpc-runtime-api",
8398 "frame-try-runtime",8544 "frame-try-runtime",
8399 "hex-literal",8545 "hex-literal",
8546 "impl-trait-for-tuples",
8400 "log",8547 "log",
8548 "logtest",
8549 "orml-tokens",
8550 "orml-traits",
8401 "orml-vesting",8551 "orml-vesting",
8552 "orml-xtokens",
8402 "pallet-app-promotion",8553 "pallet-app-promotion",
8403 "pallet-aura",8554 "pallet-aura",
8404 "pallet-balances",8555 "pallet-balances",
8411 "pallet-evm-contract-helpers",8562 "pallet-evm-contract-helpers",
8412 "pallet-evm-migration",8563 "pallet-evm-migration",
8413 "pallet-evm-transaction-payment",8564 "pallet-evm-transaction-payment",
8565 "pallet-foreign-assets",
8414 "pallet-fungible",8566 "pallet-fungible",
8415 "pallet-inflation",8567 "pallet-inflation",
8416 "pallet-nonfungible",8568 "pallet-nonfungible",
12134source = "registry+https://github.com/rust-lang/crates.io-index"12286source = "registry+https://github.com/rust-lang/crates.io-index"
12135checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"12287checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
12136dependencies = [12288dependencies = [
12137 "cfg-if 0.1.10",12289 "cfg-if 1.0.0",
12138 "digest 0.10.3",12290 "digest 0.10.3",
12139 "rand 0.8.5",12291 "rand 0.8.5",
12140 "static_assertions",12292 "static_assertions",
12391 "frame-system-rpc-runtime-api",12543 "frame-system-rpc-runtime-api",
12392 "frame-try-runtime",12544 "frame-try-runtime",
12393 "hex-literal",12545 "hex-literal",
12546 "impl-trait-for-tuples",
12394 "log",12547 "log",
12548 "logtest",
12549 "orml-tokens",
12550 "orml-traits",
12395 "orml-vesting",12551 "orml-vesting",
12552 "orml-xtokens",
12396 "pallet-app-promotion",12553 "pallet-app-promotion",
12397 "pallet-aura",12554 "pallet-aura",
12398 "pallet-balances",12555 "pallet-balances",
12405 "pallet-evm-contract-helpers",12562 "pallet-evm-contract-helpers",
12406 "pallet-evm-migration",12563 "pallet-evm-migration",
12407 "pallet-evm-transaction-payment",12564 "pallet-evm-transaction-payment",
12565 "pallet-foreign-assets",
12408 "pallet-fungible",12566 "pallet-fungible",
12409 "pallet-inflation",12567 "pallet-inflation",
12410 "pallet-nonfungible",12568 "pallet-nonfungible",
12497name = "up-data-structs"12655name = "up-data-structs"
12498version = "0.2.2"12656version = "0.2.2"
12499dependencies = [12657dependencies = [
12658 "bondrewd",
12500 "derivative",12659 "derivative",
12501 "frame-support",12660 "frame-support",
12502 "frame-system",12661 "frame-system",
modifiedCargo.tomldiffbeforeafterboth
6 'client/*',6 'client/*',
7 'primitives/*',7 'primitives/*',
8 'crates/*',8 'crates/*',
9 'runtime/opal',
10 'runtime/quartz',
11 'runtime/unique',
9 'runtime/tests',12 'runtime/tests',
10]13]
11exclude = ["runtime/unique", "runtime/quartz"]14default-members = ['node/*', 'runtime/opal']
12[profile.release]15[profile.release]
13panic = 'unwind'16panic = 'unwind'
1417
modifiedMakefilediffbeforeafterboth
128bench-rmrk-equip:128bench-rmrk-equip:
129 make _bench PALLET=proxy-rmrk-equip129 make _bench PALLET=proxy-rmrk-equip
130
131.PHONY: bench-foreign-assets
132bench-foreign-assets:
133 make _bench PALLET=foreign-assets
130134
131.PHONY: bench-app-promotion135.PHONY: bench-app-promotion
132bench-app-promotion:136bench-app-promotion:
133 make _bench PALLET=app-promotion PALLET_DIR=app-promotion137 make _bench PALLET=app-promotion PALLET_DIR=app-promotion
134 138
135.PHONY: bench139.PHONY: bench
136bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip140bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip bench-foreign-assets
137141
modifiedREADME.mddiffbeforeafterboth
195xtokens -> transfer195xtokens -> transfer
196196
197currencyId:197currencyId:
198 ForeingAsset198 ForeignAsset
199 <TOKEN_ID>199 <TOKEN_ID>
200200
201amount:201amount:
modifiedcrates/evm-coder/procedural/src/solidity_interface.rsdiffbeforeafterboth
42 pascal_call_name: Ident,42 pascal_call_name: Ident,
43 snake_call_name: Ident,43 snake_call_name: Ident,
44 via: Option<(Type, Ident)>,44 via: Option<(Type, Ident)>,
45 condition: Option<Expr>,
45}46}
46impl Is {47impl Is {
47 fn expand_call_def(&self, gen_ref: &proc_macro2::TokenStream) -> proc_macro2::TokenStream {48 fn expand_call_def(&self, gen_ref: &proc_macro2::TokenStream) -> proc_macro2::TokenStream {
64 generics: &proc_macro2::TokenStream,65 generics: &proc_macro2::TokenStream,
65 ) -> proc_macro2::TokenStream {66 ) -> proc_macro2::TokenStream {
66 let pascal_call_name = &self.pascal_call_name;67 let pascal_call_name = &self.pascal_call_name;
68 let condition = self.condition.as_ref().map(|condition| {
69 quote! {
70 (#condition) &&
71 }
72 });
67 quote! {73 quote! {
68 <#pascal_call_name #generics>::supports_interface(interface_id)74 #condition <#pascal_call_name #generics>::supports_interface(this, interface_id)
69 }75 }
70 }76 }
7177
93 .as_ref()99 .as_ref()
94 .map(|(_, i)| quote! {.#i()})100 .map(|(_, i)| quote! {.#i()})
95 .unwrap_or_default();101 .unwrap_or_default();
102 let condition = self.condition.as_ref().map(|condition| {
103 quote! {
104 if ({let this = &self; (#condition)})
105 }
106 });
96 quote! {107 quote! {
97 #call_name::#name(call) => return <#via_typ as ::evm_coder::Callable<#pascal_call_name #generics>>::call(self #via_map, Msg {108 #call_name::#name(call) #condition => return <#via_typ as ::evm_coder::Callable<#pascal_call_name #generics>>::call(self #via_map, Msg {
98 call,109 call,
99 caller: c.caller,110 caller: c.caller,
100 value: c.value,111 value: c.value,
139 let name = input.parse::<Ident>()?;150 let name = input.parse::<Ident>()?;
140 let lookahead = input.lookahead1();151 let lookahead = input.lookahead1();
152
153 let mut condition: Option<Expr> = None;
141 let via = if lookahead.peek(syn::token::Paren) {154 let mut via: Option<(Type, Ident)> = None;
155
156 if lookahead.peek(syn::token::Paren) {
142 let contents;157 let contents;
143 parenthesized!(contents in input);158 parenthesized!(contents in input);
159 let input = contents;
160
161 while !input.is_empty() {
162 let lookahead = input.lookahead1();
163 if lookahead.peek(Token![if]) {
164 input.parse::<Token![if]>()?;
165 let contents;
166 parenthesized!(contents in input);
167 let contents = contents.parse::<Expr>()?;
168
169 if condition.replace(contents).is_some() {
170 return Err(syn::Error::new(input.span(), "condition is already set"));
171 }
172 } else if lookahead.peek(kw::via) {
173 input.parse::<kw::via>()?;
174 let contents;
175 parenthesized!(contents in input);
176
144 let method = contents.parse::<Ident>()?;177 let method = contents.parse::<Ident>()?;
145 contents.parse::<Token![,]>()?;178 contents.parse::<kw::returns>()?;
146 let ty = contents.parse::<Type>()?;179 let ty = contents.parse::<Type>()?;
180
147 Some((ty, method))181 if via.replace((ty, method)).is_some() {
182 return Err(syn::Error::new(input.span(), "via is already set"));
183 }
184 } else {
185 return Err(lookahead.error());
186 }
187
188 if input.peek(Token![,]) {
189 input.parse::<Token![,]>()?;
190 } else if !input.is_empty() {
191 return Err(syn::Error::new(input.span(), "expected end"));
192 }
193 }
148 } else if lookahead.peek(Token![,]) {194 } else if lookahead.peek(Token![,]) || input.is_empty() {
149 None195 // Pass
150 } else if input.is_empty() {
151 None
152 } else {196 } else {
153 return Err(lookahead.error());197 return Err(lookahead.error());
154 };198 };
157 snake_call_name: pascal_ident_to_snake_call(&name),201 snake_call_name: pascal_ident_to_snake_call(&name),
158 name,202 name,
159 via,203 via,
204 condition,
160 });205 });
161 if input.peek(Token![,]) {206 if input.peek(Token![,]) {
162 input.parse::<Token![,]>()?;207 input.parse::<Token![,]>()?;
495 syn::custom_keyword!(weight);540 syn::custom_keyword!(weight);
496541
497 syn::custom_keyword!(via);542 syn::custom_keyword!(via);
543 syn::custom_keyword!(returns);
498 syn::custom_keyword!(name);544 syn::custom_keyword!(name);
499 syn::custom_keyword!(is);545 syn::custom_keyword!(is);
500 syn::custom_keyword!(inline_is);546 syn::custom_keyword!(inline_is);
996 #(#inline_interface_id)*1042 #(#inline_interface_id)*
997 u32::to_be_bytes(interface_id)1043 u32::to_be_bytes(interface_id)
998 }1044 }
999 /// Is this contract implements specified ERC165 selector
1000 pub fn supports_interface(interface_id: ::evm_coder::types::bytes4) -> bool {
1001 interface_id != u32::to_be_bytes(0xffffff) && (
1002 interface_id == ::evm_coder::ERC165Call::INTERFACE_ID ||
1003 interface_id == Self::interface_id()
1004 #(
1005 || #supports_interface
1006 )*
1007 )
1008 }
1009 /// Generate solidity definitions for methods described in this interface1045 /// Generate solidity definitions for methods described in this interface
1010 pub fn generate_solidity_interface(tc: &evm_coder::solidity::TypeCollector, is_impl: bool) {1046 pub fn generate_solidity_interface(tc: &evm_coder::solidity::TypeCollector, is_impl: bool) {
1011 use evm_coder::solidity::*;1047 use evm_coder::solidity::*;
1024 )*),1060 )*),
1025 };1061 };
10261062
1027 let mut out = string::new();1063 let mut out = ::evm_coder::types::string::new();
1028 if #solidity_name.starts_with("Inline") {1064 if #solidity_name.starts_with("Inline") {
1029 out.push_str("/// @dev inlined interface\n");1065 out.push_str("/// @dev inlined interface\n");
1030 }1066 }
1062 return Ok(None);1098 return Ok(None);
1063 }1099 }
1064 }1100 }
1065 impl #generics ::evm_coder::Weighted for #call_name #gen_ref1101 impl #generics #call_name #gen_ref
1102 #gen_where
1103 {
1104 /// Is this contract implements specified ERC165 selector
1105 pub fn supports_interface(this: &#name, interface_id: ::evm_coder::types::bytes4) -> bool {
1106 interface_id != u32::to_be_bytes(0xffffff) && (
1107 interface_id == ::evm_coder::ERC165Call::INTERFACE_ID ||
1108 interface_id == Self::interface_id()
1109 #(
1110 || #supports_interface
1111 )*
1112 )
1113 }
1114 }
1115 impl #generics ::evm_coder::Weighted for #call_name #gen_ref
1066 #gen_where1116 #gen_where
1067 {1117 {
1068 #[allow(unused_variables)]1118 #[allow(unused_variables)]
1091 )*1141 )*
1092 #call_name::ERC165Call(::evm_coder::ERC165Call::SupportsInterface {interface_id}, _) => {1142 #call_name::ERC165Call(::evm_coder::ERC165Call::SupportsInterface {interface_id}, _) => {
1093 let mut writer = ::evm_coder::abi::AbiWriter::default();1143 let mut writer = ::evm_coder::abi::AbiWriter::default();
1094 writer.bool(&<#call_name #gen_ref>::supports_interface(interface_id));1144 writer.bool(&<#call_name #gen_ref>::supports_interface(self, interface_id));
1095 return Ok(writer.into());1145 return Ok(writer.into());
1096 }1146 }
1097 _ => {},1147 _ => {},
1101 #(1151 #(
1102 #call_variants_this,1152 #call_variants_this,
1103 )*1153 )*
1104 _ => unreachable!()1154 _ => Err(::evm_coder::execution::Error::from("method is not available").into()),
1105 }1155 }
1106 }1156 }
1107 }1157 }
modifiedcrates/evm-coder/src/abi.rsdiffbeforeafterboth
313 /// Finish writer, concatenating all internal buffers313 /// Finish writer, concatenating all internal buffers
314 pub fn finish(mut self) -> Vec<u8> {314 pub fn finish(mut self) -> Vec<u8> {
315 for (static_offset, part) in self.dynamic_part {315 for (static_offset, part) in self.dynamic_part {
316 let part_offset = self.static_part.len() - self.had_call.then(|| 4).unwrap_or(0);316 let part_offset = self.static_part.len() - if self.had_call { 4 } else { 0 };
317317
318 let encoded_dynamic_offset = usize::to_be_bytes(part_offset);318 let encoded_dynamic_offset = usize::to_be_bytes(part_offset);
319 self.static_part[static_offset + ABI_ALIGNMENT - encoded_dynamic_offset.len()319 self.static_part[static_offset + ABI_ALIGNMENT - encoded_dynamic_offset.len()
modifiedcrates/evm-coder/src/lib.rsdiffbeforeafterboth
74/// #[solidity_interface(name = MyContract, is(SuperContract), inline_is(InlineContract))]74/// #[solidity_interface(name = MyContract, is(SuperContract), inline_is(InlineContract))]
75/// impl Contract {75/// impl Contract {
76/// /// Multiply two numbers76/// /// Multiply two numbers
77/// /// @param a First number77/// /// @param a First number
78/// /// @param b Second number78/// /// @param b Second number
79/// /// @return uint32 Product of two passed numbers79/// /// @return uint32 Product of two passed numbers
80/// /// @dev This function returns error in case of overflow80/// /// @dev This function returns error in case of overflow
81/// #[weight(200 + a + b)]81/// #[weight(200 + a + b)]
82/// #[solidity_interface(rename_selector = "mul")]82/// #[solidity_interface(rename_selector = "mul")]
83/// fn mul(&mut self, a: uint32, b: uint32) -> Result<uint32> {83/// fn mul(&mut self, a: uint32, b: uint32) -> Result<uint32> {
addedcrates/evm-coder/tests/conditional_is.rsdiffbeforeafterboth

no changes

modifiedcrates/evm-coder/tests/generics.rsdiffbeforeafterboth
17use std::marker::PhantomData;17use std::marker::PhantomData;
18use evm_coder::{execution::Result, generate_stubgen, solidity_interface, types::*};18use evm_coder::{execution::Result, generate_stubgen, solidity_interface, types::*};
1919
20struct Generic<T>(PhantomData<T>);20pub struct Generic<T>(PhantomData<T>);
2121
22#[solidity_interface(name = GenericIs)]22#[solidity_interface(name = GenericIs)]
23impl<T> Generic<T> {23impl<T> Generic<T> {
modifiedcrates/evm-coder/tests/random.rsdiffbeforeafterboth
1818
19use evm_coder::{ToLog, execution::Result, solidity_interface, types::*, solidity, weight};19use evm_coder::{ToLog, execution::Result, solidity_interface, types::*, solidity, weight};
2020
21struct Impls;21pub struct Impls;
2222
23#[solidity_interface(name = OurInterface)]23#[solidity_interface(name = OurInterface)]
24impl Impls {24impl Impls {
modifiedcrates/evm-coder/tests/solidity_generation.rsdiffbeforeafterboth
1616
17use evm_coder::{execution::Result, generate_stubgen, solidity_interface, types::*};17use evm_coder::{execution::Result, generate_stubgen, solidity_interface, types::*};
1818
19struct ERC20;19pub struct ERC20;
2020
21#[solidity_interface(name = ERC20)]21#[solidity_interface(name = ERC20)]
22impl ERC20 {22impl ERC20 {
modifiednode/cli/Cargo.tomldiffbeforeafterboth
302302
303[dependencies]303[dependencies]
304futures = '0.3.17'304futures = '0.3.17'
305log = '0.4.14'305log = '0.4.16'
306flexi_logger = "0.22.5"306flexi_logger = "0.22.5"
307parking_lot = '0.12.1'307parking_lot = '0.12.1'
308clap = "3.1.2"308clap = "3.1.2"
modifiednode/cli/src/chain_spec.rsdiffbeforeafterboth
65 Unknown(String),65 Unknown(String),
66}66}
67
68#[cfg(not(feature = "unique-runtime"))]
69/// PARA_ID for Opal/Quartz
70const PARA_ID: u32 = 2095;
71
72#[cfg(feature = "unique-runtime")]
73/// PARA_ID for Unique
74const PARA_ID: u32 = 2037;
6775
68pub trait RuntimeIdentification {76pub trait RuntimeIdentification {
69 fn runtime_id(&self) -> RuntimeId;77 fn runtime_id(&self) -> RuntimeId;
167 .collect(),175 .collect(),
168 },176 },
169 treasury: Default::default(),177 treasury: Default::default(),
178 tokens: TokensConfig { balances: vec![] },
170 sudo: SudoConfig {179 sudo: SudoConfig {
171 key: Some($root_key),180 key: Some($root_key),
172 },181 },
235 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),244 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
236 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),245 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
237 ],246 ],
238 1000247 PARA_ID
239 )248 )
240 },249 },
241 // Bootnodes250 // Bootnodes
250 // Extensions259 // Extensions
251 Extensions {260 Extensions {
252 relay_chain: "rococo-dev".into(),261 relay_chain: "rococo-dev".into(),
253 para_id: 1000,262 para_id: PARA_ID,
254 },263 },
255 )264 )
256}265}
303 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),312 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
304 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),313 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
305 ],314 ],
306 1000315 PARA_ID
307 )316 )
308 },317 },
309 // Bootnodes318 // Bootnodes
318 // Extensions327 // Extensions
319 Extensions {328 Extensions {
320 relay_chain: "westend-local".into(),329 relay_chain: "westend-local".into(),
321 para_id: 1000,330 para_id: PARA_ID,
322 },331 },
323 )332 )
324}333}
modifiedpallets/app-promotion/Cargo.tomldiffbeforeafterboth
66pallet-common ={ default-features = false, path = "../common" }66pallet-common ={ default-features = false, path = "../common" }
67pallet-unique ={ default-features = false, path = "../unique" }67pallet-unique ={ default-features = false, path = "../unique" }
68pallet-evm-contract-helpers ={ default-features = false, path = "../evm-contract-helpers" }68pallet-evm-contract-helpers ={ default-features = false, path = "../evm-contract-helpers" }
6969pallet-evm-migration ={ default-features = false, path = "../evm-migration" }
70[dev-dependencies]70
71pallet-evm-migration ={ default-features = false, path = "../evm-migration" }71# [dev-dependencies]
7272
73################################################################################73################################################################################
7474
modifiedpallets/app-promotion/src/benchmarking.rsdiffbeforeafterboth
20use crate::Pallet as PromototionPallet;20use crate::Pallet as PromototionPallet;
2121
22use sp_runtime::traits::Bounded;22use sp_runtime::traits::Bounded;
23use sp_std::vec;
2423
25use frame_benchmarking::{benchmarks, account};24use frame_benchmarking::{benchmarks, account};
26use frame_support::traits::OnInitialize;25use frame_support::traits::OnInitialize;
27use frame_system::{Origin, RawOrigin};26use frame_system::RawOrigin;
28use pallet_unique::benchmarking::create_nft_collection;27use pallet_unique::benchmarking::create_nft_collection;
29use pallet_evm_migration::Pallet as EvmMigrationPallet;28use pallet_evm_migration::Pallet as EvmMigrationPallet;
3029
modifiedpallets/app-promotion/src/lib.rsdiffbeforeafterboth
589 let flush_stake = || -> DispatchResult {589 let flush_stake = || -> DispatchResult {
590 if let Some(last_id) = &*last_id.borrow() {590 if let Some(last_id) = &*last_id.borrow() {
591 if !income_acc.borrow().is_zero() {591 if !income_acc.borrow().is_zero() {
592 <T::Currency as Currency<T::AccountId>>::transfer(592 <T::Currency as Currency<T::AccountId>>::transfer(
593 &T::TreasuryAccountId::get(),593 &T::TreasuryAccountId::get(),
594 last_id,594 last_id,
595 *income_acc.borrow(),595 *income_acc.borrow(),
596 ExistenceRequirement::KeepAlive,596 ExistenceRequirement::KeepAlive,
597 )597 )?;
598 .and_then(|_| {598
599 Self::add_lock_balance(last_id, *income_acc.borrow())?;599 Self::add_lock_balance(last_id, *income_acc.borrow())?;
600 <TotalStaked<T>>::try_mutate(|staked| {600 <TotalStaked<T>>::try_mutate(|staked| -> DispatchResult {
601 staked601 *staked = staked
602 .checked_add(&*income_acc.borrow())602 .checked_add(&*income_acc.borrow())
603 .ok_or(ArithmeticError::Overflow.into())603 .ok_or(ArithmeticError::Overflow)?;
604 Ok(())
604 })605 })?;
605 })?;
606606
607 Self::deposit_event(Event::StakingRecalculation(607 Self::deposit_event(Event::StakingRecalculation(
608 last_id.clone(),608 last_id.clone(),
modifiedpallets/common/src/benchmarking.rsdiffbeforeafterboth
19use pallet_evm::account::CrossAccountId;19use pallet_evm::account::CrossAccountId;
20use frame_benchmarking::{benchmarks, account};20use frame_benchmarking::{benchmarks, account};
21use up_data_structs::{21use up_data_structs::{
22 CollectionMode, CreateCollectionData, CollectionId, Property, PropertyKey, PropertyValue,22 CollectionMode, CollectionFlags, CreateCollectionData, CollectionId, Property, PropertyKey,
23 CollectionPermissions, NestingPermissions, MAX_COLLECTION_NAME_LENGTH,23 PropertyValue, CollectionPermissions, NestingPermissions, MAX_COLLECTION_NAME_LENGTH,
24 MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH, MAX_PROPERTIES_PER_ITEM,24 MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH, MAX_PROPERTIES_PER_ITEM,
25};25};
116 create_collection_raw(116 create_collection_raw(
117 owner,117 owner,
118 CollectionMode::NFT,118 CollectionMode::NFT,
119 |owner, data| <Pallet<T>>::init_collection(owner, data, true),119 |owner, data| <Pallet<T>>::init_collection(owner, data, CollectionFlags::default()),
120 |h| h,120 |h| h,
121 )121 )
122}122}
modifiedpallets/common/src/erc.rsdiffbeforeafterboth
194 /// Get current sponsor.194 /// Get current sponsor.
195 ///195 ///
196 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.196 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
197 fn get_collection_sponsor(&self) -> Result<(address, uint256)> {197 fn collection_sponsor(&self) -> Result<(address, uint256)> {
198 let sponsor = match self.collection.sponsorship.sponsor() {198 let sponsor = match self.collection.sponsorship.sponsor() {
199 Some(sponsor) => sponsor,199 Some(sponsor) => sponsor,
200 None => return Ok(Default::default()),200 None => return Ok(Default::default()),
406 true => {406 true => {
407 let mut bv = OwnerRestrictedSet::new();407 let mut bv = OwnerRestrictedSet::new();
408 for i in collections {408 for i in collections {
409 bv.try_insert(crate::eth::map_eth_to_id(&i).ok_or(Error::Revert(409 bv.try_insert(crate::eth::map_eth_to_id(&i).ok_or_else(|| {
410 "Can't convert address into collection id".into(),410 Error::Revert("Can't convert address into collection id".into())
411 ))?)411 })?)
412 .map_err(|_| "too many collections")?;412 .map_err(|_| "too many collections")?;
413 }413 }
414 let mut nesting = permissions.nesting().clone();414 let mut nesting = permissions.nesting().clone();
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
70 COLLECTION_NUMBER_LIMIT,70 COLLECTION_NUMBER_LIMIT,
71 Collection,71 Collection,
72 RpcCollection,72 RpcCollection,
73 CollectionFlags,
73 CollectionId,74 CollectionId,
74 CreateItemData,75 CreateItemData,
75 MAX_TOKEN_PREFIX_LENGTH,76 MAX_TOKEN_PREFIX_LENGTH,
252 }253 }
253254
254 /// Checks that the collection was created with, and must be operated upon through **Unique API**.255 /// Checks that the collection was created with, and must be operated upon through **Unique API**.
255 /// Now check only the `external_collection` flag and if it's **true**, then return [`Error::CollectionIsExternal`] error.256 /// Now check only the `external` flag and if it's **true**, then return [`Error::CollectionIsExternal`] error.
256 pub fn check_is_internal(&self) -> DispatchResult {257 pub fn check_is_internal(&self) -> DispatchResult {
257 if self.external_collection {258 if self.flags.external {
258 return Err(<Error<T>>::CollectionIsExternal)?;259 return Err(<Error<T>>::CollectionIsExternal)?;
259 }260 }
260261
261 Ok(())262 Ok(())
262 }263 }
263264
264 /// Checks that the collection was created with, and must be operated upon through an **assimilated API**.265 /// Checks that the collection was created with, and must be operated upon through an **assimilated API**.
265 /// Now check only the `external_collection` flag and if it's **false**, then return [`Error::CollectionIsInternal`] error.266 /// Now check only the `external` flag and if it's **false**, then return [`Error::CollectionIsInternal`] error.
266 pub fn check_is_external(&self) -> DispatchResult {267 pub fn check_is_external(&self) -> DispatchResult {
267 if !self.external_collection {268 if !self.flags.external {
268 return Err(<Error<T>>::CollectionIsInternal)?;269 return Err(<Error<T>>::CollectionIsInternal)?;
269 }270 }
270271
792 sponsorship,793 sponsorship,
793 limits,794 limits,
794 permissions,795 permissions,
795 external_collection,796 flags,
796 } = <CollectionById<T>>::get(collection)?;797 } = <CollectionById<T>>::get(collection)?;
797798
798 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)799 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)
822 permissions,823 permissions,
823 token_property_permissions,824 token_property_permissions,
824 properties,825 properties,
825 read_only: external_collection,826 read_only: flags.external,
827 foreign: flags.foreign,
826 })828 })
827 }829 }
828}830}
861 ///863 ///
862 /// * `owner` - The owner of the collection.864 /// * `owner` - The owner of the collection.
863 /// * `data` - Description of the created collection.865 /// * `data` - Description of the created collection.
864 /// * `is_external` - Marks that collection managet by not "Unique network".866 /// * `flags` - Extra flags to store.
865 pub fn init_collection(867 pub fn init_collection(
866 owner: T::CrossAccountId,868 owner: T::CrossAccountId,
867 data: CreateCollectionData<T::AccountId>,869 data: CreateCollectionData<T::AccountId>,
868 is_external: bool,870 flags: CollectionFlags,
869 ) -> Result<CollectionId, DispatchError> {871 ) -> Result<CollectionId, DispatchError> {
870 {872 {
871 ensure!(873 ensure!(
909 Self::clamp_permissions(data.mode.clone(), &Default::default(), permissions)911 Self::clamp_permissions(data.mode.clone(), &Default::default(), permissions)
910 })912 })
911 .unwrap_or_else(|| Ok(CollectionPermissions::default()))?,913 .unwrap_or_else(|| Ok(CollectionPermissions::default()))?,
912 external_collection: is_external,914 flags,
913 };915 };
914916
915 let mut collection_properties = up_data_structs::CollectionProperties::get();917 let mut collection_properties = up_data_structs::CollectionProperties::get();
modifiedpallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth
169 ///169 ///
170 /// @param contractAddress The contract for which a sponsor is requested.170 /// @param contractAddress The contract for which a sponsor is requested.
171 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.171 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
172 fn get_sponsor(&self, contract_address: address) -> Result<(address, uint256)> {172 fn sponsor(&self, contract_address: address) -> Result<(address, uint256)> {
173 let sponsor =173 let sponsor =
174 Pallet::<T>::get_sponsor(contract_address).ok_or("Contract has no sponsor")?;174 Pallet::<T>::get_sponsor(contract_address).ok_or("Contract has no sponsor")?;
175 Ok(pallet_common::eth::convert_cross_account_to_tuple::<T>(175 Ok(pallet_common::eth::convert_cross_account_to_tuple::<T>(
220 /// Get current contract sponsoring rate limit220 /// Get current contract sponsoring rate limit
221 /// @param contractAddress Contract to get sponsoring rate limit of221 /// @param contractAddress Contract to get sponsoring rate limit of
222 /// @return uint32 Amount of blocks between two sponsored transactions222 /// @return uint32 Amount of blocks between two sponsored transactions
223 fn get_sponsoring_rate_limit(&self, contract_address: address) -> Result<uint32> {223 fn sponsoring_rate_limit(&self, contract_address: address) -> Result<uint32> {
224 self.recorder().consume_sload()?;224 self.recorder().consume_sload()?;
225225
226 Ok(<SponsoringRateLimit<T>>::get(contract_address)226 Ok(<SponsoringRateLimit<T>>::get(contract_address)
273 /// @param contractAddress Contract to get sponsoring fee limit of273 /// @param contractAddress Contract to get sponsoring fee limit of
274 /// @return uint256 Maximum amount of fee that could be spent by single274 /// @return uint256 Maximum amount of fee that could be spent by single
275 /// transaction275 /// transaction
276 fn get_sponsoring_fee_limit(&self, contract_address: address) -> Result<uint256> {276 fn sponsoring_fee_limit(&self, contract_address: address) -> Result<uint256> {
277 self.recorder().consume_sload()?;277 self.recorder().consume_sload()?;
278278
279 Ok(get_sponsoring_fee_limit::<T>(contract_address))279 Ok(get_sponsoring_fee_limit::<T>(contract_address))
modifiedpallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/evm-contract-helpers/src/stubs/ContractHelpers.soldiffbeforeafterboth
32}25}
3326
34/// @title Magic contract, which allows users to reconfigure other contracts27/// @title Magic contract, which allows users to reconfigure other contracts
35/// @dev the ERC-165 identifier for this interface is 0x172cb4fb28/// @dev the ERC-165 identifier for this interface is 0x30afad04
36contract ContractHelpers is Dummy, ERC165, ContractHelpersEvents {29contract ContractHelpers is Dummy, ERC165, ContractHelpersEvents {
37 /// Get user, which deployed specified contract30 /// Get user, which deployed specified contract
38 /// @dev May return zero address in case if contract is deployed31 /// @dev May return zero address in case if contract is deployed
105 ///94 ///
106 /// @param contractAddress The contract for which a sponsor is requested.95 /// @param contractAddress The contract for which a sponsor is requested.
107 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.96 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
108 /// @dev EVM selector for this function is: 0x743fc745,97 /// @dev EVM selector for this function is: 0x766c4f37,
109 /// or in textual repr: getSponsor(address)98 /// or in textual repr: sponsor(address)
110 function getSponsor(address contractAddress)99 function sponsor(address contractAddress) public view returns (Tuple0 memory) {
111 public
112 view
113 returns (Tuple0 memory)
173 /// Get current contract sponsoring rate limit150 /// Get current contract sponsoring rate limit
174 /// @param contractAddress Contract to get sponsoring rate limit of151 /// @param contractAddress Contract to get sponsoring rate limit of
175 /// @return uint32 Amount of blocks between two sponsored transactions152 /// @return uint32 Amount of blocks between two sponsored transactions
176 /// @dev EVM selector for this function is: 0x610cfabd,153 /// @dev EVM selector for this function is: 0xf29694d8,
177 /// or in textual repr: getSponsoringRateLimit(address)154 /// or in textual repr: sponsoringRateLimit(address)
178 function getSponsoringRateLimit(address contractAddress)155 function sponsoringRateLimit(address contractAddress) public view returns (uint32) {
179 public
180 view
181 returns (uint32)
224 /// @param contractAddress Contract to get sponsoring fee limit of193 /// @param contractAddress Contract to get sponsoring fee limit of
225 /// @return uint256 Maximum amount of fee that could be spent by single194 /// @return uint256 Maximum amount of fee that could be spent by single
226 /// transaction195 /// transaction
227 /// @dev EVM selector for this function is: 0xc3fdc9ee,196 /// @dev EVM selector for this function is: 0x75b73606,
228 /// or in textual repr: getSponsoringFeeLimit(address)197 /// or in textual repr: sponsoringFeeLimit(address)
229 function getSponsoringFeeLimit(address contractAddress)198 function sponsoringFeeLimit(address contractAddress) public view returns (uint256) {
230 public
231 view
232 returns (uint256)
addedpallets/foreign-assets/Cargo.tomldiffbeforeafterboth

no changes

addedpallets/foreign-assets/src/benchmarking.rsdiffbeforeafterboth

no changes

addedpallets/foreign-assets/src/impl_fungibles.rsdiffbeforeafterboth

no changes

addedpallets/foreign-assets/src/lib.rsdiffbeforeafterboth

no changes

addedpallets/foreign-assets/src/weights.rsdiffbeforeafterboth

no changes

modifiedpallets/fungible/src/erc.rsdiffbeforeafterboth
199 ERC20,199 ERC20,
200 ERC20Mintable,200 ERC20Mintable,
201 ERC20UniqueExtensions,201 ERC20UniqueExtensions,
202 Collection(common_mut, CollectionHandle<T>),202 Collection(via(common_mut returns CollectionHandle<T>)),
203 )203 )
204)]204)]
205impl<T: Config> FungibleHandle<T> where T::AccountId: From<[u8; 32]> + AsRef<[u8; 32]> {}205impl<T: Config> FungibleHandle<T> where T::AccountId: From<[u8; 32]> + AsRef<[u8; 32]> {}
modifiedpallets/fungible/src/lib.rsdiffbeforeafterboth
83use frame_support::{ensure};83use frame_support::{ensure};
84use pallet_evm::account::CrossAccountId;84use pallet_evm::account::CrossAccountId;
85use up_data_structs::{85use up_data_structs::{
86 AccessMode, CollectionId, TokenId, CreateCollectionData, mapping::TokenAddressMapping,86 AccessMode, CollectionId, CollectionFlags, TokenId, CreateCollectionData,
87 budget::Budget,87 mapping::TokenAddressMapping, budget::Budget,
88};88};
89use pallet_common::{89use pallet_common::{
212 owner: T::CrossAccountId,212 owner: T::CrossAccountId,
213 data: CreateCollectionData<T::AccountId>,213 data: CreateCollectionData<T::AccountId>,
214 ) -> Result<CollectionId, DispatchError> {214 ) -> Result<CollectionId, DispatchError> {
215 <PalletCommon<T>>::init_collection(owner, data, false)215 <PalletCommon<T>>::init_collection(owner, data, CollectionFlags::default())
216 }216 }
217
218 /// Initializes the collection with ForeignCollection flag. Returns [CollectionId] on success, [DispatchError] otherwise.
219 pub fn init_foreign_collection(
220 owner: T::CrossAccountId,
221 data: CreateCollectionData<T::AccountId>,
222 ) -> Result<CollectionId, DispatchError> {
223 let id = <PalletCommon<T>>::init_collection(
224 owner,
225 data,
226 CollectionFlags {
227 foreign: true,
228 ..Default::default()
229 },
230 )?;
231 Ok(id)
232 }
217233
218 /// Destroys a collection.234 /// Destroys a collection.
219 pub fn destroy_collection(235 pub fn destroy_collection(
257 .checked_sub(amount)273 .checked_sub(amount)
258 .ok_or(<CommonError<T>>::TokenValueTooLow)?;274 .ok_or(<CommonError<T>>::TokenValueTooLow)?;
275
276 // Foreign collection check
277 ensure!(!collection.flags.foreign, <CommonError<T>>::NoPermission);
259278
260 if collection.permissions.access() == AccessMode::AllowList {279 if collection.permissions.access() == AccessMode::AllowList {
261 collection.check_allowlist(owner)?;280 collection.check_allowlist(owner)?;
288 Ok(())307 Ok(())
289 }308 }
309
310 /// Burns the specified amount of the token.
311 pub fn burn_foreign(
312 collection: &FungibleHandle<T>,
313 owner: &T::CrossAccountId,
314 amount: u128,
315 ) -> DispatchResult {
316 let total_supply = <TotalSupply<T>>::get(collection.id)
317 .checked_sub(amount)
318 .ok_or(<CommonError<T>>::TokenValueTooLow)?;
319
320 let balance = <Balance<T>>::get((collection.id, owner))
321 .checked_sub(amount)
322 .ok_or(<CommonError<T>>::TokenValueTooLow)?;
323 // =========
324
325 if balance == 0 {
326 <Balance<T>>::remove((collection.id, owner));
327 <PalletStructure<T>>::unnest_if_nested(owner, collection.id, TokenId::default());
328 } else {
329 <Balance<T>>::insert((collection.id, owner), balance);
330 }
331 <TotalSupply<T>>::insert(collection.id, total_supply);
332
333 <PalletEvm<T>>::deposit_log(
334 ERC20Events::Transfer {
335 from: *owner.as_eth(),
336 to: H160::default(),
337 value: amount.into(),
338 }
339 .to_log(collection_id_to_address(collection.id)),
340 );
341 <PalletCommon<T>>::deposit_event(CommonEvent::ItemDestroyed(
342 collection.id,
343 TokenId::default(),
344 owner.clone(),
345 amount,
346 ));
347 Ok(())
348 }
290349
291 /// Transfers the specified amount of tokens. Will check that350 /// Transfers the specified amount of tokens. Will check that
292 /// the transfer is allowed for the token.351 /// the transfer is allowed for the token.
366 }425 }
367426
368 /// Minting tokens for multiple IDs.427 /// Minting tokens for multiple IDs.
428 /// It is a utility function used in [`create_multiple_items`][`Pallet::create_multiple_items`]
369 /// See [`create_item`][`Pallet::create_item`] for more details.429 /// and [`create_multiple_items_foreign`][`Pallet::create_multiple_items_foreign`]
370 pub fn create_multiple_items(430 pub fn create_multiple_items_common(
371 collection: &FungibleHandle<T>,431 collection: &FungibleHandle<T>,
372 sender: &T::CrossAccountId,432 sender: &T::CrossAccountId,
373 data: BTreeMap<T::CrossAccountId, u128>,433 data: BTreeMap<T::CrossAccountId, u128>,
374 nesting_budget: &dyn Budget,434 nesting_budget: &dyn Budget,
375 ) -> DispatchResult {435 ) -> DispatchResult {
376 if !collection.is_owner_or_admin(sender) {
377 ensure!(
378 collection.permissions.mint_mode(),
379 <CommonError<T>>::PublicMintingNotAllowed
380 );
381 collection.check_allowlist(sender)?;
382
383 for (owner, _) in data.iter() {
384 collection.check_allowlist(owner)?;
385 }
386 }
387
388 let total_supply = data436 let total_supply = data
389 .iter()437 .iter()
442 Ok(())490 Ok(())
443 }491 }
492
493 /// Minting tokens for multiple IDs.
494 /// See [`create_item`][`Pallet::create_item`] for more details.
495 pub fn create_multiple_items(
496 collection: &FungibleHandle<T>,
497 sender: &T::CrossAccountId,
498 data: BTreeMap<T::CrossAccountId, u128>,
499 nesting_budget: &dyn Budget,
500 ) -> DispatchResult {
501 // Foreign collection check
502 ensure!(!collection.flags.foreign, <CommonError<T>>::NoPermission);
503
504 if !collection.is_owner_or_admin(sender) {
505 ensure!(
506 collection.permissions.mint_mode(),
507 <CommonError<T>>::PublicMintingNotAllowed
508 );
509 collection.check_allowlist(sender)?;
510
511 for (owner, _) in data.iter() {
512 collection.check_allowlist(owner)?;
513 }
514 }
515
516 Self::create_multiple_items_common(collection, sender, data, nesting_budget)
517 }
518
519 /// Minting tokens for multiple IDs.
520 /// See [`create_item_foreign`][`Pallet::create_item_foreign`] for more details.
521 pub fn create_multiple_items_foreign(
522 collection: &FungibleHandle<T>,
523 sender: &T::CrossAccountId,
524 data: BTreeMap<T::CrossAccountId, u128>,
525 nesting_budget: &dyn Budget,
526 ) -> DispatchResult {
527 Self::create_multiple_items_common(collection, sender, data, nesting_budget)
528 }
444529
445 fn set_allowance_unchecked(530 fn set_allowance_unchecked(
446 collection: &FungibleHandle<T>,531 collection: &FungibleHandle<T>,
615 )700 )
616 }701 }
702
703 /// Creates fungible token.
704 ///
705 /// - `data`: Contains user who will become the owners of the tokens and amount
706 /// of tokens he will receive.
707 pub fn create_item_foreign(
708 collection: &FungibleHandle<T>,
709 sender: &T::CrossAccountId,
710 data: CreateItemData<T>,
711 nesting_budget: &dyn Budget,
712 ) -> DispatchResult {
713 Self::create_multiple_items_foreign(
714 collection,
715 sender,
716 [(data.0, data.1)].into_iter().collect(),
717 nesting_budget,
718 )
719 }
617720
618 /// Returns 10 tokens owners in no particular order721 /// Returns 10 tokens owners in no particular order
619 ///722 ///
modifiedpallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth
22}18}
2319
24/// @title A contract that allows you to work with collections.20/// @title A contract that allows you to work with collections.
25/// @dev the ERC-165 identifier for this interface is 0x9f70d4e021/// @dev the ERC-165 identifier for this interface is 0x47dbc105
26contract Collection is Dummy, ERC165 {22contract Collection is Dummy, ERC165 {
27 /// Set collection property.23 /// Set collection property.
28 ///24 ///
95 dummy = 0;85 dummy = 0;
96 }86 }
9787
88 /// Whether there is a pending sponsor.
98 /// @dev EVM selector for this function is: 0x058ac185,89 /// @dev EVM selector for this function is: 0x058ac185,
99 /// or in textual repr: hasCollectionPendingSponsor()90 /// or in textual repr: hasCollectionPendingSponsor()
100 function hasCollectionPendingSponsor() public view returns (bool) {91 function hasCollectionPendingSponsor() public view returns (bool) {
124 /// Get current sponsor.115 /// Get current sponsor.
125 ///116 ///
126 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.117 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
127 /// @dev EVM selector for this function is: 0xb66bbc14,118 /// @dev EVM selector for this function is: 0x6ec0a9f1,
128 /// or in textual repr: getCollectionSponsor()119 /// or in textual repr: collectionSponsor()
129 function getCollectionSponsor() public view returns (Tuple6 memory) {120 function collectionSponsor() public view returns (Tuple6 memory) {
130 require(false, stub_error);121 require(false, stub_error);
131 dummy;122 dummy;
132 return Tuple6(0x0000000000000000000000000000000000000000, 0);123 return Tuple6(0x0000000000000000000000000000000000000000, 0);
353 /// @return `Fungible` or `NFT` or `ReFungible`342 /// @return `Fungible` or `NFT` or `ReFungible`
354 /// @dev EVM selector for this function is: 0xd34b55b8,343 /// @dev EVM selector for this function is: 0xd34b55b8,
355 /// or in textual repr: uniqueCollectionType()344 /// or in textual repr: uniqueCollectionType()
356 function uniqueCollectionType() public returns (string memory) {345 function uniqueCollectionType() public view returns (string memory) {
357 require(false, stub_error);346 require(false, stub_error);
358 dummy = 0;347 dummy;
359 return "";348 return "";
360 }349 }
361350
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
736 ERC721UniqueExtensions,736 ERC721UniqueExtensions,
737 ERC721Mintable,737 ERC721Mintable,
738 ERC721Burnable,738 ERC721Burnable,
739 Collection(common_mut, CollectionHandle<T>),739 Collection(via(common_mut returns CollectionHandle<T>)),
740 TokenProperties,740 TokenProperties,
741 )741 )
742)]742)]
modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
100 weights::{PostDispatchInfo, Pays},100 weights::{PostDispatchInfo, Pays},
101};101};
102use up_data_structs::{102use up_data_structs::{
103 AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,103 AccessMode, CollectionId, CollectionFlags, CustomDataLimit, TokenId, CreateCollectionData,
104 mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission, PropertyKey,104 CreateNftExData, mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission,
105 PropertyValue, PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild,105 PropertyKey, PropertyValue, PropertyKeyPermission, Properties, PropertyScope, TrySetProperty,
106 AuxPropertyValue,106 TokenChild, AuxPropertyValue,
411 <PalletCommon<T>>::init_collection(owner, data, is_external)411 <PalletCommon<T>>::init_collection(
412 owner,
413 data,
414 CollectionFlags {
415 external: is_external,
416 ..Default::default()
417 },
418 )
412 }419 }
413420
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
99}91}
10092
101/// @title A contract that allows you to work with collections.93/// @title A contract that allows you to work with collections.
102/// @dev the ERC-165 identifier for this interface is 0x9f70d4e094/// @dev the ERC-165 identifier for this interface is 0x47dbc105
103contract Collection is Dummy, ERC165 {95contract Collection is Dummy, ERC165 {
104 /// Set collection property.96 /// Set collection property.
105 ///97 ///
172 dummy = 0;158 dummy = 0;
173 }159 }
174160
161 /// Whether there is a pending sponsor.
175 /// @dev EVM selector for this function is: 0x058ac185,162 /// @dev EVM selector for this function is: 0x058ac185,
176 /// or in textual repr: hasCollectionPendingSponsor()163 /// or in textual repr: hasCollectionPendingSponsor()
177 function hasCollectionPendingSponsor() public view returns (bool) {164 function hasCollectionPendingSponsor() public view returns (bool) {
201 /// Get current sponsor.188 /// Get current sponsor.
202 ///189 ///
203 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.190 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
204 /// @dev EVM selector for this function is: 0xb66bbc14,191 /// @dev EVM selector for this function is: 0x6ec0a9f1,
205 /// or in textual repr: getCollectionSponsor()192 /// or in textual repr: collectionSponsor()
206 function getCollectionSponsor() public view returns (Tuple17 memory) {193 function collectionSponsor() public view returns (Tuple17 memory) {
207 require(false, stub_error);194 require(false, stub_error);
208 dummy;195 dummy;
209 return Tuple17(0x0000000000000000000000000000000000000000, 0);196 return Tuple17(0x0000000000000000000000000000000000000000, 0);
430 /// @return `Fungible` or `NFT` or `ReFungible`415 /// @return `Fungible` or `NFT` or `ReFungible`
431 /// @dev EVM selector for this function is: 0xd34b55b8,416 /// @dev EVM selector for this function is: 0xd34b55b8,
432 /// or in textual repr: uniqueCollectionType()417 /// or in textual repr: uniqueCollectionType()
433 function uniqueCollectionType() public returns (string memory) {418 function uniqueCollectionType() public view returns (string memory) {
434 require(false, stub_error);419 require(false, stub_error);
435 dummy = 0;420 dummy;
436 return "";421 return "";
437 }422 }
438423
modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
785 ERC721UniqueExtensions,785 ERC721UniqueExtensions,
786 ERC721Mintable,786 ERC721Mintable,
787 ERC721Burnable,787 ERC721Burnable,
788 Collection(common_mut, CollectionHandle<T>),788 Collection(via(common_mut returns CollectionHandle<T>)),
789 TokenProperties,789 TokenProperties,
790 )790 )
791)]791)]
modifiedpallets/refungible/src/lib.rsdiffbeforeafterboth
112use sp_runtime::{ArithmeticError, DispatchError, DispatchResult, TransactionOutcome};112use sp_runtime::{ArithmeticError, DispatchError, DispatchResult, TransactionOutcome};
113use sp_std::{vec::Vec, vec, collections::btree_map::BTreeMap};113use sp_std::{vec::Vec, vec, collections::btree_map::BTreeMap};
114use up_data_structs::{114use up_data_structs::{
115 AccessMode, budget::Budget, CollectionId, CollectionMode, CollectionPropertiesVec,115 AccessMode, budget::Budget, CollectionId, CollectionMode, CollectionFlags,
116 CreateCollectionData, CustomDataLimit, mapping::TokenAddressMapping, MAX_ITEMS_PER_BATCH,116 CollectionPropertiesVec, CreateCollectionData, CustomDataLimit, mapping::TokenAddressMapping,
117 MAX_REFUNGIBLE_PIECES, Property, PropertyKey, PropertyKeyPermission, PropertyPermission,117 MAX_ITEMS_PER_BATCH, MAX_REFUNGIBLE_PIECES, Property, PropertyKey, PropertyKeyPermission,
118 PropertyScope, PropertyValue, TokenId, TrySetProperty,118 PropertyPermission, PropertyScope, PropertyValue, TokenId, TrySetProperty,
375 owner: T::CrossAccountId,375 owner: T::CrossAccountId,
376 data: CreateCollectionData<T::AccountId>,376 data: CreateCollectionData<T::AccountId>,
377 ) -> Result<CollectionId, DispatchError> {377 ) -> Result<CollectionId, DispatchError> {
378 <PalletCommon<T>>::init_collection(owner, data, false)378 <PalletCommon<T>>::init_collection(owner, data, CollectionFlags::default())
379 }379 }
380380
381 /// Destroy RFT collection381 /// Destroy RFT collection
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
99}91}
10092
101/// @title A contract that allows you to work with collections.93/// @title A contract that allows you to work with collections.
102/// @dev the ERC-165 identifier for this interface is 0x9f70d4e094/// @dev the ERC-165 identifier for this interface is 0x47dbc105
103contract Collection is Dummy, ERC165 {95contract Collection is Dummy, ERC165 {
104 /// Set collection property.96 /// Set collection property.
105 ///97 ///
172 dummy = 0;158 dummy = 0;
173 }159 }
174160
161 /// Whether there is a pending sponsor.
175 /// @dev EVM selector for this function is: 0x058ac185,162 /// @dev EVM selector for this function is: 0x058ac185,
176 /// or in textual repr: hasCollectionPendingSponsor()163 /// or in textual repr: hasCollectionPendingSponsor()
177 function hasCollectionPendingSponsor() public view returns (bool) {164 function hasCollectionPendingSponsor() public view returns (bool) {
201 /// Get current sponsor.188 /// Get current sponsor.
202 ///189 ///
203 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.190 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
204 /// @dev EVM selector for this function is: 0xb66bbc14,191 /// @dev EVM selector for this function is: 0x6ec0a9f1,
205 /// or in textual repr: getCollectionSponsor()192 /// or in textual repr: collectionSponsor()
206 function getCollectionSponsor() public view returns (Tuple17 memory) {193 function collectionSponsor() public view returns (Tuple17 memory) {
207 require(false, stub_error);194 require(false, stub_error);
208 dummy;195 dummy;
209 return Tuple17(0x0000000000000000000000000000000000000000, 0);196 return Tuple17(0x0000000000000000000000000000000000000000, 0);
430 /// @return `Fungible` or `NFT` or `ReFungible`415 /// @return `Fungible` or `NFT` or `ReFungible`
431 /// @dev EVM selector for this function is: 0xd34b55b8,416 /// @dev EVM selector for this function is: 0xd34b55b8,
432 /// or in textual repr: uniqueCollectionType()417 /// or in textual repr: uniqueCollectionType()
433 function uniqueCollectionType() public returns (string memory) {418 function uniqueCollectionType() public view returns (string memory) {
434 require(false, stub_error);419 require(false, stub_error);
435 dummy = 0;420 dummy;
436 return "";421 return "";
437 }422 }
438423
modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.soldiffbeforeafterboth

no syntactic changes

modifiedpallets/scheduler/Cargo.tomldiffbeforeafterboth
25frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }25frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
2626
27up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.27" }27up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.27" }
28log = { version = "0.4.14", default-features = false }28log = { version = "0.4.16", default-features = false }
2929
30[dev-dependencies]30[dev-dependencies]
31sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }31sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
modifiedpallets/unique/src/eth/stubs/CollectionHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedprimitives/data-structs/Cargo.tomldiffbeforeafterboth
27struct-versioning = { path = "../../crates/struct-versioning" }27struct-versioning = { path = "../../crates/struct-versioning" }
28pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }28pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }
29rmrk-traits = { default-features = false, path = "../rmrk-traits" }29rmrk-traits = { default-features = false, path = "../rmrk-traits" }
30bondrewd = { version = "0.1.14", features = ["derive"], default-features = false }
3031
31[features]32[features]
32default = ["std"]33default = ["std"]
addedprimitives/data-structs/src/bondrewd_codec.rsdiffbeforeafterboth

no changes

modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
36use sp_core::U256;36use sp_core::U256;
37use sp_runtime::{ArithmeticError, sp_std::prelude::Vec, Permill};37use sp_runtime::{ArithmeticError, sp_std::prelude::Vec, Permill};
38use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};38use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
39use bondrewd::Bitfields;
39use frame_support::{BoundedVec, traits::ConstU32};40use frame_support::{BoundedVec, traits::ConstU32};
40use derivative::Derivative;41use derivative::Derivative;
41use scale_info::TypeInfo;42use scale_info::TypeInfo;
54 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart,55 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart,
55};56};
5657
58mod bondrewd_codec;
57mod bounded;59mod bounded;
58pub mod budget;60pub mod budget;
59pub mod mapping;61pub mod mapping;
357pub type CollectionDescription = BoundedVec<u16, ConstU32<MAX_COLLECTION_DESCRIPTION_LENGTH>>;359pub type CollectionDescription = BoundedVec<u16, ConstU32<MAX_COLLECTION_DESCRIPTION_LENGTH>>;
358pub type CollectionTokenPrefix = BoundedVec<u8, ConstU32<MAX_TOKEN_PREFIX_LENGTH>>;360pub type CollectionTokenPrefix = BoundedVec<u8, ConstU32<MAX_TOKEN_PREFIX_LENGTH>>;
361
362#[derive(Bitfields, Clone, Copy, PartialEq, Eq, Debug, Default)]
363#[bondrewd(enforce_bytes = 1)]
364pub struct CollectionFlags {
365 /// Tokens in foreign collections can be transferred, but not burnt
366 #[bondrewd(bits = "0..1")]
367 pub foreign: bool,
368 /// External collections can't be managed using `unique` api
369 #[bondrewd(bits = "7..8")]
370 pub external: bool,
371
372 #[bondrewd(reserve, bits = "1..7")]
373 pub reserved: u8,
374}
375bondrewd_codec!(CollectionFlags);
359376
360/// Base structure for represent collection.377/// Base structure for represent collection.
361///378///
404 #[version(2.., upper(Default::default()))]421 #[version(2.., upper(Default::default()))]
405 pub permissions: CollectionPermissions,422 pub permissions: CollectionPermissions,
406423
407 /// Marks that this collection is not "unique", and managed from external.
408 #[version(2.., upper(false))]424 #[version(2.., upper(Default::default()))]
409 pub external_collection: bool,425 pub flags: CollectionFlags,
410426
411 #[version(..2)]427 #[version(..2)]
412 pub variable_on_chain_schema: BoundedVec<u8, ConstU32<VARIABLE_ON_CHAIN_SCHEMA_LIMIT>>,428 pub variable_on_chain_schema: BoundedVec<u8, ConstU32<VARIABLE_ON_CHAIN_SCHEMA_LIMIT>>,
455 /// Is collection read only.471 /// Is collection read only.
456 pub read_only: bool,472 pub read_only: bool,
473
474 /// Is collection is foreign.
475 pub foreign: bool,
457}476}
458477
459/// Data used for create collection.478/// Data used for create collection.
modifiedprimitives/data-structs/src/migration.rsdiffbeforeafterboth
39 test_to_option(SponsoringRateLimit::Blocks(10));39 test_to_option(SponsoringRateLimit::Blocks(10));
40}40}
41
42#[test]
43fn collection_flags_have_same_encoding_as_bool() {
44 use crate::CollectionFlags;
45 use codec::Encode;
46
47 assert_eq!(
48 true.encode(),
49 CollectionFlags {
50 external: true,
51 ..Default::default()
52 }
53 .encode()
54 );
55 assert_eq!(
56 false.encode(),
57 CollectionFlags {
58 external: false,
59 ..Default::default()
60 }
61 .encode()
62 );
63}
4164
modifiedruntime/common/config/orml.rsdiffbeforeafterboth
14// You should have received a copy of the GNU General Public License14// You should have received a copy of the GNU General Public License
15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
1616
17use frame_support::parameter_types;17use frame_support::{
18 parameter_types,
19 traits::{Contains, Everything},
20 weights::Weight,
21};
18use frame_system::EnsureSigned;22use frame_system::EnsureSigned;
23use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key};
24use sp_runtime::traits::Convert;
25use xcm::v1::{Junction::*, Junctions::*, MultiLocation, NetworkId};
26use xcm_builder::LocationInverter;
27use xcm_executor::XcmExecutor;
28use sp_std::{vec, vec::Vec};
29use pallet_foreign_assets::{CurrencyId, NativeCurrency};
19use crate::{Runtime, Event, RelayChainBlockNumberProvider};30use crate::{
31 Runtime, Event, RelayChainBlockNumberProvider,
32 runtime_common::config::{
33 xcm::{
34 SelfLocation, Weigher, XcmConfig, Ancestry,
35 xcm_assets::{CurrencyIdConvert},
36 },
37 pallets::TreasuryAccountId,
38 substrate::{MaxLocks, MaxReserves},
39 },
40};
41
20use up_common::{42use up_common::{
21 types::{AccountId, Balance},43 types::{AccountId, Balance},
22 constants::*,44 constants::*,
23};45};
46
47// Signed version of balance
48pub type Amount = i128;
2449
25parameter_types! {50parameter_types! {
26 pub const MinVestedTransfer: Balance = 10 * UNIQUE;51 pub const MinVestedTransfer: Balance = 10 * UNIQUE;
27 pub const MaxVestingSchedules: u32 = 28;52 pub const MaxVestingSchedules: u32 = 28;
53
54 pub const BaseXcmWeight: Weight = 100_000_000; // TODO: recheck this
55 pub const MaxAssetsForTransfer: usize = 2;
28}56}
57
58parameter_type_with_key! {
59 pub ParachainMinFee: |_location: MultiLocation| -> Option<u128> {
60 Some(100_000_000_000)
61 };
62}
63
64parameter_type_with_key! {
65 pub ExistentialDeposits: |currency_id: CurrencyId| -> Balance {
66 match currency_id {
67 CurrencyId::NativeAssetId(symbol) => match symbol {
68 NativeCurrency::Here => 0,
69 NativeCurrency::Parent=> 0,
70 },
71 _ => 100_000
72 }
73 };
74}
75
76pub fn get_all_module_accounts() -> Vec<AccountId> {
77 vec![TreasuryAccountId::get()]
78}
79
80pub struct DustRemovalWhitelist;
81impl Contains<AccountId> for DustRemovalWhitelist {
82 fn contains(a: &AccountId) -> bool {
83 get_all_module_accounts().contains(a)
84 }
85}
86
87pub struct AccountIdToMultiLocation;
88impl Convert<AccountId, MultiLocation> for AccountIdToMultiLocation {
89 fn convert(account: AccountId) -> MultiLocation {
90 X1(AccountId32 {
91 network: NetworkId::Any,
92 id: account.into(),
93 })
94 .into()
95 }
96}
2997
30impl orml_vesting::Config for Runtime {98impl orml_vesting::Config for Runtime {
31 type Event = Event;99 type Event = Event;
37 type BlockNumberProvider = RelayChainBlockNumberProvider<Runtime>;105 type BlockNumberProvider = RelayChainBlockNumberProvider<Runtime>;
38}106}
107
108impl orml_tokens::Config for Runtime {
109 type Event = Event;
110 type Balance = Balance;
111 type Amount = Amount;
112 type CurrencyId = CurrencyId;
113 type WeightInfo = ();
114 type ExistentialDeposits = ExistentialDeposits;
115 type OnDust = orml_tokens::TransferDust<Runtime, TreasuryAccountId>;
116 type MaxLocks = MaxLocks;
117 type MaxReserves = MaxReserves;
118 // TODO: Add all module accounts
119 type DustRemovalWhitelist = DustRemovalWhitelist;
120 /// The id type for named reserves.
121 type ReserveIdentifier = ();
122 type OnNewTokenAccount = ();
123 type OnKilledTokenAccount = ();
124}
125
126impl orml_xtokens::Config for Runtime {
127 type Event = Event;
128 type Balance = Balance;
129 type CurrencyId = CurrencyId;
130 type CurrencyIdConvert = CurrencyIdConvert;
131 type AccountIdToMultiLocation = AccountIdToMultiLocation;
132 type SelfLocation = SelfLocation;
133 type XcmExecutor = XcmExecutor<XcmConfig<Self>>;
134 type Weigher = Weigher;
135 type BaseXcmWeight = BaseXcmWeight;
136 type LocationInverter = LocationInverter<Ancestry>;
137 type MaxAssetsForTransfer = MaxAssetsForTransfer;
138 type MinXcmFee = ParachainMinFee;
139 type MultiLocationsFilter = Everything;
140 type ReserveProvider = AbsoluteReserveProvider;
141}
39142
addedruntime/common/config/pallets/foreign_asset.rsdiffbeforeafterboth

no changes

modifiedruntime/common/config/pallets/mod.rsdiffbeforeafterboth
40#[cfg(feature = "scheduler")]40#[cfg(feature = "scheduler")]
41pub mod scheduler;41pub mod scheduler;
42
43#[cfg(feature = "foreign-assets")]
44pub mod foreign_asset;
4245
43#[cfg(feature = "app-promotion")]46#[cfg(feature = "app-promotion")]
44pub mod app_promotion;47pub mod app_promotion;
deletedruntime/common/config/xcm.rsdiffbeforeafterboth

no changes

addedruntime/common/config/xcm/foreignassets.rsdiffbeforeafterboth

no changes

addedruntime/common/config/xcm/mod.rsdiffbeforeafterboth

no changes

addedruntime/common/config/xcm/nativeassets.rsdiffbeforeafterboth

no changes

modifiedruntime/common/construct_runtime/mod.rsdiffbeforeafterboth
42 Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event<T>} = 34,42 Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event<T>} = 34,
43 Sudo: pallet_sudo::{Pallet, Call, Storage, Config<T>, Event<T>} = 35,43 Sudo: pallet_sudo::{Pallet, Call, Storage, Config<T>, Event<T>} = 35,
44 Vesting: orml_vesting::{Pallet, Storage, Call, Event<T>, Config<T>} = 37,44 Vesting: orml_vesting::{Pallet, Storage, Call, Event<T>, Config<T>} = 37,
45 // Vesting: pallet_vesting::{Pallet, Call, Config<T>, Storage, Event<T>} = 37,45
46 XTokens: orml_xtokens = 38,
47 Tokens: orml_tokens = 39,
46 // Contracts: pallet_contracts::{Pallet, Call, Storage, Event<T>} = 38,48 // Contracts: pallet_contracts::{Pallet, Call, Storage, Event<T>} = 38,
4749
48 // XCM helpers.50 // XCM helpers.
65 Common: pallet_common::{Pallet, Storage, Event<T>} = 66,67 Common: pallet_common::{Pallet, Storage, Event<T>} = 66,
66 Fungible: pallet_fungible::{Pallet, Storage} = 67,68 Fungible: pallet_fungible::{Pallet, Storage} = 67,
6769
68 #[runtimes(opal)]70 #[runtimes(opal, quartz)]
69 Refungible: pallet_refungible::{Pallet, Storage} = 68,71 Refungible: pallet_refungible::{Pallet, Storage} = 68,
7072
71 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,73 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,
80 #[runtimes(opal)]82 #[runtimes(opal)]
81 AppPromotion: pallet_app_promotion::{Pallet, Call, Storage, Event<T>} = 73,83 AppPromotion: pallet_app_promotion::{Pallet, Call, Storage, Event<T>} = 73,
84
85 #[runtimes(opal)]
86 ForeignAssets: pallet_foreign_assets::{Pallet, Call, Storage, Event<T>} = 80,
8287
83 // Frontier88 // Frontier
84 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,89 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,
modifiedruntime/common/mod.rsdiffbeforeafterboth
24pub mod sponsoring;24pub mod sponsoring;
25pub mod weights;25pub mod weights;
26
27#[cfg(test)]
28pub mod tests;
2629
27use sp_core::H160;30use sp_core::H160;
28use frame_support::traits::{Currency, OnUnbalanced, Imbalance};31use frame_support::traits::{Currency, OnUnbalanced, Imbalance};
7982
80pub type SignedExtra = (83pub type SignedExtra = (
81 frame_system::CheckSpecVersion<Runtime>,84 frame_system::CheckSpecVersion<Runtime>,
82 // system::CheckTxVersion<Runtime>,85 frame_system::CheckTxVersion<Runtime>,
83 frame_system::CheckGenesis<Runtime>,86 frame_system::CheckGenesis<Runtime>,
84 frame_system::CheckEra<Runtime>,87 frame_system::CheckEra<Runtime>,
85 frame_system::CheckNonce<Runtime>,88 frame_system::CheckNonce<Runtime>,
modifiedruntime/common/runtime_apis.rsdiffbeforeafterboth
688 #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]688 #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
689 list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);689 list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);
690
691 #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
692 list_benchmark!(list, extra, pallet_foreign_assets, ForeignAssets);
693
690694
691 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);695 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);
744 #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]748 #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
745 add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);749 add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);
750
751 #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
752 add_benchmark!(params, batches, pallet_foreign_assets, ForeignAssets);
746753
747 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);754 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);
748755
addedruntime/common/tests/mod.rsdiffbeforeafterboth

no changes

addedruntime/common/tests/xcm.rsdiffbeforeafterboth

no changes

modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
35 'pallet-nonfungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',
36 'pallet-proxy-rmrk-core/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',
37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',
38 'pallet-foreign-assets/runtime-benchmarks',
38 'pallet-unique/runtime-benchmarks',39 'pallet-unique/runtime-benchmarks',
39 'pallet-inflation/runtime-benchmarks',40 'pallet-inflation/runtime-benchmarks',
40 'pallet-app-promotion/runtime-benchmarks',41 'pallet-app-promotion/runtime-benchmarks',
123 'up-sponsorship/std',124 'up-sponsorship/std',
124125
125 "orml-vesting/std",126 "orml-vesting/std",
127 "orml-tokens/std",
128 "orml-xtokens/std",
129 "orml-traits/std",
130 "pallet-foreign-assets/std"
126]131]
127limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']132limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
128opal-runtime = ['refungible', 'scheduler', 'rmrk', 'app-promotion']133opal-runtime = ['refungible', 'scheduler', 'rmrk', 'app-promotion', 'foreign-assets']
129134
130refungible = []135refungible = []
131scheduler = []136scheduler = []
132rmrk = []137rmrk = []
138foreign-assets = []
133app-promotion = []139app-promotion = []
134140
135################################################################################141################################################################################
403version = "0.4.1-dev"409version = "0.4.1-dev"
404default-features = false410default-features = false
411
412[dependencies.orml-xtokens]
413git = "https://github.com/open-web3-stack/open-runtime-module-library"
414branch = "polkadot-v0.9.27"
415version = "0.4.1-dev"
416default-features = false
417
418[dependencies.orml-tokens]
419git = "https://github.com/open-web3-stack/open-runtime-module-library"
420branch = "polkadot-v0.9.27"
421version = "0.4.1-dev"
422default-features = false
423
424[dependencies.orml-traits]
425git = "https://github.com/open-web3-stack/open-runtime-module-library"
426branch = "polkadot-v0.9.27"
427version = "0.4.1-dev"
428default-features = false
405429
406################################################################################430################################################################################
407# local dependencies431# local dependencies
442fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }466fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }
443fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }467fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }
444evm-coder = { default-features = false, path = '../../crates/evm-coder' }468evm-coder = { default-features = false, path = '../../crates/evm-coder' }
445up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.27" }469up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.27' }
470pallet-foreign-assets = { default-features = false, path = "../../pallets/foreign-assets" }
446471
447################################################################################472################################################################################
473# Other Dependencies
474
475impl-trait-for-tuples = "0.2.2"
476
477################################################################################
478# Dev Dependencies
479
480[dev-dependencies.logtest]
481version = "2.0.0"
482
483################################################################################
448# Build Dependencies484# Build Dependencies
449485
450[build-dependencies.substrate-wasm-builder]486[build-dependencies.substrate-wasm-builder]
modifiedruntime/opal/src/lib.rsdiffbeforeafterboth
35#[path = "../../common/mod.rs"]35#[path = "../../common/mod.rs"]
36mod runtime_common;36mod runtime_common;
37
38pub mod xcm_barrier;
39
40#[cfg(test)]
41mod tests;
3742
38pub use runtime_common::*;43pub use runtime_common::*;
3944
45 spec_name: create_runtime_str!(RUNTIME_NAME),50 spec_name: create_runtime_str!(RUNTIME_NAME),
46 impl_name: create_runtime_str!(RUNTIME_NAME),51 impl_name: create_runtime_str!(RUNTIME_NAME),
47 authoring_version: 1,52 authoring_version: 1,
48 spec_version: 927020,53 spec_version: 927030,
49 impl_version: 0,54 impl_version: 0,
50 apis: RUNTIME_API_VERSIONS,55 apis: RUNTIME_API_VERSIONS,
51 transaction_version: 2,56 transaction_version: 2,
addedruntime/opal/src/tests/logcapture.rsdiffbeforeafterboth

no changes

addedruntime/opal/src/tests/mod.rsdiffbeforeafterboth

no changes

addedruntime/opal/src/tests/xcm.rsdiffbeforeafterboth

no changes

addedruntime/opal/src/xcm_barrier.rsdiffbeforeafterboth

no changes

modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
36 'pallet-proxy-rmrk-core/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',
37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',
38 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',
39 'pallet-foreign-assets/runtime-benchmarks',
39 'pallet-inflation/runtime-benchmarks',40 'pallet-inflation/runtime-benchmarks',
40 'pallet-unique-scheduler/runtime-benchmarks',41 'pallet-unique-scheduler/runtime-benchmarks',
41 'pallet-xcm/runtime-benchmarks',42 'pallet-xcm/runtime-benchmarks',
116 'xcm-builder/std',117 'xcm-builder/std',
117 'xcm-executor/std',118 'xcm-executor/std',
118 'up-common/std',119 'up-common/std',
120 'rmrk-rpc/std',
121 'evm-coder/std',
122 'up-sponsorship/std',
119123
120 "orml-vesting/std",124 "orml-vesting/std",
125 "orml-tokens/std",
126 "orml-xtokens/std",
127 "orml-traits/std",
128 "pallet-foreign-assets/std"
121]129]
122limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']130limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
123quartz-runtime = []131quartz-runtime = ['refungible']
124132
125refungible = []133refungible = []
126scheduler = []134scheduler = []
127rmrk = []135rmrk = []
136foreign-assets = []
128137
129################################################################################138################################################################################
130# Substrate Dependencies139# Substrate Dependencies
397version = "0.4.1-dev"406version = "0.4.1-dev"
398default-features = false407default-features = false
408
409[dependencies.orml-xtokens]
410git = "https://github.com/open-web3-stack/open-runtime-module-library"
411branch = "polkadot-v0.9.27"
412version = "0.4.1-dev"
413default-features = false
414
415[dependencies.orml-tokens]
416git = "https://github.com/open-web3-stack/open-runtime-module-library"
417branch = "polkadot-v0.9.27"
418version = "0.4.1-dev"
419default-features = false
420
421[dependencies.orml-traits]
422git = "https://github.com/open-web3-stack/open-runtime-module-library"
423branch = "polkadot-v0.9.27"
424version = "0.4.1-dev"
425default-features = false
426
399427
400################################################################################428################################################################################
443fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }471fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }
444fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }472fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }
445evm-coder = { default-features = false, path = '../../crates/evm-coder' }473evm-coder = { default-features = false, path = '../../crates/evm-coder' }
446up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.27" }474up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.27' }
475pallet-foreign-assets = { default-features = false, path = "../../pallets/foreign-assets" }
447476
448################################################################################477################################################################################
478# Other Dependencies
479
480impl-trait-for-tuples = "0.2.2"
481
482################################################################################
483# Dev Dependencies
484
485[dev-dependencies.logtest]
486version = "2.0.0"
487
488################################################################################
449# Build Dependencies489# Build Dependencies
450490
451[build-dependencies.substrate-wasm-builder]491[build-dependencies.substrate-wasm-builder]
modifiedruntime/quartz/src/lib.rsdiffbeforeafterboth
35#[path = "../../common/mod.rs"]35#[path = "../../common/mod.rs"]
36mod runtime_common;36mod runtime_common;
37
38pub mod xcm_barrier;
39
40#[cfg(test)]
41mod tests;
3742
38pub use runtime_common::*;43pub use runtime_common::*;
3944
45 spec_name: create_runtime_str!(RUNTIME_NAME),50 spec_name: create_runtime_str!(RUNTIME_NAME),
46 impl_name: create_runtime_str!(RUNTIME_NAME),51 impl_name: create_runtime_str!(RUNTIME_NAME),
47 authoring_version: 1,52 authoring_version: 1,
48 spec_version: 927020,53 spec_version: 927030,
49 impl_version: 0,54 impl_version: 0,
50 apis: RUNTIME_API_VERSIONS,55 apis: RUNTIME_API_VERSIONS,
51 transaction_version: 2,56 transaction_version: 2,
addedruntime/quartz/src/tests/logcapture.rsdiffbeforeafterboth

no changes

addedruntime/quartz/src/tests/mod.rsdiffbeforeafterboth

no changes

addedruntime/quartz/src/tests/xcm.rsdiffbeforeafterboth

no changes

addedruntime/quartz/src/xcm_barrier.rsdiffbeforeafterboth

no changes

modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
36 'pallet-proxy-rmrk-core/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',
37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',
38 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',
39 'pallet-foreign-assets/runtime-benchmarks',
39 'pallet-inflation/runtime-benchmarks',40 'pallet-inflation/runtime-benchmarks',
40 'pallet-unique-scheduler/runtime-benchmarks',41 'pallet-unique-scheduler/runtime-benchmarks',
41 'pallet-xcm/runtime-benchmarks',42 'pallet-xcm/runtime-benchmarks',
117 'xcm-builder/std',118 'xcm-builder/std',
118 'xcm-executor/std',119 'xcm-executor/std',
119 'up-common/std',120 'up-common/std',
121 'rmrk-rpc/std',
122 'evm-coder/std',
123 'up-sponsorship/std',
120124
121 "orml-vesting/std",125 "orml-vesting/std",
126 "orml-tokens/std",
127 "orml-xtokens/std",
128 "orml-traits/std",
129 "pallet-foreign-assets/std"
122]130]
123limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']131limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
124unique-runtime = []132unique-runtime = []
125133
126refungible = []134refungible = []
127scheduler = []135scheduler = []
128rmrk = []136rmrk = []
137foreign-assets = []
129138
130################################################################################139################################################################################
131# Substrate Dependencies140# Substrate Dependencies
398version = "0.4.1-dev"407version = "0.4.1-dev"
399default-features = false408default-features = false
400409
410[dependencies.orml-xtokens]
411git = "https://github.com/open-web3-stack/open-runtime-module-library"
412branch = "polkadot-v0.9.27"
413version = "0.4.1-dev"
414default-features = false
415
416[dependencies.orml-tokens]
417git = "https://github.com/open-web3-stack/open-runtime-module-library"
418branch = "polkadot-v0.9.27"
419version = "0.4.1-dev"
420default-features = false
421
422[dependencies.orml-traits]
423git = "https://github.com/open-web3-stack/open-runtime-module-library"
424branch = "polkadot-v0.9.27"
425version = "0.4.1-dev"
426default-features = false
401################################################################################427################################################################################
402# local dependencies428# local dependencies
403429
437fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }463fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }
438fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }464fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27-fee-limit" }
439evm-coder = { default-features = false, path = '../../crates/evm-coder' }465evm-coder = { default-features = false, path = '../../crates/evm-coder' }
440up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.27" }466up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.27' }
467pallet-foreign-assets = { default-features = false, path = "../../pallets/foreign-assets" }
441468
442################################################################################469################################################################################
470# Other Dependencies
471
472impl-trait-for-tuples = "0.2.2"
473
474################################################################################
475# Dev Dependencies
476
477[dev-dependencies.logtest]
478version = "2.0.0"
479
480################################################################################
443# Build Dependencies481# Build Dependencies
444482
445[build-dependencies.substrate-wasm-builder]483[build-dependencies.substrate-wasm-builder]
modifiedruntime/unique/src/lib.rsdiffbeforeafterboth
35#[path = "../../common/mod.rs"]35#[path = "../../common/mod.rs"]
36mod runtime_common;36mod runtime_common;
37
38pub mod xcm_barrier;
39
40#[cfg(test)]
41mod tests;
3742
38pub use runtime_common::*;43pub use runtime_common::*;
3944
45 spec_name: create_runtime_str!(RUNTIME_NAME),50 spec_name: create_runtime_str!(RUNTIME_NAME),
46 impl_name: create_runtime_str!(RUNTIME_NAME),51 impl_name: create_runtime_str!(RUNTIME_NAME),
47 authoring_version: 1,52 authoring_version: 1,
48 spec_version: 927020,53 spec_version: 927030,
49 impl_version: 0,54 impl_version: 0,
50 apis: RUNTIME_API_VERSIONS,55 apis: RUNTIME_API_VERSIONS,
51 transaction_version: 2,56 transaction_version: 2,
addedruntime/unique/src/tests/logcapture.rsdiffbeforeafterboth

no changes

addedruntime/unique/src/tests/mod.rsdiffbeforeafterboth

no changes

addedruntime/unique/src/tests/xcm.rsdiffbeforeafterboth

no changes

addedruntime/unique/src/xcm_barrier.rsdiffbeforeafterboth

no changes

modifiedtests/package.jsondiffbeforeafterboth
49 "testConfirmSponsorship": "mocha --timeout 9999999 -r ts-node/register ./**/confirmSponsorship.test.ts",49 "testConfirmSponsorship": "mocha --timeout 9999999 -r ts-node/register ./**/confirmSponsorship.test.ts",
50 "testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts",50 "testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts",
51 "testRemoveCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionSponsor.test.ts",51 "testRemoveCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionSponsor.test.ts",
52 "testRemoveFromAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromAllowList.test.ts",
53 "testAllowLists": "mocha --timeout 9999999 -r ts-node/register ./**/allowLists.test.ts",52 "testAllowLists": "mocha --timeout 9999999 -r ts-node/register ./**/allowLists.test.ts",
54 "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",53 "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",
55 "testContracts": "mocha --timeout 9999999 -r ts-node/register ./**/contracts.test.ts",54 "testContracts": "mocha --timeout 9999999 -r ts-node/register ./**/contracts.test.ts",
65 "testTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/transfer.test.ts",64 "testTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/transfer.test.ts",
66 "testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",65 "testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",
67 "testAdminTransferAndBurn": "mocha --timeout 9999999 -r ts-node/register ./**/adminTransferAndBurn.test.ts",66 "testAdminTransferAndBurn": "mocha --timeout 9999999 -r ts-node/register ./**/adminTransferAndBurn.test.ts",
68 "testSetMintPermission": "mocha --timeout 9999999 -r ts-node/register ./**/setMintPermission.test.ts",67 "testSetPermissions": "mocha --timeout 9999999 -r ts-node/register ./**/setPermissions.test.ts",
69 "testSetPublicAccessMode": "mocha --timeout 9999999 -r ts-node/register ./**/setPublicAccessMode.test.ts",
70 "testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts",68 "testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts",
71 "testContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/contractSponsoring.test.ts",69 "testContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/contractSponsoring.test.ts",
72 "testEnableContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/enableContractSponsoring.test.ts",70 "testEnableContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/enableContractSponsoring.test.ts",
78 "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts",76 "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts",
79 "testScheduler": "mocha --timeout 9999999 -r ts-node/register ./**/scheduler.test.ts",77 "testScheduler": "mocha --timeout 9999999 -r ts-node/register ./**/scheduler.test.ts",
80 "testSchedulingEVM": "mocha --timeout 9999999 -r ts-node/register ./**/eth/scheduling.test.ts",78 "testSchedulingEVM": "mocha --timeout 9999999 -r ts-node/register ./**/eth/scheduling.test.ts",
79 "testXcmUnique": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmUnique.test.ts",
80 "testXcmQuartz": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmQuartz.test.ts",
81 "testXcmOpal": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmOpal.test.ts",
82 "testXcmTransferAcala": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferAcala.test.ts acalaId=2000 uniqueId=5000",
83 "testXcmTransferStatemine": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferStatemine.test.ts statemineId=1000 uniqueId=5000",
81 "testXcmTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/xcmTransfer.test.ts",84 "testXcmTransferMoonbeam": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferMoonbeam.test.ts",
82 "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts",85 "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts",
83 "testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",86 "testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",
84 "testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",87 "testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",
modifiedtests/scripts/readyness.jsdiffbeforeafterboth
1const { ApiPromise, WsProvider } = require('@polkadot/api');1const { ApiPromise, WsProvider } = require('@polkadot/api');
22
3const connect = async () => {3const connect = async () => {
4 const wsEndpoint = 'ws://127.0.0.1:9944'4 const wsEndpoint = 'ws://127.0.0.1:9944';
5 const api = new ApiPromise({provider: new WsProvider(wsEndpoint)});5 const api = new ApiPromise({provider: new WsProvider(wsEndpoint)});
6 await api.isReadyOrError;6 await api.isReadyOrError;
77
15 return new Promise(resolve => {15 return new Promise(resolve => {
16 setTimeout(() => resolve(), time);16 setTimeout(() => resolve(), time);
17 });17 });
18}18};
1919
20const main = async () => {20const main = async () => {
21 while(true) {21 while(true) {
deletedtests/src/addToAllowList.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/addToContractAllowList.test.tsdiffbeforeafterboth
27chai.use(chaiAsPromised);27chai.use(chaiAsPromised);
28const expect = chai.expect;28const expect = chai.expect;
2929
30// todo:playgrounds skipped ~ postponed
30describe.skip('Integration Test addToContractAllowList', () => {31describe.skip('Integration Test addToContractAllowList', () => {
3132
32 it('Add an address to a contract allow list', async () => {33 it('Add an address to a contract allow list', async () => {
modifiedtests/src/allowLists.test.tsdiffbeforeafterboth
1616
17import {IKeyringPair} from '@polkadot/types/types';17import {IKeyringPair} from '@polkadot/types/types';
18import {usingPlaygrounds, expect, itSub} from './util/playgrounds';18import {usingPlaygrounds, expect, itSub} from './util/playgrounds';
19import {ICollectionPermissions} from './util/playgrounds/types';
1920
20describe('Integration Test ext. Allow list tests', () => {21describe('Integration Test ext. Allow list tests', () => {
21 let alice: IKeyringPair;22 let alice: IKeyringPair;
25 before(async () => {26 before(async () => {
26 await usingPlaygrounds(async (helper, privateKey) => {27 await usingPlaygrounds(async (helper, privateKey) => {
27 const donor = privateKey('//Alice');28 const donor = privateKey('//Alice');
28 [alice, bob, charlie] = await helper.arrange.createAccounts([100n, 100n, 100n], donor);29 [alice, bob, charlie] = await helper.arrange.createAccounts([30n, 10n, 10n], donor);
29 });30 });
30 });31 });
3132
32 itSub('Owner can add address to allow list', async ({helper}) => {33 describe('Positive', async () => {
34 itSub('Owner can add address to allow list', async ({helper}) => {
33 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});35 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
34 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});36 // allow list does not need to be enabled to add someone in advance
37 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});
35 const allowList = await helper.nft.getAllowList(collectionId);38 const allowList = await helper.nft.getAllowList(collectionId);
36 expect(allowList).to.be.deep.contains({Substrate: bob.address});39 expect(allowList).to.deep.contain({Substrate: bob.address});
37 });40 });
3841
39 itSub('Admin can add address to allow list', async ({helper}) => {42 itSub('Admin can add address to allow list', async ({helper}) => {
40 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});43 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
41 await helper.nft.addAdmin(alice, collectionId, {Substrate: bob.address});44 await helper.nft.addAdmin(alice, collectionId, {Substrate: bob.address});
4245
43 await helper.nft.addToAllowList(bob, collectionId, {Substrate: charlie.address});46 // allow list does not need to be enabled to add someone in advance
47 await helper.nft.addToAllowList(bob, collectionId, {Substrate: charlie.address});
44 const allowList = await helper.nft.getAllowList(collectionId);48 const allowList = await helper.nft.getAllowList(collectionId);
45 expect(allowList).to.be.deep.contains({Substrate: charlie.address});49 expect(allowList).to.deep.contain({Substrate: charlie.address});
46 });50 });
4751
48 itSub('Non-privileged user cannot add address to allow list', async ({helper}) => {52 itSub('If address is already added to allow list, nothing happens', async ({helper}) => {
49 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});53 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
50 const addToAllowListTx = async () => helper.nft.addToAllowList(bob, collectionId, {Substrate: charlie.address});54 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});
55 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});
51 await expect(addToAllowListTx()).to.be.rejectedWith(/common\.NoPermission/);56 const allowList = await helper.nft.getAllowList(collectionId);
57 expect(allowList).to.deep.contain({Substrate: bob.address});
58 });
52 });59 });
5360
54 itSub('Nobody can add address to allow list of non-existing collection', async ({helper}) => {61 describe('Negative', async () => {
62 itSub('Nobody can add address to allow list of non-existing collection', async ({helper}) => {
55 const collectionId = (1<<32) - 1;63 const collectionId = (1<<32) - 1;
56 const addToAllowListTx = async () => helper.nft.addToAllowList(bob, collectionId, {Substrate: charlie.address});64 await expect(helper.nft.addToAllowList(bob, collectionId, {Substrate: charlie.address}))
57 await expect(addToAllowListTx()).to.be.rejectedWith(/common\.CollectionNotFound/);65 .to.be.rejectedWith(/common\.CollectionNotFound/);
58 });66 });
5967
60 itSub('Nobody can add address to allow list of destroyed collection', async ({helper}) => {68 itSub('Nobody can add address to allow list of destroyed collection', async ({helper}) => {
61 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});69 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
62 await helper.collection.burn(alice, collectionId);70 await helper.collection.burn(alice, collectionId);
63 const addToAllowListTx = async () => helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});71 await expect(helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address}))
72 .to.be.rejectedWith(/common\.CollectionNotFound/);
64 await expect(addToAllowListTx()).to.be.rejectedWith(/common\.CollectionNotFound/);73 });
74
75 itSub('Non-privileged user cannot add address to allow list', async ({helper}) => {
76 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
77 await expect(helper.nft.addToAllowList(bob, collectionId, {Substrate: charlie.address}))
78 .to.be.rejectedWith(/common\.NoPermission/);
79 });
65 });80 });
81});
6682
67 itSub('If address is already added to allow list, nothing happens', async ({helper}) => {83describe('Integration Test ext. Remove from Allow List', () => {
68 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});84 let alice: IKeyringPair;
85 let bob: IKeyringPair;
86 let charlie: IKeyringPair;
87
88 before(async () => {
69 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});89 await usingPlaygrounds(async (helper, privateKey) => {
70 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});90 const donor = privateKey('//Alice');
71 const allowList = await helper.nft.getAllowList(collectionId);91 [alice, bob, charlie] = await helper.arrange.createAccounts([30n, 10n, 10n], donor);
72 expect(allowList).to.be.deep.contains({Substrate: bob.address});92 });
73 });93 });
7494
75 itSub('Owner can remove address from allow list', async ({helper}) => {95 describe('Positive', async () => {
96 itSub('Owner can remove address from allow list', async ({helper}) => {
76 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});97 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
77 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});98 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});
7899
79 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address});100 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address});
80101
81 const allowList = await helper.nft.getAllowList(collectionId);102 const allowList = await helper.nft.getAllowList(collectionId);
82103
83 expect(allowList).to.be.not.deep.contains({Substrate: bob.address});104 expect(allowList).to.not.deep.contain({Substrate: bob.address});
84 });105 });
85106
86 itSub('Admin can remove address from allow list', async ({helper}) => {107 itSub('Admin can remove address from allow list', async ({helper}) => {
87 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});108 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
88 await helper.nft.addAdmin(alice, collectionId, {Substrate: charlie.address});109 await helper.nft.addAdmin(alice, collectionId, {Substrate: charlie.address});
89 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});110 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});
90 await helper.collection.removeFromAllowList(charlie, collectionId, {Substrate: bob.address});111 await helper.collection.removeFromAllowList(charlie, collectionId, {Substrate: bob.address});
91112
92 const allowList = await helper.nft.getAllowList(collectionId);113 const allowList = await helper.nft.getAllowList(collectionId);
114 expect(allowList).to.not.deep.contain({Substrate: bob.address});
115 });
93116
94 expect(allowList).to.be.not.deep.contains({Substrate: bob.address});117 itSub('If address is already removed from allow list, nothing happens', async ({helper}) => {
118 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
119 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});
120 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address});
95 });121 const allowListBefore = await helper.nft.getAllowList(collectionId);
122 expect(allowListBefore).to.not.deep.contain({Substrate: bob.address});
96123
97 itSub('Non-privileged user cannot remove address from allow list', async ({helper}) => {124 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address});
98 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
99 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
100 const removeTx = async () => helper.collection.removeFromAllowList(bob, collectionId, {Substrate: charlie.address});
101 await expect(removeTx()).to.be.rejectedWith(/common\.NoPermission/);
102 const allowList = await helper.nft.getAllowList(collectionId);
103125
104 expect(allowList).to.be.deep.contains({Substrate: charlie.address});126 const allowListAfter = await helper.nft.getAllowList(collectionId);
127 expect(allowListAfter).to.not.deep.contain({Substrate: bob.address});
128 });
105 });129 });
106130
107 itSub('Nobody can remove address from allow list of non-existing collection', async ({helper}) => {131 describe('Negative', async () => {
132 itSub('Non-privileged user cannot remove address from allow list', async ({helper}) => {
133 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
134 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
135 await expect(helper.collection.removeFromAllowList(charlie, collectionId, {Substrate: charlie.address}))
136 .to.be.rejectedWith(/common\.NoPermission/);
137
138 const allowList = await helper.nft.getAllowList(collectionId);
139 expect(allowList).to.deep.contain({Substrate: charlie.address});
140 });
141
142 itSub('Nobody can remove address from allow list of non-existing collection', async ({helper}) => {
108 const collectionId = (1<<32) - 1;143 const collectionId = (1<<32) - 1;
109 const removeTx = async () => helper.collection.removeFromAllowList(bob, collectionId, {Substrate: charlie.address});144 await expect(helper.collection.removeFromAllowList(bob, collectionId, {Substrate: charlie.address}))
145 .to.be.rejectedWith(/common\.CollectionNotFound/);
146 });
147
148 itSub('Nobody can remove address from allow list of deleted collection', async ({helper}) => {
149 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
150 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});
110 await expect(removeTx()).to.be.rejectedWith(/common\.CollectionNotFound/);151 await helper.collection.burn(alice, collectionId);
152
153 await expect(helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address}))
154 .to.be.rejectedWith(/common\.CollectionNotFound/);
155 });
111 });156 });
157});
112158
113 itSub('Nobody can remove address from allow list of deleted collection', async ({helper}) => {159describe('Integration Test ext. Transfer if included in Allow List', () => {
114 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});160 let alice: IKeyringPair;
115 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});161 let bob: IKeyringPair;
116 await helper.collection.burn(alice, collectionId);162 let charlie: IKeyringPair;
117 const removeTx = async () => helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address});
118163
119 await expect(removeTx()).to.be.rejectedWith(/common\.CollectionNotFound/);164 before(async () => {
165 await usingPlaygrounds(async (helper, privateKey) => {
166 const donor = privateKey('//Alice');
167 [alice, bob, charlie] = await helper.arrange.createAccounts([30n, 10n, 10n], donor);
168 });
120 });169 });
121170
122 itSub('If address is already removed from allow list, nothing happens', async ({helper}) => {171 describe('Positive', async () => {
172 itSub('If Public Access mode is set to AllowList, tokens can be transferred to a allowlisted address with transfer.', async ({helper}) => {
123 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});173 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
124 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});174 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
175 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
176 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
125 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address});177 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
126 const allowListBefore = await helper.nft.getAllowList(collectionId);178 await helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});
179 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);
127 expect(allowListBefore).to.be.not.deep.contains({Substrate: bob.address});180 expect(owner.Substrate).to.be.equal(charlie.address);
181 });
128182
129 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: bob.address});183 itSub('If Public Access mode is set to AllowList, tokens can be transferred to a allowlisted address with transferFrom.', async ({helper}) => {
184 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
185 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
186 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
187 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
188 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
189 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});
130190
131 const allowListAfter = await helper.nft.getAllowList(collectionId);191 await helper.nft.transferTokenFrom(alice, collectionId, tokenId, {Substrate: alice.address}, {Substrate: charlie.address});
192 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);
132 expect(allowListAfter).to.be.not.deep.contains({Substrate: bob.address});193 expect(owner.Substrate).to.be.equal(charlie.address);
133 });194 });
134195
135 itSub('If Public Access mode is set to AllowList, tokens can’t be transferred from a non-allowlisted address with transfer or transferFrom. Test1', async ({helper}) => {196 itSub('If Public Access mode is set to AllowList, tokens can be transferred from a allowlisted address with transfer', async ({helper}) => {
136 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});197 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
137 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});198 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
138 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});199 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
200 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
139 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});201 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
140202
141 const transferResult = async () => helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});203 await helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});
142 await expect(transferResult()).to.be.rejectedWith(/common\.AddressNotInAllowlist/);204 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);
205 expect(owner.Substrate).to.be.equal(charlie.address);
143 });206 });
144207
145 itSub('If Public Access mode is set to AllowList, tokens can’t be transferred from a non-allowlisted address with transfer or transferFrom. Test2', async ({helper}) => {208 itSub('If Public Access mode is set to AllowList, tokens can be transferred from a allowlisted address with transferFrom', async ({helper}) => {
146 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});209 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
147 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});210 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
148 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});211 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
149 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});212 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
150 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});213 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
151 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});214 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});
152 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: alice.address});
153215
154 const transferResult = async () => helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});216 await helper.nft.transferTokenFrom(alice, collectionId, tokenId, {Substrate: alice.address}, {Substrate: charlie.address});
155 await expect(transferResult()).to.be.rejectedWith(/common\.AddressNotInAllowlist/);217 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);
218 expect(owner.Substrate).to.be.equal(charlie.address);
219 });
156 });220 });
157221
158 itSub('If Public Access mode is set to AllowList, tokens can’t be transferred to a non-allowlisted address with transfer or transferFrom. Test1', async ({helper}) => {222 describe('Negative', async () => {
223 itSub('If Public Access mode is set to AllowList, tokens can\'t be transferred from a non-allowlisted address with transfer or transferFrom. Test1', async ({helper}) => {
159 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});224 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
160 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});225 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
161 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});226 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
162 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});227 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
163228
164 const transferResult = async () => helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});229 await expect(helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address}))
165 await expect(transferResult()).to.be.rejectedWith(/common\.AddressNotInAllowlist/);230 .to.be.rejectedWith(/common\.AddressNotInAllowlist/);
166 });231 });
167232
168 itSub('If Public Access mode is set to AllowList, tokens can’t be transferred to a non-allowlisted address with transfer or transferFrom. Test2', async ({helper}) => {233 itSub('If Public Access mode is set to AllowList, tokens can\'t be transferred from a non-allowlisted address with transfer or transferFrom. Test2', async ({helper}) => {
169 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});234 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
170 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});235 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
171 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});236 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
172 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});237 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
173 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});238 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
239 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});
240 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: alice.address});
174241
175 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});242 await expect(helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address}))
176 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: alice.address});243 .to.be.rejectedWith(/common\.AddressNotInAllowlist/);
244 });
177245
178 const transferResult = async () => helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});246 itSub('If Public Access mode is set to AllowList, tokens can\'t be transferred to a non-allowlisted address with transfer or transferFrom. Test1', async ({helper}) => {
247 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
248 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
179 await expect(transferResult()).to.be.rejectedWith(/common\.AddressNotInAllowlist/);249 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
180 });250 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
181251
182 itSub('If Public Access mode is set to AllowList, tokens can’t be destroyed by a non-allowlisted address (even if itSub owned them before enabling AllowList mode)', async ({helper}) => {252 await expect(helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address}))
183 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
184 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
185 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
186 const burnTx = async () => helper.nft.burnToken(bob, collectionId, tokenId);253 .to.be.rejectedWith(/common\.AddressNotInAllowlist/);
187 await expect(burnTx()).to.be.rejectedWith(/common\.NoPermission/);
188 });254 });
189255
190 itSub('If Public Access mode is set to AllowList, token transfers can’t be Approved by a non-allowlisted address (see Approve method)', async ({helper}) => {256 itSub('If Public Access mode is set to AllowList, tokens can\'t be transferred to a non-allowlisted address with transfer or transferFrom. Test2', async ({helper}) => {
191 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});257 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
192 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});258 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
193 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});259 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
194 const approveTx = async () => helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address});260 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
195 await expect(approveTx()).to.be.rejectedWith(/common\.AddressNotInAllowlist/);261 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
196 });
197262
198 itSub('If Public Access mode is set to AllowList, tokens can be transferred to a allowlisted address with transfer.', async ({helper}) => {263 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});
199 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
200 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
201 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});264 await helper.collection.removeFromAllowList(alice, collectionId, {Substrate: alice.address});
202 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
203 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
204 await helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});
205 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);
206 expect(owner.Substrate).to.be.equal(charlie.address);
207 });
208265
209 itSub('If Public Access mode is set to AllowList, tokens can be transferred to a allowlisted address with transferFrom.', async ({helper}) => {266 await expect(helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address}))
210 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
211 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
212 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
213 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});267 .to.be.rejectedWith(/common\.AddressNotInAllowlist/);
214 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
215 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});268 });
216269
217 await helper.nft.transferTokenFrom(alice, collectionId, tokenId, {Substrate: alice.address}, {Substrate: charlie.address});270 itSub('If Public Access mode is set to AllowList, tokens can\'t be destroyed by a non-allowlisted address (even if it owned them before enabling AllowList mode)', async ({helper}) => {
271 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
272 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
273 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
274 await expect(helper.nft.burnToken(bob, collectionId, tokenId))
275 .to.be.rejectedWith(/common\.NoPermission/);
276 });
277
278 itSub('If Public Access mode is set to AllowList, token transfers can\'t be Approved by a non-allowlisted address (see Approve method)', async ({helper}) => {
279 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
218 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);280 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
219 expect(owner.Substrate).to.be.equal(charlie.address);281 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
282 await expect(helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}))
283 .to.be.rejectedWith(/common\.AddressNotInAllowlist/);
284 });
220 });285 });
286});
221287
222 itSub('If Public Access mode is set to AllowList, tokens can be transferred from a allowlisted address with transfer', async ({helper}) => {288describe('Integration Test ext. Mint if included in Allow List', () => {
223 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});289 let alice: IKeyringPair;
224 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});290 let bob: IKeyringPair;
225 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});
226 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
227 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});
228291
229 await helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});292 before(async () => {
293 await usingPlaygrounds(async (helper, privateKey) => {
294 const donor = privateKey('//Alice');
230 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);295 [alice, bob] = await helper.arrange.createAccounts([100n, 100n], donor);
231 expect(owner.Substrate).to.be.equal(charlie.address);296 });
232 });297 });
233298
234 itSub('If Public Access mode is set to AllowList, tokens can be transferred from a allowlisted address with transferFrom', async ({helper}) => {299 const permissionSet: ICollectionPermissions[] = [
235 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});300 {access: 'Normal', mintMode: false},
236 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});301 {access: 'Normal', mintMode: true},
237 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList'});302 {access: 'AllowList', mintMode: false},
238 await helper.nft.addToAllowList(alice, collectionId, {Substrate: alice.address});
239 await helper.nft.addToAllowList(alice, collectionId, {Substrate: charlie.address});303 {access: 'AllowList', mintMode: true},
240 await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: charlie.address});304 ];
241305
242 await helper.nft.transferTokenFrom(alice, collectionId, tokenId, {Substrate: alice.address}, {Substrate: charlie.address});306 const testPermissionSuite = async (permissions: ICollectionPermissions) => {
243 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);307 const allowlistedMintingShouldFail = !permissions.mintMode!;
244 expect(owner.Substrate).to.be.equal(charlie.address);
245 });
246308
247 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens can be created by owner', async ({helper}) => {309 const appropriateRejectionMessage = permissions.mintMode! ? /common\.AddressNotInAllowlist/ : /common\.PublicMintingNotAllowed/;
248 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
249 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: false});
250 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
251 const token = await helper.nft.getToken(collectionId, tokenId);
252 expect(token).to.be.not.null;
253 });
254310
255 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens can be created by admin', async ({helper}) => {311 const allowlistedMintingTest = () => itSub(
312 `With the condtions above, tokens can${allowlistedMintingShouldFail ? '\'t' : ''} be created by allow-listed addresses`,
313 async ({helper}) => {
256 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});314 const collection = await helper.nft.mintCollection(alice, {});
257 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: false});315 await collection.setPermissions(alice, permissions);
258 await helper.collection.addAdmin(alice, collectionId, {Substrate: bob.address});
259 const {tokenId} = await helper.nft.mintToken(bob, {collectionId: collectionId, owner: bob.address});316 await collection.addToAllowList(alice, {Substrate: bob.address});
260 const token = await helper.nft.getToken(collectionId, tokenId);
261 expect(token).to.be.not.null;
262 });
263317
264 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens cannot be created by non-privileged and allow-listed address', async ({helper}) => {318 if (allowlistedMintingShouldFail)
265 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});319 await expect(collection.mintToken(bob, {Substrate: bob.address})).to.be.rejectedWith(appropriateRejectionMessage);
266 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: false});
267 await helper.collection.addToAllowList(alice, collectionId, {Substrate: bob.address});320 else
268 const mintTokenTx = async () => helper.nft.mintToken(bob, {collectionId: collectionId, owner: bob.address});321 await expect(collection.mintToken(bob, {Substrate: bob.address})).to.not.be.rejected;
269 await expect(mintTokenTx()).to.be.rejectedWith(/common\.PublicMintingNotAllowed/);
270 });322 },
323 );
271324
272 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens cannot be created by non-privileged and non-allow listed address', async ({helper}) => {
273 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
274 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: false});
275 const mintTokenTx = async () => helper.nft.mintToken(bob, {collectionId: collectionId, owner: bob.address});
276 await expect(mintTokenTx()).to.be.rejectedWith(/common\.PublicMintingNotAllowed/);
277 });
278325
279 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by owner', async ({helper}) => {326 describe(`Public Access Mode = ${permissions.access}, Mint Mode = ${permissions.mintMode}`, async () => {
327 describe('Positive', async () => {
328 itSub('With the condtions above, tokens can be created by owner', async ({helper}) => {
280 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});329 const collection = await helper.nft.mintCollection(alice, {});
281 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: true});330 await collection.setPermissions(alice, permissions);
282 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});331 await expect(collection.mintToken(alice, {Substrate: alice.address})).to.not.be.rejected;
283 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);
284 expect(owner.Substrate).to.be.equal(alice.address);
285 });332 });
286333
287 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by admin', async ({helper}) => {334 itSub('With the condtions above, tokens can be created by admin', async ({helper}) => {
288 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});335 const collection = await helper.nft.mintCollection(alice, {});
289 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: true});336 await collection.setPermissions(alice, permissions);
290 await helper.nft.addAdmin(alice, collectionId, {Substrate: bob.address});337 await collection.addAdmin(alice, {Substrate: bob.address});
291 const {tokenId} = await helper.nft.mintToken(bob, {collectionId: collectionId, owner: bob.address});338 await expect(collection.mintToken(bob, {Substrate: bob.address})).to.not.be.rejected;
292 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);
293 expect(owner.Substrate).to.be.equal(bob.address);
294 });339 });
295340
296 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens cannot be created by non-privileged and non-allow listed address', async ({helper}) => {341 if (!allowlistedMintingShouldFail) allowlistedMintingTest();
297 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
298 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: true});342 });
299 const mintTokenTx = async () => helper.nft.mintToken(bob, {collectionId: collectionId, owner: bob.address});
300 await expect(mintTokenTx()).to.be.rejectedWith(/common\.AddressNotInAllowlist/);
301 });
302343
303 itSub('If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by non-privileged and allow listed address', async ({helper}) => {344 describe('Negative', async () => {
345 itSub('With the condtions above, tokens can\'t be created by non-priviliged non-allow-listed address', async ({helper}) => {
304 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});346 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
305 await helper.nft.setPermissions(alice, collectionId, {access: 'AllowList', mintMode: true});347 await collection.setPermissions(alice, permissions);
306 await helper.nft.addToAllowList(alice, collectionId, {Substrate: bob.address});348 await expect(collection.mintToken(bob, {Substrate: bob.address}))
307 const {tokenId} = await helper.nft.mintToken(bob, {collectionId: collectionId, owner: bob.address});349 .to.be.rejectedWith(appropriateRejectionMessage);
350 });
351
308 const owner = await helper.nft.getTokenOwner(collectionId, tokenId);352 if (allowlistedMintingShouldFail) allowlistedMintingTest();
309 expect(owner.Substrate).to.be.equal(bob.address);353 });
354 });
355 };
356
357 for (const permissions of permissionSet) {
358 testPermissionSuite(permissions);
310 });359 }
311});360});
312361
modifiedtests/src/app-promotion.test.tsdiffbeforeafterboth
20 getModuleNames,20 getModuleNames,
21 Pallets,21 Pallets,
22} from './util/helpers';22} from './util/helpers';
23
24import chai from 'chai';23import {itSub, usingPlaygrounds} from './util/playgrounds';
25import chaiAsPromised from 'chai-as-promised';
26import {usingPlaygrounds} from './util/playgrounds';
27
28import {encodeAddress} from '@polkadot/util-crypto';24import {encodeAddress} from '@polkadot/util-crypto';
29import {stringToU8a} from '@polkadot/util';25import {stringToU8a} from '@polkadot/util';
30import {SponsoringMode, contractHelpers, createEthAccountWithBalance, deployFlipper, itWeb3, transferBalanceToEth} from './eth/util/helpers';26import {SponsoringMode} from './eth/util/helpers';
31import {DevUniqueHelper} from './util/playgrounds/unique.dev';27import {DevUniqueHelper} from './util/playgrounds/unique.dev';
32chai.use(chaiAsPromised);
33const expect = chai.expect;28import {itEth, expect} from './eth/util/playgrounds';
3429
35let alice: IKeyringPair;30let alice: IKeyringPair;
36let palletAdmin: IKeyringPair;31let palletAdmin: IKeyringPair;
37let nominal: bigint;32let nominal: bigint;
38const palletAddress = calculatePalleteAddress('appstake');33const palletAddress = calculatePalleteAddress('appstake');
39let accounts: IKeyringPair[] = [];34let accounts: IKeyringPair[] = [];
40const LOCKING_PERIOD = 20n; // 20 blocks of relay35const LOCKING_PERIOD = 20n; // 20 blocks of relay
41const UNLOCKING_PERIOD = 10n; // 20 blocks of parachain36const UNLOCKING_PERIOD = 10n; // 10 blocks of parachain
42const rewardAvailableInBlock = (stakedInBlock: bigint) => (stakedInBlock - stakedInBlock % LOCKING_PERIOD) + (LOCKING_PERIOD * 2n);37const rewardAvailableInBlock = (stakedInBlock: bigint) => (stakedInBlock - stakedInBlock % LOCKING_PERIOD) + (LOCKING_PERIOD * 2n);
4338
44const beforeEach = async (context: Mocha.Context) => {
45 await usingPlaygrounds(async (helper, privateKey) => {
46 if (!getModuleNames(helper.api!).includes(Pallets.AppPromotion)) context.skip();
47 alice = privateKey('//Alice');
48 palletAdmin = privateKey('//Charlie'); // TODO use custom address
49 await helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})));
50 nominal = helper.balance.getOneTokenNominal();
51 await helper.balance.transferToSubstrate(alice, palletAdmin.address, 1000n * nominal);
52 await helper.balance.transferToSubstrate(alice, palletAddress, 1000n * nominal);
53 accounts = await helper.arrange.createCrowd(100, 1000n, alice); // create accounts-pool to speed up tests
54 });
55};
56
57describe('app-promotions.stake extrinsic', () => {39describe('App promotion', () => {
58 before(async function () {40 before(async function () {
59 await beforeEach(this);41 await usingPlaygrounds(async (helper, privateKey) => {
42 if (!getModuleNames(helper.api!).includes(Pallets.AppPromotion)) this.skip();
43 alice = privateKey('//Alice');
44 palletAdmin = privateKey('//Charlie'); // TODO use custom address
45 await helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})));
46 nominal = helper.balance.getOneTokenNominal();
47 await helper.balance.transferToSubstrate(alice, palletAdmin.address, 1000n * nominal);
48 await helper.balance.transferToSubstrate(alice, palletAddress, 1000n * nominal);
49 accounts = await helper.arrange.createCrowd(100, 1000n, alice); // create accounts-pool to speed up tests
50 });
60 });51 });
6152
62 it('should "lock" staking balance, add it to "staked" map, and increase "totalStaked" amount', async () => {53 describe('stake extrinsic', () => {
63 await usingPlaygrounds(async (helper) => {54 itSub('should "lock" staking balance, add it to "staked" map, and increase "totalStaked" amount', async ({helper}) => {
64 const [staker, recepient] = [accounts.pop()!, accounts.pop()!];55 const [staker, recepient] = [accounts.pop()!, accounts.pop()!];
65 const totalStakedBefore = await helper.staking.getTotalStaked();56 const totalStakedBefore = await helper.staking.getTotalStaked();
6657
67 // Minimum stake amount is 100:58 // Minimum stake amount is 100:
68 await expect(helper.staking.stake(staker, 100n * nominal - 1n)).to.be.eventually.rejected;59 await expect(helper.staking.stake(staker, 100n * nominal - 1n)).to.be.rejected;
69 await helper.staking.stake(staker, 100n * nominal);60 await helper.staking.stake(staker, 100n * nominal);
7061
71 // Staker balance is: miscFrozen: 100, feeFrozen: 100, reserved: 0n...62 // Staker balance is: miscFrozen: 100, feeFrozen: 100, reserved: 0n...
72 // ...so he can not transfer 90063 // ...so he can not transfer 900
73 expect (await helper.balance.getSubstrateFull(staker.address)).to.contain({miscFrozen: 100n * nominal, feeFrozen: 100n * nominal, reserved: 0n});64 expect (await helper.balance.getSubstrateFull(staker.address)).to.contain({miscFrozen: 100n * nominal, feeFrozen: 100n * nominal, reserved: 0n});
74 await expect(helper.balance.transferToSubstrate(staker, recepient.address, 900n * nominal)).to.be.rejected;65 await expect(helper.balance.transferToSubstrate(staker, recepient.address, 900n * nominal)).to.be.rejectedWith('balances.LiquidityRestrictions');
75 66
76 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(100n * nominal);67 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(100n * nominal);
77 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);68 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);
78 // it is potentially flaky test. Promotion can credited some tokens. Maybe we need to use closeTo? 69 // it is potentially flaky test. Promotion can credited some tokens. Maybe we need to use closeTo?
79 expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedBefore + 100n * nominal); // total tokens amount staked in app-promotion increased 70 expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedBefore + 100n * nominal); // total tokens amount staked in app-promotion increased
8071
81 72
82 await helper.staking.stake(staker, 200n * nominal);73 await helper.staking.stake(staker, 200n * nominal);
83 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(300n * nominal);74 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(300n * nominal);
84 expect((await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map((x) => x[1])).to.be.deep.equal([100n * nominal, 200n * nominal]);75 const totalStakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
76 expect(totalStakedPerBlock[0].amount).to.equal(100n * nominal);
77 expect(totalStakedPerBlock[1].amount).to.equal(200n * nominal);
85 });78 });
86 });79
87
88 it('should allow to create maximum 10 stakes for account', async () => {80 itSub('should allow to create maximum 10 stakes for account', async ({helper}) => {
89 await usingPlaygrounds(async (helper) => {
90 const [staker] = await helper.arrange.createAccounts([2000n], alice);81 const [staker] = await helper.arrange.createAccounts([2000n], alice);
91 for (let i = 0; i < 10; i++) {82 for (let i = 0; i < 10; i++) {
92 await helper.staking.stake(staker, 100n * nominal);83 await helper.staking.stake(staker, 100n * nominal);
93 }84 }
9485
95 // can have 10 stakes86 // can have 10 stakes
96 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(1000n * nominal);87 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(1000n * nominal);
97 expect(await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).to.have.length(10);88 expect(await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).to.have.length(10);
9889
99 await expect(helper.staking.stake(staker, 100n * nominal)).to.be.rejected;90 await expect(helper.staking.stake(staker, 100n * nominal)).to.be.rejectedWith('appPromotion.NoPermission');
10091
101 // After unstake can stake again92 // After unstake can stake again
102 await helper.staking.unstake(staker);93 await helper.staking.unstake(staker);
103 await helper.staking.stake(staker, 100n * nominal);94 await helper.staking.stake(staker, 100n * nominal);
104 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.equal(100n * nominal);95 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.equal(100n * nominal);
105 });96 });
106 });97
107
108 it('should reject transaction if stake amount is more than total free balance minus frozen', async () => {98 itSub('should reject transaction if stake amount is more than total free balance minus frozen', async ({helper}) => {
109 await usingPlaygrounds(async helper => {
110 const staker = accounts.pop()!;99 const staker = accounts.pop()!;
111100
112 // Can't stake full balance because Alice needs to pay some fee101 // Can't stake full balance because Alice needs to pay some fee
113 await expect(helper.staking.stake(staker, 1000n * nominal)).to.be.eventually.rejected;102 await expect(helper.staking.stake(staker, 1000n * nominal)).to.be.rejected;
114 await helper.staking.stake(staker, 500n * nominal);103 await helper.staking.stake(staker, 500n * nominal);
115104
116 // Can't stake 500 tkn because Alice has Less than 500 transferable;105 // Can't stake 500 tkn because Alice has Less than 500 transferable;
117 await expect(helper.staking.stake(staker, 500n * nominal)).to.be.eventually.rejected; 106 await expect(helper.staking.stake(staker, 500n * nominal)).to.be.rejectedWith('balances.LiquidityRestrictions');
118 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(500n * nominal);107 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(500n * nominal);
119 });108 });
120 });109
121
122 it('for different accounts in one block is possible', async () => {110 itSub('for different accounts in one block is possible', async ({helper}) => {
123 await usingPlaygrounds(async helper => {
124 const crowd = [accounts.pop()!, accounts.pop()!, accounts.pop()!, accounts.pop()!];111 const crowd = [accounts.pop()!, accounts.pop()!, accounts.pop()!, accounts.pop()!];
125 112
126 const crowdStartsToStake = crowd.map(user => helper.staking.stake(user, 100n * nominal));113 const crowdStartsToStake = crowd.map(user => helper.staking.stake(user, 100n * nominal));
127 await expect(Promise.all(crowdStartsToStake)).to.be.eventually.fulfilled;114 await expect(Promise.all(crowdStartsToStake)).to.be.fulfilled;
128115
129 const crowdStakes = await Promise.all(crowd.map(address => helper.staking.getTotalStaked({Substrate: address.address})));116 const crowdStakes = await Promise.all(crowd.map(address => helper.staking.getTotalStaked({Substrate: address.address})));
130 expect(crowdStakes).to.deep.equal([100n * nominal, 100n * nominal, 100n * nominal, 100n * nominal]);117 expect(crowdStakes).to.deep.equal([100n * nominal, 100n * nominal, 100n * nominal, 100n * nominal]);
131 });118 });
132 });119 });
133});120
134
135describe('unstake balance extrinsic', () => { 121 describe('unstake extrinsic', () => {
136 before(async function () {122 itSub('should change balance state from "frozen" to "reserved", add it to "pendingUnstake" map, and subtract it from totalStaked', async ({helper}) => {
137 await beforeEach(this);
138 });
139
140 it('should change balance state from "frozen" to "reserved", add it to "pendingUnstake" map, and subtract it from totalStaked', async () => {
141 await usingPlaygrounds(async helper => {
142 const [staker, recepient] = [accounts.pop()!, accounts.pop()!];123 const [staker, recepient] = [accounts.pop()!, accounts.pop()!];
143 const totalStakedBefore = await helper.staking.getTotalStaked();124 const totalStakedBefore = await helper.staking.getTotalStaked();
144 await helper.staking.stake(staker, 900n * nominal);125 await helper.staking.stake(staker, 900n * nominal);
145 await helper.staking.unstake(staker);126 await helper.staking.unstake(staker);
146127
147 // Right after unstake balance is reserved128 // Right after unstake balance is reserved
148 // Staker can not transfer 129 // Staker can not transfer
149 expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 900n * nominal, miscFrozen: 0n, feeFrozen: 0n});130 expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 900n * nominal, miscFrozen: 0n, feeFrozen: 0n});
150 await expect(helper.balance.transferToSubstrate(staker, recepient.address, 100n * nominal)).to.be.rejected;131 await expect(helper.balance.transferToSubstrate(staker, recepient.address, 100n * nominal)).to.be.rejectedWith('balances.InsufficientBalance');
151 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(900n * nominal);132 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(900n * nominal);
152 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);133 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);
153 expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedBefore);134 expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedBefore);
154 });135 });
155 });136
156
157 it('should unlock balance after unlocking period ends and remove it from "pendingUnstake"', async () => {137 itSub('should unlock balance after unlocking period ends and remove it from "pendingUnstake"', async ({helper}) => {
158 await usingPlaygrounds(async (helper) => {
159 const staker = accounts.pop()!;138 const staker = accounts.pop()!;
160 await helper.staking.stake(staker, 100n * nominal);139 await helper.staking.stake(staker, 100n * nominal);
161 await helper.staking.unstake(staker);140 await helper.staking.unstake(staker);
162 const unstakedInBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address}))[0][0];141 const [pendingUnstake] = await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address});
163142
164 // Wait for unstaking period. Balance now free ~1000; reserved, frozen, miscFrozeb: 0n143 // Wait for unstaking period. Balance now free ~1000; reserved, frozen, miscFrozeb: 0n
165 await helper.wait.forParachainBlockNumber(unstakedInBlock);144 await helper.wait.forParachainBlockNumber(pendingUnstake.block);
166 expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, miscFrozen: 0n, feeFrozen: 0n});145 expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, miscFrozen: 0n, feeFrozen: 0n});
167 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);146 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);
168147
169 // staker can transfer:148 // staker can transfer:
170 await helper.balance.transferToSubstrate(staker, alice.address, 998n * nominal);149 await helper.balance.transferToSubstrate(staker, alice.address, 998n * nominal);
171 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(1n);150 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(1n);
172 });151 });
173 });152
174
175 it('should successfully unstake multiple stakes', async () => {153 itSub('should successfully unstake multiple stakes', async ({helper}) => {
176 await usingPlaygrounds(async helper => {
177 const staker = accounts.pop()!;154 const staker = accounts.pop()!;
178 await helper.staking.stake(staker, 100n * nominal);155 await helper.staking.stake(staker, 100n * nominal);
179 await helper.staking.stake(staker, 200n * nominal);156 await helper.staking.stake(staker, 200n * nominal);
180 await helper.staking.stake(staker, 300n * nominal);157 await helper.staking.stake(staker, 300n * nominal);
181158
182 // staked: [100, 200, 300]; unstaked: 0159 // staked: [100, 200, 300]; unstaked: 0
183 let pendingUnstake = await helper.staking.getPendingUnstake({Substrate: staker.address});160 let totalPendingUnstake = await helper.staking.getPendingUnstake({Substrate: staker.address});
184 let unstakedPerBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address})).map(stake => stake[1]);161 let pendingUnstake = await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address});
185 let stakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(stake => stake[1]);162 let stakes = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
186 expect(pendingUnstake).to.be.deep.equal(0n);163 expect(totalPendingUnstake).to.be.deep.equal(0n);
187 expect(unstakedPerBlock).to.be.deep.equal([]);164 expect(pendingUnstake).to.be.deep.equal([]);
188 expect(stakedPerBlock).to.be.deep.equal([100n * nominal, 200n * nominal, 300n * nominal]);165 expect(stakes[0].amount).to.equal(100n * nominal);
166 expect(stakes[1].amount).to.equal(200n * nominal);
167 expect(stakes[2].amount).to.equal(300n * nominal);
189 168
190 // Can unstake multiple stakes169 // Can unstake multiple stakes
191 await helper.staking.unstake(staker);170 await helper.staking.unstake(staker);
192 const unstakingBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address}))[0][0];171 pendingUnstake = await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address});
193 pendingUnstake = await helper.staking.getPendingUnstake({Substrate: staker.address});172 totalPendingUnstake = await helper.staking.getPendingUnstake({Substrate: staker.address});
194 unstakedPerBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address})).map(stake => stake[1]);173 stakes = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
195 stakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(stake => stake[1]);
196 expect(pendingUnstake).to.be.equal(600n * nominal);174 expect(totalPendingUnstake).to.be.equal(600n * nominal);
197 expect(stakedPerBlock).to.be.deep.equal([]);175 expect(stakes).to.be.deep.equal([]);
198 expect(unstakedPerBlock).to.be.deep.equal([600n * nominal]);176 expect(pendingUnstake[0].amount).to.equal(600n * nominal);
199177
200 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 600n * nominal, feeFrozen: 0n, miscFrozen: 0n});178 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 600n * nominal, feeFrozen: 0n, miscFrozen: 0n});
201 await helper.wait.forParachainBlockNumber(unstakingBlock);179 await helper.wait.forParachainBlockNumber(pendingUnstake[0].block);
202 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, feeFrozen: 0n, miscFrozen: 0n});180 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, feeFrozen: 0n, miscFrozen: 0n});
203 expect (await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);181 expect (await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);
204 });182 });
205 });183
206
207 it('should not have any effects if no active stakes', async () => {184 itSub('should not have any effects if no active stakes', async ({helper}) => {
208 await usingPlaygrounds(async (helper) => {
209 const staker = accounts.pop()!;185 const staker = accounts.pop()!;
210 186
211 // unstake has no effect if no stakes at all187 // unstake has no effect if no stakes at all
212 await helper.staking.unstake(staker);188 await helper.staking.unstake(staker);
213 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(0n);189 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(0n);
214 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n); // TODO bigint closeTo helper190 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n); // TODO bigint closeTo helper
215191
216 // TODO stake() unstake() waitUnstaked() unstake();192 // TODO stake() unstake() waitUnstaked() unstake();
217193
218 // can't unstake if there are only pendingUnstakes194 // can't unstake if there are only pendingUnstakes
219 await helper.staking.stake(staker, 100n * nominal);195 await helper.staking.stake(staker, 100n * nominal);
220 await helper.staking.unstake(staker);196 await helper.staking.unstake(staker);
221 await helper.staking.unstake(staker);197 await helper.staking.unstake(staker);
222198
223 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(100n * nominal);199 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(100n * nominal);
224 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);200 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);
225 });201 });
226 });202
227
228 it('should keep different unlocking block for each unlocking stake', async () => {203 itSub('should keep different unlocking block for each unlocking stake', async ({helper}) => {
229 await usingPlaygrounds(async (helper) => {
230 const staker = accounts.pop()!;204 const staker = accounts.pop()!;
231 await helper.staking.stake(staker, 100n * nominal);205 await helper.staking.stake(staker, 100n * nominal);
232 await helper.staking.unstake(staker);206 await helper.staking.unstake(staker);
233 await helper.staking.stake(staker, 120n * nominal);207 await helper.staking.stake(staker, 120n * nominal);
234 await helper.staking.unstake(staker);208 await helper.staking.unstake(staker);
235209
236 const unstakingPerBlock = await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address});210 const unstakingPerBlock = await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address});
237 expect(unstakingPerBlock).has.length(2);211 expect(unstakingPerBlock).has.length(2);
238 expect(unstakingPerBlock[0][1]).to.equal(100n * nominal);212 expect(unstakingPerBlock[0].amount).to.equal(100n * nominal);
239 expect(unstakingPerBlock[1][1]).to.equal(120n * nominal);213 expect(unstakingPerBlock[1].amount).to.equal(120n * nominal);
240 });214 });
241 });215
242
243 it('should be possible for different accounts in one block', async () => {216 itSub('should be possible for different accounts in one block', async ({helper}) => {
244 await usingPlaygrounds(async (helper) => {
245 const stakers = [accounts.pop()!, accounts.pop()!, accounts.pop()!];217 const stakers = [accounts.pop()!, accounts.pop()!, accounts.pop()!];
246218
247 await Promise.all(stakers.map(staker => helper.staking.stake(staker, 100n * nominal)));219 await Promise.all(stakers.map(staker => helper.staking.stake(staker, 100n * nominal)));
248 await Promise.all(stakers.map(staker => helper.staking.unstake(staker)));220 await Promise.all(stakers.map(staker => helper.staking.unstake(staker)));
249221
250 await Promise.all(stakers.map(async (staker) => {222 await Promise.all(stakers.map(async (staker) => {
251 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(100n * nominal);223 expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(100n * nominal);
252 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);224 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);
253 }));225 }));
254 });226 });
255 });227 });
256});228
257
258describe('Admin adress', () => {229 describe('admin adress', () => {
259 before(async function () {230 itSub('can be set by sudo only', async ({helper}) => {
260 await beforeEach(this);
261 });
262
263 it('can be set by sudo only', async () => {
264 await usingPlaygrounds(async (helper) => {
265 const nonAdmin = accounts.pop()!;231 const nonAdmin = accounts.pop()!;
266 // nonAdmin can not set admin not from himself nor as a sudo232 // nonAdmin can not set admin not from himself nor as a sudo
267 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address}))).to.be.eventually.rejected;233 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address}))).to.be.rejected;
268 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address})))).to.be.eventually.rejected;234 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address})))).to.be.rejected;
269235
270 // Alice can236 // Alice can
271 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})))).to.be.eventually.fulfilled;237 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})))).to.be.fulfilled;
272 });238 });
273 });239
274
275 it('can be any valid CrossAccountId', async () => {240 itSub('can be any valid CrossAccountId', async ({helper}) => {
276 // We are not going to set an eth address as a sponsor,241 // We are not going to set an eth address as a sponsor,
277 // but we do want to check, it doesn't break anything;242 // but we do want to check, it doesn't break anything;
278 await usingPlaygrounds(async (helper) => {
279 const account = accounts.pop()!;243 const account = accounts.pop()!;
280 const ethAccount = helper.address.substrateToEth(account.address); 244 const ethAccount = helper.address.substrateToEth(account.address);
281 // Alice sets Ethereum address as a sudo. Then Substrate address back...245 // Alice sets Ethereum address as a sudo. Then Substrate address back...
282 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Ethereum: ethAccount})))).to.be.eventually.fulfilled;246 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Ethereum: ethAccount})))).to.be.fulfilled;
283 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})))).to.be.eventually.fulfilled;247 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})))).to.be.fulfilled;
284 248
285 // ...It doesn't break anything;249 // ...It doesn't break anything;
286 const collection = await helper.nft.mintCollection(account, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});250 const collection = await helper.nft.mintCollection(account, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
287 await expect(helper.signTransaction(account, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;251 await expect(helper.signTransaction(account, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.rejected;
288 });252 });
289 });253
290
291 it('can be reassigned', async () => {254 itSub('can be reassigned', async ({helper}) => {
292 await usingPlaygrounds(async (helper) => {
293 const [oldAdmin, newAdmin, collectionOwner] = [accounts.pop()!, accounts.pop()!, accounts.pop()!];255 const [oldAdmin, newAdmin, collectionOwner] = [accounts.pop()!, accounts.pop()!, accounts.pop()!];
294 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});256 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
295 257
296 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress(normalizeAccountId(oldAdmin))))).to.be.eventually.fulfilled;258 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress(normalizeAccountId(oldAdmin))))).to.be.fulfilled;
297 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress(normalizeAccountId(newAdmin))))).to.be.eventually.fulfilled;259 await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress(normalizeAccountId(newAdmin))))).to.be.fulfilled;
298 await expect(helper.signTransaction(oldAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;260 await expect(helper.signTransaction(oldAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.rejected;
299 261
300 await expect(helper.signTransaction(newAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.fulfilled;262 await expect(helper.signTransaction(newAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.fulfilled;
301 });263 });
302 });264 });
303});265
304
305describe('App-promotion collection sponsoring', () => {266 describe('collection sponsoring', () => {
306 before(async function () {267 before(async function () {
307 await beforeEach(this);268 await usingPlaygrounds(async (helper) => {
308 await usingPlaygrounds(async (helper) => {
309 const tx = helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address}));269 const tx = helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address}));
310 await helper.signTransaction(alice, tx);270 await helper.signTransaction(alice, tx);
271 });
311 });272 });
312 });273
313
314 it('should actually sponsor transactions', async () => {274 itSub('should actually sponsor transactions', async ({helper}) => {
315 await usingPlaygrounds(async (helper) => {
316 const [collectionOwner, tokenSender, receiver] = [accounts.pop()!, accounts.pop()!, accounts.pop()!];275 const [collectionOwner, tokenSender, receiver] = [accounts.pop()!, accounts.pop()!, accounts.pop()!];
317 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'Name', description: 'Description', tokenPrefix: 'Prefix', limits: {sponsorTransferTimeout: 0}});276 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'Name', description: 'Description', tokenPrefix: 'Prefix', limits: {sponsorTransferTimeout: 0}});
318 const token = await collection.mintToken(collectionOwner, {Substrate: tokenSender.address});277 const token = await collection.mintToken(collectionOwner, {Substrate: tokenSender.address});
319 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId));278 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId));
320 const palletBalanceBefore = await helper.balance.getSubstrate(palletAddress);279 const palletBalanceBefore = await helper.balance.getSubstrate(palletAddress);
321280
322 await token.transfer(tokenSender, {Substrate: receiver.address});281 await token.transfer(tokenSender, {Substrate: receiver.address});
323 expect (await token.getOwner()).to.be.deep.equal({Substrate: receiver.address});282 expect (await token.getOwner()).to.be.deep.equal({Substrate: receiver.address});
324 const palletBalanceAfter = await helper.balance.getSubstrate(palletAddress);283 const palletBalanceAfter = await helper.balance.getSubstrate(palletAddress);
325284
326 // senders balance the same, transaction has sponsored285 // senders balance the same, transaction has sponsored
327 expect (await helper.balance.getSubstrate(tokenSender.address)).to.be.equal(1000n * nominal);286 expect (await helper.balance.getSubstrate(tokenSender.address)).to.be.equal(1000n * nominal);
328 expect (palletBalanceBefore > palletBalanceAfter).to.be.true;287 expect (palletBalanceBefore > palletBalanceAfter).to.be.true;
329 });288 });
330 });289
331
332 it('can not be set by non admin', async () => {290 itSub('can not be set by non admin', async ({helper}) => {
333 await usingPlaygrounds(async (helper) => {
334 const [collectionOwner, nonAdmin] = [accounts.pop()!, accounts.pop()!];291 const [collectionOwner, nonAdmin] = [accounts.pop()!, accounts.pop()!];
335292
336 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});293 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
337 294
338 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;295 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.rejected;
339 expect((await collection.getData())?.raw.sponsorship).to.equal('Disabled');296 expect((await collection.getData())?.raw.sponsorship).to.equal('Disabled');
340 });297 });
341 });298
342
343 it('should set pallet address as confirmed admin', async () => {299 itSub('should set pallet address as confirmed admin', async ({helper}) => {
344 await usingPlaygrounds(async (helper) => {
345 const [collectionOwner, oldSponsor] = [accounts.pop()!, accounts.pop()!];300 const [collectionOwner, oldSponsor] = [accounts.pop()!, accounts.pop()!];
346 301
347 // Can set sponsoring for collection without sponsor302 // Can set sponsoring for collection without sponsor
348 const collectionWithoutSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'No-sponsor', description: 'New Collection', tokenPrefix: 'Promotion'});303 const collectionWithoutSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'No-sponsor', description: 'New Collection', tokenPrefix: 'Promotion'});
349 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithoutSponsor.collectionId))).to.be.eventually.fulfilled;304 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithoutSponsor.collectionId))).to.be.fulfilled;
350 expect((await collectionWithoutSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});305 expect((await collectionWithoutSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
351306
352 // Can set sponsoring for collection with unconfirmed sponsor307 // Can set sponsoring for collection with unconfirmed sponsor
353 const collectionWithUnconfirmedSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'Unconfirmed', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: oldSponsor.address});308 const collectionWithUnconfirmedSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'Unconfirmed', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: oldSponsor.address});
354 expect((await collectionWithUnconfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Unconfirmed: oldSponsor.address});309 expect((await collectionWithUnconfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Unconfirmed: oldSponsor.address});
355 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithUnconfirmedSponsor.collectionId))).to.be.eventually.fulfilled;310 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithUnconfirmedSponsor.collectionId))).to.be.fulfilled;
356 expect((await collectionWithUnconfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});311 expect((await collectionWithUnconfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
357312
358 // Can set sponsoring for collection with confirmed sponsor313 // Can set sponsoring for collection with confirmed sponsor
359 const collectionWithConfirmedSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'Confirmed', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: oldSponsor.address});314 const collectionWithConfirmedSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'Confirmed', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: oldSponsor.address});
360 await collectionWithConfirmedSponsor.confirmSponsorship(oldSponsor);315 await collectionWithConfirmedSponsor.confirmSponsorship(oldSponsor);
361 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithConfirmedSponsor.collectionId))).to.be.eventually.fulfilled;316 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithConfirmedSponsor.collectionId))).to.be.fulfilled;
362 expect((await collectionWithConfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});317 expect((await collectionWithConfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
363 });318 });
364 });319
365
366 it('can be overwritten by collection owner', async () => { 320 itSub('can be overwritten by collection owner', async ({helper}) => {
367 await usingPlaygrounds(async (helper) => {
368 const [collectionOwner, newSponsor] = [accounts.pop()!, accounts.pop()!];321 const [collectionOwner, newSponsor] = [accounts.pop()!, accounts.pop()!];
369 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});322 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
370 const collectionId = collection.collectionId;323 const collectionId = collection.collectionId;
371 324
372 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionId))).to.be.eventually.fulfilled;325 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionId))).to.be.fulfilled;
373 326
374 // Collection limits still can be changed by the owner327 // Collection limits still can be changed by the owner
375 expect(await collection.setLimits(collectionOwner, {sponsorTransferTimeout: 0})).to.be.true;328 expect(await collection.setLimits(collectionOwner, {sponsorTransferTimeout: 0})).to.be.true;
376 expect((await collection.getData())?.raw.limits.sponsorTransferTimeout).to.be.equal(0);329 expect((await collection.getData())?.raw.limits.sponsorTransferTimeout).to.be.equal(0);
377 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});330 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
378331
379 // Collection sponsor can be changed too332 // Collection sponsor can be changed too
380 expect((await collection.setSponsor(collectionOwner, newSponsor.address))).to.be.true;333 expect((await collection.setSponsor(collectionOwner, newSponsor.address))).to.be.true;
381 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Unconfirmed: newSponsor.address});334 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Unconfirmed: newSponsor.address});
382 });335 });
383 });336
384
385 it('should not overwrite collection limits set by the owner earlier', async () => {337 itSub('should not overwrite collection limits set by the owner earlier', async ({helper}) => {
386 await usingPlaygrounds(async (helper) => {
387 const limits = {ownerCanDestroy: true, ownerCanTransfer: true, sponsorTransferTimeout: 0};338 const limits = {ownerCanDestroy: true, ownerCanTransfer: true, sponsorTransferTimeout: 0};
388 const collectionWithLimits = await helper.nft.mintCollection(alice, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', limits});339 const collectionWithLimits = await helper.nft.mintCollection(alice, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', limits});
389340
390 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithLimits.collectionId))).to.be.eventually.fulfilled;341 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithLimits.collectionId))).to.be.fulfilled;
391 expect((await collectionWithLimits.getData())?.raw.limits).to.be.deep.contain(limits);342 expect((await collectionWithLimits.getData())?.raw.limits).to.be.deep.contain(limits);
392 });343 });
393 });344
394
395 it('should reject transaction if collection doesn\'t exist', async () => {345 itSub('should reject transaction if collection doesn\'t exist', async ({helper}) => {
396 await usingPlaygrounds(async (helper) => {
397 const collectionOwner = accounts.pop()!;346 const collectionOwner = accounts.pop()!;
398 347
399 // collection has never existed348 // collection has never existed
400 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(999999999))).to.be.eventually.rejected;349 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(999999999))).to.be.rejected;
401 // collection has been burned350 // collection has been burned
402 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});351 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
403 await collection.burn(collectionOwner);352 await collection.burn(collectionOwner);
404353
405 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;354 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.rejected;
406 });355 });
407 });356 });
408});357
409
410describe('app-promotion stopSponsoringCollection', () => {358 describe('stopSponsoringCollection', () => {
411 before(async function () {359 itSub('can not be called by non-admin', async ({helper}) => {
412 await beforeEach(this);
413 });
414
415 it('can not be called by non-admin', async () => {
416 await usingPlaygrounds(async (helper) => {
417 const [collectionOwner, nonAdmin] = [accounts.pop()!, accounts.pop()!];360 const [collectionOwner, nonAdmin] = [accounts.pop()!, accounts.pop()!];
418 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});361 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
419 362
420 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.fulfilled;363 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.fulfilled;
421 364
422 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.eventually.rejected;365 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.rejected;
423 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});366 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
424 });367 });
425 });368
426
427 it('should set sponsoring as disabled', async () => {369 itSub('should set sponsoring as disabled', async ({helper}) => {
428 await usingPlaygrounds(async (helper) => {
429 const [collectionOwner, recepient] = [accounts.pop()!, accounts.pop()!];370 const [collectionOwner, recepient] = [accounts.pop()!, accounts.pop()!];
430 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', limits: {sponsorTransferTimeout: 0}});371 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', limits: {sponsorTransferTimeout: 0}});
431 const token = await collection.mintToken(collectionOwner, {Substrate: collectionOwner.address});372 const token = await collection.mintToken(collectionOwner, {Substrate: collectionOwner.address});
432 373
433 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId));374 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId));
434 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId));375 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId));
435 376
436 expect((await collection.getData())?.raw.sponsorship).to.be.equal('Disabled');377 expect((await collection.getData())?.raw.sponsorship).to.be.equal('Disabled');
437378
438 // Transactions are not sponsored anymore:379 // Transactions are not sponsored anymore:
439 const ownerBalanceBefore = await helper.balance.getSubstrate(collectionOwner.address);380 const ownerBalanceBefore = await helper.balance.getSubstrate(collectionOwner.address);
440 await token.transfer(collectionOwner, {Substrate: recepient.address});381 await token.transfer(collectionOwner, {Substrate: recepient.address});
441 const ownerBalanceAfter = await helper.balance.getSubstrate(collectionOwner.address);382 const ownerBalanceAfter = await helper.balance.getSubstrate(collectionOwner.address);
442 expect(ownerBalanceAfter < ownerBalanceBefore).to.be.equal(true);383 expect(ownerBalanceAfter < ownerBalanceBefore).to.be.equal(true);
443 });384 });
444 });385
445
446 it('should not affect collection which is not sponsored by pallete', async () => {386 itSub('should not affect collection which is not sponsored by pallete', async ({helper}) => {
447 await usingPlaygrounds(async (helper) => {
448 const collectionOwner = accounts.pop()!;387 const collectionOwner = accounts.pop()!;
449 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: collectionOwner.address});388 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: collectionOwner.address});
450 await collection.confirmSponsorship(collectionOwner);389 await collection.confirmSponsorship(collectionOwner);
451 390
452 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.eventually.rejected;391 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.rejected;
453 392
454 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: collectionOwner.address});393 expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: collectionOwner.address});
455 });394 });
456 });395
457
458 it('should reject transaction if collection does not exist', async () => { 396 itSub('should reject transaction if collection does not exist', async ({helper}) => {
459 await usingPlaygrounds(async (helper) => {
460 const collectionOwner = accounts.pop()!;397 const collectionOwner = accounts.pop()!;
461 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});398 const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
462 399
463 await collection.burn(collectionOwner);400 await collection.burn(collectionOwner);
464 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.eventually.rejected;401 await expect(helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.stopSponsoringCollection', [collection.collectionId], true)).to.be.rejectedWith('common.CollectionNotFound');
465 await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(999999999))).to.be.eventually.rejected;402 await expect(helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.stopSponsoringCollection', [999_999_999], true)).to.be.rejectedWith('common.CollectionNotFound');
466 });403 });
467 });404 });
468});405
469
470describe('app-promotion contract sponsoring', () => {406 describe('contract sponsoring', () => {
471 before(async function () {407 itEth('should set palletes address as a sponsor', async ({helper}) => {
472 await beforeEach(this);
473 });
474
475 itWeb3('should set palletes address as a sponsor', async ({api, web3, privateKeyWrapper}) => {
476 await usingPlaygrounds(async (helper) => {408 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
477 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
478 const flipper = await deployFlipper(web3, contractOwner);409 const flipper = await helper.eth.deployFlipper(contractOwner); // await deployFlipper(web3, contractOwner);
479 const contractMethods = contractHelpers(web3, contractOwner);410 const contractHelper = helper.ethNativeContract.contractHelpers(contractOwner);
480411
481 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));412 await helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.sponsorContract', [flipper.options.address]);
482 413
483 expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true; 414 expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.true;
484 expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner); 415 expect((await helper.api!.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner);
485 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({416 expect((await helper.api!.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
486 confirmed: {417 confirmed: {
487 substrate: palletAddress,418 substrate: palletAddress,
488 },419 },
489 });420 });
490 });421 });
491 });422
492
493 itWeb3('should overwrite sponsoring mode and existed sponsor', async ({api, web3, privateKeyWrapper}) => {423 itEth('should overwrite sponsoring mode and existed sponsor', async ({helper}) => {
494 await usingPlaygrounds(async (helper) => {424 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
495 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
496 const flipper = await deployFlipper(web3, contractOwner);425 const flipper = await helper.eth.deployFlipper(contractOwner); // await deployFlipper(web3, contractOwner);
497 const contractMethods = contractHelpers(web3, contractOwner);426 const contractHelper = helper.ethNativeContract.contractHelpers(contractOwner);
498427
499 await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;428 await expect(contractHelper.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.fulfilled;
500429
501 // Contract is self sponsored430 // Contract is self sponsored
502 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.be.deep.equal({431 expect((await helper.api!.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.be.deep.equal({
503 confirmed: {432 confirmed: {
504 ethereum: flipper.options.address.toLowerCase(),433 ethereum: flipper.options.address.toLowerCase(),
505 },434 },
506 });435 });
507436
508 // set promotion sponsoring437 // set promotion sponsoring
509 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));438 await helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.sponsorContract', [flipper.options.address], true);
510439
511 // new sponsor is pallet address440 // new sponsor is pallet address
512 expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true; 441 expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.true;
513 expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner); 442 expect((await helper.callRpc('api.query.evmContractHelpers.owner', [flipper.options.address])).toJSON()).to.be.equal(contractOwner);
514 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({443 expect((await helper.callRpc('api.query.evmContractHelpers.sponsoring', [flipper.options.address])).toJSON()).to.deep.equal({
515 confirmed: {444 confirmed: {
516 substrate: palletAddress,445 substrate: palletAddress,
517 },446 },
518 });447 });
519 });448 });
520 });449
521
522 itWeb3('can be overwritten by contract owner', async ({api, web3, privateKeyWrapper}) => {450 itEth('can be overwritten by contract owner', async ({helper}) => {
523 await usingPlaygrounds(async (helper) => { 451 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
524 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
525 const flipper = await deployFlipper(web3, contractOwner);452 const flipper = await helper.eth.deployFlipper(contractOwner); // await deployFlipper(web3, contractOwner);
526 const contractMethods = contractHelpers(web3, contractOwner);453 const contractHelper = helper.ethNativeContract.contractHelpers(contractOwner);
527454
528 // contract sponsored by pallet455 // contract sponsored by pallet
529 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));456 await helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.sponsorContract', [flipper.options.address], true);
530457
531 // owner sets self sponsoring458 // owner sets self sponsoring
532 await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;459 await expect(contractHelper.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;
533460
534 expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true; 461 expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.true;
535 expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner); 462 expect((await helper.api!.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner);
536 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({463 expect((await helper.api!.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
537 confirmed: {464 confirmed: {
538 ethereum: flipper.options.address.toLowerCase(),465 ethereum: flipper.options.address.toLowerCase(),
539 },466 },
540 });467 });
541 });468 });
542 });469
543
544 itWeb3('can not be set by non admin', async ({api, web3, privateKeyWrapper}) => {470 itEth('can not be set by non admin', async ({helper}) => {
545 await usingPlaygrounds(async (helper) => {
546 const nonAdmin = accounts.pop()!;471 const nonAdmin = accounts.pop()!;
547 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();472 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
548 const flipper = await deployFlipper(web3, contractOwner);473 const flipper = await helper.eth.deployFlipper(contractOwner); // await deployFlipper(web3, contractOwner);
549 const contractMethods = contractHelpers(web3, contractOwner);474 const contractHelper = helper.ethNativeContract.contractHelpers(contractOwner);
550475
551 await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;476 await expect(contractHelper.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.fulfilled;
552477
553 // nonAdmin calls sponsorContract478 // nonAdmin calls sponsorContract
554 await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address))).to.be.rejected;479 await expect(helper.executeExtrinsic(nonAdmin, 'api.tx.appPromotion.sponsorContract', [flipper.options.address], true)).to.be.rejectedWith('appPromotion.NoPermission');
555480
556 // contract still self-sponsored 481 // contract still self-sponsored
557 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({482 expect((await helper.api!.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
558 confirmed: {483 confirmed: {
559 ethereum: flipper.options.address.toLowerCase(),484 ethereum: flipper.options.address.toLowerCase(),
560 },485 },
561 });486 });
562 });487 });
563488
564 itWeb3('should be rejected for non-contract address', async ({api, web3, privateKeyWrapper}) => {489 itEth('should actually sponsor transactions', async ({helper}) => {
565 await usingPlaygrounds(async (helper) => {490 // Contract caller
566
567 });491 const caller = await helper.eth.createAccountWithBalance(alice, 1000n);
568 });
569 });
570
571 itWeb3('should actually sponsor transactions', async ({api, web3, privateKeyWrapper}) => {492 const palletBalanceBefore = await helper.balance.getSubstrate(palletAddress);
572 await usingPlaygrounds(async (helper) => { 493
573 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);494 // Deploy flipper
574 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();495 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
575 const flipper = await deployFlipper(web3, contractOwner);496 const flipper = await helper.eth.deployFlipper(contractOwner); // await deployFlipper(web3, contractOwner);
576 const contractHelper = contractHelpers(web3, contractOwner);497 const contractHelper = helper.ethNativeContract.contractHelpers(contractOwner);
498
499 // Owner sets to sponsor every tx
577 await contractHelper.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: contractOwner});500 await contractHelper.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: contractOwner});
578 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});501 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});
579 await transferBalanceToEth(api, alice, flipper.options.address, 1000n);502 await helper.eth.transferBalanceFromSubstrate(alice, flipper.options.address, 1000n); // transferBalanceToEth(api, alice, flipper.options.address, 1000n);
580503
581 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));504 // Set promotion to the Flipper
505 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorContract(flipper.options.address));
506
507 // Caller calls Flipper
582 await flipper.methods.flip().send({from: caller});508 await flipper.methods.flip().send({from: caller});
583 expect(await flipper.methods.getValue().call()).to.be.true;509 expect(await flipper.methods.getValue().call()).to.be.true;
584510
511 // The contracts and caller balances have not changed
585 const callerBalance = await helper.balance.getEthereum(caller);512 const callerBalance = await helper.balance.getEthereum(caller);
586 const contractBalanceAfter = await helper.balance.getEthereum(flipper.options.address);513 const contractBalanceAfter = await helper.balance.getEthereum(flipper.options.address);
587
588 expect(callerBalance).to.be.equal(1000n * nominal);514 expect(callerBalance).to.be.equal(1000n * nominal);
589 expect(1000n * nominal > contractBalanceAfter).to.be.true;515 expect(1000n * nominal === contractBalanceAfter).to.be.true;
516
517 // The pallet balance has decreased
518 const palletBalanceAfter = await helper.balance.getSubstrate(palletAddress);
519 expect(palletBalanceAfter < palletBalanceBefore).to.be.true;
590 });520 });
591 });521 });
592});522
593
594describe('app-promotion stopSponsoringContract', () => { 523 describe('stopSponsoringContract', () => {
595 before(async function () {524 itEth('should remove pallet address from contract sponsors', async ({helper}) => {
596 await beforeEach(this);
597 });
598
599 itWeb3('should remove pallet address from contract sponsors', async ({api, web3, privateKeyWrapper}) => {
600 await usingPlaygrounds(async (helper) => { 525 const caller = await helper.eth.createAccountWithBalance(alice, 1000n);
601 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
602 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();526 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
603 const flipper = await deployFlipper(web3, contractOwner);527 const flipper = await helper.eth.deployFlipper(contractOwner);
604 await transferBalanceToEth(api, alice, flipper.options.address);528 await helper.eth.transferBalanceFromSubstrate(alice, flipper.options.address);
605 const contractHelper = contractHelpers(web3, contractOwner);529 const contractHelper = helper.ethNativeContract.contractHelpers(contractOwner);
530
606 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});531 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});
607 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));532 await helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.sponsorContract', [flipper.options.address], true);
608 await helper.signTransaction(palletAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address));533 await helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.stopSponsoringContract', [flipper.options.address], true);
609534
610 expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.false; 535 expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.false;
611 expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner); 536 expect((await helper.api!.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner);
612 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({537 expect((await helper.api!.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
613 disabled: null,538 disabled: null,
614 });539 });
615540
616 await flipper.methods.flip().send({from: caller});541 await flipper.methods.flip().send({from: caller});
617 expect(await flipper.methods.getValue().call()).to.be.true;542 expect(await flipper.methods.getValue().call()).to.be.true;
618543
619 const callerBalance = await helper.balance.getEthereum(caller);544 const callerBalance = await helper.balance.getEthereum(caller);
620 const contractBalanceAfter = await helper.balance.getEthereum(flipper.options.address);545 const contractBalanceAfter = await helper.balance.getEthereum(flipper.options.address);
621546
622 // caller payed for call547 // caller payed for call
623 expect(1000n * nominal > callerBalance).to.be.true;548 expect(1000n * nominal > callerBalance).to.be.true;
624 expect(contractBalanceAfter).to.be.equal(1000n * nominal);549 expect(contractBalanceAfter).to.be.equal(1000n * nominal);
625 });550 });
626 });551
627
628 itWeb3('can not be called by non-admin', async ({api, web3, privateKeyWrapper}) => {552 itEth('can not be called by non-admin', async ({helper}) => {
629 await usingPlaygrounds(async (helper) => {
630 const nonAdmin = accounts.pop()!;553 const nonAdmin = accounts.pop()!;
631 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();554 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
632 const flipper = await deployFlipper(web3, contractOwner);555 const flipper = await helper.eth.deployFlipper(contractOwner);
633556
634 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));557 await helper.executeExtrinsic(palletAdmin, 'api.tx.appPromotion.sponsorContract', [flipper.options.address]);
635 await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address))).to.be.rejected;558 await expect(helper.executeExtrinsic(nonAdmin, 'api.tx.appPromotion.stopSponsoringContract', [flipper.options.address]))
559 .to.be.rejectedWith(/appPromotion\.NoPermission/);
636 });560 });
637 });561
638
639 itWeb3('should not affect a contract which is not sponsored by pallete', async ({api, web3, privateKeyWrapper}) => {562 itEth('should not affect a contract which is not sponsored by pallete', async ({helper}) => {
640 await usingPlaygrounds(async (helper) => {
641 const nonAdmin = accounts.pop()!;563 const nonAdmin = accounts.pop()!;
642 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();564 const contractOwner = (await helper.eth.createAccountWithBalance(alice, 1000n)).toLowerCase();
643 const flipper = await deployFlipper(web3, contractOwner);565 const flipper = await helper.eth.deployFlipper(contractOwner);
644 const contractHelper = contractHelpers(web3, contractOwner);566 const contractHelper = helper.ethNativeContract.contractHelpers(contractOwner);
645 await expect(contractHelper.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;567 await expect(contractHelper.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.fulfilled;
646568
647 await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address))).to.be.rejected;569 await expect(helper.executeExtrinsic(nonAdmin, 'api.tx.appPromotion.stopSponsoringContract', [flipper.options.address], true)).to.be.rejectedWith('appPromotion.NoPermission');
648 });570 });
649 });571 });
650});572
651
652describe('app-promotion rewards', () => {573 describe('rewards', () => {
653 before(async function () {574 itSub('can not be called by non admin', async ({helper}) => {
654 await beforeEach(this);
655 });
656
657 it('can not be called by non admin', async () => {
658 await usingPlaygrounds(async (helper) => {
659 const nonAdmin = accounts.pop()!;575 const nonAdmin = accounts.pop()!;
660 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.payoutStakers(100))).to.be.rejected;576 await expect(helper.admin.payoutStakers(nonAdmin, 100)).to.be.rejectedWith('appPromotion.NoPermission');
661 });577 });
662 });578
663
664 it('should credit 0.05% for staking period', async () => { 579 itSub('should increase total staked', async ({helper}) => {
665 await usingPlaygrounds(async helper => {
666 const staker = accounts.pop()!;580 const staker = accounts.pop()!;
667581 const totalStakedBefore = await helper.staking.getTotalStaked();
582 await helper.staking.stake(staker, 100n * nominal);
583
584 // Wait for rewards and pay
585 const [stakedInBlock] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
586 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock.block));
587 const totalPayout = (await helper.admin.payoutStakers(palletAdmin, 100)).reduce((prev, payout) => prev + payout.payout, 0n);
588
589 const totalStakedAfter = await helper.staking.getTotalStaked();
590 expect(totalStakedAfter).to.equal(totalStakedBefore + (100n * nominal) + totalPayout);
591 // staker can unstake
592 await helper.staking.unstake(staker);
593 expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedAfter - calculateIncome(100n * nominal, 10n));
594 });
595
596 itSub('should credit 0.05% for staking period', async ({helper}) => {
597 const staker = accounts.pop()!;
598
668 await waitPromotionPeriodDoesntEnd(helper);599 await waitPromotionPeriodDoesntEnd(helper);
669 600
670 await helper.staking.stake(staker, 100n * nominal);601 await helper.staking.stake(staker, 100n * nominal);
671 await helper.staking.stake(staker, 200n * nominal);602 await helper.staking.stake(staker, 200n * nominal);
672603
673 // wait rewards are available:604 // wait rewards are available:
674 const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[1][0];605 const [_, stake2] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
675 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock));606 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake2.block));
676607
677 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));608 const payoutToStaker = (await helper.admin.payoutStakers(palletAdmin, 100)).find((payout) => payout.staker === staker.address)?.payout;
678609 expect(payoutToStaker + 300n * nominal).to.equal(calculateIncome(300n * nominal, 10n));
610
679 const totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);611 const totalStakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
680 expect(totalStakedPerBlock).to.be.deep.equal([calculateIncome(100n * nominal, 10n), calculateIncome(200n * nominal, 10n)]);612 expect(totalStakedPerBlock[0].amount).to.equal(calculateIncome(100n * nominal, 10n));
613 expect(totalStakedPerBlock[1].amount).to.equal(calculateIncome(200n * nominal, 10n));
681 });614 });
682 });615
683
684 it('shoud be paid for more than one period if payments was missed', async () => {616 itSub('shoud be paid for more than one period if payments was missed', async ({helper}) => {
685 await usingPlaygrounds(async (helper) => {
686 const staker = accounts.pop()!;617 const staker = accounts.pop()!;
687618
688 await helper.staking.stake(staker, 100n * nominal);619 await helper.staking.stake(staker, 100n * nominal);
689 // wait for two rewards are available:620 // wait for two rewards are available:
690 const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[0][0];621 let [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
691 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock) + LOCKING_PERIOD);622 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake.block) + LOCKING_PERIOD);
692623
693 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));624 await helper.admin.payoutStakers(palletAdmin, 100);
694 const stakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});625 [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
695 const frozenBalanceShouldBe = calculateIncome(100n * nominal, 10n, 2);626 const frozenBalanceShouldBe = calculateIncome(100n * nominal, 10n, 2);
696 expect(stakedPerBlock[0][1]).to.be.equal(frozenBalanceShouldBe);627 expect(stake.amount).to.be.equal(frozenBalanceShouldBe);
697628
698 const stakerFullBalance = await helper.balance.getSubstrateFull(staker.address);629 const stakerFullBalance = await helper.balance.getSubstrateFull(staker.address);
699630
700 expect(stakerFullBalance).to.contain({reserved: 0n, feeFrozen: frozenBalanceShouldBe, miscFrozen: frozenBalanceShouldBe});631 expect(stakerFullBalance).to.contain({reserved: 0n, feeFrozen: frozenBalanceShouldBe, miscFrozen: frozenBalanceShouldBe});
701 });632 });
702 });633
703
704 it('should not be credited for unstaked (reserved) balance', async () => {634 itSub('should not be credited for unstaked (reserved) balance', async ({helper}) => {
705 await usingPlaygrounds(async helper => {
706 // staker unstakes before rewards has been payed635 // staker unstakes before rewards has been payed
707 const staker = accounts.pop()!;636 const staker = accounts.pop()!;
708 await helper.staking.stake(staker, 100n * nominal);637 await helper.staking.stake(staker, 100n * nominal);
709 const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[0][0];638 const [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
710 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock) + LOCKING_PERIOD);639 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake.block) + LOCKING_PERIOD);
711 await helper.staking.unstake(staker);640 await helper.staking.unstake(staker);
712 641
713 // so he did not receive any rewards642 // so he did not receive any rewards
714 const totalBalanceBefore = await helper.balance.getSubstrate(staker.address);643 const totalBalanceBefore = await helper.balance.getSubstrate(staker.address);
715 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));644 await helper.admin.payoutStakers(palletAdmin, 100);
716 const totalBalanceAfter = await helper.balance.getSubstrate(staker.address);645 const totalBalanceAfter = await helper.balance.getSubstrate(staker.address);
717646
718 expect(totalBalanceBefore).to.be.equal(totalBalanceAfter);647 expect(totalBalanceBefore).to.be.equal(totalBalanceAfter);
719 });648 });
720 });649
721
722 it('should bring compound interest', async () => {650 itSub('should bring compound interest', async ({helper}) => {
723 await usingPlaygrounds(async helper => {
724 const staker = accounts.pop()!;651 const staker = accounts.pop()!;
725 652
726 await helper.staking.stake(staker, 100n * nominal);653 await helper.staking.stake(staker, 100n * nominal);
727654
728 const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[0][0];655 let [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
729 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock));656 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake.block));
730 657
731 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));658 await helper.admin.payoutStakers(palletAdmin, 100);
732 let totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);659 [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
733 expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n)]);660 expect(stake.amount).to.equal(calculateIncome(100n * nominal, 10n));
734 661
735 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock) + LOCKING_PERIOD);662 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake.block) + LOCKING_PERIOD);
736 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));663 await helper.admin.payoutStakers(palletAdmin, 100);
737 totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);664 [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
738 expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n, 2)]); 665 expect(stake.amount).to.equal(calculateIncome(100n * nominal, 10n, 2));
739 });666 });
740 });667
741
742 it.skip('can be paid 1000 rewards in a time', async () => {668 itSub.skip('can be paid 1000 rewards in a time', async ({helper}) => {
743 // all other stakes should be unstaked669 // all other stakes should be unstaked
744 await usingPlaygrounds(async (helper) => {
745 const oneHundredStakers = await helper.arrange.createCrowd(100, 1050n, alice);670 const oneHundredStakers = await helper.arrange.createCrowd(100, 1050n, alice);
746671
747 // stakers stakes 10 times each672 // stakers stakes 10 times each
748 for (let i = 0; i < 10; i++) {673 for (let i = 0; i < 10; i++) {
749 await Promise.all(oneHundredStakers.map(staker => helper.staking.stake(staker, 100n * nominal)));674 await Promise.all(oneHundredStakers.map(staker => helper.staking.stake(staker, 100n * nominal)));
750 }675 }
751 await helper.wait.newBlocks(40);676 await helper.wait.newBlocks(40);
752 const result = await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));677 await helper.admin.payoutStakers(palletAdmin, 100);
753 });678 });
754 });679
755
756 it.skip('can handle 40.000 rewards', async () => {680 itSub.skip('can handle 40.000 rewards', async ({helper}) => {
757 await usingPlaygrounds(async (helper) => {
758 const [donor] = await helper.arrange.createAccounts([7_000_000n], alice);681 const [donor] = await helper.arrange.createAccounts([7_000_000n], alice);
759 const crowdStakes = async () => {682 const crowdStakes = async () => {
760 // each account in the crowd stakes 2 times683 // each account in the crowd stakes 2 times
763 await Promise.all(crowd.map(account => helper.staking.stake(account, 100n * nominal)));686 await Promise.all(crowd.map(account => helper.staking.stake(account, 100n * nominal)));
764 // 687 //
765 };688 };
766689
767 for (let i = 0; i < 40; i++) {690 for (let i = 0; i < 40; i++) {
768 await crowdStakes();691 await crowdStakes();
769 }692 }
770693
771 // TODO pay rewards for some period694 // TODO pay rewards for some period
772 });695 });
773 });696 });
modifiedtests/src/block-production.test.tsdiffbeforeafterboth
14// You should have received a copy of the GNU General Public License14// You should have received a copy of the GNU General Public License
15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
1616
17import usingApi from './substrate/substrate-api';17import {ApiPromise} from '@polkadot/api';
18import {expect} from 'chai';18import {expect, itSub} from './util/playgrounds';
19import {ApiPromise} from '@polkadot/api';
2019
21const BLOCK_TIME_MS = 12000;20const BLOCK_TIME_MS = 12000;
22const TOLERANCE_MS = 3000;21const TOLERANCE_MS = 3000;
37}36}
3837
39describe('Block Production smoke test', () => {38describe('Block Production smoke test', () => {
40 it('Node produces new blocks', async () => {39 itSub('Node produces new blocks', async ({helper}) => {
41 await usingApi(async (api) => {40 const blocks: number[] | undefined = await getBlocks(helper.api!);
42 const blocks: number[] | undefined = await getBlocks(api);
43 expect(blocks[0]).to.be.lessThan(blocks[1]);41 expect(blocks[0]).to.be.lessThan(blocks[1]);
44 });
45 });42 });
46});43});
4744
modifiedtests/src/connection.test.tsdiffbeforeafterboth
14// You should have received a copy of the GNU General Public License14// You should have received a copy of the GNU General Public License
15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
1616
17import usingApi from './substrate/substrate-api';
18import {WsProvider} from '@polkadot/api';17import {itSub, expect, usingPlaygrounds} from './util/playgrounds';
19import * as chai from 'chai';
20import chaiAsPromised from 'chai-as-promised';
21
22chai.use(chaiAsPromised);
23
24const expect = chai.expect;
2518
26describe('Connection smoke test', () => {19describe('Connection smoke test', () => {
27 it('Connection can be established', async () => {20 itSub('Connection can be established', async ({helper}) => {
28 await usingApi(async api => {21 const health = (await helper.callRpc('api.rpc.system.health')).toJSON();
29 const health = await api.rpc.system.health();
30 expect(health).to.be.not.empty;22 expect(health).to.be.not.empty;
31 });
32 });23 });
3324
34 it('Cannot connect to 255.255.255.255', async () => {25 it('Cannot connect to 255.255.255.255', async () => {
35 const neverConnectProvider = new WsProvider('ws://255.255.255.255:9944');
36 await expect((async () => {26 await expect((async () => {
37 await usingApi(async api => {27 await usingPlaygrounds(async helper => {
38 await api.rpc.system.health();28 await helper.callRpc('api.rpc.system.health');
39 }, {provider: neverConnectProvider});29 }, 'ws://255.255.255.255:9944');
40 })()).to.be.eventually.rejected;30 })()).to.be.eventually.rejected;
41 });31 });
42});32});
modifiedtests/src/contracts.test.tsdiffbeforeafterboth
47const gasLimit = 9000n * 1000000n;47const gasLimit = 9000n * 1000000n;
48const marketContractAddress = '5CYN9j3YvRkqxewoxeSvRbhAym4465C57uMmX5j4yz99L5H6';48const marketContractAddress = '5CYN9j3YvRkqxewoxeSvRbhAym4465C57uMmX5j4yz99L5H6';
4949
50// todo:playgrounds skipped ~ postponed
50describe.skip('Contracts', () => {51describe.skip('Contracts', () => {
51 it('Can deploy smart contract Flipper, instantiate it and call it\'s get and flip messages.', async () => {52 it('Can deploy smart contract Flipper, instantiate it and call it\'s get and flip messages.', async () => {
52 await usingApi(async (api, privateKeyWrapper) => {53 await usingApi(async (api, privateKeyWrapper) => {
modifiedtests/src/enableContractSponsoring.test.tsdiffbeforeafterboth
29chai.use(chaiAsPromised);29chai.use(chaiAsPromised);
30const expect = chai.expect;30const expect = chai.expect;
3131
32// todo:playgrounds skipped ~ postponed
32describe.skip('Integration Test enableContractSponsoring', () => {33describe.skip('Integration Test enableContractSponsoring', () => {
33 it('ensure tx fee is paid from endowment', async () => {34 it('ensure tx fee is paid from endowment', async () => {
34 await usingApi(async (api, privateKeyWrapper) => {35 await usingApi(async (api, privateKeyWrapper) => {
modifiedtests/src/eth/api/ContractHelpers.soldiffbeforeafterboth
23}20}
2421
25/// @title Magic contract, which allows users to reconfigure other contracts22/// @title Magic contract, which allows users to reconfigure other contracts
26/// @dev the ERC-165 identifier for this interface is 0x172cb4fb23/// @dev the ERC-165 identifier for this interface is 0x30afad04
27interface ContractHelpers is Dummy, ERC165, ContractHelpersEvents {24interface ContractHelpers is Dummy, ERC165, ContractHelpersEvents {
28 /// Get user, which deployed specified contract25 /// Get user, which deployed specified contract
29 /// @dev May return zero address in case if contract is deployed26 /// @dev May return zero address in case if contract is deployed
73 ///67 ///
74 /// @param contractAddress The contract for which a sponsor is requested.68 /// @param contractAddress The contract for which a sponsor is requested.
75 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.69 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
76 /// @dev EVM selector for this function is: 0x743fc745,70 /// @dev EVM selector for this function is: 0x766c4f37,
77 /// or in textual repr: getSponsor(address)71 /// or in textual repr: sponsor(address)
78 function getSponsor(address contractAddress)72 function sponsor(address contractAddress) external view returns (Tuple0 memory);
79 external
80 view
81 returns (Tuple0 memory);
113 /// Get current contract sponsoring rate limit98 /// Get current contract sponsoring rate limit
114 /// @param contractAddress Contract to get sponsoring rate limit of99 /// @param contractAddress Contract to get sponsoring rate limit of
115 /// @return uint32 Amount of blocks between two sponsored transactions100 /// @return uint32 Amount of blocks between two sponsored transactions
116 /// @dev EVM selector for this function is: 0x610cfabd,101 /// @dev EVM selector for this function is: 0xf29694d8,
117 /// or in textual repr: getSponsoringRateLimit(address)102 /// or in textual repr: sponsoringRateLimit(address)
118 function getSponsoringRateLimit(address contractAddress)103 function sponsoringRateLimit(address contractAddress) external view returns (uint32);
119 external
120 view
121 returns (uint32);
146 /// @param contractAddress Contract to get sponsoring fee limit of126 /// @param contractAddress Contract to get sponsoring fee limit of
147 /// @return uint256 Maximum amount of fee that could be spent by single127 /// @return uint256 Maximum amount of fee that could be spent by single
148 /// transaction128 /// transaction
149 /// @dev EVM selector for this function is: 0xc3fdc9ee,129 /// @dev EVM selector for this function is: 0x75b73606,
150 /// or in textual repr: getSponsoringFeeLimit(address)130 /// or in textual repr: sponsoringFeeLimit(address)
151 function getSponsoringFeeLimit(address contractAddress)131 function sponsoringFeeLimit(address contractAddress) external view returns (uint256);
152 external
153 view
154 returns (uint256);
modifiedtests/src/eth/api/UniqueFungible.soldiffbeforeafterboth
13}13}
1414
15/// @title A contract that allows you to work with collections.15/// @title A contract that allows you to work with collections.
16/// @dev the ERC-165 identifier for this interface is 0x9f70d4e016/// @dev the ERC-165 identifier for this interface is 0x47dbc105
17interface Collection is Dummy, ERC165 {17interface Collection is Dummy, ERC165 {
18 /// Set collection property.18 /// Set collection property.
19 ///19 ///
62 /// or in textual repr: setCollectionSponsorSubstrate(uint256)58 /// or in textual repr: setCollectionSponsorSubstrate(uint256)
63 function setCollectionSponsorSubstrate(uint256 sponsor) external;59 function setCollectionSponsorSubstrate(uint256 sponsor) external;
6460
61 /// Whether there is a pending sponsor.
65 /// @dev EVM selector for this function is: 0x058ac185,62 /// @dev EVM selector for this function is: 0x058ac185,
66 /// or in textual repr: hasCollectionPendingSponsor()63 /// or in textual repr: hasCollectionPendingSponsor()
67 function hasCollectionPendingSponsor() external view returns (bool);64 function hasCollectionPendingSponsor() external view returns (bool);
81 /// Get current sponsor.78 /// Get current sponsor.
82 ///79 ///
83 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.80 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
84 /// @dev EVM selector for this function is: 0xb66bbc14,81 /// @dev EVM selector for this function is: 0x6ec0a9f1,
85 /// or in textual repr: getCollectionSponsor()82 /// or in textual repr: collectionSponsor()
86 function getCollectionSponsor() external view returns (Tuple6 memory);83 function collectionSponsor() external view returns (Tuple6 memory);
8784
88 /// Set limits for the collection.85 /// Set limits for the collection.
89 /// @dev Throws error if limit not found.86 /// @dev Throws error if limit not found.
227 /// @return `Fungible` or `NFT` or `ReFungible`223 /// @return `Fungible` or `NFT` or `ReFungible`
228 /// @dev EVM selector for this function is: 0xd34b55b8,224 /// @dev EVM selector for this function is: 0xd34b55b8,
229 /// or in textual repr: uniqueCollectionType()225 /// or in textual repr: uniqueCollectionType()
230 function uniqueCollectionType() external returns (string memory);226 function uniqueCollectionType() external view returns (string memory);
231227
232 /// Get collection owner.228 /// Get collection owner.
233 ///229 ///
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
65}62}
6663
67/// @title A contract that allows you to work with collections.64/// @title A contract that allows you to work with collections.
68/// @dev the ERC-165 identifier for this interface is 0x9f70d4e065/// @dev the ERC-165 identifier for this interface is 0x47dbc105
69interface Collection is Dummy, ERC165 {66interface Collection is Dummy, ERC165 {
70 /// Set collection property.67 /// Set collection property.
71 ///68 ///
114 /// or in textual repr: setCollectionSponsorSubstrate(uint256)107 /// or in textual repr: setCollectionSponsorSubstrate(uint256)
115 function setCollectionSponsorSubstrate(uint256 sponsor) external;108 function setCollectionSponsorSubstrate(uint256 sponsor) external;
116109
110 /// Whether there is a pending sponsor.
117 /// @dev EVM selector for this function is: 0x058ac185,111 /// @dev EVM selector for this function is: 0x058ac185,
118 /// or in textual repr: hasCollectionPendingSponsor()112 /// or in textual repr: hasCollectionPendingSponsor()
119 function hasCollectionPendingSponsor() external view returns (bool);113 function hasCollectionPendingSponsor() external view returns (bool);
133 /// Get current sponsor.127 /// Get current sponsor.
134 ///128 ///
135 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.129 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
136 /// @dev EVM selector for this function is: 0xb66bbc14,130 /// @dev EVM selector for this function is: 0x6ec0a9f1,
137 /// or in textual repr: getCollectionSponsor()131 /// or in textual repr: collectionSponsor()
138 function getCollectionSponsor() external view returns (Tuple17 memory);132 function collectionSponsor() external view returns (Tuple17 memory);
139133
140 /// Set limits for the collection.134 /// Set limits for the collection.
141 /// @dev Throws error if limit not found.135 /// @dev Throws error if limit not found.
279 /// @return `Fungible` or `NFT` or `ReFungible`272 /// @return `Fungible` or `NFT` or `ReFungible`
280 /// @dev EVM selector for this function is: 0xd34b55b8,273 /// @dev EVM selector for this function is: 0xd34b55b8,
281 /// or in textual repr: uniqueCollectionType()274 /// or in textual repr: uniqueCollectionType()
282 function uniqueCollectionType() external returns (string memory);275 function uniqueCollectionType() external view returns (string memory);
283276
284 /// Get collection owner.277 /// Get collection owner.
285 ///278 ///
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
65}62}
6663
67/// @title A contract that allows you to work with collections.64/// @title A contract that allows you to work with collections.
68/// @dev the ERC-165 identifier for this interface is 0x9f70d4e065/// @dev the ERC-165 identifier for this interface is 0x47dbc105
69interface Collection is Dummy, ERC165 {66interface Collection is Dummy, ERC165 {
70 /// Set collection property.67 /// Set collection property.
71 ///68 ///
114 /// or in textual repr: setCollectionSponsorSubstrate(uint256)107 /// or in textual repr: setCollectionSponsorSubstrate(uint256)
115 function setCollectionSponsorSubstrate(uint256 sponsor) external;108 function setCollectionSponsorSubstrate(uint256 sponsor) external;
116109
110 /// Whether there is a pending sponsor.
117 /// @dev EVM selector for this function is: 0x058ac185,111 /// @dev EVM selector for this function is: 0x058ac185,
118 /// or in textual repr: hasCollectionPendingSponsor()112 /// or in textual repr: hasCollectionPendingSponsor()
119 function hasCollectionPendingSponsor() external view returns (bool);113 function hasCollectionPendingSponsor() external view returns (bool);
133 /// Get current sponsor.127 /// Get current sponsor.
134 ///128 ///
135 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.129 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
136 /// @dev EVM selector for this function is: 0xb66bbc14,130 /// @dev EVM selector for this function is: 0x6ec0a9f1,
137 /// or in textual repr: getCollectionSponsor()131 /// or in textual repr: collectionSponsor()
138 function getCollectionSponsor() external view returns (Tuple17 memory);132 function collectionSponsor() external view returns (Tuple17 memory);
139133
140 /// Set limits for the collection.134 /// Set limits for the collection.
141 /// @dev Throws error if limit not found.135 /// @dev Throws error if limit not found.
279 /// @return `Fungible` or `NFT` or `ReFungible`272 /// @return `Fungible` or `NFT` or `ReFungible`
280 /// @dev EVM selector for this function is: 0xd34b55b8,273 /// @dev EVM selector for this function is: 0xd34b55b8,
281 /// or in textual repr: uniqueCollectionType()274 /// or in textual repr: uniqueCollectionType()
282 function uniqueCollectionType() external returns (string memory);275 function uniqueCollectionType() external view returns (string memory);
283276
284 /// Get collection owner.277 /// Get collection owner.
285 ///278 ///
modifiedtests/src/eth/api/UniqueRefungibleToken.soldiffbeforeafterboth

no syntactic changes

modifiedtests/src/eth/collectionSponsoring.test.tsdiffbeforeafterboth
56 await submitTransactionAsync(sponsor, confirmTx);56 await submitTransactionAsync(sponsor, confirmTx);
57 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.false;57 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.false;
58 58
59 const sponsorTuple = await collectionEvm.methods.getCollectionSponsor().call({from: owner});59 const sponsorTuple = await collectionEvm.methods.collectionSponsor().call({from: owner});
60 expect(bigIntToSub(api, BigInt(sponsorTuple[1]))).to.be.eq(sponsor.address);60 expect(bigIntToSub(api, BigInt(sponsorTuple[1]))).to.be.eq(sponsor.address);
61 });61 });
6262
77 77
78 await collectionEvm.methods.removeCollectionSponsor().send({from: owner});78 await collectionEvm.methods.removeCollectionSponsor().send({from: owner});
79 79
80 const sponsorTuple = await collectionEvm.methods.getCollectionSponsor().call({from: owner});80 const sponsorTuple = await collectionEvm.methods.collectionSponsor().call({from: owner});
81 expect(sponsorTuple.field_0).to.be.eq('0x0000000000000000000000000000000000000000');81 expect(sponsorTuple.field_0).to.be.eq('0x0000000000000000000000000000000000000000');
82 });82 });
8383
modifiedtests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth
223 const helpers = contractHelpers(web3, owner);223 const helpers = contractHelpers(web3, owner);
224 await helpers.methods.selfSponsoredEnable(flipper.options.address).send();224 await helpers.methods.selfSponsoredEnable(flipper.options.address).send();
225 225
226 const result = await helpers.methods.getSponsor(flipper.options.address).call();226 const result = await helpers.methods.sponsor(flipper.options.address).call();
227227
228 expect(result[0]).to.be.eq(flipper.options.address);228 expect(result[0]).to.be.eq(flipper.options.address);
229 expect(result[1]).to.be.eq('0');229 expect(result[1]).to.be.eq('0');
237 await helpers.methods.setSponsor(flipper.options.address, sponsor).send();237 await helpers.methods.setSponsor(flipper.options.address, sponsor).send();
238 await helpers.methods.confirmSponsorship(flipper.options.address).send({from: sponsor});238 await helpers.methods.confirmSponsorship(flipper.options.address).send({from: sponsor});
239 239
240 const result = await helpers.methods.getSponsor(flipper.options.address).call();240 const result = await helpers.methods.sponsor(flipper.options.address).call();
241241
242 expect(result[0]).to.be.eq(sponsor);242 expect(result[0]).to.be.eq(sponsor);
243 expect(result[1]).to.be.eq('0');243 expect(result[1]).to.be.eq('0');
482 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);482 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
483 const flipper = await deployFlipper(web3, owner);483 const flipper = await deployFlipper(web3, owner);
484 const helpers = contractHelpers(web3, owner);484 const helpers = contractHelpers(web3, owner);
485 expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');485 expect(await helpers.methods.sponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');
486 });486 });
487});487});
488488
551 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);551 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
552 const flipper = await deployFlipper(web3, owner);552 const flipper = await deployFlipper(web3, owner);
553 const helpers = contractHelpers(web3, owner);553 const helpers = contractHelpers(web3, owner);
554 expect(await helpers.methods.getSponsoringFeeLimit(flipper.options.address).call()).to.be.equals('115792089237316195423570985008687907853269984665640564039457584007913129639935');554 expect(await helpers.methods.sponsoringFeeLimit(flipper.options.address).call()).to.be.equals('115792089237316195423570985008687907853269984665640564039457584007913129639935');
555 });555 });
556556
557 itWeb3('Set fee limit', async ({api, web3, privateKeyWrapper}) => {557 itWeb3('Set fee limit', async ({api, web3, privateKeyWrapper}) => {
558 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);558 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
559 const flipper = await deployFlipper(web3, owner);559 const flipper = await deployFlipper(web3, owner);
560 const helpers = contractHelpers(web3, owner);560 const helpers = contractHelpers(web3, owner);
561 await helpers.methods.setSponsoringFeeLimit(flipper.options.address, 100).send();561 await helpers.methods.setSponsoringFeeLimit(flipper.options.address, 100).send();
562 expect(await helpers.methods.getSponsoringFeeLimit(flipper.options.address).call()).to.be.equals('100');562 expect(await helpers.methods.sponsoringFeeLimit(flipper.options.address).call()).to.be.equals('100');
563 });563 });
564564
565 itWeb3('Negative test - set fee limit by non-owner', async ({api, web3, privateKeyWrapper}) => {565 itWeb3('Negative test - set fee limit by non-owner', async ({api, web3, privateKeyWrapper}) => {
modifiedtests/src/eth/fungibleAbi.jsondiffbeforeafterboth
157 "stateMutability": "view",157 "stateMutability": "view",
158 "type": "function"158 "type": "function"
159 },159 },
160 {
161 "inputs": [],
162 "name": "collectionSponsor",
163 "outputs": [
164 {
165 "components": [
166 { "internalType": "address", "name": "field_0", "type": "address" },
167 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
168 ],
169 "internalType": "struct Tuple6",
170 "name": "",
171 "type": "tuple"
172 }
173 ],
174 "stateMutability": "view",
175 "type": "function"
176 },
160 {177 {
161 "inputs": [],178 "inputs": [],
162 "name": "confirmCollectionSponsorship",179 "name": "confirmCollectionSponsorship",
185 "stateMutability": "nonpayable",202 "stateMutability": "nonpayable",
186 "type": "function"203 "type": "function"
187 },204 },
188 {
189 "inputs": [],
190 "name": "getCollectionSponsor",
191 "outputs": [
192 {
193 "components": [
194 { "internalType": "address", "name": "field_0", "type": "address" },
195 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
196 ],
197 "internalType": "struct Tuple6",
198 "name": "",
199 "type": "tuple"
200 }
201 ],
202 "stateMutability": "view",
203 "type": "function"
204 },
205 {205 {
206 "inputs": [],206 "inputs": [],
207 "name": "hasCollectionPendingSponsor",207 "name": "hasCollectionPendingSponsor",
453 "inputs": [],453 "inputs": [],
454 "name": "uniqueCollectionType",454 "name": "uniqueCollectionType",
455 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],455 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
456 "stateMutability": "nonpayable",456 "stateMutability": "view",
457 "type": "function"457 "type": "function"
458 }458 }
459]459]
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
187 "stateMutability": "view",187 "stateMutability": "view",
188 "type": "function"188 "type": "function"
189 },189 },
190 {
191 "inputs": [],
192 "name": "collectionSponsor",
193 "outputs": [
194 {
195 "components": [
196 { "internalType": "address", "name": "field_0", "type": "address" },
197 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
198 ],
199 "internalType": "struct Tuple17",
200 "name": "",
201 "type": "tuple"
202 }
203 ],
204 "stateMutability": "view",
205 "type": "function"
206 },
190 {207 {
191 "inputs": [],208 "inputs": [],
192 "name": "confirmCollectionSponsorship",209 "name": "confirmCollectionSponsorship",
234 "stateMutability": "view",251 "stateMutability": "view",
235 "type": "function"252 "type": "function"
236 },253 },
237 {
238 "inputs": [],
239 "name": "getCollectionSponsor",
240 "outputs": [
241 {
242 "components": [
243 { "internalType": "address", "name": "field_0", "type": "address" },
244 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
245 ],
246 "internalType": "struct Tuple17",
247 "name": "",
248 "type": "tuple"
249 }
250 ],
251 "stateMutability": "view",
252 "type": "function"
253 },
254 {254 {
255 "inputs": [],255 "inputs": [],
256 "name": "hasCollectionPendingSponsor",256 "name": "hasCollectionPendingSponsor",
651 "inputs": [],651 "inputs": [],
652 "name": "uniqueCollectionType",652 "name": "uniqueCollectionType",
653 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],653 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
654 "stateMutability": "nonpayable",654 "stateMutability": "view",
655 "type": "function"655 "type": "function"
656 }656 }
657]657]
modifiedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
187 "stateMutability": "view",187 "stateMutability": "view",
188 "type": "function"188 "type": "function"
189 },189 },
190 {
191 "inputs": [],
192 "name": "collectionSponsor",
193 "outputs": [
194 {
195 "components": [
196 { "internalType": "address", "name": "field_0", "type": "address" },
197 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
198 ],
199 "internalType": "struct Tuple17",
200 "name": "",
201 "type": "tuple"
202 }
203 ],
204 "stateMutability": "view",
205 "type": "function"
206 },
190 {207 {
191 "inputs": [],208 "inputs": [],
192 "name": "confirmCollectionSponsorship",209 "name": "confirmCollectionSponsorship",
234 "stateMutability": "view",251 "stateMutability": "view",
235 "type": "function"252 "type": "function"
236 },253 },
237 {
238 "inputs": [],
239 "name": "getCollectionSponsor",
240 "outputs": [
241 {
242 "components": [
243 { "internalType": "address", "name": "field_0", "type": "address" },
244 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
245 ],
246 "internalType": "struct Tuple17",
247 "name": "",
248 "type": "tuple"
249 }
250 ],
251 "stateMutability": "view",
252 "type": "function"
253 },
254 {254 {
255 "inputs": [],255 "inputs": [],
256 "name": "hasCollectionPendingSponsor",256 "name": "hasCollectionPendingSponsor",
660 "inputs": [],660 "inputs": [],
661 "name": "uniqueCollectionType",661 "name": "uniqueCollectionType",
662 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],662 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
663 "stateMutability": "nonpayable",663 "stateMutability": "view",
664 "type": "function"664 "type": "function"
665 }665 }
666]666]
modifiedtests/src/eth/util/contractHelpersAbi.jsondiffbeforeafterboth
103 "stateMutability": "view",103 "stateMutability": "view",
104 "type": "function"104 "type": "function"
105 },105 },
106 {
107 "inputs": [
108 {
109 "internalType": "address",
110 "name": "contractAddress",
111 "type": "address"
112 }
113 ],
114 "name": "getSponsor",
115 "outputs": [
116 {
117 "components": [
118 { "internalType": "address", "name": "field_0", "type": "address" },
119 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
120 ],
121 "internalType": "struct Tuple0",
122 "name": "",
123 "type": "tuple"
124 }
125 ],
126 "stateMutability": "view",
127 "type": "function"
128 },
129 {
130 "inputs": [
131 {
132 "internalType": "address",
133 "name": "contractAddress",
134 "type": "address"
135 }
136 ],
137 "name": "getSponsoringFeeLimit",
138 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
139 "stateMutability": "view",
140 "type": "function"
141 },
142 {
143 "inputs": [
144 {
145 "internalType": "address",
146 "name": "contractAddress",
147 "type": "address"
148 }
149 ],
150 "name": "getSponsoringRateLimit",
151 "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
152 "stateMutability": "view",
153 "type": "function"
154 },
155 {106 {
156 "inputs": [107 "inputs": [
157 {108 {
260 "stateMutability": "nonpayable",211 "stateMutability": "nonpayable",
261 "type": "function"212 "type": "function"
262 },213 },
214 {
215 "inputs": [
216 {
217 "internalType": "address",
218 "name": "contractAddress",
219 "type": "address"
220 }
221 ],
222 "name": "sponsor",
223 "outputs": [
224 {
225 "components": [
226 { "internalType": "address", "name": "field_0", "type": "address" },
227 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
228 ],
229 "internalType": "struct Tuple0",
230 "name": "",
231 "type": "tuple"
232 }
233 ],
234 "stateMutability": "view",
235 "type": "function"
236 },
263 {237 {
264 "inputs": [238 "inputs": [
265 {239 {
273 "stateMutability": "view",247 "stateMutability": "view",
274 "type": "function"248 "type": "function"
275 },249 },
250 {
251 "inputs": [
252 {
253 "internalType": "address",
254 "name": "contractAddress",
255 "type": "address"
256 }
257 ],
258 "name": "sponsoringFeeLimit",
259 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
260 "stateMutability": "view",
261 "type": "function"
262 },
263 {
264 "inputs": [
265 {
266 "internalType": "address",
267 "name": "contractAddress",
268 "type": "address"
269 }
270 ],
271 "name": "sponsoringRateLimit",
272 "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
273 "stateMutability": "view",
274 "type": "function"
275 },
276 {276 {
277 "inputs": [277 "inputs": [
278 { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }278 { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
modifiedtests/src/eth/util/playgrounds/unique.dev.tsdiffbeforeafterboth
199 `);199 `);
200 }200 }
201
202 async deployFlipper(signer: string): Promise<Contract> {
203 return await this.helper.ethContract.deployByCode(signer, 'Flipper', `
204 // SPDX-License-Identifier: UNLICENSED
205 pragma solidity ^0.8.6;
206
207 contract Flipper {
208 bool value = false;
209 function flip() public {
210 value = !value;
211 }
212 function getValue() public view returns (bool) {
213 return value;
214 }
215 }
216 `);
217 }
201}218}
202 219
203
modifiedtests/src/evmCoder.test.tsdiffbeforeafterboth
14// You should have received a copy of the GNU General Public License14// You should have received a copy of the GNU General Public License
15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
1616
17import {IKeyringPair} from '@polkadot/types/types';
17import Web3 from 'web3';18import Web3 from 'web3';
18import {createEthAccountWithBalance, createNonfungibleCollection, GAS_ARGS, itWeb3} from './eth/util/helpers';19import {itEth, expect, usingEthPlaygrounds} from './eth/util/playgrounds';
19import * as solc from 'solc';20import * as solc from 'solc';
20
21import chai from 'chai';
22const expect = chai.expect;
2321
24async function compileTestContract(collectionAddress: string, contractAddress: string) {22async function compileTestContract(collectionAddress: string, contractAddress: string) {
25 const input = {23 const input = {
79 };77 };
80}78}
8179
82async function deployTestContract(web3: Web3, owner: string, collectionAddress: string, contractAddress: string) {80async function deployTestContract(web3: Web3, owner: string, collectionAddress: string, contractAddress: string, gas: number) {
83 const compiled = await compileTestContract(collectionAddress, contractAddress);81 const compiled = await compileTestContract(collectionAddress, contractAddress);
84 const fractionalizerContract = new web3.eth.Contract(compiled.abi, undefined, {82 const fractionalizerContract = new web3.eth.Contract(compiled.abi, undefined, {
85 data: compiled.object,83 data: compiled.object,
86 from: owner,84 from: owner,
87 ...GAS_ARGS,85 gas,
88 });86 });
89 return await fractionalizerContract.deploy({data: compiled.object}).send({from: owner});87 return await fractionalizerContract.deploy({data: compiled.object}).send({from: owner});
90}88}
9189
92describe('Evm Coder tests', () => {90describe('Evm Coder tests', () => {
91 let donor: IKeyringPair;
92
93 before(async function() {
94 await usingEthPlaygrounds(async (_helper, privateKey) => {
95 donor = privateKey('//Alice');
96 });
97 });
98
93 itWeb3('Call non-existing function', async ({api, web3, privateKeyWrapper}) => {99 itEth('Call non-existing function', async ({helper}) => {
94 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);100 const owner = await helper.eth.createAccountWithBalance(donor);
95 const {collectionIdAddress} = await createNonfungibleCollection(api, web3, owner);101 const collection = await helper.eth.createNonfungibleCollection(owner, 'EVMCODER', '', 'TEST');
96 const contract = await deployTestContract(web3, owner, collectionIdAddress, '0x1bfed5D614b886b9Ab2eA4CBAc22A96B7EC29c9c');102 const contract = await deployTestContract(helper.getWeb3(), owner, collection.collectionAddress, '0x1bfed5D614b886b9Ab2eA4CBAc22A96B7EC29c9c', helper.eth.DEFAULT_GAS);
97 const testContract = await deployTestContract(web3, owner, collectionIdAddress, contract.options.address);103 const testContract = await deployTestContract(helper.getWeb3(), owner, collection.collectionAddress, contract.options.address, helper.eth.DEFAULT_GAS);
98 {104 {
99 const result = await testContract.methods.test1().send();105 const result = await testContract.methods.test1().send();
100 expect(result.events.Result.returnValues).to.deep.equal({106 expect(result.events.Result.returnValues).to.deep.equal({
modifiedtests/src/fungible.test.tsdiffbeforeafterboth
15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
1616
17import {IKeyringPair} from '@polkadot/types/types';17import {IKeyringPair} from '@polkadot/types/types';
18import {U128_MAX} from './util/helpers';
19import {itSub, usingPlaygrounds, expect} from './util/playgrounds';18import {itSub, usingPlaygrounds, expect} from './util/playgrounds';
2019
21// todo:playgrounds get rid of globals
22let alice: IKeyringPair;20const U128_MAX = (1n << 128n) - 1n;
23let bob: IKeyringPair;
2421
25describe('integration test: Fungible functionality:', () => {22describe('integration test: Fungible functionality:', () => {
23 let alice: IKeyringPair;
24 let bob: IKeyringPair;
25
26 before(async () => {26 before(async () => {
27 await usingPlaygrounds(async (helper, privateKey) => {27 await usingPlaygrounds(async (helper, privateKey) => {
28 alice = privateKey('//Alice');28 const donor = privateKey('//Alice');
29 bob = privateKey('//Bob');29 [alice, bob] = await helper.arrange.createAccounts([100n, 10n], donor);
30 });30 });
31 });31 });
3232
82 expect(await collection.getBalance({Substrate: bob.address})).to.be.equal(60n);82 expect(await collection.getBalance({Substrate: bob.address})).to.be.equal(60n);
83 expect(await collection.getBalance(ethAcc)).to.be.equal(140n);83 expect(await collection.getBalance(ethAcc)).to.be.equal(140n);
8484
85 await expect(collection.transfer(alice, {Substrate: bob.address}, 350n)).to.eventually.be.rejected;85 await expect(collection.transfer(alice, {Substrate: bob.address}, 350n)).to.eventually.be.rejectedWith(/common\.TokenValueTooLow/);
86 });86 });
8787
88 itSub('Tokens multiple creation', async ({helper}) => {88 itSub('Tokens multiple creation', async ({helper}) => {
modifiedtests/src/inflation.test.tsdiffbeforeafterboth
14// You should have received a copy of the GNU General Public License14// You should have received a copy of the GNU General Public License
15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
1616
17import chai from 'chai';
18import chaiAsPromised from 'chai-as-promised';17import {IKeyringPair} from '@polkadot/types/types';
19import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';18import {expect, itSub, usingPlaygrounds} from './util/playgrounds';
2019
21chai.use(chaiAsPromised);20// todo:playgrounds requires sudo, look into on the later stage
22const expect = chai.expect;
23
24describe('integration test: Inflation', () => {21describe('integration test: Inflation', () => {
22 let superuser: IKeyringPair;
23
24 before(async () => {
25 await usingPlaygrounds(async (_, privateKey) => {
26 superuser = privateKey('//Alice');
27 });
28 });
29
25 it('First year inflation is 10%', async () => {30 itSub('First year inflation is 10%', async ({helper}) => {
26 await usingApi(async (api, privateKeyWrapper) => {
27
28 // Make sure non-sudo can't start inflation31 // Make sure non-sudo can't start inflation
29 const tx = api.tx.inflation.startInflation(1);32 const [bob] = await helper.arrange.createAccounts([10n], superuser);
33
30 const bob = privateKeyWrapper('//Bob');34 await expect(helper.executeExtrinsic(bob, 'api.tx.inflation.startInflation', [1])).to.be.rejectedWith(/BadOrigin/);
35
36 // Make sure superuser can't start inflation without explicit sudo
31 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;37 await expect(helper.executeExtrinsic(superuser, 'api.tx.inflation.startInflation', [1])).to.be.rejectedWith(/BadOrigin/);
3238
33 // Start inflation on relay block 1 (Alice is sudo)39 // Start inflation on relay block 1 (Alice is sudo)
34 const alice = privateKeyWrapper('//Alice');40 const tx = helper.constructApiCall('api.tx.inflation.startInflation', [1]);
35 const sudoTx = api.tx.sudo.sudo(tx as any);41 await expect(helper.executeExtrinsic(superuser, 'api.tx.sudo.sudo', [tx])).to.not.be.rejected;
36 await submitTransactionAsync(alice, sudoTx);
3742
38 const blockInterval = (api.consts.inflation.inflationBlockInterval).toBigInt();43 const blockInterval = (helper.api!.consts.inflation.inflationBlockInterval as any).toBigInt();
39 const totalIssuanceStart = (await api.query.inflation.startingYearTotalIssuance()).toBigInt();44 const totalIssuanceStart = ((await helper.api!.query.inflation.startingYearTotalIssuance()) as any).toBigInt();
40 const blockInflation = (await api.query.inflation.blockInflation()).toBigInt();45 const blockInflation = (await helper.api!.query.inflation.blockInflation() as any).toBigInt();
4146
42 const YEAR = 5259600n; // 6-second block. Blocks in one year47 const YEAR = 5259600n; // 6-second block. Blocks in one year
43 // const YEAR = 2629800n; // 12-second block. Blocks in one year48 // const YEAR = 2629800n; // 12-second block. Blocks in one year
49 const expectedInflation = totalExpectedInflation / totalActualInflation - 1n;54 const expectedInflation = totalExpectedInflation / totalActualInflation - 1n;
5055
51 expect(Math.abs(Number(expectedInflation))).to.be.lessThanOrEqual(tolerance);56 expect(Math.abs(Number(expectedInflation))).to.be.lessThanOrEqual(tolerance);
52 });
53 });57 });
54
55});58});
modifiedtests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth
9import type { Option, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';9import type { Option, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
10import type { Codec } from '@polkadot/types-codec/types';10import type { Codec } from '@polkadot/types-codec/types';
11import type { Perbill, Permill } from '@polkadot/types/interfaces/runtime';11import type { Perbill, Permill } from '@polkadot/types/interfaces/runtime';
12import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion } from '@polkadot/types/lookup';12import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion, XcmV1MultiLocation } from '@polkadot/types/lookup';
1313
14export type __AugmentedConst<ApiType extends ApiTypes> = AugmentedConst<ApiType>;14export type __AugmentedConst<ApiType extends ApiTypes> = AugmentedConst<ApiType>;
1515
24 * Decimals for the `Currency`.24 * Decimals for the `Currency`.
25 **/25 **/
26 nominal: u128 & AugmentedConst<ApiType>;26 nominal: u128 & AugmentedConst<ApiType>;
27 /**27 /**
28 * The app's pallet id, used for deriving its sovereign account ID.28 * The app's pallet id, used for deriving its sovereign account address.
29 **/29 **/
30 palletId: FrameSupportPalletId & AugmentedConst<ApiType>;30 palletId: FrameSupportPalletId & AugmentedConst<ApiType>;
31 /**31 /**
32 * In parachain blocks.32 * In parachain blocks.
155 **/155 **/
156 [key: string]: Codec;156 [key: string]: Codec;
157 };157 };
158 tokens: {
159 maxLocks: u32 & AugmentedConst<ApiType>;
160 /**
161 * The maximum number of named reserves that can exist on an account.
162 **/
163 maxReserves: u32 & AugmentedConst<ApiType>;
164 /**
165 * Generic const
166 **/
167 [key: string]: Codec;
168 };
158 transactionPayment: {169 transactionPayment: {
159 /**170 /**
160 * A fee mulitplier for `Operational` extrinsics to compute "virtual tip" to boost their171 * A fee mulitplier for `Operational` extrinsics to compute "virtual tip" to boost their
232 **/243 **/
233 [key: string]: Codec;244 [key: string]: Codec;
234 };245 };
246 xTokens: {
247 /**
248 * Base XCM weight.
249 *
250 * The actually weight for an XCM message is `T::BaseXcmWeight +
251 * T::Weigher::weight(&msg)`.
252 **/
253 baseXcmWeight: u64 & AugmentedConst<ApiType>;
254 /**
255 * Self chain location.
256 **/
257 selfLocation: XcmV1MultiLocation & AugmentedConst<ApiType>;
258 /**
259 * Generic const
260 **/
261 [key: string]: Codec;
262 };
235 } // AugmentedConsts263 } // AugmentedConsts
236} // declare module264} // declare module
237265
modifiedtests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth
302 * This method is only executable by contract owner302 * This method is only executable by contract owner
303 **/303 **/
304 NoPermission: AugmentedError<ApiType>;304 NoPermission: AugmentedError<ApiType>;
305 /**
306 * Number of methods that sponsored limit is defined for exceeds maximum.
307 **/
308 TooManyMethodsHaveSponsoredLimit: AugmentedError<ApiType>;
305 /**309 /**
306 * Generic error310 * Generic error
307 **/311 **/
321 **/325 **/
322 [key: string]: AugmentedError<ApiType>;326 [key: string]: AugmentedError<ApiType>;
323 };327 };
328 foreignAssets: {
329 /**
330 * AssetId exists
331 **/
332 AssetIdExisted: AugmentedError<ApiType>;
333 /**
334 * AssetId not exists
335 **/
336 AssetIdNotExists: AugmentedError<ApiType>;
337 /**
338 * The given location could not be used (e.g. because it cannot be expressed in the
339 * desired version of XCM).
340 **/
341 BadLocation: AugmentedError<ApiType>;
342 /**
343 * MultiLocation existed
344 **/
345 MultiLocationExisted: AugmentedError<ApiType>;
346 /**
347 * Generic error
348 **/
349 [key: string]: AugmentedError<ApiType>;
350 };
324 fungible: {351 fungible: {
325 /**352 /**
326 * Fungible token does not support nesting.353 * Fungible token does not support nesting.
697 **/724 **/
698 [key: string]: AugmentedError<ApiType>;725 [key: string]: AugmentedError<ApiType>;
699 };726 };
727 tokens: {
728 /**
729 * Cannot convert Amount into Balance type
730 **/
731 AmountIntoBalanceFailed: AugmentedError<ApiType>;
732 /**
733 * The balance is too low
734 **/
735 BalanceTooLow: AugmentedError<ApiType>;
736 /**
737 * Beneficiary account must pre-exist
738 **/
739 DeadAccount: AugmentedError<ApiType>;
740 /**
741 * Value too low to create account due to existential deposit
742 **/
743 ExistentialDeposit: AugmentedError<ApiType>;
744 /**
745 * Transfer/payment would kill account
746 **/
747 KeepAlive: AugmentedError<ApiType>;
748 /**
749 * Failed because liquidity restrictions due to locking
750 **/
751 LiquidityRestrictions: AugmentedError<ApiType>;
752 /**
753 * Failed because the maximum locks was exceeded
754 **/
755 MaxLocksExceeded: AugmentedError<ApiType>;
756 TooManyReserves: AugmentedError<ApiType>;
757 /**
758 * Generic error
759 **/
760 [key: string]: AugmentedError<ApiType>;
761 };
700 treasury: {762 treasury: {
701 /**763 /**
702 * The spend origin is valid but the amount it is allowed to spend is lower than the764 * The spend origin is valid but the amount it is allowed to spend is lower than the
802 **/864 **/
803 [key: string]: AugmentedError<ApiType>;865 [key: string]: AugmentedError<ApiType>;
804 };866 };
867 xTokens: {
868 /**
869 * Asset has no reserve location.
870 **/
871 AssetHasNoReserve: AugmentedError<ApiType>;
872 /**
873 * The specified index does not exist in a MultiAssets struct.
874 **/
875 AssetIndexNonExistent: AugmentedError<ApiType>;
876 /**
877 * The version of the `Versioned` value used is not able to be
878 * interpreted.
879 **/
880 BadVersion: AugmentedError<ApiType>;
881 /**
882 * Could not re-anchor the assets to declare the fees for the
883 * destination chain.
884 **/
885 CannotReanchor: AugmentedError<ApiType>;
886 /**
887 * The destination `MultiLocation` provided cannot be inverted.
888 **/
889 DestinationNotInvertible: AugmentedError<ApiType>;
890 /**
891 * We tried sending distinct asset and fee but they have different
892 * reserve chains.
893 **/
894 DistinctReserveForAssetAndFee: AugmentedError<ApiType>;
895 /**
896 * Fee is not enough.
897 **/
898 FeeNotEnough: AugmentedError<ApiType>;
899 /**
900 * Could not get ancestry of asset reserve location.
901 **/
902 InvalidAncestry: AugmentedError<ApiType>;
903 /**
904 * The MultiAsset is invalid.
905 **/
906 InvalidAsset: AugmentedError<ApiType>;
907 /**
908 * Invalid transfer destination.
909 **/
910 InvalidDest: AugmentedError<ApiType>;
911 /**
912 * MinXcmFee not registered for certain reserve location
913 **/
914 MinXcmFeeNotDefined: AugmentedError<ApiType>;
915 /**
916 * Not cross-chain transfer.
917 **/
918 NotCrossChainTransfer: AugmentedError<ApiType>;
919 /**
920 * Currency is not cross-chain transferable.
921 **/
922 NotCrossChainTransferableCurrency: AugmentedError<ApiType>;
923 /**
924 * Not supported MultiLocation
925 **/
926 NotSupportedMultiLocation: AugmentedError<ApiType>;
927 /**
928 * The number of assets to be sent is over the maximum.
929 **/
930 TooManyAssetsBeingSent: AugmentedError<ApiType>;
931 /**
932 * The message's weight could not be determined.
933 **/
934 UnweighableMessage: AugmentedError<ApiType>;
935 /**
936 * XCM execution failed.
937 **/
938 XcmExecutionFailed: AugmentedError<ApiType>;
939 /**
940 * The transfering asset amount is zero.
941 **/
942 ZeroAmount: AugmentedError<ApiType>;
943 /**
944 * The fee is zero.
945 **/
946 ZeroFee: AugmentedError<ApiType>;
947 /**
948 * Generic error
949 **/
950 [key: string]: AugmentedError<ApiType>;
951 };
805 } // AugmentedErrors952 } // AugmentedErrors
806} // declare module953} // declare module
807954
modifiedtests/src/interfaces/augment-api-events.tsdiffbeforeafterboth
9import type { Bytes, Null, Option, Result, U256, U8aFixed, bool, u128, u32, u64, u8 } from '@polkadot/types-codec';9import type { Bytes, Null, Option, Result, U256, U8aFixed, bool, u128, u32, u64, u8 } from '@polkadot/types-codec';
10import type { ITuple } from '@polkadot/types-codec/types';10import type { ITuple } from '@polkadot/types-codec/types';
11import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';11import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
12import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportScheduleLookupError, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, SpRuntimeDispatchError, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';12import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportScheduleLookupError, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, RmrkTraitsNftAccountIdOrCollectionNftTuple, SpRuntimeDispatchError, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetMultiAssets, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';
1313
14export type __AugmentedEvent<ApiType extends ApiTypes> = AugmentedEvent<ApiType>;14export type __AugmentedEvent<ApiType extends ApiTypes> = AugmentedEvent<ApiType>;
1515
16declare module '@polkadot/api-base/types/events' {16declare module '@polkadot/api-base/types/events' {
17 interface AugmentedEvents<ApiType extends ApiTypes> {17 interface AugmentedEvents<ApiType extends ApiTypes> {
18 appPromotion: {18 appPromotion: {
19 /**19 /**
20 * The admin was set20 * The admin was set
21 * 21 *
22 * # Arguments22 * # Arguments
23 * * AccountId: ID of the admin23 * * AccountId: account address of the admin
24 **/24 **/
25 SetAdmin: AugmentedEvent<ApiType, [AccountId32]>;25 SetAdmin: AugmentedEvent<ApiType, [AccountId32]>;
26 /**26 /**
27 * Staking was performed27 * Staking was performed
28 * 28 *
29 * # Arguments29 * # Arguments
30 * * AccountId: ID of the staker30 * * AccountId: account of the staker
31 * * Balance : staking amount31 * * Balance : staking amount
32 **/32 **/
33 Stake: AugmentedEvent<ApiType, [AccountId32, u128]>;33 Stake: AugmentedEvent<ApiType, [AccountId32, u128]>;
34 /**34 /**
35 * Staking recalculation was performed35 * Staking recalculation was performed
36 * 36 *
37 * # Arguments37 * # Arguments
38 * * AccountId: ID of the staker.38 * * AccountId: account of the staker.
39 * * Balance : recalculation base39 * * Balance : recalculation base
40 * * Balance : total income40 * * Balance : total income
41 **/41 **/
42 StakingRecalculation: AugmentedEvent<ApiType, [AccountId32, u128, u128]>;42 StakingRecalculation: AugmentedEvent<ApiType, [AccountId32, u128, u128]>;
43 /**43 /**
44 * Unstaking was performed44 * Unstaking was performed
45 * 45 *
46 * # Arguments46 * # Arguments
47 * * AccountId: ID of the staker47 * * AccountId: account of the staker
48 * * Balance : unstaking amount48 * * Balance : unstaking amount
49 **/49 **/
50 Unstake: AugmentedEvent<ApiType, [AccountId32, u128]>;50 Unstake: AugmentedEvent<ApiType, [AccountId32, u128]>;
51 /**51 /**
52 * Generic event52 * Generic event
264 **/264 **/
265 [key: string]: AugmentedEvent<ApiType>;265 [key: string]: AugmentedEvent<ApiType>;
266 };266 };
267 foreignAssets: {
268 /**
269 * The asset registered.
270 **/
271 AssetRegistered: AugmentedEvent<ApiType, [assetId: PalletForeignAssetsAssetIds, metadata: PalletForeignAssetsModuleAssetMetadata], { assetId: PalletForeignAssetsAssetIds, metadata: PalletForeignAssetsModuleAssetMetadata }>;
272 /**
273 * The asset updated.
274 **/
275 AssetUpdated: AugmentedEvent<ApiType, [assetId: PalletForeignAssetsAssetIds, metadata: PalletForeignAssetsModuleAssetMetadata], { assetId: PalletForeignAssetsAssetIds, metadata: PalletForeignAssetsModuleAssetMetadata }>;
276 /**
277 * The foreign asset registered.
278 **/
279 ForeignAssetRegistered: AugmentedEvent<ApiType, [assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeignAssetsModuleAssetMetadata], { assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeignAssetsModuleAssetMetadata }>;
280 /**
281 * The foreign asset updated.
282 **/
283 ForeignAssetUpdated: AugmentedEvent<ApiType, [assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeignAssetsModuleAssetMetadata], { assetId: u32, assetAddress: XcmV1MultiLocation, metadata: PalletForeignAssetsModuleAssetMetadata }>;
284 /**
285 * Generic event
286 **/
287 [key: string]: AugmentedEvent<ApiType>;
288 };
267 parachainSystem: {289 parachainSystem: {
268 /**290 /**
269 * Downward messages were processed using the given weight.291 * Downward messages were processed using the given weight.
525 **/547 **/
526 [key: string]: AugmentedEvent<ApiType>;548 [key: string]: AugmentedEvent<ApiType>;
527 };549 };
550 tokens: {
551 /**
552 * A balance was set by root.
553 **/
554 BalanceSet: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, free: u128, reserved: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, free: u128, reserved: u128 }>;
555 /**
556 * Deposited some balance into an account
557 **/
558 Deposited: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128 }>;
559 /**
560 * An account was removed whose balance was non-zero but below
561 * ExistentialDeposit, resulting in an outright loss.
562 **/
563 DustLost: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128 }>;
564 /**
565 * An account was created with some free balance.
566 **/
567 Endowed: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128 }>;
568 /**
569 * Some locked funds were unlocked
570 **/
571 LockRemoved: AugmentedEvent<ApiType, [lockId: U8aFixed, currencyId: PalletForeignAssetsAssetIds, who: AccountId32], { lockId: U8aFixed, currencyId: PalletForeignAssetsAssetIds, who: AccountId32 }>;
572 /**
573 * Some funds are locked
574 **/
575 LockSet: AugmentedEvent<ApiType, [lockId: U8aFixed, currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128], { lockId: U8aFixed, currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128 }>;
576 /**
577 * Some balance was reserved (moved from free to reserved).
578 **/
579 Reserved: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128 }>;
580 /**
581 * Some reserved balance was repatriated (moved from reserved to
582 * another account).
583 **/
584 ReserveRepatriated: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128, status: FrameSupportTokensMiscBalanceStatus], { currencyId: PalletForeignAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128, status: FrameSupportTokensMiscBalanceStatus }>;
585 /**
586 * Some balances were slashed (e.g. due to mis-behavior)
587 **/
588 Slashed: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, freeAmount: u128, reservedAmount: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, freeAmount: u128, reservedAmount: u128 }>;
589 /**
590 * The total issuance of an currency has been set
591 **/
592 TotalIssuanceSet: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, amount: u128], { currencyId: PalletForeignAssetsAssetIds, amount: u128 }>;
593 /**
594 * Transfer succeeded.
595 **/
596 Transfer: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128], { currencyId: PalletForeignAssetsAssetIds, from: AccountId32, to: AccountId32, amount: u128 }>;
597 /**
598 * Some balance was unreserved (moved from reserved to free).
599 **/
600 Unreserved: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128 }>;
601 /**
602 * Some balances were withdrawn (e.g. pay for transaction fee)
603 **/
604 Withdrawn: AugmentedEvent<ApiType, [currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128], { currencyId: PalletForeignAssetsAssetIds, who: AccountId32, amount: u128 }>;
605 /**
606 * Generic event
607 **/
608 [key: string]: AugmentedEvent<ApiType>;
609 };
528 transactionPayment: {610 transactionPayment: {
529 /**611 /**
530 * A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,612 * A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,
713 **/795 **/
714 [key: string]: AugmentedEvent<ApiType>;796 [key: string]: AugmentedEvent<ApiType>;
715 };797 };
798 xTokens: {
799 /**
800 * Transferred `MultiAsset` with fee.
801 **/
802 TransferredMultiAssets: AugmentedEvent<ApiType, [sender: AccountId32, assets: XcmV1MultiassetMultiAssets, fee: XcmV1MultiAsset, dest: XcmV1MultiLocation], { sender: AccountId32, assets: XcmV1MultiassetMultiAssets, fee: XcmV1MultiAsset, dest: XcmV1MultiLocation }>;
803 /**
804 * Generic event
805 **/
806 [key: string]: AugmentedEvent<ApiType>;
807 };
716 } // AugmentedEvents808 } // AugmentedEvents
717} // declare module809} // declare module
718810
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
9import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';9import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
10import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';10import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
11import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';11import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
12import 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, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild } from '@polkadot/types/lookup';12import 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, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, XcmV1MultiLocation } from '@polkadot/types/lookup';
13import type { Observable } from '@polkadot/types/types';13import type { Observable } from '@polkadot/types/types';
1414
15export type __AugmentedQuery<ApiType extends ApiTypes> = AugmentedQuery<ApiType, () => unknown>;15export type __AugmentedQuery<ApiType extends ApiTypes> = AugmentedQuery<ApiType, () => unknown>;
18declare module '@polkadot/api-base/types/storage' {18declare module '@polkadot/api-base/types/storage' {
19 interface AugmentedQueries<ApiType extends ApiTypes> {19 interface AugmentedQueries<ApiType extends ApiTypes> {
20 appPromotion: {20 appPromotion: {
21 /**
22 * Stores the `admin` account. Some extrinsics can only be executed if they were signed by `admin`.
23 **/
21 admin: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;24 admin: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;
22 /**25 /**
23 * Stores a key for record for which the next revenue recalculation would be performed.26 * Stores a key for record for which the next revenue recalculation would be performed.
24 * If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.27 * If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.
25 **/28 **/
26 nextCalculatedRecord: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[AccountId32, u32]>>>, []> & QueryableStorageEntry<ApiType, []>;29 nextCalculatedRecord: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[AccountId32, u32]>>>, []> & QueryableStorageEntry<ApiType, []>;
30 /**
31 * Stores amount of stakes for an `Account`.
32 *
33 * * **Key** - Staker account.
34 * * **Value** - Amount of stakes.
35 **/
27 pendingUnstake: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[AccountId32, u128]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;36 pendingUnstake: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[AccountId32, u128]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
28 /**37 /**
29 * Amount of tokens staked by account in the blocknumber.38 * Stores the amount of tokens staked by account in the blocknumber.
30 **/39 *
40 * * **Key1** - Staker account.
41 * * **Key2** - Relay block number when the stake was made.
42 * * **(Balance, BlockNumber)** - Balance of the stake.
43 * The number of the relay block in which we must perform the interest recalculation
44 **/
31 staked: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<ITuple<[u128, u32]>>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;45 staked: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<ITuple<[u128, u32]>>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;
32 /**46 /**
33 * Amount of stakes for an Account47 * Stores amount of stakes for an `Account`.
34 **/48 *
49 * * **Key** - Staker account.
50 * * **Value** - Amount of stakes.
51 **/
35 stakesPerAccount: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<u8>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;52 stakesPerAccount: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<u8>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
53 /**
54 * Stores the total staked amount.
55 **/
36 totalStaked: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;56 totalStaked: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
37 /**57 /**
38 * Generic query58 * Generic query
245 **/265 **/
246 owner: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<H160>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;266 owner: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<H160>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
247 selfSponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;267 selfSponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
248 /**
249 * Storage for last sponsored block.
250 *
251 * * **Key1** - contract address.
252 * * **Key2** - sponsored user address.
253 * * **Value** - last sponsored block number.
254 **/
255 sponsorBasket: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<Option<u32>>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;268 sponsorBasket: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<Option<u32>>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;
256 /**269 /**
257 * Store for contract sponsorship state.270 * Store for contract sponsorship state.
260 * * **Value** - sponsorship state.273 * * **Value** - sponsorship state.
261 **/274 **/
262 sponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<UpDataStructsSponsorshipStateBasicCrossAccountIdRepr>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;275 sponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<UpDataStructsSponsorshipStateBasicCrossAccountIdRepr>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
276 /**
277 * Storage for last sponsored block.
278 *
279 * * **Key1** - contract address.
280 * * **Key2** - sponsored user address.
281 * * **Value** - last sponsored block number.
282 **/
283 sponsoringFeeLimit: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<BTreeMap<u32, U256>>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
263 /**284 /**
264 * Store for sponsoring mode.285 * Store for sponsoring mode.
265 * 286 *
289 **/310 **/
290 [key: string]: QueryableStorageEntry<ApiType>;311 [key: string]: QueryableStorageEntry<ApiType>;
291 };312 };
313 foreignAssets: {
314 /**
315 * The storages for assets to fungible collection binding
316 *
317 **/
318 assetBinding: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
319 /**
320 * The storages for AssetMetadatas.
321 *
322 * AssetMetadatas: map AssetIds => Option<AssetMetadata>
323 **/
324 assetMetadatas: AugmentedQuery<ApiType, (arg: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Option<PalletForeignAssetsModuleAssetMetadata>>, [PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeignAssetsAssetIds]>;
325 /**
326 * The storages for MultiLocations.
327 *
328 * ForeignAssetLocations: map ForeignAssetId => Option<MultiLocation>
329 **/
330 foreignAssetLocations: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<XcmV1MultiLocation>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
331 /**
332 * The storages for CurrencyIds.
333 *
334 * LocationToCurrencyIds: map MultiLocation => Option<ForeignAssetId>
335 **/
336 locationToCurrencyIds: AugmentedQuery<ApiType, (arg: XcmV1MultiLocation | { parents?: any; interior?: any } | string | Uint8Array) => Observable<Option<u32>>, [XcmV1MultiLocation]> & QueryableStorageEntry<ApiType, [XcmV1MultiLocation]>;
337 /**
338 * Next available Foreign AssetId ID.
339 *
340 * NextForeignAssetId: ForeignAssetId
341 **/
342 nextForeignAssetId: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
343 /**
344 * Generic query
345 **/
346 [key: string]: QueryableStorageEntry<ApiType>;
347 };
292 fungible: {348 fungible: {
293 /**349 /**
294 * Storage for assets delegated to a limited extent to other users.350 * Storage for assets delegated to a limited extent to other users.
744 **/800 **/
745 [key: string]: QueryableStorageEntry<ApiType>;801 [key: string]: QueryableStorageEntry<ApiType>;
746 };802 };
803 tokens: {
804 /**
805 * The balance of a token type under an account.
806 *
807 * NOTE: If the total is ever zero, decrease account ref account.
808 *
809 * NOTE: This is only used in the case that this module is used to store
810 * balances.
811 **/
812 accounts: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<OrmlTokensAccountData>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;
813 /**
814 * Any liquidity locks of a token type under an account.
815 * NOTE: Should only be accessed when setting, changing and freeing a lock.
816 **/
817 locks: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensBalanceLock>>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;
818 /**
819 * Named reserves on some account balances.
820 **/
821 reserves: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<Vec<OrmlTokensReserveData>>, [AccountId32, PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [AccountId32, PalletForeignAssetsAssetIds]>;
822 /**
823 * The total issuance of a token type.
824 **/
825 totalIssuance: AugmentedQuery<ApiType, (arg: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array) => Observable<u128>, [PalletForeignAssetsAssetIds]> & QueryableStorageEntry<ApiType, [PalletForeignAssetsAssetIds]>;
826 /**
827 * Generic query
828 **/
829 [key: string]: QueryableStorageEntry<ApiType>;
830 };
747 transactionPayment: {831 transactionPayment: {
748 nextFeeMultiplier: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;832 nextFeeMultiplier: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
749 storageVersion: AugmentedQuery<ApiType, () => Observable<PalletTransactionPaymentReleases>, []> & QueryableStorageEntry<ApiType, []>;833 storageVersion: AugmentedQuery<ApiType, () => Observable<PalletTransactionPaymentReleases>, []> & QueryableStorageEntry<ApiType, []>;
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
9import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';9import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
10import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';10import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';
11import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';11import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
12import 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';12import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, 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';
1313
14export type __AugmentedSubmittable = AugmentedSubmittable<() => unknown>;14export type __AugmentedSubmittable = AugmentedSubmittable<() => unknown>;
15export type __SubmittableExtrinsic<ApiType extends ApiTypes> = SubmittableExtrinsic<ApiType>;15export type __SubmittableExtrinsic<ApiType extends ApiTypes> = SubmittableExtrinsic<ApiType>;
18declare module '@polkadot/api-base/types/submittable' {18declare module '@polkadot/api-base/types/submittable' {
19 interface AugmentedSubmittables<ApiType extends ApiTypes> {19 interface AugmentedSubmittables<ApiType extends ApiTypes> {
20 appPromotion: {20 appPromotion: {
21 /**
22 * Recalculates interest for the specified number of stakers.
23 * If all stakers are not recalculated, the next call of the extrinsic
24 * will continue the recalculation, from those stakers for whom this
25 * was not perform in last call.
26 *
27 * # Permissions
28 *
29 * * Pallet admin
30 *
31 * # Arguments
32 *
33 * * `stakers_number`: the number of stakers for which recalculation will be performed
34 **/
21 payoutStakers: AugmentedSubmittable<(stakersNumber: Option<u8> | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u8>]>;35 payoutStakers: AugmentedSubmittable<(stakersNumber: Option<u8> | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u8>]>;
36 /**
37 * Sets an address as the the admin.
38 *
39 * # Permissions
40 *
41 * * Sudo
42 *
43 * # Arguments
44 *
45 * * `admin`: account of the new admin.
46 **/
22 setAdminAddress: AugmentedSubmittable<(admin: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr]>;47 setAdminAddress: AugmentedSubmittable<(admin: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr]>;
48 /**
49 * Sets the pallet to be the sponsor for the collection.
50 *
51 * # Permissions
52 *
53 * * Pallet admin
54 *
55 * # Arguments
56 *
57 * * `collection_id`: ID of the collection that will be sponsored by `pallet_id`
58 **/
23 sponsorCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;59 sponsorCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
60 /**
61 * Sets the pallet to be the sponsor for the contract.
62 *
63 * # Permissions
64 *
65 * * Pallet admin
66 *
67 * # Arguments
68 *
69 * * `contract_id`: the contract address that will be sponsored by `pallet_id`
70 **/
24 sponsorContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;71 sponsorContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
72 /**
73 * Stakes the amount of native tokens.
74 * Sets `amount` to the locked state.
75 * The maximum number of stakes for a staker is 10.
76 *
77 * # Arguments
78 *
79 * * `amount`: in native tokens.
80 **/
25 stake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u128]>;81 stake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u128]>;
82 /**
83 * Removes the pallet as the sponsor for the collection.
84 * Returns [`NoPermission`][`Error::NoPermission`]
85 * if the pallet wasn't the sponsor.
86 *
87 * # Permissions
88 *
89 * * Pallet admin
90 *
91 * # Arguments
92 *
93 * * `collection_id`: ID of the collection that is sponsored by `pallet_id`
94 **/
26 stopSponsoringCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;95 stopSponsoringCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
96 /**
97 * Removes the pallet as the sponsor for the contract.
98 * Returns [`NoPermission`][`Error::NoPermission`]
99 * if the pallet wasn't the sponsor.
100 *
101 * # Permissions
102 *
103 * * Pallet admin
104 *
105 * # Arguments
106 *
107 * * `contract_id`: the contract address that is sponsored by `pallet_id`
108 **/
27 stopSponsoringContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;109 stopSponsoringContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
110 /**
111 * Unstakes all stakes.
112 * Moves the sum of all stakes to the `reserved` state.
113 * After the end of `PendingInterval` this sum becomes completely
114 * free for further use.
115 **/
28 unstake: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>, []>;116 unstake: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>, []>;
29 /**117 /**
30 * Generic tx118 * Generic tx
216 **/304 **/
217 [key: string]: SubmittableExtrinsicFunction<ApiType>;305 [key: string]: SubmittableExtrinsicFunction<ApiType>;
218 };306 };
307 foreignAssets: {
308 registerForeignAsset: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, location: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, metadata: PalletForeignAssetsModuleAssetMetadata | { name?: any; symbol?: any; decimals?: any; minimalBalance?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, XcmVersionedMultiLocation, PalletForeignAssetsModuleAssetMetadata]>;
309 updateForeignAsset: AugmentedSubmittable<(foreignAssetId: u32 | AnyNumber | Uint8Array, location: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, metadata: PalletForeignAssetsModuleAssetMetadata | { name?: any; symbol?: any; decimals?: any; minimalBalance?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, XcmVersionedMultiLocation, PalletForeignAssetsModuleAssetMetadata]>;
310 /**
311 * Generic tx
312 **/
313 [key: string]: SubmittableExtrinsicFunction<ApiType>;
314 };
219 inflation: {315 inflation: {
220 /**316 /**
221 * This method sets the inflation start date. Can be only called once.317 * This method sets the inflation start date. Can be only called once.
905 **/1001 **/
906 [key: string]: SubmittableExtrinsicFunction<ApiType>;1002 [key: string]: SubmittableExtrinsicFunction<ApiType>;
907 };1003 };
1004 tokens: {
1005 /**
1006 * Exactly as `transfer`, except the origin must be root and the source
1007 * account may be specified.
1008 *
1009 * The dispatch origin for this call must be _Root_.
1010 *
1011 * - `source`: The sender of the transfer.
1012 * - `dest`: The recipient of the transfer.
1013 * - `currency_id`: currency type.
1014 * - `amount`: free balance amount to tranfer.
1015 **/
1016 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: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, MultiAddress, PalletForeignAssetsAssetIds, Compact<u128>]>;
1017 /**
1018 * Set the balances of a given account.
1019 *
1020 * This will alter `FreeBalance` and `ReservedBalance` in storage. it
1021 * will also decrease the total issuance of the system
1022 * (`TotalIssuance`). If the new free or reserved balance is below the
1023 * existential deposit, it will reap the `AccountInfo`.
1024 *
1025 * The dispatch origin for this call is `root`.
1026 **/
1027 setBalance: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, newFree: Compact<u128> | AnyNumber | Uint8Array, newReserved: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeignAssetsAssetIds, Compact<u128>, Compact<u128>]>;
1028 /**
1029 * Transfer some liquid free balance to another account.
1030 *
1031 * `transfer` will set the `FreeBalance` of the sender and receiver.
1032 * It will decrease the total issuance of the system by the
1033 * `TransferFee`. If the sender's account is below the existential
1034 * deposit as a result of the transfer, the account will be reaped.
1035 *
1036 * The dispatch origin for this call must be `Signed` by the
1037 * transactor.
1038 *
1039 * - `dest`: The recipient of the transfer.
1040 * - `currency_id`: currency type.
1041 * - `amount`: free balance amount to tranfer.
1042 **/
1043 transfer: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeignAssetsAssetIds, Compact<u128>]>;
1044 /**
1045 * Transfer all remaining balance to the given account.
1046 *
1047 * NOTE: This function only attempts to transfer _transferable_
1048 * balances. This means that any locked, reserved, or existential
1049 * deposits (when `keep_alive` is `true`), will not be transferred by
1050 * this function. To ensure that this function results in a killed
1051 * account, you might need to prepare the account by removing any
1052 * reference counters, storage deposits, etc...
1053 *
1054 * The dispatch origin for this call must be `Signed` by the
1055 * transactor.
1056 *
1057 * - `dest`: The recipient of the transfer.
1058 * - `currency_id`: currency type.
1059 * - `keep_alive`: A boolean to determine if the `transfer_all`
1060 * operation should send all of the funds the account has, causing
1061 * the sender account to be killed (false), or transfer everything
1062 * except at least the existential deposit, which will guarantee to
1063 * keep the sender account alive (true).
1064 **/
1065 transferAll: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, keepAlive: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeignAssetsAssetIds, bool]>;
1066 /**
1067 * Same as the [`transfer`] call, but with a check that the transfer
1068 * will not kill the origin account.
1069 *
1070 * 99% of the time you want [`transfer`] instead.
1071 *
1072 * The dispatch origin for this call must be `Signed` by the
1073 * transactor.
1074 *
1075 * - `dest`: The recipient of the transfer.
1076 * - `currency_id`: currency type.
1077 * - `amount`: free balance amount to tranfer.
1078 **/
1079 transferKeepAlive: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, currencyId: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletForeignAssetsAssetIds, Compact<u128>]>;
1080 /**
1081 * Generic tx
1082 **/
1083 [key: string]: SubmittableExtrinsicFunction<ApiType>;
1084 };
908 treasury: {1085 treasury: {
909 /**1086 /**
910 * Approve a proposal. At a later time, the proposal will be allocated to the beneficiary1087 * Approve a proposal. At a later time, the proposal will be allocated to the beneficiary
1565 **/1742 **/
1566 [key: string]: SubmittableExtrinsicFunction<ApiType>;1743 [key: string]: SubmittableExtrinsicFunction<ApiType>;
1567 };1744 };
1745 xTokens: {
1746 /**
1747 * Transfer native currencies.
1748 *
1749 * `dest_weight` is the weight for XCM execution on the dest chain, and
1750 * it would be charged from the transferred assets. If set below
1751 * requirements, the execution may fail and assets wouldn't be
1752 * received.
1753 *
1754 * It's a no-op if any error on local XCM execution or message sending.
1755 * Note sending assets out per se doesn't guarantee they would be
1756 * received. Receiving depends on if the XCM message could be delivered
1757 * by the network, and if the receiving chain would handle
1758 * messages correctly.
1759 **/
1760 transfer: AugmentedSubmittable<(currencyId: PalletForeignAssetsAssetIds | { ForeignAssetId: any } | { NativeAssetId: any } | string | Uint8Array, amount: u128 | AnyNumber | Uint8Array, dest: XcmVersionedMultiLocation | { V0: any } | { V1: any } | string | Uint8Array, destWeight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletForeignAssetsAssetIds, u128, XcmVersionedMultiLocation, u64]>;
1761 /**
1762 * Transfer `MultiAsset`.
1763 *
1764 * `dest_weight` is the weight for XCM execution on the dest chain, and
1765 * it would be charged from the transferred assets. If set below
1766 * requirements, the execution may fail and assets wouldn't be
1767 * received.
1768 *
1769 * It's a no-op if any error on local XCM execution or message sending.
1770 * Note sending assets out per se doesn't guarantee they would be
1771 * received. Receiving depends on if the XCM message could be delivered
1772 * by the network, and if the receiving chain would handle
1773 * messages correctly.
1774 **/
1775 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]>;
1776 /**
1777 * Transfer several `MultiAsset` specifying the item to be used as fee
1778 *
1779 * `dest_weight` is the weight for XCM execution on the dest chain, and
1780 * it would be charged from the transferred assets. If set below
1781 * requirements, the execution may fail and assets wouldn't be
1782 * received.
1783 *
1784 * `fee_item` is index of the MultiAssets that we want to use for
1785 * payment
1786 *
1787 * It's a no-op if any error on local XCM execution or message sending.
1788 * Note sending assets out per se doesn't guarantee they would be
1789 * received. Receiving depends on if the XCM message could be delivered
1790 * by the network, and if the receiving chain would handle
1791 * messages correctly.
1792 **/
1793 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]>;
1794 /**
1795 * Transfer `MultiAsset` specifying the fee and amount as separate.
1796 *
1797 * `dest_weight` is the weight for XCM execution on the dest chain, and
1798 * it would be charged from the transferred assets. If set below
1799 * requirements, the execution may fail and assets wouldn't be
1800 * received.
1801 *
1802 * `fee` is the multiasset to be spent to pay for execution in
1803 * destination chain. Both fee and amount will be subtracted form the
1804 * callers balance For now we only accept fee and asset having the same
1805 * `MultiLocation` id.
1806 *
1807 * If `fee` is not high enough to cover for the execution costs in the
1808 * destination chain, then the assets will be trapped in the
1809 * destination chain
1810 *
1811 * It's a no-op if any error on local XCM execution or message sending.
1812 * Note sending assets out per se doesn't guarantee they would be
1813 * received. Receiving depends on if the XCM message could be delivered
1814 * by the network, and if the receiving chain would handle
1815 * messages correctly.
1816 **/
1817 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]>;
1818 /**
1819 * Transfer several currencies specifying the item to be used as fee
1820 *
1821 * `dest_weight` is the weight for XCM execution on the dest chain, and
1822 * it would be charged from the transferred assets. If set below
1823 * requirements, the execution may fail and assets wouldn't be
1824 * received.
1825 *
1826 * `fee_item` is index of the currencies tuple that we want to use for
1827 * payment
1828 *
1829 * It's a no-op if any error on local XCM execution or message sending.
1830 * Note sending assets out per se doesn't guarantee they would be
1831 * received. Receiving depends on if the XCM message could be delivered
1832 * by the network, and if the receiving chain would handle
1833 * messages correctly.
1834 **/
1835 transferMulticurrencies: AugmentedSubmittable<(currencies: Vec<ITuple<[PalletForeignAssetsAssetIds, u128]>> | ([PalletForeignAssetsAssetIds | { 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<[PalletForeignAssetsAssetIds, u128]>>, u32, XcmVersionedMultiLocation, u64]>;
1836 /**
1837 * Transfer native currencies specifying the fee and amount as
1838 * separate.
1839 *
1840 * `dest_weight` is the weight for XCM execution on the dest chain, and
1841 * it would be charged from the transferred assets. If set below
1842 * requirements, the execution may fail and assets wouldn't be
1843 * received.
1844 *
1845 * `fee` is the amount to be spent to pay for execution in destination
1846 * chain. Both fee and amount will be subtracted form the callers
1847 * balance.
1848 *
1849 * If `fee` is not high enough to cover for the execution costs in the
1850 * destination chain, then the assets will be trapped in the
1851 * destination chain
1852 *
1853 * It's a no-op if any error on local XCM execution or message sending.
1854 * Note sending assets out per se doesn't guarantee they would be
1855 * received. Receiving depends on if the XCM message could be delivered
1856 * by the network, and if the receiving chain would handle
1857 * messages correctly.
1858 **/
1859 transferWithFee: AugmentedSubmittable<(currencyId: PalletForeignAssetsAssetIds | { 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>, [PalletForeignAssetsAssetIds, u128, u128, XcmVersionedMultiLocation, u64]>;
1860 /**
1861 * Generic tx
1862 **/
1863 [key: string]: SubmittableExtrinsicFunction<ApiType>;
1864 };
1568 } // AugmentedSubmittables1865 } // AugmentedSubmittables
1569} // declare module1866} // declare module
15701867
modifiedtests/src/interfaces/augment-types.tsdiffbeforeafterboth
5// this is required to allow for ambient/previous definitions5// this is required to allow for ambient/previous definitions
6import '@polkadot/types/types/registry';6import '@polkadot/types/types/registry';
77
8import 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, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, 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, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, 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';8import 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, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletForeignAssetsModuleCall, PalletForeignAssetsModuleError, PalletForeignAssetsModuleEvent, PalletForeignAssetsNativeCurrency, 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, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, 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';
9import type { Data, StorageKey } from '@polkadot/types';9import type { Data, StorageKey } from '@polkadot/types';
10import 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';10import 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';
11import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';11import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
790 OriginKindV0: OriginKindV0;790 OriginKindV0: OriginKindV0;
791 OriginKindV1: OriginKindV1;791 OriginKindV1: OriginKindV1;
792 OriginKindV2: OriginKindV2;792 OriginKindV2: OriginKindV2;
793 OrmlTokensAccountData: OrmlTokensAccountData;
794 OrmlTokensBalanceLock: OrmlTokensBalanceLock;
795 OrmlTokensModuleCall: OrmlTokensModuleCall;
796 OrmlTokensModuleError: OrmlTokensModuleError;
797 OrmlTokensModuleEvent: OrmlTokensModuleEvent;
798 OrmlTokensReserveData: OrmlTokensReserveData;
793 OrmlVestingModuleCall: OrmlVestingModuleCall;799 OrmlVestingModuleCall: OrmlVestingModuleCall;
794 OrmlVestingModuleError: OrmlVestingModuleError;800 OrmlVestingModuleError: OrmlVestingModuleError;
795 OrmlVestingModuleEvent: OrmlVestingModuleEvent;801 OrmlVestingModuleEvent: OrmlVestingModuleEvent;
796 OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;802 OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;
803 OrmlXtokensModuleCall: OrmlXtokensModuleCall;
804 OrmlXtokensModuleError: OrmlXtokensModuleError;
805 OrmlXtokensModuleEvent: OrmlXtokensModuleEvent;
797 OutboundHrmpMessage: OutboundHrmpMessage;806 OutboundHrmpMessage: OutboundHrmpMessage;
798 OutboundLaneData: OutboundLaneData;807 OutboundLaneData: OutboundLaneData;
799 OutboundMessageFee: OutboundMessageFee;808 OutboundMessageFee: OutboundMessageFee;
841 PalletEvmEvent: PalletEvmEvent;850 PalletEvmEvent: PalletEvmEvent;
842 PalletEvmMigrationCall: PalletEvmMigrationCall;851 PalletEvmMigrationCall: PalletEvmMigrationCall;
843 PalletEvmMigrationError: PalletEvmMigrationError;852 PalletEvmMigrationError: PalletEvmMigrationError;
853 PalletForeignAssetsAssetIds: PalletForeignAssetsAssetIds;
854 PalletForeignAssetsModuleAssetMetadata: PalletForeignAssetsModuleAssetMetadata;
855 PalletForeignAssetsModuleCall: PalletForeignAssetsModuleCall;
856 PalletForeignAssetsModuleError: PalletForeignAssetsModuleError;
857 PalletForeignAssetsModuleEvent: PalletForeignAssetsModuleEvent;
858 PalletForeignAssetsNativeCurrency: PalletForeignAssetsNativeCurrency;
844 PalletFungibleError: PalletFungibleError;859 PalletFungibleError: PalletFungibleError;
845 PalletId: PalletId;860 PalletId: PalletId;
846 PalletInflationCall: PalletInflationCall;861 PalletInflationCall: PalletInflationCall;
1422 XcmV2WeightLimit: XcmV2WeightLimit;1437 XcmV2WeightLimit: XcmV2WeightLimit;
1423 XcmV2Xcm: XcmV2Xcm;1438 XcmV2Xcm: XcmV2Xcm;
1424 XcmVersion: XcmVersion;1439 XcmVersion: XcmVersion;
1440 XcmVersionedMultiAsset: XcmVersionedMultiAsset;
1425 XcmVersionedMultiAssets: XcmVersionedMultiAssets;1441 XcmVersionedMultiAssets: XcmVersionedMultiAssets;
1426 XcmVersionedMultiLocation: XcmVersionedMultiLocation;1442 XcmVersionedMultiLocation: XcmVersionedMultiLocation;
1427 XcmVersionedXcm: XcmVersionedXcm;1443 XcmVersionedXcm: XcmVersionedXcm;
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
747/** @name OpalRuntimeRuntime */747/** @name OpalRuntimeRuntime */
748export interface OpalRuntimeRuntime extends Null {}748export interface OpalRuntimeRuntime extends Null {}
749
750/** @name OrmlTokensAccountData */
751export interface OrmlTokensAccountData extends Struct {
752 readonly free: u128;
753 readonly reserved: u128;
754 readonly frozen: u128;
755}
756
757/** @name OrmlTokensBalanceLock */
758export interface OrmlTokensBalanceLock extends Struct {
759 readonly id: U8aFixed;
760 readonly amount: u128;
761}
762
763/** @name OrmlTokensModuleCall */
764export interface OrmlTokensModuleCall extends Enum {
765 readonly isTransfer: boolean;
766 readonly asTransfer: {
767 readonly dest: MultiAddress;
768 readonly currencyId: PalletForeignAssetsAssetIds;
769 readonly amount: Compact<u128>;
770 } & Struct;
771 readonly isTransferAll: boolean;
772 readonly asTransferAll: {
773 readonly dest: MultiAddress;
774 readonly currencyId: PalletForeignAssetsAssetIds;
775 readonly keepAlive: bool;
776 } & Struct;
777 readonly isTransferKeepAlive: boolean;
778 readonly asTransferKeepAlive: {
779 readonly dest: MultiAddress;
780 readonly currencyId: PalletForeignAssetsAssetIds;
781 readonly amount: Compact<u128>;
782 } & Struct;
783 readonly isForceTransfer: boolean;
784 readonly asForceTransfer: {
785 readonly source: MultiAddress;
786 readonly dest: MultiAddress;
787 readonly currencyId: PalletForeignAssetsAssetIds;
788 readonly amount: Compact<u128>;
789 } & Struct;
790 readonly isSetBalance: boolean;
791 readonly asSetBalance: {
792 readonly who: MultiAddress;
793 readonly currencyId: PalletForeignAssetsAssetIds;
794 readonly newFree: Compact<u128>;
795 readonly newReserved: Compact<u128>;
796 } & Struct;
797 readonly type: 'Transfer' | 'TransferAll' | 'TransferKeepAlive' | 'ForceTransfer' | 'SetBalance';
798}
799
800/** @name OrmlTokensModuleError */
801export interface OrmlTokensModuleError extends Enum {
802 readonly isBalanceTooLow: boolean;
803 readonly isAmountIntoBalanceFailed: boolean;
804 readonly isLiquidityRestrictions: boolean;
805 readonly isMaxLocksExceeded: boolean;
806 readonly isKeepAlive: boolean;
807 readonly isExistentialDeposit: boolean;
808 readonly isDeadAccount: boolean;
809 readonly isTooManyReserves: boolean;
810 readonly type: 'BalanceTooLow' | 'AmountIntoBalanceFailed' | 'LiquidityRestrictions' | 'MaxLocksExceeded' | 'KeepAlive' | 'ExistentialDeposit' | 'DeadAccount' | 'TooManyReserves';
811}
812
813/** @name OrmlTokensModuleEvent */
814export interface OrmlTokensModuleEvent extends Enum {
815 readonly isEndowed: boolean;
816 readonly asEndowed: {
817 readonly currencyId: PalletForeignAssetsAssetIds;
818 readonly who: AccountId32;
819 readonly amount: u128;
820 } & Struct;
821 readonly isDustLost: boolean;
822 readonly asDustLost: {
823 readonly currencyId: PalletForeignAssetsAssetIds;
824 readonly who: AccountId32;
825 readonly amount: u128;
826 } & Struct;
827 readonly isTransfer: boolean;
828 readonly asTransfer: {
829 readonly currencyId: PalletForeignAssetsAssetIds;
830 readonly from: AccountId32;
831 readonly to: AccountId32;
832 readonly amount: u128;
833 } & Struct;
834 readonly isReserved: boolean;
835 readonly asReserved: {
836 readonly currencyId: PalletForeignAssetsAssetIds;
837 readonly who: AccountId32;
838 readonly amount: u128;
839 } & Struct;
840 readonly isUnreserved: boolean;
841 readonly asUnreserved: {
842 readonly currencyId: PalletForeignAssetsAssetIds;
843 readonly who: AccountId32;
844 readonly amount: u128;
845 } & Struct;
846 readonly isReserveRepatriated: boolean;
847 readonly asReserveRepatriated: {
848 readonly currencyId: PalletForeignAssetsAssetIds;
849 readonly from: AccountId32;
850 readonly to: AccountId32;
851 readonly amount: u128;
852 readonly status: FrameSupportTokensMiscBalanceStatus;
853 } & Struct;
854 readonly isBalanceSet: boolean;
855 readonly asBalanceSet: {
856 readonly currencyId: PalletForeignAssetsAssetIds;
857 readonly who: AccountId32;
858 readonly free: u128;
859 readonly reserved: u128;
860 } & Struct;
861 readonly isTotalIssuanceSet: boolean;
862 readonly asTotalIssuanceSet: {
863 readonly currencyId: PalletForeignAssetsAssetIds;
864 readonly amount: u128;
865 } & Struct;
866 readonly isWithdrawn: boolean;
867 readonly asWithdrawn: {
868 readonly currencyId: PalletForeignAssetsAssetIds;
869 readonly who: AccountId32;
870 readonly amount: u128;
871 } & Struct;
872 readonly isSlashed: boolean;
873 readonly asSlashed: {
874 readonly currencyId: PalletForeignAssetsAssetIds;
875 readonly who: AccountId32;
876 readonly freeAmount: u128;
877 readonly reservedAmount: u128;
878 } & Struct;
879 readonly isDeposited: boolean;
880 readonly asDeposited: {
881 readonly currencyId: PalletForeignAssetsAssetIds;
882 readonly who: AccountId32;
883 readonly amount: u128;
884 } & Struct;
885 readonly isLockSet: boolean;
886 readonly asLockSet: {
887 readonly lockId: U8aFixed;
888 readonly currencyId: PalletForeignAssetsAssetIds;
889 readonly who: AccountId32;
890 readonly amount: u128;
891 } & Struct;
892 readonly isLockRemoved: boolean;
893 readonly asLockRemoved: {
894 readonly lockId: U8aFixed;
895 readonly currencyId: PalletForeignAssetsAssetIds;
896 readonly who: AccountId32;
897 } & Struct;
898 readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'BalanceSet' | 'TotalIssuanceSet' | 'Withdrawn' | 'Slashed' | 'Deposited' | 'LockSet' | 'LockRemoved';
899}
900
901/** @name OrmlTokensReserveData */
902export interface OrmlTokensReserveData extends Struct {
903 readonly id: Null;
904 readonly amount: u128;
905}
749906
750/** @name OrmlVestingModuleCall */907/** @name OrmlVestingModuleCall */
751export interface OrmlVestingModuleCall extends Enum {908export interface OrmlVestingModuleCall extends Enum {
806 readonly perPeriod: Compact<u128>;963 readonly perPeriod: Compact<u128>;
807}964}
965
966/** @name OrmlXtokensModuleCall */
967export interface OrmlXtokensModuleCall extends Enum {
968 readonly isTransfer: boolean;
969 readonly asTransfer: {
970 readonly currencyId: PalletForeignAssetsAssetIds;
971 readonly amount: u128;
972 readonly dest: XcmVersionedMultiLocation;
973 readonly destWeight: u64;
974 } & Struct;
975 readonly isTransferMultiasset: boolean;
976 readonly asTransferMultiasset: {
977 readonly asset: XcmVersionedMultiAsset;
978 readonly dest: XcmVersionedMultiLocation;
979 readonly destWeight: u64;
980 } & Struct;
981 readonly isTransferWithFee: boolean;
982 readonly asTransferWithFee: {
983 readonly currencyId: PalletForeignAssetsAssetIds;
984 readonly amount: u128;
985 readonly fee: u128;
986 readonly dest: XcmVersionedMultiLocation;
987 readonly destWeight: u64;
988 } & Struct;
989 readonly isTransferMultiassetWithFee: boolean;
990 readonly asTransferMultiassetWithFee: {
991 readonly asset: XcmVersionedMultiAsset;
992 readonly fee: XcmVersionedMultiAsset;
993 readonly dest: XcmVersionedMultiLocation;
994 readonly destWeight: u64;
995 } & Struct;
996 readonly isTransferMulticurrencies: boolean;
997 readonly asTransferMulticurrencies: {
998 readonly currencies: Vec<ITuple<[PalletForeignAssetsAssetIds, u128]>>;
999 readonly feeItem: u32;
1000 readonly dest: XcmVersionedMultiLocation;
1001 readonly destWeight: u64;
1002 } & Struct;
1003 readonly isTransferMultiassets: boolean;
1004 readonly asTransferMultiassets: {
1005 readonly assets: XcmVersionedMultiAssets;
1006 readonly feeItem: u32;
1007 readonly dest: XcmVersionedMultiLocation;
1008 readonly destWeight: u64;
1009 } & Struct;
1010 readonly type: 'Transfer' | 'TransferMultiasset' | 'TransferWithFee' | 'TransferMultiassetWithFee' | 'TransferMulticurrencies' | 'TransferMultiassets';
1011}
1012
1013/** @name OrmlXtokensModuleError */
1014export interface OrmlXtokensModuleError extends Enum {
1015 readonly isAssetHasNoReserve: boolean;
1016 readonly isNotCrossChainTransfer: boolean;
1017 readonly isInvalidDest: boolean;
1018 readonly isNotCrossChainTransferableCurrency: boolean;
1019 readonly isUnweighableMessage: boolean;
1020 readonly isXcmExecutionFailed: boolean;
1021 readonly isCannotReanchor: boolean;
1022 readonly isInvalidAncestry: boolean;
1023 readonly isInvalidAsset: boolean;
1024 readonly isDestinationNotInvertible: boolean;
1025 readonly isBadVersion: boolean;
1026 readonly isDistinctReserveForAssetAndFee: boolean;
1027 readonly isZeroFee: boolean;
1028 readonly isZeroAmount: boolean;
1029 readonly isTooManyAssetsBeingSent: boolean;
1030 readonly isAssetIndexNonExistent: boolean;
1031 readonly isFeeNotEnough: boolean;
1032 readonly isNotSupportedMultiLocation: boolean;
1033 readonly isMinXcmFeeNotDefined: boolean;
1034 readonly type: 'AssetHasNoReserve' | 'NotCrossChainTransfer' | 'InvalidDest' | 'NotCrossChainTransferableCurrency' | 'UnweighableMessage' | 'XcmExecutionFailed' | 'CannotReanchor' | 'InvalidAncestry' | 'InvalidAsset' | 'DestinationNotInvertible' | 'BadVersion' | 'DistinctReserveForAssetAndFee' | 'ZeroFee' | 'ZeroAmount' | 'TooManyAssetsBeingSent' | 'AssetIndexNonExistent' | 'FeeNotEnough' | 'NotSupportedMultiLocation' | 'MinXcmFeeNotDefined';
1035}
1036
1037/** @name OrmlXtokensModuleEvent */
1038export interface OrmlXtokensModuleEvent extends Enum {
1039 readonly isTransferredMultiAssets: boolean;
1040 readonly asTransferredMultiAssets: {
1041 readonly sender: AccountId32;
1042 readonly assets: XcmV1MultiassetMultiAssets;
1043 readonly fee: XcmV1MultiAsset;
1044 readonly dest: XcmV1MultiLocation;
1045 } & Struct;
1046 readonly type: 'TransferredMultiAssets';
1047}
8081048
809/** @name PalletAppPromotionCall */1049/** @name PalletAppPromotionCall */
810export interface PalletAppPromotionCall extends Enum {1050export interface PalletAppPromotionCall extends Enum {
1186export interface PalletEvmContractHelpersError extends Enum {1426export interface PalletEvmContractHelpersError extends Enum {
1187 readonly isNoPermission: boolean;1427 readonly isNoPermission: boolean;
1188 readonly isNoPendingSponsor: boolean;1428 readonly isNoPendingSponsor: boolean;
1429 readonly isTooManyMethodsHaveSponsoredLimit: boolean;
1189 readonly type: 'NoPermission' | 'NoPendingSponsor';1430 readonly type: 'NoPermission' | 'NoPendingSponsor' | 'TooManyMethodsHaveSponsoredLimit';
1190}1431}
11911432
1192/** @name PalletEvmContractHelpersEvent */1433/** @name PalletEvmContractHelpersEvent */
1264 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';1505 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
1265}1506}
1507
1508/** @name PalletForeignAssetsAssetIds */
1509export interface PalletForeignAssetsAssetIds extends Enum {
1510 readonly isForeignAssetId: boolean;
1511 readonly asForeignAssetId: u32;
1512 readonly isNativeAssetId: boolean;
1513 readonly asNativeAssetId: PalletForeignAssetsNativeCurrency;
1514 readonly type: 'ForeignAssetId' | 'NativeAssetId';
1515}
1516
1517/** @name PalletForeignAssetsModuleAssetMetadata */
1518export interface PalletForeignAssetsModuleAssetMetadata extends Struct {
1519 readonly name: Bytes;
1520 readonly symbol: Bytes;
1521 readonly decimals: u8;
1522 readonly minimalBalance: u128;
1523}
1524
1525/** @name PalletForeignAssetsModuleCall */
1526export interface PalletForeignAssetsModuleCall extends Enum {
1527 readonly isRegisterForeignAsset: boolean;
1528 readonly asRegisterForeignAsset: {
1529 readonly owner: AccountId32;
1530 readonly location: XcmVersionedMultiLocation;
1531 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1532 } & Struct;
1533 readonly isUpdateForeignAsset: boolean;
1534 readonly asUpdateForeignAsset: {
1535 readonly foreignAssetId: u32;
1536 readonly location: XcmVersionedMultiLocation;
1537 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1538 } & Struct;
1539 readonly type: 'RegisterForeignAsset' | 'UpdateForeignAsset';
1540}
1541
1542/** @name PalletForeignAssetsModuleError */
1543export interface PalletForeignAssetsModuleError extends Enum {
1544 readonly isBadLocation: boolean;
1545 readonly isMultiLocationExisted: boolean;
1546 readonly isAssetIdNotExists: boolean;
1547 readonly isAssetIdExisted: boolean;
1548 readonly type: 'BadLocation' | 'MultiLocationExisted' | 'AssetIdNotExists' | 'AssetIdExisted';
1549}
1550
1551/** @name PalletForeignAssetsModuleEvent */
1552export interface PalletForeignAssetsModuleEvent extends Enum {
1553 readonly isForeignAssetRegistered: boolean;
1554 readonly asForeignAssetRegistered: {
1555 readonly assetId: u32;
1556 readonly assetAddress: XcmV1MultiLocation;
1557 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1558 } & Struct;
1559 readonly isForeignAssetUpdated: boolean;
1560 readonly asForeignAssetUpdated: {
1561 readonly assetId: u32;
1562 readonly assetAddress: XcmV1MultiLocation;
1563 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1564 } & Struct;
1565 readonly isAssetRegistered: boolean;
1566 readonly asAssetRegistered: {
1567 readonly assetId: PalletForeignAssetsAssetIds;
1568 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1569 } & Struct;
1570 readonly isAssetUpdated: boolean;
1571 readonly asAssetUpdated: {
1572 readonly assetId: PalletForeignAssetsAssetIds;
1573 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1574 } & Struct;
1575 readonly type: 'ForeignAssetRegistered' | 'ForeignAssetUpdated' | 'AssetRegistered' | 'AssetUpdated';
1576}
1577
1578/** @name PalletForeignAssetsNativeCurrency */
1579export interface PalletForeignAssetsNativeCurrency extends Enum {
1580 readonly isHere: boolean;
1581 readonly isParent: boolean;
1582 readonly type: 'Here' | 'Parent';
1583}
12661584
1267/** @name PalletFungibleError */1585/** @name PalletFungibleError */
1268export interface PalletFungibleError extends Enum {1586export interface PalletFungibleError extends Enum {
2492 readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;2810 readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;
2493 readonly limits: UpDataStructsCollectionLimits;2811 readonly limits: UpDataStructsCollectionLimits;
2494 readonly permissions: UpDataStructsCollectionPermissions;2812 readonly permissions: UpDataStructsCollectionPermissions;
2495 readonly externalCollection: bool;2813 readonly flags: U8aFixed;
2496}2814}
24972815
2498/** @name UpDataStructsCollectionLimits */2816/** @name UpDataStructsCollectionLimits */
2666 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2984 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
2667 readonly properties: Vec<UpDataStructsProperty>;2985 readonly properties: Vec<UpDataStructsProperty>;
2668 readonly readOnly: bool;2986 readonly readOnly: bool;
2987 readonly foreign: bool;
2669}2988}
26702989
2671/** @name UpDataStructsSponsoringRateLimit */2990/** @name UpDataStructsSponsoringRateLimit */
3441/** @name XcmV2Xcm */3760/** @name XcmV2Xcm */
3442export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}3761export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}
3762
3763/** @name XcmVersionedMultiAsset */
3764export interface XcmVersionedMultiAsset extends Enum {
3765 readonly isV0: boolean;
3766 readonly asV0: XcmV0MultiAsset;
3767 readonly isV1: boolean;
3768 readonly asV1: XcmV1MultiAsset;
3769 readonly type: 'V0' | 'V1';
3770}
34433771
3444/** @name XcmVersionedMultiAssets */3772/** @name XcmVersionedMultiAssets */
3445export interface XcmVersionedMultiAssets extends Enum {3773export interface XcmVersionedMultiAssets extends Enum {
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
322 periodCount: 'u32',322 periodCount: 'u32',
323 perPeriod: 'Compact<u128>'323 perPeriod: 'Compact<u128>'
324 },324 },
325 /**325 /**
326 * Lookup39: cumulus_pallet_xcmp_queue::pallet::Event<T>326 * Lookup39: orml_xtokens::module::Event<T>
327 **/327 **/
328 CumulusPalletXcmpQueueEvent: {328 OrmlXtokensModuleEvent: {
329 _enum: {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: {330 TransferredMultiAssets: {
352 sender: 'u32',331 sender: 'AccountId32',
353 sentAt: 'u32',332 assets: 'XcmV1MultiassetMultiAssets',
354 index: 'u64',333 fee: 'XcmV1MultiAsset',
355 required: 'u64',334 dest: 'XcmV1MultiLocation'
356 },335 }
357 OverweightServiced: {
358 index: 'u64',
359 used: 'u64'
360 }
361 }336 }
362 },337 },
363 /**338 /**
364 * Lookup41: xcm::v2::traits::Error339 * Lookup40: xcm::v1::multiasset::MultiAssets
365 **/340 **/
366 XcmV2TraitsError: {341 XcmV1MultiassetMultiAssets: 'Vec<XcmV1MultiAsset>',
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 /**342 /**
397 * Lookup43: pallet_xcm::pallet::Event<T>343 * Lookup42: xcm::v1::multiasset::MultiAsset
398 **/344 **/
399 PalletXcmEvent: {345 XcmV1MultiAsset: {
400 _enum: {
401 Attempted: 'XcmV2TraitsOutcome',
402 Sent: '(XcmV1MultiLocation,XcmV1MultiLocation,XcmV2Xcm)',
403 UnexpectedResponse: '(XcmV1MultiLocation,u64)',346 id: 'XcmV1MultiassetAssetId',
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)',347 fun: 'XcmV1MultiassetFungibility'
415 NotifyTargetSendFail: '(XcmV1MultiLocation,u64,XcmV2TraitsError)',
416 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'
417 }
418 },348 },
419 /**349 /**
420 * Lookup44: xcm::v2::traits::Outcome350 * Lookup43: xcm::v1::multiasset::AssetId
421 **/351 **/
422 XcmV2TraitsOutcome: {352 XcmV1MultiassetAssetId: {
423 _enum: {353 _enum: {
424 Complete: 'u64',
425 Incomplete: '(u64,XcmV2TraitsError)',354 Concrete: 'XcmV1MultiLocation',
426 Error: 'XcmV2TraitsError'355 Abstract: 'Bytes'
427 }356 }
428 },357 },
429 /**358 /**
430 * Lookup45: xcm::v1::multilocation::MultiLocation359 * Lookup44: xcm::v1::multilocation::MultiLocation
431 **/360 **/
432 XcmV1MultiLocation: {361 XcmV1MultiLocation: {
433 parents: 'u8',362 parents: 'u8',
434 interior: 'XcmV1MultilocationJunctions'363 interior: 'XcmV1MultilocationJunctions'
435 },364 },
436 /**365 /**
437 * Lookup46: xcm::v1::multilocation::Junctions366 * Lookup45: xcm::v1::multilocation::Junctions
438 **/367 **/
439 XcmV1MultilocationJunctions: {368 XcmV1MultilocationJunctions: {
440 _enum: {369 _enum: {
441 Here: 'Null',370 Here: 'Null',
449 X8: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)'378 X8: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)'
450 }379 }
451 },380 },
452 /**381 /**
453 * Lookup47: xcm::v1::junction::Junction382 * Lookup46: xcm::v1::junction::Junction
454 **/383 **/
455 XcmV1Junction: {384 XcmV1Junction: {
456 _enum: {385 _enum: {
457 Parachain: 'Compact<u32>',386 Parachain: 'Compact<u32>',
477 }406 }
478 }407 }
479 },408 },
480 /**409 /**
481 * Lookup49: xcm::v0::junction::NetworkId410 * Lookup48: xcm::v0::junction::NetworkId
482 **/411 **/
483 XcmV0JunctionNetworkId: {412 XcmV0JunctionNetworkId: {
484 _enum: {413 _enum: {
485 Any: 'Null',414 Any: 'Null',
488 Kusama: 'Null'417 Kusama: 'Null'
489 }418 }
490 },419 },
491 /**420 /**
492 * Lookup53: xcm::v0::junction::BodyId421 * Lookup52: xcm::v0::junction::BodyId
493 **/422 **/
494 XcmV0JunctionBodyId: {423 XcmV0JunctionBodyId: {
495 _enum: {424 _enum: {
496 Unit: 'Null',425 Unit: 'Null',
502 Judicial: 'Null'431 Judicial: 'Null'
503 }432 }
504 },433 },
505 /**434 /**
506 * Lookup54: xcm::v0::junction::BodyPart435 * Lookup53: xcm::v0::junction::BodyPart
507 **/436 **/
508 XcmV0JunctionBodyPart: {437 XcmV0JunctionBodyPart: {
509 _enum: {438 _enum: {
510 Voice: 'Null',439 Voice: 'Null',
525 }454 }
526 }455 }
527 },456 },
457 /**
458 * Lookup54: xcm::v1::multiasset::Fungibility
459 **/
460 XcmV1MultiassetFungibility: {
461 _enum: {
462 Fungible: 'Compact<u128>',
463 NonFungible: 'XcmV1MultiassetAssetInstance'
464 }
465 },
466 /**
467 * Lookup55: xcm::v1::multiasset::AssetInstance
468 **/
469 XcmV1MultiassetAssetInstance: {
470 _enum: {
471 Undefined: 'Null',
472 Index: 'Compact<u128>',
473 Array4: '[u8;4]',
474 Array8: '[u8;8]',
475 Array16: '[u8;16]',
476 Array32: '[u8;32]',
477 Blob: 'Bytes'
478 }
479 },
480 /**
481 * Lookup58: orml_tokens::module::Event<T>
482 **/
483 OrmlTokensModuleEvent: {
484 _enum: {
485 Endowed: {
486 currencyId: 'PalletForeignAssetsAssetIds',
487 who: 'AccountId32',
488 amount: 'u128',
489 },
490 DustLost: {
491 currencyId: 'PalletForeignAssetsAssetIds',
492 who: 'AccountId32',
493 amount: 'u128',
494 },
495 Transfer: {
496 currencyId: 'PalletForeignAssetsAssetIds',
497 from: 'AccountId32',
498 to: 'AccountId32',
499 amount: 'u128',
500 },
501 Reserved: {
502 currencyId: 'PalletForeignAssetsAssetIds',
503 who: 'AccountId32',
504 amount: 'u128',
505 },
506 Unreserved: {
507 currencyId: 'PalletForeignAssetsAssetIds',
508 who: 'AccountId32',
509 amount: 'u128',
510 },
511 ReserveRepatriated: {
512 currencyId: 'PalletForeignAssetsAssetIds',
513 from: 'AccountId32',
514 to: 'AccountId32',
515 amount: 'u128',
516 status: 'FrameSupportTokensMiscBalanceStatus',
517 },
518 BalanceSet: {
519 currencyId: 'PalletForeignAssetsAssetIds',
520 who: 'AccountId32',
521 free: 'u128',
522 reserved: 'u128',
523 },
524 TotalIssuanceSet: {
525 currencyId: 'PalletForeignAssetsAssetIds',
526 amount: 'u128',
527 },
528 Withdrawn: {
529 currencyId: 'PalletForeignAssetsAssetIds',
530 who: 'AccountId32',
531 amount: 'u128',
532 },
533 Slashed: {
534 currencyId: 'PalletForeignAssetsAssetIds',
535 who: 'AccountId32',
536 freeAmount: 'u128',
537 reservedAmount: 'u128',
538 },
539 Deposited: {
540 currencyId: 'PalletForeignAssetsAssetIds',
541 who: 'AccountId32',
542 amount: 'u128',
543 },
544 LockSet: {
545 lockId: '[u8;8]',
546 currencyId: 'PalletForeignAssetsAssetIds',
547 who: 'AccountId32',
548 amount: 'u128',
549 },
550 LockRemoved: {
551 lockId: '[u8;8]',
552 currencyId: 'PalletForeignAssetsAssetIds',
553 who: 'AccountId32'
554 }
555 }
556 },
557 /**
558 * Lookup59: pallet_foreign_assets::AssetIds
559 **/
560 PalletForeignAssetsAssetIds: {
561 _enum: {
562 ForeignAssetId: 'u32',
563 NativeAssetId: 'PalletForeignAssetsNativeCurrency'
564 }
565 },
566 /**
567 * Lookup60: pallet_foreign_assets::NativeCurrency
568 **/
569 PalletForeignAssetsNativeCurrency: {
570 _enum: ['Here', 'Parent']
571 },
572 /**
573 * Lookup61: cumulus_pallet_xcmp_queue::pallet::Event<T>
574 **/
575 CumulusPalletXcmpQueueEvent: {
576 _enum: {
577 Success: {
578 messageHash: 'Option<H256>',
579 weight: 'u64',
580 },
581 Fail: {
582 messageHash: 'Option<H256>',
583 error: 'XcmV2TraitsError',
584 weight: 'u64',
585 },
586 BadVersion: {
587 messageHash: 'Option<H256>',
588 },
589 BadFormat: {
590 messageHash: 'Option<H256>',
591 },
592 UpwardMessageSent: {
593 messageHash: 'Option<H256>',
594 },
595 XcmpMessageSent: {
596 messageHash: 'Option<H256>',
597 },
598 OverweightEnqueued: {
599 sender: 'u32',
600 sentAt: 'u32',
601 index: 'u64',
602 required: 'u64',
603 },
604 OverweightServiced: {
605 index: 'u64',
606 used: 'u64'
607 }
608 }
609 },
610 /**
611 * Lookup63: xcm::v2::traits::Error
612 **/
613 XcmV2TraitsError: {
614 _enum: {
615 Overflow: 'Null',
616 Unimplemented: 'Null',
617 UntrustedReserveLocation: 'Null',
618 UntrustedTeleportLocation: 'Null',
619 MultiLocationFull: 'Null',
620 MultiLocationNotInvertible: 'Null',
621 BadOrigin: 'Null',
622 InvalidLocation: 'Null',
623 AssetNotFound: 'Null',
624 FailedToTransactAsset: 'Null',
625 NotWithdrawable: 'Null',
626 LocationCannotHold: 'Null',
627 ExceedsMaxMessageSize: 'Null',
628 DestinationUnsupported: 'Null',
629 Transport: 'Null',
630 Unroutable: 'Null',
631 UnknownClaim: 'Null',
632 FailedToDecode: 'Null',
633 MaxWeightInvalid: 'Null',
634 NotHoldingFees: 'Null',
635 TooExpensive: 'Null',
636 Trap: 'u64',
637 UnhandledXcmVersion: 'Null',
638 WeightLimitReached: 'u64',
639 Barrier: 'Null',
640 WeightNotComputable: 'Null'
641 }
642 },
643 /**
644 * Lookup65: pallet_xcm::pallet::Event<T>
645 **/
646 PalletXcmEvent: {
647 _enum: {
648 Attempted: 'XcmV2TraitsOutcome',
649 Sent: '(XcmV1MultiLocation,XcmV1MultiLocation,XcmV2Xcm)',
650 UnexpectedResponse: '(XcmV1MultiLocation,u64)',
651 ResponseReady: '(u64,XcmV2Response)',
652 Notified: '(u64,u8,u8)',
653 NotifyOverweight: '(u64,u8,u8,u64,u64)',
654 NotifyDispatchError: '(u64,u8,u8)',
655 NotifyDecodeFailed: '(u64,u8,u8)',
656 InvalidResponder: '(XcmV1MultiLocation,u64,Option<XcmV1MultiLocation>)',
657 InvalidResponderVersion: '(XcmV1MultiLocation,u64)',
658 ResponseTaken: 'u64',
659 AssetsTrapped: '(H256,XcmV1MultiLocation,XcmVersionedMultiAssets)',
660 VersionChangeNotified: '(XcmV1MultiLocation,u32)',
661 SupportedVersionChanged: '(XcmV1MultiLocation,u32)',
662 NotifyTargetSendFail: '(XcmV1MultiLocation,u64,XcmV2TraitsError)',
663 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'
664 }
665 },
666 /**
667 * Lookup66: xcm::v2::traits::Outcome
668 **/
669 XcmV2TraitsOutcome: {
670 _enum: {
671 Complete: 'u64',
672 Incomplete: '(u64,XcmV2TraitsError)',
673 Error: 'XcmV2TraitsError'
674 }
675 },
528 /**676 /**
529 * Lookup55: xcm::v2::Xcm<Call>677 * Lookup67: xcm::v2::Xcm<Call>
530 **/678 **/
531 XcmV2Xcm: 'Vec<XcmV2Instruction>',679 XcmV2Xcm: 'Vec<XcmV2Instruction>',
532 /**680 /**
533 * Lookup57: xcm::v2::Instruction<Call>681 * Lookup69: xcm::v2::Instruction<Call>
534 **/682 **/
535 XcmV2Instruction: {683 XcmV2Instruction: {
536 _enum: {684 _enum: {
537 WithdrawAsset: 'XcmV1MultiassetMultiAssets',685 WithdrawAsset: 'XcmV1MultiassetMultiAssets',
627 UnsubscribeVersion: 'Null'775 UnsubscribeVersion: 'Null'
628 }776 }
629 },777 },
630 /**
631 * Lookup58: xcm::v1::multiasset::MultiAssets
632 **/
633 XcmV1MultiassetMultiAssets: 'Vec<XcmV1MultiAsset>',
634 /**
635 * Lookup60: xcm::v1::multiasset::MultiAsset
636 **/
637 XcmV1MultiAsset: {
638 id: 'XcmV1MultiassetAssetId',
639 fun: 'XcmV1MultiassetFungibility'
640 },
641 /**
642 * Lookup61: xcm::v1::multiasset::AssetId
643 **/
644 XcmV1MultiassetAssetId: {
645 _enum: {
646 Concrete: 'XcmV1MultiLocation',
647 Abstract: 'Bytes'
648 }
649 },
650 /**
651 * Lookup62: xcm::v1::multiasset::Fungibility
652 **/
653 XcmV1MultiassetFungibility: {
654 _enum: {
655 Fungible: 'Compact<u128>',
656 NonFungible: 'XcmV1MultiassetAssetInstance'
657 }
658 },
659 /**
660 * Lookup63: xcm::v1::multiasset::AssetInstance
661 **/
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 /**778 /**
674 * Lookup66: xcm::v2::Response779 * Lookup70: xcm::v2::Response
675 **/780 **/
676 XcmV2Response: {781 XcmV2Response: {
677 _enum: {782 _enum: {
678 Null: 'Null',783 Null: 'Null',
681 Version: 'u32'786 Version: 'u32'
682 }787 }
683 },788 },
684 /**789 /**
685 * Lookup69: xcm::v0::OriginKind790 * Lookup73: xcm::v0::OriginKind
686 **/791 **/
687 XcmV0OriginKind: {792 XcmV0OriginKind: {
688 _enum: ['Native', 'SovereignAccount', 'Superuser', 'Xcm']793 _enum: ['Native', 'SovereignAccount', 'Superuser', 'Xcm']
689 },794 },
690 /**795 /**
691 * Lookup70: xcm::double_encoded::DoubleEncoded<T>796 * Lookup74: xcm::double_encoded::DoubleEncoded<T>
692 **/797 **/
693 XcmDoubleEncoded: {798 XcmDoubleEncoded: {
694 encoded: 'Bytes'799 encoded: 'Bytes'
695 },800 },
696 /**801 /**
697 * Lookup71: xcm::v1::multiasset::MultiAssetFilter802 * Lookup75: xcm::v1::multiasset::MultiAssetFilter
698 **/803 **/
699 XcmV1MultiassetMultiAssetFilter: {804 XcmV1MultiassetMultiAssetFilter: {
700 _enum: {805 _enum: {
701 Definite: 'XcmV1MultiassetMultiAssets',806 Definite: 'XcmV1MultiassetMultiAssets',
702 Wild: 'XcmV1MultiassetWildMultiAsset'807 Wild: 'XcmV1MultiassetWildMultiAsset'
703 }808 }
704 },809 },
705 /**810 /**
706 * Lookup72: xcm::v1::multiasset::WildMultiAsset811 * Lookup76: xcm::v1::multiasset::WildMultiAsset
707 **/812 **/
708 XcmV1MultiassetWildMultiAsset: {813 XcmV1MultiassetWildMultiAsset: {
709 _enum: {814 _enum: {
710 All: 'Null',815 All: 'Null',
714 }819 }
715 }820 }
716 },821 },
717 /**822 /**
718 * Lookup73: xcm::v1::multiasset::WildFungibility823 * Lookup77: xcm::v1::multiasset::WildFungibility
719 **/824 **/
720 XcmV1MultiassetWildFungibility: {825 XcmV1MultiassetWildFungibility: {
721 _enum: ['Fungible', 'NonFungible']826 _enum: ['Fungible', 'NonFungible']
722 },827 },
723 /**828 /**
724 * Lookup74: xcm::v2::WeightLimit829 * Lookup78: xcm::v2::WeightLimit
725 **/830 **/
726 XcmV2WeightLimit: {831 XcmV2WeightLimit: {
727 _enum: {832 _enum: {
728 Unlimited: 'Null',833 Unlimited: 'Null',
729 Limited: 'Compact<u64>'834 Limited: 'Compact<u64>'
730 }835 }
731 },836 },
732 /**837 /**
733 * Lookup76: xcm::VersionedMultiAssets838 * Lookup80: xcm::VersionedMultiAssets
734 **/839 **/
735 XcmVersionedMultiAssets: {840 XcmVersionedMultiAssets: {
736 _enum: {841 _enum: {
737 V0: 'Vec<XcmV0MultiAsset>',842 V0: 'Vec<XcmV0MultiAsset>',
738 V1: 'XcmV1MultiassetMultiAssets'843 V1: 'XcmV1MultiassetMultiAssets'
739 }844 }
740 },845 },
741 /**846 /**
742 * Lookup78: xcm::v0::multi_asset::MultiAsset847 * Lookup82: xcm::v0::multi_asset::MultiAsset
743 **/848 **/
744 XcmV0MultiAsset: {849 XcmV0MultiAsset: {
745 _enum: {850 _enum: {
746 None: 'Null',851 None: 'Null',
777 }882 }
778 }883 }
779 },884 },
780 /**885 /**
781 * Lookup79: xcm::v0::multi_location::MultiLocation886 * Lookup83: xcm::v0::multi_location::MultiLocation
782 **/887 **/
783 XcmV0MultiLocation: {888 XcmV0MultiLocation: {
784 _enum: {889 _enum: {
785 Null: 'Null',890 Null: 'Null',
793 X8: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)'898 X8: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)'
794 }899 }
795 },900 },
796 /**901 /**
797 * Lookup80: xcm::v0::junction::Junction902 * Lookup84: xcm::v0::junction::Junction
798 **/903 **/
799 XcmV0Junction: {904 XcmV0Junction: {
800 _enum: {905 _enum: {
801 Parent: 'Null',906 Parent: 'Null',
822 }927 }
823 }928 }
824 },929 },
825 /**930 /**
826 * Lookup81: xcm::VersionedMultiLocation931 * Lookup85: xcm::VersionedMultiLocation
827 **/932 **/
828 XcmVersionedMultiLocation: {933 XcmVersionedMultiLocation: {
829 _enum: {934 _enum: {
830 V0: 'XcmV0MultiLocation',935 V0: 'XcmV0MultiLocation',
831 V1: 'XcmV1MultiLocation'936 V1: 'XcmV1MultiLocation'
832 }937 }
833 },938 },
834 /**939 /**
835 * Lookup82: cumulus_pallet_xcm::pallet::Event<T>940 * Lookup86: cumulus_pallet_xcm::pallet::Event<T>
836 **/941 **/
837 CumulusPalletXcmEvent: {942 CumulusPalletXcmEvent: {
838 _enum: {943 _enum: {
839 InvalidFormat: '[u8;8]',944 InvalidFormat: '[u8;8]',
840 UnsupportedVersion: '[u8;8]',945 UnsupportedVersion: '[u8;8]',
841 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'946 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'
842 }947 }
843 },948 },
844 /**949 /**
845 * Lookup83: cumulus_pallet_dmp_queue::pallet::Event<T>950 * Lookup87: cumulus_pallet_dmp_queue::pallet::Event<T>
846 **/951 **/
847 CumulusPalletDmpQueueEvent: {952 CumulusPalletDmpQueueEvent: {
848 _enum: {953 _enum: {
849 InvalidFormat: {954 InvalidFormat: {
872 }977 }
873 }978 }
874 },979 },
875 /**980 /**
876 * Lookup84: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>981 * Lookup88: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
877 **/982 **/
878 PalletUniqueRawEvent: {983 PalletUniqueRawEvent: {
879 _enum: {984 _enum: {
880 CollectionSponsorRemoved: 'u32',985 CollectionSponsorRemoved: 'u32',
889 CollectionPermissionSet: 'u32'994 CollectionPermissionSet: 'u32'
890 }995 }
891 },996 },
892 /**997 /**
893 * Lookup85: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>998 * Lookup89: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
894 **/999 **/
895 PalletEvmAccountBasicCrossAccountIdRepr: {1000 PalletEvmAccountBasicCrossAccountIdRepr: {
896 _enum: {1001 _enum: {
897 Substrate: 'AccountId32',1002 Substrate: 'AccountId32',
898 Ethereum: 'H160'1003 Ethereum: 'H160'
899 }1004 }
900 },1005 },
901 /**1006 /**
902 * Lookup88: pallet_unique_scheduler::pallet::Event<T>1007 * Lookup92: pallet_unique_scheduler::pallet::Event<T>
903 **/1008 **/
904 PalletUniqueSchedulerEvent: {1009 PalletUniqueSchedulerEvent: {
905 _enum: {1010 _enum: {
906 Scheduled: {1011 Scheduled: {
923 }1028 }
924 }1029 }
925 },1030 },
926 /**1031 /**
927 * Lookup91: frame_support::traits::schedule::LookupError1032 * Lookup95: frame_support::traits::schedule::LookupError
928 **/1033 **/
929 FrameSupportScheduleLookupError: {1034 FrameSupportScheduleLookupError: {
930 _enum: ['Unknown', 'BadFormat']1035 _enum: ['Unknown', 'BadFormat']
931 },1036 },
932 /**1037 /**
933 * Lookup92: pallet_common::pallet::Event<T>1038 * Lookup96: pallet_common::pallet::Event<T>
934 **/1039 **/
935 PalletCommonEvent: {1040 PalletCommonEvent: {
936 _enum: {1041 _enum: {
937 CollectionCreated: '(u32,u8,AccountId32)',1042 CollectionCreated: '(u32,u8,AccountId32)',
947 PropertyPermissionSet: '(u32,Bytes)'1052 PropertyPermissionSet: '(u32,Bytes)'
948 }1053 }
949 },1054 },
950 /**1055 /**
951 * Lookup95: pallet_structure::pallet::Event<T>1056 * Lookup99: pallet_structure::pallet::Event<T>
952 **/1057 **/
953 PalletStructureEvent: {1058 PalletStructureEvent: {
954 _enum: {1059 _enum: {
955 Executed: 'Result<Null, SpRuntimeDispatchError>'1060 Executed: 'Result<Null, SpRuntimeDispatchError>'
956 }1061 }
957 },1062 },
958 /**1063 /**
959 * Lookup96: pallet_rmrk_core::pallet::Event<T>1064 * Lookup100: pallet_rmrk_core::pallet::Event<T>
960 **/1065 **/
961 PalletRmrkCoreEvent: {1066 PalletRmrkCoreEvent: {
962 _enum: {1067 _enum: {
963 CollectionCreated: {1068 CollectionCreated: {
1032 }1137 }
1033 }1138 }
1034 },1139 },
1035 /**1140 /**
1036 * Lookup97: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>1141 * Lookup101: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
1037 **/1142 **/
1038 RmrkTraitsNftAccountIdOrCollectionNftTuple: {1143 RmrkTraitsNftAccountIdOrCollectionNftTuple: {
1039 _enum: {1144 _enum: {
1040 AccountId: 'AccountId32',1145 AccountId: 'AccountId32',
1041 CollectionAndNftTuple: '(u32,u32)'1146 CollectionAndNftTuple: '(u32,u32)'
1042 }1147 }
1043 },1148 },
1044 /**1149 /**
1045 * Lookup102: pallet_rmrk_equip::pallet::Event<T>1150 * Lookup106: pallet_rmrk_equip::pallet::Event<T>
1046 **/1151 **/
1047 PalletRmrkEquipEvent: {1152 PalletRmrkEquipEvent: {
1048 _enum: {1153 _enum: {
1049 BaseCreated: {1154 BaseCreated: {
1056 }1161 }
1057 }1162 }
1058 },1163 },
1059 /**1164 /**
1060 * Lookup103: pallet_app_promotion::pallet::Event<T>1165 * Lookup107: pallet_app_promotion::pallet::Event<T>
1061 **/1166 **/
1062 PalletAppPromotionEvent: {1167 PalletAppPromotionEvent: {
1063 _enum: {1168 _enum: {
1064 StakingRecalculation: '(AccountId32,u128,u128)',1169 StakingRecalculation: '(AccountId32,u128,u128)',
1067 SetAdmin: 'AccountId32'1172 SetAdmin: 'AccountId32'
1068 }1173 }
1069 },1174 },
1175 /**
1176 * Lookup108: pallet_foreign_assets::module::Event<T>
1177 **/
1178 PalletForeignAssetsModuleEvent: {
1179 _enum: {
1180 ForeignAssetRegistered: {
1181 assetId: 'u32',
1182 assetAddress: 'XcmV1MultiLocation',
1183 metadata: 'PalletForeignAssetsModuleAssetMetadata',
1184 },
1185 ForeignAssetUpdated: {
1186 assetId: 'u32',
1187 assetAddress: 'XcmV1MultiLocation',
1188 metadata: 'PalletForeignAssetsModuleAssetMetadata',
1189 },
1190 AssetRegistered: {
1191 assetId: 'PalletForeignAssetsAssetIds',
1192 metadata: 'PalletForeignAssetsModuleAssetMetadata',
1193 },
1194 AssetUpdated: {
1195 assetId: 'PalletForeignAssetsAssetIds',
1196 metadata: 'PalletForeignAssetsModuleAssetMetadata'
1197 }
1198 }
1199 },
1200 /**
1201 * Lookup109: pallet_foreign_assets::module::AssetMetadata<Balance>
1202 **/
1203 PalletForeignAssetsModuleAssetMetadata: {
1204 name: 'Bytes',
1205 symbol: 'Bytes',
1206 decimals: 'u8',
1207 minimalBalance: 'u128'
1208 },
1070 /**1209 /**
1071 * Lookup104: pallet_evm::pallet::Event<T>1210 * Lookup110: pallet_evm::pallet::Event<T>
1072 **/1211 **/
1073 PalletEvmEvent: {1212 PalletEvmEvent: {
1074 _enum: {1213 _enum: {
1075 Log: 'EthereumLog',1214 Log: 'EthereumLog',
1081 BalanceWithdraw: '(AccountId32,H160,U256)'1220 BalanceWithdraw: '(AccountId32,H160,U256)'
1082 }1221 }
1083 },1222 },
1084 /**1223 /**
1085 * Lookup105: ethereum::log::Log1224 * Lookup111: ethereum::log::Log
1086 **/1225 **/
1087 EthereumLog: {1226 EthereumLog: {
1088 address: 'H160',1227 address: 'H160',
1089 topics: 'Vec<H256>',1228 topics: 'Vec<H256>',
1090 data: 'Bytes'1229 data: 'Bytes'
1091 },1230 },
1092 /**1231 /**
1093 * Lookup109: pallet_ethereum::pallet::Event1232 * Lookup115: pallet_ethereum::pallet::Event
1094 **/1233 **/
1095 PalletEthereumEvent: {1234 PalletEthereumEvent: {
1096 _enum: {1235 _enum: {
1097 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'1236 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'
1098 }1237 }
1099 },1238 },
1100 /**1239 /**
1101 * Lookup110: evm_core::error::ExitReason1240 * Lookup116: evm_core::error::ExitReason
1102 **/1241 **/
1103 EvmCoreErrorExitReason: {1242 EvmCoreErrorExitReason: {
1104 _enum: {1243 _enum: {
1105 Succeed: 'EvmCoreErrorExitSucceed',1244 Succeed: 'EvmCoreErrorExitSucceed',
1108 Fatal: 'EvmCoreErrorExitFatal'1247 Fatal: 'EvmCoreErrorExitFatal'
1109 }1248 }
1110 },1249 },
1111 /**1250 /**
1112 * Lookup111: evm_core::error::ExitSucceed1251 * Lookup117: evm_core::error::ExitSucceed
1113 **/1252 **/
1114 EvmCoreErrorExitSucceed: {1253 EvmCoreErrorExitSucceed: {
1115 _enum: ['Stopped', 'Returned', 'Suicided']1254 _enum: ['Stopped', 'Returned', 'Suicided']
1116 },1255 },
1117 /**1256 /**
1118 * Lookup112: evm_core::error::ExitError1257 * Lookup118: evm_core::error::ExitError
1119 **/1258 **/
1120 EvmCoreErrorExitError: {1259 EvmCoreErrorExitError: {
1121 _enum: {1260 _enum: {
1122 StackUnderflow: 'Null',1261 StackUnderflow: 'Null',
1136 InvalidCode: 'Null'1275 InvalidCode: 'Null'
1137 }1276 }
1138 },1277 },
1139 /**1278 /**
1140 * Lookup115: evm_core::error::ExitRevert1279 * Lookup121: evm_core::error::ExitRevert
1141 **/1280 **/
1142 EvmCoreErrorExitRevert: {1281 EvmCoreErrorExitRevert: {
1143 _enum: ['Reverted']1282 _enum: ['Reverted']
1144 },1283 },
1145 /**1284 /**
1146 * Lookup116: evm_core::error::ExitFatal1285 * Lookup122: evm_core::error::ExitFatal
1147 **/1286 **/
1148 EvmCoreErrorExitFatal: {1287 EvmCoreErrorExitFatal: {
1149 _enum: {1288 _enum: {
1150 NotSupported: 'Null',1289 NotSupported: 'Null',
1153 Other: 'Text'1292 Other: 'Text'
1154 }1293 }
1155 },1294 },
1156 /**1295 /**
1157 * Lookup117: pallet_evm_contract_helpers::pallet::Event<T>1296 * Lookup123: pallet_evm_contract_helpers::pallet::Event<T>
1158 **/1297 **/
1159 PalletEvmContractHelpersEvent: {1298 PalletEvmContractHelpersEvent: {
1160 _enum: {1299 _enum: {
1161 ContractSponsorSet: '(H160,AccountId32)',1300 ContractSponsorSet: '(H160,AccountId32)',
1162 ContractSponsorshipConfirmed: '(H160,AccountId32)',1301 ContractSponsorshipConfirmed: '(H160,AccountId32)',
1163 ContractSponsorRemoved: 'H160'1302 ContractSponsorRemoved: 'H160'
1164 }1303 }
1165 },1304 },
1166 /**1305 /**
1167 * Lookup118: frame_system::Phase1306 * Lookup124: frame_system::Phase
1168 **/1307 **/
1169 FrameSystemPhase: {1308 FrameSystemPhase: {
1170 _enum: {1309 _enum: {
1171 ApplyExtrinsic: 'u32',1310 ApplyExtrinsic: 'u32',
1172 Finalization: 'Null',1311 Finalization: 'Null',
1173 Initialization: 'Null'1312 Initialization: 'Null'
1174 }1313 }
1175 },1314 },
1176 /**1315 /**
1177 * Lookup120: frame_system::LastRuntimeUpgradeInfo1316 * Lookup126: frame_system::LastRuntimeUpgradeInfo
1178 **/1317 **/
1179 FrameSystemLastRuntimeUpgradeInfo: {1318 FrameSystemLastRuntimeUpgradeInfo: {
1180 specVersion: 'Compact<u32>',1319 specVersion: 'Compact<u32>',
1181 specName: 'Text'1320 specName: 'Text'
1182 },1321 },
1183 /**1322 /**
1184 * Lookup121: frame_system::pallet::Call<T>1323 * Lookup127: frame_system::pallet::Call<T>
1185 **/1324 **/
1186 FrameSystemCall: {1325 FrameSystemCall: {
1187 _enum: {1326 _enum: {
1188 fill_block: {1327 fill_block: {
1218 }1357 }
1219 }1358 }
1220 },1359 },
1221 /**1360 /**
1222 * Lookup126: frame_system::limits::BlockWeights1361 * Lookup132: frame_system::limits::BlockWeights
1223 **/1362 **/
1224 FrameSystemLimitsBlockWeights: {1363 FrameSystemLimitsBlockWeights: {
1225 baseBlock: 'u64',1364 baseBlock: 'u64',
1226 maxBlock: 'u64',1365 maxBlock: 'u64',
1227 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'1366 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'
1228 },1367 },
1229 /**1368 /**
1230 * Lookup127: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>1369 * Lookup133: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
1231 **/1370 **/
1232 FrameSupportWeightsPerDispatchClassWeightsPerClass: {1371 FrameSupportWeightsPerDispatchClassWeightsPerClass: {
1233 normal: 'FrameSystemLimitsWeightsPerClass',1372 normal: 'FrameSystemLimitsWeightsPerClass',
1234 operational: 'FrameSystemLimitsWeightsPerClass',1373 operational: 'FrameSystemLimitsWeightsPerClass',
1235 mandatory: 'FrameSystemLimitsWeightsPerClass'1374 mandatory: 'FrameSystemLimitsWeightsPerClass'
1236 },1375 },
1237 /**1376 /**
1238 * Lookup128: frame_system::limits::WeightsPerClass1377 * Lookup134: frame_system::limits::WeightsPerClass
1239 **/1378 **/
1240 FrameSystemLimitsWeightsPerClass: {1379 FrameSystemLimitsWeightsPerClass: {
1241 baseExtrinsic: 'u64',1380 baseExtrinsic: 'u64',
1242 maxExtrinsic: 'Option<u64>',1381 maxExtrinsic: 'Option<u64>',
1243 maxTotal: 'Option<u64>',1382 maxTotal: 'Option<u64>',
1244 reserved: 'Option<u64>'1383 reserved: 'Option<u64>'
1245 },1384 },
1246 /**1385 /**
1247 * Lookup130: frame_system::limits::BlockLength1386 * Lookup136: frame_system::limits::BlockLength
1248 **/1387 **/
1249 FrameSystemLimitsBlockLength: {1388 FrameSystemLimitsBlockLength: {
1250 max: 'FrameSupportWeightsPerDispatchClassU32'1389 max: 'FrameSupportWeightsPerDispatchClassU32'
1251 },1390 },
1252 /**1391 /**
1253 * Lookup131: frame_support::weights::PerDispatchClass<T>1392 * Lookup137: frame_support::weights::PerDispatchClass<T>
1254 **/1393 **/
1255 FrameSupportWeightsPerDispatchClassU32: {1394 FrameSupportWeightsPerDispatchClassU32: {
1256 normal: 'u32',1395 normal: 'u32',
1257 operational: 'u32',1396 operational: 'u32',
1258 mandatory: 'u32'1397 mandatory: 'u32'
1259 },1398 },
1260 /**1399 /**
1261 * Lookup132: frame_support::weights::RuntimeDbWeight1400 * Lookup138: frame_support::weights::RuntimeDbWeight
1262 **/1401 **/
1263 FrameSupportWeightsRuntimeDbWeight: {1402 FrameSupportWeightsRuntimeDbWeight: {
1264 read: 'u64',1403 read: 'u64',
1265 write: 'u64'1404 write: 'u64'
1266 },1405 },
1267 /**1406 /**
1268 * Lookup133: sp_version::RuntimeVersion1407 * Lookup139: sp_version::RuntimeVersion
1269 **/1408 **/
1270 SpVersionRuntimeVersion: {1409 SpVersionRuntimeVersion: {
1271 specName: 'Text',1410 specName: 'Text',
1272 implName: 'Text',1411 implName: 'Text',
1277 transactionVersion: 'u32',1416 transactionVersion: 'u32',
1278 stateVersion: 'u8'1417 stateVersion: 'u8'
1279 },1418 },
1280 /**1419 /**
1281 * Lookup138: frame_system::pallet::Error<T>1420 * Lookup144: frame_system::pallet::Error<T>
1282 **/1421 **/
1283 FrameSystemError: {1422 FrameSystemError: {
1284 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']1423 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
1285 },1424 },
1286 /**1425 /**
1287 * Lookup139: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>1426 * Lookup145: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>
1288 **/1427 **/
1289 PolkadotPrimitivesV2PersistedValidationData: {1428 PolkadotPrimitivesV2PersistedValidationData: {
1290 parentHead: 'Bytes',1429 parentHead: 'Bytes',
1291 relayParentNumber: 'u32',1430 relayParentNumber: 'u32',
1292 relayParentStorageRoot: 'H256',1431 relayParentStorageRoot: 'H256',
1293 maxPovSize: 'u32'1432 maxPovSize: 'u32'
1294 },1433 },
1295 /**1434 /**
1296 * Lookup142: polkadot_primitives::v2::UpgradeRestriction1435 * Lookup148: polkadot_primitives::v2::UpgradeRestriction
1297 **/1436 **/
1298 PolkadotPrimitivesV2UpgradeRestriction: {1437 PolkadotPrimitivesV2UpgradeRestriction: {
1299 _enum: ['Present']1438 _enum: ['Present']
1300 },1439 },
1301 /**1440 /**
1302 * Lookup143: sp_trie::storage_proof::StorageProof1441 * Lookup149: sp_trie::storage_proof::StorageProof
1303 **/1442 **/
1304 SpTrieStorageProof: {1443 SpTrieStorageProof: {
1305 trieNodes: 'BTreeSet<Bytes>'1444 trieNodes: 'BTreeSet<Bytes>'
1306 },1445 },
1307 /**1446 /**
1308 * Lookup145: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot1447 * Lookup151: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
1309 **/1448 **/
1310 CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {1449 CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {
1311 dmqMqcHead: 'H256',1450 dmqMqcHead: 'H256',
1312 relayDispatchQueueSize: '(u32,u32)',1451 relayDispatchQueueSize: '(u32,u32)',
1313 ingressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>',1452 ingressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>',
1314 egressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>'1453 egressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>'
1315 },1454 },
1316 /**1455 /**
1317 * Lookup148: polkadot_primitives::v2::AbridgedHrmpChannel1456 * Lookup154: polkadot_primitives::v2::AbridgedHrmpChannel
1318 **/1457 **/
1319 PolkadotPrimitivesV2AbridgedHrmpChannel: {1458 PolkadotPrimitivesV2AbridgedHrmpChannel: {
1320 maxCapacity: 'u32',1459 maxCapacity: 'u32',
1321 maxTotalSize: 'u32',1460 maxTotalSize: 'u32',
1324 totalSize: 'u32',1463 totalSize: 'u32',
1325 mqcHead: 'Option<H256>'1464 mqcHead: 'Option<H256>'
1326 },1465 },
1327 /**1466 /**
1328 * Lookup149: polkadot_primitives::v2::AbridgedHostConfiguration1467 * Lookup155: polkadot_primitives::v2::AbridgedHostConfiguration
1329 **/1468 **/
1330 PolkadotPrimitivesV2AbridgedHostConfiguration: {1469 PolkadotPrimitivesV2AbridgedHostConfiguration: {
1331 maxCodeSize: 'u32',1470 maxCodeSize: 'u32',
1332 maxHeadDataSize: 'u32',1471 maxHeadDataSize: 'u32',
1338 validationUpgradeCooldown: 'u32',1477 validationUpgradeCooldown: 'u32',
1339 validationUpgradeDelay: 'u32'1478 validationUpgradeDelay: 'u32'
1340 },1479 },
1341 /**1480 /**
1342 * Lookup155: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>1481 * Lookup161: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
1343 **/1482 **/
1344 PolkadotCorePrimitivesOutboundHrmpMessage: {1483 PolkadotCorePrimitivesOutboundHrmpMessage: {
1345 recipient: 'u32',1484 recipient: 'u32',
1346 data: 'Bytes'1485 data: 'Bytes'
1347 },1486 },
1348 /**1487 /**
1349 * Lookup156: cumulus_pallet_parachain_system::pallet::Call<T>1488 * Lookup162: cumulus_pallet_parachain_system::pallet::Call<T>
1350 **/1489 **/
1351 CumulusPalletParachainSystemCall: {1490 CumulusPalletParachainSystemCall: {
1352 _enum: {1491 _enum: {
1353 set_validation_data: {1492 set_validation_data: {
1364 }1503 }
1365 }1504 }
1366 },1505 },
1367 /**1506 /**
1368 * Lookup157: cumulus_primitives_parachain_inherent::ParachainInherentData1507 * Lookup163: cumulus_primitives_parachain_inherent::ParachainInherentData
1369 **/1508 **/
1370 CumulusPrimitivesParachainInherentParachainInherentData: {1509 CumulusPrimitivesParachainInherentParachainInherentData: {
1371 validationData: 'PolkadotPrimitivesV2PersistedValidationData',1510 validationData: 'PolkadotPrimitivesV2PersistedValidationData',
1372 relayChainState: 'SpTrieStorageProof',1511 relayChainState: 'SpTrieStorageProof',
1373 downwardMessages: 'Vec<PolkadotCorePrimitivesInboundDownwardMessage>',1512 downwardMessages: 'Vec<PolkadotCorePrimitivesInboundDownwardMessage>',
1374 horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'1513 horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'
1375 },1514 },
1376 /**1515 /**
1377 * Lookup159: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>1516 * Lookup165: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
1378 **/1517 **/
1379 PolkadotCorePrimitivesInboundDownwardMessage: {1518 PolkadotCorePrimitivesInboundDownwardMessage: {
1380 sentAt: 'u32',1519 sentAt: 'u32',
1381 msg: 'Bytes'1520 msg: 'Bytes'
1382 },1521 },
1383 /**1522 /**
1384 * Lookup162: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>1523 * Lookup168: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
1385 **/1524 **/
1386 PolkadotCorePrimitivesInboundHrmpMessage: {1525 PolkadotCorePrimitivesInboundHrmpMessage: {
1387 sentAt: 'u32',1526 sentAt: 'u32',
1388 data: 'Bytes'1527 data: 'Bytes'
1389 },1528 },
1390 /**1529 /**
1391 * Lookup165: cumulus_pallet_parachain_system::pallet::Error<T>1530 * Lookup171: cumulus_pallet_parachain_system::pallet::Error<T>
1392 **/1531 **/
1393 CumulusPalletParachainSystemError: {1532 CumulusPalletParachainSystemError: {
1394 _enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']1533 _enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']
1395 },1534 },
1396 /**1535 /**
1397 * Lookup167: pallet_balances::BalanceLock<Balance>1536 * Lookup173: pallet_balances::BalanceLock<Balance>
1398 **/1537 **/
1399 PalletBalancesBalanceLock: {1538 PalletBalancesBalanceLock: {
1400 id: '[u8;8]',1539 id: '[u8;8]',
1401 amount: 'u128',1540 amount: 'u128',
1402 reasons: 'PalletBalancesReasons'1541 reasons: 'PalletBalancesReasons'
1403 },1542 },
1404 /**1543 /**
1405 * Lookup168: pallet_balances::Reasons1544 * Lookup174: pallet_balances::Reasons
1406 **/1545 **/
1407 PalletBalancesReasons: {1546 PalletBalancesReasons: {
1408 _enum: ['Fee', 'Misc', 'All']1547 _enum: ['Fee', 'Misc', 'All']
1409 },1548 },
1410 /**1549 /**
1411 * Lookup171: pallet_balances::ReserveData<ReserveIdentifier, Balance>1550 * Lookup177: pallet_balances::ReserveData<ReserveIdentifier, Balance>
1412 **/1551 **/
1413 PalletBalancesReserveData: {1552 PalletBalancesReserveData: {
1414 id: '[u8;16]',1553 id: '[u8;16]',
1415 amount: 'u128'1554 amount: 'u128'
1416 },1555 },
1417 /**1556 /**
1418 * Lookup173: pallet_balances::Releases1557 * Lookup179: pallet_balances::Releases
1419 **/1558 **/
1420 PalletBalancesReleases: {1559 PalletBalancesReleases: {
1421 _enum: ['V1_0_0', 'V2_0_0']1560 _enum: ['V1_0_0', 'V2_0_0']
1422 },1561 },
1423 /**1562 /**
1424 * Lookup174: pallet_balances::pallet::Call<T, I>1563 * Lookup180: pallet_balances::pallet::Call<T, I>
1425 **/1564 **/
1426 PalletBalancesCall: {1565 PalletBalancesCall: {
1427 _enum: {1566 _enum: {
1428 transfer: {1567 transfer: {
1453 }1592 }
1454 }1593 }
1455 },1594 },
1456 /**1595 /**
1457 * Lookup177: pallet_balances::pallet::Error<T, I>1596 * Lookup183: pallet_balances::pallet::Error<T, I>
1458 **/1597 **/
1459 PalletBalancesError: {1598 PalletBalancesError: {
1460 _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']1599 _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']
1461 },1600 },
1462 /**1601 /**
1463 * Lookup179: pallet_timestamp::pallet::Call<T>1602 * Lookup185: pallet_timestamp::pallet::Call<T>
1464 **/1603 **/
1465 PalletTimestampCall: {1604 PalletTimestampCall: {
1466 _enum: {1605 _enum: {
1467 set: {1606 set: {
1468 now: 'Compact<u64>'1607 now: 'Compact<u64>'
1469 }1608 }
1470 }1609 }
1471 },1610 },
1472 /**1611 /**
1473 * Lookup181: pallet_transaction_payment::Releases1612 * Lookup187: pallet_transaction_payment::Releases
1474 **/1613 **/
1475 PalletTransactionPaymentReleases: {1614 PalletTransactionPaymentReleases: {
1476 _enum: ['V1Ancient', 'V2']1615 _enum: ['V1Ancient', 'V2']
1477 },1616 },
1478 /**1617 /**
1479 * Lookup182: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>1618 * Lookup188: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
1480 **/1619 **/
1481 PalletTreasuryProposal: {1620 PalletTreasuryProposal: {
1482 proposer: 'AccountId32',1621 proposer: 'AccountId32',
1483 value: 'u128',1622 value: 'u128',
1484 beneficiary: 'AccountId32',1623 beneficiary: 'AccountId32',
1485 bond: 'u128'1624 bond: 'u128'
1486 },1625 },
1487 /**1626 /**
1488 * Lookup185: pallet_treasury::pallet::Call<T, I>1627 * Lookup191: pallet_treasury::pallet::Call<T, I>
1489 **/1628 **/
1490 PalletTreasuryCall: {1629 PalletTreasuryCall: {
1491 _enum: {1630 _enum: {
1492 propose_spend: {1631 propose_spend: {
1508 }1647 }
1509 }1648 }
1510 },1649 },
1511 /**1650 /**
1512 * Lookup188: frame_support::PalletId1651 * Lookup194: frame_support::PalletId
1513 **/1652 **/
1514 FrameSupportPalletId: '[u8;8]',1653 FrameSupportPalletId: '[u8;8]',
1515 /**1654 /**
1516 * Lookup189: pallet_treasury::pallet::Error<T, I>1655 * Lookup195: pallet_treasury::pallet::Error<T, I>
1517 **/1656 **/
1518 PalletTreasuryError: {1657 PalletTreasuryError: {
1519 _enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals', 'InsufficientPermission', 'ProposalNotApproved']1658 _enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals', 'InsufficientPermission', 'ProposalNotApproved']
1520 },1659 },
1521 /**1660 /**
1522 * Lookup190: pallet_sudo::pallet::Call<T>1661 * Lookup196: pallet_sudo::pallet::Call<T>
1523 **/1662 **/
1524 PalletSudoCall: {1663 PalletSudoCall: {
1525 _enum: {1664 _enum: {
1526 sudo: {1665 sudo: {
1542 }1681 }
1543 }1682 }
1544 },1683 },
1545 /**1684 /**
1546 * Lookup192: orml_vesting::module::Call<T>1685 * Lookup198: orml_vesting::module::Call<T>
1547 **/1686 **/
1548 OrmlVestingModuleCall: {1687 OrmlVestingModuleCall: {
1549 _enum: {1688 _enum: {
1550 claim: 'Null',1689 claim: 'Null',
1561 }1700 }
1562 }1701 }
1563 },1702 },
1703 /**
1704 * Lookup200: orml_xtokens::module::Call<T>
1705 **/
1706 OrmlXtokensModuleCall: {
1707 _enum: {
1708 transfer: {
1709 currencyId: 'PalletForeignAssetsAssetIds',
1710 amount: 'u128',
1711 dest: 'XcmVersionedMultiLocation',
1712 destWeight: 'u64',
1713 },
1714 transfer_multiasset: {
1715 asset: 'XcmVersionedMultiAsset',
1716 dest: 'XcmVersionedMultiLocation',
1717 destWeight: 'u64',
1718 },
1719 transfer_with_fee: {
1720 currencyId: 'PalletForeignAssetsAssetIds',
1721 amount: 'u128',
1722 fee: 'u128',
1723 dest: 'XcmVersionedMultiLocation',
1724 destWeight: 'u64',
1725 },
1726 transfer_multiasset_with_fee: {
1727 asset: 'XcmVersionedMultiAsset',
1728 fee: 'XcmVersionedMultiAsset',
1729 dest: 'XcmVersionedMultiLocation',
1730 destWeight: 'u64',
1731 },
1732 transfer_multicurrencies: {
1733 currencies: 'Vec<(PalletForeignAssetsAssetIds,u128)>',
1734 feeItem: 'u32',
1735 dest: 'XcmVersionedMultiLocation',
1736 destWeight: 'u64',
1737 },
1738 transfer_multiassets: {
1739 assets: 'XcmVersionedMultiAssets',
1740 feeItem: 'u32',
1741 dest: 'XcmVersionedMultiLocation',
1742 destWeight: 'u64'
1743 }
1744 }
1745 },
1746 /**
1747 * Lookup201: xcm::VersionedMultiAsset
1748 **/
1749 XcmVersionedMultiAsset: {
1750 _enum: {
1751 V0: 'XcmV0MultiAsset',
1752 V1: 'XcmV1MultiAsset'
1753 }
1754 },
1755 /**
1756 * Lookup204: orml_tokens::module::Call<T>
1757 **/
1758 OrmlTokensModuleCall: {
1759 _enum: {
1760 transfer: {
1761 dest: 'MultiAddress',
1762 currencyId: 'PalletForeignAssetsAssetIds',
1763 amount: 'Compact<u128>',
1764 },
1765 transfer_all: {
1766 dest: 'MultiAddress',
1767 currencyId: 'PalletForeignAssetsAssetIds',
1768 keepAlive: 'bool',
1769 },
1770 transfer_keep_alive: {
1771 dest: 'MultiAddress',
1772 currencyId: 'PalletForeignAssetsAssetIds',
1773 amount: 'Compact<u128>',
1774 },
1775 force_transfer: {
1776 source: 'MultiAddress',
1777 dest: 'MultiAddress',
1778 currencyId: 'PalletForeignAssetsAssetIds',
1779 amount: 'Compact<u128>',
1780 },
1781 set_balance: {
1782 who: 'MultiAddress',
1783 currencyId: 'PalletForeignAssetsAssetIds',
1784 newFree: 'Compact<u128>',
1785 newReserved: 'Compact<u128>'
1786 }
1787 }
1788 },
1564 /**1789 /**
1565 * Lookup194: cumulus_pallet_xcmp_queue::pallet::Call<T>1790 * Lookup205: cumulus_pallet_xcmp_queue::pallet::Call<T>
1566 **/1791 **/
1567 CumulusPalletXcmpQueueCall: {1792 CumulusPalletXcmpQueueCall: {
1568 _enum: {1793 _enum: {
1569 service_overweight: {1794 service_overweight: {
1610 }1835 }
1611 }1836 }
1612 },1837 },
1613 /**1838 /**
1614 * Lookup195: pallet_xcm::pallet::Call<T>1839 * Lookup206: pallet_xcm::pallet::Call<T>
1615 **/1840 **/
1616 PalletXcmCall: {1841 PalletXcmCall: {
1617 _enum: {1842 _enum: {
1618 send: {1843 send: {
1664 }1889 }
1665 }1890 }
1666 },1891 },
1667 /**1892 /**
1668 * Lookup196: xcm::VersionedXcm<Call>1893 * Lookup207: xcm::VersionedXcm<Call>
1669 **/1894 **/
1670 XcmVersionedXcm: {1895 XcmVersionedXcm: {
1671 _enum: {1896 _enum: {
1672 V0: 'XcmV0Xcm',1897 V0: 'XcmV0Xcm',
1673 V1: 'XcmV1Xcm',1898 V1: 'XcmV1Xcm',
1674 V2: 'XcmV2Xcm'1899 V2: 'XcmV2Xcm'
1675 }1900 }
1676 },1901 },
1677 /**1902 /**
1678 * Lookup197: xcm::v0::Xcm<Call>1903 * Lookup208: xcm::v0::Xcm<Call>
1679 **/1904 **/
1680 XcmV0Xcm: {1905 XcmV0Xcm: {
1681 _enum: {1906 _enum: {
1682 WithdrawAsset: {1907 WithdrawAsset: {
1728 }1953 }
1729 }1954 }
1730 },1955 },
1731 /**1956 /**
1732 * Lookup199: xcm::v0::order::Order<Call>1957 * Lookup210: xcm::v0::order::Order<Call>
1733 **/1958 **/
1734 XcmV0Order: {1959 XcmV0Order: {
1735 _enum: {1960 _enum: {
1736 Null: 'Null',1961 Null: 'Null',
1771 }1996 }
1772 }1997 }
1773 },1998 },
1774 /**1999 /**
1775 * Lookup201: xcm::v0::Response2000 * Lookup212: xcm::v0::Response
1776 **/2001 **/
1777 XcmV0Response: {2002 XcmV0Response: {
1778 _enum: {2003 _enum: {
1779 Assets: 'Vec<XcmV0MultiAsset>'2004 Assets: 'Vec<XcmV0MultiAsset>'
1780 }2005 }
1781 },2006 },
1782 /**2007 /**
1783 * Lookup202: xcm::v1::Xcm<Call>2008 * Lookup213: xcm::v1::Xcm<Call>
1784 **/2009 **/
1785 XcmV1Xcm: {2010 XcmV1Xcm: {
1786 _enum: {2011 _enum: {
1787 WithdrawAsset: {2012 WithdrawAsset: {
1838 UnsubscribeVersion: 'Null'2063 UnsubscribeVersion: 'Null'
1839 }2064 }
1840 },2065 },
1841 /**2066 /**
1842 * Lookup204: xcm::v1::order::Order<Call>2067 * Lookup215: xcm::v1::order::Order<Call>
1843 **/2068 **/
1844 XcmV1Order: {2069 XcmV1Order: {
1845 _enum: {2070 _enum: {
1846 Noop: 'Null',2071 Noop: 'Null',
1883 }2108 }
1884 }2109 }
1885 },2110 },
1886 /**2111 /**
1887 * Lookup206: xcm::v1::Response2112 * Lookup217: xcm::v1::Response
1888 **/2113 **/
1889 XcmV1Response: {2114 XcmV1Response: {
1890 _enum: {2115 _enum: {
1891 Assets: 'XcmV1MultiassetMultiAssets',2116 Assets: 'XcmV1MultiassetMultiAssets',
1892 Version: 'u32'2117 Version: 'u32'
1893 }2118 }
1894 },2119 },
1895 /**2120 /**
1896 * Lookup220: cumulus_pallet_xcm::pallet::Call<T>2121 * Lookup231: cumulus_pallet_xcm::pallet::Call<T>
1897 **/2122 **/
1898 CumulusPalletXcmCall: 'Null',2123 CumulusPalletXcmCall: 'Null',
1899 /**2124 /**
1900 * Lookup221: cumulus_pallet_dmp_queue::pallet::Call<T>2125 * Lookup232: cumulus_pallet_dmp_queue::pallet::Call<T>
1901 **/2126 **/
1902 CumulusPalletDmpQueueCall: {2127 CumulusPalletDmpQueueCall: {
1903 _enum: {2128 _enum: {
1904 service_overweight: {2129 service_overweight: {
1907 }2132 }
1908 }2133 }
1909 },2134 },
1910 /**2135 /**
1911 * Lookup222: pallet_inflation::pallet::Call<T>2136 * Lookup233: pallet_inflation::pallet::Call<T>
1912 **/2137 **/
1913 PalletInflationCall: {2138 PalletInflationCall: {
1914 _enum: {2139 _enum: {
1915 start_inflation: {2140 start_inflation: {
1916 inflationStartRelayBlock: 'u32'2141 inflationStartRelayBlock: 'u32'
1917 }2142 }
1918 }2143 }
1919 },2144 },
1920 /**2145 /**
1921 * Lookup223: pallet_unique::Call<T>2146 * Lookup234: pallet_unique::Call<T>
1922 **/2147 **/
1923 PalletUniqueCall: {2148 PalletUniqueCall: {
1924 _enum: {2149 _enum: {
1925 create_collection: {2150 create_collection: {
2049 }2274 }
2050 }2275 }
2051 },2276 },
2052 /**2277 /**
2053 * Lookup228: up_data_structs::CollectionMode2278 * Lookup239: up_data_structs::CollectionMode
2054 **/2279 **/
2055 UpDataStructsCollectionMode: {2280 UpDataStructsCollectionMode: {
2056 _enum: {2281 _enum: {
2057 NFT: 'Null',2282 NFT: 'Null',
2058 Fungible: 'u8',2283 Fungible: 'u8',
2059 ReFungible: 'Null'2284 ReFungible: 'Null'
2060 }2285 }
2061 },2286 },
2062 /**2287 /**
2063 * Lookup229: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>2288 * Lookup240: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
2064 **/2289 **/
2065 UpDataStructsCreateCollectionData: {2290 UpDataStructsCreateCollectionData: {
2066 mode: 'UpDataStructsCollectionMode',2291 mode: 'UpDataStructsCollectionMode',
2067 access: 'Option<UpDataStructsAccessMode>',2292 access: 'Option<UpDataStructsAccessMode>',
2074 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',2299 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
2075 properties: 'Vec<UpDataStructsProperty>'2300 properties: 'Vec<UpDataStructsProperty>'
2076 },2301 },
2077 /**2302 /**
2078 * Lookup231: up_data_structs::AccessMode2303 * Lookup242: up_data_structs::AccessMode
2079 **/2304 **/
2080 UpDataStructsAccessMode: {2305 UpDataStructsAccessMode: {
2081 _enum: ['Normal', 'AllowList']2306 _enum: ['Normal', 'AllowList']
2082 },2307 },
2083 /**2308 /**
2084 * Lookup233: up_data_structs::CollectionLimits2309 * Lookup244: up_data_structs::CollectionLimits
2085 **/2310 **/
2086 UpDataStructsCollectionLimits: {2311 UpDataStructsCollectionLimits: {
2087 accountTokenOwnershipLimit: 'Option<u32>',2312 accountTokenOwnershipLimit: 'Option<u32>',
2088 sponsoredDataSize: 'Option<u32>',2313 sponsoredDataSize: 'Option<u32>',
2094 ownerCanDestroy: 'Option<bool>',2319 ownerCanDestroy: 'Option<bool>',
2095 transfersEnabled: 'Option<bool>'2320 transfersEnabled: 'Option<bool>'
2096 },2321 },
2097 /**2322 /**
2098 * Lookup235: up_data_structs::SponsoringRateLimit2323 * Lookup246: up_data_structs::SponsoringRateLimit
2099 **/2324 **/
2100 UpDataStructsSponsoringRateLimit: {2325 UpDataStructsSponsoringRateLimit: {
2101 _enum: {2326 _enum: {
2102 SponsoringDisabled: 'Null',2327 SponsoringDisabled: 'Null',
2103 Blocks: 'u32'2328 Blocks: 'u32'
2104 }2329 }
2105 },2330 },
2106 /**2331 /**
2107 * Lookup238: up_data_structs::CollectionPermissions2332 * Lookup249: up_data_structs::CollectionPermissions
2108 **/2333 **/
2109 UpDataStructsCollectionPermissions: {2334 UpDataStructsCollectionPermissions: {
2110 access: 'Option<UpDataStructsAccessMode>',2335 access: 'Option<UpDataStructsAccessMode>',
2111 mintMode: 'Option<bool>',2336 mintMode: 'Option<bool>',
2112 nesting: 'Option<UpDataStructsNestingPermissions>'2337 nesting: 'Option<UpDataStructsNestingPermissions>'
2113 },2338 },
2114 /**2339 /**
2115 * Lookup240: up_data_structs::NestingPermissions2340 * Lookup251: up_data_structs::NestingPermissions
2116 **/2341 **/
2117 UpDataStructsNestingPermissions: {2342 UpDataStructsNestingPermissions: {
2118 tokenOwner: 'bool',2343 tokenOwner: 'bool',
2119 collectionAdmin: 'bool',2344 collectionAdmin: 'bool',
2120 restricted: 'Option<UpDataStructsOwnerRestrictedSet>'2345 restricted: 'Option<UpDataStructsOwnerRestrictedSet>'
2121 },2346 },
2122 /**2347 /**
2123 * Lookup242: up_data_structs::OwnerRestrictedSet2348 * Lookup253: up_data_structs::OwnerRestrictedSet
2124 **/2349 **/
2125 UpDataStructsOwnerRestrictedSet: 'BTreeSet<u32>',2350 UpDataStructsOwnerRestrictedSet: 'BTreeSet<u32>',
2126 /**2351 /**
2127 * Lookup247: up_data_structs::PropertyKeyPermission2352 * Lookup258: up_data_structs::PropertyKeyPermission
2128 **/2353 **/
2129 UpDataStructsPropertyKeyPermission: {2354 UpDataStructsPropertyKeyPermission: {
2130 key: 'Bytes',2355 key: 'Bytes',
2131 permission: 'UpDataStructsPropertyPermission'2356 permission: 'UpDataStructsPropertyPermission'
2132 },2357 },
2133 /**2358 /**
2134 * Lookup248: up_data_structs::PropertyPermission2359 * Lookup259: up_data_structs::PropertyPermission
2135 **/2360 **/
2136 UpDataStructsPropertyPermission: {2361 UpDataStructsPropertyPermission: {
2137 mutable: 'bool',2362 mutable: 'bool',
2138 collectionAdmin: 'bool',2363 collectionAdmin: 'bool',
2139 tokenOwner: 'bool'2364 tokenOwner: 'bool'
2140 },2365 },
2141 /**2366 /**
2142 * Lookup251: up_data_structs::Property2367 * Lookup262: up_data_structs::Property
2143 **/2368 **/
2144 UpDataStructsProperty: {2369 UpDataStructsProperty: {
2145 key: 'Bytes',2370 key: 'Bytes',
2146 value: 'Bytes'2371 value: 'Bytes'
2147 },2372 },
2148 /**2373 /**
2149 * Lookup254: up_data_structs::CreateItemData2374 * Lookup265: up_data_structs::CreateItemData
2150 **/2375 **/
2151 UpDataStructsCreateItemData: {2376 UpDataStructsCreateItemData: {
2152 _enum: {2377 _enum: {
2153 NFT: 'UpDataStructsCreateNftData',2378 NFT: 'UpDataStructsCreateNftData',
2154 Fungible: 'UpDataStructsCreateFungibleData',2379 Fungible: 'UpDataStructsCreateFungibleData',
2155 ReFungible: 'UpDataStructsCreateReFungibleData'2380 ReFungible: 'UpDataStructsCreateReFungibleData'
2156 }2381 }
2157 },2382 },
2158 /**2383 /**
2159 * Lookup255: up_data_structs::CreateNftData2384 * Lookup266: up_data_structs::CreateNftData
2160 **/2385 **/
2161 UpDataStructsCreateNftData: {2386 UpDataStructsCreateNftData: {
2162 properties: 'Vec<UpDataStructsProperty>'2387 properties: 'Vec<UpDataStructsProperty>'
2163 },2388 },
2164 /**2389 /**
2165 * Lookup256: up_data_structs::CreateFungibleData2390 * Lookup267: up_data_structs::CreateFungibleData
2166 **/2391 **/
2167 UpDataStructsCreateFungibleData: {2392 UpDataStructsCreateFungibleData: {
2168 value: 'u128'2393 value: 'u128'
2169 },2394 },
2170 /**2395 /**
2171 * Lookup257: up_data_structs::CreateReFungibleData2396 * Lookup268: up_data_structs::CreateReFungibleData
2172 **/2397 **/
2173 UpDataStructsCreateReFungibleData: {2398 UpDataStructsCreateReFungibleData: {
2174 pieces: 'u128',2399 pieces: 'u128',
2175 properties: 'Vec<UpDataStructsProperty>'2400 properties: 'Vec<UpDataStructsProperty>'
2176 },2401 },
2177 /**2402 /**
2178 * Lookup260: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2403 * Lookup271: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2179 **/2404 **/
2180 UpDataStructsCreateItemExData: {2405 UpDataStructsCreateItemExData: {
2181 _enum: {2406 _enum: {
2182 NFT: 'Vec<UpDataStructsCreateNftExData>',2407 NFT: 'Vec<UpDataStructsCreateNftExData>',
2185 RefungibleMultipleOwners: 'UpDataStructsCreateRefungibleExMultipleOwners'2410 RefungibleMultipleOwners: 'UpDataStructsCreateRefungibleExMultipleOwners'
2186 }2411 }
2187 },2412 },
2188 /**2413 /**
2189 * Lookup262: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2414 * Lookup273: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2190 **/2415 **/
2191 UpDataStructsCreateNftExData: {2416 UpDataStructsCreateNftExData: {
2192 properties: 'Vec<UpDataStructsProperty>',2417 properties: 'Vec<UpDataStructsProperty>',
2193 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2418 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
2194 },2419 },
2195 /**2420 /**
2196 * Lookup269: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2421 * Lookup280: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2197 **/2422 **/
2198 UpDataStructsCreateRefungibleExSingleOwner: {2423 UpDataStructsCreateRefungibleExSingleOwner: {
2199 user: 'PalletEvmAccountBasicCrossAccountIdRepr',2424 user: 'PalletEvmAccountBasicCrossAccountIdRepr',
2200 pieces: 'u128',2425 pieces: 'u128',
2201 properties: 'Vec<UpDataStructsProperty>'2426 properties: 'Vec<UpDataStructsProperty>'
2202 },2427 },
2203 /**2428 /**
2204 * Lookup271: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2429 * Lookup282: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2205 **/2430 **/
2206 UpDataStructsCreateRefungibleExMultipleOwners: {2431 UpDataStructsCreateRefungibleExMultipleOwners: {
2207 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',2432 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',
2208 properties: 'Vec<UpDataStructsProperty>'2433 properties: 'Vec<UpDataStructsProperty>'
2209 },2434 },
2210 /**2435 /**
2211 * Lookup272: pallet_unique_scheduler::pallet::Call<T>2436 * Lookup283: pallet_unique_scheduler::pallet::Call<T>
2212 **/2437 **/
2213 PalletUniqueSchedulerCall: {2438 PalletUniqueSchedulerCall: {
2214 _enum: {2439 _enum: {
2215 schedule_named: {2440 schedule_named: {
2231 }2456 }
2232 }2457 }
2233 },2458 },
2234 /**2459 /**
2235 * Lookup274: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>2460 * Lookup285: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>
2236 **/2461 **/
2237 FrameSupportScheduleMaybeHashed: {2462 FrameSupportScheduleMaybeHashed: {
2238 _enum: {2463 _enum: {
2239 Value: 'Call',2464 Value: 'Call',
2240 Hash: 'H256'2465 Hash: 'H256'
2241 }2466 }
2242 },2467 },
2243 /**2468 /**
2244 * Lookup275: pallet_configuration::pallet::Call<T>2469 * Lookup286: pallet_configuration::pallet::Call<T>
2245 **/2470 **/
2246 PalletConfigurationCall: {2471 PalletConfigurationCall: {
2247 _enum: {2472 _enum: {
2248 set_weight_to_fee_coefficient_override: {2473 set_weight_to_fee_coefficient_override: {
2253 }2478 }
2254 }2479 }
2255 },2480 },
2256 /**2481 /**
2257 * Lookup276: pallet_template_transaction_payment::Call<T>2482 * Lookup287: pallet_template_transaction_payment::Call<T>
2258 **/2483 **/
2259 PalletTemplateTransactionPaymentCall: 'Null',2484 PalletTemplateTransactionPaymentCall: 'Null',
2260 /**2485 /**
2261 * Lookup277: pallet_structure::pallet::Call<T>2486 * Lookup288: pallet_structure::pallet::Call<T>
2262 **/2487 **/
2263 PalletStructureCall: 'Null',2488 PalletStructureCall: 'Null',
2264 /**2489 /**
2265 * Lookup278: pallet_rmrk_core::pallet::Call<T>2490 * Lookup289: pallet_rmrk_core::pallet::Call<T>
2266 **/2491 **/
2267 PalletRmrkCoreCall: {2492 PalletRmrkCoreCall: {
2268 _enum: {2493 _enum: {
2269 create_collection: {2494 create_collection: {
2352 }2577 }
2353 }2578 }
2354 },2579 },
2355 /**2580 /**
2356 * Lookup284: rmrk_traits::resource::ResourceTypes<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2581 * Lookup295: rmrk_traits::resource::ResourceTypes<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2357 **/2582 **/
2358 RmrkTraitsResourceResourceTypes: {2583 RmrkTraitsResourceResourceTypes: {
2359 _enum: {2584 _enum: {
2360 Basic: 'RmrkTraitsResourceBasicResource',2585 Basic: 'RmrkTraitsResourceBasicResource',
2361 Composable: 'RmrkTraitsResourceComposableResource',2586 Composable: 'RmrkTraitsResourceComposableResource',
2362 Slot: 'RmrkTraitsResourceSlotResource'2587 Slot: 'RmrkTraitsResourceSlotResource'
2363 }2588 }
2364 },2589 },
2365 /**2590 /**
2366 * Lookup286: rmrk_traits::resource::BasicResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2591 * Lookup297: rmrk_traits::resource::BasicResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2367 **/2592 **/
2368 RmrkTraitsResourceBasicResource: {2593 RmrkTraitsResourceBasicResource: {
2369 src: 'Option<Bytes>',2594 src: 'Option<Bytes>',
2370 metadata: 'Option<Bytes>',2595 metadata: 'Option<Bytes>',
2371 license: 'Option<Bytes>',2596 license: 'Option<Bytes>',
2372 thumb: 'Option<Bytes>'2597 thumb: 'Option<Bytes>'
2373 },2598 },
2374 /**2599 /**
2375 * Lookup288: rmrk_traits::resource::ComposableResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2600 * Lookup299: rmrk_traits::resource::ComposableResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2376 **/2601 **/
2377 RmrkTraitsResourceComposableResource: {2602 RmrkTraitsResourceComposableResource: {
2378 parts: 'Vec<u32>',2603 parts: 'Vec<u32>',
2379 base: 'u32',2604 base: 'u32',
2382 license: 'Option<Bytes>',2607 license: 'Option<Bytes>',
2383 thumb: 'Option<Bytes>'2608 thumb: 'Option<Bytes>'
2384 },2609 },
2385 /**2610 /**
2386 * Lookup289: rmrk_traits::resource::SlotResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2611 * Lookup300: rmrk_traits::resource::SlotResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2387 **/2612 **/
2388 RmrkTraitsResourceSlotResource: {2613 RmrkTraitsResourceSlotResource: {
2389 base: 'u32',2614 base: 'u32',
2390 src: 'Option<Bytes>',2615 src: 'Option<Bytes>',
2393 license: 'Option<Bytes>',2618 license: 'Option<Bytes>',
2394 thumb: 'Option<Bytes>'2619 thumb: 'Option<Bytes>'
2395 },2620 },
2396 /**2621 /**
2397 * Lookup292: pallet_rmrk_equip::pallet::Call<T>2622 * Lookup303: pallet_rmrk_equip::pallet::Call<T>
2398 **/2623 **/
2399 PalletRmrkEquipCall: {2624 PalletRmrkEquipCall: {
2400 _enum: {2625 _enum: {
2401 create_base: {2626 create_base: {
2414 }2639 }
2415 }2640 }
2416 },2641 },
2417 /**2642 /**
2418 * Lookup295: rmrk_traits::part::PartType<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2643 * Lookup306: rmrk_traits::part::PartType<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2419 **/2644 **/
2420 RmrkTraitsPartPartType: {2645 RmrkTraitsPartPartType: {
2421 _enum: {2646 _enum: {
2422 FixedPart: 'RmrkTraitsPartFixedPart',2647 FixedPart: 'RmrkTraitsPartFixedPart',
2423 SlotPart: 'RmrkTraitsPartSlotPart'2648 SlotPart: 'RmrkTraitsPartSlotPart'
2424 }2649 }
2425 },2650 },
2426 /**2651 /**
2427 * Lookup297: rmrk_traits::part::FixedPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2652 * Lookup308: rmrk_traits::part::FixedPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2428 **/2653 **/
2429 RmrkTraitsPartFixedPart: {2654 RmrkTraitsPartFixedPart: {
2430 id: 'u32',2655 id: 'u32',
2431 z: 'u32',2656 z: 'u32',
2432 src: 'Bytes'2657 src: 'Bytes'
2433 },2658 },
2434 /**2659 /**
2435 * Lookup298: rmrk_traits::part::SlotPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2660 * Lookup309: rmrk_traits::part::SlotPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2436 **/2661 **/
2437 RmrkTraitsPartSlotPart: {2662 RmrkTraitsPartSlotPart: {
2438 id: 'u32',2663 id: 'u32',
2439 equippable: 'RmrkTraitsPartEquippableList',2664 equippable: 'RmrkTraitsPartEquippableList',
2440 src: 'Bytes',2665 src: 'Bytes',
2441 z: 'u32'2666 z: 'u32'
2442 },2667 },
2443 /**2668 /**
2444 * Lookup299: rmrk_traits::part::EquippableList<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2669 * Lookup310: rmrk_traits::part::EquippableList<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2445 **/2670 **/
2446 RmrkTraitsPartEquippableList: {2671 RmrkTraitsPartEquippableList: {
2447 _enum: {2672 _enum: {
2448 All: 'Null',2673 All: 'Null',
2449 Empty: 'Null',2674 Empty: 'Null',
2450 Custom: 'Vec<u32>'2675 Custom: 'Vec<u32>'
2451 }2676 }
2452 },2677 },
2453 /**2678 /**
2454 * Lookup301: 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>>2679 * Lookup312: 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>>
2455 **/2680 **/
2456 RmrkTraitsTheme: {2681 RmrkTraitsTheme: {
2457 name: 'Bytes',2682 name: 'Bytes',
2458 properties: 'Vec<RmrkTraitsThemeThemeProperty>',2683 properties: 'Vec<RmrkTraitsThemeThemeProperty>',
2459 inherit: 'bool'2684 inherit: 'bool'
2460 },2685 },
2461 /**2686 /**
2462 * Lookup303: rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>2687 * Lookup314: rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2463 **/2688 **/
2464 RmrkTraitsThemeThemeProperty: {2689 RmrkTraitsThemeThemeProperty: {
2465 key: 'Bytes',2690 key: 'Bytes',
2466 value: 'Bytes'2691 value: 'Bytes'
2467 },2692 },
2468 /**2693 /**
2469 * Lookup305: pallet_app_promotion::pallet::Call<T>2694 * Lookup316: pallet_app_promotion::pallet::Call<T>
2470 **/2695 **/
2471 PalletAppPromotionCall: {2696 PalletAppPromotionCall: {
2472 _enum: {2697 _enum: {
2473 set_admin_address: {2698 set_admin_address: {
2494 }2719 }
2495 }2720 }
2496 },2721 },
2722 /**
2723 * Lookup318: pallet_foreign_assets::module::Call<T>
2724 **/
2725 PalletForeignAssetsModuleCall: {
2726 _enum: {
2727 register_foreign_asset: {
2728 owner: 'AccountId32',
2729 location: 'XcmVersionedMultiLocation',
2730 metadata: 'PalletForeignAssetsModuleAssetMetadata',
2731 },
2732 update_foreign_asset: {
2733 foreignAssetId: 'u32',
2734 location: 'XcmVersionedMultiLocation',
2735 metadata: 'PalletForeignAssetsModuleAssetMetadata'
2736 }
2737 }
2738 },
2497 /**2739 /**
2498 * Lookup307: pallet_evm::pallet::Call<T>2740 * Lookup319: pallet_evm::pallet::Call<T>
2499 **/2741 **/
2500 PalletEvmCall: {2742 PalletEvmCall: {
2501 _enum: {2743 _enum: {
2502 withdraw: {2744 withdraw: {
2537 }2779 }
2538 }2780 }
2539 },2781 },
2540 /**2782 /**
2541 * Lookup311: pallet_ethereum::pallet::Call<T>2783 * Lookup323: pallet_ethereum::pallet::Call<T>
2542 **/2784 **/
2543 PalletEthereumCall: {2785 PalletEthereumCall: {
2544 _enum: {2786 _enum: {
2545 transact: {2787 transact: {
2546 transaction: 'EthereumTransactionTransactionV2'2788 transaction: 'EthereumTransactionTransactionV2'
2547 }2789 }
2548 }2790 }
2549 },2791 },
2550 /**2792 /**
2551 * Lookup312: ethereum::transaction::TransactionV22793 * Lookup324: ethereum::transaction::TransactionV2
2552 **/2794 **/
2553 EthereumTransactionTransactionV2: {2795 EthereumTransactionTransactionV2: {
2554 _enum: {2796 _enum: {
2555 Legacy: 'EthereumTransactionLegacyTransaction',2797 Legacy: 'EthereumTransactionLegacyTransaction',
2556 EIP2930: 'EthereumTransactionEip2930Transaction',2798 EIP2930: 'EthereumTransactionEip2930Transaction',
2557 EIP1559: 'EthereumTransactionEip1559Transaction'2799 EIP1559: 'EthereumTransactionEip1559Transaction'
2558 }2800 }
2559 },2801 },
2560 /**2802 /**
2561 * Lookup313: ethereum::transaction::LegacyTransaction2803 * Lookup325: ethereum::transaction::LegacyTransaction
2562 **/2804 **/
2563 EthereumTransactionLegacyTransaction: {2805 EthereumTransactionLegacyTransaction: {
2564 nonce: 'U256',2806 nonce: 'U256',
2565 gasPrice: 'U256',2807 gasPrice: 'U256',
2569 input: 'Bytes',2811 input: 'Bytes',
2570 signature: 'EthereumTransactionTransactionSignature'2812 signature: 'EthereumTransactionTransactionSignature'
2571 },2813 },
2572 /**2814 /**
2573 * Lookup314: ethereum::transaction::TransactionAction2815 * Lookup326: ethereum::transaction::TransactionAction
2574 **/2816 **/
2575 EthereumTransactionTransactionAction: {2817 EthereumTransactionTransactionAction: {
2576 _enum: {2818 _enum: {
2577 Call: 'H160',2819 Call: 'H160',
2578 Create: 'Null'2820 Create: 'Null'
2579 }2821 }
2580 },2822 },
2581 /**2823 /**
2582 * Lookup315: ethereum::transaction::TransactionSignature2824 * Lookup327: ethereum::transaction::TransactionSignature
2583 **/2825 **/
2584 EthereumTransactionTransactionSignature: {2826 EthereumTransactionTransactionSignature: {
2585 v: 'u64',2827 v: 'u64',
2586 r: 'H256',2828 r: 'H256',
2587 s: 'H256'2829 s: 'H256'
2588 },2830 },
2589 /**2831 /**
2590 * Lookup317: ethereum::transaction::EIP2930Transaction2832 * Lookup329: ethereum::transaction::EIP2930Transaction
2591 **/2833 **/
2592 EthereumTransactionEip2930Transaction: {2834 EthereumTransactionEip2930Transaction: {
2593 chainId: 'u64',2835 chainId: 'u64',
2594 nonce: 'U256',2836 nonce: 'U256',
2602 r: 'H256',2844 r: 'H256',
2603 s: 'H256'2845 s: 'H256'
2604 },2846 },
2605 /**2847 /**
2606 * Lookup319: ethereum::transaction::AccessListItem2848 * Lookup331: ethereum::transaction::AccessListItem
2607 **/2849 **/
2608 EthereumTransactionAccessListItem: {2850 EthereumTransactionAccessListItem: {
2609 address: 'H160',2851 address: 'H160',
2610 storageKeys: 'Vec<H256>'2852 storageKeys: 'Vec<H256>'
2611 },2853 },
2612 /**2854 /**
2613 * Lookup320: ethereum::transaction::EIP1559Transaction2855 * Lookup332: ethereum::transaction::EIP1559Transaction
2614 **/2856 **/
2615 EthereumTransactionEip1559Transaction: {2857 EthereumTransactionEip1559Transaction: {
2616 chainId: 'u64',2858 chainId: 'u64',
2617 nonce: 'U256',2859 nonce: 'U256',
2626 r: 'H256',2868 r: 'H256',
2627 s: 'H256'2869 s: 'H256'
2628 },2870 },
2629 /**2871 /**
2630 * Lookup321: pallet_evm_migration::pallet::Call<T>2872 * Lookup333: pallet_evm_migration::pallet::Call<T>
2631 **/2873 **/
2632 PalletEvmMigrationCall: {2874 PalletEvmMigrationCall: {
2633 _enum: {2875 _enum: {
2634 begin: {2876 begin: {
2644 }2886 }
2645 }2887 }
2646 },2888 },
2647 /**2889 /**
2648 * Lookup324: pallet_sudo::pallet::Error<T>2890 * Lookup336: pallet_sudo::pallet::Error<T>
2649 **/2891 **/
2650 PalletSudoError: {2892 PalletSudoError: {
2651 _enum: ['RequireSudo']2893 _enum: ['RequireSudo']
2652 },2894 },
2653 /**2895 /**
2654 * Lookup326: orml_vesting::module::Error<T>2896 * Lookup338: orml_vesting::module::Error<T>
2655 **/2897 **/
2656 OrmlVestingModuleError: {2898 OrmlVestingModuleError: {
2657 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2899 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
2658 },2900 },
2901 /**
2902 * Lookup339: orml_xtokens::module::Error<T>
2903 **/
2904 OrmlXtokensModuleError: {
2905 _enum: ['AssetHasNoReserve', 'NotCrossChainTransfer', 'InvalidDest', 'NotCrossChainTransferableCurrency', 'UnweighableMessage', 'XcmExecutionFailed', 'CannotReanchor', 'InvalidAncestry', 'InvalidAsset', 'DestinationNotInvertible', 'BadVersion', 'DistinctReserveForAssetAndFee', 'ZeroFee', 'ZeroAmount', 'TooManyAssetsBeingSent', 'AssetIndexNonExistent', 'FeeNotEnough', 'NotSupportedMultiLocation', 'MinXcmFeeNotDefined']
2906 },
2907 /**
2908 * Lookup342: orml_tokens::BalanceLock<Balance>
2909 **/
2910 OrmlTokensBalanceLock: {
2911 id: '[u8;8]',
2912 amount: 'u128'
2913 },
2914 /**
2915 * Lookup344: orml_tokens::AccountData<Balance>
2916 **/
2917 OrmlTokensAccountData: {
2918 free: 'u128',
2919 reserved: 'u128',
2920 frozen: 'u128'
2921 },
2922 /**
2923 * Lookup346: orml_tokens::ReserveData<ReserveIdentifier, Balance>
2924 **/
2925 OrmlTokensReserveData: {
2926 id: 'Null',
2927 amount: 'u128'
2928 },
2929 /**
2930 * Lookup348: orml_tokens::module::Error<T>
2931 **/
2932 OrmlTokensModuleError: {
2933 _enum: ['BalanceTooLow', 'AmountIntoBalanceFailed', 'LiquidityRestrictions', 'MaxLocksExceeded', 'KeepAlive', 'ExistentialDeposit', 'DeadAccount', 'TooManyReserves']
2934 },
2659 /**2935 /**
2660 * Lookup328: cumulus_pallet_xcmp_queue::InboundChannelDetails2936 * Lookup350: cumulus_pallet_xcmp_queue::InboundChannelDetails
2661 **/2937 **/
2662 CumulusPalletXcmpQueueInboundChannelDetails: {2938 CumulusPalletXcmpQueueInboundChannelDetails: {
2663 sender: 'u32',2939 sender: 'u32',
2664 state: 'CumulusPalletXcmpQueueInboundState',2940 state: 'CumulusPalletXcmpQueueInboundState',
2665 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2941 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
2666 },2942 },
2667 /**2943 /**
2668 * Lookup329: cumulus_pallet_xcmp_queue::InboundState2944 * Lookup351: cumulus_pallet_xcmp_queue::InboundState
2669 **/2945 **/
2670 CumulusPalletXcmpQueueInboundState: {2946 CumulusPalletXcmpQueueInboundState: {
2671 _enum: ['Ok', 'Suspended']2947 _enum: ['Ok', 'Suspended']
2672 },2948 },
2673 /**2949 /**
2674 * Lookup332: polkadot_parachain::primitives::XcmpMessageFormat2950 * Lookup354: polkadot_parachain::primitives::XcmpMessageFormat
2675 **/2951 **/
2676 PolkadotParachainPrimitivesXcmpMessageFormat: {2952 PolkadotParachainPrimitivesXcmpMessageFormat: {
2677 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2953 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
2678 },2954 },
2679 /**2955 /**
2680 * Lookup335: cumulus_pallet_xcmp_queue::OutboundChannelDetails2956 * Lookup357: cumulus_pallet_xcmp_queue::OutboundChannelDetails
2681 **/2957 **/
2682 CumulusPalletXcmpQueueOutboundChannelDetails: {2958 CumulusPalletXcmpQueueOutboundChannelDetails: {
2683 recipient: 'u32',2959 recipient: 'u32',
2684 state: 'CumulusPalletXcmpQueueOutboundState',2960 state: 'CumulusPalletXcmpQueueOutboundState',
2685 signalsExist: 'bool',2961 signalsExist: 'bool',
2686 firstIndex: 'u16',2962 firstIndex: 'u16',
2687 lastIndex: 'u16'2963 lastIndex: 'u16'
2688 },2964 },
2689 /**2965 /**
2690 * Lookup336: cumulus_pallet_xcmp_queue::OutboundState2966 * Lookup358: cumulus_pallet_xcmp_queue::OutboundState
2691 **/2967 **/
2692 CumulusPalletXcmpQueueOutboundState: {2968 CumulusPalletXcmpQueueOutboundState: {
2693 _enum: ['Ok', 'Suspended']2969 _enum: ['Ok', 'Suspended']
2694 },2970 },
2695 /**2971 /**
2696 * Lookup338: cumulus_pallet_xcmp_queue::QueueConfigData2972 * Lookup360: cumulus_pallet_xcmp_queue::QueueConfigData
2697 **/2973 **/
2698 CumulusPalletXcmpQueueQueueConfigData: {2974 CumulusPalletXcmpQueueQueueConfigData: {
2699 suspendThreshold: 'u32',2975 suspendThreshold: 'u32',
2700 dropThreshold: 'u32',2976 dropThreshold: 'u32',
2703 weightRestrictDecay: 'u64',2979 weightRestrictDecay: 'u64',
2704 xcmpMaxIndividualWeight: 'u64'2980 xcmpMaxIndividualWeight: 'u64'
2705 },2981 },
2706 /**2982 /**
2707 * Lookup340: cumulus_pallet_xcmp_queue::pallet::Error<T>2983 * Lookup362: cumulus_pallet_xcmp_queue::pallet::Error<T>
2708 **/2984 **/
2709 CumulusPalletXcmpQueueError: {2985 CumulusPalletXcmpQueueError: {
2710 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2986 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
2711 },2987 },
2712 /**2988 /**
2713 * Lookup341: pallet_xcm::pallet::Error<T>2989 * Lookup363: pallet_xcm::pallet::Error<T>
2714 **/2990 **/
2715 PalletXcmError: {2991 PalletXcmError: {
2716 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2992 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
2717 },2993 },
2718 /**2994 /**
2719 * Lookup342: cumulus_pallet_xcm::pallet::Error<T>2995 * Lookup364: cumulus_pallet_xcm::pallet::Error<T>
2720 **/2996 **/
2721 CumulusPalletXcmError: 'Null',2997 CumulusPalletXcmError: 'Null',
2722 /**2998 /**
2723 * Lookup343: cumulus_pallet_dmp_queue::ConfigData2999 * Lookup365: cumulus_pallet_dmp_queue::ConfigData
2724 **/3000 **/
2725 CumulusPalletDmpQueueConfigData: {3001 CumulusPalletDmpQueueConfigData: {
2726 maxIndividual: 'u64'3002 maxIndividual: 'u64'
2727 },3003 },
2728 /**3004 /**
2729 * Lookup344: cumulus_pallet_dmp_queue::PageIndexData3005 * Lookup366: cumulus_pallet_dmp_queue::PageIndexData
2730 **/3006 **/
2731 CumulusPalletDmpQueuePageIndexData: {3007 CumulusPalletDmpQueuePageIndexData: {
2732 beginUsed: 'u32',3008 beginUsed: 'u32',
2733 endUsed: 'u32',3009 endUsed: 'u32',
2734 overweightCount: 'u64'3010 overweightCount: 'u64'
2735 },3011 },
2736 /**3012 /**
2737 * Lookup347: cumulus_pallet_dmp_queue::pallet::Error<T>3013 * Lookup369: cumulus_pallet_dmp_queue::pallet::Error<T>
2738 **/3014 **/
2739 CumulusPalletDmpQueueError: {3015 CumulusPalletDmpQueueError: {
2740 _enum: ['Unknown', 'OverLimit']3016 _enum: ['Unknown', 'OverLimit']
2741 },3017 },
2742 /**3018 /**
2743 * Lookup351: pallet_unique::Error<T>3019 * Lookup373: pallet_unique::Error<T>
2744 **/3020 **/
2745 PalletUniqueError: {3021 PalletUniqueError: {
2746 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']3022 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']
2747 },3023 },
2748 /**3024 /**
2749 * Lookup354: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>3025 * Lookup376: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
2750 **/3026 **/
2751 PalletUniqueSchedulerScheduledV3: {3027 PalletUniqueSchedulerScheduledV3: {
2752 maybeId: 'Option<[u8;16]>',3028 maybeId: 'Option<[u8;16]>',
2753 priority: 'u8',3029 priority: 'u8',
2754 call: 'FrameSupportScheduleMaybeHashed',3030 call: 'FrameSupportScheduleMaybeHashed',
2755 maybePeriodic: 'Option<(u32,u32)>',3031 maybePeriodic: 'Option<(u32,u32)>',
2756 origin: 'OpalRuntimeOriginCaller'3032 origin: 'OpalRuntimeOriginCaller'
2757 },3033 },
2758 /**3034 /**
2759 * Lookup355: opal_runtime::OriginCaller3035 * Lookup377: opal_runtime::OriginCaller
2760 **/3036 **/
2761 OpalRuntimeOriginCaller: {3037 OpalRuntimeOriginCaller: {
2762 _enum: {3038 _enum: {
2763 system: 'FrameSupportDispatchRawOrigin',3039 system: 'FrameSupportDispatchRawOrigin',
2864 Ethereum: 'PalletEthereumRawOrigin'3140 Ethereum: 'PalletEthereumRawOrigin'
2865 }3141 }
2866 },3142 },
2867 /**3143 /**
2868 * Lookup356: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>3144 * Lookup378: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
2869 **/3145 **/
2870 FrameSupportDispatchRawOrigin: {3146 FrameSupportDispatchRawOrigin: {
2871 _enum: {3147 _enum: {
2872 Root: 'Null',3148 Root: 'Null',
2873 Signed: 'AccountId32',3149 Signed: 'AccountId32',
2874 None: 'Null'3150 None: 'Null'
2875 }3151 }
2876 },3152 },
2877 /**3153 /**
2878 * Lookup357: pallet_xcm::pallet::Origin3154 * Lookup379: pallet_xcm::pallet::Origin
2879 **/3155 **/
2880 PalletXcmOrigin: {3156 PalletXcmOrigin: {
2881 _enum: {3157 _enum: {
2882 Xcm: 'XcmV1MultiLocation',3158 Xcm: 'XcmV1MultiLocation',
2883 Response: 'XcmV1MultiLocation'3159 Response: 'XcmV1MultiLocation'
2884 }3160 }
2885 },3161 },
2886 /**3162 /**
2887 * Lookup358: cumulus_pallet_xcm::pallet::Origin3163 * Lookup380: cumulus_pallet_xcm::pallet::Origin
2888 **/3164 **/
2889 CumulusPalletXcmOrigin: {3165 CumulusPalletXcmOrigin: {
2890 _enum: {3166 _enum: {
2891 Relay: 'Null',3167 Relay: 'Null',
2892 SiblingParachain: 'u32'3168 SiblingParachain: 'u32'
2893 }3169 }
2894 },3170 },
2895 /**3171 /**
2896 * Lookup359: pallet_ethereum::RawOrigin3172 * Lookup381: pallet_ethereum::RawOrigin
2897 **/3173 **/
2898 PalletEthereumRawOrigin: {3174 PalletEthereumRawOrigin: {
2899 _enum: {3175 _enum: {
2900 EthereumTransaction: 'H160'3176 EthereumTransaction: 'H160'
2901 }3177 }
2902 },3178 },
2903 /**3179 /**
2904 * Lookup360: sp_core::Void3180 * Lookup382: sp_core::Void
2905 **/3181 **/
2906 SpCoreVoid: 'Null',3182 SpCoreVoid: 'Null',
2907 /**3183 /**
2908 * Lookup361: pallet_unique_scheduler::pallet::Error<T>3184 * Lookup383: pallet_unique_scheduler::pallet::Error<T>
2909 **/3185 **/
2910 PalletUniqueSchedulerError: {3186 PalletUniqueSchedulerError: {
2911 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']3187 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']
2912 },3188 },
2913 /**3189 /**
2914 * Lookup362: up_data_structs::Collection<sp_core::crypto::AccountId32>3190 * Lookup384: up_data_structs::Collection<sp_core::crypto::AccountId32>
2915 **/3191 **/
2916 UpDataStructsCollection: {3192 UpDataStructsCollection: {
2917 owner: 'AccountId32',3193 owner: 'AccountId32',
2918 mode: 'UpDataStructsCollectionMode',3194 mode: 'UpDataStructsCollectionMode',
2922 sponsorship: 'UpDataStructsSponsorshipStateAccountId32',3198 sponsorship: 'UpDataStructsSponsorshipStateAccountId32',
2923 limits: 'UpDataStructsCollectionLimits',3199 limits: 'UpDataStructsCollectionLimits',
2924 permissions: 'UpDataStructsCollectionPermissions',3200 permissions: 'UpDataStructsCollectionPermissions',
2925 externalCollection: 'bool'3201 flags: '[u8;1]'
2926 },3202 },
2927 /**3203 /**
2928 * Lookup363: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>3204 * Lookup385: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
2929 **/3205 **/
2930 UpDataStructsSponsorshipStateAccountId32: {3206 UpDataStructsSponsorshipStateAccountId32: {
2931 _enum: {3207 _enum: {
2932 Disabled: 'Null',3208 Disabled: 'Null',
2933 Unconfirmed: 'AccountId32',3209 Unconfirmed: 'AccountId32',
2934 Confirmed: 'AccountId32'3210 Confirmed: 'AccountId32'
2935 }3211 }
2936 },3212 },
2937 /**3213 /**
2938 * Lookup364: up_data_structs::Properties3214 * Lookup387: up_data_structs::Properties
2939 **/3215 **/
2940 UpDataStructsProperties: {3216 UpDataStructsProperties: {
2941 map: 'UpDataStructsPropertiesMapBoundedVec',3217 map: 'UpDataStructsPropertiesMapBoundedVec',
2942 consumedSpace: 'u32',3218 consumedSpace: 'u32',
2943 spaceLimit: 'u32'3219 spaceLimit: 'u32'
2944 },3220 },
2945 /**3221 /**
2946 * Lookup365: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3222 * Lookup388: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
2947 **/3223 **/
2948 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',3224 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
2949 /**3225 /**
2950 * Lookup370: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>3226 * Lookup393: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
2951 **/3227 **/
2952 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',3228 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
2953 /**3229 /**
2954 * Lookup377: up_data_structs::CollectionStats3230 * Lookup400: up_data_structs::CollectionStats
2955 **/3231 **/
2956 UpDataStructsCollectionStats: {3232 UpDataStructsCollectionStats: {
2957 created: 'u32',3233 created: 'u32',
2958 destroyed: 'u32',3234 destroyed: 'u32',
2959 alive: 'u32'3235 alive: 'u32'
2960 },3236 },
2961 /**3237 /**
2962 * Lookup378: up_data_structs::TokenChild3238 * Lookup401: up_data_structs::TokenChild
2963 **/3239 **/
2964 UpDataStructsTokenChild: {3240 UpDataStructsTokenChild: {
2965 token: 'u32',3241 token: 'u32',
2966 collection: 'u32'3242 collection: 'u32'
2967 },3243 },
2968 /**3244 /**
2969 * Lookup379: PhantomType::up_data_structs<T>3245 * Lookup402: PhantomType::up_data_structs<T>
2970 **/3246 **/
2971 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',3247 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',
2972 /**3248 /**
2973 * Lookup381: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>3249 * Lookup404: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2974 **/3250 **/
2975 UpDataStructsTokenData: {3251 UpDataStructsTokenData: {
2976 properties: 'Vec<UpDataStructsProperty>',3252 properties: 'Vec<UpDataStructsProperty>',
2977 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>',3253 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>',
2978 pieces: 'u128'3254 pieces: 'u128'
2979 },3255 },
2980 /**3256 /**
2981 * Lookup383: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>3257 * Lookup406: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
2982 **/3258 **/
2983 UpDataStructsRpcCollection: {3259 UpDataStructsRpcCollection: {
2984 owner: 'AccountId32',3260 owner: 'AccountId32',
2985 mode: 'UpDataStructsCollectionMode',3261 mode: 'UpDataStructsCollectionMode',
2991 permissions: 'UpDataStructsCollectionPermissions',3267 permissions: 'UpDataStructsCollectionPermissions',
2992 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',3268 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
2993 properties: 'Vec<UpDataStructsProperty>',3269 properties: 'Vec<UpDataStructsProperty>',
2994 readOnly: 'bool'3270 readOnly: 'bool',
3271 foreign: 'bool'
2995 },3272 },
2996 /**3273 /**
2997 * Lookup384: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>3274 * Lookup407: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
2998 **/3275 **/
2999 RmrkTraitsCollectionCollectionInfo: {3276 RmrkTraitsCollectionCollectionInfo: {
3000 issuer: 'AccountId32',3277 issuer: 'AccountId32',
3001 metadata: 'Bytes',3278 metadata: 'Bytes',
3002 max: 'Option<u32>',3279 max: 'Option<u32>',
3003 symbol: 'Bytes',3280 symbol: 'Bytes',
3004 nftsCount: 'u32'3281 nftsCount: 'u32'
3005 },3282 },
3006 /**3283 /**
3007 * Lookup385: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3284 * Lookup408: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
3008 **/3285 **/
3009 RmrkTraitsNftNftInfo: {3286 RmrkTraitsNftNftInfo: {
3010 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',3287 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
3011 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',3288 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',
3012 metadata: 'Bytes',3289 metadata: 'Bytes',
3013 equipped: 'bool',3290 equipped: 'bool',
3014 pending: 'bool'3291 pending: 'bool'
3015 },3292 },
3016 /**3293 /**
3017 * Lookup387: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>3294 * Lookup410: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
3018 **/3295 **/
3019 RmrkTraitsNftRoyaltyInfo: {3296 RmrkTraitsNftRoyaltyInfo: {
3020 recipient: 'AccountId32',3297 recipient: 'AccountId32',
3021 amount: 'Permill'3298 amount: 'Permill'
3022 },3299 },
3023 /**3300 /**
3024 * Lookup388: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3301 * Lookup411: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
3025 **/3302 **/
3026 RmrkTraitsResourceResourceInfo: {3303 RmrkTraitsResourceResourceInfo: {
3027 id: 'u32',3304 id: 'u32',
3028 resource: 'RmrkTraitsResourceResourceTypes',3305 resource: 'RmrkTraitsResourceResourceTypes',
3029 pending: 'bool',3306 pending: 'bool',
3030 pendingRemoval: 'bool'3307 pendingRemoval: 'bool'
3031 },3308 },
3032 /**3309 /**
3033 * Lookup389: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3310 * Lookup412: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
3034 **/3311 **/
3035 RmrkTraitsPropertyPropertyInfo: {3312 RmrkTraitsPropertyPropertyInfo: {
3036 key: 'Bytes',3313 key: 'Bytes',
3037 value: 'Bytes'3314 value: 'Bytes'
3038 },3315 },
3039 /**3316 /**
3040 * Lookup390: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>3317 * Lookup413: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
3041 **/3318 **/
3042 RmrkTraitsBaseBaseInfo: {3319 RmrkTraitsBaseBaseInfo: {
3043 issuer: 'AccountId32',3320 issuer: 'AccountId32',
3044 baseType: 'Bytes',3321 baseType: 'Bytes',
3045 symbol: 'Bytes'3322 symbol: 'Bytes'
3046 },3323 },
3047 /**3324 /**
3048 * Lookup391: rmrk_traits::nft::NftChild3325 * Lookup414: rmrk_traits::nft::NftChild
3049 **/3326 **/
3050 RmrkTraitsNftNftChild: {3327 RmrkTraitsNftNftChild: {
3051 collectionId: 'u32',3328 collectionId: 'u32',
3052 nftId: 'u32'3329 nftId: 'u32'
3053 },3330 },
3054 /**3331 /**
3055 * Lookup393: pallet_common::pallet::Error<T>3332 * Lookup416: pallet_common::pallet::Error<T>
3056 **/3333 **/
3057 PalletCommonError: {3334 PalletCommonError: {
3058 _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']3335 _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']
3059 },3336 },
3060 /**3337 /**
3061 * Lookup395: pallet_fungible::pallet::Error<T>3338 * Lookup418: pallet_fungible::pallet::Error<T>
3062 **/3339 **/
3063 PalletFungibleError: {3340 PalletFungibleError: {
3064 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']3341 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
3065 },3342 },
3066 /**3343 /**
3067 * Lookup396: pallet_refungible::ItemData3344 * Lookup419: pallet_refungible::ItemData
3068 **/3345 **/
3069 PalletRefungibleItemData: {3346 PalletRefungibleItemData: {
3070 constData: 'Bytes'3347 constData: 'Bytes'
3071 },3348 },
3072 /**3349 /**
3073 * Lookup401: pallet_refungible::pallet::Error<T>3350 * Lookup424: pallet_refungible::pallet::Error<T>
3074 **/3351 **/
3075 PalletRefungibleError: {3352 PalletRefungibleError: {
3076 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']3353 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
3077 },3354 },
3078 /**3355 /**
3079 * Lookup402: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>3356 * Lookup425: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
3080 **/3357 **/
3081 PalletNonfungibleItemData: {3358 PalletNonfungibleItemData: {
3082 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'3359 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
3083 },3360 },
3084 /**3361 /**
3085 * Lookup404: up_data_structs::PropertyScope3362 * Lookup427: up_data_structs::PropertyScope
3086 **/3363 **/
3087 UpDataStructsPropertyScope: {3364 UpDataStructsPropertyScope: {
3088 _enum: ['None', 'Rmrk']3365 _enum: ['None', 'Rmrk']
3089 },3366 },
3090 /**3367 /**
3091 * Lookup406: pallet_nonfungible::pallet::Error<T>3368 * Lookup429: pallet_nonfungible::pallet::Error<T>
3092 **/3369 **/
3093 PalletNonfungibleError: {3370 PalletNonfungibleError: {
3094 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']3371 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
3095 },3372 },
3096 /**3373 /**
3097 * Lookup407: pallet_structure::pallet::Error<T>3374 * Lookup430: pallet_structure::pallet::Error<T>
3098 **/3375 **/
3099 PalletStructureError: {3376 PalletStructureError: {
3100 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']3377 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
3101 },3378 },
3102 /**3379 /**
3103 * Lookup408: pallet_rmrk_core::pallet::Error<T>3380 * Lookup431: pallet_rmrk_core::pallet::Error<T>
3104 **/3381 **/
3105 PalletRmrkCoreError: {3382 PalletRmrkCoreError: {
3106 _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']3383 _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
3107 },3384 },
3108 /**3385 /**
3109 * Lookup410: pallet_rmrk_equip::pallet::Error<T>3386 * Lookup433: pallet_rmrk_equip::pallet::Error<T>
3110 **/3387 **/
3111 PalletRmrkEquipError: {3388 PalletRmrkEquipError: {
3112 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']3389 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']
3113 },3390 },
3114 /**3391 /**
3115 * Lookup416: pallet_app_promotion::pallet::Error<T>3392 * Lookup439: pallet_app_promotion::pallet::Error<T>
3116 **/3393 **/
3117 PalletAppPromotionError: {3394 PalletAppPromotionError: {
3118 _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFunds', 'PendingForBlockOverflow', 'SponsorNotSet', 'IncorrectLockedBalanceOperation']3395 _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFunds', 'PendingForBlockOverflow', 'SponsorNotSet', 'IncorrectLockedBalanceOperation']
3119 },3396 },
3397 /**
3398 * Lookup440: pallet_foreign_assets::module::Error<T>
3399 **/
3400 PalletForeignAssetsModuleError: {
3401 _enum: ['BadLocation', 'MultiLocationExisted', 'AssetIdNotExists', 'AssetIdExisted']
3402 },
3120 /**3403 /**
3121 * Lookup419: pallet_evm::pallet::Error<T>3404 * Lookup443: pallet_evm::pallet::Error<T>
3122 **/3405 **/
3123 PalletEvmError: {3406 PalletEvmError: {
3124 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']3407 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
3125 },3408 },
3126 /**3409 /**
3127 * Lookup422: fp_rpc::TransactionStatus3410 * Lookup446: fp_rpc::TransactionStatus
3128 **/3411 **/
3129 FpRpcTransactionStatus: {3412 FpRpcTransactionStatus: {
3130 transactionHash: 'H256',3413 transactionHash: 'H256',
3131 transactionIndex: 'u32',3414 transactionIndex: 'u32',
3135 logs: 'Vec<EthereumLog>',3418 logs: 'Vec<EthereumLog>',
3136 logsBloom: 'EthbloomBloom'3419 logsBloom: 'EthbloomBloom'
3137 },3420 },
3138 /**3421 /**
3139 * Lookup424: ethbloom::Bloom3422 * Lookup448: ethbloom::Bloom
3140 **/3423 **/
3141 EthbloomBloom: '[u8;256]',3424 EthbloomBloom: '[u8;256]',
3142 /**3425 /**
3143 * Lookup426: ethereum::receipt::ReceiptV33426 * Lookup450: ethereum::receipt::ReceiptV3
3144 **/3427 **/
3145 EthereumReceiptReceiptV3: {3428 EthereumReceiptReceiptV3: {
3146 _enum: {3429 _enum: {
3147 Legacy: 'EthereumReceiptEip658ReceiptData',3430 Legacy: 'EthereumReceiptEip658ReceiptData',
3148 EIP2930: 'EthereumReceiptEip658ReceiptData',3431 EIP2930: 'EthereumReceiptEip658ReceiptData',
3149 EIP1559: 'EthereumReceiptEip658ReceiptData'3432 EIP1559: 'EthereumReceiptEip658ReceiptData'
3150 }3433 }
3151 },3434 },
3152 /**3435 /**
3153 * Lookup427: ethereum::receipt::EIP658ReceiptData3436 * Lookup451: ethereum::receipt::EIP658ReceiptData
3154 **/3437 **/
3155 EthereumReceiptEip658ReceiptData: {3438 EthereumReceiptEip658ReceiptData: {
3156 statusCode: 'u8',3439 statusCode: 'u8',
3157 usedGas: 'U256',3440 usedGas: 'U256',
3158 logsBloom: 'EthbloomBloom',3441 logsBloom: 'EthbloomBloom',
3159 logs: 'Vec<EthereumLog>'3442 logs: 'Vec<EthereumLog>'
3160 },3443 },
3161 /**3444 /**
3162 * Lookup428: ethereum::block::Block<ethereum::transaction::TransactionV2>3445 * Lookup452: ethereum::block::Block<ethereum::transaction::TransactionV2>
3163 **/3446 **/
3164 EthereumBlock: {3447 EthereumBlock: {
3165 header: 'EthereumHeader',3448 header: 'EthereumHeader',
3166 transactions: 'Vec<EthereumTransactionTransactionV2>',3449 transactions: 'Vec<EthereumTransactionTransactionV2>',
3167 ommers: 'Vec<EthereumHeader>'3450 ommers: 'Vec<EthereumHeader>'
3168 },3451 },
3169 /**3452 /**
3170 * Lookup429: ethereum::header::Header3453 * Lookup453: ethereum::header::Header
3171 **/3454 **/
3172 EthereumHeader: {3455 EthereumHeader: {
3173 parentHash: 'H256',3456 parentHash: 'H256',
3174 ommersHash: 'H256',3457 ommersHash: 'H256',
3186 mixHash: 'H256',3469 mixHash: 'H256',
3187 nonce: 'EthereumTypesHashH64'3470 nonce: 'EthereumTypesHashH64'
3188 },3471 },
3189 /**3472 /**
3190 * Lookup430: ethereum_types::hash::H643473 * Lookup454: ethereum_types::hash::H64
3191 **/3474 **/
3192 EthereumTypesHashH64: '[u8;8]',3475 EthereumTypesHashH64: '[u8;8]',
3193 /**3476 /**
3194 * Lookup435: pallet_ethereum::pallet::Error<T>3477 * Lookup459: pallet_ethereum::pallet::Error<T>
3195 **/3478 **/
3196 PalletEthereumError: {3479 PalletEthereumError: {
3197 _enum: ['InvalidSignature', 'PreLogExists']3480 _enum: ['InvalidSignature', 'PreLogExists']
3198 },3481 },
3199 /**3482 /**
3200 * Lookup436: pallet_evm_coder_substrate::pallet::Error<T>3483 * Lookup460: pallet_evm_coder_substrate::pallet::Error<T>
3201 **/3484 **/
3202 PalletEvmCoderSubstrateError: {3485 PalletEvmCoderSubstrateError: {
3203 _enum: ['OutOfGas', 'OutOfFund']3486 _enum: ['OutOfGas', 'OutOfFund']
3204 },3487 },
3205 /**3488 /**
3206 * Lookup437: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>3489 * Lookup461: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
3207 **/3490 **/
3208 UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: {3491 UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: {
3209 _enum: {3492 _enum: {
3210 Disabled: 'Null',3493 Disabled: 'Null',
3211 Unconfirmed: 'PalletEvmAccountBasicCrossAccountIdRepr',3494 Unconfirmed: 'PalletEvmAccountBasicCrossAccountIdRepr',
3212 Confirmed: 'PalletEvmAccountBasicCrossAccountIdRepr'3495 Confirmed: 'PalletEvmAccountBasicCrossAccountIdRepr'
3213 }3496 }
3214 },3497 },
3215 /**3498 /**
3216 * Lookup438: pallet_evm_contract_helpers::SponsoringModeT3499 * Lookup462: pallet_evm_contract_helpers::SponsoringModeT
3217 **/3500 **/
3218 PalletEvmContractHelpersSponsoringModeT: {3501 PalletEvmContractHelpersSponsoringModeT: {
3219 _enum: ['Disabled', 'Allowlisted', 'Generous']3502 _enum: ['Disabled', 'Allowlisted', 'Generous']
3220 },3503 },
3221 /**3504 /**
3222 * Lookup440: pallet_evm_contract_helpers::pallet::Error<T>3505 * Lookup468: pallet_evm_contract_helpers::pallet::Error<T>
3223 **/3506 **/
3224 PalletEvmContractHelpersError: {3507 PalletEvmContractHelpersError: {
3225 _enum: ['NoPermission', 'NoPendingSponsor']3508 _enum: ['NoPermission', 'NoPendingSponsor', 'TooManyMethodsHaveSponsoredLimit']
3226 },3509 },
3227 /**3510 /**
3228 * Lookup441: pallet_evm_migration::pallet::Error<T>3511 * Lookup469: pallet_evm_migration::pallet::Error<T>
3229 **/3512 **/
3230 PalletEvmMigrationError: {3513 PalletEvmMigrationError: {
3231 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']3514 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
3232 },3515 },
3233 /**3516 /**
3234 * Lookup443: sp_runtime::MultiSignature3517 * Lookup471: sp_runtime::MultiSignature
3235 **/3518 **/
3236 SpRuntimeMultiSignature: {3519 SpRuntimeMultiSignature: {
3237 _enum: {3520 _enum: {
3238 Ed25519: 'SpCoreEd25519Signature',3521 Ed25519: 'SpCoreEd25519Signature',
3239 Sr25519: 'SpCoreSr25519Signature',3522 Sr25519: 'SpCoreSr25519Signature',
3240 Ecdsa: 'SpCoreEcdsaSignature'3523 Ecdsa: 'SpCoreEcdsaSignature'
3241 }3524 }
3242 },3525 },
3243 /**3526 /**
3244 * Lookup444: sp_core::ed25519::Signature3527 * Lookup472: sp_core::ed25519::Signature
3245 **/3528 **/
3246 SpCoreEd25519Signature: '[u8;64]',3529 SpCoreEd25519Signature: '[u8;64]',
3247 /**3530 /**
3248 * Lookup446: sp_core::sr25519::Signature3531 * Lookup474: sp_core::sr25519::Signature
3249 **/3532 **/
3250 SpCoreSr25519Signature: '[u8;64]',3533 SpCoreSr25519Signature: '[u8;64]',
3251 /**3534 /**
3252 * Lookup447: sp_core::ecdsa::Signature3535 * Lookup475: sp_core::ecdsa::Signature
3253 **/3536 **/
3254 SpCoreEcdsaSignature: '[u8;65]',3537 SpCoreEcdsaSignature: '[u8;65]',
3255 /**3538 /**
3256 * Lookup450: frame_system::extensions::check_spec_version::CheckSpecVersion<T>3539 * Lookup478: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
3257 **/3540 **/
3258 FrameSystemExtensionsCheckSpecVersion: 'Null',3541 FrameSystemExtensionsCheckSpecVersion: 'Null',
3259 /**3542 /**
3260 * Lookup451: frame_system::extensions::check_genesis::CheckGenesis<T>3543 * Lookup479: frame_system::extensions::check_genesis::CheckGenesis<T>
3261 **/3544 **/
3262 FrameSystemExtensionsCheckGenesis: 'Null',3545 FrameSystemExtensionsCheckGenesis: 'Null',
3263 /**3546 /**
3264 * Lookup454: frame_system::extensions::check_nonce::CheckNonce<T>3547 * Lookup482: frame_system::extensions::check_nonce::CheckNonce<T>
3265 **/3548 **/
3266 FrameSystemExtensionsCheckNonce: 'Compact<u32>',3549 FrameSystemExtensionsCheckNonce: 'Compact<u32>',
3267 /**3550 /**
3268 * Lookup455: frame_system::extensions::check_weight::CheckWeight<T>3551 * Lookup483: frame_system::extensions::check_weight::CheckWeight<T>
3269 **/3552 **/
3270 FrameSystemExtensionsCheckWeight: 'Null',3553 FrameSystemExtensionsCheckWeight: 'Null',
3271 /**3554 /**
3272 * Lookup456: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>3555 * Lookup484: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
3273 **/3556 **/
3274 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',3557 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
3275 /**3558 /**
3276 * Lookup457: opal_runtime::Runtime3559 * Lookup485: opal_runtime::Runtime
3277 **/3560 **/
3278 OpalRuntimeRuntime: 'Null',3561 OpalRuntimeRuntime: 'Null',
3279 /**3562 /**
3280 * Lookup458: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>3563 * Lookup486: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
3281 **/3564 **/
3282 PalletEthereumFakeTransactionFinalizer: 'Null'3565 PalletEthereumFakeTransactionFinalizer: 'Null'
3283};3566};
32843567
modifiedtests/src/interfaces/registry.tsdiffbeforeafterboth
5// this is required to allow for ambient/previous definitions5// this is required to allow for ambient/previous definitions
6import '@polkadot/types/types/registry';6import '@polkadot/types/types/registry';
77
8import 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, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, 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, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, 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';8import 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, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletForeignAssetsModuleCall, PalletForeignAssetsModuleError, PalletForeignAssetsModuleEvent, PalletForeignAssetsNativeCurrency, 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, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, 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';
99
10declare module '@polkadot/types/types/registry' {10declare module '@polkadot/types/types/registry' {
11 interface InterfaceTypes {11 interface InterfaceTypes {
79 FrameSystemPhase: FrameSystemPhase;79 FrameSystemPhase: FrameSystemPhase;
80 OpalRuntimeOriginCaller: OpalRuntimeOriginCaller;80 OpalRuntimeOriginCaller: OpalRuntimeOriginCaller;
81 OpalRuntimeRuntime: OpalRuntimeRuntime;81 OpalRuntimeRuntime: OpalRuntimeRuntime;
82 OrmlTokensAccountData: OrmlTokensAccountData;
83 OrmlTokensBalanceLock: OrmlTokensBalanceLock;
84 OrmlTokensModuleCall: OrmlTokensModuleCall;
85 OrmlTokensModuleError: OrmlTokensModuleError;
86 OrmlTokensModuleEvent: OrmlTokensModuleEvent;
87 OrmlTokensReserveData: OrmlTokensReserveData;
82 OrmlVestingModuleCall: OrmlVestingModuleCall;88 OrmlVestingModuleCall: OrmlVestingModuleCall;
83 OrmlVestingModuleError: OrmlVestingModuleError;89 OrmlVestingModuleError: OrmlVestingModuleError;
84 OrmlVestingModuleEvent: OrmlVestingModuleEvent;90 OrmlVestingModuleEvent: OrmlVestingModuleEvent;
85 OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;91 OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;
92 OrmlXtokensModuleCall: OrmlXtokensModuleCall;
93 OrmlXtokensModuleError: OrmlXtokensModuleError;
94 OrmlXtokensModuleEvent: OrmlXtokensModuleEvent;
86 PalletAppPromotionCall: PalletAppPromotionCall;95 PalletAppPromotionCall: PalletAppPromotionCall;
87 PalletAppPromotionError: PalletAppPromotionError;96 PalletAppPromotionError: PalletAppPromotionError;
88 PalletAppPromotionEvent: PalletAppPromotionEvent;97 PalletAppPromotionEvent: PalletAppPromotionEvent;
112 PalletEvmEvent: PalletEvmEvent;121 PalletEvmEvent: PalletEvmEvent;
113 PalletEvmMigrationCall: PalletEvmMigrationCall;122 PalletEvmMigrationCall: PalletEvmMigrationCall;
114 PalletEvmMigrationError: PalletEvmMigrationError;123 PalletEvmMigrationError: PalletEvmMigrationError;
124 PalletForeignAssetsAssetIds: PalletForeignAssetsAssetIds;
125 PalletForeignAssetsModuleAssetMetadata: PalletForeignAssetsModuleAssetMetadata;
126 PalletForeignAssetsModuleCall: PalletForeignAssetsModuleCall;
127 PalletForeignAssetsModuleError: PalletForeignAssetsModuleError;
128 PalletForeignAssetsModuleEvent: PalletForeignAssetsModuleEvent;
129 PalletForeignAssetsNativeCurrency: PalletForeignAssetsNativeCurrency;
115 PalletFungibleError: PalletFungibleError;130 PalletFungibleError: PalletFungibleError;
116 PalletInflationCall: PalletInflationCall;131 PalletInflationCall: PalletInflationCall;
117 PalletNonfungibleError: PalletNonfungibleError;132 PalletNonfungibleError: PalletNonfungibleError;
252 XcmV2TraitsOutcome: XcmV2TraitsOutcome;267 XcmV2TraitsOutcome: XcmV2TraitsOutcome;
253 XcmV2WeightLimit: XcmV2WeightLimit;268 XcmV2WeightLimit: XcmV2WeightLimit;
254 XcmV2Xcm: XcmV2Xcm;269 XcmV2Xcm: XcmV2Xcm;
270 XcmVersionedMultiAsset: XcmVersionedMultiAsset;
255 XcmVersionedMultiAssets: XcmVersionedMultiAssets;271 XcmVersionedMultiAssets: XcmVersionedMultiAssets;
256 XcmVersionedMultiLocation: XcmVersionedMultiLocation;272 XcmVersionedMultiLocation: XcmVersionedMultiLocation;
257 XcmVersionedXcm: XcmVersionedXcm;273 XcmVersionedXcm: XcmVersionedXcm;
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
351 readonly perPeriod: Compact<u128>;351 readonly perPeriod: Compact<u128>;
352 }352 }
353353
354 /** @name CumulusPalletXcmpQueueEvent (39) */354 /** @name OrmlXtokensModuleEvent (39) */
355 interface CumulusPalletXcmpQueueEvent extends Enum {355 interface OrmlXtokensModuleEvent extends Enum {
356 readonly isSuccess: boolean;356 readonly isTransferredMultiAssets: boolean;
357 readonly asSuccess: {
358 readonly messageHash: Option<H256>;
359 readonly weight: u64;
360 } & Struct;
361 readonly isFail: boolean;
362 readonly asFail: {
363 readonly messageHash: Option<H256>;
364 readonly error: XcmV2TraitsError;
365 readonly weight: u64;
366 } & Struct;
367 readonly isBadVersion: boolean;
368 readonly asBadVersion: {
369 readonly messageHash: Option<H256>;
370 } & Struct;
371 readonly isBadFormat: boolean;
372 readonly asBadFormat: {
373 readonly messageHash: Option<H256>;
374 } & Struct;
375 readonly isUpwardMessageSent: boolean;
376 readonly asUpwardMessageSent: {
377 readonly messageHash: Option<H256>;
378 } & Struct;
379 readonly isXcmpMessageSent: boolean;
380 readonly asXcmpMessageSent: {
381 readonly messageHash: Option<H256>;
382 } & Struct;
383 readonly isOverweightEnqueued: boolean;
384 readonly asOverweightEnqueued: {357 readonly asTransferredMultiAssets: {
385 readonly sender: u32;358 readonly sender: AccountId32;
386 readonly sentAt: u32;359 readonly assets: XcmV1MultiassetMultiAssets;
387 readonly index: u64;360 readonly fee: XcmV1MultiAsset;
388 readonly required: u64;361 readonly dest: XcmV1MultiLocation;
389 } & Struct;362 } & Struct;
390 readonly isOverweightServiced: boolean;
391 readonly asOverweightServiced: {
392 readonly index: u64;
393 readonly used: u64;
394 } & Struct;
395 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';363 readonly type: 'TransferredMultiAssets';
396 }364 }
397365
398 /** @name XcmV2TraitsError (41) */366 /** @name XcmV1MultiassetMultiAssets (40) */
399 interface XcmV2TraitsError extends Enum {367 interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}
400 readonly isOverflow: boolean;
401 readonly isUnimplemented: boolean;
402 readonly isUntrustedReserveLocation: boolean;
403 readonly isUntrustedTeleportLocation: boolean;
404 readonly isMultiLocationFull: boolean;
405 readonly isMultiLocationNotInvertible: boolean;
406 readonly isBadOrigin: boolean;
407 readonly isInvalidLocation: boolean;
408 readonly isAssetNotFound: boolean;
409 readonly isFailedToTransactAsset: boolean;
410 readonly isNotWithdrawable: boolean;
411 readonly isLocationCannotHold: boolean;
412 readonly isExceedsMaxMessageSize: boolean;
413 readonly isDestinationUnsupported: boolean;
414 readonly isTransport: boolean;
415 readonly isUnroutable: boolean;
416 readonly isUnknownClaim: boolean;
417 readonly isFailedToDecode: boolean;
418 readonly isMaxWeightInvalid: boolean;
419 readonly isNotHoldingFees: boolean;
420 readonly isTooExpensive: boolean;
421 readonly isTrap: boolean;
422 readonly asTrap: u64;
423 readonly isUnhandledXcmVersion: boolean;
424 readonly isWeightLimitReached: boolean;
425 readonly asWeightLimitReached: u64;
426 readonly isBarrier: boolean;
427 readonly isWeightNotComputable: boolean;
428 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';
429 }
430368
431 /** @name PalletXcmEvent (43) */369 /** @name XcmV1MultiAsset (42) */
432 interface PalletXcmEvent extends Enum {370 interface XcmV1MultiAsset extends Struct {
433 readonly isAttempted: boolean;371 readonly id: XcmV1MultiassetAssetId;
434 readonly asAttempted: XcmV2TraitsOutcome;372 readonly fun: XcmV1MultiassetFungibility;
435 readonly isSent: boolean;
436 readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;
437 readonly isUnexpectedResponse: boolean;
438 readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;
439 readonly isResponseReady: boolean;
440 readonly asResponseReady: ITuple<[u64, XcmV2Response]>;
441 readonly isNotified: boolean;
442 readonly asNotified: ITuple<[u64, u8, u8]>;
443 readonly isNotifyOverweight: boolean;
444 readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;
445 readonly isNotifyDispatchError: boolean;
446 readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;
447 readonly isNotifyDecodeFailed: boolean;
448 readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;
449 readonly isInvalidResponder: boolean;
450 readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;
451 readonly isInvalidResponderVersion: boolean;
452 readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;
453 readonly isResponseTaken: boolean;
454 readonly asResponseTaken: u64;
455 readonly isAssetsTrapped: boolean;
456 readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;
457 readonly isVersionChangeNotified: boolean;
458 readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;
459 readonly isSupportedVersionChanged: boolean;
460 readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;
461 readonly isNotifyTargetSendFail: boolean;
462 readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;
463 readonly isNotifyTargetMigrationFail: boolean;
464 readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;
465 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
466 }373 }
467374
468 /** @name XcmV2TraitsOutcome (44) */375 /** @name XcmV1MultiassetAssetId (43) */
469 interface XcmV2TraitsOutcome extends Enum {376 interface XcmV1MultiassetAssetId extends Enum {
470 readonly isComplete: boolean;377 readonly isConcrete: boolean;
471 readonly asComplete: u64;378 readonly asConcrete: XcmV1MultiLocation;
472 readonly isIncomplete: boolean;379 readonly isAbstract: boolean;
473 readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;380 readonly asAbstract: Bytes;
474 readonly isError: boolean;
475 readonly asError: XcmV2TraitsError;
476 readonly type: 'Complete' | 'Incomplete' | 'Error';381 readonly type: 'Concrete' | 'Abstract';
477 }382 }
478383
479 /** @name XcmV1MultiLocation (45) */384 /** @name XcmV1MultiLocation (44) */
480 interface XcmV1MultiLocation extends Struct {385 interface XcmV1MultiLocation extends Struct {
481 readonly parents: u8;386 readonly parents: u8;
482 readonly interior: XcmV1MultilocationJunctions;387 readonly interior: XcmV1MultilocationJunctions;
483 }388 }
484389
485 /** @name XcmV1MultilocationJunctions (46) */390 /** @name XcmV1MultilocationJunctions (45) */
486 interface XcmV1MultilocationJunctions extends Enum {391 interface XcmV1MultilocationJunctions extends Enum {
487 readonly isHere: boolean;392 readonly isHere: boolean;
488 readonly isX1: boolean;393 readonly isX1: boolean;
504 readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';409 readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
505 }410 }
506411
507 /** @name XcmV1Junction (47) */412 /** @name XcmV1Junction (46) */
508 interface XcmV1Junction extends Enum {413 interface XcmV1Junction extends Enum {
509 readonly isParachain: boolean;414 readonly isParachain: boolean;
510 readonly asParachain: Compact<u32>;415 readonly asParachain: Compact<u32>;
538 readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';443 readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
539 }444 }
540445
541 /** @name XcmV0JunctionNetworkId (49) */446 /** @name XcmV0JunctionNetworkId (48) */
542 interface XcmV0JunctionNetworkId extends Enum {447 interface XcmV0JunctionNetworkId extends Enum {
543 readonly isAny: boolean;448 readonly isAny: boolean;
544 readonly isNamed: boolean;449 readonly isNamed: boolean;
548 readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';453 readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';
549 }454 }
550455
551 /** @name XcmV0JunctionBodyId (53) */456 /** @name XcmV0JunctionBodyId (52) */
552 interface XcmV0JunctionBodyId extends Enum {457 interface XcmV0JunctionBodyId extends Enum {
553 readonly isUnit: boolean;458 readonly isUnit: boolean;
554 readonly isNamed: boolean;459 readonly isNamed: boolean;
562 readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';467 readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';
563 }468 }
564469
565 /** @name XcmV0JunctionBodyPart (54) */470 /** @name XcmV0JunctionBodyPart (53) */
566 interface XcmV0JunctionBodyPart extends Enum {471 interface XcmV0JunctionBodyPart extends Enum {
567 readonly isVoice: boolean;472 readonly isVoice: boolean;
568 readonly isMembers: boolean;473 readonly isMembers: boolean;
587 readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';492 readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
588 }493 }
494
495 /** @name XcmV1MultiassetFungibility (54) */
496 interface XcmV1MultiassetFungibility extends Enum {
497 readonly isFungible: boolean;
498 readonly asFungible: Compact<u128>;
499 readonly isNonFungible: boolean;
500 readonly asNonFungible: XcmV1MultiassetAssetInstance;
501 readonly type: 'Fungible' | 'NonFungible';
502 }
503
504 /** @name XcmV1MultiassetAssetInstance (55) */
505 interface XcmV1MultiassetAssetInstance extends Enum {
506 readonly isUndefined: boolean;
507 readonly isIndex: boolean;
508 readonly asIndex: Compact<u128>;
509 readonly isArray4: boolean;
510 readonly asArray4: U8aFixed;
511 readonly isArray8: boolean;
512 readonly asArray8: U8aFixed;
513 readonly isArray16: boolean;
514 readonly asArray16: U8aFixed;
515 readonly isArray32: boolean;
516 readonly asArray32: U8aFixed;
517 readonly isBlob: boolean;
518 readonly asBlob: Bytes;
519 readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
520 }
521
522 /** @name OrmlTokensModuleEvent (58) */
523 interface OrmlTokensModuleEvent extends Enum {
524 readonly isEndowed: boolean;
525 readonly asEndowed: {
526 readonly currencyId: PalletForeignAssetsAssetIds;
527 readonly who: AccountId32;
528 readonly amount: u128;
529 } & Struct;
530 readonly isDustLost: boolean;
531 readonly asDustLost: {
532 readonly currencyId: PalletForeignAssetsAssetIds;
533 readonly who: AccountId32;
534 readonly amount: u128;
535 } & Struct;
536 readonly isTransfer: boolean;
537 readonly asTransfer: {
538 readonly currencyId: PalletForeignAssetsAssetIds;
539 readonly from: AccountId32;
540 readonly to: AccountId32;
541 readonly amount: u128;
542 } & Struct;
543 readonly isReserved: boolean;
544 readonly asReserved: {
545 readonly currencyId: PalletForeignAssetsAssetIds;
546 readonly who: AccountId32;
547 readonly amount: u128;
548 } & Struct;
549 readonly isUnreserved: boolean;
550 readonly asUnreserved: {
551 readonly currencyId: PalletForeignAssetsAssetIds;
552 readonly who: AccountId32;
553 readonly amount: u128;
554 } & Struct;
555 readonly isReserveRepatriated: boolean;
556 readonly asReserveRepatriated: {
557 readonly currencyId: PalletForeignAssetsAssetIds;
558 readonly from: AccountId32;
559 readonly to: AccountId32;
560 readonly amount: u128;
561 readonly status: FrameSupportTokensMiscBalanceStatus;
562 } & Struct;
563 readonly isBalanceSet: boolean;
564 readonly asBalanceSet: {
565 readonly currencyId: PalletForeignAssetsAssetIds;
566 readonly who: AccountId32;
567 readonly free: u128;
568 readonly reserved: u128;
569 } & Struct;
570 readonly isTotalIssuanceSet: boolean;
571 readonly asTotalIssuanceSet: {
572 readonly currencyId: PalletForeignAssetsAssetIds;
573 readonly amount: u128;
574 } & Struct;
575 readonly isWithdrawn: boolean;
576 readonly asWithdrawn: {
577 readonly currencyId: PalletForeignAssetsAssetIds;
578 readonly who: AccountId32;
579 readonly amount: u128;
580 } & Struct;
581 readonly isSlashed: boolean;
582 readonly asSlashed: {
583 readonly currencyId: PalletForeignAssetsAssetIds;
584 readonly who: AccountId32;
585 readonly freeAmount: u128;
586 readonly reservedAmount: u128;
587 } & Struct;
588 readonly isDeposited: boolean;
589 readonly asDeposited: {
590 readonly currencyId: PalletForeignAssetsAssetIds;
591 readonly who: AccountId32;
592 readonly amount: u128;
593 } & Struct;
594 readonly isLockSet: boolean;
595 readonly asLockSet: {
596 readonly lockId: U8aFixed;
597 readonly currencyId: PalletForeignAssetsAssetIds;
598 readonly who: AccountId32;
599 readonly amount: u128;
600 } & Struct;
601 readonly isLockRemoved: boolean;
602 readonly asLockRemoved: {
603 readonly lockId: U8aFixed;
604 readonly currencyId: PalletForeignAssetsAssetIds;
605 readonly who: AccountId32;
606 } & Struct;
607 readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'BalanceSet' | 'TotalIssuanceSet' | 'Withdrawn' | 'Slashed' | 'Deposited' | 'LockSet' | 'LockRemoved';
608 }
609
610 /** @name PalletForeignAssetsAssetIds (59) */
611 interface PalletForeignAssetsAssetIds extends Enum {
612 readonly isForeignAssetId: boolean;
613 readonly asForeignAssetId: u32;
614 readonly isNativeAssetId: boolean;
615 readonly asNativeAssetId: PalletForeignAssetsNativeCurrency;
616 readonly type: 'ForeignAssetId' | 'NativeAssetId';
617 }
618
619 /** @name PalletForeignAssetsNativeCurrency (60) */
620 interface PalletForeignAssetsNativeCurrency extends Enum {
621 readonly isHere: boolean;
622 readonly isParent: boolean;
623 readonly type: 'Here' | 'Parent';
624 }
625
626 /** @name CumulusPalletXcmpQueueEvent (61) */
627 interface CumulusPalletXcmpQueueEvent extends Enum {
628 readonly isSuccess: boolean;
629 readonly asSuccess: {
630 readonly messageHash: Option<H256>;
631 readonly weight: u64;
632 } & Struct;
633 readonly isFail: boolean;
634 readonly asFail: {
635 readonly messageHash: Option<H256>;
636 readonly error: XcmV2TraitsError;
637 readonly weight: u64;
638 } & Struct;
639 readonly isBadVersion: boolean;
640 readonly asBadVersion: {
641 readonly messageHash: Option<H256>;
642 } & Struct;
643 readonly isBadFormat: boolean;
644 readonly asBadFormat: {
645 readonly messageHash: Option<H256>;
646 } & Struct;
647 readonly isUpwardMessageSent: boolean;
648 readonly asUpwardMessageSent: {
649 readonly messageHash: Option<H256>;
650 } & Struct;
651 readonly isXcmpMessageSent: boolean;
652 readonly asXcmpMessageSent: {
653 readonly messageHash: Option<H256>;
654 } & Struct;
655 readonly isOverweightEnqueued: boolean;
656 readonly asOverweightEnqueued: {
657 readonly sender: u32;
658 readonly sentAt: u32;
659 readonly index: u64;
660 readonly required: u64;
661 } & Struct;
662 readonly isOverweightServiced: boolean;
663 readonly asOverweightServiced: {
664 readonly index: u64;
665 readonly used: u64;
666 } & Struct;
667 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';
668 }
669
670 /** @name XcmV2TraitsError (63) */
671 interface XcmV2TraitsError extends Enum {
672 readonly isOverflow: boolean;
673 readonly isUnimplemented: boolean;
674 readonly isUntrustedReserveLocation: boolean;
675 readonly isUntrustedTeleportLocation: boolean;
676 readonly isMultiLocationFull: boolean;
677 readonly isMultiLocationNotInvertible: boolean;
678 readonly isBadOrigin: boolean;
679 readonly isInvalidLocation: boolean;
680 readonly isAssetNotFound: boolean;
681 readonly isFailedToTransactAsset: boolean;
682 readonly isNotWithdrawable: boolean;
683 readonly isLocationCannotHold: boolean;
684 readonly isExceedsMaxMessageSize: boolean;
685 readonly isDestinationUnsupported: boolean;
686 readonly isTransport: boolean;
687 readonly isUnroutable: boolean;
688 readonly isUnknownClaim: boolean;
689 readonly isFailedToDecode: boolean;
690 readonly isMaxWeightInvalid: boolean;
691 readonly isNotHoldingFees: boolean;
692 readonly isTooExpensive: boolean;
693 readonly isTrap: boolean;
694 readonly asTrap: u64;
695 readonly isUnhandledXcmVersion: boolean;
696 readonly isWeightLimitReached: boolean;
697 readonly asWeightLimitReached: u64;
698 readonly isBarrier: boolean;
699 readonly isWeightNotComputable: boolean;
700 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';
701 }
702
703 /** @name PalletXcmEvent (65) */
704 interface PalletXcmEvent extends Enum {
705 readonly isAttempted: boolean;
706 readonly asAttempted: XcmV2TraitsOutcome;
707 readonly isSent: boolean;
708 readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;
709 readonly isUnexpectedResponse: boolean;
710 readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;
711 readonly isResponseReady: boolean;
712 readonly asResponseReady: ITuple<[u64, XcmV2Response]>;
713 readonly isNotified: boolean;
714 readonly asNotified: ITuple<[u64, u8, u8]>;
715 readonly isNotifyOverweight: boolean;
716 readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;
717 readonly isNotifyDispatchError: boolean;
718 readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;
719 readonly isNotifyDecodeFailed: boolean;
720 readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;
721 readonly isInvalidResponder: boolean;
722 readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;
723 readonly isInvalidResponderVersion: boolean;
724 readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;
725 readonly isResponseTaken: boolean;
726 readonly asResponseTaken: u64;
727 readonly isAssetsTrapped: boolean;
728 readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;
729 readonly isVersionChangeNotified: boolean;
730 readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;
731 readonly isSupportedVersionChanged: boolean;
732 readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;
733 readonly isNotifyTargetSendFail: boolean;
734 readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;
735 readonly isNotifyTargetMigrationFail: boolean;
736 readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;
737 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
738 }
739
740 /** @name XcmV2TraitsOutcome (66) */
741 interface XcmV2TraitsOutcome extends Enum {
742 readonly isComplete: boolean;
743 readonly asComplete: u64;
744 readonly isIncomplete: boolean;
745 readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;
746 readonly isError: boolean;
747 readonly asError: XcmV2TraitsError;
748 readonly type: 'Complete' | 'Incomplete' | 'Error';
749 }
589750
590 /** @name XcmV2Xcm (55) */751 /** @name XcmV2Xcm (67) */
591 interface XcmV2Xcm extends Vec<XcmV2Instruction> {}752 interface XcmV2Xcm extends Vec<XcmV2Instruction> {}
592753
593 /** @name XcmV2Instruction (57) */754 /** @name XcmV2Instruction (69) */
594 interface XcmV2Instruction extends Enum {755 interface XcmV2Instruction extends Enum {
595 readonly isWithdrawAsset: boolean;756 readonly isWithdrawAsset: boolean;
596 readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;757 readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;
710 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';871 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';
711 }872 }
712
713 /** @name XcmV1MultiassetMultiAssets (58) */
714 interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}
715
716 /** @name XcmV1MultiAsset (60) */
717 interface XcmV1MultiAsset extends Struct {
718 readonly id: XcmV1MultiassetAssetId;
719 readonly fun: XcmV1MultiassetFungibility;
720 }
721
722 /** @name XcmV1MultiassetAssetId (61) */
723 interface XcmV1MultiassetAssetId extends Enum {
724 readonly isConcrete: boolean;
725 readonly asConcrete: XcmV1MultiLocation;
726 readonly isAbstract: boolean;
727 readonly asAbstract: Bytes;
728 readonly type: 'Concrete' | 'Abstract';
729 }
730
731 /** @name XcmV1MultiassetFungibility (62) */
732 interface XcmV1MultiassetFungibility extends Enum {
733 readonly isFungible: boolean;
734 readonly asFungible: Compact<u128>;
735 readonly isNonFungible: boolean;
736 readonly asNonFungible: XcmV1MultiassetAssetInstance;
737 readonly type: 'Fungible' | 'NonFungible';
738 }
739
740 /** @name XcmV1MultiassetAssetInstance (63) */
741 interface XcmV1MultiassetAssetInstance extends Enum {
742 readonly isUndefined: boolean;
743 readonly isIndex: boolean;
744 readonly asIndex: Compact<u128>;
745 readonly isArray4: boolean;
746 readonly asArray4: U8aFixed;
747 readonly isArray8: boolean;
748 readonly asArray8: U8aFixed;
749 readonly isArray16: boolean;
750 readonly asArray16: U8aFixed;
751 readonly isArray32: boolean;
752 readonly asArray32: U8aFixed;
753 readonly isBlob: boolean;
754 readonly asBlob: Bytes;
755 readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
756 }
757873
758 /** @name XcmV2Response (66) */874 /** @name XcmV2Response (70) */
759 interface XcmV2Response extends Enum {875 interface XcmV2Response extends Enum {
760 readonly isNull: boolean;876 readonly isNull: boolean;
761 readonly isAssets: boolean;877 readonly isAssets: boolean;
767 readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';883 readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';
768 }884 }
769885
770 /** @name XcmV0OriginKind (69) */886 /** @name XcmV0OriginKind (73) */
771 interface XcmV0OriginKind extends Enum {887 interface XcmV0OriginKind extends Enum {
772 readonly isNative: boolean;888 readonly isNative: boolean;
773 readonly isSovereignAccount: boolean;889 readonly isSovereignAccount: boolean;
776 readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';892 readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';
777 }893 }
778894
779 /** @name XcmDoubleEncoded (70) */895 /** @name XcmDoubleEncoded (74) */
780 interface XcmDoubleEncoded extends Struct {896 interface XcmDoubleEncoded extends Struct {
781 readonly encoded: Bytes;897 readonly encoded: Bytes;
782 }898 }
783899
784 /** @name XcmV1MultiassetMultiAssetFilter (71) */900 /** @name XcmV1MultiassetMultiAssetFilter (75) */
785 interface XcmV1MultiassetMultiAssetFilter extends Enum {901 interface XcmV1MultiassetMultiAssetFilter extends Enum {
786 readonly isDefinite: boolean;902 readonly isDefinite: boolean;
787 readonly asDefinite: XcmV1MultiassetMultiAssets;903 readonly asDefinite: XcmV1MultiassetMultiAssets;
790 readonly type: 'Definite' | 'Wild';906 readonly type: 'Definite' | 'Wild';
791 }907 }
792908
793 /** @name XcmV1MultiassetWildMultiAsset (72) */909 /** @name XcmV1MultiassetWildMultiAsset (76) */
794 interface XcmV1MultiassetWildMultiAsset extends Enum {910 interface XcmV1MultiassetWildMultiAsset extends Enum {
795 readonly isAll: boolean;911 readonly isAll: boolean;
796 readonly isAllOf: boolean;912 readonly isAllOf: boolean;
801 readonly type: 'All' | 'AllOf';917 readonly type: 'All' | 'AllOf';
802 }918 }
803919
804 /** @name XcmV1MultiassetWildFungibility (73) */920 /** @name XcmV1MultiassetWildFungibility (77) */
805 interface XcmV1MultiassetWildFungibility extends Enum {921 interface XcmV1MultiassetWildFungibility extends Enum {
806 readonly isFungible: boolean;922 readonly isFungible: boolean;
807 readonly isNonFungible: boolean;923 readonly isNonFungible: boolean;
808 readonly type: 'Fungible' | 'NonFungible';924 readonly type: 'Fungible' | 'NonFungible';
809 }925 }
810926
811 /** @name XcmV2WeightLimit (74) */927 /** @name XcmV2WeightLimit (78) */
812 interface XcmV2WeightLimit extends Enum {928 interface XcmV2WeightLimit extends Enum {
813 readonly isUnlimited: boolean;929 readonly isUnlimited: boolean;
814 readonly isLimited: boolean;930 readonly isLimited: boolean;
815 readonly asLimited: Compact<u64>;931 readonly asLimited: Compact<u64>;
816 readonly type: 'Unlimited' | 'Limited';932 readonly type: 'Unlimited' | 'Limited';
817 }933 }
818934
819 /** @name XcmVersionedMultiAssets (76) */935 /** @name XcmVersionedMultiAssets (80) */
820 interface XcmVersionedMultiAssets extends Enum {936 interface XcmVersionedMultiAssets extends Enum {
821 readonly isV0: boolean;937 readonly isV0: boolean;
822 readonly asV0: Vec<XcmV0MultiAsset>;938 readonly asV0: Vec<XcmV0MultiAsset>;
825 readonly type: 'V0' | 'V1';941 readonly type: 'V0' | 'V1';
826 }942 }
827943
828 /** @name XcmV0MultiAsset (78) */944 /** @name XcmV0MultiAsset (82) */
829 interface XcmV0MultiAsset extends Enum {945 interface XcmV0MultiAsset extends Enum {
830 readonly isNone: boolean;946 readonly isNone: boolean;
831 readonly isAll: boolean;947 readonly isAll: boolean;
870 readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';986 readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';
871 }987 }
872988
873 /** @name XcmV0MultiLocation (79) */989 /** @name XcmV0MultiLocation (83) */
874 interface XcmV0MultiLocation extends Enum {990 interface XcmV0MultiLocation extends Enum {
875 readonly isNull: boolean;991 readonly isNull: boolean;
876 readonly isX1: boolean;992 readonly isX1: boolean;
892 readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';1008 readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
893 }1009 }
8941010
895 /** @name XcmV0Junction (80) */1011 /** @name XcmV0Junction (84) */
896 interface XcmV0Junction extends Enum {1012 interface XcmV0Junction extends Enum {
897 readonly isParent: boolean;1013 readonly isParent: boolean;
898 readonly isParachain: boolean;1014 readonly isParachain: boolean;
927 readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';1043 readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
928 }1044 }
9291045
930 /** @name XcmVersionedMultiLocation (81) */1046 /** @name XcmVersionedMultiLocation (85) */
931 interface XcmVersionedMultiLocation extends Enum {1047 interface XcmVersionedMultiLocation extends Enum {
932 readonly isV0: boolean;1048 readonly isV0: boolean;
933 readonly asV0: XcmV0MultiLocation;1049 readonly asV0: XcmV0MultiLocation;
936 readonly type: 'V0' | 'V1';1052 readonly type: 'V0' | 'V1';
937 }1053 }
9381054
939 /** @name CumulusPalletXcmEvent (82) */1055 /** @name CumulusPalletXcmEvent (86) */
940 interface CumulusPalletXcmEvent extends Enum {1056 interface CumulusPalletXcmEvent extends Enum {
941 readonly isInvalidFormat: boolean;1057 readonly isInvalidFormat: boolean;
942 readonly asInvalidFormat: U8aFixed;1058 readonly asInvalidFormat: U8aFixed;
947 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';1063 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';
948 }1064 }
9491065
950 /** @name CumulusPalletDmpQueueEvent (83) */1066 /** @name CumulusPalletDmpQueueEvent (87) */
951 interface CumulusPalletDmpQueueEvent extends Enum {1067 interface CumulusPalletDmpQueueEvent extends Enum {
952 readonly isInvalidFormat: boolean;1068 readonly isInvalidFormat: boolean;
953 readonly asInvalidFormat: {1069 readonly asInvalidFormat: {
982 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';1098 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
983 }1099 }
9841100
985 /** @name PalletUniqueRawEvent (84) */1101 /** @name PalletUniqueRawEvent (88) */
986 interface PalletUniqueRawEvent extends Enum {1102 interface PalletUniqueRawEvent extends Enum {
987 readonly isCollectionSponsorRemoved: boolean;1103 readonly isCollectionSponsorRemoved: boolean;
988 readonly asCollectionSponsorRemoved: u32;1104 readonly asCollectionSponsorRemoved: u32;
1007 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1123 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';
1008 }1124 }
10091125
1010 /** @name PalletEvmAccountBasicCrossAccountIdRepr (85) */1126 /** @name PalletEvmAccountBasicCrossAccountIdRepr (89) */
1011 interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1127 interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {
1012 readonly isSubstrate: boolean;1128 readonly isSubstrate: boolean;
1013 readonly asSubstrate: AccountId32;1129 readonly asSubstrate: AccountId32;
1016 readonly type: 'Substrate' | 'Ethereum';1132 readonly type: 'Substrate' | 'Ethereum';
1017 }1133 }
10181134
1019 /** @name PalletUniqueSchedulerEvent (88) */1135 /** @name PalletUniqueSchedulerEvent (92) */
1020 interface PalletUniqueSchedulerEvent extends Enum {1136 interface PalletUniqueSchedulerEvent extends Enum {
1021 readonly isScheduled: boolean;1137 readonly isScheduled: boolean;
1022 readonly asScheduled: {1138 readonly asScheduled: {
1043 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1159 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';
1044 }1160 }
10451161
1046 /** @name FrameSupportScheduleLookupError (91) */1162 /** @name FrameSupportScheduleLookupError (95) */
1047 interface FrameSupportScheduleLookupError extends Enum {1163 interface FrameSupportScheduleLookupError extends Enum {
1048 readonly isUnknown: boolean;1164 readonly isUnknown: boolean;
1049 readonly isBadFormat: boolean;1165 readonly isBadFormat: boolean;
1050 readonly type: 'Unknown' | 'BadFormat';1166 readonly type: 'Unknown' | 'BadFormat';
1051 }1167 }
10521168
1053 /** @name PalletCommonEvent (92) */1169 /** @name PalletCommonEvent (96) */
1054 interface PalletCommonEvent extends Enum {1170 interface PalletCommonEvent extends Enum {
1055 readonly isCollectionCreated: boolean;1171 readonly isCollectionCreated: boolean;
1056 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;1172 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
1077 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';1193 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
1078 }1194 }
10791195
1080 /** @name PalletStructureEvent (95) */1196 /** @name PalletStructureEvent (99) */
1081 interface PalletStructureEvent extends Enum {1197 interface PalletStructureEvent extends Enum {
1082 readonly isExecuted: boolean;1198 readonly isExecuted: boolean;
1083 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;1199 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
1084 readonly type: 'Executed';1200 readonly type: 'Executed';
1085 }1201 }
10861202
1087 /** @name PalletRmrkCoreEvent (96) */1203 /** @name PalletRmrkCoreEvent (100) */
1088 interface PalletRmrkCoreEvent extends Enum {1204 interface PalletRmrkCoreEvent extends Enum {
1089 readonly isCollectionCreated: boolean;1205 readonly isCollectionCreated: boolean;
1090 readonly asCollectionCreated: {1206 readonly asCollectionCreated: {
1174 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';1290 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';
1175 }1291 }
11761292
1177 /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (97) */1293 /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (101) */
1178 interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {1294 interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
1179 readonly isAccountId: boolean;1295 readonly isAccountId: boolean;
1180 readonly asAccountId: AccountId32;1296 readonly asAccountId: AccountId32;
1183 readonly type: 'AccountId' | 'CollectionAndNftTuple';1299 readonly type: 'AccountId' | 'CollectionAndNftTuple';
1184 }1300 }
11851301
1186 /** @name PalletRmrkEquipEvent (102) */1302 /** @name PalletRmrkEquipEvent (106) */
1187 interface PalletRmrkEquipEvent extends Enum {1303 interface PalletRmrkEquipEvent extends Enum {
1188 readonly isBaseCreated: boolean;1304 readonly isBaseCreated: boolean;
1189 readonly asBaseCreated: {1305 readonly asBaseCreated: {
1198 readonly type: 'BaseCreated' | 'EquippablesUpdated';1314 readonly type: 'BaseCreated' | 'EquippablesUpdated';
1199 }1315 }
12001316
1201 /** @name PalletAppPromotionEvent (103) */1317 /** @name PalletAppPromotionEvent (107) */
1202 interface PalletAppPromotionEvent extends Enum {1318 interface PalletAppPromotionEvent extends Enum {
1203 readonly isStakingRecalculation: boolean;1319 readonly isStakingRecalculation: boolean;
1204 readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>;1320 readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>;
1211 readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin';1327 readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin';
1212 }1328 }
1329
1330 /** @name PalletForeignAssetsModuleEvent (108) */
1331 interface PalletForeignAssetsModuleEvent extends Enum {
1332 readonly isForeignAssetRegistered: boolean;
1333 readonly asForeignAssetRegistered: {
1334 readonly assetId: u32;
1335 readonly assetAddress: XcmV1MultiLocation;
1336 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1337 } & Struct;
1338 readonly isForeignAssetUpdated: boolean;
1339 readonly asForeignAssetUpdated: {
1340 readonly assetId: u32;
1341 readonly assetAddress: XcmV1MultiLocation;
1342 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1343 } & Struct;
1344 readonly isAssetRegistered: boolean;
1345 readonly asAssetRegistered: {
1346 readonly assetId: PalletForeignAssetsAssetIds;
1347 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1348 } & Struct;
1349 readonly isAssetUpdated: boolean;
1350 readonly asAssetUpdated: {
1351 readonly assetId: PalletForeignAssetsAssetIds;
1352 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
1353 } & Struct;
1354 readonly type: 'ForeignAssetRegistered' | 'ForeignAssetUpdated' | 'AssetRegistered' | 'AssetUpdated';
1355 }
1356
1357 /** @name PalletForeignAssetsModuleAssetMetadata (109) */
1358 interface PalletForeignAssetsModuleAssetMetadata extends Struct {
1359 readonly name: Bytes;
1360 readonly symbol: Bytes;
1361 readonly decimals: u8;
1362 readonly minimalBalance: u128;
1363 }
12131364
1214 /** @name PalletEvmEvent (104) */1365 /** @name PalletEvmEvent (110) */
1215 interface PalletEvmEvent extends Enum {1366 interface PalletEvmEvent extends Enum {
1216 readonly isLog: boolean;1367 readonly isLog: boolean;
1217 readonly asLog: EthereumLog;1368 readonly asLog: EthereumLog;
1230 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';1381 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
1231 }1382 }
12321383
1233 /** @name EthereumLog (105) */1384 /** @name EthereumLog (111) */
1234 interface EthereumLog extends Struct {1385 interface EthereumLog extends Struct {
1235 readonly address: H160;1386 readonly address: H160;
1236 readonly topics: Vec<H256>;1387 readonly topics: Vec<H256>;
1237 readonly data: Bytes;1388 readonly data: Bytes;
1238 }1389 }
12391390
1240 /** @name PalletEthereumEvent (109) */1391 /** @name PalletEthereumEvent (115) */
1241 interface PalletEthereumEvent extends Enum {1392 interface PalletEthereumEvent extends Enum {
1242 readonly isExecuted: boolean;1393 readonly isExecuted: boolean;
1243 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;1394 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
1244 readonly type: 'Executed';1395 readonly type: 'Executed';
1245 }1396 }
12461397
1247 /** @name EvmCoreErrorExitReason (110) */1398 /** @name EvmCoreErrorExitReason (116) */
1248 interface EvmCoreErrorExitReason extends Enum {1399 interface EvmCoreErrorExitReason extends Enum {
1249 readonly isSucceed: boolean;1400 readonly isSucceed: boolean;
1250 readonly asSucceed: EvmCoreErrorExitSucceed;1401 readonly asSucceed: EvmCoreErrorExitSucceed;
1257 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';1408 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
1258 }1409 }
12591410
1260 /** @name EvmCoreErrorExitSucceed (111) */1411 /** @name EvmCoreErrorExitSucceed (117) */
1261 interface EvmCoreErrorExitSucceed extends Enum {1412 interface EvmCoreErrorExitSucceed extends Enum {
1262 readonly isStopped: boolean;1413 readonly isStopped: boolean;
1263 readonly isReturned: boolean;1414 readonly isReturned: boolean;
1264 readonly isSuicided: boolean;1415 readonly isSuicided: boolean;
1265 readonly type: 'Stopped' | 'Returned' | 'Suicided';1416 readonly type: 'Stopped' | 'Returned' | 'Suicided';
1266 }1417 }
12671418
1268 /** @name EvmCoreErrorExitError (112) */1419 /** @name EvmCoreErrorExitError (118) */
1269 interface EvmCoreErrorExitError extends Enum {1420 interface EvmCoreErrorExitError extends Enum {
1270 readonly isStackUnderflow: boolean;1421 readonly isStackUnderflow: boolean;
1271 readonly isStackOverflow: boolean;1422 readonly isStackOverflow: boolean;
1286 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';1437 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
1287 }1438 }
12881439
1289 /** @name EvmCoreErrorExitRevert (115) */1440 /** @name EvmCoreErrorExitRevert (121) */
1290 interface EvmCoreErrorExitRevert extends Enum {1441 interface EvmCoreErrorExitRevert extends Enum {
1291 readonly isReverted: boolean;1442 readonly isReverted: boolean;
1292 readonly type: 'Reverted';1443 readonly type: 'Reverted';
1293 }1444 }
12941445
1295 /** @name EvmCoreErrorExitFatal (116) */1446 /** @name EvmCoreErrorExitFatal (122) */
1296 interface EvmCoreErrorExitFatal extends Enum {1447 interface EvmCoreErrorExitFatal extends Enum {
1297 readonly isNotSupported: boolean;1448 readonly isNotSupported: boolean;
1298 readonly isUnhandledInterrupt: boolean;1449 readonly isUnhandledInterrupt: boolean;
1303 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';1454 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
1304 }1455 }
13051456
1306 /** @name PalletEvmContractHelpersEvent (117) */1457 /** @name PalletEvmContractHelpersEvent (123) */
1307 interface PalletEvmContractHelpersEvent extends Enum {1458 interface PalletEvmContractHelpersEvent extends Enum {
1308 readonly isContractSponsorSet: boolean;1459 readonly isContractSponsorSet: boolean;
1309 readonly asContractSponsorSet: ITuple<[H160, AccountId32]>;1460 readonly asContractSponsorSet: ITuple<[H160, AccountId32]>;
1314 readonly type: 'ContractSponsorSet' | 'ContractSponsorshipConfirmed' | 'ContractSponsorRemoved';1465 readonly type: 'ContractSponsorSet' | 'ContractSponsorshipConfirmed' | 'ContractSponsorRemoved';
1315 }1466 }
13161467
1317 /** @name FrameSystemPhase (118) */1468 /** @name FrameSystemPhase (124) */
1318 interface FrameSystemPhase extends Enum {1469 interface FrameSystemPhase extends Enum {
1319 readonly isApplyExtrinsic: boolean;1470 readonly isApplyExtrinsic: boolean;
1320 readonly asApplyExtrinsic: u32;1471 readonly asApplyExtrinsic: u32;
1323 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';1474 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
1324 }1475 }
13251476
1326 /** @name FrameSystemLastRuntimeUpgradeInfo (120) */1477 /** @name FrameSystemLastRuntimeUpgradeInfo (126) */
1327 interface FrameSystemLastRuntimeUpgradeInfo extends Struct {1478 interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
1328 readonly specVersion: Compact<u32>;1479 readonly specVersion: Compact<u32>;
1329 readonly specName: Text;1480 readonly specName: Text;
1330 }1481 }
13311482
1332 /** @name FrameSystemCall (121) */1483 /** @name FrameSystemCall (127) */
1333 interface FrameSystemCall extends Enum {1484 interface FrameSystemCall extends Enum {
1334 readonly isFillBlock: boolean;1485 readonly isFillBlock: boolean;
1335 readonly asFillBlock: {1486 readonly asFillBlock: {
1371 readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';1522 readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';
1372 }1523 }
13731524
1374 /** @name FrameSystemLimitsBlockWeights (126) */1525 /** @name FrameSystemLimitsBlockWeights (132) */
1375 interface FrameSystemLimitsBlockWeights extends Struct {1526 interface FrameSystemLimitsBlockWeights extends Struct {
1376 readonly baseBlock: u64;1527 readonly baseBlock: u64;
1377 readonly maxBlock: u64;1528 readonly maxBlock: u64;
1378 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;1529 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
1379 }1530 }
13801531
1381 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (127) */1532 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (133) */
1382 interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {1533 interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
1383 readonly normal: FrameSystemLimitsWeightsPerClass;1534 readonly normal: FrameSystemLimitsWeightsPerClass;
1384 readonly operational: FrameSystemLimitsWeightsPerClass;1535 readonly operational: FrameSystemLimitsWeightsPerClass;
1385 readonly mandatory: FrameSystemLimitsWeightsPerClass;1536 readonly mandatory: FrameSystemLimitsWeightsPerClass;
1386 }1537 }
13871538
1388 /** @name FrameSystemLimitsWeightsPerClass (128) */1539 /** @name FrameSystemLimitsWeightsPerClass (134) */
1389 interface FrameSystemLimitsWeightsPerClass extends Struct {1540 interface FrameSystemLimitsWeightsPerClass extends Struct {
1390 readonly baseExtrinsic: u64;1541 readonly baseExtrinsic: u64;
1391 readonly maxExtrinsic: Option<u64>;1542 readonly maxExtrinsic: Option<u64>;
1392 readonly maxTotal: Option<u64>;1543 readonly maxTotal: Option<u64>;
1393 readonly reserved: Option<u64>;1544 readonly reserved: Option<u64>;
1394 }1545 }
13951546
1396 /** @name FrameSystemLimitsBlockLength (130) */1547 /** @name FrameSystemLimitsBlockLength (136) */
1397 interface FrameSystemLimitsBlockLength extends Struct {1548 interface FrameSystemLimitsBlockLength extends Struct {
1398 readonly max: FrameSupportWeightsPerDispatchClassU32;1549 readonly max: FrameSupportWeightsPerDispatchClassU32;
1399 }1550 }
14001551
1401 /** @name FrameSupportWeightsPerDispatchClassU32 (131) */1552 /** @name FrameSupportWeightsPerDispatchClassU32 (137) */
1402 interface FrameSupportWeightsPerDispatchClassU32 extends Struct {1553 interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
1403 readonly normal: u32;1554 readonly normal: u32;
1404 readonly operational: u32;1555 readonly operational: u32;
1405 readonly mandatory: u32;1556 readonly mandatory: u32;
1406 }1557 }
14071558
1408 /** @name FrameSupportWeightsRuntimeDbWeight (132) */1559 /** @name FrameSupportWeightsRuntimeDbWeight (138) */
1409 interface FrameSupportWeightsRuntimeDbWeight extends Struct {1560 interface FrameSupportWeightsRuntimeDbWeight extends Struct {
1410 readonly read: u64;1561 readonly read: u64;
1411 readonly write: u64;1562 readonly write: u64;
1412 }1563 }
14131564
1414 /** @name SpVersionRuntimeVersion (133) */1565 /** @name SpVersionRuntimeVersion (139) */
1415 interface SpVersionRuntimeVersion extends Struct {1566 interface SpVersionRuntimeVersion extends Struct {
1416 readonly specName: Text;1567 readonly specName: Text;
1417 readonly implName: Text;1568 readonly implName: Text;
1423 readonly stateVersion: u8;1574 readonly stateVersion: u8;
1424 }1575 }
14251576
1426 /** @name FrameSystemError (138) */1577 /** @name FrameSystemError (144) */
1427 interface FrameSystemError extends Enum {1578 interface FrameSystemError extends Enum {
1428 readonly isInvalidSpecName: boolean;1579 readonly isInvalidSpecName: boolean;
1429 readonly isSpecVersionNeedsToIncrease: boolean;1580 readonly isSpecVersionNeedsToIncrease: boolean;
1434 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';1585 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
1435 }1586 }
14361587
1437 /** @name PolkadotPrimitivesV2PersistedValidationData (139) */1588 /** @name PolkadotPrimitivesV2PersistedValidationData (145) */
1438 interface PolkadotPrimitivesV2PersistedValidationData extends Struct {1589 interface PolkadotPrimitivesV2PersistedValidationData extends Struct {
1439 readonly parentHead: Bytes;1590 readonly parentHead: Bytes;
1440 readonly relayParentNumber: u32;1591 readonly relayParentNumber: u32;
1441 readonly relayParentStorageRoot: H256;1592 readonly relayParentStorageRoot: H256;
1442 readonly maxPovSize: u32;1593 readonly maxPovSize: u32;
1443 }1594 }
14441595
1445 /** @name PolkadotPrimitivesV2UpgradeRestriction (142) */1596 /** @name PolkadotPrimitivesV2UpgradeRestriction (148) */
1446 interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {1597 interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {
1447 readonly isPresent: boolean;1598 readonly isPresent: boolean;
1448 readonly type: 'Present';1599 readonly type: 'Present';
1449 }1600 }
14501601
1451 /** @name SpTrieStorageProof (143) */1602 /** @name SpTrieStorageProof (149) */
1452 interface SpTrieStorageProof extends Struct {1603 interface SpTrieStorageProof extends Struct {
1453 readonly trieNodes: BTreeSet<Bytes>;1604 readonly trieNodes: BTreeSet<Bytes>;
1454 }1605 }
14551606
1456 /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (145) */1607 /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (151) */
1457 interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {1608 interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {
1458 readonly dmqMqcHead: H256;1609 readonly dmqMqcHead: H256;
1459 readonly relayDispatchQueueSize: ITuple<[u32, u32]>;1610 readonly relayDispatchQueueSize: ITuple<[u32, u32]>;
1460 readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;1611 readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
1461 readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;1612 readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
1462 }1613 }
14631614
1464 /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (148) */1615 /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (154) */
1465 interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {1616 interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {
1466 readonly maxCapacity: u32;1617 readonly maxCapacity: u32;
1467 readonly maxTotalSize: u32;1618 readonly maxTotalSize: u32;
1471 readonly mqcHead: Option<H256>;1622 readonly mqcHead: Option<H256>;
1472 }1623 }
14731624
1474 /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (149) */1625 /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (155) */
1475 interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {1626 interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {
1476 readonly maxCodeSize: u32;1627 readonly maxCodeSize: u32;
1477 readonly maxHeadDataSize: u32;1628 readonly maxHeadDataSize: u32;
1484 readonly validationUpgradeDelay: u32;1635 readonly validationUpgradeDelay: u32;
1485 }1636 }
14861637
1487 /** @name PolkadotCorePrimitivesOutboundHrmpMessage (155) */1638 /** @name PolkadotCorePrimitivesOutboundHrmpMessage (161) */
1488 interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {1639 interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {
1489 readonly recipient: u32;1640 readonly recipient: u32;
1490 readonly data: Bytes;1641 readonly data: Bytes;
1491 }1642 }
14921643
1493 /** @name CumulusPalletParachainSystemCall (156) */1644 /** @name CumulusPalletParachainSystemCall (162) */
1494 interface CumulusPalletParachainSystemCall extends Enum {1645 interface CumulusPalletParachainSystemCall extends Enum {
1495 readonly isSetValidationData: boolean;1646 readonly isSetValidationData: boolean;
1496 readonly asSetValidationData: {1647 readonly asSetValidationData: {
1511 readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';1662 readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';
1512 }1663 }
15131664
1514 /** @name CumulusPrimitivesParachainInherentParachainInherentData (157) */1665 /** @name CumulusPrimitivesParachainInherentParachainInherentData (163) */
1515 interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {1666 interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {
1516 readonly validationData: PolkadotPrimitivesV2PersistedValidationData;1667 readonly validationData: PolkadotPrimitivesV2PersistedValidationData;
1517 readonly relayChainState: SpTrieStorageProof;1668 readonly relayChainState: SpTrieStorageProof;
1518 readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;1669 readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;
1519 readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;1670 readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;
1520 }1671 }
15211672
1522 /** @name PolkadotCorePrimitivesInboundDownwardMessage (159) */1673 /** @name PolkadotCorePrimitivesInboundDownwardMessage (165) */
1523 interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {1674 interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
1524 readonly sentAt: u32;1675 readonly sentAt: u32;
1525 readonly msg: Bytes;1676 readonly msg: Bytes;
1526 }1677 }
15271678
1528 /** @name PolkadotCorePrimitivesInboundHrmpMessage (162) */1679 /** @name PolkadotCorePrimitivesInboundHrmpMessage (168) */
1529 interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {1680 interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {
1530 readonly sentAt: u32;1681 readonly sentAt: u32;
1531 readonly data: Bytes;1682 readonly data: Bytes;
1532 }1683 }
15331684
1534 /** @name CumulusPalletParachainSystemError (165) */1685 /** @name CumulusPalletParachainSystemError (171) */
1535 interface CumulusPalletParachainSystemError extends Enum {1686 interface CumulusPalletParachainSystemError extends Enum {
1536 readonly isOverlappingUpgrades: boolean;1687 readonly isOverlappingUpgrades: boolean;
1537 readonly isProhibitedByPolkadot: boolean;1688 readonly isProhibitedByPolkadot: boolean;
1544 readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';1695 readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';
1545 }1696 }
15461697
1547 /** @name PalletBalancesBalanceLock (167) */1698 /** @name PalletBalancesBalanceLock (173) */
1548 interface PalletBalancesBalanceLock extends Struct {1699 interface PalletBalancesBalanceLock extends Struct {
1549 readonly id: U8aFixed;1700 readonly id: U8aFixed;
1550 readonly amount: u128;1701 readonly amount: u128;
1551 readonly reasons: PalletBalancesReasons;1702 readonly reasons: PalletBalancesReasons;
1552 }1703 }
15531704
1554 /** @name PalletBalancesReasons (168) */1705 /** @name PalletBalancesReasons (174) */
1555 interface PalletBalancesReasons extends Enum {1706 interface PalletBalancesReasons extends Enum {
1556 readonly isFee: boolean;1707 readonly isFee: boolean;
1557 readonly isMisc: boolean;1708 readonly isMisc: boolean;
1558 readonly isAll: boolean;1709 readonly isAll: boolean;
1559 readonly type: 'Fee' | 'Misc' | 'All';1710 readonly type: 'Fee' | 'Misc' | 'All';
1560 }1711 }
15611712
1562 /** @name PalletBalancesReserveData (171) */1713 /** @name PalletBalancesReserveData (177) */
1563 interface PalletBalancesReserveData extends Struct {1714 interface PalletBalancesReserveData extends Struct {
1564 readonly id: U8aFixed;1715 readonly id: U8aFixed;
1565 readonly amount: u128;1716 readonly amount: u128;
1566 }1717 }
15671718
1568 /** @name PalletBalancesReleases (173) */1719 /** @name PalletBalancesReleases (179) */
1569 interface PalletBalancesReleases extends Enum {1720 interface PalletBalancesReleases extends Enum {
1570 readonly isV100: boolean;1721 readonly isV100: boolean;
1571 readonly isV200: boolean;1722 readonly isV200: boolean;
1572 readonly type: 'V100' | 'V200';1723 readonly type: 'V100' | 'V200';
1573 }1724 }
15741725
1575 /** @name PalletBalancesCall (174) */1726 /** @name PalletBalancesCall (180) */
1576 interface PalletBalancesCall extends Enum {1727 interface PalletBalancesCall extends Enum {
1577 readonly isTransfer: boolean;1728 readonly isTransfer: boolean;
1578 readonly asTransfer: {1729 readonly asTransfer: {
1609 readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';1760 readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';
1610 }1761 }
16111762
1612 /** @name PalletBalancesError (177) */1763 /** @name PalletBalancesError (183) */
1613 interface PalletBalancesError extends Enum {1764 interface PalletBalancesError extends Enum {
1614 readonly isVestingBalance: boolean;1765 readonly isVestingBalance: boolean;
1615 readonly isLiquidityRestrictions: boolean;1766 readonly isLiquidityRestrictions: boolean;
1622 readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';1773 readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';
1623 }1774 }
16241775
1625 /** @name PalletTimestampCall (179) */1776 /** @name PalletTimestampCall (185) */
1626 interface PalletTimestampCall extends Enum {1777 interface PalletTimestampCall extends Enum {
1627 readonly isSet: boolean;1778 readonly isSet: boolean;
1628 readonly asSet: {1779 readonly asSet: {
1631 readonly type: 'Set';1782 readonly type: 'Set';
1632 }1783 }
16331784
1634 /** @name PalletTransactionPaymentReleases (181) */1785 /** @name PalletTransactionPaymentReleases (187) */
1635 interface PalletTransactionPaymentReleases extends Enum {1786 interface PalletTransactionPaymentReleases extends Enum {
1636 readonly isV1Ancient: boolean;1787 readonly isV1Ancient: boolean;
1637 readonly isV2: boolean;1788 readonly isV2: boolean;
1638 readonly type: 'V1Ancient' | 'V2';1789 readonly type: 'V1Ancient' | 'V2';
1639 }1790 }
16401791
1641 /** @name PalletTreasuryProposal (182) */1792 /** @name PalletTreasuryProposal (188) */
1642 interface PalletTreasuryProposal extends Struct {1793 interface PalletTreasuryProposal extends Struct {
1643 readonly proposer: AccountId32;1794 readonly proposer: AccountId32;
1644 readonly value: u128;1795 readonly value: u128;
1645 readonly beneficiary: AccountId32;1796 readonly beneficiary: AccountId32;
1646 readonly bond: u128;1797 readonly bond: u128;
1647 }1798 }
16481799
1649 /** @name PalletTreasuryCall (185) */1800 /** @name PalletTreasuryCall (191) */
1650 interface PalletTreasuryCall extends Enum {1801 interface PalletTreasuryCall extends Enum {
1651 readonly isProposeSpend: boolean;1802 readonly isProposeSpend: boolean;
1652 readonly asProposeSpend: {1803 readonly asProposeSpend: {
1673 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';1824 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';
1674 }1825 }
16751826
1676 /** @name FrameSupportPalletId (188) */1827 /** @name FrameSupportPalletId (194) */
1677 interface FrameSupportPalletId extends U8aFixed {}1828 interface FrameSupportPalletId extends U8aFixed {}
16781829
1679 /** @name PalletTreasuryError (189) */1830 /** @name PalletTreasuryError (195) */
1680 interface PalletTreasuryError extends Enum {1831 interface PalletTreasuryError extends Enum {
1681 readonly isInsufficientProposersBalance: boolean;1832 readonly isInsufficientProposersBalance: boolean;
1682 readonly isInvalidIndex: boolean;1833 readonly isInvalidIndex: boolean;
1686 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';1837 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';
1687 }1838 }
16881839
1689 /** @name PalletSudoCall (190) */1840 /** @name PalletSudoCall (196) */
1690 interface PalletSudoCall extends Enum {1841 interface PalletSudoCall extends Enum {
1691 readonly isSudo: boolean;1842 readonly isSudo: boolean;
1692 readonly asSudo: {1843 readonly asSudo: {
1709 readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';1860 readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';
1710 }1861 }
17111862
1712 /** @name OrmlVestingModuleCall (192) */1863 /** @name OrmlVestingModuleCall (198) */
1713 interface OrmlVestingModuleCall extends Enum {1864 interface OrmlVestingModuleCall extends Enum {
1714 readonly isClaim: boolean;1865 readonly isClaim: boolean;
1715 readonly isVestedTransfer: boolean;1866 readonly isVestedTransfer: boolean;
1729 readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';1880 readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';
1730 }1881 }
1882
1883 /** @name OrmlXtokensModuleCall (200) */
1884 interface OrmlXtokensModuleCall extends Enum {
1885 readonly isTransfer: boolean;
1886 readonly asTransfer: {
1887 readonly currencyId: PalletForeignAssetsAssetIds;
1888 readonly amount: u128;
1889 readonly dest: XcmVersionedMultiLocation;
1890 readonly destWeight: u64;
1891 } & Struct;
1892 readonly isTransferMultiasset: boolean;
1893 readonly asTransferMultiasset: {
1894 readonly asset: XcmVersionedMultiAsset;
1895 readonly dest: XcmVersionedMultiLocation;
1896 readonly destWeight: u64;
1897 } & Struct;
1898 readonly isTransferWithFee: boolean;
1899 readonly asTransferWithFee: {
1900 readonly currencyId: PalletForeignAssetsAssetIds;
1901 readonly amount: u128;
1902 readonly fee: u128;
1903 readonly dest: XcmVersionedMultiLocation;
1904 readonly destWeight: u64;
1905 } & Struct;
1906 readonly isTransferMultiassetWithFee: boolean;
1907 readonly asTransferMultiassetWithFee: {
1908 readonly asset: XcmVersionedMultiAsset;
1909 readonly fee: XcmVersionedMultiAsset;
1910 readonly dest: XcmVersionedMultiLocation;
1911 readonly destWeight: u64;
1912 } & Struct;
1913 readonly isTransferMulticurrencies: boolean;
1914 readonly asTransferMulticurrencies: {
1915 readonly currencies: Vec<ITuple<[PalletForeignAssetsAssetIds, u128]>>;
1916 readonly feeItem: u32;
1917 readonly dest: XcmVersionedMultiLocation;
1918 readonly destWeight: u64;
1919 } & Struct;
1920 readonly isTransferMultiassets: boolean;
1921 readonly asTransferMultiassets: {
1922 readonly assets: XcmVersionedMultiAssets;
1923 readonly feeItem: u32;
1924 readonly dest: XcmVersionedMultiLocation;
1925 readonly destWeight: u64;
1926 } & Struct;
1927 readonly type: 'Transfer' | 'TransferMultiasset' | 'TransferWithFee' | 'TransferMultiassetWithFee' | 'TransferMulticurrencies' | 'TransferMultiassets';
1928 }
1929
1930 /** @name XcmVersionedMultiAsset (201) */
1931 interface XcmVersionedMultiAsset extends Enum {
1932 readonly isV0: boolean;
1933 readonly asV0: XcmV0MultiAsset;
1934 readonly isV1: boolean;
1935 readonly asV1: XcmV1MultiAsset;
1936 readonly type: 'V0' | 'V1';
1937 }
1938
1939 /** @name OrmlTokensModuleCall (204) */
1940 interface OrmlTokensModuleCall extends Enum {
1941 readonly isTransfer: boolean;
1942 readonly asTransfer: {
1943 readonly dest: MultiAddress;
1944 readonly currencyId: PalletForeignAssetsAssetIds;
1945 readonly amount: Compact<u128>;
1946 } & Struct;
1947 readonly isTransferAll: boolean;
1948 readonly asTransferAll: {
1949 readonly dest: MultiAddress;
1950 readonly currencyId: PalletForeignAssetsAssetIds;
1951 readonly keepAlive: bool;
1952 } & Struct;
1953 readonly isTransferKeepAlive: boolean;
1954 readonly asTransferKeepAlive: {
1955 readonly dest: MultiAddress;
1956 readonly currencyId: PalletForeignAssetsAssetIds;
1957 readonly amount: Compact<u128>;
1958 } & Struct;
1959 readonly isForceTransfer: boolean;
1960 readonly asForceTransfer: {
1961 readonly source: MultiAddress;
1962 readonly dest: MultiAddress;
1963 readonly currencyId: PalletForeignAssetsAssetIds;
1964 readonly amount: Compact<u128>;
1965 } & Struct;
1966 readonly isSetBalance: boolean;
1967 readonly asSetBalance: {
1968 readonly who: MultiAddress;
1969 readonly currencyId: PalletForeignAssetsAssetIds;
1970 readonly newFree: Compact<u128>;
1971 readonly newReserved: Compact<u128>;
1972 } & Struct;
1973 readonly type: 'Transfer' | 'TransferAll' | 'TransferKeepAlive' | 'ForceTransfer' | 'SetBalance';
1974 }
17311975
1732 /** @name CumulusPalletXcmpQueueCall (194) */1976 /** @name CumulusPalletXcmpQueueCall (205) */
1733 interface CumulusPalletXcmpQueueCall extends Enum {1977 interface CumulusPalletXcmpQueueCall extends Enum {
1734 readonly isServiceOverweight: boolean;1978 readonly isServiceOverweight: boolean;
1735 readonly asServiceOverweight: {1979 readonly asServiceOverweight: {
1765 readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';2009 readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';
1766 }2010 }
17672011
1768 /** @name PalletXcmCall (195) */2012 /** @name PalletXcmCall (206) */
1769 interface PalletXcmCall extends Enum {2013 interface PalletXcmCall extends Enum {
1770 readonly isSend: boolean;2014 readonly isSend: boolean;
1771 readonly asSend: {2015 readonly asSend: {
1827 readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';2071 readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';
1828 }2072 }
18292073
1830 /** @name XcmVersionedXcm (196) */2074 /** @name XcmVersionedXcm (207) */
1831 interface XcmVersionedXcm extends Enum {2075 interface XcmVersionedXcm extends Enum {
1832 readonly isV0: boolean;2076 readonly isV0: boolean;
1833 readonly asV0: XcmV0Xcm;2077 readonly asV0: XcmV0Xcm;
1838 readonly type: 'V0' | 'V1' | 'V2';2082 readonly type: 'V0' | 'V1' | 'V2';
1839 }2083 }
18402084
1841 /** @name XcmV0Xcm (197) */2085 /** @name XcmV0Xcm (208) */
1842 interface XcmV0Xcm extends Enum {2086 interface XcmV0Xcm extends Enum {
1843 readonly isWithdrawAsset: boolean;2087 readonly isWithdrawAsset: boolean;
1844 readonly asWithdrawAsset: {2088 readonly asWithdrawAsset: {
1901 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';2145 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
1902 }2146 }
19032147
1904 /** @name XcmV0Order (199) */2148 /** @name XcmV0Order (210) */
1905 interface XcmV0Order extends Enum {2149 interface XcmV0Order extends Enum {
1906 readonly isNull: boolean;2150 readonly isNull: boolean;
1907 readonly isDepositAsset: boolean;2151 readonly isDepositAsset: boolean;
1949 readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';2193 readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
1950 }2194 }
19512195
1952 /** @name XcmV0Response (201) */2196 /** @name XcmV0Response (212) */
1953 interface XcmV0Response extends Enum {2197 interface XcmV0Response extends Enum {
1954 readonly isAssets: boolean;2198 readonly isAssets: boolean;
1955 readonly asAssets: Vec<XcmV0MultiAsset>;2199 readonly asAssets: Vec<XcmV0MultiAsset>;
1956 readonly type: 'Assets';2200 readonly type: 'Assets';
1957 }2201 }
19582202
1959 /** @name XcmV1Xcm (202) */2203 /** @name XcmV1Xcm (213) */
1960 interface XcmV1Xcm extends Enum {2204 interface XcmV1Xcm extends Enum {
1961 readonly isWithdrawAsset: boolean;2205 readonly isWithdrawAsset: boolean;
1962 readonly asWithdrawAsset: {2206 readonly asWithdrawAsset: {
2025 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';2269 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';
2026 }2270 }
20272271
2028 /** @name XcmV1Order (204) */2272 /** @name XcmV1Order (215) */
2029 interface XcmV1Order extends Enum {2273 interface XcmV1Order extends Enum {
2030 readonly isNoop: boolean;2274 readonly isNoop: boolean;
2031 readonly isDepositAsset: boolean;2275 readonly isDepositAsset: boolean;
2075 readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';2319 readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
2076 }2320 }
20772321
2078 /** @name XcmV1Response (206) */2322 /** @name XcmV1Response (217) */
2079 interface XcmV1Response extends Enum {2323 interface XcmV1Response extends Enum {
2080 readonly isAssets: boolean;2324 readonly isAssets: boolean;
2081 readonly asAssets: XcmV1MultiassetMultiAssets;2325 readonly asAssets: XcmV1MultiassetMultiAssets;
2084 readonly type: 'Assets' | 'Version';2328 readonly type: 'Assets' | 'Version';
2085 }2329 }
20862330
2087 /** @name CumulusPalletXcmCall (220) */2331 /** @name CumulusPalletXcmCall (231) */
2088 type CumulusPalletXcmCall = Null;2332 type CumulusPalletXcmCall = Null;
20892333
2090 /** @name CumulusPalletDmpQueueCall (221) */2334 /** @name CumulusPalletDmpQueueCall (232) */
2091 interface CumulusPalletDmpQueueCall extends Enum {2335 interface CumulusPalletDmpQueueCall extends Enum {
2092 readonly isServiceOverweight: boolean;2336 readonly isServiceOverweight: boolean;
2093 readonly asServiceOverweight: {2337 readonly asServiceOverweight: {
2097 readonly type: 'ServiceOverweight';2341 readonly type: 'ServiceOverweight';
2098 }2342 }
20992343
2100 /** @name PalletInflationCall (222) */2344 /** @name PalletInflationCall (233) */
2101 interface PalletInflationCall extends Enum {2345 interface PalletInflationCall extends Enum {
2102 readonly isStartInflation: boolean;2346 readonly isStartInflation: boolean;
2103 readonly asStartInflation: {2347 readonly asStartInflation: {
2106 readonly type: 'StartInflation';2350 readonly type: 'StartInflation';
2107 }2351 }
21082352
2109 /** @name PalletUniqueCall (223) */2353 /** @name PalletUniqueCall (234) */
2110 interface PalletUniqueCall extends Enum {2354 interface PalletUniqueCall extends Enum {
2111 readonly isCreateCollection: boolean;2355 readonly isCreateCollection: boolean;
2112 readonly asCreateCollection: {2356 readonly asCreateCollection: {
2264 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';2508 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';
2265 }2509 }
22662510
2267 /** @name UpDataStructsCollectionMode (228) */2511 /** @name UpDataStructsCollectionMode (239) */
2268 interface UpDataStructsCollectionMode extends Enum {2512 interface UpDataStructsCollectionMode extends Enum {
2269 readonly isNft: boolean;2513 readonly isNft: boolean;
2270 readonly isFungible: boolean;2514 readonly isFungible: boolean;
2273 readonly type: 'Nft' | 'Fungible' | 'ReFungible';2517 readonly type: 'Nft' | 'Fungible' | 'ReFungible';
2274 }2518 }
22752519
2276 /** @name UpDataStructsCreateCollectionData (229) */2520 /** @name UpDataStructsCreateCollectionData (240) */
2277 interface UpDataStructsCreateCollectionData extends Struct {2521 interface UpDataStructsCreateCollectionData extends Struct {
2278 readonly mode: UpDataStructsCollectionMode;2522 readonly mode: UpDataStructsCollectionMode;
2279 readonly access: Option<UpDataStructsAccessMode>;2523 readonly access: Option<UpDataStructsAccessMode>;
2287 readonly properties: Vec<UpDataStructsProperty>;2531 readonly properties: Vec<UpDataStructsProperty>;
2288 }2532 }
22892533
2290 /** @name UpDataStructsAccessMode (231) */2534 /** @name UpDataStructsAccessMode (242) */
2291 interface UpDataStructsAccessMode extends Enum {2535 interface UpDataStructsAccessMode extends Enum {
2292 readonly isNormal: boolean;2536 readonly isNormal: boolean;
2293 readonly isAllowList: boolean;2537 readonly isAllowList: boolean;
2294 readonly type: 'Normal' | 'AllowList';2538 readonly type: 'Normal' | 'AllowList';
2295 }2539 }
22962540
2297 /** @name UpDataStructsCollectionLimits (233) */2541 /** @name UpDataStructsCollectionLimits (244) */
2298 interface UpDataStructsCollectionLimits extends Struct {2542 interface UpDataStructsCollectionLimits extends Struct {
2299 readonly accountTokenOwnershipLimit: Option<u32>;2543 readonly accountTokenOwnershipLimit: Option<u32>;
2300 readonly sponsoredDataSize: Option<u32>;2544 readonly sponsoredDataSize: Option<u32>;
2307 readonly transfersEnabled: Option<bool>;2551 readonly transfersEnabled: Option<bool>;
2308 }2552 }
23092553
2310 /** @name UpDataStructsSponsoringRateLimit (235) */2554 /** @name UpDataStructsSponsoringRateLimit (246) */
2311 interface UpDataStructsSponsoringRateLimit extends Enum {2555 interface UpDataStructsSponsoringRateLimit extends Enum {
2312 readonly isSponsoringDisabled: boolean;2556 readonly isSponsoringDisabled: boolean;
2313 readonly isBlocks: boolean;2557 readonly isBlocks: boolean;
2314 readonly asBlocks: u32;2558 readonly asBlocks: u32;
2315 readonly type: 'SponsoringDisabled' | 'Blocks';2559 readonly type: 'SponsoringDisabled' | 'Blocks';
2316 }2560 }
23172561
2318 /** @name UpDataStructsCollectionPermissions (238) */2562 /** @name UpDataStructsCollectionPermissions (249) */
2319 interface UpDataStructsCollectionPermissions extends Struct {2563 interface UpDataStructsCollectionPermissions extends Struct {
2320 readonly access: Option<UpDataStructsAccessMode>;2564 readonly access: Option<UpDataStructsAccessMode>;
2321 readonly mintMode: Option<bool>;2565 readonly mintMode: Option<bool>;
2322 readonly nesting: Option<UpDataStructsNestingPermissions>;2566 readonly nesting: Option<UpDataStructsNestingPermissions>;
2323 }2567 }
23242568
2325 /** @name UpDataStructsNestingPermissions (240) */2569 /** @name UpDataStructsNestingPermissions (251) */
2326 interface UpDataStructsNestingPermissions extends Struct {2570 interface UpDataStructsNestingPermissions extends Struct {
2327 readonly tokenOwner: bool;2571 readonly tokenOwner: bool;
2328 readonly collectionAdmin: bool;2572 readonly collectionAdmin: bool;
2329 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2573 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;
2330 }2574 }
23312575
2332 /** @name UpDataStructsOwnerRestrictedSet (242) */2576 /** @name UpDataStructsOwnerRestrictedSet (253) */
2333 interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}2577 interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}
23342578
2335 /** @name UpDataStructsPropertyKeyPermission (247) */2579 /** @name UpDataStructsPropertyKeyPermission (258) */
2336 interface UpDataStructsPropertyKeyPermission extends Struct {2580 interface UpDataStructsPropertyKeyPermission extends Struct {
2337 readonly key: Bytes;2581 readonly key: Bytes;
2338 readonly permission: UpDataStructsPropertyPermission;2582 readonly permission: UpDataStructsPropertyPermission;
2339 }2583 }
23402584
2341 /** @name UpDataStructsPropertyPermission (248) */2585 /** @name UpDataStructsPropertyPermission (259) */
2342 interface UpDataStructsPropertyPermission extends Struct {2586 interface UpDataStructsPropertyPermission extends Struct {
2343 readonly mutable: bool;2587 readonly mutable: bool;
2344 readonly collectionAdmin: bool;2588 readonly collectionAdmin: bool;
2345 readonly tokenOwner: bool;2589 readonly tokenOwner: bool;
2346 }2590 }
23472591
2348 /** @name UpDataStructsProperty (251) */2592 /** @name UpDataStructsProperty (262) */
2349 interface UpDataStructsProperty extends Struct {2593 interface UpDataStructsProperty extends Struct {
2350 readonly key: Bytes;2594 readonly key: Bytes;
2351 readonly value: Bytes;2595 readonly value: Bytes;
2352 }2596 }
23532597
2354 /** @name UpDataStructsCreateItemData (254) */2598 /** @name UpDataStructsCreateItemData (265) */
2355 interface UpDataStructsCreateItemData extends Enum {2599 interface UpDataStructsCreateItemData extends Enum {
2356 readonly isNft: boolean;2600 readonly isNft: boolean;
2357 readonly asNft: UpDataStructsCreateNftData;2601 readonly asNft: UpDataStructsCreateNftData;
2362 readonly type: 'Nft' | 'Fungible' | 'ReFungible';2606 readonly type: 'Nft' | 'Fungible' | 'ReFungible';
2363 }2607 }
23642608
2365 /** @name UpDataStructsCreateNftData (255) */2609 /** @name UpDataStructsCreateNftData (266) */
2366 interface UpDataStructsCreateNftData extends Struct {2610 interface UpDataStructsCreateNftData extends Struct {
2367 readonly properties: Vec<UpDataStructsProperty>;2611 readonly properties: Vec<UpDataStructsProperty>;
2368 }2612 }
23692613
2370 /** @name UpDataStructsCreateFungibleData (256) */2614 /** @name UpDataStructsCreateFungibleData (267) */
2371 interface UpDataStructsCreateFungibleData extends Struct {2615 interface UpDataStructsCreateFungibleData extends Struct {
2372 readonly value: u128;2616 readonly value: u128;
2373 }2617 }
23742618
2375 /** @name UpDataStructsCreateReFungibleData (257) */2619 /** @name UpDataStructsCreateReFungibleData (268) */
2376 interface UpDataStructsCreateReFungibleData extends Struct {2620 interface UpDataStructsCreateReFungibleData extends Struct {
2377 readonly pieces: u128;2621 readonly pieces: u128;
2378 readonly properties: Vec<UpDataStructsProperty>;2622 readonly properties: Vec<UpDataStructsProperty>;
2379 }2623 }
23802624
2381 /** @name UpDataStructsCreateItemExData (260) */2625 /** @name UpDataStructsCreateItemExData (271) */
2382 interface UpDataStructsCreateItemExData extends Enum {2626 interface UpDataStructsCreateItemExData extends Enum {
2383 readonly isNft: boolean;2627 readonly isNft: boolean;
2384 readonly asNft: Vec<UpDataStructsCreateNftExData>;2628 readonly asNft: Vec<UpDataStructsCreateNftExData>;
2391 readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';2635 readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';
2392 }2636 }
23932637
2394 /** @name UpDataStructsCreateNftExData (262) */2638 /** @name UpDataStructsCreateNftExData (273) */
2395 interface UpDataStructsCreateNftExData extends Struct {2639 interface UpDataStructsCreateNftExData extends Struct {
2396 readonly properties: Vec<UpDataStructsProperty>;2640 readonly properties: Vec<UpDataStructsProperty>;
2397 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2641 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
2398 }2642 }
23992643
2400 /** @name UpDataStructsCreateRefungibleExSingleOwner (269) */2644 /** @name UpDataStructsCreateRefungibleExSingleOwner (280) */
2401 interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {2645 interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {
2402 readonly user: PalletEvmAccountBasicCrossAccountIdRepr;2646 readonly user: PalletEvmAccountBasicCrossAccountIdRepr;
2403 readonly pieces: u128;2647 readonly pieces: u128;
2404 readonly properties: Vec<UpDataStructsProperty>;2648 readonly properties: Vec<UpDataStructsProperty>;
2405 }2649 }
24062650
2407 /** @name UpDataStructsCreateRefungibleExMultipleOwners (271) */2651 /** @name UpDataStructsCreateRefungibleExMultipleOwners (282) */
2408 interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {2652 interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {
2409 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;2653 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
2410 readonly properties: Vec<UpDataStructsProperty>;2654 readonly properties: Vec<UpDataStructsProperty>;
2411 }2655 }
24122656
2413 /** @name PalletUniqueSchedulerCall (272) */2657 /** @name PalletUniqueSchedulerCall (283) */
2414 interface PalletUniqueSchedulerCall extends Enum {2658 interface PalletUniqueSchedulerCall extends Enum {
2415 readonly isScheduleNamed: boolean;2659 readonly isScheduleNamed: boolean;
2416 readonly asScheduleNamed: {2660 readonly asScheduleNamed: {
2435 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';2679 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';
2436 }2680 }
24372681
2438 /** @name FrameSupportScheduleMaybeHashed (274) */2682 /** @name FrameSupportScheduleMaybeHashed (285) */
2439 interface FrameSupportScheduleMaybeHashed extends Enum {2683 interface FrameSupportScheduleMaybeHashed extends Enum {
2440 readonly isValue: boolean;2684 readonly isValue: boolean;
2441 readonly asValue: Call;2685 readonly asValue: Call;
2444 readonly type: 'Value' | 'Hash';2688 readonly type: 'Value' | 'Hash';
2445 }2689 }
24462690
2447 /** @name PalletConfigurationCall (275) */2691 /** @name PalletConfigurationCall (286) */
2448 interface PalletConfigurationCall extends Enum {2692 interface PalletConfigurationCall extends Enum {
2449 readonly isSetWeightToFeeCoefficientOverride: boolean;2693 readonly isSetWeightToFeeCoefficientOverride: boolean;
2450 readonly asSetWeightToFeeCoefficientOverride: {2694 readonly asSetWeightToFeeCoefficientOverride: {
2457 readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride';2701 readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride';
2458 }2702 }
24592703
2460 /** @name PalletTemplateTransactionPaymentCall (276) */2704 /** @name PalletTemplateTransactionPaymentCall (287) */
2461 type PalletTemplateTransactionPaymentCall = Null;2705 type PalletTemplateTransactionPaymentCall = Null;
24622706
2463 /** @name PalletStructureCall (277) */2707 /** @name PalletStructureCall (288) */
2464 type PalletStructureCall = Null;2708 type PalletStructureCall = Null;
24652709
2466 /** @name PalletRmrkCoreCall (278) */2710 /** @name PalletRmrkCoreCall (289) */
2467 interface PalletRmrkCoreCall extends Enum {2711 interface PalletRmrkCoreCall extends Enum {
2468 readonly isCreateCollection: boolean;2712 readonly isCreateCollection: boolean;
2469 readonly asCreateCollection: {2713 readonly asCreateCollection: {
2569 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';2813 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';
2570 }2814 }
25712815
2572 /** @name RmrkTraitsResourceResourceTypes (284) */2816 /** @name RmrkTraitsResourceResourceTypes (295) */
2573 interface RmrkTraitsResourceResourceTypes extends Enum {2817 interface RmrkTraitsResourceResourceTypes extends Enum {
2574 readonly isBasic: boolean;2818 readonly isBasic: boolean;
2575 readonly asBasic: RmrkTraitsResourceBasicResource;2819 readonly asBasic: RmrkTraitsResourceBasicResource;
2580 readonly type: 'Basic' | 'Composable' | 'Slot';2824 readonly type: 'Basic' | 'Composable' | 'Slot';
2581 }2825 }
25822826
2583 /** @name RmrkTraitsResourceBasicResource (286) */2827 /** @name RmrkTraitsResourceBasicResource (297) */
2584 interface RmrkTraitsResourceBasicResource extends Struct {2828 interface RmrkTraitsResourceBasicResource extends Struct {
2585 readonly src: Option<Bytes>;2829 readonly src: Option<Bytes>;
2586 readonly metadata: Option<Bytes>;2830 readonly metadata: Option<Bytes>;
2587 readonly license: Option<Bytes>;2831 readonly license: Option<Bytes>;
2588 readonly thumb: Option<Bytes>;2832 readonly thumb: Option<Bytes>;
2589 }2833 }
25902834
2591 /** @name RmrkTraitsResourceComposableResource (288) */2835 /** @name RmrkTraitsResourceComposableResource (299) */
2592 interface RmrkTraitsResourceComposableResource extends Struct {2836 interface RmrkTraitsResourceComposableResource extends Struct {
2593 readonly parts: Vec<u32>;2837 readonly parts: Vec<u32>;
2594 readonly base: u32;2838 readonly base: u32;
2598 readonly thumb: Option<Bytes>;2842 readonly thumb: Option<Bytes>;
2599 }2843 }
26002844
2601 /** @name RmrkTraitsResourceSlotResource (289) */2845 /** @name RmrkTraitsResourceSlotResource (300) */
2602 interface RmrkTraitsResourceSlotResource extends Struct {2846 interface RmrkTraitsResourceSlotResource extends Struct {
2603 readonly base: u32;2847 readonly base: u32;
2604 readonly src: Option<Bytes>;2848 readonly src: Option<Bytes>;
2608 readonly thumb: Option<Bytes>;2852 readonly thumb: Option<Bytes>;
2609 }2853 }
26102854
2611 /** @name PalletRmrkEquipCall (292) */2855 /** @name PalletRmrkEquipCall (303) */
2612 interface PalletRmrkEquipCall extends Enum {2856 interface PalletRmrkEquipCall extends Enum {
2613 readonly isCreateBase: boolean;2857 readonly isCreateBase: boolean;
2614 readonly asCreateBase: {2858 readonly asCreateBase: {
2630 readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';2874 readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';
2631 }2875 }
26322876
2633 /** @name RmrkTraitsPartPartType (295) */2877 /** @name RmrkTraitsPartPartType (306) */
2634 interface RmrkTraitsPartPartType extends Enum {2878 interface RmrkTraitsPartPartType extends Enum {
2635 readonly isFixedPart: boolean;2879 readonly isFixedPart: boolean;
2636 readonly asFixedPart: RmrkTraitsPartFixedPart;2880 readonly asFixedPart: RmrkTraitsPartFixedPart;
2639 readonly type: 'FixedPart' | 'SlotPart';2883 readonly type: 'FixedPart' | 'SlotPart';
2640 }2884 }
26412885
2642 /** @name RmrkTraitsPartFixedPart (297) */2886 /** @name RmrkTraitsPartFixedPart (308) */
2643 interface RmrkTraitsPartFixedPart extends Struct {2887 interface RmrkTraitsPartFixedPart extends Struct {
2644 readonly id: u32;2888 readonly id: u32;
2645 readonly z: u32;2889 readonly z: u32;
2646 readonly src: Bytes;2890 readonly src: Bytes;
2647 }2891 }
26482892
2649 /** @name RmrkTraitsPartSlotPart (298) */2893 /** @name RmrkTraitsPartSlotPart (309) */
2650 interface RmrkTraitsPartSlotPart extends Struct {2894 interface RmrkTraitsPartSlotPart extends Struct {
2651 readonly id: u32;2895 readonly id: u32;
2652 readonly equippable: RmrkTraitsPartEquippableList;2896 readonly equippable: RmrkTraitsPartEquippableList;
2653 readonly src: Bytes;2897 readonly src: Bytes;
2654 readonly z: u32;2898 readonly z: u32;
2655 }2899 }
26562900
2657 /** @name RmrkTraitsPartEquippableList (299) */2901 /** @name RmrkTraitsPartEquippableList (310) */
2658 interface RmrkTraitsPartEquippableList extends Enum {2902 interface RmrkTraitsPartEquippableList extends Enum {
2659 readonly isAll: boolean;2903 readonly isAll: boolean;
2660 readonly isEmpty: boolean;2904 readonly isEmpty: boolean;
2663 readonly type: 'All' | 'Empty' | 'Custom';2907 readonly type: 'All' | 'Empty' | 'Custom';
2664 }2908 }
26652909
2666 /** @name RmrkTraitsTheme (301) */2910 /** @name RmrkTraitsTheme (312) */
2667 interface RmrkTraitsTheme extends Struct {2911 interface RmrkTraitsTheme extends Struct {
2668 readonly name: Bytes;2912 readonly name: Bytes;
2669 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;2913 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;
2670 readonly inherit: bool;2914 readonly inherit: bool;
2671 }2915 }
26722916
2673 /** @name RmrkTraitsThemeThemeProperty (303) */2917 /** @name RmrkTraitsThemeThemeProperty (314) */
2674 interface RmrkTraitsThemeThemeProperty extends Struct {2918 interface RmrkTraitsThemeThemeProperty extends Struct {
2675 readonly key: Bytes;2919 readonly key: Bytes;
2676 readonly value: Bytes;2920 readonly value: Bytes;
2677 }2921 }
26782922
2679 /** @name PalletAppPromotionCall (305) */2923 /** @name PalletAppPromotionCall (316) */
2680 interface PalletAppPromotionCall extends Enum {2924 interface PalletAppPromotionCall extends Enum {
2681 readonly isSetAdminAddress: boolean;2925 readonly isSetAdminAddress: boolean;
2682 readonly asSetAdminAddress: {2926 readonly asSetAdminAddress: {
2710 readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';2954 readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';
2711 }2955 }
2956
2957 /** @name PalletForeignAssetsModuleCall (318) */
2958 interface PalletForeignAssetsModuleCall extends Enum {
2959 readonly isRegisterForeignAsset: boolean;
2960 readonly asRegisterForeignAsset: {
2961 readonly owner: AccountId32;
2962 readonly location: XcmVersionedMultiLocation;
2963 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
2964 } & Struct;
2965 readonly isUpdateForeignAsset: boolean;
2966 readonly asUpdateForeignAsset: {
2967 readonly foreignAssetId: u32;
2968 readonly location: XcmVersionedMultiLocation;
2969 readonly metadata: PalletForeignAssetsModuleAssetMetadata;
2970 } & Struct;
2971 readonly type: 'RegisterForeignAsset' | 'UpdateForeignAsset';
2972 }
27122973
2713 /** @name PalletEvmCall (307) */2974 /** @name PalletEvmCall (319) */
2714 interface PalletEvmCall extends Enum {2975 interface PalletEvmCall extends Enum {
2715 readonly isWithdraw: boolean;2976 readonly isWithdraw: boolean;
2716 readonly asWithdraw: {2977 readonly asWithdraw: {
2755 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';3016 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
2756 }3017 }
27573018
2758 /** @name PalletEthereumCall (311) */3019 /** @name PalletEthereumCall (323) */
2759 interface PalletEthereumCall extends Enum {3020 interface PalletEthereumCall extends Enum {
2760 readonly isTransact: boolean;3021 readonly isTransact: boolean;
2761 readonly asTransact: {3022 readonly asTransact: {
2764 readonly type: 'Transact';3025 readonly type: 'Transact';
2765 }3026 }
27663027
2767 /** @name EthereumTransactionTransactionV2 (312) */3028 /** @name EthereumTransactionTransactionV2 (324) */
2768 interface EthereumTransactionTransactionV2 extends Enum {3029 interface EthereumTransactionTransactionV2 extends Enum {
2769 readonly isLegacy: boolean;3030 readonly isLegacy: boolean;
2770 readonly asLegacy: EthereumTransactionLegacyTransaction;3031 readonly asLegacy: EthereumTransactionLegacyTransaction;
2775 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';3036 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
2776 }3037 }
27773038
2778 /** @name EthereumTransactionLegacyTransaction (313) */3039 /** @name EthereumTransactionLegacyTransaction (325) */
2779 interface EthereumTransactionLegacyTransaction extends Struct {3040 interface EthereumTransactionLegacyTransaction extends Struct {
2780 readonly nonce: U256;3041 readonly nonce: U256;
2781 readonly gasPrice: U256;3042 readonly gasPrice: U256;
2786 readonly signature: EthereumTransactionTransactionSignature;3047 readonly signature: EthereumTransactionTransactionSignature;
2787 }3048 }
27883049
2789 /** @name EthereumTransactionTransactionAction (314) */3050 /** @name EthereumTransactionTransactionAction (326) */
2790 interface EthereumTransactionTransactionAction extends Enum {3051 interface EthereumTransactionTransactionAction extends Enum {
2791 readonly isCall: boolean;3052 readonly isCall: boolean;
2792 readonly asCall: H160;3053 readonly asCall: H160;
2793 readonly isCreate: boolean;3054 readonly isCreate: boolean;
2794 readonly type: 'Call' | 'Create';3055 readonly type: 'Call' | 'Create';
2795 }3056 }
27963057
2797 /** @name EthereumTransactionTransactionSignature (315) */3058 /** @name EthereumTransactionTransactionSignature (327) */
2798 interface EthereumTransactionTransactionSignature extends Struct {3059 interface EthereumTransactionTransactionSignature extends Struct {
2799 readonly v: u64;3060 readonly v: u64;
2800 readonly r: H256;3061 readonly r: H256;
2801 readonly s: H256;3062 readonly s: H256;
2802 }3063 }
28033064
2804 /** @name EthereumTransactionEip2930Transaction (317) */3065 /** @name EthereumTransactionEip2930Transaction (329) */
2805 interface EthereumTransactionEip2930Transaction extends Struct {3066 interface EthereumTransactionEip2930Transaction extends Struct {
2806 readonly chainId: u64;3067 readonly chainId: u64;
2807 readonly nonce: U256;3068 readonly nonce: U256;
2816 readonly s: H256;3077 readonly s: H256;
2817 }3078 }
28183079
2819 /** @name EthereumTransactionAccessListItem (319) */3080 /** @name EthereumTransactionAccessListItem (331) */
2820 interface EthereumTransactionAccessListItem extends Struct {3081 interface EthereumTransactionAccessListItem extends Struct {
2821 readonly address: H160;3082 readonly address: H160;
2822 readonly storageKeys: Vec<H256>;3083 readonly storageKeys: Vec<H256>;
2823 }3084 }
28243085
2825 /** @name EthereumTransactionEip1559Transaction (320) */3086 /** @name EthereumTransactionEip1559Transaction (332) */
2826 interface EthereumTransactionEip1559Transaction extends Struct {3087 interface EthereumTransactionEip1559Transaction extends Struct {
2827 readonly chainId: u64;3088 readonly chainId: u64;
2828 readonly nonce: U256;3089 readonly nonce: U256;
2838 readonly s: H256;3099 readonly s: H256;
2839 }3100 }
28403101
2841 /** @name PalletEvmMigrationCall (321) */3102 /** @name PalletEvmMigrationCall (333) */
2842 interface PalletEvmMigrationCall extends Enum {3103 interface PalletEvmMigrationCall extends Enum {
2843 readonly isBegin: boolean;3104 readonly isBegin: boolean;
2844 readonly asBegin: {3105 readonly asBegin: {
2857 readonly type: 'Begin' | 'SetData' | 'Finish';3118 readonly type: 'Begin' | 'SetData' | 'Finish';
2858 }3119 }
28593120
2860 /** @name PalletSudoError (324) */3121 /** @name PalletSudoError (336) */
2861 interface PalletSudoError extends Enum {3122 interface PalletSudoError extends Enum {
2862 readonly isRequireSudo: boolean;3123 readonly isRequireSudo: boolean;
2863 readonly type: 'RequireSudo';3124 readonly type: 'RequireSudo';
2864 }3125 }
28653126
2866 /** @name OrmlVestingModuleError (326) */3127 /** @name OrmlVestingModuleError (338) */
2867 interface OrmlVestingModuleError extends Enum {3128 interface OrmlVestingModuleError extends Enum {
2868 readonly isZeroVestingPeriod: boolean;3129 readonly isZeroVestingPeriod: boolean;
2869 readonly isZeroVestingPeriodCount: boolean;3130 readonly isZeroVestingPeriodCount: boolean;
2874 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';3135 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
2875 }3136 }
3137
3138 /** @name OrmlXtokensModuleError (339) */
3139 interface OrmlXtokensModuleError extends Enum {
3140 readonly isAssetHasNoReserve: boolean;
3141 readonly isNotCrossChainTransfer: boolean;
3142 readonly isInvalidDest: boolean;
3143 readonly isNotCrossChainTransferableCurrency: boolean;
3144 readonly isUnweighableMessage: boolean;
3145 readonly isXcmExecutionFailed: boolean;
3146 readonly isCannotReanchor: boolean;
3147 readonly isInvalidAncestry: boolean;
3148 readonly isInvalidAsset: boolean;
3149 readonly isDestinationNotInvertible: boolean;
3150 readonly isBadVersion: boolean;
3151 readonly isDistinctReserveForAssetAndFee: boolean;
3152 readonly isZeroFee: boolean;
3153 readonly isZeroAmount: boolean;
3154 readonly isTooManyAssetsBeingSent: boolean;
3155 readonly isAssetIndexNonExistent: boolean;
3156 readonly isFeeNotEnough: boolean;
3157 readonly isNotSupportedMultiLocation: boolean;
3158 readonly isMinXcmFeeNotDefined: boolean;
3159 readonly type: 'AssetHasNoReserve' | 'NotCrossChainTransfer' | 'InvalidDest' | 'NotCrossChainTransferableCurrency' | 'UnweighableMessage' | 'XcmExecutionFailed' | 'CannotReanchor' | 'InvalidAncestry' | 'InvalidAsset' | 'DestinationNotInvertible' | 'BadVersion' | 'DistinctReserveForAssetAndFee' | 'ZeroFee' | 'ZeroAmount' | 'TooManyAssetsBeingSent' | 'AssetIndexNonExistent' | 'FeeNotEnough' | 'NotSupportedMultiLocation' | 'MinXcmFeeNotDefined';
3160 }
3161
3162 /** @name OrmlTokensBalanceLock (342) */
3163 interface OrmlTokensBalanceLock extends Struct {
3164 readonly id: U8aFixed;
3165 readonly amount: u128;
3166 }
3167
3168 /** @name OrmlTokensAccountData (344) */
3169 interface OrmlTokensAccountData extends Struct {
3170 readonly free: u128;
3171 readonly reserved: u128;
3172 readonly frozen: u128;
3173 }
3174
3175 /** @name OrmlTokensReserveData (346) */
3176 interface OrmlTokensReserveData extends Struct {
3177 readonly id: Null;
3178 readonly amount: u128;
3179 }
3180
3181 /** @name OrmlTokensModuleError (348) */
3182 interface OrmlTokensModuleError extends Enum {
3183 readonly isBalanceTooLow: boolean;
3184 readonly isAmountIntoBalanceFailed: boolean;
3185 readonly isLiquidityRestrictions: boolean;
3186 readonly isMaxLocksExceeded: boolean;
3187 readonly isKeepAlive: boolean;
3188 readonly isExistentialDeposit: boolean;
3189 readonly isDeadAccount: boolean;
3190 readonly isTooManyReserves: boolean;
3191 readonly type: 'BalanceTooLow' | 'AmountIntoBalanceFailed' | 'LiquidityRestrictions' | 'MaxLocksExceeded' | 'KeepAlive' | 'ExistentialDeposit' | 'DeadAccount' | 'TooManyReserves';
3192 }
28763193
2877 /** @name CumulusPalletXcmpQueueInboundChannelDetails (328) */3194 /** @name CumulusPalletXcmpQueueInboundChannelDetails (350) */
2878 interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {3195 interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
2879 readonly sender: u32;3196 readonly sender: u32;
2880 readonly state: CumulusPalletXcmpQueueInboundState;3197 readonly state: CumulusPalletXcmpQueueInboundState;
2881 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;3198 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
2882 }3199 }
28833200
2884 /** @name CumulusPalletXcmpQueueInboundState (329) */3201 /** @name CumulusPalletXcmpQueueInboundState (351) */
2885 interface CumulusPalletXcmpQueueInboundState extends Enum {3202 interface CumulusPalletXcmpQueueInboundState extends Enum {
2886 readonly isOk: boolean;3203 readonly isOk: boolean;
2887 readonly isSuspended: boolean;3204 readonly isSuspended: boolean;
2888 readonly type: 'Ok' | 'Suspended';3205 readonly type: 'Ok' | 'Suspended';
2889 }3206 }
28903207
2891 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (332) */3208 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (354) */
2892 interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {3209 interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
2893 readonly isConcatenatedVersionedXcm: boolean;3210 readonly isConcatenatedVersionedXcm: boolean;
2894 readonly isConcatenatedEncodedBlob: boolean;3211 readonly isConcatenatedEncodedBlob: boolean;
2895 readonly isSignals: boolean;3212 readonly isSignals: boolean;
2896 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';3213 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
2897 }3214 }
28983215
2899 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (335) */3216 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (357) */
2900 interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {3217 interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
2901 readonly recipient: u32;3218 readonly recipient: u32;
2902 readonly state: CumulusPalletXcmpQueueOutboundState;3219 readonly state: CumulusPalletXcmpQueueOutboundState;
2905 readonly lastIndex: u16;3222 readonly lastIndex: u16;
2906 }3223 }
29073224
2908 /** @name CumulusPalletXcmpQueueOutboundState (336) */3225 /** @name CumulusPalletXcmpQueueOutboundState (358) */
2909 interface CumulusPalletXcmpQueueOutboundState extends Enum {3226 interface CumulusPalletXcmpQueueOutboundState extends Enum {
2910 readonly isOk: boolean;3227 readonly isOk: boolean;
2911 readonly isSuspended: boolean;3228 readonly isSuspended: boolean;
2912 readonly type: 'Ok' | 'Suspended';3229 readonly type: 'Ok' | 'Suspended';
2913 }3230 }
29143231
2915 /** @name CumulusPalletXcmpQueueQueueConfigData (338) */3232 /** @name CumulusPalletXcmpQueueQueueConfigData (360) */
2916 interface CumulusPalletXcmpQueueQueueConfigData extends Struct {3233 interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
2917 readonly suspendThreshold: u32;3234 readonly suspendThreshold: u32;
2918 readonly dropThreshold: u32;3235 readonly dropThreshold: u32;
2922 readonly xcmpMaxIndividualWeight: u64;3239 readonly xcmpMaxIndividualWeight: u64;
2923 }3240 }
29243241
2925 /** @name CumulusPalletXcmpQueueError (340) */3242 /** @name CumulusPalletXcmpQueueError (362) */
2926 interface CumulusPalletXcmpQueueError extends Enum {3243 interface CumulusPalletXcmpQueueError extends Enum {
2927 readonly isFailedToSend: boolean;3244 readonly isFailedToSend: boolean;
2928 readonly isBadXcmOrigin: boolean;3245 readonly isBadXcmOrigin: boolean;
2932 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';3249 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
2933 }3250 }
29343251
2935 /** @name PalletXcmError (341) */3252 /** @name PalletXcmError (363) */
2936 interface PalletXcmError extends Enum {3253 interface PalletXcmError extends Enum {
2937 readonly isUnreachable: boolean;3254 readonly isUnreachable: boolean;
2938 readonly isSendFailure: boolean;3255 readonly isSendFailure: boolean;
2950 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';3267 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
2951 }3268 }
29523269
2953 /** @name CumulusPalletXcmError (342) */3270 /** @name CumulusPalletXcmError (364) */
2954 type CumulusPalletXcmError = Null;3271 type CumulusPalletXcmError = Null;
29553272
2956 /** @name CumulusPalletDmpQueueConfigData (343) */3273 /** @name CumulusPalletDmpQueueConfigData (365) */
2957 interface CumulusPalletDmpQueueConfigData extends Struct {3274 interface CumulusPalletDmpQueueConfigData extends Struct {
2958 readonly maxIndividual: u64;3275 readonly maxIndividual: u64;
2959 }3276 }
29603277
2961 /** @name CumulusPalletDmpQueuePageIndexData (344) */3278 /** @name CumulusPalletDmpQueuePageIndexData (366) */
2962 interface CumulusPalletDmpQueuePageIndexData extends Struct {3279 interface CumulusPalletDmpQueuePageIndexData extends Struct {
2963 readonly beginUsed: u32;3280 readonly beginUsed: u32;
2964 readonly endUsed: u32;3281 readonly endUsed: u32;
2965 readonly overweightCount: u64;3282 readonly overweightCount: u64;
2966 }3283 }
29673284
2968 /** @name CumulusPalletDmpQueueError (347) */3285 /** @name CumulusPalletDmpQueueError (369) */
2969 interface CumulusPalletDmpQueueError extends Enum {3286 interface CumulusPalletDmpQueueError extends Enum {
2970 readonly isUnknown: boolean;3287 readonly isUnknown: boolean;
2971 readonly isOverLimit: boolean;3288 readonly isOverLimit: boolean;
2972 readonly type: 'Unknown' | 'OverLimit';3289 readonly type: 'Unknown' | 'OverLimit';
2973 }3290 }
29743291
2975 /** @name PalletUniqueError (351) */3292 /** @name PalletUniqueError (373) */
2976 interface PalletUniqueError extends Enum {3293 interface PalletUniqueError extends Enum {
2977 readonly isCollectionDecimalPointLimitExceeded: boolean;3294 readonly isCollectionDecimalPointLimitExceeded: boolean;
2978 readonly isConfirmUnsetSponsorFail: boolean;3295 readonly isConfirmUnsetSponsorFail: boolean;
2981 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';3298 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';
2982 }3299 }
29833300
2984 /** @name PalletUniqueSchedulerScheduledV3 (354) */3301 /** @name PalletUniqueSchedulerScheduledV3 (376) */
2985 interface PalletUniqueSchedulerScheduledV3 extends Struct {3302 interface PalletUniqueSchedulerScheduledV3 extends Struct {
2986 readonly maybeId: Option<U8aFixed>;3303 readonly maybeId: Option<U8aFixed>;
2987 readonly priority: u8;3304 readonly priority: u8;
2990 readonly origin: OpalRuntimeOriginCaller;3307 readonly origin: OpalRuntimeOriginCaller;
2991 }3308 }
29923309
2993 /** @name OpalRuntimeOriginCaller (355) */3310 /** @name OpalRuntimeOriginCaller (377) */
2994 interface OpalRuntimeOriginCaller extends Enum {3311 interface OpalRuntimeOriginCaller extends Enum {
2995 readonly isSystem: boolean;3312 readonly isSystem: boolean;
2996 readonly asSystem: FrameSupportDispatchRawOrigin;3313 readonly asSystem: FrameSupportDispatchRawOrigin;
3004 readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';3321 readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';
3005 }3322 }
30063323
3007 /** @name FrameSupportDispatchRawOrigin (356) */3324 /** @name FrameSupportDispatchRawOrigin (378) */
3008 interface FrameSupportDispatchRawOrigin extends Enum {3325 interface FrameSupportDispatchRawOrigin extends Enum {
3009 readonly isRoot: boolean;3326 readonly isRoot: boolean;
3010 readonly isSigned: boolean;3327 readonly isSigned: boolean;
3013 readonly type: 'Root' | 'Signed' | 'None';3330 readonly type: 'Root' | 'Signed' | 'None';
3014 }3331 }
30153332
3016 /** @name PalletXcmOrigin (357) */3333 /** @name PalletXcmOrigin (379) */
3017 interface PalletXcmOrigin extends Enum {3334 interface PalletXcmOrigin extends Enum {
3018 readonly isXcm: boolean;3335 readonly isXcm: boolean;
3019 readonly asXcm: XcmV1MultiLocation;3336 readonly asXcm: XcmV1MultiLocation;
3022 readonly type: 'Xcm' | 'Response';3339 readonly type: 'Xcm' | 'Response';
3023 }3340 }
30243341
3025 /** @name CumulusPalletXcmOrigin (358) */3342 /** @name CumulusPalletXcmOrigin (380) */
3026 interface CumulusPalletXcmOrigin extends Enum {3343 interface CumulusPalletXcmOrigin extends Enum {
3027 readonly isRelay: boolean;3344 readonly isRelay: boolean;
3028 readonly isSiblingParachain: boolean;3345 readonly isSiblingParachain: boolean;
3029 readonly asSiblingParachain: u32;3346 readonly asSiblingParachain: u32;
3030 readonly type: 'Relay' | 'SiblingParachain';3347 readonly type: 'Relay' | 'SiblingParachain';
3031 }3348 }
30323349
3033 /** @name PalletEthereumRawOrigin (359) */3350 /** @name PalletEthereumRawOrigin (381) */
3034 interface PalletEthereumRawOrigin extends Enum {3351 interface PalletEthereumRawOrigin extends Enum {
3035 readonly isEthereumTransaction: boolean;3352 readonly isEthereumTransaction: boolean;
3036 readonly asEthereumTransaction: H160;3353 readonly asEthereumTransaction: H160;
3037 readonly type: 'EthereumTransaction';3354 readonly type: 'EthereumTransaction';
3038 }3355 }
30393356
3040 /** @name SpCoreVoid (360) */3357 /** @name SpCoreVoid (382) */
3041 type SpCoreVoid = Null;3358 type SpCoreVoid = Null;
30423359
3043 /** @name PalletUniqueSchedulerError (361) */3360 /** @name PalletUniqueSchedulerError (383) */
3044 interface PalletUniqueSchedulerError extends Enum {3361 interface PalletUniqueSchedulerError extends Enum {
3045 readonly isFailedToSchedule: boolean;3362 readonly isFailedToSchedule: boolean;
3046 readonly isNotFound: boolean;3363 readonly isNotFound: boolean;
3049 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';3366 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';
3050 }3367 }
30513368
3052 /** @name UpDataStructsCollection (362) */3369 /** @name UpDataStructsCollection (384) */
3053 interface UpDataStructsCollection extends Struct {3370 interface UpDataStructsCollection extends Struct {
3054 readonly owner: AccountId32;3371 readonly owner: AccountId32;
3055 readonly mode: UpDataStructsCollectionMode;3372 readonly mode: UpDataStructsCollectionMode;
3059 readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;3376 readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;
3060 readonly limits: UpDataStructsCollectionLimits;3377 readonly limits: UpDataStructsCollectionLimits;
3061 readonly permissions: UpDataStructsCollectionPermissions;3378 readonly permissions: UpDataStructsCollectionPermissions;
3062 readonly externalCollection: bool;3379 readonly flags: U8aFixed;
3063 }3380 }
30643381
3065 /** @name UpDataStructsSponsorshipStateAccountId32 (363) */3382 /** @name UpDataStructsSponsorshipStateAccountId32 (385) */
3066 interface UpDataStructsSponsorshipStateAccountId32 extends Enum {3383 interface UpDataStructsSponsorshipStateAccountId32 extends Enum {
3067 readonly isDisabled: boolean;3384 readonly isDisabled: boolean;
3068 readonly isUnconfirmed: boolean;3385 readonly isUnconfirmed: boolean;
3072 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';3389 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
3073 }3390 }
30743391
3075 /** @name UpDataStructsProperties (364) */3392 /** @name UpDataStructsProperties (387) */
3076 interface UpDataStructsProperties extends Struct {3393 interface UpDataStructsProperties extends Struct {
3077 readonly map: UpDataStructsPropertiesMapBoundedVec;3394 readonly map: UpDataStructsPropertiesMapBoundedVec;
3078 readonly consumedSpace: u32;3395 readonly consumedSpace: u32;
3079 readonly spaceLimit: u32;3396 readonly spaceLimit: u32;
3080 }3397 }
30813398
3082 /** @name UpDataStructsPropertiesMapBoundedVec (365) */3399 /** @name UpDataStructsPropertiesMapBoundedVec (388) */
3083 interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}3400 interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
30843401
3085 /** @name UpDataStructsPropertiesMapPropertyPermission (370) */3402 /** @name UpDataStructsPropertiesMapPropertyPermission (393) */
3086 interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}3403 interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
30873404
3088 /** @name UpDataStructsCollectionStats (377) */3405 /** @name UpDataStructsCollectionStats (400) */
3089 interface UpDataStructsCollectionStats extends Struct {3406 interface UpDataStructsCollectionStats extends Struct {
3090 readonly created: u32;3407 readonly created: u32;
3091 readonly destroyed: u32;3408 readonly destroyed: u32;
3092 readonly alive: u32;3409 readonly alive: u32;
3093 }3410 }
30943411
3095 /** @name UpDataStructsTokenChild (378) */3412 /** @name UpDataStructsTokenChild (401) */
3096 interface UpDataStructsTokenChild extends Struct {3413 interface UpDataStructsTokenChild extends Struct {
3097 readonly token: u32;3414 readonly token: u32;
3098 readonly collection: u32;3415 readonly collection: u32;
3099 }3416 }
31003417
3101 /** @name PhantomTypeUpDataStructs (379) */3418 /** @name PhantomTypeUpDataStructs (402) */
3102 interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}3419 interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
31033420
3104 /** @name UpDataStructsTokenData (381) */3421 /** @name UpDataStructsTokenData (404) */
3105 interface UpDataStructsTokenData extends Struct {3422 interface UpDataStructsTokenData extends Struct {
3106 readonly properties: Vec<UpDataStructsProperty>;3423 readonly properties: Vec<UpDataStructsProperty>;
3107 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;3424 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
3108 readonly pieces: u128;3425 readonly pieces: u128;
3109 }3426 }
31103427
3111 /** @name UpDataStructsRpcCollection (383) */3428 /** @name UpDataStructsRpcCollection (406) */
3112 interface UpDataStructsRpcCollection extends Struct {3429 interface UpDataStructsRpcCollection extends Struct {
3113 readonly owner: AccountId32;3430 readonly owner: AccountId32;
3114 readonly mode: UpDataStructsCollectionMode;3431 readonly mode: UpDataStructsCollectionMode;
3121 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;3438 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
3122 readonly properties: Vec<UpDataStructsProperty>;3439 readonly properties: Vec<UpDataStructsProperty>;
3123 readonly readOnly: bool;3440 readonly readOnly: bool;
3441 readonly foreign: bool;
3124 }3442 }
31253443
3126 /** @name RmrkTraitsCollectionCollectionInfo (384) */3444 /** @name RmrkTraitsCollectionCollectionInfo (407) */
3127 interface RmrkTraitsCollectionCollectionInfo extends Struct {3445 interface RmrkTraitsCollectionCollectionInfo extends Struct {
3128 readonly issuer: AccountId32;3446 readonly issuer: AccountId32;
3129 readonly metadata: Bytes;3447 readonly metadata: Bytes;
3132 readonly nftsCount: u32;3450 readonly nftsCount: u32;
3133 }3451 }
31343452
3135 /** @name RmrkTraitsNftNftInfo (385) */3453 /** @name RmrkTraitsNftNftInfo (408) */
3136 interface RmrkTraitsNftNftInfo extends Struct {3454 interface RmrkTraitsNftNftInfo extends Struct {
3137 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;3455 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;
3138 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;3456 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;
3141 readonly pending: bool;3459 readonly pending: bool;
3142 }3460 }
31433461
3144 /** @name RmrkTraitsNftRoyaltyInfo (387) */3462 /** @name RmrkTraitsNftRoyaltyInfo (410) */
3145 interface RmrkTraitsNftRoyaltyInfo extends Struct {3463 interface RmrkTraitsNftRoyaltyInfo extends Struct {
3146 readonly recipient: AccountId32;3464 readonly recipient: AccountId32;
3147 readonly amount: Permill;3465 readonly amount: Permill;
3148 }3466 }
31493467
3150 /** @name RmrkTraitsResourceResourceInfo (388) */3468 /** @name RmrkTraitsResourceResourceInfo (411) */
3151 interface RmrkTraitsResourceResourceInfo extends Struct {3469 interface RmrkTraitsResourceResourceInfo extends Struct {
3152 readonly id: u32;3470 readonly id: u32;
3153 readonly resource: RmrkTraitsResourceResourceTypes;3471 readonly resource: RmrkTraitsResourceResourceTypes;
3154 readonly pending: bool;3472 readonly pending: bool;
3155 readonly pendingRemoval: bool;3473 readonly pendingRemoval: bool;
3156 }3474 }
31573475
3158 /** @name RmrkTraitsPropertyPropertyInfo (389) */3476 /** @name RmrkTraitsPropertyPropertyInfo (412) */
3159 interface RmrkTraitsPropertyPropertyInfo extends Struct {3477 interface RmrkTraitsPropertyPropertyInfo extends Struct {
3160 readonly key: Bytes;3478 readonly key: Bytes;
3161 readonly value: Bytes;3479 readonly value: Bytes;
3162 }3480 }
31633481
3164 /** @name RmrkTraitsBaseBaseInfo (390) */3482 /** @name RmrkTraitsBaseBaseInfo (413) */
3165 interface RmrkTraitsBaseBaseInfo extends Struct {3483 interface RmrkTraitsBaseBaseInfo extends Struct {
3166 readonly issuer: AccountId32;3484 readonly issuer: AccountId32;
3167 readonly baseType: Bytes;3485 readonly baseType: Bytes;
3168 readonly symbol: Bytes;3486 readonly symbol: Bytes;
3169 }3487 }
31703488
3171 /** @name RmrkTraitsNftNftChild (391) */3489 /** @name RmrkTraitsNftNftChild (414) */
3172 interface RmrkTraitsNftNftChild extends Struct {3490 interface RmrkTraitsNftNftChild extends Struct {
3173 readonly collectionId: u32;3491 readonly collectionId: u32;
3174 readonly nftId: u32;3492 readonly nftId: u32;
3175 }3493 }
31763494
3177 /** @name PalletCommonError (393) */3495 /** @name PalletCommonError (416) */
3178 interface PalletCommonError extends Enum {3496 interface PalletCommonError extends Enum {
3179 readonly isCollectionNotFound: boolean;3497 readonly isCollectionNotFound: boolean;
3180 readonly isMustBeTokenOwner: boolean;3498 readonly isMustBeTokenOwner: boolean;
3213 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';3531 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';
3214 }3532 }
32153533
3216 /** @name PalletFungibleError (395) */3534 /** @name PalletFungibleError (418) */
3217 interface PalletFungibleError extends Enum {3535 interface PalletFungibleError extends Enum {
3218 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;3536 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
3219 readonly isFungibleItemsHaveNoId: boolean;3537 readonly isFungibleItemsHaveNoId: boolean;
3223 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3541 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
3224 }3542 }
32253543
3226 /** @name PalletRefungibleItemData (396) */3544 /** @name PalletRefungibleItemData (419) */
3227 interface PalletRefungibleItemData extends Struct {3545 interface PalletRefungibleItemData extends Struct {
3228 readonly constData: Bytes;3546 readonly constData: Bytes;
3229 }3547 }
32303548
3231 /** @name PalletRefungibleError (401) */3549 /** @name PalletRefungibleError (424) */
3232 interface PalletRefungibleError extends Enum {3550 interface PalletRefungibleError extends Enum {
3233 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;3551 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
3234 readonly isWrongRefungiblePieces: boolean;3552 readonly isWrongRefungiblePieces: boolean;
3238 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3556 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
3239 }3557 }
32403558
3241 /** @name PalletNonfungibleItemData (402) */3559 /** @name PalletNonfungibleItemData (425) */
3242 interface PalletNonfungibleItemData extends Struct {3560 interface PalletNonfungibleItemData extends Struct {
3243 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;3561 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
3244 }3562 }
32453563
3246 /** @name UpDataStructsPropertyScope (404) */3564 /** @name UpDataStructsPropertyScope (427) */
3247 interface UpDataStructsPropertyScope extends Enum {3565 interface UpDataStructsPropertyScope extends Enum {
3248 readonly isNone: boolean;3566 readonly isNone: boolean;
3249 readonly isRmrk: boolean;3567 readonly isRmrk: boolean;
3250 readonly type: 'None' | 'Rmrk';3568 readonly type: 'None' | 'Rmrk';
3251 }3569 }
32523570
3253 /** @name PalletNonfungibleError (406) */3571 /** @name PalletNonfungibleError (429) */
3254 interface PalletNonfungibleError extends Enum {3572 interface PalletNonfungibleError extends Enum {
3255 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;3573 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
3256 readonly isNonfungibleItemsHaveNoAmount: boolean;3574 readonly isNonfungibleItemsHaveNoAmount: boolean;
3257 readonly isCantBurnNftWithChildren: boolean;3575 readonly isCantBurnNftWithChildren: boolean;
3258 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';3576 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';
3259 }3577 }
32603578
3261 /** @name PalletStructureError (407) */3579 /** @name PalletStructureError (430) */
3262 interface PalletStructureError extends Enum {3580 interface PalletStructureError extends Enum {
3263 readonly isOuroborosDetected: boolean;3581 readonly isOuroborosDetected: boolean;
3264 readonly isDepthLimit: boolean;3582 readonly isDepthLimit: boolean;
3267 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';3585 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';
3268 }3586 }
32693587
3270 /** @name PalletRmrkCoreError (408) */3588 /** @name PalletRmrkCoreError (431) */
3271 interface PalletRmrkCoreError extends Enum {3589 interface PalletRmrkCoreError extends Enum {
3272 readonly isCorruptedCollectionType: boolean;3590 readonly isCorruptedCollectionType: boolean;
3273 readonly isRmrkPropertyKeyIsTooLong: boolean;3591 readonly isRmrkPropertyKeyIsTooLong: boolean;
3291 readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';3609 readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';
3292 }3610 }
32933611
3294 /** @name PalletRmrkEquipError (410) */3612 /** @name PalletRmrkEquipError (433) */
3295 interface PalletRmrkEquipError extends Enum {3613 interface PalletRmrkEquipError extends Enum {
3296 readonly isPermissionError: boolean;3614 readonly isPermissionError: boolean;
3297 readonly isNoAvailableBaseId: boolean;3615 readonly isNoAvailableBaseId: boolean;
3303 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';3621 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';
3304 }3622 }
33053623
3306 /** @name PalletAppPromotionError (416) */3624 /** @name PalletAppPromotionError (439) */
3307 interface PalletAppPromotionError extends Enum {3625 interface PalletAppPromotionError extends Enum {
3308 readonly isAdminNotSet: boolean;3626 readonly isAdminNotSet: boolean;
3309 readonly isNoPermission: boolean;3627 readonly isNoPermission: boolean;
3314 readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';3632 readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';
3315 }3633 }
3634
3635 /** @name PalletForeignAssetsModuleError (440) */
3636 interface PalletForeignAssetsModuleError extends Enum {
3637 readonly isBadLocation: boolean;
3638 readonly isMultiLocationExisted: boolean;
3639 readonly isAssetIdNotExists: boolean;
3640 readonly isAssetIdExisted: boolean;
3641 readonly type: 'BadLocation' | 'MultiLocationExisted' | 'AssetIdNotExists' | 'AssetIdExisted';
3642 }
33163643
3317 /** @name PalletEvmError (419) */3644 /** @name PalletEvmError (443) */
3318 interface PalletEvmError extends Enum {3645 interface PalletEvmError extends Enum {
3319 readonly isBalanceLow: boolean;3646 readonly isBalanceLow: boolean;
3320 readonly isFeeOverflow: boolean;3647 readonly isFeeOverflow: boolean;
3325 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';3652 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
3326 }3653 }
33273654
3328 /** @name FpRpcTransactionStatus (422) */3655 /** @name FpRpcTransactionStatus (446) */
3329 interface FpRpcTransactionStatus extends Struct {3656 interface FpRpcTransactionStatus extends Struct {
3330 readonly transactionHash: H256;3657 readonly transactionHash: H256;
3331 readonly transactionIndex: u32;3658 readonly transactionIndex: u32;
3336 readonly logsBloom: EthbloomBloom;3663 readonly logsBloom: EthbloomBloom;
3337 }3664 }
33383665
3339 /** @name EthbloomBloom (424) */3666 /** @name EthbloomBloom (448) */
3340 interface EthbloomBloom extends U8aFixed {}3667 interface EthbloomBloom extends U8aFixed {}
33413668
3342 /** @name EthereumReceiptReceiptV3 (426) */3669 /** @name EthereumReceiptReceiptV3 (450) */
3343 interface EthereumReceiptReceiptV3 extends Enum {3670 interface EthereumReceiptReceiptV3 extends Enum {
3344 readonly isLegacy: boolean;3671 readonly isLegacy: boolean;
3345 readonly asLegacy: EthereumReceiptEip658ReceiptData;3672 readonly asLegacy: EthereumReceiptEip658ReceiptData;
3350 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';3677 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
3351 }3678 }
33523679
3353 /** @name EthereumReceiptEip658ReceiptData (427) */3680 /** @name EthereumReceiptEip658ReceiptData (451) */
3354 interface EthereumReceiptEip658ReceiptData extends Struct {3681 interface EthereumReceiptEip658ReceiptData extends Struct {
3355 readonly statusCode: u8;3682 readonly statusCode: u8;
3356 readonly usedGas: U256;3683 readonly usedGas: U256;
3357 readonly logsBloom: EthbloomBloom;3684 readonly logsBloom: EthbloomBloom;
3358 readonly logs: Vec<EthereumLog>;3685 readonly logs: Vec<EthereumLog>;
3359 }3686 }
33603687
3361 /** @name EthereumBlock (428) */3688 /** @name EthereumBlock (452) */
3362 interface EthereumBlock extends Struct {3689 interface EthereumBlock extends Struct {
3363 readonly header: EthereumHeader;3690 readonly header: EthereumHeader;
3364 readonly transactions: Vec<EthereumTransactionTransactionV2>;3691 readonly transactions: Vec<EthereumTransactionTransactionV2>;
3365 readonly ommers: Vec<EthereumHeader>;3692 readonly ommers: Vec<EthereumHeader>;
3366 }3693 }
33673694
3368 /** @name EthereumHeader (429) */3695 /** @name EthereumHeader (453) */
3369 interface EthereumHeader extends Struct {3696 interface EthereumHeader extends Struct {
3370 readonly parentHash: H256;3697 readonly parentHash: H256;
3371 readonly ommersHash: H256;3698 readonly ommersHash: H256;
3384 readonly nonce: EthereumTypesHashH64;3711 readonly nonce: EthereumTypesHashH64;
3385 }3712 }
33863713
3387 /** @name EthereumTypesHashH64 (430) */3714 /** @name EthereumTypesHashH64 (454) */
3388 interface EthereumTypesHashH64 extends U8aFixed {}3715 interface EthereumTypesHashH64 extends U8aFixed {}
33893716
3390 /** @name PalletEthereumError (435) */3717 /** @name PalletEthereumError (459) */
3391 interface PalletEthereumError extends Enum {3718 interface PalletEthereumError extends Enum {
3392 readonly isInvalidSignature: boolean;3719 readonly isInvalidSignature: boolean;
3393 readonly isPreLogExists: boolean;3720 readonly isPreLogExists: boolean;
3394 readonly type: 'InvalidSignature' | 'PreLogExists';3721 readonly type: 'InvalidSignature' | 'PreLogExists';
3395 }3722 }
33963723
3397 /** @name PalletEvmCoderSubstrateError (436) */3724 /** @name PalletEvmCoderSubstrateError (460) */
3398 interface PalletEvmCoderSubstrateError extends Enum {3725 interface PalletEvmCoderSubstrateError extends Enum {
3399 readonly isOutOfGas: boolean;3726 readonly isOutOfGas: boolean;
3400 readonly isOutOfFund: boolean;3727 readonly isOutOfFund: boolean;
3401 readonly type: 'OutOfGas' | 'OutOfFund';3728 readonly type: 'OutOfGas' | 'OutOfFund';
3402 }3729 }
34033730
3404 /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (437) */3731 /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (461) */
3405 interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {3732 interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {
3406 readonly isDisabled: boolean;3733 readonly isDisabled: boolean;
3407 readonly isUnconfirmed: boolean;3734 readonly isUnconfirmed: boolean;
3411 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';3738 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
3412 }3739 }
34133740
3414 /** @name PalletEvmContractHelpersSponsoringModeT (438) */3741 /** @name PalletEvmContractHelpersSponsoringModeT (462) */
3415 interface PalletEvmContractHelpersSponsoringModeT extends Enum {3742 interface PalletEvmContractHelpersSponsoringModeT extends Enum {
3416 readonly isDisabled: boolean;3743 readonly isDisabled: boolean;
3417 readonly isAllowlisted: boolean;3744 readonly isAllowlisted: boolean;
3418 readonly isGenerous: boolean;3745 readonly isGenerous: boolean;
3419 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';3746 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
3420 }3747 }
34213748
3422 /** @name PalletEvmContractHelpersError (440) */3749 /** @name PalletEvmContractHelpersError (468) */
3423 interface PalletEvmContractHelpersError extends Enum {3750 interface PalletEvmContractHelpersError extends Enum {
3424 readonly isNoPermission: boolean;3751 readonly isNoPermission: boolean;
3425 readonly isNoPendingSponsor: boolean;3752 readonly isNoPendingSponsor: boolean;
3753 readonly isTooManyMethodsHaveSponsoredLimit: boolean;
3426 readonly type: 'NoPermission' | 'NoPendingSponsor';3754 readonly type: 'NoPermission' | 'NoPendingSponsor' | 'TooManyMethodsHaveSponsoredLimit';
3427 }3755 }
34283756
3429 /** @name PalletEvmMigrationError (441) */3757 /** @name PalletEvmMigrationError (469) */
3430 interface PalletEvmMigrationError extends Enum {3758 interface PalletEvmMigrationError extends Enum {
3431 readonly isAccountNotEmpty: boolean;3759 readonly isAccountNotEmpty: boolean;
3432 readonly isAccountIsNotMigrating: boolean;3760 readonly isAccountIsNotMigrating: boolean;
3433 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';3761 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
3434 }3762 }
34353763
3436 /** @name SpRuntimeMultiSignature (443) */3764 /** @name SpRuntimeMultiSignature (471) */
3437 interface SpRuntimeMultiSignature extends Enum {3765 interface SpRuntimeMultiSignature extends Enum {
3438 readonly isEd25519: boolean;3766 readonly isEd25519: boolean;
3439 readonly asEd25519: SpCoreEd25519Signature;3767 readonly asEd25519: SpCoreEd25519Signature;
3444 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';3772 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
3445 }3773 }
34463774
3447 /** @name SpCoreEd25519Signature (444) */3775 /** @name SpCoreEd25519Signature (472) */
3448 interface SpCoreEd25519Signature extends U8aFixed {}3776 interface SpCoreEd25519Signature extends U8aFixed {}
34493777
3450 /** @name SpCoreSr25519Signature (446) */3778 /** @name SpCoreSr25519Signature (474) */
3451 interface SpCoreSr25519Signature extends U8aFixed {}3779 interface SpCoreSr25519Signature extends U8aFixed {}
34523780
3453 /** @name SpCoreEcdsaSignature (447) */3781 /** @name SpCoreEcdsaSignature (475) */
3454 interface SpCoreEcdsaSignature extends U8aFixed {}3782 interface SpCoreEcdsaSignature extends U8aFixed {}
34553783
3456 /** @name FrameSystemExtensionsCheckSpecVersion (450) */3784 /** @name FrameSystemExtensionsCheckSpecVersion (478) */
3457 type FrameSystemExtensionsCheckSpecVersion = Null;3785 type FrameSystemExtensionsCheckSpecVersion = Null;
34583786
3459 /** @name FrameSystemExtensionsCheckGenesis (451) */3787 /** @name FrameSystemExtensionsCheckGenesis (479) */
3460 type FrameSystemExtensionsCheckGenesis = Null;3788 type FrameSystemExtensionsCheckGenesis = Null;
34613789
3462 /** @name FrameSystemExtensionsCheckNonce (454) */3790 /** @name FrameSystemExtensionsCheckNonce (482) */
3463 interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}3791 interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
34643792
3465 /** @name FrameSystemExtensionsCheckWeight (455) */3793 /** @name FrameSystemExtensionsCheckWeight (483) */
3466 type FrameSystemExtensionsCheckWeight = Null;3794 type FrameSystemExtensionsCheckWeight = Null;
34673795
3468 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (456) */3796 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (484) */
3469 interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}3797 interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
34703798
3471 /** @name OpalRuntimeRuntime (457) */3799 /** @name OpalRuntimeRuntime (485) */
3472 type OpalRuntimeRuntime = Null;3800 type OpalRuntimeRuntime = Null;
34733801
3474 /** @name PalletEthereumFakeTransactionFinalizer (458) */3802 /** @name PalletEthereumFakeTransactionFinalizer (486) */
3475 type PalletEthereumFakeTransactionFinalizer = Null;3803 type PalletEthereumFakeTransactionFinalizer = Null;
34763804
3477} // declare module3805} // declare module
deletedtests/src/mintModes.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
45 'nonfungible',45 'nonfungible',
46 'charging',46 'charging',
47 'configuration',47 'configuration',
48 'tokens',
49 'xtokens',
48];50];
4951
50// Pallets that depend on consensus and governance configuration52// Pallets that depend on consensus and governance configuration
6163
62 const refungible = 'refungible';64 const refungible = 'refungible';
63 const scheduler = 'scheduler';65 const scheduler = 'scheduler';
66 const foreignAssets = 'foreignassets';
64 const rmrkPallets = ['rmrkcore', 'rmrkequip'];67 const rmrkPallets = ['rmrkcore', 'rmrkequip'];
65 const appPromotion = 'apppromotion';68 const appPromotion = 'apppromotion';
6669
67 if (chain.eq('OPAL by UNIQUE')) {70 if (chain.eq('OPAL by UNIQUE')) {
68 requiredPallets.push(refungible, scheduler, appPromotion, ...rmrkPallets);71 requiredPallets.push(
72 refungible,
73 scheduler,
74 foreignAssets,
75 appPromotion,
76 ...rmrkPallets,
77 );
69 } else if (chain.eq('QUARTZ by UNIQUE')) {78 } else if (chain.eq('QUARTZ by UNIQUE')) {
70 // Insert Quartz additional pallets here79 requiredPallets.push(refungible);
71 } else if (chain.eq('UNIQUE')) {80 } else if (chain.eq('UNIQUE')) {
72 // Insert Unique additional pallets here81 // Insert Unique additional pallets here
73 }82 }
modifiedtests/src/refungible.test.tsdiffbeforeafterboth
17import {IKeyringPair} from '@polkadot/types/types';17import {IKeyringPair} from '@polkadot/types/types';
18import {itSub, Pallets, requirePalletsOrSkip, usingPlaygrounds, expect} from './util/playgrounds';18import {itSub, Pallets, requirePalletsOrSkip, usingPlaygrounds, expect} from './util/playgrounds';
1919
20let alice: IKeyringPair;
21let bob: IKeyringPair;
22const MAX_REFUNGIBLE_PIECES = 1_000_000_000_000_000_000_000n;20const MAX_REFUNGIBLE_PIECES = 1_000_000_000_000_000_000_000n;
2321
24describe('integration test: Refungible functionality:', async () => {22describe('integration test: Refungible functionality:', async () => {
23 let alice: IKeyringPair;
24 let bob: IKeyringPair;
25
25 before(async function() {26 before(async function() {
26 await usingPlaygrounds(async (helper, privateKey) => {27 await usingPlaygrounds(async (helper, privateKey) => {
27 requirePalletsOrSkip(this, helper, [Pallets.ReFungible]);28 requirePalletsOrSkip(this, helper, [Pallets.ReFungible]);
2829
29 alice = privateKey('//Alice');30 const donor = privateKey('//Alice');
30 bob = privateKey('//Bob');31 [alice, bob] = await helper.arrange.createAccounts([100n, 10n], donor);
31 });32 });
32 });33 });
33 34
209 const collection = await helper.rft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});210 const collection = await helper.rft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
210 const token = await collection.mintToken(alice, 100n);211 const token = await collection.mintToken(alice, 100n);
211 await token.repartition(alice, 200n);212 await token.repartition(alice, 200n);
212 const chainEvents = helper.chainLog.slice(-1)[0].events.map((x: any) => x.event);213 const chainEvents = helper.chainLog.slice(-1)[0].events;
213 expect(chainEvents).to.include.deep.members([{214 expect(chainEvents).to.deep.include({
214 method: 'ItemCreated',215 section: 'common',
215 section: 'common',216 method: 'ItemCreated',
216 index: '0x4202',217 index: [66, 2],
217 data: [ 218 data: [
218 helper.api!.createType('u32', collection.collectionId).toHuman(), 219 collection.collectionId,
219 helper.api!.createType('u32', token.tokenId).toHuman(),220 token.tokenId,
220 {Substrate: alice.address}, 221 {substrate: alice.address},
221 '100',222 100n,
222 ],223 ],
224 phase: {applyExtrinsic: 2},
223 }]);225 });
224 });226 });
225227
226 itSub('Repartition with decreased amount', async ({helper}) => {228 itSub('Repartition with decreased amount', async ({helper}) => {
227 const collection = await helper.rft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});229 const collection = await helper.rft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
228 const token = await collection.mintToken(alice, 100n);230 const token = await collection.mintToken(alice, 100n);
229 await token.repartition(alice, 50n);231 await token.repartition(alice, 50n);
230 const chainEvents = helper.chainLog.slice(-1)[0].events.map((x: any) => x.event);232 const chainEvents = helper.chainLog.slice(-1)[0].events;
231 expect(chainEvents).to.include.deep.members([{233 expect(chainEvents).to.deep.include({
232 method: 'ItemDestroyed',234 method: 'ItemDestroyed',
233 section: 'common',235 section: 'common',
234 index: '0x4203',236 index: [66, 3],
235 data: [ 237 data: [
236 helper.api!.createType('u32', collection.collectionId).toHuman(), 238 collection.collectionId,
237 helper.api!.createType('u32', token.tokenId).toHuman(),239 token.tokenId,
238 {Substrate: alice.address}, 240 {substrate: alice.address},
239 '50',241 50n,
240 ],242 ],
243 phase: {applyExtrinsic: 2},
241 }]);244 });
242 });245 });
243 246
244 itSub('Create new collection with properties', async ({helper}) => {247 itSub('Create new collection with properties', async ({helper}) => {
deletedtests/src/removeFromAllowList.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/setContractSponsoringRateLimit.test.tsdiffbeforeafterboth
25 setContractSponsoringRateLimitExpectSuccess,25 setContractSponsoringRateLimitExpectSuccess,
26} from './util/helpers';26} from './util/helpers';
2727
28// todo:playgrounds postponed skipped test28// todo:playgrounds skipped~postponed test
29describe.skip('Integration Test setContractSponsoringRateLimit', () => {29describe.skip('Integration Test setContractSponsoringRateLimit', () => {
30 it('ensure sponsored contract can\'t be called twice without pause for free', async () => {30 it('ensure sponsored contract can\'t be called twice without pause for free', async () => {
31 await usingApi(async (api, privateKeyWrapper) => {31 await usingApi(async (api, privateKeyWrapper) => {
deletedtests/src/setMintPermission.test.tsdiffbeforeafterboth

no changes

addedtests/src/setPermissions.test.tsdiffbeforeafterboth

no changes

deletedtests/src/setPublicAccessMode.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/substrate/substrate-api.tsdiffbeforeafterboth
110 if (status.isBroadcast) {110 if (status.isBroadcast) {
111 return TransactionStatus.NotReady;111 return TransactionStatus.NotReady;
112 }112 }
113 if (status.isRetracted) {
114 return TransactionStatus.NotReady;
115 }
113 if (status.isInBlock || status.isFinalized) {116 if (status.isInBlock || status.isFinalized) {
114 if(events.filter(e => e.event.data.method === 'ExtrinsicFailed').length > 0) {117 if(events.filter(e => e.event.data.method === 'ExtrinsicFailed').length > 0) {
115 return TransactionStatus.Fail;118 return TransactionStatus.Fail;
148 });151 });
149}152}
150153
154/**
155 * @deprecated use `executeTransaction` instead
156 */
151export function157export function
152submitTransactionAsync(sender: IKeyringPair, transaction: SubmittableExtrinsic<ApiTypes>): Promise<EventRecord[]> {158submitTransactionAsync(sender: IKeyringPair, transaction: SubmittableExtrinsic<ApiTypes>): Promise<EventRecord[]> {
153 /* eslint no-async-promise-executor: "off" */159 /* eslint no-async-promise-executor: "off" */
154 return new Promise(async (resolve, reject) => {160 return new Promise(async (resolve, reject) => {
155 try {161 try {
156 await transaction.signAndSend(sender, ({events = [], status}) => {162 await transaction.signAndSend(sender, ({events = [], status, dispatchError}) => {
157 const transactionStatus = getTransactionStatus(events, status);163 const transactionStatus = getTransactionStatus(events, status);
158164
159 if (transactionStatus === TransactionStatus.Success) {165 if (transactionStatus === TransactionStatus.Success) {
160 resolve(events);166 resolve(events);
161 } else if (transactionStatus === TransactionStatus.Fail) {167 } else if (transactionStatus === TransactionStatus.Fail) {
168 let moduleError = null;
169
170 if (dispatchError) {
171 if (dispatchError.isModule) {
172 const modErr = dispatchError.asModule;
173 const errorMeta = dispatchError.registry.findMetaError(modErr);
174
175 moduleError = JSON.stringify(errorMeta, null, 4);
176 }
177 }
178
162 console.log(`Something went wrong with transaction. Status: ${status}`);179 console.log(`Something went wrong with transaction. Status: ${status}\nModule error: ${moduleError}`);
163 reject(events);180 reject(events);
164 }181 }
165 });182 });
addedtests/src/tx-version-presence.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/util/helpers.tsdiffbeforeafterboth
1616
17import '../interfaces/augment-api-rpc';17import '../interfaces/augment-api-rpc';
18import '../interfaces/augment-api-query';18import '../interfaces/augment-api-query';
19import {ApiPromise} from '@polkadot/api';19import {ApiPromise, Keyring} from '@polkadot/api';
20import type {AccountId, EventRecord, Event, BlockNumber} from '@polkadot/types/interfaces';20import type {AccountId, EventRecord, Event, BlockNumber} from '@polkadot/types/interfaces';
21import type {GenericEventData} from '@polkadot/types';21import type {GenericEventData} from '@polkadot/types';
22import {AnyTuple, IEvent, IKeyringPair} from '@polkadot/types/types';22import {AnyTuple, IEvent, IKeyringPair} from '@polkadot/types/types';
105 return api.registry.createType('AccountId', '0x' + number.toString(16).padStart(64, '0')).toJSON();105 return api.registry.createType('AccountId', '0x' + number.toString(16).padStart(64, '0')).toJSON();
106}106}
107
108export function bigIntToDecimals(number: bigint, decimals = 18): string {
109 const numberStr = number.toString();
110 const dotPos = numberStr.length - decimals;
111
112 if (dotPos <= 0) {
113 return '0.' + '0'.repeat(Math.abs(dotPos)) + numberStr;
114 } else {
115 const intPart = numberStr.substring(0, dotPos);
116 const fractPart = numberStr.substring(dotPos);
117 return intPart + '.' + fractPart;
118 }
119}
107120
108export function normalizeAccountId(input: string | AccountId | CrossAccountId | IKeyringPair): CrossAccountId {121export function normalizeAccountId(input: string | AccountId | CrossAccountId | IKeyringPair): CrossAccountId {
109 if (typeof input === 'string') {122 if (typeof input === 'string') {
1102 return balance;1115 return balance;
1103}1116}
1117
1118export async function paraSiblingSovereignAccount(paraid: number): Promise<string> {
1119 return usingApi(async api => {
1120 // We are getting a *sibling* parachain sovereign account,
1121 // so we need a sibling prefix: encoded(b"sibl") == 0x7369626c
1122 const siblingPrefix = '0x7369626c';
1123
1124 const encodedParaId = api.createType('u32', paraid).toHex(true).substring(2);
1125 const suffix = '000000000000000000000000000000000000000000000000';
1126
1127 return siblingPrefix + encodedParaId + suffix;
1128 });
1129}
11041130
1105export async function transferBalanceTo(api: ApiPromise, source: IKeyringPair, target: string, amount = 1000n * UNIQUE) {1131export async function transferBalanceTo(api: ApiPromise, source: IKeyringPair, target: string, amount = 1000n * UNIQUE) {
1106 const tx = api.tx.balances.transfer(target, amount);1132 const tx = api.tx.balances.transfer(target, amount);
1158 {Value: operationTx as any},1184 {Value: operationTx as any},
1159 );1185 );
11601186
1161 //const events = 1187 //const events =
1162 await expect(submitTransactionExpectFailAsync(sender, scheduleTx)).to.be.rejected;1188 await expect(submitTransactionExpectFailAsync(sender, scheduleTx)).to.be.rejected;
1163 //expect(getGenericResult(events).success).to.be.false;1189 //expect(getGenericResult(events).success).to.be.false;
1164 });1190 });
1738 return (await api.rpc.unique.collectionById(collectionId)).unwrap();1764 return (await api.rpc.unique.collectionById(collectionId)).unwrap();
1739}1765}
1766
1767export const describe_xcm = (
1768 process.env.RUN_XCM_TESTS
1769 ? describe
1770 : describe.skip
1771);
17401772
1741export async function waitNewBlocks(blocksCount = 1): Promise<void> {1773export async function waitNewBlocks(blocksCount = 1): Promise<void> {
1742 await usingApi(async (api) => {1774 await usingApi(async (api) => {
1754 });1786 });
1755}1787}
1788
1789export async function waitEvent(
1790 api: ApiPromise,
1791 maxBlocksToWait: number,
1792 eventSection: string,
1793 eventMethod: string,
1794): Promise<EventRecord | null> {
1795
1796 const promise = new Promise<EventRecord | null>(async (resolve) => {
1797 const unsubscribe = await api.rpc.chain.subscribeNewHeads(async header => {
1798 const blockNumber = header.number.toHuman();
1799 const blockHash = header.hash;
1800 const eventIdStr = `${eventSection}.${eventMethod}`;
1801 const waitLimitStr = `wait blocks remaining: ${maxBlocksToWait}`;
1802
1803 console.log(`[Block #${blockNumber}] Waiting for event \`${eventIdStr}\` (${waitLimitStr})`);
1804
1805 const apiAt = await api.at(blockHash);
1806 const eventRecords = await apiAt.query.system.events();
1807
1808 const neededEvent = eventRecords.find(r => {
1809 return r.event.section == eventSection && r.event.method == eventMethod;
1810 });
1811
1812 if (neededEvent) {
1813 unsubscribe();
1814 resolve(neededEvent);
1815 } else if (maxBlocksToWait > 0) {
1816 maxBlocksToWait--;
1817 } else {
1818 console.log(`Event \`${eventIdStr}\` is NOT found`);
1819
1820 unsubscribe();
1821 resolve(null);
1822 }
1823 });
1824 });
1825 return promise;
1826}
17561827
1757export async function repartitionRFT(1828export async function repartitionRFT(
1758 api: ApiPromise,1829 api: ApiPromise,
1782itApi.only = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {only: true});1853itApi.only = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {only: true});
1783itApi.skip = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {skip: true});1854itApi.skip = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {skip: true});
17841855
1856let accountSeed = 10000;
1857export function generateKeyringPair(keyring: Keyring) {
1858 const privateKey = `0xDEADBEEF${(Date.now() + (accountSeed++)).toString(16).padStart(64 - 8, '0')}`;
1859 return keyring.addFromUri(privateKey);
1860}
17851861
1786export async function expectSubstrateEventsAtBlock(api: ApiPromise, blockNumber: AnyNumber | BlockNumber, section: string, methods: string[], dryRun = false) {1862export async function expectSubstrateEventsAtBlock(api: ApiPromise, blockNumber: AnyNumber | BlockNumber, section: string, methods: string[], dryRun = false) {
1787 const blockHash = await api.rpc.chain.getBlockHash(blockNumber);1863 const blockHash = await api.rpc.chain.getBlockHash(blockNumber);
modifiedtests/src/util/playgrounds/index.tsdiffbeforeafterboth
13chai.use(chaiAsPromised);13chai.use(chaiAsPromised);
14export const expect = chai.expect;14export const expect = chai.expect;
1515
16export const usingPlaygrounds = async (code: (helper: DevUniqueHelper, privateKey: (seed: string) => IKeyringPair) => Promise<void>) => {16export const usingPlaygrounds = async (code: (helper: DevUniqueHelper, privateKey: (seed: string) => IKeyringPair) => Promise<void>, url: string = config.substrateUrl) => {
17 const silentConsole = new SilentConsole();17 const silentConsole = new SilentConsole();
18 silentConsole.enable();18 silentConsole.enable();
1919
20 const helper = new DevUniqueHelper(new SilentLogger());20 const helper = new DevUniqueHelper(new SilentLogger());
2121
22 try {22 try {
23 await helper.connect(config.substrateUrl);23 await helper.connect(url);
24 const ss58Format = helper.chain.getChainProperties().ss58Format;24 const ss58Format = helper.chain.getChainProperties().ss58Format;
25 const privateKey = (seed: string) => helper.util.fromSeed(seed, ss58Format);25 const privateKey = (seed: string) => helper.util.fromSeed(seed, ss58Format);
26 await code(helper, privateKey);26 await code(helper, privateKey);
modifiedtests/src/util/playgrounds/types.tsdiffbeforeafterboth
33
4import {IKeyringPair} from '@polkadot/types/types';4import {IKeyringPair} from '@polkadot/types/types';
55
6export interface IChainEvent {6export interface IEvent {
7 data: any;7 section: string;
8 method: string;8 method: string;
9 section: string;9 index: [number, number] | string;
10 data: any[];
11 phase: {applyExtrinsic: number} | 'Initialization',
10}12}
1113
12export interface ITransactionResult {14export interface ITransactionResult {
13 status: 'Fail' | 'Success';15 status: 'Fail' | 'Success';
14 result: {16 result: {
15 events: {17 events: {
18 phase: any, // {ApplyExtrinsic: number} | 'Initialization',
16 event: IChainEvent19 event: IEvent;
17 }[];20 }[];
18 },21 },
19 moduleError?: string;22 moduleError?: string;
20}23}
24
25export interface ISubscribeBlockEventsData {
26 number: number;
27 hash: string;
28 timestamp: number;
29 events: IEvent[];
30}
2131
22export interface ILogger {32export interface ILogger {
23 log: (msg: any, level?: string) => void;33 log: (msg: any, level?: string) => void;
147 feeFrozen: bigint157 feeFrozen: bigint
148}158}
159
160export interface IStakingInfo {
161 block: bigint,
162 amount: bigint,
163}
149164
150export type TSubstrateAccount = string;165export type TSubstrateAccount = string;
151export type TEthereumAccount = string;166export type TEthereumAccount = string;
modifiedtests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth
60 */60 */
61 arrange: ArrangeGroup;61 arrange: ArrangeGroup;
62 wait: WaitGroup;62 wait: WaitGroup;
63 admin: AdminGroup;
6364
64 constructor(logger: { log: (msg: any, level: any) => void, level: any }) {65 constructor(logger: { log: (msg: any, level: any) => void, level: any }) {
65 super(logger);66 super(logger);
66 this.arrange = new ArrangeGroup(this);67 this.arrange = new ArrangeGroup(this);
67 this.wait = new WaitGroup(this);68 this.wait = new WaitGroup(this);
69 this.admin = new AdminGroup(this);
68 }70 }
6971
70 async connect(wsEndpoint: string, _listeners?: any): Promise<void> {72 async connect(wsEndpoint: string, _listeners?: any): Promise<void> {
120 */122 */
121 createAccounts = async (balances: bigint[], donor: IKeyringPair): Promise<IKeyringPair[]> => {123 createAccounts = async (balances: bigint[], donor: IKeyringPair): Promise<IKeyringPair[]> => {
122 let nonce = await this.helper.chain.getNonce(donor.address);124 let nonce = await this.helper.chain.getNonce(donor.address);
125 const wait = new WaitGroup(this.helper);
123 const ss58Format = this.helper.chain.getChainProperties().ss58Format;126 const ss58Format = this.helper.chain.getChainProperties().ss58Format;
124 const tokenNominal = this.helper.balance.getOneTokenNominal();127 const tokenNominal = this.helper.balance.getOneTokenNominal();
125 const transactions = [];128 const transactions = [];
129 accounts.push(recipient);132 accounts.push(recipient);
130 if (balance !== 0n) {133 if (balance !== 0n) {
131 const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recipient.address}, balance * tokenNominal]);134 const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recipient.address}, balance * tokenNominal]);
132 transactions.push(this.helper.signTransaction(donor, tx, 'account generation', {nonce}));135 transactions.push(this.helper.signTransaction(donor, tx, {nonce}, 'account generation'));
133 nonce++;136 nonce++;
134 }137 }
135 }138 }
154 for (let index = 0; index < 5; index++) {157 for (let index = 0; index < 5; index++) {
155 accountsCreated = await checkBalances();158 accountsCreated = await checkBalances();
156 if(accountsCreated) break;159 if(accountsCreated) break;
157 160 await wait.newBlocks(1);
158 }161 }
159162
160 if (!accountsCreated) throw Error('Accounts generation failed');163 if (!accountsCreated) throw Error('Accounts generation failed');
180 accounts.push(recepient);183 accounts.push(recepient);
181 if (withBalance !== 0n) {184 if (withBalance !== 0n) {
182 const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recepient.address}, withBalance * tokenNominal]);185 const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recepient.address}, withBalance * tokenNominal]);
183 transactions.push(this.helper.signTransaction(donor, tx, 'account generation', {nonce}));186 transactions.push(this.helper.signTransaction(donor, tx, {nonce}, 'account generation'));
184 nonce++;187 nonce++;
185 }188 }
186 }189 }
282 }285 }
283}286}
287
288class AdminGroup {
289 helper: UniqueHelper;
290
291 constructor(helper: UniqueHelper) {
292 this.helper = helper;
293 }
294
295 async payoutStakers(signer: IKeyringPair, stakersToPayout: number) {
296 const payoutResult = await this.helper.executeExtrinsic(signer, 'api.tx.appPromotion.payoutStakers', [stakersToPayout], true);
297 return payoutResult.result.events.filter(e => e.event.method === 'StakingRecalculation').map(e => {
298 return {
299 staker: e.event.data[0].toString(),
300 stake: e.event.data[1].toBigInt(),
301 payout: e.event.data[2].toBigInt(),
302 };
303 });
304 }
305}
284306
modifiedtests/src/util/playgrounds/unique.tsdiffbeforeafterboth
6/* eslint-disable no-prototype-builtins */6/* eslint-disable no-prototype-builtins */
77
8import {ApiPromise, WsProvider, Keyring} from '@polkadot/api';8import {ApiPromise, WsProvider, Keyring} from '@polkadot/api';
9import {ApiInterfaceEvents} from '@polkadot/api/types';9import {ApiInterfaceEvents, SignerOptions} from '@polkadot/api/types';
10import {encodeAddress, decodeAddress, keccakAsHex, evmToAddress, addressToEvm} from '@polkadot/util-crypto';10import {encodeAddress, decodeAddress, keccakAsHex, evmToAddress, addressToEvm} from '@polkadot/util-crypto';
11import {IKeyringPair} from '@polkadot/types/types';11import {IKeyringPair} from '@polkadot/types/types';
12import {IApiListeners, IBlock, IChainEvent, IChainProperties, ICollectionCreationOptions, ICollectionLimits, ICollectionPermissions, ICrossAccountId, ICrossAccountIdLower, ILogger, INestingPermissions, IProperty, ISubstrateBalance, IToken, ITokenPropertyPermission, ITransactionResult, IUniqueHelperLog, TApiAllowedListeners, TEthereumAccount, TSigner, TSubstrateAccount, TUniqueNetworks} from './types';12import {IApiListeners, IBlock, IEvent, IChainProperties, ICollectionCreationOptions, ICollectionLimits, ICollectionPermissions, ICrossAccountId, ICrossAccountIdLower, ILogger, INestingPermissions, IProperty, IStakingInfo, ISubstrateBalance, IToken, ITokenPropertyPermission, ITransactionResult, IUniqueHelperLog, TApiAllowedListeners, TEthereumAccount, TSigner, TSubstrateAccount, TUniqueNetworks} from './types';
1313
14export const crossAccountIdFromLower = (lowerAddress: ICrossAccountIdLower): ICrossAccountId => {14export const crossAccountIdFromLower = (lowerAddress: ICrossAccountIdLower): ICrossAccountId => {
15 const address = {} as ICrossAccountId;15 const address = {} as ICrossAccountId;
149 return {success, tokens};149 return {success, tokens};
150 }150 }
151151
152 static findCollectionInEvents(events: {event: IChainEvent}[], collectionId: number, expectedSection: string, expectedMethod: string) {152 static findCollectionInEvents(events: {event: IEvent}[], collectionId: number, expectedSection: string, expectedMethod: string) {
153 let eventId = null;153 let eventId = null;
154 events.forEach(({event: {data, method, section}}) => {154 events.forEach(({event: {data, method, section}}) => {
155 if ((section === expectedSection) && (method === expectedMethod)) {155 if ((section === expectedSection) && (method === expectedMethod)) {
163 return eventId === collectionId;163 return eventId === collectionId;
164 }164 }
165165
166 static isTokenTransferSuccess(events: {event: IChainEvent}[], collectionId: number, tokenId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=1n) {166 static isTokenTransferSuccess(events: {event: IEvent}[], collectionId: number, tokenId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=1n) {
167 const normalizeAddress = (address: string | ICrossAccountId) => {167 const normalizeAddress = (address: string | ICrossAccountId) => {
168 if(typeof address === 'string') return address;168 if(typeof address === 'string') return address;
169 const obj = {} as any;169 const obj = {} as any;
195 }195 }
196}196}
197197
198class UniqueEventHelper {
199 private static extractIndex(index: any): [number, number] | string {
200 if(index.toRawType() === '[u8;2]') return [index[0], index[1]];
201 return index.toJSON();
202 }
198203
204 private static extractSub(data: any, subTypes: any): {[key: string]: any} {
205 let obj: any = {};
206 let index = 0;
207
208 if (data.entries) {
209 for(const [key, value] of data.entries()) {
210 obj[key] = this.extractData(value, subTypes[index]);
211 index++;
212 }
213 } else obj = data.toJSON();
214
215 return obj;
216 }
217
218 private static extractData(data: any, type: any): any {
219 if (['u16', 'u32'].indexOf(type.type) > -1) return data.toNumber();
220 if (['u64', 'u128', 'u256'].indexOf(type.type) > -1) return data.toBigInt();
221 if(type.hasOwnProperty('sub')) return this.extractSub(data, type.sub);
222 return data.toHuman();
223 }
224
225 public static extractEvents(records: ITransactionResult): IEvent[] {
226 const parsedEvents: IEvent[] = [];
227
228 records.result.events.forEach((record) => {
229 const {event, phase} = record;
230 const types = (event as any).typeDef;
231
232 const eventData: IEvent = {
233 section: event.section.toString(),
234 method: event.method.toString(),
235 index: this.extractIndex(event.index),
236 data: [],
237 phase: phase.toJSON(),
238 };
239
240 event.data.forEach((val: any, index: number) => {
241 eventData.data.push(this.extractData(val, types[index]));
242 });
243
244 parsedEvents.push(eventData);
245 });
246
247 return parsedEvents;
248 }
249}
250
199class ChainHelperBase {251class ChainHelperBase {
200 transactionStatus = UniqueUtil.transactionStatus;252 transactionStatus = UniqueUtil.transactionStatus;
201 chainLogType = UniqueUtil.chainLogType;253 chainLogType = UniqueUtil.chainLogType;
202 util: typeof UniqueUtil;254 util: typeof UniqueUtil;
255 eventHelper: typeof UniqueEventHelper;
203 logger: ILogger;256 logger: ILogger;
204 api: ApiPromise | null;257 api: ApiPromise | null;
205 forcedNetwork: TUniqueNetworks | null;258 forcedNetwork: TUniqueNetworks | null;
208261
209 constructor(logger?: ILogger) {262 constructor(logger?: ILogger) {
210 this.util = UniqueUtil;263 this.util = UniqueUtil;
264 this.eventHelper = UniqueEventHelper;
211 if (typeof logger == 'undefined') logger = this.util.getDefaultLogger();265 if (typeof logger == 'undefined') logger = this.util.getDefaultLogger();
212 this.logger = logger;266 this.logger = logger;
213 this.api = null;267 this.api = null;
290 return {api, network};344 return {api, network};
291 }345 }
292346
293 getTransactionStatus(data: {events: {event: IChainEvent}[], status: any}) {347 getTransactionStatus(data: {events: {event: IEvent}[], status: any}) {
294 const {events, status} = data;348 const {events, status} = data;
295 if (status.isReady) {349 if (status.isReady) {
296 return this.transactionStatus.NOT_READY;350 return this.transactionStatus.NOT_READY;
299 return this.transactionStatus.NOT_READY;353 return this.transactionStatus.NOT_READY;
300 }354 }
301 if (status.isInBlock || status.isFinalized) {355 if (status.isInBlock || status.isFinalized) {
302 const errors = events.filter(e => e.event.data.method === 'ExtrinsicFailed');356 const errors = events.filter(e => e.event.method === 'ExtrinsicFailed');
303 if (errors.length > 0) {357 if (errors.length > 0) {
304 return this.transactionStatus.FAIL;358 return this.transactionStatus.FAIL;
305 }359 }
306 if (events.filter(e => e.event.data.method === 'ExtrinsicSuccess').length > 0) {360 if (events.filter(e => e.event.method === 'ExtrinsicSuccess').length > 0) {
307 return this.transactionStatus.SUCCESS;361 return this.transactionStatus.SUCCESS;
308 }362 }
309 }363 }
310364
311 return this.transactionStatus.FAIL;365 return this.transactionStatus.FAIL;
312 }366 }
313367
314 signTransaction(sender: TSigner, transaction: any, label = 'transaction', options: any = null) {368 signTransaction(sender: TSigner, transaction: any, options: Partial<SignerOptions> | null = null, label = 'transaction') {
315 const sign = (callback: any) => {369 const sign = (callback: any) => {
316 if(options !== null) return transaction.signAndSend(sender, options, callback);370 if(options !== null) return transaction.signAndSend(sender, options, callback);
317 return transaction.signAndSend(sender, callback);371 return transaction.signAndSend(sender, callback);
332 if (result.hasOwnProperty('dispatchError')) {386 if (result.hasOwnProperty('dispatchError')) {
333 const dispatchError = result['dispatchError'];387 const dispatchError = result['dispatchError'];
334388
335 if (dispatchError && dispatchError.isModule) {389 if (dispatchError) {
390 if (dispatchError.isModule) {
336 const modErr = dispatchError.asModule;391 const modErr = dispatchError.asModule;
337 const errorMeta = dispatchError.registry.findMetaError(modErr);392 const errorMeta = dispatchError.registry.findMetaError(modErr);
338393
339 moduleError = `${errorMeta.section}.${errorMeta.name}`;394 moduleError = `${errorMeta.section}.${errorMeta.name}`;
340 }395 } else {
341 else {396 moduleError = dispatchError.toHuman();
397 }
398 } else {
342 this.logger.log(result, this.logger.level.ERROR);399 this.logger.log(result, this.logger.level.ERROR);
343 }400 }
344 }401 }
364 return call(...params);421 return call(...params);
365 }422 }
366423
367 async executeExtrinsic(sender: TSigner, extrinsic: string, params: any[], expectSuccess=false/*, failureMessage='expected success'*/) {424 async executeExtrinsic(sender: TSigner, extrinsic: string, params: any[], expectSuccess=true, options: Partial<SignerOptions>|null = null/*, failureMessage='expected success'*/) {
368 if(this.api === null) throw Error('API not initialized');425 if(this.api === null) throw Error('API not initialized');
369 if(!extrinsic.startsWith('api.tx.')) throw Error(`${extrinsic} is not transaction`);426 if(!extrinsic.startsWith('api.tx.')) throw Error(`${extrinsic} is not transaction`);
370427
371 const startTime = (new Date()).getTime();428 const startTime = (new Date()).getTime();
372 let result: ITransactionResult;429 let result: ITransactionResult;
373 let events = [];430 let events: IEvent[] = [];
374 try {431 try {
375 result = await this.signTransaction(sender, this.constructApiCall(extrinsic, params), extrinsic) as ITransactionResult;432 result = await this.signTransaction(sender, this.constructApiCall(extrinsic, params), options, extrinsic) as ITransactionResult;
376 events = result.result.events.map((x: any) => x.toHuman());433 events = this.eventHelper.extractEvents(result);
377 }434 }
378 catch(e) {435 catch(e) {
379 if(!(e as object).hasOwnProperty('status')) throw e;436 if(!(e as object).hasOwnProperty('status')) throw e;
2029 return 1;2086 return 1;
2030 }2087 }
20312088
2089 /**
2090 * Get total staked amount for address
2091 * @param address substrate or ethereum address
2092 * @returns total staked amount
2093 */
2032 async getTotalStaked(address?: ICrossAccountId): Promise<bigint> {2094 async getTotalStaked(address?: ICrossAccountId): Promise<bigint> {
2033 if (address) return (await this.helper.callRpc('api.rpc.appPromotion.totalStaked', [address])).toBigInt();2095 if (address) return (await this.helper.callRpc('api.rpc.appPromotion.totalStaked', [address])).toBigInt();
2034 return (await this.helper.callRpc('api.rpc.appPromotion.totalStaked')).toBigInt();2096 return (await this.helper.callRpc('api.rpc.appPromotion.totalStaked')).toBigInt();
2035 }2097 }
20362098
2037 async getTotalStakedPerBlock(address: ICrossAccountId): Promise<bigint[][]> {2099 /**
2100 * Get total staked per block
2101 * @param address substrate or ethereum address
2102 * @returns array of stakes. `block` – the number of the block in which the stake was made. `amount` - the number of tokens staked in the block
2103 */
2104 async getTotalStakedPerBlock(address: ICrossAccountId): Promise<IStakingInfo[]> {
2038 return (await this.helper.callRpc('api.rpc.appPromotion.totalStakedPerBlock', [address])).map(([block, amount]: any[]) => [block.toBigInt(), amount.toBigInt()]);2105 const rawTotalStakerdPerBlock = await this.helper.callRpc('api.rpc.appPromotion.totalStakedPerBlock', [address]);
2106 return rawTotalStakerdPerBlock.map(([block, amount]: any[]) => {
2107 return {
2108 block: block.toBigInt(),
2109 amount: amount.toBigInt(),
2110 };
2111 });
2039 }2112 }
20402113
2114 /**
2115 * Get total pending unstake amount for address
2116 * @param address substrate or ethereum address
2117 * @returns total pending unstake amount
2118 */
2041 async getPendingUnstake(address: ICrossAccountId): Promise<bigint> {2119 async getPendingUnstake(address: ICrossAccountId): Promise<bigint> {
2042 return (await this.helper.callRpc('api.rpc.appPromotion.pendingUnstake', [address])).toBigInt();2120 return (await this.helper.callRpc('api.rpc.appPromotion.pendingUnstake', [address])).toBigInt();
2043 }2121 }
20442122
2045 async getPendingUnstakePerBlock(address: ICrossAccountId): Promise<bigint[][]> {2123 /**
2124 * Get pending unstake amount per block for address
2125 * @param address substrate or ethereum address
2126 * @returns array of pending stakes. `block` – the number of the block in which the unstake was made. `amount` - the number of tokens unstaked in the block
2127 */
2128 async getPendingUnstakePerBlock(address: ICrossAccountId): Promise<IStakingInfo[]> {
2046 return (await this.helper.callRpc('api.rpc.appPromotion.pendingUnstakePerBlock', [address])).map(([block, amount]: any[]) => [block.toBigInt(), amount.toBigInt()]);2129 const rawUnstakedPerBlock = await this.helper.callRpc('api.rpc.appPromotion.pendingUnstakePerBlock', [address]);
2130 const result = rawUnstakedPerBlock.map(([block, amount]: any[]) => {
2131 return {
2132 block: block.toBigInt(),
2133 amount: amount.toBigInt(),
2134 };
2135 });
2136 return result;
2047 }2137 }
2048}2138}
20492139
addedtests/src/xcm/xcmOpal.test.tsdiffbeforeafterboth

no changes

addedtests/src/xcm/xcmQuartz.test.tsdiffbeforeafterboth

no changes

addedtests/src/xcm/xcmUnique.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/xcmTransfer.test.tsdiffbeforeafterboth
78 let balanceOnKaruraBefore: bigint;78 let balanceOnKaruraBefore: bigint;
7979
80 await usingApi(async (api) => {80 await usingApi(async (api) => {
81 const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAsset: 0})).toJSON() as any;81 const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAssetId: 0})).toJSON() as any;
82 balanceOnKaruraBefore = free;82 balanceOnKaruraBefore = free;
83 }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});83 }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
8484
136 await usingApi(async (api) => {136 await usingApi(async (api) => {
137 // todo do something about instant sealing, where there might not be any new blocks137 // todo do something about instant sealing, where there might not be any new blocks
138 await waitNewBlocks(api, 3);138 await waitNewBlocks(api, 3);
139 const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAsset: 0})).toJSON() as any;139 const {free} = (await api.query.tokens.accounts(alice.addressRaw, {ForeignAssetId: 0})).toJSON() as any;
140 expect(free > balanceOnKaruraBefore).to.be.true;140 expect(free > balanceOnKaruraBefore).to.be.true;
141 }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});141 }, {provider: new WsProvider('ws://127.0.0.1:' + KARURA_PORT)});
142 });142 });
165 };165 };
166166
167 const id = {167 const id = {
168 ForeignAsset: 0,168 ForeignAssetId: 0,
169 };169 };
170170
171 const amount = TRANSFER_AMOUNT;171 const amount = TRANSFER_AMOUNT;