From 78a106f05944165f87dd8c6a06cfa09a1cb362d5 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:52:02 +0300 Subject: [PATCH] Utilize Metadata V15 (#1041) * Update frame-metadata to the latest branch Signed-off-by: Alexandru Vasile * metadata: Add outer enum types Signed-off-by: Alexandru Vasile * metadata: Extend the extrinsic with address,call,sign,extra types Signed-off-by: Alexandru Vasile * Codegen test Event, Error and Call for outer enums Signed-off-by: Alexandru Vasile * Revert "Codegen test Event, Error and Call for outer enums" This reverts commit db542dca0369eedd257a7ec031d5b5549bc46a88. * Update frame-metadata from the latest release Signed-off-by: Alexandru Vasile * Update scale-info Signed-off-by: Alexandru Vasile * codegen/error: Support v15 message Signed-off-by: Alexandru Vasile * metadata: Convert v14 to v15 Signed-off-by: Alexandru Vasile * metadata/retain: Adjust to extrinsic type for V15 Signed-off-by: Alexandru Vasile * metadata/validation: Adjust hashing for extrinsic types V15 Signed-off-by: Alexandru Vasile * scripts: Fetch V15 and output codegen for full_client only Signed-off-by: Alexandru Vasile * subxt/blocks: Use extrinsic types directly Signed-off-by: Alexandru Vasile * testing: Fetch V15 for build script Signed-off-by: Alexandru Vasile * artifacts: Generate from latest polkadot version Signed-off-by: Alexandru Vasile * codegen: Fetch legacy with old API for v14 only Signed-off-by: Alexandru Vasile * rpc: Fetch metadata versions Signed-off-by: Alexandru Vasile * client: Fetch latest unstable then V15 then V14 Signed-off-by: Alexandru Vasile * testing: Adjust testing API to latest interface Signed-off-by: Alexandru Vasile * Adjust clippy Signed-off-by: Alexandru Vasile * metadata: Generate the `RuntimeError` type for V14 Signed-off-by: Alexandru Vasile * Remove testing files Signed-off-by: Alexandru Vasile * testing/staking: Remove controller account from bond Signed-off-by: Alexandru Vasile * metadata/validation: Use specific variants for hashing RuntimeCall Signed-off-by: Alexandru Vasile * XXX: Custom Substrate binary: must revert with next release Signed-off-by: Alexandru Vasile * XXX: To revert: CI use hardcoded substrate Signed-off-by: Alexandru Vasile * codegen: Use v15 outer enum types Signed-off-by: Alexandru Vasile * metadata: Retain outer enum types Signed-off-by: Alexandru Vasile * codegen: Use outer enum types instead of generating them Signed-off-by: Alexandru Vasile * Update artifacts Signed-off-by: Alexandru Vasile * Revert "XXX: Custom Substrate binary: must revert with next release" This reverts commit e9705298661919f5769720b35030759fb8a7b01d. Revert "XXX: To revert: CI use hardcoded substrate" This reverts commit b18a5a0985a56ee4ad99bc9a1c0f9cd733cf4271. * testing: Include env for dummy wat contracts Signed-off-by: Alexandru Vasile * Adjsut clippy Signed-off-by: Alexandru Vasile * ci: Use new link for fetching latest substrate binary Signed-off-by: Alexandru Vasile * tests: Include dummy RuntimeEvent into test metadata Signed-off-by: Alexandru Vasile * ci: Bump light-client timeout tests to 25min Signed-off-by: Alexandru Vasile * metadata/validation: Use specific pallets as provided Signed-off-by: Alexandru Vasile * testing: Rename metadata constant Signed-off-by: Alexandru Vasile * metadata: Use call_ty instead of signature_ty Signed-off-by: Alexandru Vasile * metadata: Rename retaining variant function Signed-off-by: Alexandru Vasile * metadata: Use Option<&[&str]> Signed-off-by: Alexandru Vasile * online_client: Fetch V15 metadata explicitely Signed-off-by: Alexandru Vasile * metadata/validation: Include the hash of the outer enum types Signed-off-by: Alexandru Vasile * metadata: Fix sign typo Signed-off-by: Alexandru Vasile * artifacts: Update the artifacts Signed-off-by: Alexandru Vasile * subxt: Remove RootError RootEvent and RootExtrinsic traits Signed-off-by: Alexandru Vasile * Update polkadot.rs Signed-off-by: Alexandru Vasile * metadata/tests: Ensure outer enum variants are retained Signed-off-by: Alexandru Vasile * scripts: Include multiple pallets for our decoding purposes Signed-off-by: Alexandru Vasile * subxt: Apply clippy Signed-off-by: Alexandru Vasile * artifacts: Update small metadata Signed-off-by: Alexandru Vasile * error: Keep raw bytes for the ModuleError representation Signed-off-by: Alexandru Vasile * error: Modify docs to not include links Signed-off-by: Alexandru Vasile * subxt/tests: Propagate `RuntimeCall` to outer enums Signed-off-by: Alexandru Vasile * subxt: Provide proper byte slice for decoding Signed-off-by: Alexandru Vasile * Update artifacts Signed-off-by: Alexandru Vasile * cli/tests: Adjust expected pallets message Signed-off-by: Alexandru Vasile * metadata: Test conversion from v14 to v15 Signed-off-by: Alexandru Vasile * metadata: Fix typo Signed-off-by: Alexandru Vasile * Update subxt/src/blocks/extrinsic_types.rs Co-authored-by: James Wilson * metadata: Simplify type path for RuntimeError Signed-off-by: Alexandru Vasile * metadata/validation: Use visited ids per outer enum Signed-off-by: Alexandru Vasile * error: Remove RawModuleError Signed-off-by: Alexandru Vasile * Fix new clippy error from updated rust version Signed-off-by: Alexandru Vasile --------- Signed-off-by: Alexandru Vasile Co-authored-by: James Wilson --- .github/workflows/nightly.yml | 2 +- .github/workflows/rust.yml | 2 +- Cargo.lock | 34 +- Cargo.toml | 4 +- artifacts/polkadot_metadata_full.scale | Bin 406078 -> 298287 bytes artifacts/polkadot_metadata_small.scale | Bin 141603 -> 75404 bytes artifacts/polkadot_metadata_tiny.scale | Bin 33913 -> 35310 bytes cli/src/commands/explore/mod.rs | 2 +- codegen/src/api/mod.rs | 155 +- codegen/src/error.rs | 2 +- codegen/src/utils/fetch_metadata.rs | 7 +- metadata/Cargo.toml | 1 + metadata/src/from_into/v14.rs | 406 +- metadata/src/from_into/v15.rs | 25 +- metadata/src/lib.rs | 64 +- metadata/src/utils/retain.rs | 92 +- metadata/src/utils/validation.rs | 115 +- scripts/artifacts.sh | 8 +- subxt/src/blocks/extrinsic_types.rs | 129 +- subxt/src/blocks/mod.rs | 4 +- subxt/src/client/online_client.rs | 22 +- subxt/src/error/dispatch_error.rs | 92 +- subxt/src/error/mod.rs | 14 +- subxt/src/events/events_type.rs | 85 +- subxt/src/events/mod.rs | 7 +- subxt/src/rpc/rpc.rs | 9 + .../src/full_client/codegen/polkadot.rs | 10898 ++++------------ .../src/full_client/frame/balances.rs | 2 - .../src/full_client/frame/contracts.rs | 4 +- .../src/full_client/frame/staking.rs | 108 +- .../src/full_client/metadata/validation.rs | 20 +- testing/test-runtime/build.rs | 2 +- testing/ui-tests/src/utils/mod.rs | 24 +- 33 files changed, 3283 insertions(+), 9056 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 32519139c3..0fda1afd3a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -9,7 +9,7 @@ on: env: CARGO_TERM_COLOR: always # Use latest substrate for nightly runs: - SUBSTRATE_URL: https://releases.parity.io/substrate/x86_64-debian:stretch/latest/substrate/substrate + SUBSTRATE_URL: https://releases.parity.io/substrate/x86_64-debian:bullseye/latest/substrate/substrate jobs: tests: diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 395343ecb7..699cbe6da6 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -19,7 +19,7 @@ concurrency: env: CARGO_TERM_COLOR: always # TODO: Currently pointing at latest substrate; is there a suitable binary we can pin to here? - SUBSTRATE_URL: https://releases.parity.io/substrate/x86_64-debian:stretch/latest/substrate/substrate + SUBSTRATE_URL: https://releases.parity.io/substrate/x86_64-debian:bullseye/latest/substrate/substrate jobs: build: diff --git a/Cargo.lock b/Cargo.lock index ec732527c3..a2a8909e2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1373,6 +1373,17 @@ name = "frame-metadata" version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" dependencies = [ "cfg-if", "parity-scale-codec", @@ -1953,7 +1964,7 @@ name = "integration-tests" version = "0.29.0" dependencies = [ "assert_matches", - "frame-metadata", + "frame-metadata 16.0.0", "futures", "hex", "parity-scale-codec", @@ -3200,9 +3211,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad560913365790f17cbf12479491169f01b9d46d29cfc7422bf8c64bdc61b731" +checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" dependencies = [ "bitvec", "cfg-if", @@ -3214,9 +3225,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19df9bd9ace6cc2fe19387c96ce677e823e07d017ceed253e7bb3d1d1bd9c73b" +checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3233,7 +3244,7 @@ dependencies = [ "base58", "blake2", "either", - "frame-metadata", + "frame-metadata 15.1.0", "parity-scale-codec", "scale-bits", "scale-decode", @@ -4157,7 +4168,7 @@ dependencies = [ "blake2", "derivative", "either", - "frame-metadata", + "frame-metadata 16.0.0", "futures", "futures-util", "getrandom 0.2.10", @@ -4195,7 +4206,7 @@ version = "0.29.0" dependencies = [ "clap 4.3.11", "color-eyre", - "frame-metadata", + "frame-metadata 16.0.0", "hex", "jsonrpsee", "parity-scale-codec", @@ -4215,7 +4226,7 @@ name = "subxt-codegen" version = "0.29.0" dependencies = [ "bitvec", - "frame-metadata", + "frame-metadata 16.0.0", "heck", "hex", "jsonrpsee", @@ -4244,9 +4255,10 @@ dependencies = [ name = "subxt-metadata" version = "0.29.0" dependencies = [ + "assert_matches", "bitvec", "criterion", - "frame-metadata", + "frame-metadata 16.0.0", "parity-scale-codec", "scale-info", "sp-core-hashing", @@ -4696,7 +4708,7 @@ checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" name = "ui-tests" version = "0.29.0" dependencies = [ - "frame-metadata", + "frame-metadata 16.0.0", "parity-scale-codec", "scale-info", "subxt", diff --git a/Cargo.toml b/Cargo.toml index 8f7e8580c5..371bc816a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ console_error_panic_hook = "0.1.7" darling = "0.20.0" derivative = "2.2.0" either = "1.8.1" -frame-metadata = { version = "15.1.0", features = ["v14", "v15-unstable", "std"] } +frame-metadata = { version = "16.0.0", default-features = false, features = ["current", "std"] } futures = { version = "0.3.27", default-features = false, features = ["std"] } getrandom = { version = "0.2", default-features = false } hex = "0.4.3" @@ -58,7 +58,7 @@ proc-macro-error = "1.0.4" proc-macro2 = "1.0.63" quote = "1.0.29" regex = "1.9.1" -scale-info = "2.8.0" +scale-info = "2.9.0" scale-value = "0.10.0" scale-bits = "0.3" scale-decode = "0.7.0" diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index b6be3b8f751dafdb19afcbdd19532225e001f1c2..e49aa00fe610286ef682ce883f56a82448228dc3 100644 GIT binary patch delta 50625 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 literal 406078 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

HN*$K7VtA6oNgn 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 RCd!NW7sF1{6LmKB{{a~vX+8h| literal 141603 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 z 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

2g*K$g}jzfsQ zTQk>BP5965(+9^#Yt$HJb&%d(6MXBldwPo5`mOe0V?af{jqj$3m^`7JQKw)C84oS4 zUeWuNLIDI~1gG>v2~o$@60wE5aTsMiAXU3v-OQ0ogkyg+LQ0z0q|+a_y#+YFqW8*P zxiT6P17em)xJpSC04h`Ho>@5Y{266n1NWxEU zN9NH|19E(6X}&YIJXbpy9KYl3yr^;Z_74;{NV%&wC?6)&3W9L7PC{&LFP!mIPNLA+8q#$IV)?PA6-&u%x2x3W=E{VfJ6zFm(_W!kJJ%a~2BkX=>qIR7a% zN_dZgc3dT0h6n$}k@DBh)ctG3@+kI%c?{GFuI$xSsMO^lhq^v?siSh;bmY9DpGI~! zSuoDEXC_fJ;iaOQ%;X57*71Dw%Z*;uIlYyJ^xHGXtZM)1ctBa-8&mC zYy9M^v@7k6U{$kA2oK@~@}Ny>_DXF-h4!2@nHa#q-H0y}95cg9S_xBQ+&4x#)66|1 z-c!wi#OzP#57tibHfJSn(5Ns{k<(WoxDD$_k9iuELb?&Ha*diSkEn9;T*A~{XPG;+ zov+&UC~s4g53BlG=Lk$aYGxuo^S<#eu!~h>98|Q^!7pLa0ieW~2*%}ZdF;r?!v)&P zJUZ_xZLn%sNQsK|)SQ=G@vaCw{`9ChRU?8ej4X44TXzLi>E9Qe5cqhD#M zZ=2qvB1WNcI%Cy0<{!6Ygt7orJ87wf#t#>#c#@IFauayJ}yuS@;eD ze+eW%S+o+|Ik-oG4}~IPLvi+!=mjQKL5d%}5fyshC%Oz|sFJeBeT1}^C$aJIcp5-} zarV$XY7K4^>%Jw*g`yw%bJ^;cA!(yY|I_zXv4q%+ZnjgQ%RQm!13ga^R|FX{h|!Vg zO5h}Rt38y&0VcqGrZNJlldK1Nm}@oe4LWPZ;%uK+=x>xzaGR`F`+C>9gnDdi>XkFJ zo0{*~z$~0S$gN9EX~SKHn*??#IIeN!Y}K1mFM#=5@D1P+&}Hv@3J(+LQ0= z890UFHii5toB1N!M&jKE{RZ1W%V!RLLPFS^Tj%=Wap^zazB&)CJiQXT#x(6Qqm(hs zqU2Ba_bRqcJe%;kP&OSu98w>!Dc9ClnXZHr7G))f=FO8hzy%3a$33{}T!UQ0sc+5z zFwMwhjq8Z1*PGQ2o${mb5TG7z2gP16F-MZF#nqiV9uGG=w=>YfM|{kMKxN26 z9n33iPWpWYyHvBE3qQDc5=3O7rg1(rotj-)SZ15ZZe+f*_4sebdZt{W2%@bK2Vrb0 z4JN0X&i!!sIeDguG`J}GFpda2+7_4I!p*4*db}^;Cgy4#FVKy9%UxlcY3j_nG2LQ7 z{Oal*@9Qa^NJLcD^&Mn4TZI%+-NqtyEd*9JjVO z%j@YX=rTQNeS4W7eI5rj{Q#3kJlYP2`ed ztbd@hy0H4;o-#D|V?C?#h()VLSZN*A$M3q;G_2NAgq<3*lfsHuC1SgXe&1l91n3So zbBkF(u_s3BdoHx=h9909C`B)8L8J`N>AW(0|L`8~mJ%)m zqEYU4$H6nbwMVMQft|kCC8ul> z#YnkhIFM_-eFPJYYg#_Ah;MP9mW@u_Gof9h_=4Sv#*QDepRnv)Sr>_l7y7jV4640B zqhde78>l^Q@qfSX%n~)iyt5R7g9`1v}<>VhU_dpoel>)k| zw^zRHZ~H+FXLG7nWxoM|vB{RXRvHwFjqkraTOTan*O$)7rxHf$=3Y&$gw*-+B6RT8 z(5HYglNOv6D)p_V$&{)&&PC^V=-&7wzq!=N7$P9Mts;7QoNj|^P&W)_PSrCj6b?cqEPL7d#<$!^O@%S0Ev2+fGe*eUGL1<-)}4u!*kYsh1soyp23MS>mc=T{rc z7s7i#xe`{nR@R4OaPxJ(F7G?mHv|Tv?pddWuRPP&OJlk0-BU@O1n&E6kZ8qy2|B^z zdTgvU2{(>Q@M5`(%v~C%Pjo@0qbJjkM=PQsr>AKgLVcD|bSkxg3HpxB5(EJ{*THUN zRazrzN8KTN*(7ccd#1Q+(SS0j{|Rh?1Os<(kf8^H@36Tx&0I3gBGN6Qj+E`tpKoou ztyRe&5J9IwFCIujG9^$it)26rpki|}SP-6@z92}gx*P=tS!FJ)OSh_!qwd_I=^>1E z%0}8Ry3^<`iTtBi4O8G4QUZwuFGFp9T+Ce2ZMRgMrJX}!BtqmEdCt9D!L9)V?JtO!gz_rC$pa>*{%-@_Cz+!h-o|g?tRl0Ts8NR=!JCOLm z_9E(@o{0QxKt`|~pX8`U@lahj?q06Iosk(=i1={Zg0y?P>Po%Any+Se_N7-uLw`JC z>bKo?qOKZ2`cwlHy+~j(>da1UI1)&Q^ z{*>h>_gB~O)1y5Lef@LgE;Yb>n~EASg5eVFf>ZUZ(VFpQs$ODw%2kqn74P@6H%P&+I<5(wzPpNkzbwd#t~MZ4 z3~#X=)^zcCN@)KjXA2~i21SE)zH4q_%(78bY6GSZWR~Qs-OB~zMLSB{I3cI0? z{XlCD!P4U-5@k2to2j#yCFhw%qR(!~JywdzoObLu7ddRs^0rxnpd%93p~7aY%nqu6 z|0GG1nXs8OJi2x8vzxJKSu{3w;DZbv{;BJ*s`{zxhw6<+!{yF!)E&k`OEKI& zrV}i7m0tL&0GJjb0KNaZ#`iAOzqx0lRKNBEss0C2{r6L<|H%3eg!=!t3iZ!!5{+G^ zcgD4?NUtN)svt!F|4N`A4WgyAFkD!(I`O9U_wpAaCME7j@Rh> zqLU`Ja@Nnq@LX#KpEMoAC{O&F-f09wxODuKOUD^x>rq-PD!8vXxlBqP<^Pn`kLc=t zYj?H9V*4D46oLm%OeeNqr=B0bNjt_OJ3x&DDd(Opjb`6!u5H|n+i2=S>Io?x;<05Y z=o~;b9=k1P;Ozn5Od+s!R?cDda(lS3;F942Cprew#_HuAXf~uBlB+l)H%Qk+wzcKC z-6Ql-h7!x(yy4!~^{bsIhsO?&Hzpzld4@C7?`5qXyv$EjY{Qh~EJz!!0OX^**I3iW zNLNqUV||rAs&)q5VE`kgdLM(ztubYP(?LH(8ll*}2TR9cO^Bdr(VpdZ8Xm^)h0>Da zC66@RP4Nfa_Z-@w0Z;1Ir3^aV^Y-u0xdHihPx=QMA#^zxqY;7#{}a#$eZ8U%a)# zq@UIHa$zU2om7)!Q7AYv*O^wV6uoa1)dZW_JBxw`K+X(BwnUi{TU1he*b8d)^wNoL zXGmEap`$UdY6o*!$g_oyYDS6KoxzExg?TW$*>2vvysGD>=g+z}wcVfE;()v~vnD%F zJwpXBT>-DWBb_HCZCnI&LnmD`{|aK0_D?3wY0%eOfXZT^gTdIli;+EOsN)lcsY6YV z5UT1OBP4fN!oq6FgbHR8Um2r9oA-Kn(RjSRT@d{!HtWw~S4U z^G@k+M9Y@p-C%7@ctFw^ox_o{C)6ByUtjHQ^&=Lt)DZ6z4(+Q*YGhyN8a<{k3sqNI z57sNA;&=ugEEP!u?}xBlj=UrsV%&N#nA7vfHZ3u(7~w5X8uTeba88puG<^2gijQ@P z_Msf*p==|d8V9@*k-Jg+fgv|2(d_Y9FNNwoG#hN)MjN`1(yP|i&aXaG)Ue&JeV{Kp;=hn16i0ir^R8C-XkRwr6KLGM{|xI;FeKOe~hXvML-ey85enHvXjGq6V0-ykXl7ko`aSW*E`{ diff --git a/artifacts/polkadot_metadata_tiny.scale b/artifacts/polkadot_metadata_tiny.scale index c4a9bb285c513dd1f15365682c102c7558c440c1..10277b8f8da544d25125637eda176188a8bf7600 100644 GIT binary patch delta 6448 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 Hg2?_4E)Eqw delta 5288 zcma(#Yj9KNmEZYvZOgV~%R~;cv5gEelE5aCEjxY&IkvzKHh$v7fMYK5HCE8edIWnD zoOlOzVOwUJp3n`OFbR{e+f2)D7{k=GVJB>H8j_NPHgwB2w4oC^WeVNWjkjf6CVTFc zgptMW^pEa$kIwr$&-+{CxA*gOpA->u_q>q)!3*>CU_l!+g9$_MbGG_?+r3XhWM|P=yPD>1AQ9@@vczn66I}y=o={jo6!3ry60k z_)%IuzMl3VjNy0FHo!LI>1NoDtJ61u7bnx7fC&C5eb;y}9q^B&{J~BE>8ioE)X%_Iu{^V8 z`PZOL8mX+Vw%66y_jz{u#Yi+HF?NUW1oi$GaXQnS*&z(TexVOu#1omN#*UaGdPVe0 zV6Y678~dyb3^AE6;qNoI^VeR){;U|~Yxk#oBZcw}oXcuey#jUU%eG--_FDKR?#lj_ z;oH#W8jpIO4!FgLC*W^vD>rU>gt2N|t106L_}8_|b+T)iz%-zVR#h@)#l0G1&R4;> zHCo$XtZ@u6mXE*F8R+^x&=eWohPH4h)n+?>so6l%|3_=rn}j}@;d@{hklc;^B(6CP z*F9W_|EMjk;g(SBp=#l)9S^Q9IQoGW~u^+Q0nfif`W7MB4Pf$fJ(Hr$gJU*!}67u+WGBA03LGQ3%^hsaf%mZ5>4RiEOa1o)=@QB0lbVB&B z7z`S^qdUAFx9so;G~T_M1k{yH(zU>j%g=M{8b0#yGK}g6)33^a0{le3rucqz#Txp% z6xcB=$}dYlM9QW+@#TyzaN=(=N_Yiemin7Vk~z$N8$ zGv5rCmD58Hu7ImEy$_zy!4(BiVqTTC89?I-iHt1WWUkHL4#xiadgYSvgULe%X04T`;+z9Xg>024M(9@PH54oCaUExGdG6 zYZ1L(c*1ly=c(lBT@#Uz2;=hIn#cq58hpl5l66P+V-(nJ4dz;{1woUH=JAI;ZXl={ z4Ds@VJ=XmEJwTB~DRUQxQU~xEtFh4DbAdN3mQSK z?%E|Vr+g{onUKI570f*RMfnOWSUn5*%IS;MU7%G?qia^d3wUtN3OIysttogilVmS2 zJqX10Fe#w0JxF2`d=JM|DAOu|Z(^l%;75TKYX#$@{UJ%}6oYDEBm9vnqKUk8Or|YB zYk3*GiCyKZ!HR!XUQvBF>B>jNi0B=bLZLwDF3_O7hL6+bwfo1U5Y>=YLc@<%mmyTt zK(%7RmWp-o9{xjxk$%5d(b|?EXZ9ppPAA!NI@OkDIZ19XpZqurRG_w3$#qa%JEW;o z%$$SsKoyh9R#3lATRMm9~~m`ea{v0~WR z5|`XQLJ`xM#QSn8@5?dX+B7`#(9-NoD!v))Dp{8y7t2D2WkV&s;%3Gk{p%EQ<5r^DiQh0qg-_+l}{;&A}^I9FGf+C zF#JPDMNHWOGnBgnKA$JzqmT{%8oFCV|A^c}q?QFRV?NyKF!O5VDk##Xs!efvJX5`l z*C}v=!_*Q8NhvoJja#^)#sa1IWsRZub1=$NjhrEjm2tS2?m9kSWBQBm{v&~B`G5G4 z;p4K`t(<{|x_z|%j+`}i&ZZUj%~o@^M@FdQY;sXWn5Bw9e+#UMxUj*5^U`Zqz&mJF zemiOnW{DUI>KiW3M45FvXG034ly`DAD1&-9izcYws15VU#EZSIoR2FnB@Sn+Cmf7M zsM(V9<=bGO)+-HNpn!R?&Z-*XfcCnQrF0#X9D+vVH{M|$c}S5+c7kV4y_v$XroIL| z=&N^T4ao>T&NgSqhmMcx2VgUGEWB^)&XZftG-stU8}ni|*May@Efd%r#73+Esu}q*F7bS` z(F$kr$Bo-y589dCW`2D6Ib{$AE;$W%~2V+JYOu{>tl3VAL)Uw9q z{^1dmlIjn~6MkY{f$1ce;^j@ASP#ijq|w}j!<@Y!$I%hat_g8ZL$e;Qt}Eo%6M%f@ zT7Ff)TRM688*(0nWB8@hPJPDST$6Q0AoAm!T}~hzXkG~?@Obl5$KfQcPo-LSDrVhz zx@%Rb-22!Z4z?`IJ;URZP*oKTI>&HpYZ1QMl3jF`gCjoRBu26~W$ouUJBshN*z)M0 z2Fu-%E_@y{TGv>QBRgViXJx-9I)sFj4Q7la!MhQ*UQFfmCGB>favhXXMox#(s zR(_S^=dCN?G-kNg^J^TtT%B+VkGLLMKF9BwZZ2`!4lE1h>pI8ZxC&Oxky`RvWeO*D zpG#C??hZwa9miGcs|y#iQbTP0xydoQzJe={GS1H92kV=ixFL=L%F{l4rX%F+4`$d`-ELJXNuZT}={Ls=8NV zDe1IGzxgC|dB(eIj57uKwpQI84i38m_|vRh{JVCG^A3?OtWXu?hebP7Ma&J;f6w#hW8V)=C9Ln@Y+#7j)&C1QQ& z<4}yIO)K$KXA713+nw^HYTER-*0Lnx@l@jRm?EY4$)?93ip#qypJP!FOl>V=l6x1e zu3Mx~pilWi;R2^qf%XL@_ka`%(~jE?npy?cKM{v?g2tvmHb{Oc>( zQgb9Cg(G1fI47Z1C(j$2qNiheu}oao-Kd(TU2v+~!Glgb+5Hu263(7hY7+Z;ehGVV ztoOVs3P;eq^|KVS^;^`;SY@559p4K{fFFdu3(!CF*O7k#{acGgR;U(4@(w$`Kee6&zADh%{mh;Q zO4IM`c~t0B3FmO#)Jil?6+$OAOg*Q2)|My)lf#~oiOn%H`OzkrQNHeegO#`fng2pTPH9i$<9gj+($>C8+8XlofjUI1Ut%*)V;s}!}hN}*g Y;L82I8BfGW@Y((0_<0ild;fp^FHwf7WB>pF diff --git a/cli/src/commands/explore/mod.rs b/cli/src/commands/explore/mod.rs index dba52364d8..fda0d3352a 100644 --- a/cli/src/commands/explore/mod.rs +++ b/cli/src/commands/explore/mod.rs @@ -167,7 +167,7 @@ pub mod tests { async fn test_commands() { // show pallets: let output = simulate_run("").await; - assert_eq!(output.unwrap(), "Usage:\n subxt explore \n explore a specific pallet\n\nAvailable values are:\n Balances\n Multisig\n Staking\n System\n"); + assert_eq!(output.unwrap(), "Usage:\n subxt explore \n explore a specific pallet\n\nAvailable values are:\n Balances\n Multisig\n ParaInherent\n Staking\n System\n Timestamp\n"); // if incorrect pallet, error: let output = simulate_run("abc123").await; assert!(output.is_err()); diff --git a/codegen/src/api/mod.rs b/codegen/src/api/mod.rs index 3159115cc5..da0645b880 100644 --- a/codegen/src/api/mod.rs +++ b/codegen/src/api/mod.rs @@ -289,13 +289,12 @@ impl RuntimeGenerator { ) -> Result { let item_mod_attrs = item_mod.attrs.clone(); let item_mod_ir = ir::ItemMod::try_from(item_mod)?; - let default_derives = derives.default_derives(); let type_gen = TypeGenerator::new( self.metadata.types(), "runtime_types", type_substitutes, - derives.clone(), + derives, crate_path.clone(), should_gen_docs, ); @@ -382,118 +381,6 @@ impl RuntimeGenerator { }) .collect::, CodegenError>>()?; - let outer_event_variants = self.metadata.pallets().filter_map(|p| { - let variant_name = format_ident!("{}", p.name()); - let mod_name = format_ident!("{}", p.name().to_string().to_snake_case()); - let index = proc_macro2::Literal::u8_unsuffixed(p.index()); - - p.event_ty_id().map(|_| { - quote! { - #[codec(index = #index)] - #variant_name(#mod_name::Event), - } - }) - }); - - let outer_event = quote! { - #default_derives - pub enum Event { - #( #outer_event_variants )* - } - }; - - let outer_extrinsic_variants = self.metadata.pallets().filter_map(|p| { - let variant_name = format_ident!("{}", p.name()); - let mod_name = format_ident!("{}", p.name().to_string().to_snake_case()); - let index = proc_macro2::Literal::u8_unsuffixed(p.index()); - - p.call_ty_id().map(|_| { - quote! { - #[codec(index = #index)] - #variant_name(#mod_name::Call), - } - }) - }); - - let outer_extrinsic = quote! { - #default_derives - pub enum Call { - #( #outer_extrinsic_variants )* - } - }; - - let root_event_if_arms = self.metadata.pallets().filter_map(|p| { - let variant_name_str = &p.name(); - let variant_name = format_ident!("{}", variant_name_str); - let mod_name = format_ident!("{}", variant_name_str.to_string().to_snake_case()); - - p.event_ty_id().map(|_| { - // An 'if' arm for the RootEvent impl to match this variant name: - quote! { - if pallet_name == #variant_name_str { - return Ok(Event::#variant_name(#mod_name::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata - )?)); - } - } - }) - }); - - let root_extrinsic_if_arms = self.metadata.pallets().filter_map(|p| { - let variant_name_str = p.name(); - let variant_name = format_ident!("{}", variant_name_str); - let mod_name = format_ident!("{}", variant_name_str.to_string().to_snake_case()); - p.call_ty_id().map(|_| { - // An 'if' arm for the RootExtrinsic impl to match this variant name: - quote! { - if pallet_name == #variant_name_str { - return Ok(Call::#variant_name(#mod_name::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata - )?)); - } - } - }) - }); - - let outer_error_variants = self.metadata.pallets().filter_map(|p| { - let variant_name = format_ident!("{}", p.name()); - let mod_name = format_ident!("{}", p.name().to_string().to_snake_case()); - let index = proc_macro2::Literal::u8_unsuffixed(p.index()); - - p.error_ty_id().map(|_| { - quote! { - #[codec(index = #index)] - #variant_name(#mod_name::Error), - } - }) - }); - - let outer_error = quote! { - #default_derives - pub enum Error { - #( #outer_error_variants )* - } - }; - - let root_error_if_arms = self.metadata.pallets().filter_map(|p| { - let variant_name_str = &p.name(); - let variant_name = format_ident!("{}", variant_name_str); - let mod_name = format_ident!("{}", variant_name_str.to_string().to_snake_case()); - - p.error_ty_id().map(|type_id| { - quote! { - if pallet_name == #variant_name_str { - let variant_error = #mod_name::Error::decode_with_metadata(cursor, #type_id, metadata)?; - return Ok(Error::#variant_name(variant_error)); - } - } - }) - }); - let mod_ident = &item_mod_ir.ident; let pallets_with_constants: Vec<_> = pallets_with_mod_names .iter() @@ -526,6 +413,12 @@ impl RuntimeGenerator { should_gen_docs, )?; + // Fetch the paths of the outer enums. + // Substrate exposes those under `kitchensink_runtime`, while Polkadot under `polkadot_runtime`. + let call_path = type_gen.resolve_type_path(self.metadata.outer_enums().call_enum_ty()); + let event_path = type_gen.resolve_type_path(self.metadata.outer_enums().event_enum_ty()); + let error_path = type_gen.resolve_type_path(self.metadata.outer_enums().error_enum_ty()); + Ok(quote! { #( #item_mod_attrs )* #[allow(dead_code, unused_imports, non_camel_case_types)] @@ -551,36 +444,14 @@ impl RuntimeGenerator { /// The error type returned when there is a runtime issue. pub type DispatchError = #types_mod_ident::sp_runtime::DispatchError; - #outer_event + /// The outer event enum. + pub type Event = #event_path; - impl #crate_path::events::RootEvent for Event { - fn root_event(pallet_bytes: &[u8], pallet_name: &str, pallet_ty: u32, metadata: &#crate_path::Metadata) -> Result { - use #crate_path::metadata::DecodeWithMetadata; - #( #root_event_if_arms )* - Err(#crate_path::ext::scale_decode::Error::custom(format!("Pallet name '{}' not found in root Event enum", pallet_name)).into()) - } - } + /// The outer extrinsic enum. + pub type Call = #call_path; - #outer_extrinsic - - impl #crate_path::blocks::RootExtrinsic for Call { - fn root_extrinsic(pallet_bytes: &[u8], pallet_name: &str, pallet_ty: u32, metadata: &#crate_path::Metadata) -> Result { - use #crate_path::metadata::DecodeWithMetadata; - #( #root_extrinsic_if_arms )* - Err(#crate_path::ext::scale_decode::Error::custom(format!("Pallet name '{}' not found in root Call enum", pallet_name)).into()) - } - } - - #outer_error - - impl #crate_path::error::RootError for Error { - fn root_error(pallet_bytes: &[u8], pallet_name: &str, metadata: &#crate_path::Metadata) -> Result { - use #crate_path::metadata::DecodeWithMetadata; - let cursor = &mut &pallet_bytes[..]; - #( #root_error_if_arms )* - Err(#crate_path::ext::scale_decode::Error::custom(format!("Pallet name '{}' not found in root Error enum", pallet_name)).into()) - } - } + /// The outer error enum representing the DispatchError's Module variant. + pub type Error = #error_path; pub fn constants() -> ConstantsApi { ConstantsApi diff --git a/codegen/src/error.rs b/codegen/src/error.rs index 9a3d977332..f293df2ee6 100644 --- a/codegen/src/error.rs +++ b/codegen/src/error.rs @@ -19,7 +19,7 @@ pub enum CodegenError { #[error("Failed IO for {0}, make sure that you are providing the correct file path for metadata: {1}")] Io(String, std::io::Error), /// Cannot decode the metadata bytes. - #[error("Could not decode metadata, only V14 metadata is supported: {0}")] + #[error("Could not decode metadata, only V14 and V15 metadata are supported: {0}")] Decode(#[from] codec::Error), /// Out of line modules are not supported. #[error("Out-of-line subxt modules are not supported, make sure you are providing a body to your module: pub mod polkadot {{ ... }}")] diff --git a/codegen/src/utils/fetch_metadata.rs b/codegen/src/utils/fetch_metadata.rs index 9d49e35ac4..4c6f5fe90e 100644 --- a/codegen/src/utils/fetch_metadata.rs +++ b/codegen/src/utils/fetch_metadata.rs @@ -204,12 +204,9 @@ async fn fetch_metadata( client: &impl ClientT, version: MetadataVersion, ) -> Result, FetchMetadataError> { - if !matches!( - version, - MetadataVersion::Latest | MetadataVersion::Version(14) - ) { + if !matches!(version, MetadataVersion::Version(14)) { return Err(FetchMetadataError::Other( - "The node can only return version 14 metadata but you've asked for something else" + "The node can only return version 14 metadata using the legacy API but you've asked for something else" .to_string(), )); } diff --git a/metadata/Cargo.toml b/metadata/Cargo.toml index 2024466d12..6e3669278d 100644 --- a/metadata/Cargo.toml +++ b/metadata/Cargo.toml @@ -24,6 +24,7 @@ thiserror = { workspace = true } bitvec = { workspace = true, features = ["alloc"] } criterion = { workspace = true } scale-info = { workspace = true, features = ["bit-vec"] } +assert_matches = { workspace = true } [lib] # Without this, libtest cli opts interfere with criteron benches: diff --git a/metadata/src/from_into/v14.rs b/metadata/src/from_into/v14.rs index 677ebe27c7..6c0d286706 100644 --- a/metadata/src/from_into/v14.rs +++ b/metadata/src/from_into/v14.rs @@ -2,6 +2,8 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. +use std::collections::HashMap; + use super::TryFromError; use crate::Metadata; use frame_metadata::{v14, v15}; @@ -21,7 +23,47 @@ impl From for v14::RuntimeMetadataV14 { } } -fn v15_to_v14(metadata: v15::RuntimeMetadataV15) -> v14::RuntimeMetadataV14 { +fn v15_to_v14(mut metadata: v15::RuntimeMetadataV15) -> v14::RuntimeMetadataV14 { + let types = &mut metadata.types; + + // In subxt we care about the `Address`, `Call`, `Signature` and `Extra` types. + let extrinsic_type = scale_info::Type { + path: scale_info::Path { + segments: vec![ + "primitives".to_string(), + "runtime".to_string(), + "generic".to_string(), + "UncheckedExtrinsic".to_string(), + ], + }, + type_params: vec![ + scale_info::TypeParameter:: { + name: "Address".to_string(), + ty: Some(metadata.extrinsic.address_ty), + }, + scale_info::TypeParameter:: { + name: "Call".to_string(), + ty: Some(metadata.extrinsic.call_ty), + }, + scale_info::TypeParameter:: { + name: "Signature".to_string(), + ty: Some(metadata.extrinsic.signature_ty), + }, + scale_info::TypeParameter:: { + name: "Extra".to_string(), + ty: Some(metadata.extrinsic.extra_ty), + }, + ], + type_def: scale_info::TypeDef::Composite(scale_info::TypeDefComposite { fields: vec![] }), + docs: vec![], + }; + let extrinsic_type_id = types.types.len() as u32; + + types.types.push(scale_info::PortableType { + id: extrinsic_type_id, + ty: extrinsic_type, + }); + v14::RuntimeMetadataV14 { types: metadata.types, pallets: metadata @@ -92,7 +134,7 @@ fn v15_to_v14(metadata: v15::RuntimeMetadataV15) -> v14::RuntimeMetadataV14 { }) .collect(), extrinsic: frame_metadata::v14::ExtrinsicMetadata { - ty: metadata.extrinsic.ty, + ty: extrinsic_type_id.into(), version: metadata.extrinsic.version, signed_extensions: metadata.extrinsic.signed_extensions.into_iter().map(|ext| { frame_metadata::v14::SignedExtensionMetadata { @@ -106,7 +148,13 @@ fn v15_to_v14(metadata: v15::RuntimeMetadataV15) -> v14::RuntimeMetadataV14 { } } -fn v14_to_v15(metadata: v14::RuntimeMetadataV14) -> v15::RuntimeMetadataV15 { +fn v14_to_v15(mut metadata: v14::RuntimeMetadataV14) -> v15::RuntimeMetadataV15 { + // Find the extrinsic types. + let extrinsic_parts = ExtrinsicPartTypeIds::new(&metadata) + .expect("Extrinsic types are always present on V14; qed"); + + let outer_enums = generate_outer_enums(&mut metadata); + v15::RuntimeMetadataV15 { types: metadata.types, pallets: metadata @@ -178,7 +226,6 @@ fn v14_to_v15(metadata: v14::RuntimeMetadataV14) -> v15::RuntimeMetadataV15 { }) .collect(), extrinsic: frame_metadata::v15::ExtrinsicMetadata { - ty: metadata.extrinsic.ty, version: metadata.extrinsic.version, signed_extensions: metadata.extrinsic.signed_extensions.into_iter().map(|ext| { frame_metadata::v15::SignedExtensionMetadata { @@ -186,9 +233,358 @@ fn v14_to_v15(metadata: v14::RuntimeMetadataV14) -> v15::RuntimeMetadataV15 { ty: ext.ty, additional_signed: ext.additional_signed, } - }).collect() + }).collect(), + address_ty: extrinsic_parts.address.into(), + call_ty: extrinsic_parts.call.into(), + signature_ty: extrinsic_parts.signature.into(), + extra_ty: extrinsic_parts.extra.into(), }, ty: metadata.ty, apis: Default::default(), + outer_enums, + custom: v15::CustomMetadata { + map: Default::default(), + }, + } +} + +/// The type IDs extracted from the metadata that represent the +/// generic type parameters passed to the `UncheckedExtrinsic` from +/// the substrate-based chain. +struct ExtrinsicPartTypeIds { + address: u32, + call: u32, + signature: u32, + extra: u32, +} + +impl ExtrinsicPartTypeIds { + /// Extract the generic type parameters IDs from the extrinsic type. + fn new(metadata: &v14::RuntimeMetadataV14) -> Result { + const ADDRESS: &str = "Address"; + const CALL: &str = "Call"; + const SIGNATURE: &str = "Signature"; + const EXTRA: &str = "Extra"; + + let extrinsic_id = metadata.extrinsic.ty.id; + let Some(extrinsic_ty) = metadata.types.resolve(extrinsic_id) else { + return Err("Missing extrinsic type".into()) + }; + + let params: HashMap<_, _> = extrinsic_ty + .type_params + .iter() + .map(|ty_param| { + let Some(ty) = ty_param.ty else { + return Err("Missing type param type from extrinsic".to_string()); + }; + + Ok((ty_param.name.as_str(), ty.id)) + }) + .collect::>()?; + + let Some(address) = params.get(ADDRESS) else { + return Err("Missing address type from extrinsic".into()); + }; + let Some(call) = params.get(CALL) else { + return Err("Missing call type from extrinsic".into()); + }; + let Some(signature) = params.get(SIGNATURE) else { + return Err("Missing signature type from extrinsic".into()); + }; + let Some(extra) = params.get(EXTRA) else { + return Err("Missing extra type from extrinsic".into()); + }; + + Ok(ExtrinsicPartTypeIds { + address: *address, + call: *call, + signature: *signature, + extra: *extra, + }) + } +} + +fn generate_outer_enums( + metadata: &mut v14::RuntimeMetadataV14, +) -> v15::OuterEnums { + let call_enum = metadata + .types + .types + .iter() + .find(|ty| { + let Some(ident) = ty.ty.path.ident() else { return false }; + ident == "RuntimeCall" + }) + .expect("RuntimeCall exists in V14; qed"); + + let event_enum = metadata + .types + .types + .iter() + .find(|ty| { + let Some(ident) = ty.ty.path.ident() else { return false }; + ident == "RuntimeEvent" + }) + .expect("RuntimeEvent exists in V14; qed"); + + let call_ty = call_enum.id.into(); + let event_ty = event_enum.id.into(); + + let mut path_segments = call_enum.ty.path.segments.clone(); + let last = path_segments + .last_mut() + .expect("Should have at least one segment checked above; qed"); + *last = "RuntimeError".to_string(); + + let error_ty_id = generate_runtime_error_type(metadata, path_segments); + + v15::OuterEnums { + call_enum_ty: call_ty, + event_enum_ty: event_ty, + error_enum_ty: error_ty_id.into(), + } +} + +/// Generate the `RuntimeError` type and add it to the metadata. +/// +/// Returns the `RuntimeError` Id from the registry. +fn generate_runtime_error_type( + metadata: &mut v14::RuntimeMetadataV14, + path_segments: Vec, +) -> u32 { + let variants: Vec<_> = metadata + .pallets + .iter() + .filter_map(|pallet| { + let Some(pallet_error) = &pallet.error else { return None }; + let path = format!("{}Error", pallet.name); + + Some(scale_info::Variant { + name: pallet.name.clone(), + fields: vec![scale_info::Field { + name: None, + ty: pallet_error.ty.id.into(), + type_name: Some(path), + docs: vec![], + }], + index: pallet.index, + docs: vec![], + }) + }) + .collect(); + + let error_type = scale_info::Type { + path: scale_info::Path { + segments: path_segments, + }, + type_params: vec![], + type_def: scale_info::TypeDef::Variant(scale_info::TypeDefVariant { variants }), + docs: vec![], + }; + + let error_type_id = metadata.types.types.len() as u32; + + metadata.types.types.push(scale_info::PortableType { + id: error_type_id, + ty: error_type, + }); + + error_type_id +} + +#[cfg(test)] +mod tests { + use super::*; + use codec::Decode; + use frame_metadata::{v15::RuntimeMetadataV15, RuntimeMetadata, RuntimeMetadataPrefixed}; + use scale_info::TypeDef; + use std::{fs, path::Path}; + + fn load_v15_metadata() -> RuntimeMetadataV15 { + let bytes = fs::read(Path::new("../artifacts/polkadot_metadata_full.scale")) + .expect("Cannot read metadata blob"); + let meta: RuntimeMetadataPrefixed = + Decode::decode(&mut &*bytes).expect("Cannot decode scale metadata"); + + match meta.1 { + RuntimeMetadata::V15(v15) => v15, + _ => panic!("Unsupported metadata version {:?}", meta.1), + } + } + + #[test] + fn test_extrinsic_id_generation() { + let v15 = load_v15_metadata(); + let v14 = v15_to_v14(v15.clone()); + + let ext_ty = v14.types.resolve(v14.extrinsic.ty.id).unwrap(); + let addr_id = ext_ty + .type_params + .iter() + .find_map(|ty| { + if ty.name == "Address" { + Some(ty.ty.unwrap().id) + } else { + None + } + }) + .unwrap(); + let call_id = ext_ty + .type_params + .iter() + .find_map(|ty| { + if ty.name == "Call" { + Some(ty.ty.unwrap().id) + } else { + None + } + }) + .unwrap(); + let extra_id = ext_ty + .type_params + .iter() + .find_map(|ty| { + if ty.name == "Extra" { + Some(ty.ty.unwrap().id) + } else { + None + } + }) + .unwrap(); + let signature_id = ext_ty + .type_params + .iter() + .find_map(|ty| { + if ty.name == "Signature" { + Some(ty.ty.unwrap().id) + } else { + None + } + }) + .unwrap(); + + // Position in type registry shouldn't change. + assert_eq!(v15.extrinsic.address_ty.id, addr_id); + assert_eq!(v15.extrinsic.call_ty.id, call_id); + assert_eq!(v15.extrinsic.extra_ty.id, extra_id); + assert_eq!(v15.extrinsic.signature_ty.id, signature_id); + + let v15_addr = v15.types.resolve(v15.extrinsic.address_ty.id).unwrap(); + let v14_addr = v14.types.resolve(addr_id).unwrap(); + assert_eq!(v15_addr, v14_addr); + + let v15_call = v15.types.resolve(v15.extrinsic.call_ty.id).unwrap(); + let v14_call = v14.types.resolve(call_id).unwrap(); + assert_eq!(v15_call, v14_call); + + let v15_extra = v15.types.resolve(v15.extrinsic.extra_ty.id).unwrap(); + let v14_extra = v14.types.resolve(extra_id).unwrap(); + assert_eq!(v15_extra, v14_extra); + + let v15_sign = v15.types.resolve(v15.extrinsic.signature_ty.id).unwrap(); + let v14_sign = v14.types.resolve(signature_id).unwrap(); + assert_eq!(v15_sign, v14_sign); + + // Ensure we don't lose the information when converting back to v15. + let converted_v15 = v14_to_v15(v14); + + let v15_addr = v15.types.resolve(v15.extrinsic.address_ty.id).unwrap(); + let converted_v15_addr = converted_v15 + .types + .resolve(converted_v15.extrinsic.address_ty.id) + .unwrap(); + assert_eq!(v15_addr, converted_v15_addr); + + let v15_call = v15.types.resolve(v15.extrinsic.call_ty.id).unwrap(); + let converted_v15_call = converted_v15 + .types + .resolve(converted_v15.extrinsic.call_ty.id) + .unwrap(); + assert_eq!(v15_call, converted_v15_call); + + let v15_extra = v15.types.resolve(v15.extrinsic.extra_ty.id).unwrap(); + let converted_v15_extra = converted_v15 + .types + .resolve(converted_v15.extrinsic.extra_ty.id) + .unwrap(); + assert_eq!(v15_extra, converted_v15_extra); + + let v15_sign = v15.types.resolve(v15.extrinsic.signature_ty.id).unwrap(); + let converted_v15_sign = converted_v15 + .types + .resolve(converted_v15.extrinsic.signature_ty.id) + .unwrap(); + assert_eq!(v15_sign, converted_v15_sign); + } + + #[test] + fn test_outer_enums_generation() { + let v15 = load_v15_metadata(); + let v14 = v15_to_v14(v15.clone()); + + // Convert back to v15 and expect to have the enum types properly generated. + let converted_v15 = v14_to_v15(v14); + + // RuntimeCall and RuntimeEvent were already present in the metadata v14. + let v15_call = v15.types.resolve(v15.outer_enums.call_enum_ty.id).unwrap(); + let converted_v15_call = converted_v15 + .types + .resolve(converted_v15.outer_enums.call_enum_ty.id) + .unwrap(); + assert_eq!(v15_call, converted_v15_call); + + let v15_event = v15.types.resolve(v15.outer_enums.event_enum_ty.id).unwrap(); + let converted_v15_event = converted_v15 + .types + .resolve(converted_v15.outer_enums.event_enum_ty.id) + .unwrap(); + assert_eq!(v15_event, converted_v15_event); + + let v15_error = v15.types.resolve(v15.outer_enums.error_enum_ty.id).unwrap(); + let converted_v15_error = converted_v15 + .types + .resolve(converted_v15.outer_enums.error_enum_ty.id) + .unwrap(); + + // Ensure they match in terms of variants and fields ids. + assert_eq!(v15_error.path, converted_v15_error.path); + + let TypeDef::Variant(v15_variant) = &v15_error.type_def else { + panic!("V15 error must be a variant"); + }; + + let TypeDef::Variant(converted_v15_variant) = &converted_v15_error.type_def else { + panic!("Converted V15 error must be a variant"); + }; + + assert_eq!( + v15_variant.variants.len(), + converted_v15_variant.variants.len() + ); + + for (v15_var, converted_v15_var) in v15_variant + .variants + .iter() + .zip(converted_v15_variant.variants.iter()) + { + // Variant name must match. + assert_eq!(v15_var.name, converted_v15_var.name); + assert_eq!(v15_var.fields.len(), converted_v15_var.fields.len()); + + // Fields must have the same type. + for (v15_field, converted_v15_field) in + v15_var.fields.iter().zip(converted_v15_var.fields.iter()) + { + assert_eq!(v15_field.ty.id, converted_v15_field.ty.id); + + let ty = v15.types.resolve(v15_field.ty.id).unwrap(); + let converted_ty = converted_v15 + .types + .resolve(converted_v15_field.ty.id) + .unwrap(); + assert_eq!(ty, converted_ty); + } + } } } diff --git a/metadata/src/from_into/v15.rs b/metadata/src/from_into/v15.rs index 50972cfbbe..bb3b6a83bf 100644 --- a/metadata/src/from_into/v15.rs +++ b/metadata/src/from_into/v15.rs @@ -6,7 +6,7 @@ use super::TryFromError; use crate::utils::variant_index::VariantIndex; use crate::{ utils::ordered_map::OrderedMap, ArcStr, ConstantMetadata, ExtrinsicMetadata, Metadata, - PalletMetadataInner, RuntimeApiMetadataInner, RuntimeApiMethodMetadata, + OuterEnumsMetadata, PalletMetadataInner, RuntimeApiMetadataInner, RuntimeApiMethodMetadata, RuntimeApiMethodParamMetadata, SignedExtensionMetadata, StorageEntryMetadata, StorageEntryModifier, StorageEntryType, StorageHasher, StorageMetadata, }; @@ -88,6 +88,11 @@ mod from_v15 { runtime_ty: m.ty.id, dispatch_error_ty, apis: apis.collect(), + outer_enums: OuterEnumsMetadata { + call_enum_ty: m.outer_enums.call_enum_ty.id, + event_enum_ty: m.outer_enums.event_enum_ty.id, + error_enum_ty: m.outer_enums.error_enum_ty.id, + }, }) } } @@ -104,13 +109,16 @@ mod from_v15 { fn from_extrinsic_metadata(value: v15::ExtrinsicMetadata) -> ExtrinsicMetadata { ExtrinsicMetadata { - ty: value.ty.id, version: value.version, signed_extensions: value .signed_extensions .into_iter() .map(from_signed_extension_metadata) .collect(), + address_ty: value.address_ty.id, + call_ty: value.call_ty.id, + signature_ty: value.signature_ty.id, + extra_ty: value.extra_ty.id, } } @@ -268,6 +276,14 @@ mod into_v15 { .into_iter() .map(from_runtime_api_metadata) .collect(), + outer_enums: v15::OuterEnums { + call_enum_ty: m.outer_enums.call_enum_ty.into(), + event_enum_ty: m.outer_enums.event_enum_ty.into(), + error_enum_ty: m.outer_enums.error_enum_ty.into(), + }, + custom: v15::CustomMetadata { + map: Default::default(), + }, } } } @@ -313,13 +329,16 @@ mod into_v15 { fn from_extrinsic_metadata(e: ExtrinsicMetadata) -> v15::ExtrinsicMetadata { v15::ExtrinsicMetadata { - ty: e.ty.into(), version: e.version, signed_extensions: e .signed_extensions .into_iter() .map(from_signed_extension_metadata) .collect(), + address_ty: e.address_ty.into(), + call_ty: e.call_ty.into(), + signature_ty: e.signature_ty.into(), + extra_ty: e.extra_ty.into(), } } diff --git a/metadata/src/lib.rs b/metadata/src/lib.rs index 4d6620d04e..8403b33e00 100644 --- a/metadata/src/lib.rs +++ b/metadata/src/lib.rs @@ -45,6 +45,8 @@ pub struct Metadata { extrinsic: ExtrinsicMetadata, /// The type ID of the `Runtime` type. runtime_ty: u32, + /// The types of the outer enums. + outer_enums: OuterEnumsMetadata, /// The type Id of the `DispatchError` type, which Subxt makes use of. dispatch_error_ty: Option, /// Details about each of the runtime API traits. @@ -77,6 +79,11 @@ impl Metadata { &self.extrinsic } + /// Return details about the outer enums. + pub fn outer_enums(&self) -> OuterEnumsMetadata { + self.outer_enums + } + /// An iterator over all of the available pallets. pub fn pallets(&self) -> impl ExactSizeIterator> { self.pallets.values().iter().map(|inner| PalletMetadata { @@ -440,8 +447,14 @@ impl ConstantMetadata { /// Metadata for the extrinsic type. #[derive(Debug, Clone)] pub struct ExtrinsicMetadata { - /// The type of the extrinsic. - ty: u32, + /// The type of the address that signs the extrinsic + address_ty: u32, + /// The type of the outermost Call enum. + call_ty: u32, + /// The type of the extrinsic's signature. + signature_ty: u32, + /// The type of the outermost Extra enum. + extra_ty: u32, /// Extrinsic version. version: u8, /// The signed extensions in the order they appear in the extrinsic. @@ -449,9 +462,22 @@ pub struct ExtrinsicMetadata { } impl ExtrinsicMetadata { - /// Type of the extrinsic. - pub fn ty(&self) -> u32 { - self.ty + /// The type of the address that signs the extrinsic + pub fn address_ty(&self) -> u32 { + self.address_ty + } + + /// The type of the outermost Call enum. + pub fn call_ty(&self) -> u32 { + self.call_ty + } + /// The type of the extrinsic's signature. + pub fn signature_ty(&self) -> u32 { + self.signature_ty + } + /// The type of the outermost Extra enum. + pub fn extra_ty(&self) -> u32 { + self.extra_ty } /// Extrinsic version. @@ -491,6 +517,34 @@ impl SignedExtensionMetadata { } } +/// Metadata for the outer enums. +#[derive(Debug, Clone, Copy)] +pub struct OuterEnumsMetadata { + /// The type of the outer call enum. + call_enum_ty: u32, + /// The type of the outer event enum. + event_enum_ty: u32, + /// The type of the outer error enum. + error_enum_ty: u32, +} + +impl OuterEnumsMetadata { + /// The type of the outer call enum. + pub fn call_enum_ty(&self) -> u32 { + self.call_enum_ty + } + + /// The type of the outer event enum. + pub fn event_enum_ty(&self) -> u32 { + self.event_enum_ty + } + + /// The type of the outer error enum. + pub fn error_enum_ty(&self) -> u32 { + self.error_enum_ty + } +} + /// Metadata for the available runtime APIs. #[derive(Debug, Clone, Copy)] pub struct RuntimeApiMetadata<'a> { diff --git a/metadata/src/utils/retain.rs b/metadata/src/utils/retain.rs index 9453d0e309..d33315c2aa 100644 --- a/metadata/src/utils/retain.rs +++ b/metadata/src/utils/retain.rs @@ -5,7 +5,8 @@ //! Utility functions to generate a subset of the metadata. use crate::{ - ExtrinsicMetadata, Metadata, PalletMetadataInner, RuntimeApiMetadataInner, StorageEntryType, + ExtrinsicMetadata, Metadata, OuterEnumsMetadata, PalletMetadataInner, RuntimeApiMetadataInner, + StorageEntryType, }; use scale_info::TypeDef; use std::collections::{BTreeMap, HashSet}; @@ -82,7 +83,10 @@ fn update_pallet_types(pallet: &mut PalletMetadataInner, map_ids: &BTreeMap) { - type_ids.insert(extrinsic.ty); + type_ids.insert(extrinsic.address_ty); + type_ids.insert(extrinsic.call_ty); + type_ids.insert(extrinsic.signature_ty); + type_ids.insert(extrinsic.extra_ty); for signed in &extrinsic.signed_extensions { type_ids.insert(signed.extra_ty); @@ -92,7 +96,10 @@ fn collect_extrinsic_types(extrinsic: &ExtrinsicMetadata, type_ids: &mut HashSet /// Update all type IDs of the provided extrinsic metadata using the new type IDs from the portable registry. fn update_extrinsic_types(extrinsic: &mut ExtrinsicMetadata, map_ids: &BTreeMap) { - update_type(&mut extrinsic.ty, map_ids); + update_type(&mut extrinsic.address_ty, map_ids); + update_type(&mut extrinsic.call_ty, map_ids); + update_type(&mut extrinsic.signature_ty, map_ids); + update_type(&mut extrinsic.extra_ty, map_ids); for signed in &mut extrinsic.signed_extensions { update_type(&mut signed.extra_ty, map_ids); @@ -122,6 +129,20 @@ fn update_runtime_api_types(apis: &mut [RuntimeApiMetadataInner], map_ids: &BTre } } +/// Collect the outer enums type IDs. +fn collect_outer_enums(enums: &OuterEnumsMetadata, type_ids: &mut HashSet) { + type_ids.insert(enums.call_enum_ty); + type_ids.insert(enums.event_enum_ty); + type_ids.insert(enums.error_enum_ty); +} + +/// Update all the type IDs for outer enums. +fn update_outer_enums(enums: &mut OuterEnumsMetadata, map_ids: &BTreeMap) { + update_type(&mut enums.call_enum_ty, map_ids); + update_type(&mut enums.event_enum_ty, map_ids); + update_type(&mut enums.error_enum_ty, map_ids); +} + /// Update the given type using the new type ID from the portable registry. /// /// # Panics @@ -136,38 +157,36 @@ fn update_type(ty: &mut u32, map_ids: &BTreeMap) { *ty = new_id; } -/// Strip any pallets out of the RuntimeCall type that aren't the ones we want to keep. -/// The RuntimeCall type is referenced in a bunch of places, so doing this prevents us from -/// holding on to stuff in pallets we've asked not to keep. -fn retain_pallets_in_runtime_call_type(metadata: &mut Metadata, mut filter: F) +/// Retain the enum type identified by ID and keep only the variants that +/// match the provided filter. +fn retain_variants_in_enum_type(metadata: &mut Metadata, id: u32, mut filter: F) where F: FnMut(&str) -> bool, { - let extrinsic_ty = metadata + let ty = metadata .types .types - .get_mut(metadata.extrinsic.ty as usize) - .expect("Metadata should contain extrinsic type in registry"); + .get_mut(id as usize) + .expect("Metadata should contain enum type in registry"); - let Some(call_ty) = extrinsic_ty.ty.type_params - .iter_mut() - .find(|ty| ty.name == "Call") - .and_then(|ty| ty.ty) else { return; }; - - let call_ty = metadata - .types - .types - .get_mut(call_ty.id as usize) - .expect("Metadata should contain Call type information"); - - let TypeDef::Variant(variant) = &mut call_ty.ty.type_def else { - panic!("Metadata Call type is expected to be a variant type"); + let TypeDef::Variant(variant) = &mut ty.ty.type_def else { + panic!("Metadata type is expected to be a variant type"); }; - // Remove all variants from the call type that aren't the pallet(s) we want to keep. + // Remove all variants from the type that aren't the pallet(s) we want to keep. variant.variants.retain(|v| filter(&v.name)); } +/// Strip any pallets out of the outer enum types that aren't the ones we want to keep. +fn retain_pallets_in_runtime_outer_types(metadata: &mut Metadata, mut filter: F) +where + F: FnMut(&str) -> bool, +{ + retain_variants_in_enum_type(metadata, metadata.outer_enums.call_enum_ty, &mut filter); + retain_variants_in_enum_type(metadata, metadata.outer_enums.event_enum_ty, &mut filter); + retain_variants_in_enum_type(metadata, metadata.outer_enums.error_enum_ty, &mut filter); +} + /// Generate a subset of the metadata that contains only the /// types needed to represent the provided pallets and runtime APIs. /// @@ -190,10 +209,13 @@ pub fn retain_metadata( { let mut type_ids = HashSet::new(); - // There is a special RuntimeCall type which points to all pallets and call types by default. + // There are special outer enum types that point to all pallets types (call, error, event) by default. // This brings in a significant chunk of types. We trim this down to only include variants // for the pallets we're retaining, to avoid this. - retain_pallets_in_runtime_call_type(metadata, &mut pallets_filter); + retain_pallets_in_runtime_outer_types(metadata, &mut pallets_filter); + + // Collect the stripped outer enums. + collect_outer_enums(&metadata.outer_enums, &mut type_ids); // Filter our pallet list to only those pallets we want to keep. Keep hold of all // type IDs in the pallets we're keeping. Retain all, if no filter specified. @@ -245,6 +267,7 @@ pub fn retain_metadata( let map_ids = metadata.types.retain(|id| type_ids.contains(&id)); // And finally, we can go and update all of our type IDs in the metadata as a result of this: + update_outer_enums(&mut metadata.outer_enums, &map_ids); for pallets in metadata.pallets.values_mut() { update_pallet_types(pallets, &map_ids); } @@ -257,6 +280,7 @@ pub fn retain_metadata( mod tests { use super::*; use crate::Metadata; + use assert_matches::assert_matches; use codec::Decode; use frame_metadata::{RuntimeMetadata, RuntimeMetadataPrefixed}; use std::{fs, path::Path}; @@ -281,6 +305,7 @@ mod tests { // Retain one pallet at a time ensuring the test does not panic. for pallet in metadata_cache.pallets() { let mut metadata = metadata_cache.clone(); + retain_metadata( &mut metadata, |pallet_name| pallet_name == pallet.name(), @@ -292,6 +317,21 @@ mod tests { &*metadata.pallets.get_by_index(0).unwrap().name, pallet.name() ); + + let id = metadata.outer_enums().call_enum_ty; + let ty = metadata.types.resolve(id).unwrap(); + let num_variants = if pallet.call_ty_id().is_some() { 1 } else { 0 }; + assert_matches!(&ty.type_def, TypeDef::Variant(variant) if variant.variants.len() == num_variants); + + let id = metadata.outer_enums().error_enum_ty; + let ty = metadata.types.resolve(id).unwrap(); + let num_variants = if pallet.error_ty_id().is_some() { 1 } else { 0 }; + assert_matches!(&ty.type_def, TypeDef::Variant(variant) if variant.variants.len() == num_variants); + + let id = metadata.outer_enums().event_enum_ty; + let ty = metadata.types.resolve(id).unwrap(); + let num_variants = if pallet.event_ty_id().is_some() { 1 } else { 0 }; + assert_matches!(&ty.type_def, TypeDef::Variant(variant) if variant.variants.len() == num_variants); } } diff --git a/metadata/src/utils/validation.rs b/metadata/src/utils/validation.rs index a16f33fae9..0ce0caf55d 100644 --- a/metadata/src/utils/validation.rs +++ b/metadata/src/utils/validation.rs @@ -5,10 +5,10 @@ //! Utility functions for metadata validation. use crate::{ - ExtrinsicMetadata, Metadata, PalletMetadata, RuntimeApiMetadata, RuntimeApiMethodMetadata, - StorageEntryMetadata, StorageEntryType, + ExtrinsicMetadata, Metadata, OuterEnumsMetadata, PalletMetadata, RuntimeApiMetadata, + RuntimeApiMethodMetadata, StorageEntryMetadata, StorageEntryType, }; -use scale_info::{form::PortableForm, Field, PortableRegistry, TypeDef, Variant}; +use scale_info::{form::PortableForm, Field, PortableRegistry, TypeDef, TypeDefVariant, Variant}; use std::collections::HashSet; /// Predefined value to be returned when we already visited a type. @@ -104,6 +104,30 @@ fn get_variant_hash( concat_and_hash2(&variant_name_bytes, &variant_field_bytes) } +fn get_type_def_variant_hash( + registry: &PortableRegistry, + variant: &TypeDefVariant, + only_these_variants: Option<&[&str]>, + visited_ids: &mut HashSet, +) -> [u8; HASH_LEN] { + let variant_id_bytes = [TypeBeingHashed::Variant as u8; HASH_LEN]; + let variant_field_bytes = variant.variants.iter().fold([0u8; HASH_LEN], |bytes, var| { + // With EncodeAsType and DecodeAsType we no longer care which order the variants are in, + // as long as all of the names+types are there. XOR to not care about ordering. + let should_hash = only_these_variants + .as_ref() + .map(|only_these_variants| only_these_variants.contains(&var.name.as_str())) + .unwrap_or(true); + + if should_hash { + xor(bytes, get_variant_hash(registry, var, visited_ids)) + } else { + bytes + } + }); + concat_and_hash2(&variant_id_bytes, &variant_field_bytes) +} + /// Obtain the hash representation of a `scale_info::TypeDef`. fn get_type_def_hash( registry: &PortableRegistry, @@ -125,14 +149,7 @@ fn get_type_def_hash( concat_and_hash2(&composite_id_bytes, &composite_field_bytes) } TypeDef::Variant(variant) => { - let variant_id_bytes = [TypeBeingHashed::Variant as u8; HASH_LEN]; - let variant_field_bytes = - variant.variants.iter().fold([0u8; HASH_LEN], |bytes, var| { - // With EncodeAsType and DecodeAsType we no longer care which order the variants are in, - // as long as all of the names+types are there. XOR to not care about ordering. - xor(bytes, get_variant_hash(registry, var, visited_ids)) - }); - concat_and_hash2(&variant_id_bytes, &variant_field_bytes) + get_type_def_variant_hash(registry, variant, None, visited_ids) } TypeDef::Sequence(sequence) => concat_and_hash2( &[TypeBeingHashed::Sequence as u8; HASH_LEN], @@ -198,8 +215,16 @@ fn get_extrinsic_hash( ) -> [u8; HASH_LEN] { let mut visited_ids = HashSet::::new(); - let mut bytes = concat_and_hash2( - &get_type_hash(registry, extrinsic.ty, &mut visited_ids), + // Get the hashes of the extrinsic type. + let address_hash = get_type_hash(registry, extrinsic.address_ty, &mut visited_ids); + // The `RuntimeCall` type is intentionally omitted and hashed by the outer enums instead. + let signature_hash = get_type_hash(registry, extrinsic.signature_ty, &mut visited_ids); + let extra_hash = get_type_hash(registry, extrinsic.extra_ty, &mut visited_ids); + + let mut bytes = concat_and_hash4( + &address_hash, + &signature_hash, + &extra_hash, &[extrinsic.version; 32], ); @@ -215,6 +240,39 @@ fn get_extrinsic_hash( bytes } +/// Obtain the hash representation of the `frame_metadata::v15::OuterEnums`. +fn get_outer_enums_hash( + registry: &PortableRegistry, + enums: &OuterEnumsMetadata, + only_these_variants: Option<&[&str]>, +) -> [u8; HASH_LEN] { + /// Hash the provided enum type. + fn get_enum_hash( + registry: &PortableRegistry, + id: u32, + only_these_variants: Option<&[&str]>, + ) -> [u8; HASH_LEN] { + let ty = registry + .types + .get(id as usize) + .expect("Metadata should contain enum type in registry"); + + if let TypeDef::Variant(variant) = &ty.ty.type_def { + get_type_def_variant_hash(registry, variant, only_these_variants, &mut HashSet::new()) + } else { + get_type_hash(registry, id, &mut HashSet::new()) + } + } + + let call_hash = get_enum_hash(registry, enums.call_enum_ty, only_these_variants); + + let event_hash = get_enum_hash(registry, enums.event_enum_ty, only_these_variants); + + let error_hash = get_enum_hash(registry, enums.error_enum_ty, only_these_variants); + + concat_and_hash3(&call_hash, &event_hash, &error_hash) +} + /// Get the hash corresponding to a single storage entry. fn get_storage_entry_hash( registry: &PortableRegistry, @@ -441,8 +499,6 @@ impl<'a> MetadataHasher<'a> { /// Hash the given metadata. pub fn hash(&self) -> [u8; HASH_LEN] { - let mut visited_ids = HashSet::::new(); - let metadata = self.metadata; let pallet_hash = metadata.pallets().fold([0u8; HASH_LEN], |bytes, pallet| { @@ -480,9 +536,21 @@ impl<'a> MetadataHasher<'a> { }); let extrinsic_hash = get_extrinsic_hash(&metadata.types, &metadata.extrinsic); - let runtime_hash = get_type_hash(&metadata.types, metadata.runtime_ty(), &mut visited_ids); + let runtime_hash = + get_type_hash(&metadata.types, metadata.runtime_ty(), &mut HashSet::new()); + let outer_enums_hash = get_outer_enums_hash( + &metadata.types, + &metadata.outer_enums(), + self.specific_pallets.as_deref(), + ); - concat_and_hash4(&pallet_hash, &apis_hash, &extrinsic_hash, &runtime_hash) + concat_and_hash5( + &pallet_hash, + &apis_hash, + &extrinsic_hash, + &runtime_hash, + &outer_enums_hash, + ) } } @@ -552,9 +620,12 @@ mod tests { fn build_default_extrinsic() -> v15::ExtrinsicMetadata { v15::ExtrinsicMetadata { - ty: meta_type::<()>(), version: 0, signed_extensions: vec![], + address_ty: meta_type::<()>(), + call_ty: meta_type::<()>(), + signature_ty: meta_type::<()>(), + extra_ty: meta_type::<()>(), } } @@ -597,6 +668,14 @@ mod tests { build_default_extrinsic(), meta_type::<()>(), vec![], + v15::OuterEnums { + call_enum_ty: meta_type::<()>(), + event_enum_ty: meta_type::<()>(), + error_enum_ty: meta_type::<()>(), + }, + v15::CustomMetadata { + map: Default::default(), + }, ) .try_into() .expect("can build valid metadata") diff --git a/scripts/artifacts.sh b/scripts/artifacts.sh index f561228a2a..cdf46ce10b 100755 --- a/scripts/artifacts.sh +++ b/scripts/artifacts.sh @@ -12,10 +12,10 @@ # ``` # get the full metadata -cargo run --bin subxt metadata --version unstable > artifacts/polkadot_metadata_full.scale +cargo run --bin subxt metadata --version 15 > artifacts/polkadot_metadata_full.scale # use it to generate polkadot.rs -cargo run --bin subxt codegen --file artifacts/polkadot_metadata_full.scale | rustfmt > testing/integration-tests/src/codegen/polkadot.rs -# generate a metadata file that only contains the pallets Balances, Staking, System and Multisig -cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "Balances,Staking,System,Multisig" > artifacts/polkadot_metadata_small.scale +cargo run --bin subxt codegen --file artifacts/polkadot_metadata_full.scale | rustfmt > testing/integration-tests/src/full_client/codegen/polkadot.rs +# generate a metadata file that only contains a few pallets that we need for our examples. +cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "Balances,Staking,System,Multisig,Timestamp,ParaInherent" > artifacts/polkadot_metadata_small.scale # generate a metadata file that only contains no pallets cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "" > artifacts/polkadot_metadata_tiny.scale diff --git a/subxt/src/blocks/extrinsic_types.rs b/subxt/src/blocks/extrinsic_types.rs index 6778b940f5..b7cd41588a 100644 --- a/subxt/src/blocks/extrinsic_types.rs +++ b/subxt/src/blocks/extrinsic_types.rs @@ -16,8 +16,8 @@ use crate::{ use crate::utils::strip_compact_prefix; use codec::Decode; use derivative::Derivative; -use scale_decode::DecodeAsFields; -use std::{collections::HashMap, sync::Arc}; +use scale_decode::{DecodeAsFields, DecodeAsType}; +use std::sync::Arc; /// Trait to uniquely identify the extrinsic's identity from the runtime metadata. /// @@ -37,23 +37,6 @@ pub trait StaticExtrinsic: DecodeAsFields { } } -/// This trait is implemented on the statically generated root extrinsic type, so that we're able -/// to decode it properly via a pallet that impls `DecodeAsMetadata`. This is necessary -/// because the "root extrinsic" type is generated using pallet info but doesn't actually exist in the -/// metadata types, so we have no easy way to decode things into it via type information and need a -/// little help via codegen. -#[doc(hidden)] -pub trait RootExtrinsic: Sized { - /// Given details of the pallet extrinsic we want to decode, and the name of the pallet, try to hand - /// back a "root extrinsic". - fn root_extrinsic( - pallet_bytes: &[u8], - pallet_name: &str, - pallet_extrinsic_ty: u32, - metadata: &Metadata, - ) -> Result; -} - /// The body of a block. pub struct Extrinsics { client: C, @@ -420,22 +403,17 @@ where } } - /// Attempt to decode these [`ExtrinsicDetails`] into a root extrinsic type (which includes + /// Attempt to decode these [`ExtrinsicDetails`] into an outer call enum type (which includes /// the pallet and extrinsic enum variants as well as the extrinsic fields). A compatible /// type for this is exposed via static codegen as a root level `Call` type. - pub fn as_root_extrinsic(&self) -> Result { - let md = self.extrinsic_metadata()?; - let pallet_extrinsic_ty = md.pallet.call_ty_id().ok_or_else(|| { - Error::Metadata(MetadataError::CallTypeNotFoundInPallet(md.pallet.index())) - })?; + pub fn as_root_extrinsic(&self) -> Result { + let decoded = E::decode_as_type( + &mut &self.call_bytes()[..], + self.metadata.outer_enums().call_enum_ty(), + self.metadata.types(), + )?; - // Ignore root enum index. - E::root_extrinsic( - &self.call_bytes()[1..], - md.pallet.name(), - pallet_extrinsic_ty, - &self.metadata, - ) + Ok(decoded) } } @@ -478,47 +456,11 @@ pub(crate) struct ExtrinsicPartTypeIds { impl ExtrinsicPartTypeIds { /// Extract the generic type parameters IDs from the extrinsic type. pub(crate) fn new(metadata: &Metadata) -> Result { - const ADDRESS: &str = "Address"; - const CALL: &str = "Call"; - const SIGNATURE: &str = "Signature"; - const EXTRA: &str = "Extra"; - - let id = metadata.extrinsic().ty(); - - let Some(ty) = metadata.types().resolve(id) else { - return Err(BlockError::MissingType); - }; - - let params: HashMap<_, _> = ty - .type_params - .iter() - .map(|ty_param| { - let Some(ty) = ty_param.ty else { - return Err(BlockError::MissingType); - }; - - Ok((ty_param.name.as_str(), ty.id)) - }) - .collect::>()?; - - let Some(address) = params.get(ADDRESS) else { - return Err(BlockError::MissingType); - }; - let Some(call) = params.get(CALL) else { - return Err(BlockError::MissingType); - }; - let Some(signature) = params.get(SIGNATURE) else { - return Err(BlockError::MissingType); - }; - let Some(extra) = params.get(EXTRA) else { - return Err(BlockError::MissingType); - }; - Ok(ExtrinsicPartTypeIds { - address: *address, - _call: *call, - signature: *signature, - extra: *extra, + address: metadata.extrinsic().address_ty(), + _call: metadata.extrinsic().call_ty(), + signature: metadata.extrinsic().signature_ty(), + extra: metadata.extrinsic().extra_ty(), }) } } @@ -620,10 +562,10 @@ impl ExtrinsicEvents { #[cfg(test)] mod tests { use super::*; - use crate::metadata::DecodeWithMetadata; use crate::{rpc::types::RuntimeVersion, OfflineClient, PolkadotConfig}; use assert_matches::assert_matches; use codec::{Decode, Encode}; + use frame_metadata::v15::{CustomMetadata, OuterEnums}; use frame_metadata::{ v15::{ExtrinsicMetadata, PalletCallMetadata, PalletMetadata, RuntimeMetadataV15}, RuntimeMetadataPrefixed, @@ -660,27 +602,6 @@ mod tests { Test(Pallet), } - // We need this in order to be able to decode into a root extrinsic type: - impl RootExtrinsic for RuntimeCall { - fn root_extrinsic( - mut pallet_bytes: &[u8], - pallet_name: &str, - pallet_extrinsic_ty: u32, - metadata: &Metadata, - ) -> Result { - if pallet_name == "Test" { - return Ok(RuntimeCall::Test(Pallet::decode_with_metadata( - &mut pallet_bytes, - pallet_extrinsic_ty, - metadata, - )?)); - } - panic!( - "Asked for pallet name '{pallet_name}', which isn't in our test RuntimeCall type" - ) - } - } - // The calls of the pallet. #[allow(unused)] #[derive( @@ -743,12 +664,28 @@ mod tests { }]; let extrinsic = ExtrinsicMetadata { - ty: meta_type::>(), version: 4, signed_extensions: vec![], + address_ty: meta_type::<()>(), + call_ty: meta_type::(), + signature_ty: meta_type::<()>(), + extra_ty: meta_type::<()>(), }; - let meta = RuntimeMetadataV15::new(pallets, extrinsic, meta_type::<()>(), vec![]); + let meta = RuntimeMetadataV15::new( + pallets, + extrinsic, + meta_type::<()>(), + vec![], + OuterEnums { + call_enum_ty: meta_type::(), + event_enum_ty: meta_type::<()>(), + error_enum_ty: meta_type::<()>(), + }, + CustomMetadata { + map: Default::default(), + }, + ); let runtime_metadata: RuntimeMetadataPrefixed = meta.into(); Metadata::new(runtime_metadata.try_into().unwrap()) diff --git a/subxt/src/blocks/mod.rs b/subxt/src/blocks/mod.rs index 3cb404a496..085eebe9a5 100644 --- a/subxt/src/blocks/mod.rs +++ b/subxt/src/blocks/mod.rs @@ -10,6 +10,4 @@ mod extrinsic_types; pub use block_types::{Block, BlockBody}; pub use blocks_client::{subscribe_to_block_headers_filling_in_gaps, BlocksClient}; -pub use extrinsic_types::{ - ExtrinsicDetails, ExtrinsicEvents, Extrinsics, RootExtrinsic, StaticExtrinsic, -}; +pub use extrinsic_types::{ExtrinsicDetails, ExtrinsicEvents, Extrinsics, StaticExtrinsic}; diff --git a/subxt/src/client/online_client.rs b/subxt/src/client/online_client.rs index 244370a29d..db242de3bf 100644 --- a/subxt/src/client/online_client.rs +++ b/subxt/src/client/online_client.rs @@ -129,16 +129,32 @@ impl OnlineClient { async fn fetch_metadata(rpc: &Rpc) -> Result { #[cfg(feature = "unstable-metadata")] { + /// The unstable metadata version number. + const UNSTABLE_METADATA_VERSION: u32 = u32::MAX; + // Try to fetch the latest unstable metadata, if that fails fall back to // fetching the latest stable metadata. - const V15_METADATA_VERSION: u32 = u32::MAX; - match rpc.metadata_at_version(V15_METADATA_VERSION).await { + match rpc.metadata_at_version(UNSTABLE_METADATA_VERSION).await { Ok(bytes) => Ok(bytes), - Err(_) => rpc.metadata().await, + Err(_) => OnlineClient::fetch_latest_stable_metadata(rpc).await, } } #[cfg(not(feature = "unstable-metadata"))] + OnlineClient::fetch_latest_stable_metadata(rpc).await + } + + /// Fetch the latest stable metadata from the node. + async fn fetch_latest_stable_metadata(rpc: &Rpc) -> Result { + // This is the latest stable metadata that subxt can utilize. + const V15_METADATA_VERSION: u32 = 15; + + // Try to fetch the metadata version. + if let Ok(bytes) = rpc.metadata_at_version(V15_METADATA_VERSION).await { + return Ok(bytes); + } + + // If that fails, fetch the metadata V14 using the old API. rpc.metadata().await } diff --git a/subxt/src/error/dispatch_error.rs b/subxt/src/error/dispatch_error.rs index eb5856620c..b57986a13c 100644 --- a/subxt/src/error/dispatch_error.rs +++ b/subxt/src/error/dispatch_error.rs @@ -7,11 +7,10 @@ use crate::metadata::{DecodeWithMetadata, Metadata}; use core::fmt::Debug; -use scale_decode::visitor::DecodeAsTypeResult; +use scale_decode::{visitor::DecodeAsTypeResult, DecodeAsType}; use std::borrow::Cow; use super::{Error, MetadataError}; -use crate::error::RootError; /// An error dispatching a transaction. #[derive(Debug, thiserror::Error, PartialEq, Eq)] @@ -127,13 +126,17 @@ pub enum TransactionalError { #[non_exhaustive] pub struct ModuleError { metadata: Metadata, - raw: RawModuleError, + /// Bytes representation: + /// - `bytes[0]`: pallet index + /// - `bytes[1]`: error index + /// - `bytes[2..]`: 3 bytes specific for the module error + bytes: [u8; 5], } impl PartialEq for ModuleError { fn eq(&self, other: &Self) -> bool { // A module error is the same if the raw underlying details are the same. - self.raw == other.raw + self.bytes == other.bytes } } @@ -154,27 +157,38 @@ impl std::fmt::Display for ModuleError { impl ModuleError { /// Return more details about this error. pub fn details(&self) -> Result { - let pallet = self.metadata.pallet_by_index_err(self.raw.pallet_index)?; + let pallet = self.metadata.pallet_by_index_err(self.pallet_index())?; let variant = pallet - .error_variant_by_index(self.raw.error[0]) - .ok_or_else(|| MetadataError::VariantIndexNotFound(self.raw.error[0]))?; + .error_variant_by_index(self.error_index()) + .ok_or_else(|| MetadataError::VariantIndexNotFound(self.error_index()))?; Ok(ModuleErrorDetails { pallet, variant }) } /// Return the underlying module error data that was decoded. - pub fn raw(&self) -> RawModuleError { - self.raw + pub fn bytes(&self) -> [u8; 5] { + self.bytes } - /// Attempts to decode the ModuleError into a value implementing the trait `RootError` - /// where the actual type of value is the generated top level enum `Error`. - pub fn as_root_error(&self) -> Result { - E::root_error( - &self.raw.error, - self.details()?.pallet.name(), - &self.metadata, - ) + /// Obtain the pallet index from the underlying byte data. + pub fn pallet_index(&self) -> u8 { + self.bytes[0] + } + + /// Obtain the error index from the underlying byte data. + pub fn error_index(&self) -> u8 { + self.bytes[1] + } + + /// Attempts to decode the ModuleError into the top outer Error enum. + pub fn as_root_error(&self) -> Result { + let decoded = E::decode_as_type( + &mut &self.bytes[..], + self.metadata.outer_enums().error_enum_ty(), + self.metadata.types(), + )?; + + Ok(decoded) } } @@ -186,25 +200,6 @@ pub struct ModuleErrorDetails<'a> { pub variant: &'a scale_info::Variant, } -/// The error details about a module error that has occurred. -/// -/// **Note**: Structure used to obtain the underlying bytes of a ModuleError. -#[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct RawModuleError { - /// Index of the pallet that the error came from. - pub pallet_index: u8, - /// Raw error bytes. - pub error: [u8; 4], -} - -impl RawModuleError { - /// Obtain the error index from the underlying byte data. - pub fn error_index(&self) -> u8 { - // Error index is utilized as the first byte from the error array. - self.error[0] - } -} - impl DispatchError { /// Attempt to decode a runtime [`DispatchError`]. #[doc(hidden)] @@ -290,21 +285,16 @@ impl DispatchError { // The old version is 2 bytes; a pallet and error index. // The new version is 5 bytes; a pallet and error index and then 3 extra bytes. - let raw = if module_bytes.len() == 2 { - RawModuleError { - pallet_index: module_bytes[0], - error: [module_bytes[1], 0, 0, 0], - } + let bytes = if module_bytes.len() == 2 { + [module_bytes[0], module_bytes[1], 0, 0, 0] } else if module_bytes.len() == 5 { - RawModuleError { - pallet_index: module_bytes[0], - error: [ - module_bytes[1], - module_bytes[2], - module_bytes[3], - module_bytes[4], - ], - } + [ + module_bytes[0], + module_bytes[1], + module_bytes[2], + module_bytes[3], + module_bytes[4], + ] } else { tracing::warn!("Can't decode error sp_runtime::DispatchError: bytes do not match known shapes"); // Return _all_ of the bytes; every "unknown" return should be consistent. @@ -312,7 +302,7 @@ impl DispatchError { }; // And return our outward-facing version: - DispatchError::Module(ModuleError { metadata, raw }) + DispatchError::Module(ModuleError { metadata, bytes }) } }; diff --git a/subxt/src/error/mod.rs b/subxt/src/error/mod.rs index c47e27babc..f6d5687cc9 100644 --- a/subxt/src/error/mod.rs +++ b/subxt/src/error/mod.rs @@ -13,7 +13,7 @@ pub use crate::client::LightClientError; // Re-export dispatch error types: pub use dispatch_error::{ - ArithmeticError, DispatchError, ModuleError, RawModuleError, TokenError, TransactionalError, + ArithmeticError, DispatchError, ModuleError, TokenError, TransactionalError, }; // Re-expose the errors we use from other crates here: @@ -225,15 +225,3 @@ pub enum MetadataError { #[error("The generated code is not compatible with the node")] IncompatibleCodegen, } - -/// This trait is implemented on the statically generated root ModuleError type -#[doc(hidden)] -pub trait RootError: Sized { - /// Given details of the pallet error we want to decode - fn root_error( - // typically a [u8; 4] encodes the error of a pallet - pallet_bytes: &[u8], - pallet_name: &str, - metadata: &Metadata, - ) -> Result; -} diff --git a/subxt/src/events/events_type.rs b/subxt/src/events/events_type.rs index 01bb5b8d06..784dd533be 100644 --- a/subxt/src/events/events_type.rs +++ b/subxt/src/events/events_type.rs @@ -14,6 +14,7 @@ use crate::{ }; use codec::{Compact, Decode}; use derivative::Derivative; +use scale_decode::DecodeAsType; use std::sync::Arc; /// A collection of events obtained from a block, bundled with the necessary @@ -386,20 +387,16 @@ impl EventDetails { /// Attempt to decode these [`EventDetails`] into a root event type (which includes /// the pallet and event enum variants as well as the event fields). A compatible /// type for this is exposed via static codegen as a root level `Event` type. - pub fn as_root_event(&self) -> Result { - let ev_metadata = self.event_metadata(); - let pallet_bytes = &self.all_bytes[self.event_start_idx + 1..self.event_fields_end_idx]; - let pallet_event_ty = ev_metadata - .pallet - .event_ty_id() - .ok_or_else(|| MetadataError::EventTypeNotFoundInPallet(ev_metadata.pallet.index()))?; + pub fn as_root_event(&self) -> Result { + let bytes = &self.all_bytes[self.event_start_idx..self.event_fields_end_idx]; - E::root_event( - pallet_bytes, - self.pallet_name(), - pallet_event_ty, - &self.metadata, - ) + let decoded = E::decode_as_type( + &mut &bytes[..], + self.metadata.outer_enums().event_enum_ty(), + self.metadata.types(), + )?; + + Ok(decoded) } /// Return the topics associated with this event. @@ -414,32 +411,17 @@ pub struct EventMetadataDetails<'a> { pub variant: &'a scale_info::Variant, } -/// This trait is implemented on the statically generated root event type, so that we're able -/// to decode it properly via a pallet event that impls `DecodeAsMetadata`. This is necessary -/// becasue the "root event" type is generated using pallet info but doesn't actually exist in the -/// metadata types, so we have no easy way to decode things into it via type information and need a -/// little help via codegen. -#[doc(hidden)] -pub trait RootEvent: Sized { - /// Given details of the pallet event we want to decode, and the name of the pallet, try to hand - /// back a "root event". - fn root_event( - pallet_bytes: &[u8], - pallet_name: &str, - pallet_event_ty: u32, - metadata: &Metadata, - ) -> Result; -} - /// Event related test utilities used outside this module. #[cfg(test)] pub(crate) mod test_utils { use super::*; - use crate::metadata::DecodeWithMetadata; use crate::{Config, SubstrateConfig}; use codec::Encode; use frame_metadata::{ - v15::{ExtrinsicMetadata, PalletEventMetadata, PalletMetadata, RuntimeMetadataV15}, + v15::{ + CustomMetadata, ExtrinsicMetadata, OuterEnums, PalletEventMetadata, PalletMetadata, + RuntimeMetadataV15, + }, RuntimeMetadataPrefixed, }; use scale_info::{meta_type, TypeInfo}; @@ -460,25 +442,6 @@ pub(crate) mod test_utils { Test(Ev), } - // We need this in order to be able to decode into a root event type: - impl RootEvent for AllEvents { - fn root_event( - mut bytes: &[u8], - pallet_name: &str, - pallet_event_ty: u32, - metadata: &Metadata, - ) -> Result { - if pallet_name == "Test" { - return Ok(AllEvents::Test(Ev::decode_with_metadata( - &mut bytes, - pallet_event_ty, - metadata, - )?)); - } - panic!("Asked for pallet name '{pallet_name}', which isn't in our test AllEvents type") - } - } - /// This encodes to the same format an event is expected to encode to /// in node System.Events storage. #[derive(Encode)] @@ -546,12 +509,28 @@ pub(crate) mod test_utils { }]; let extrinsic = ExtrinsicMetadata { - ty: meta_type::>(), version: 0, signed_extensions: vec![], + address_ty: meta_type::<()>(), + call_ty: meta_type::(), + signature_ty: meta_type::<()>(), + extra_ty: meta_type::<()>(), }; - let meta = RuntimeMetadataV15::new(pallets, extrinsic, meta_type::<()>(), vec![]); + let meta = RuntimeMetadataV15::new( + pallets, + extrinsic, + meta_type::<()>(), + vec![], + OuterEnums { + call_enum_ty: meta_type::<()>(), + event_enum_ty: meta_type::>(), + error_enum_ty: meta_type::<()>(), + }, + CustomMetadata { + map: Default::default(), + }, + ); let runtime_metadata: RuntimeMetadataPrefixed = meta.into(); Metadata::new(runtime_metadata.try_into().unwrap()) diff --git a/subxt/src/events/mod.rs b/subxt/src/events/mod.rs index 52cb6436c0..85ced23be9 100644 --- a/subxt/src/events/mod.rs +++ b/subxt/src/events/mod.rs @@ -11,12 +11,7 @@ mod events_type; use codec::{Decode, Encode}; pub use events_client::EventsClient; -pub use events_type::{ - EventDetails, - Events, - // Used in codegen but hidden from docs: - RootEvent, -}; +pub use events_type::{EventDetails, Events}; use scale_decode::DecodeAsFields; /// Trait to uniquely identify the events's identity from the runtime metadata. diff --git a/subxt/src/rpc/rpc.rs b/subxt/src/rpc/rpc.rs index 37dafb5f06..cf966b59a0 100644 --- a/subxt/src/rpc/rpc.rs +++ b/subxt/src/rpc/rpc.rs @@ -365,6 +365,15 @@ impl Rpc { Ok(res) } + /// Provide a list of the supported metadata versions of the node. + pub async fn metadata_versions(&self) -> Result, Error> { + let versions = self + .state_call("Metadata_metadata_versions", None, None) + .await?; + + Ok(versions) + } + /// Execute runtime API call and return the specified runtime metadata version. pub async fn metadata_at_version(&self, version: u32) -> Result { let param = version.encode(); diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index bde0b56635..b306c71f78 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -54,7 +54,6 @@ pub mod api { "Paras", "Initializer", "Dmp", - "Ump", "Hrmp", "ParaSessionInfo", "ParasDisputes", @@ -64,6 +63,7 @@ pub mod api { "Auctions", "Crowdloan", "XcmPallet", + "MessageQueue", ]; pub static RUNTIME_APIS: [&str; 17usize] = [ "Core", @@ -86,1252 +86,12 @@ pub mod api { ]; #[doc = r" The error type returned when there is a runtime issue."] pub type DispatchError = runtime_types::sp_runtime::DispatchError; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Event { - #[codec(index = 0)] - System(system::Event), - #[codec(index = 1)] - Scheduler(scheduler::Event), - #[codec(index = 10)] - Preimage(preimage::Event), - #[codec(index = 4)] - Indices(indices::Event), - #[codec(index = 5)] - Balances(balances::Event), - #[codec(index = 32)] - TransactionPayment(transaction_payment::Event), - #[codec(index = 7)] - Staking(staking::Event), - #[codec(index = 8)] - Offences(offences::Event), - #[codec(index = 9)] - Session(session::Event), - #[codec(index = 11)] - Grandpa(grandpa::Event), - #[codec(index = 12)] - ImOnline(im_online::Event), - #[codec(index = 14)] - Democracy(democracy::Event), - #[codec(index = 15)] - Council(council::Event), - #[codec(index = 16)] - TechnicalCommittee(technical_committee::Event), - #[codec(index = 17)] - PhragmenElection(phragmen_election::Event), - #[codec(index = 18)] - TechnicalMembership(technical_membership::Event), - #[codec(index = 19)] - Treasury(treasury::Event), - #[codec(index = 20)] - ConvictionVoting(conviction_voting::Event), - #[codec(index = 21)] - Referenda(referenda::Event), - #[codec(index = 23)] - Whitelist(whitelist::Event), - #[codec(index = 24)] - Claims(claims::Event), - #[codec(index = 25)] - Vesting(vesting::Event), - #[codec(index = 26)] - Utility(utility::Event), - #[codec(index = 28)] - Identity(identity::Event), - #[codec(index = 29)] - Proxy(proxy::Event), - #[codec(index = 30)] - Multisig(multisig::Event), - #[codec(index = 34)] - Bounties(bounties::Event), - #[codec(index = 38)] - ChildBounties(child_bounties::Event), - #[codec(index = 35)] - Tips(tips::Event), - #[codec(index = 36)] - ElectionProviderMultiPhase(election_provider_multi_phase::Event), - #[codec(index = 37)] - VoterList(voter_list::Event), - #[codec(index = 39)] - NominationPools(nomination_pools::Event), - #[codec(index = 40)] - FastUnstake(fast_unstake::Event), - #[codec(index = 53)] - ParaInclusion(para_inclusion::Event), - #[codec(index = 56)] - Paras(paras::Event), - #[codec(index = 59)] - Ump(ump::Event), - #[codec(index = 60)] - Hrmp(hrmp::Event), - #[codec(index = 62)] - ParasDisputes(paras_disputes::Event), - #[codec(index = 70)] - Registrar(registrar::Event), - #[codec(index = 71)] - Slots(slots::Event), - #[codec(index = 72)] - Auctions(auctions::Event), - #[codec(index = 73)] - Crowdloan(crowdloan::Event), - #[codec(index = 99)] - XcmPallet(xcm_pallet::Event), - } - impl ::subxt::events::RootEvent for Event { - fn root_event( - pallet_bytes: &[u8], - pallet_name: &str, - pallet_ty: u32, - metadata: &::subxt::Metadata, - ) -> Result { - use subxt::metadata::DecodeWithMetadata; - if pallet_name == "System" { - return Ok(Event::System(system::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Scheduler" { - return Ok(Event::Scheduler(scheduler::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Preimage" { - return Ok(Event::Preimage(preimage::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Indices" { - return Ok(Event::Indices(indices::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Balances" { - return Ok(Event::Balances(balances::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "TransactionPayment" { - return Ok(Event::TransactionPayment( - transaction_payment::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Staking" { - return Ok(Event::Staking(staking::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Offences" { - return Ok(Event::Offences(offences::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Session" { - return Ok(Event::Session(session::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Grandpa" { - return Ok(Event::Grandpa(grandpa::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ImOnline" { - return Ok(Event::ImOnline(im_online::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Democracy" { - return Ok(Event::Democracy(democracy::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Council" { - return Ok(Event::Council(council::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "TechnicalCommittee" { - return Ok(Event::TechnicalCommittee( - technical_committee::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "PhragmenElection" { - return Ok(Event::PhragmenElection( - phragmen_election::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "TechnicalMembership" { - return Ok(Event::TechnicalMembership( - technical_membership::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Treasury" { - return Ok(Event::Treasury(treasury::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ConvictionVoting" { - return Ok(Event::ConvictionVoting( - conviction_voting::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Referenda" { - return Ok(Event::Referenda(referenda::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Whitelist" { - return Ok(Event::Whitelist(whitelist::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Claims" { - return Ok(Event::Claims(claims::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Vesting" { - return Ok(Event::Vesting(vesting::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Utility" { - return Ok(Event::Utility(utility::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Identity" { - return Ok(Event::Identity(identity::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Proxy" { - return Ok(Event::Proxy(proxy::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Multisig" { - return Ok(Event::Multisig(multisig::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Bounties" { - return Ok(Event::Bounties(bounties::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ChildBounties" { - return Ok(Event::ChildBounties( - child_bounties::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Tips" { - return Ok(Event::Tips(tips::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ElectionProviderMultiPhase" { - return Ok(Event::ElectionProviderMultiPhase( - election_provider_multi_phase::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "VoterList" { - return Ok(Event::VoterList(voter_list::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "NominationPools" { - return Ok(Event::NominationPools( - nomination_pools::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "FastUnstake" { - return Ok(Event::FastUnstake( - fast_unstake::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "ParaInclusion" { - return Ok(Event::ParaInclusion( - para_inclusion::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Paras" { - return Ok(Event::Paras(paras::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Ump" { - return Ok(Event::Ump(ump::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Hrmp" { - return Ok(Event::Hrmp(hrmp::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ParasDisputes" { - return Ok(Event::ParasDisputes( - paras_disputes::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Registrar" { - return Ok(Event::Registrar(registrar::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Slots" { - return Ok(Event::Slots(slots::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Auctions" { - return Ok(Event::Auctions(auctions::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Crowdloan" { - return Ok(Event::Crowdloan(crowdloan::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "XcmPallet" { - return Ok(Event::XcmPallet(xcm_pallet::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - Err(::subxt::ext::scale_decode::Error::custom(format!( - "Pallet name '{}' not found in root Event enum", - pallet_name - )) - .into()) - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Call { - #[codec(index = 0)] - System(system::Call), - #[codec(index = 1)] - Scheduler(scheduler::Call), - #[codec(index = 10)] - Preimage(preimage::Call), - #[codec(index = 2)] - Babe(babe::Call), - #[codec(index = 3)] - Timestamp(timestamp::Call), - #[codec(index = 4)] - Indices(indices::Call), - #[codec(index = 5)] - Balances(balances::Call), - #[codec(index = 7)] - Staking(staking::Call), - #[codec(index = 9)] - Session(session::Call), - #[codec(index = 11)] - Grandpa(grandpa::Call), - #[codec(index = 12)] - ImOnline(im_online::Call), - #[codec(index = 14)] - Democracy(democracy::Call), - #[codec(index = 15)] - Council(council::Call), - #[codec(index = 16)] - TechnicalCommittee(technical_committee::Call), - #[codec(index = 17)] - PhragmenElection(phragmen_election::Call), - #[codec(index = 18)] - TechnicalMembership(technical_membership::Call), - #[codec(index = 19)] - Treasury(treasury::Call), - #[codec(index = 20)] - ConvictionVoting(conviction_voting::Call), - #[codec(index = 21)] - Referenda(referenda::Call), - #[codec(index = 23)] - Whitelist(whitelist::Call), - #[codec(index = 24)] - Claims(claims::Call), - #[codec(index = 25)] - Vesting(vesting::Call), - #[codec(index = 26)] - Utility(utility::Call), - #[codec(index = 28)] - Identity(identity::Call), - #[codec(index = 29)] - Proxy(proxy::Call), - #[codec(index = 30)] - Multisig(multisig::Call), - #[codec(index = 34)] - Bounties(bounties::Call), - #[codec(index = 38)] - ChildBounties(child_bounties::Call), - #[codec(index = 35)] - Tips(tips::Call), - #[codec(index = 36)] - ElectionProviderMultiPhase(election_provider_multi_phase::Call), - #[codec(index = 37)] - VoterList(voter_list::Call), - #[codec(index = 39)] - NominationPools(nomination_pools::Call), - #[codec(index = 40)] - FastUnstake(fast_unstake::Call), - #[codec(index = 51)] - Configuration(configuration::Call), - #[codec(index = 52)] - ParasShared(paras_shared::Call), - #[codec(index = 53)] - ParaInclusion(para_inclusion::Call), - #[codec(index = 54)] - ParaInherent(para_inherent::Call), - #[codec(index = 56)] - Paras(paras::Call), - #[codec(index = 57)] - Initializer(initializer::Call), - #[codec(index = 59)] - Ump(ump::Call), - #[codec(index = 60)] - Hrmp(hrmp::Call), - #[codec(index = 62)] - ParasDisputes(paras_disputes::Call), - #[codec(index = 63)] - ParasSlashing(paras_slashing::Call), - #[codec(index = 70)] - Registrar(registrar::Call), - #[codec(index = 71)] - Slots(slots::Call), - #[codec(index = 72)] - Auctions(auctions::Call), - #[codec(index = 73)] - Crowdloan(crowdloan::Call), - #[codec(index = 99)] - XcmPallet(xcm_pallet::Call), - } - impl ::subxt::blocks::RootExtrinsic for Call { - fn root_extrinsic( - pallet_bytes: &[u8], - pallet_name: &str, - pallet_ty: u32, - metadata: &::subxt::Metadata, - ) -> Result { - use subxt::metadata::DecodeWithMetadata; - if pallet_name == "System" { - return Ok(Call::System(system::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Scheduler" { - return Ok(Call::Scheduler(scheduler::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Preimage" { - return Ok(Call::Preimage(preimage::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Babe" { - return Ok(Call::Babe(babe::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Timestamp" { - return Ok(Call::Timestamp(timestamp::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Indices" { - return Ok(Call::Indices(indices::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Balances" { - return Ok(Call::Balances(balances::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Staking" { - return Ok(Call::Staking(staking::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Session" { - return Ok(Call::Session(session::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Grandpa" { - return Ok(Call::Grandpa(grandpa::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ImOnline" { - return Ok(Call::ImOnline(im_online::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Democracy" { - return Ok(Call::Democracy(democracy::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Council" { - return Ok(Call::Council(council::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "TechnicalCommittee" { - return Ok(Call::TechnicalCommittee( - technical_committee::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "PhragmenElection" { - return Ok(Call::PhragmenElection( - phragmen_election::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "TechnicalMembership" { - return Ok(Call::TechnicalMembership( - technical_membership::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Treasury" { - return Ok(Call::Treasury(treasury::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ConvictionVoting" { - return Ok(Call::ConvictionVoting( - conviction_voting::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Referenda" { - return Ok(Call::Referenda(referenda::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Whitelist" { - return Ok(Call::Whitelist(whitelist::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Claims" { - return Ok(Call::Claims(claims::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Vesting" { - return Ok(Call::Vesting(vesting::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Utility" { - return Ok(Call::Utility(utility::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Identity" { - return Ok(Call::Identity(identity::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Proxy" { - return Ok(Call::Proxy(proxy::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Multisig" { - return Ok(Call::Multisig(multisig::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Bounties" { - return Ok(Call::Bounties(bounties::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ChildBounties" { - return Ok(Call::ChildBounties( - child_bounties::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Tips" { - return Ok(Call::Tips(tips::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ElectionProviderMultiPhase" { - return Ok(Call::ElectionProviderMultiPhase( - election_provider_multi_phase::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "VoterList" { - return Ok(Call::VoterList(voter_list::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "NominationPools" { - return Ok(Call::NominationPools( - nomination_pools::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "FastUnstake" { - return Ok(Call::FastUnstake(fast_unstake::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Configuration" { - return Ok(Call::Configuration( - configuration::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "ParasShared" { - return Ok(Call::ParasShared(paras_shared::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ParaInclusion" { - return Ok(Call::ParaInclusion( - para_inclusion::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "ParaInherent" { - return Ok(Call::ParaInherent( - para_inherent::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Paras" { - return Ok(Call::Paras(paras::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Initializer" { - return Ok(Call::Initializer(initializer::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Ump" { - return Ok(Call::Ump(ump::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Hrmp" { - return Ok(Call::Hrmp(hrmp::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "ParasDisputes" { - return Ok(Call::ParasDisputes( - paras_disputes::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "ParasSlashing" { - return Ok(Call::ParasSlashing( - paras_slashing::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } - if pallet_name == "Registrar" { - return Ok(Call::Registrar(registrar::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Slots" { - return Ok(Call::Slots(slots::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Auctions" { - return Ok(Call::Auctions(auctions::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "Crowdloan" { - return Ok(Call::Crowdloan(crowdloan::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - if pallet_name == "XcmPallet" { - return Ok(Call::XcmPallet(xcm_pallet::Call::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?)); - } - Err(::subxt::ext::scale_decode::Error::custom(format!( - "Pallet name '{}' not found in root Call enum", - pallet_name - )) - .into()) - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Error { - #[codec(index = 0)] - System(system::Error), - #[codec(index = 1)] - Scheduler(scheduler::Error), - #[codec(index = 10)] - Preimage(preimage::Error), - #[codec(index = 2)] - Babe(babe::Error), - #[codec(index = 4)] - Indices(indices::Error), - #[codec(index = 5)] - Balances(balances::Error), - #[codec(index = 7)] - Staking(staking::Error), - #[codec(index = 9)] - Session(session::Error), - #[codec(index = 11)] - Grandpa(grandpa::Error), - #[codec(index = 12)] - ImOnline(im_online::Error), - #[codec(index = 14)] - Democracy(democracy::Error), - #[codec(index = 15)] - Council(council::Error), - #[codec(index = 16)] - TechnicalCommittee(technical_committee::Error), - #[codec(index = 17)] - PhragmenElection(phragmen_election::Error), - #[codec(index = 18)] - TechnicalMembership(technical_membership::Error), - #[codec(index = 19)] - Treasury(treasury::Error), - #[codec(index = 20)] - ConvictionVoting(conviction_voting::Error), - #[codec(index = 21)] - Referenda(referenda::Error), - #[codec(index = 23)] - Whitelist(whitelist::Error), - #[codec(index = 24)] - Claims(claims::Error), - #[codec(index = 25)] - Vesting(vesting::Error), - #[codec(index = 26)] - Utility(utility::Error), - #[codec(index = 28)] - Identity(identity::Error), - #[codec(index = 29)] - Proxy(proxy::Error), - #[codec(index = 30)] - Multisig(multisig::Error), - #[codec(index = 34)] - Bounties(bounties::Error), - #[codec(index = 38)] - ChildBounties(child_bounties::Error), - #[codec(index = 35)] - Tips(tips::Error), - #[codec(index = 36)] - ElectionProviderMultiPhase(election_provider_multi_phase::Error), - #[codec(index = 37)] - VoterList(voter_list::Error), - #[codec(index = 39)] - NominationPools(nomination_pools::Error), - #[codec(index = 40)] - FastUnstake(fast_unstake::Error), - #[codec(index = 51)] - Configuration(configuration::Error), - #[codec(index = 53)] - ParaInclusion(para_inclusion::Error), - #[codec(index = 54)] - ParaInherent(para_inherent::Error), - #[codec(index = 56)] - Paras(paras::Error), - #[codec(index = 59)] - Ump(ump::Error), - #[codec(index = 60)] - Hrmp(hrmp::Error), - #[codec(index = 62)] - ParasDisputes(paras_disputes::Error), - #[codec(index = 63)] - ParasSlashing(paras_slashing::Error), - #[codec(index = 70)] - Registrar(registrar::Error), - #[codec(index = 71)] - Slots(slots::Error), - #[codec(index = 72)] - Auctions(auctions::Error), - #[codec(index = 73)] - Crowdloan(crowdloan::Error), - #[codec(index = 99)] - XcmPallet(xcm_pallet::Error), - } - impl ::subxt::error::RootError for Error { - fn root_error( - pallet_bytes: &[u8], - pallet_name: &str, - metadata: &::subxt::Metadata, - ) -> Result { - use subxt::metadata::DecodeWithMetadata; - let cursor = &mut &pallet_bytes[..]; - if pallet_name == "System" { - let variant_error = system::Error::decode_with_metadata(cursor, 491u32, metadata)?; - return Ok(Error::System(variant_error)); - } - if pallet_name == "Scheduler" { - let variant_error = - scheduler::Error::decode_with_metadata(cursor, 496u32, metadata)?; - return Ok(Error::Scheduler(variant_error)); - } - if pallet_name == "Preimage" { - let variant_error = - preimage::Error::decode_with_metadata(cursor, 501u32, metadata)?; - return Ok(Error::Preimage(variant_error)); - } - if pallet_name == "Babe" { - let variant_error = babe::Error::decode_with_metadata(cursor, 517u32, metadata)?; - return Ok(Error::Babe(variant_error)); - } - if pallet_name == "Indices" { - let variant_error = indices::Error::decode_with_metadata(cursor, 519u32, metadata)?; - return Ok(Error::Indices(variant_error)); - } - if pallet_name == "Balances" { - let variant_error = - balances::Error::decode_with_metadata(cursor, 530u32, metadata)?; - return Ok(Error::Balances(variant_error)); - } - if pallet_name == "Staking" { - let variant_error = staking::Error::decode_with_metadata(cursor, 554u32, metadata)?; - return Ok(Error::Staking(variant_error)); - } - if pallet_name == "Session" { - let variant_error = session::Error::decode_with_metadata(cursor, 561u32, metadata)?; - return Ok(Error::Session(variant_error)); - } - if pallet_name == "Grandpa" { - let variant_error = grandpa::Error::decode_with_metadata(cursor, 565u32, metadata)?; - return Ok(Error::Grandpa(variant_error)); - } - if pallet_name == "ImOnline" { - let variant_error = - im_online::Error::decode_with_metadata(cursor, 573u32, metadata)?; - return Ok(Error::ImOnline(variant_error)); - } - if pallet_name == "Democracy" { - let variant_error = - democracy::Error::decode_with_metadata(cursor, 590u32, metadata)?; - return Ok(Error::Democracy(variant_error)); - } - if pallet_name == "Council" { - let variant_error = council::Error::decode_with_metadata(cursor, 593u32, metadata)?; - return Ok(Error::Council(variant_error)); - } - if pallet_name == "TechnicalCommittee" { - let variant_error = - technical_committee::Error::decode_with_metadata(cursor, 595u32, metadata)?; - return Ok(Error::TechnicalCommittee(variant_error)); - } - if pallet_name == "PhragmenElection" { - let variant_error = - phragmen_election::Error::decode_with_metadata(cursor, 599u32, metadata)?; - return Ok(Error::PhragmenElection(variant_error)); - } - if pallet_name == "TechnicalMembership" { - let variant_error = - technical_membership::Error::decode_with_metadata(cursor, 601u32, metadata)?; - return Ok(Error::TechnicalMembership(variant_error)); - } - if pallet_name == "Treasury" { - let variant_error = - treasury::Error::decode_with_metadata(cursor, 607u32, metadata)?; - return Ok(Error::Treasury(variant_error)); - } - if pallet_name == "ConvictionVoting" { - let variant_error = - conviction_voting::Error::decode_with_metadata(cursor, 620u32, metadata)?; - return Ok(Error::ConvictionVoting(variant_error)); - } - if pallet_name == "Referenda" { - let variant_error = - referenda::Error::decode_with_metadata(cursor, 638u32, metadata)?; - return Ok(Error::Referenda(variant_error)); - } - if pallet_name == "Whitelist" { - let variant_error = - whitelist::Error::decode_with_metadata(cursor, 639u32, metadata)?; - return Ok(Error::Whitelist(variant_error)); - } - if pallet_name == "Claims" { - let variant_error = claims::Error::decode_with_metadata(cursor, 640u32, metadata)?; - return Ok(Error::Claims(variant_error)); - } - if pallet_name == "Vesting" { - let variant_error = vesting::Error::decode_with_metadata(cursor, 644u32, metadata)?; - return Ok(Error::Vesting(variant_error)); - } - if pallet_name == "Utility" { - let variant_error = utility::Error::decode_with_metadata(cursor, 645u32, metadata)?; - return Ok(Error::Utility(variant_error)); - } - if pallet_name == "Identity" { - let variant_error = - identity::Error::decode_with_metadata(cursor, 656u32, metadata)?; - return Ok(Error::Identity(variant_error)); - } - if pallet_name == "Proxy" { - let variant_error = proxy::Error::decode_with_metadata(cursor, 665u32, metadata)?; - return Ok(Error::Proxy(variant_error)); - } - if pallet_name == "Multisig" { - let variant_error = - multisig::Error::decode_with_metadata(cursor, 669u32, metadata)?; - return Ok(Error::Multisig(variant_error)); - } - if pallet_name == "Bounties" { - let variant_error = - bounties::Error::decode_with_metadata(cursor, 673u32, metadata)?; - return Ok(Error::Bounties(variant_error)); - } - if pallet_name == "ChildBounties" { - let variant_error = - child_bounties::Error::decode_with_metadata(cursor, 676u32, metadata)?; - return Ok(Error::ChildBounties(variant_error)); - } - if pallet_name == "Tips" { - let variant_error = tips::Error::decode_with_metadata(cursor, 678u32, metadata)?; - return Ok(Error::Tips(variant_error)); - } - if pallet_name == "ElectionProviderMultiPhase" { - let variant_error = election_provider_multi_phase::Error::decode_with_metadata( - cursor, 688u32, metadata, - )?; - return Ok(Error::ElectionProviderMultiPhase(variant_error)); - } - if pallet_name == "VoterList" { - let variant_error = - voter_list::Error::decode_with_metadata(cursor, 692u32, metadata)?; - return Ok(Error::VoterList(variant_error)); - } - if pallet_name == "NominationPools" { - let variant_error = - nomination_pools::Error::decode_with_metadata(cursor, 710u32, metadata)?; - return Ok(Error::NominationPools(variant_error)); - } - if pallet_name == "FastUnstake" { - let variant_error = - fast_unstake::Error::decode_with_metadata(cursor, 715u32, metadata)?; - return Ok(Error::FastUnstake(variant_error)); - } - if pallet_name == "Configuration" { - let variant_error = - configuration::Error::decode_with_metadata(cursor, 719u32, metadata)?; - return Ok(Error::Configuration(variant_error)); - } - if pallet_name == "ParaInclusion" { - let variant_error = - para_inclusion::Error::decode_with_metadata(cursor, 724u32, metadata)?; - return Ok(Error::ParaInclusion(variant_error)); - } - if pallet_name == "ParaInherent" { - let variant_error = - para_inherent::Error::decode_with_metadata(cursor, 730u32, metadata)?; - return Ok(Error::ParaInherent(variant_error)); - } - if pallet_name == "Paras" { - let variant_error = paras::Error::decode_with_metadata(cursor, 757u32, metadata)?; - return Ok(Error::Paras(variant_error)); - } - if pallet_name == "Ump" { - let variant_error = ump::Error::decode_with_metadata(cursor, 763u32, metadata)?; - return Ok(Error::Ump(variant_error)); - } - if pallet_name == "Hrmp" { - let variant_error = hrmp::Error::decode_with_metadata(cursor, 771u32, metadata)?; - return Ok(Error::Hrmp(variant_error)); - } - if pallet_name == "ParasDisputes" { - let variant_error = - paras_disputes::Error::decode_with_metadata(cursor, 780u32, metadata)?; - return Ok(Error::ParasDisputes(variant_error)); - } - if pallet_name == "ParasSlashing" { - let variant_error = - paras_slashing::Error::decode_with_metadata(cursor, 785u32, metadata)?; - return Ok(Error::ParasSlashing(variant_error)); - } - if pallet_name == "Registrar" { - let variant_error = - registrar::Error::decode_with_metadata(cursor, 787u32, metadata)?; - return Ok(Error::Registrar(variant_error)); - } - if pallet_name == "Slots" { - let variant_error = slots::Error::decode_with_metadata(cursor, 789u32, metadata)?; - return Ok(Error::Slots(variant_error)); - } - if pallet_name == "Auctions" { - let variant_error = - auctions::Error::decode_with_metadata(cursor, 794u32, metadata)?; - return Ok(Error::Auctions(variant_error)); - } - if pallet_name == "Crowdloan" { - let variant_error = - crowdloan::Error::decode_with_metadata(cursor, 797u32, metadata)?; - return Ok(Error::Crowdloan(variant_error)); - } - if pallet_name == "XcmPallet" { - let variant_error = - xcm_pallet::Error::decode_with_metadata(cursor, 816u32, metadata)?; - return Ok(Error::XcmPallet(variant_error)); - } - Err(::subxt::ext::scale_decode::Error::custom(format!( - "Pallet name '{}' not found in root Error enum", - pallet_name - )) - .into()) - } - } + #[doc = r" The outer event enum."] + pub type Event = runtime_types::polkadot_runtime::RuntimeEvent; + #[doc = r" The outer extrinsic enum."] + pub type Call = runtime_types::polkadot_runtime::RuntimeCall; + #[doc = r" The outer error enum representing the DispatchError's Module variant."] + pub type Error = runtime_types::polkadot_runtime::RuntimeError; pub fn constants() -> ConstantsApi { ConstantsApi } @@ -1647,10 +407,10 @@ pub mod api { "apply_extrinsic", types::ApplyExtrinsic { extrinsic }, [ - 103u8, 239u8, 152u8, 72u8, 246u8, 79u8, 116u8, 229u8, 172u8, 86u8, - 78u8, 239u8, 153u8, 135u8, 150u8, 250u8, 37u8, 149u8, 129u8, 188u8, - 20u8, 237u8, 108u8, 146u8, 164u8, 117u8, 199u8, 147u8, 199u8, 93u8, - 195u8, 101u8, + 194u8, 184u8, 67u8, 94u8, 64u8, 72u8, 93u8, 72u8, 96u8, 149u8, 129u8, + 222u8, 62u8, 97u8, 38u8, 93u8, 138u8, 205u8, 203u8, 209u8, 100u8, + 130u8, 254u8, 59u8, 207u8, 44u8, 235u8, 194u8, 91u8, 119u8, 138u8, + 196u8, ], ) } @@ -2025,7 +785,7 @@ pub mod api { &self, ) -> ::subxt::runtime_api::Payload< types::Validators, - ::std::vec::Vec, + ::std::vec::Vec, > { ::subxt::runtime_api::Payload::new_static( "ParachainHost", @@ -2048,9 +808,9 @@ pub mod api { types::ValidatorGroups, ( ::std::vec::Vec< - ::std::vec::Vec, + ::std::vec::Vec, >, - runtime_types::polkadot_primitives::v4::GroupRotationInfo< + runtime_types::polkadot_primitives::v5::GroupRotationInfo< ::core::primitive::u32, >, ), @@ -2073,7 +833,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::AvailabilityCores, ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::CoreState< + runtime_types::polkadot_primitives::v5::CoreState< ::subxt::utils::H256, ::core::primitive::u32, >, @@ -2098,11 +858,11 @@ pub mod api { pub fn persisted_validation_data( &self, para_id: runtime_types::polkadot_parachain::primitives::Id, - assumption: runtime_types::polkadot_primitives::v4::OccupiedCoreAssumption, + assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, ) -> ::subxt::runtime_api::Payload< types::PersistedValidationData, ::core::option::Option< - runtime_types::polkadot_primitives::v4::PersistedValidationData< + runtime_types::polkadot_primitives::v5::PersistedValidationData< ::subxt::utils::H256, ::core::primitive::u32, >, @@ -2132,7 +892,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::AssumedValidationData, ::core::option::Option<( - runtime_types::polkadot_primitives::v4::PersistedValidationData< + runtime_types::polkadot_primitives::v5::PersistedValidationData< ::subxt::utils::H256, ::core::primitive::u32, >, @@ -2157,7 +917,7 @@ pub mod api { pub fn check_validation_outputs( &self, para_id: runtime_types::polkadot_parachain::primitives::Id, - outputs: runtime_types::polkadot_primitives::v4::CandidateCommitments< + outputs: runtime_types::polkadot_primitives::v5::CandidateCommitments< ::core::primitive::u32, >, ) -> ::subxt::runtime_api::Payload< @@ -2202,7 +962,7 @@ pub mod api { pub fn validation_code( &self, para_id: runtime_types::polkadot_parachain::primitives::Id, - assumption: runtime_types::polkadot_primitives::v4::OccupiedCoreAssumption, + assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, ) -> ::subxt::runtime_api::Payload< types::ValidationCode, ::core::option::Option< @@ -2232,7 +992,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::CandidatePendingAvailability, ::core::option::Option< - runtime_types::polkadot_primitives::v4::CommittedCandidateReceipt< + runtime_types::polkadot_primitives::v5::CommittedCandidateReceipt< ::subxt::utils::H256, >, >, @@ -2254,7 +1014,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::CandidateEvents, ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::CandidateEvent< + runtime_types::polkadot_primitives::v5::CandidateEvent< ::subxt::utils::H256, >, >, @@ -2348,7 +1108,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::OnChainVotes, ::core::option::Option< - runtime_types::polkadot_primitives::v4::ScrapedOnChainVotes< + runtime_types::polkadot_primitives::v5::ScrapedOnChainVotes< ::subxt::utils::H256, >, >, @@ -2373,7 +1133,7 @@ pub mod api { index: ::core::primitive::u32, ) -> ::subxt::runtime_api::Payload< types::SessionInfo, - ::core::option::Option, + ::core::option::Option, > { ::subxt::runtime_api::Payload::new_static( "ParachainHost", @@ -2391,8 +1151,8 @@ pub mod api { #[doc = " NOTE: This function is only available since parachain host version 2."] pub fn submit_pvf_check_statement( &self, - stmt: runtime_types::polkadot_primitives::v4::PvfCheckStatement, - signature: runtime_types::polkadot_primitives::v4::validator_app::Signature, + stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, + signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, ) -> ::subxt::runtime_api::Payload { ::subxt::runtime_api::Payload::new_static( @@ -2434,7 +1194,7 @@ pub mod api { pub fn validation_code_hash( &self, para_id: runtime_types::polkadot_parachain::primitives::Id, - assumption: runtime_types::polkadot_primitives::v4::OccupiedCoreAssumption, + assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, ) -> ::subxt::runtime_api::Payload< types::ValidationCodeHash, ::core::option::Option< @@ -2464,7 +1224,7 @@ pub mod api { ::std::vec::Vec<( ::core::primitive::u32, runtime_types::polkadot_core_primitives::CandidateHash, - runtime_types::polkadot_primitives::v4::DisputeState< + runtime_types::polkadot_primitives::v5::DisputeState< ::core::primitive::u32, >, )>, @@ -2488,7 +1248,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::SessionExecutorParams, ::core::option::Option< - runtime_types::polkadot_primitives::v4::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, >, > { ::subxt::runtime_api::Payload::new_static( @@ -2503,6 +1263,78 @@ pub mod api { ], ) } + #[doc = " Returns a list of validators that lost a past session dispute and need to be slashed."] + #[doc = " NOTE: This function is only available since parachain host version 5."] + pub fn unapplied_slashes( + &self, + ) -> ::subxt::runtime_api::Payload< + types::UnappliedSlashes, + ::std::vec::Vec<( + ::core::primitive::u32, + runtime_types::polkadot_core_primitives::CandidateHash, + runtime_types::polkadot_primitives::v5::slashing::PendingSlashes, + )>, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "unapplied_slashes", + types::UnappliedSlashes {}, + [ + 133u8, 146u8, 7u8, 30u8, 251u8, 59u8, 90u8, 123u8, 77u8, 116u8, 105u8, + 109u8, 249u8, 226u8, 238u8, 95u8, 179u8, 251u8, 193u8, 200u8, 194u8, + 111u8, 21u8, 188u8, 19u8, 115u8, 119u8, 11u8, 172u8, 179u8, 142u8, + 159u8, + ], + ) + } + #[doc = " Returns a merkle proof of a validator session key."] + #[doc = " NOTE: This function is only available since parachain host version 5."] + pub fn key_ownership_proof( + &self, + validator_id: runtime_types::polkadot_primitives::v5::validator_app::Public, + ) -> ::subxt::runtime_api::Payload< + types::KeyOwnershipProof, + ::core::option::Option< + runtime_types::polkadot_primitives::v5::slashing::OpaqueKeyOwnershipProof, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "key_ownership_proof", + types::KeyOwnershipProof { validator_id }, + [ + 170u8, 101u8, 138u8, 1u8, 229u8, 13u8, 121u8, 167u8, 151u8, 112u8, + 197u8, 250u8, 189u8, 220u8, 67u8, 220u8, 42u8, 209u8, 173u8, 241u8, + 245u8, 167u8, 11u8, 3u8, 13u8, 223u8, 224u8, 12u8, 20u8, 210u8, 56u8, + 202u8, + ], + ) + } + #[doc = " Submit an unsigned extrinsic to slash validators who lost a dispute about"] + #[doc = " a candidate of a past session."] + #[doc = " NOTE: This function is only available since parachain host version 5."] + pub fn submit_report_dispute_lost( + &self, + dispute_proof: runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + key_ownership_proof : runtime_types :: polkadot_primitives :: v5 :: slashing :: OpaqueKeyOwnershipProof, + ) -> ::subxt::runtime_api::Payload< + types::SubmitReportDisputeLost, + ::core::option::Option<()>, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "submit_report_dispute_lost", + types::SubmitReportDisputeLost { + dispute_proof, + key_ownership_proof, + }, + [ + 108u8, 144u8, 248u8, 41u8, 84u8, 72u8, 122u8, 76u8, 193u8, 242u8, 6u8, + 18u8, 209u8, 6u8, 96u8, 131u8, 242u8, 252u8, 199u8, 222u8, 161u8, + 167u8, 52u8, 41u8, 252u8, 59u8, 26u8, 130u8, 48u8, 8u8, 68u8, 4u8, + ], + ) + } } pub mod types { use super::runtime_types; @@ -2551,7 +1383,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct PersistedValidationData { pub para_id: runtime_types::polkadot_parachain::primitives::Id, - pub assumption: runtime_types::polkadot_primitives::v4::OccupiedCoreAssumption, + pub assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -2579,7 +1411,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CheckValidationOutputs { pub para_id: runtime_types::polkadot_parachain::primitives::Id, - pub outputs: runtime_types::polkadot_primitives::v4::CandidateCommitments< + pub outputs: runtime_types::polkadot_primitives::v5::CandidateCommitments< ::core::primitive::u32, >, } @@ -2606,7 +1438,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ValidationCode { pub para_id: runtime_types::polkadot_parachain::primitives::Id, - pub assumption: runtime_types::polkadot_primitives::v4::OccupiedCoreAssumption, + pub assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -2706,8 +1538,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SubmitPvfCheckStatement { - pub stmt: runtime_types::polkadot_primitives::v4::PvfCheckStatement, - pub signature: runtime_types::polkadot_primitives::v4::validator_app::Signature, + pub stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, + pub signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -2732,7 +1564,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ValidationCodeHash { pub para_id: runtime_types::polkadot_parachain::primitives::Id, - pub assumption: runtime_types::polkadot_primitives::v4::OccupiedCoreAssumption, + pub assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -2758,6 +1590,46 @@ pub mod api { pub struct SessionExecutorParams { pub session_index: ::core::primitive::u32, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnappliedSlashes {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct KeyOwnershipProof { + pub validator_id: runtime_types::polkadot_primitives::v5::validator_app::Public, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubmitReportDisputeLost { + pub dispute_proof: + runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + pub key_ownership_proof: + runtime_types::polkadot_primitives::v5::slashing::OpaqueKeyOwnershipProof, + } } } pub mod beefy_api { @@ -3893,9 +2765,9 @@ pub mod api { "query_call_info", types::QueryCallInfo { call, len }, [ - 29u8, 82u8, 32u8, 251u8, 3u8, 82u8, 211u8, 160u8, 52u8, 215u8, 106u8, - 79u8, 177u8, 140u8, 42u8, 162u8, 112u8, 210u8, 88u8, 98u8, 197u8, 84u8, - 252u8, 67u8, 118u8, 163u8, 230u8, 207u8, 14u8, 119u8, 12u8, 15u8, + 202u8, 48u8, 37u8, 1u8, 188u8, 18u8, 83u8, 225u8, 140u8, 1u8, 106u8, + 66u8, 63u8, 99u8, 77u8, 121u8, 66u8, 35u8, 140u8, 165u8, 226u8, 52u8, + 116u8, 94u8, 203u8, 54u8, 61u8, 176u8, 230u8, 61u8, 153u8, 38u8, ], ) } @@ -3915,10 +2787,10 @@ pub mod api { "query_call_fee_details", types::QueryCallFeeDetails { call, len }, [ - 201u8, 59u8, 240u8, 67u8, 68u8, 119u8, 113u8, 28u8, 165u8, 247u8, - 174u8, 107u8, 143u8, 107u8, 97u8, 129u8, 145u8, 128u8, 211u8, 4u8, - 229u8, 154u8, 31u8, 108u8, 78u8, 9u8, 41u8, 153u8, 251u8, 115u8, 126u8, - 252u8, + 43u8, 223u8, 246u8, 145u8, 202u8, 27u8, 167u8, 160u8, 65u8, 144u8, + 236u8, 225u8, 125u8, 96u8, 135u8, 147u8, 188u8, 242u8, 81u8, 71u8, + 160u8, 228u8, 51u8, 204u8, 37u8, 118u8, 174u8, 6u8, 72u8, 149u8, 212u8, + 61u8, ], ) } @@ -4126,6 +2998,9 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::constants::ConstantsApi { crowdloan::constants::ConstantsApi } + pub fn message_queue(&self) -> message_queue::constants::ConstantsApi { + message_queue::constants::ConstantsApi + } } pub struct StorageApi; impl StorageApi { @@ -4260,9 +3135,6 @@ pub mod api { pub fn dmp(&self) -> dmp::storage::StorageApi { dmp::storage::StorageApi } - pub fn ump(&self) -> ump::storage::StorageApi { - ump::storage::StorageApi - } pub fn hrmp(&self) -> hrmp::storage::StorageApi { hrmp::storage::StorageApi } @@ -4290,6 +3162,9 @@ pub mod api { pub fn xcm_pallet(&self) -> xcm_pallet::storage::StorageApi { xcm_pallet::storage::StorageApi } + pub fn message_queue(&self) -> message_queue::storage::StorageApi { + message_queue::storage::StorageApi + } } pub struct TransactionApi; impl TransactionApi { @@ -4412,9 +3287,6 @@ pub mod api { pub fn initializer(&self) -> initializer::calls::TransactionApi { initializer::calls::TransactionApi } - pub fn ump(&self) -> ump::calls::TransactionApi { - ump::calls::TransactionApi - } pub fn hrmp(&self) -> hrmp::calls::TransactionApi { hrmp::calls::TransactionApi } @@ -4439,6 +3311,9 @@ pub mod api { pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { xcm_pallet::calls::TransactionApi } + pub fn message_queue(&self) -> message_queue::calls::TransactionApi { + message_queue::calls::TransactionApi + } } #[doc = r" check whether the metadata provided is aligned with this statically generated code."] pub fn is_codegen_valid_for(metadata: &::subxt::Metadata) -> bool { @@ -4449,9 +3324,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 48u8, 175u8, 255u8, 171u8, 180u8, 123u8, 181u8, 54u8, 125u8, 74u8, 109u8, 140u8, - 192u8, 208u8, 131u8, 194u8, 195u8, 232u8, 33u8, 229u8, 178u8, 181u8, 236u8, 230u8, - 37u8, 97u8, 134u8, 144u8, 187u8, 127u8, 47u8, 237u8, + 80u8, 125u8, 154u8, 186u8, 171u8, 231u8, 42u8, 230u8, 79u8, 19u8, 171u8, 33u8, + 197u8, 210u8, 229u8, 209u8, 209u8, 153u8, 119u8, 91u8, 12u8, 56u8, 208u8, 175u8, + 102u8, 70u8, 20u8, 182u8, 102u8, 109u8, 97u8, 108u8, ] } pub mod system { @@ -4459,7 +3334,7 @@ pub mod api { use super::runtime_types; #[doc = "Error for the System pallet"] pub type Error = runtime_types::frame_system::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::frame_system::pallet::Call; pub mod calls { use super::root_mod; @@ -4611,10 +3486,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Make some on-chain remark."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`"] + #[doc = "See [`Pallet::remark`]."] pub fn remark( &self, remark: ::std::vec::Vec<::core::primitive::u8>, @@ -4631,7 +3503,7 @@ pub mod api { ], ) } - #[doc = "Set the number of pages in the WebAssembly environment's heap."] + #[doc = "See [`Pallet::set_heap_pages`]."] pub fn set_heap_pages( &self, pages: ::core::primitive::u64, @@ -4648,10 +3520,7 @@ pub mod api { ], ) } - #[doc = "Set the new runtime code."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(C + S)` where `C` length of `code` and `S` complexity of `can_set_code`"] + #[doc = "See [`Pallet::set_code`]."] pub fn set_code( &self, code: ::std::vec::Vec<::core::primitive::u8>, @@ -4667,10 +3536,7 @@ pub mod api { ], ) } - #[doc = "Set the new runtime code without doing any checks of the given `code`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(C)` where `C` length of `code`"] + #[doc = "See [`Pallet::set_code_without_checks`]."] pub fn set_code_without_checks( &self, code: ::std::vec::Vec<::core::primitive::u8>, @@ -4687,7 +3553,7 @@ pub mod api { ], ) } - #[doc = "Set some items of storage."] + #[doc = "See [`Pallet::set_storage`]."] pub fn set_storage( &self, items: ::std::vec::Vec<( @@ -4706,7 +3572,7 @@ pub mod api { ], ) } - #[doc = "Kill some items from storage."] + #[doc = "See [`Pallet::kill_storage`]."] pub fn kill_storage( &self, keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, @@ -4723,10 +3589,7 @@ pub mod api { ], ) } - #[doc = "Kill all storage items with a key that starts with the given prefix."] - #[doc = ""] - #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] - #[doc = "the prefix we are removing to accurately calculate the weight of this function."] + #[doc = "See [`Pallet::kill_prefix`]."] pub fn kill_prefix( &self, prefix: ::std::vec::Vec<::core::primitive::u8>, @@ -4744,7 +3607,7 @@ pub mod api { ], ) } - #[doc = "Make some on-chain remark and emit event."] + #[doc = "See [`Pallet::remark_with_event`]."] pub fn remark_with_event( &self, remark: ::std::vec::Vec<::core::primitive::u8>, @@ -5180,10 +4043,9 @@ pub mod api { "Events", vec![], [ - 144u8, 114u8, 184u8, 254u8, 50u8, 194u8, 165u8, 20u8, 204u8, 189u8, - 147u8, 226u8, 53u8, 106u8, 27u8, 98u8, 252u8, 31u8, 77u8, 158u8, 211u8, - 36u8, 67u8, 241u8, 139u8, 173u8, 171u8, 71u8, 146u8, 10u8, 157u8, - 200u8, + 148u8, 20u8, 105u8, 64u8, 150u8, 198u8, 189u8, 131u8, 76u8, 21u8, + 216u8, 82u8, 49u8, 183u8, 86u8, 192u8, 110u8, 228u8, 1u8, 219u8, 222u8, + 216u8, 71u8, 86u8, 23u8, 199u8, 98u8, 73u8, 105u8, 52u8, 229u8, 9u8, ], ) } @@ -5463,9 +4325,9 @@ pub mod api { pub mod scheduler { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_scheduler::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_scheduler::pallet::Call; pub mod calls { use super::root_mod; @@ -5597,7 +4459,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Anonymously schedule a task."] + #[doc = "See [`Pallet::schedule`]."] pub fn schedule( &self, when: ::core::primitive::u32, @@ -5618,14 +4480,14 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 79u8, 205u8, 253u8, 246u8, 221u8, 94u8, 229u8, 6u8, 48u8, 3u8, 5u8, - 145u8, 225u8, 209u8, 208u8, 85u8, 151u8, 208u8, 235u8, 210u8, 131u8, - 195u8, 179u8, 14u8, 243u8, 47u8, 230u8, 128u8, 55u8, 226u8, 242u8, - 217u8, + 223u8, 106u8, 140u8, 197u8, 207u8, 197u8, 88u8, 231u8, 138u8, 226u8, + 212u8, 83u8, 231u8, 81u8, 145u8, 192u8, 16u8, 141u8, 58u8, 125u8, + 161u8, 216u8, 105u8, 181u8, 103u8, 165u8, 185u8, 184u8, 250u8, 113u8, + 81u8, 88u8, ], ) } - #[doc = "Cancel an anonymously scheduled task."] + #[doc = "See [`Pallet::cancel`]."] pub fn cancel( &self, when: ::core::primitive::u32, @@ -5643,7 +4505,7 @@ pub mod api { ], ) } - #[doc = "Schedule a named task."] + #[doc = "See [`Pallet::schedule_named`]."] pub fn schedule_named( &self, id: [::core::primitive::u8; 32usize], @@ -5666,14 +4528,14 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 34u8, 68u8, 235u8, 184u8, 76u8, 184u8, 201u8, 126u8, 239u8, 104u8, - 118u8, 155u8, 155u8, 195u8, 153u8, 121u8, 186u8, 241u8, 223u8, 173u8, - 65u8, 247u8, 11u8, 93u8, 83u8, 243u8, 231u8, 33u8, 57u8, 89u8, 73u8, - 182u8, + 146u8, 113u8, 28u8, 221u8, 67u8, 198u8, 215u8, 187u8, 217u8, 81u8, + 119u8, 41u8, 99u8, 182u8, 79u8, 222u8, 249u8, 116u8, 75u8, 103u8, 62u8, + 147u8, 145u8, 104u8, 74u8, 214u8, 193u8, 158u8, 119u8, 102u8, 249u8, + 53u8, ], ) } - #[doc = "Cancel a named scheduled task."] + #[doc = "See [`Pallet::cancel_named`]."] pub fn cancel_named( &self, id: [::core::primitive::u8; 32usize], @@ -5689,7 +4551,7 @@ pub mod api { ], ) } - #[doc = "Anonymously schedule a task after a delay."] + #[doc = "See [`Pallet::schedule_after`]."] pub fn schedule_after( &self, after: ::core::primitive::u32, @@ -5710,13 +4572,13 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 103u8, 222u8, 6u8, 157u8, 93u8, 110u8, 116u8, 140u8, 17u8, 239u8, 58u8, - 133u8, 241u8, 102u8, 182u8, 32u8, 113u8, 57u8, 116u8, 31u8, 127u8, - 156u8, 50u8, 8u8, 33u8, 94u8, 23u8, 86u8, 93u8, 169u8, 189u8, 203u8, + 215u8, 163u8, 5u8, 200u8, 192u8, 189u8, 157u8, 143u8, 141u8, 134u8, + 163u8, 0u8, 86u8, 31u8, 196u8, 206u8, 48u8, 162u8, 54u8, 252u8, 24u8, + 119u8, 62u8, 25u8, 1u8, 27u8, 44u8, 115u8, 48u8, 70u8, 136u8, 103u8, ], ) } - #[doc = "Schedule a named task after a delay."] + #[doc = "See [`Pallet::schedule_named_after`]."] pub fn schedule_named_after( &self, id: [::core::primitive::u8; 32usize], @@ -5739,10 +4601,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 242u8, 52u8, 21u8, 208u8, 40u8, 50u8, 170u8, 129u8, 232u8, 151u8, - 130u8, 105u8, 157u8, 156u8, 65u8, 224u8, 170u8, 65u8, 169u8, 223u8, - 27u8, 37u8, 136u8, 36u8, 250u8, 40u8, 134u8, 100u8, 138u8, 36u8, 86u8, - 226u8, + 45u8, 227u8, 228u8, 121u8, 89u8, 64u8, 235u8, 180u8, 113u8, 232u8, + 225u8, 66u8, 211u8, 234u8, 137u8, 122u8, 248u8, 183u8, 192u8, 187u8, + 26u8, 128u8, 69u8, 54u8, 90u8, 103u8, 209u8, 185u8, 213u8, 158u8, + 224u8, 92u8, ], ) } @@ -6060,9 +4922,9 @@ pub mod api { pub mod preimage { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_preimage::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_preimage::pallet::Call; pub mod calls { use super::root_mod; @@ -6141,10 +5003,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Register a preimage on-chain."] - #[doc = ""] - #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] - #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] + #[doc = "See [`Pallet::note_preimage`]."] pub fn note_preimage( &self, bytes: ::std::vec::Vec<::core::primitive::u8>, @@ -6160,12 +5019,7 @@ pub mod api { ], ) } - #[doc = "Clear an unrequested preimage from the runtime storage."] - #[doc = ""] - #[doc = "If `len` is provided, then it will be a much cheaper operation."] - #[doc = ""] - #[doc = "- `hash`: The hash of the preimage to be removed from the store."] - #[doc = "- `len`: The length of the preimage of `hash`."] + #[doc = "See [`Pallet::unnote_preimage`]."] pub fn unnote_preimage( &self, hash: ::subxt::utils::H256, @@ -6182,10 +5036,7 @@ pub mod api { ], ) } - #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] - #[doc = ""] - #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] - #[doc = "a user may have paid, and take the control of the preimage out of their hands."] + #[doc = "See [`Pallet::request_preimage`]."] pub fn request_preimage( &self, hash: ::subxt::utils::H256, @@ -6201,9 +5052,7 @@ pub mod api { ], ) } - #[doc = "Clear a previously made request for a preimage."] - #[doc = ""] - #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] + #[doc = "See [`Pallet::unrequest_preimage`]."] pub fn unrequest_preimage( &self, hash: ::subxt::utils::H256, @@ -6222,7 +5071,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_preimage::pallet::Event; pub mod events { use super::runtime_types; @@ -6393,9 +5242,9 @@ pub mod api { pub mod babe { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_babe::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_babe::pallet::Call; pub mod calls { use super::root_mod; @@ -6475,10 +5324,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] pub fn report_equivocation( &self, equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< @@ -6504,14 +5350,7 @@ pub mod api { ], ) } - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] pub fn report_equivocation_unsigned( &self, equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< @@ -6538,10 +5377,7 @@ pub mod api { ], ) } - #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] - #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] - #[doc = "Multiple calls to this method will replace any existing planned config change that had"] - #[doc = "not been enacted yet."] + #[doc = "See [`Pallet::plan_config_change`]."] pub fn plan_config_change( &self, config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, @@ -7072,7 +5908,7 @@ pub mod api { pub mod timestamp { use super::root_mod; use super::runtime_types; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_timestamp::pallet::Call; pub mod calls { use super::root_mod; @@ -7101,21 +5937,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the current time."] - #[doc = ""] - #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] - #[doc = "phase, if this call hasn't been invoked by that time."] - #[doc = ""] - #[doc = "The timestamp should be greater than the previous one by the amount specified by"] - #[doc = "`MinimumPeriod`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Inherent`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] - #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)`). (because of `DidUpdate::take` in"] - #[doc = " `on_finalize`)"] - #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] + #[doc = "See [`Pallet::set`]."] pub fn set(&self, now: ::core::primitive::u64) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Timestamp", @@ -7207,9 +6029,9 @@ pub mod api { pub mod indices { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_indices::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_indices::pallet::Call; pub mod calls { use super::root_mod; @@ -7311,18 +6133,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Assign an previously unassigned index."] - #[doc = ""] - #[doc = "Payment: `Deposit` is reserved from the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be claimed. This must not be in use."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::claim`]."] pub fn claim( &self, index: ::core::primitive::u32, @@ -7338,18 +6149,7 @@ pub mod api { ], ) } - #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] - #[doc = "is effectively transferred to the new account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::transfer`]."] pub fn transfer( &self, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7366,18 +6166,7 @@ pub mod api { ], ) } - #[doc = "Free up an index owned by the sender."] - #[doc = ""] - #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] - #[doc = ""] - #[doc = "- `index`: the index to be freed. This must be owned by the sender."] - #[doc = ""] - #[doc = "Emits `IndexFreed` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::free`]."] pub fn free( &self, index: ::core::primitive::u32, @@ -7394,19 +6183,7 @@ pub mod api { ], ) } - #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] - #[doc = "held, then any deposit is reimbursed to its current owner."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `index`: the index to be (re-)assigned."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_transfer`]."] pub fn force_transfer( &self, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7425,18 +6202,7 @@ pub mod api { ], ) } - #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] - #[doc = "deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] - #[doc = "non-frozen account `index`."] - #[doc = ""] - #[doc = "- `index`: the index to be frozen in place."] - #[doc = ""] - #[doc = "Emits `IndexFrozen` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::freeze`]."] pub fn freeze( &self, index: ::core::primitive::u32, @@ -7455,7 +6221,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_indices::pallet::Event; pub mod events { use super::runtime_types; @@ -7600,9 +6366,9 @@ pub mod api { pub mod balances { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_balances::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_balances::pallet::Call; pub mod calls { use super::root_mod; @@ -7783,13 +6549,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + #[doc = "See [`Pallet::transfer_allow_death`]."] pub fn transfer_allow_death( &self, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7806,12 +6566,7 @@ pub mod api { ], ) } - #[doc = "Set the regular balance of a given account; it also takes a reserved balance but this"] - #[doc = "must be the same as the account's current reserved balance."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] - #[doc = ""] - #[doc = "WARNING: This call is DEPRECATED! Use `force_set_balance` instead."] + #[doc = "See [`Pallet::set_balance_deprecated`]."] pub fn set_balance_deprecated( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7833,8 +6588,7 @@ pub mod api { ], ) } - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] + #[doc = "See [`Pallet::force_transfer`]."] pub fn force_transfer( &self, source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7857,12 +6611,7 @@ pub mod api { ], ) } - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + #[doc = "See [`Pallet::transfer_keep_alive`]."] pub fn transfer_keep_alive( &self, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7880,21 +6629,7 @@ pub mod api { ], ) } - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] + #[doc = "See [`Pallet::transfer_all`]."] pub fn transfer_all( &self, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7911,9 +6646,7 @@ pub mod api { ], ) } - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] + #[doc = "See [`Pallet::force_unreserve`]."] pub fn force_unreserve( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7930,14 +6663,7 @@ pub mod api { ], ) } - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] + #[doc = "See [`Pallet::upgrade_accounts`]."] pub fn upgrade_accounts( &self, who: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -7953,9 +6679,7 @@ pub mod api { ], ) } - #[doc = "Alias for `transfer_allow_death`, provided only for name-wise compatibility."] - #[doc = ""] - #[doc = "WARNING: DEPRECATED! Will be released in approximately 3 months."] + #[doc = "See [`Pallet::transfer`]."] pub fn transfer( &self, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7972,9 +6696,7 @@ pub mod api { ], ) } - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] + #[doc = "See [`Pallet::force_set_balance`]."] pub fn force_set_balance( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -7993,7 +6715,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_balances::pallet::Event; pub mod events { use super::runtime_types; @@ -8658,7 +7380,7 @@ pub mod api { ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< runtime_types::pallet_balances::types::IdAmount< - (), + runtime_types::polkadot_runtime::RuntimeHoldReason, ::core::primitive::u128, >, >, @@ -8673,10 +7395,9 @@ pub mod api { _0.borrow(), )], [ - 53u8, 126u8, 215u8, 237u8, 42u8, 223u8, 188u8, 150u8, 230u8, 107u8, - 95u8, 24u8, 26u8, 235u8, 158u8, 149u8, 193u8, 191u8, 10u8, 194u8, - 231u8, 59u8, 35u8, 167u8, 186u8, 89u8, 43u8, 126u8, 215u8, 117u8, 1u8, - 202u8, + 37u8, 176u8, 2u8, 18u8, 109u8, 26u8, 66u8, 81u8, 28u8, 104u8, 149u8, + 117u8, 119u8, 114u8, 196u8, 35u8, 172u8, 155u8, 66u8, 195u8, 98u8, + 37u8, 134u8, 22u8, 106u8, 221u8, 215u8, 97u8, 25u8, 28u8, 21u8, 206u8, ], ) } @@ -8687,7 +7408,7 @@ pub mod api { ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< runtime_types::pallet_balances::types::IdAmount< - (), + runtime_types::polkadot_runtime::RuntimeHoldReason, ::core::primitive::u128, >, >, @@ -8700,10 +7421,9 @@ pub mod api { "Holds", Vec::new(), [ - 53u8, 126u8, 215u8, 237u8, 42u8, 223u8, 188u8, 150u8, 230u8, 107u8, - 95u8, 24u8, 26u8, 235u8, 158u8, 149u8, 193u8, 191u8, 10u8, 194u8, - 231u8, 59u8, 35u8, 167u8, 186u8, 89u8, 43u8, 126u8, 215u8, 117u8, 1u8, - 202u8, + 37u8, 176u8, 2u8, 18u8, 109u8, 26u8, 66u8, 81u8, 28u8, 104u8, 149u8, + 117u8, 119u8, 114u8, 196u8, 35u8, 172u8, 155u8, 66u8, 195u8, 98u8, + 37u8, 134u8, 22u8, 106u8, 221u8, 215u8, 97u8, 25u8, 28u8, 21u8, 206u8, ], ) } @@ -8848,7 +7568,7 @@ pub mod api { pub mod transaction_payment { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_transaction_payment::pallet::Event; pub mod events { use super::runtime_types; @@ -8999,9 +7719,9 @@ pub mod api { pub mod staking { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_staking::pallet::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_staking::pallet::pallet::Call; pub mod calls { use super::root_mod; @@ -9020,7 +7740,6 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Bond { - pub controller: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] pub value: ::core::primitive::u128, pub payee: runtime_types::pallet_staking::RewardDestination< @@ -9165,9 +7884,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetController { - pub controller: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - } + pub struct SetController; impl ::subxt::blocks::StaticExtrinsic for SetController { const PALLET: &'static str = "Staking"; const CALL: &'static str = "set_controller"; @@ -9486,24 +8203,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Take the origin account as a stash and lock up `value` of its balance. `controller` will"] - #[doc = "be the account that controls it."] - #[doc = ""] - #[doc = "`value` must be more than the `minimum_balance` specified by `T::Currency`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the stash account."] - #[doc = ""] - #[doc = "Emits `Bonded`."] - #[doc = "## Complexity"] - #[doc = "- Independent of the arguments. Moderate complexity."] - #[doc = "- O(1)."] - #[doc = "- Three extra DB entries."] - #[doc = ""] - #[doc = "NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned"] - #[doc = "unless the `origin` falls below _existential deposit_ and gets removed as dust."] + #[doc = "See [`Pallet::bond`]."] pub fn bond( &self, - controller: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, value: ::core::primitive::u128, payee: runtime_types::pallet_staking::RewardDestination< ::subxt::utils::AccountId32, @@ -9512,32 +8214,15 @@ pub mod api { ::subxt::tx::Payload::new_static( "Staking", "bond", - types::Bond { - controller, - value, - payee, - }, + types::Bond { value, payee }, [ - 0u8, 34u8, 21u8, 115u8, 57u8, 40u8, 95u8, 125u8, 71u8, 15u8, 255u8, - 34u8, 125u8, 8u8, 192u8, 54u8, 185u8, 187u8, 193u8, 214u8, 222u8, - 202u8, 161u8, 115u8, 83u8, 46u8, 247u8, 75u8, 166u8, 209u8, 87u8, 91u8, + 45u8, 207u8, 34u8, 221u8, 252u8, 224u8, 162u8, 185u8, 67u8, 224u8, + 88u8, 91u8, 232u8, 114u8, 183u8, 44u8, 39u8, 5u8, 12u8, 163u8, 57u8, + 31u8, 251u8, 58u8, 37u8, 232u8, 206u8, 75u8, 164u8, 26u8, 170u8, 101u8, ], ) } - #[doc = "Add some extra amount that have appeared in the stash `free_balance` into the balance up"] - #[doc = "for staking."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the stash, not the controller."] - #[doc = ""] - #[doc = "Use this if there are additional funds in your stash account that you wish to bond."] - #[doc = "Unlike [`bond`](Self::bond) or [`unbond`](Self::unbond) this function does not impose"] - #[doc = "any limitation on the amount that can be added."] - #[doc = ""] - #[doc = "Emits `Bonded`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::bond_extra`]."] pub fn bond_extra( &self, max_additional: ::core::primitive::u128, @@ -9553,25 +8238,7 @@ pub mod api { ], ) } - #[doc = "Schedule a portion of the stash to be unlocked ready for transfer out after the bond"] - #[doc = "period ends. If this leaves an amount actively bonded less than"] - #[doc = "T::Currency::minimum_balance(), then it is increased to the full amount."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "Once the unlock period is done, you can call `withdraw_unbonded` to actually move"] - #[doc = "the funds out of management ready for transfer."] - #[doc = ""] - #[doc = "No more than a limited number of unlocking chunks (see `MaxUnlockingChunks`)"] - #[doc = "can co-exists at the same time. If there are no unlocking chunks slots available"] - #[doc = "[`Call::withdraw_unbonded`] is called to remove some of the chunks (if possible)."] - #[doc = ""] - #[doc = "If a user encounters the `InsufficientBond` error when calling this extrinsic,"] - #[doc = "they should call `chill` first in order to free up their bonded funds."] - #[doc = ""] - #[doc = "Emits `Unbonded`."] - #[doc = ""] - #[doc = "See also [`Call::withdraw_unbonded`]."] + #[doc = "See [`Pallet::unbond`]."] pub fn unbond( &self, value: ::core::primitive::u128, @@ -9587,20 +8254,7 @@ pub mod api { ], ) } - #[doc = "Remove any unlocked chunks from the `unlocking` queue from our management."] - #[doc = ""] - #[doc = "This essentially frees up that balance to be used by the stash account to do"] - #[doc = "whatever it wants."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller."] - #[doc = ""] - #[doc = "Emits `Withdrawn`."] - #[doc = ""] - #[doc = "See also [`Call::unbond`]."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(S) where S is the number of slashing spans to remove"] - #[doc = "NOTE: Weight annotation is the kill scenario, we refund otherwise."] + #[doc = "See [`Pallet::withdraw_unbonded`]."] pub fn withdraw_unbonded( &self, num_slashing_spans: ::core::primitive::u32, @@ -9617,11 +8271,7 @@ pub mod api { ], ) } - #[doc = "Declare the desire to validate for the origin controller."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] + #[doc = "See [`Pallet::validate`]."] pub fn validate( &self, prefs: runtime_types::pallet_staking::ValidatorPrefs, @@ -9637,16 +8287,7 @@ pub mod api { ], ) } - #[doc = "Declare the desire to nominate `targets` for the origin controller."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- The transaction's complexity is proportional to the size of `targets` (N)"] - #[doc = "which is capped at CompactAssignments::LIMIT (T::MaxNominations)."] - #[doc = "- Both the reads and writes follow a similar pattern."] + #[doc = "See [`Pallet::nominate`]."] pub fn nominate( &self, targets: ::std::vec::Vec< @@ -9665,16 +8306,7 @@ pub mod api { ], ) } - #[doc = "Declare no desire to either validate or nominate."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- Contains one read."] - #[doc = "- Writes are limited to the `origin` account key."] + #[doc = "See [`Pallet::chill`]."] pub fn chill(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Staking", @@ -9687,18 +8319,7 @@ pub mod api { ], ) } - #[doc = "(Re-)set the payment target for a controller."] - #[doc = ""] - #[doc = "Effects will be felt instantly (as soon as this function is completed successfully)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- Contains a limited number of reads."] - #[doc = "- Writes are limited to the `origin` account key."] - #[doc = "---------"] + #[doc = "See [`Pallet::set_payee`]."] pub fn set_payee( &self, payee: runtime_types::pallet_staking::RewardDestination< @@ -9717,39 +8338,21 @@ pub mod api { ], ) } - #[doc = "(Re-)set the controller of a stash."] - #[doc = ""] - #[doc = "Effects will be felt instantly (as soon as this function is completed successfully)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the stash, not the controller."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(1)"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- Contains a limited number of reads."] - #[doc = "- Writes are limited to the `origin` account key."] - pub fn set_controller( - &self, - controller: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + #[doc = "See [`Pallet::set_controller`]."] + pub fn set_controller(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Staking", "set_controller", - types::SetController { controller }, + types::SetController {}, [ - 230u8, 253u8, 112u8, 246u8, 188u8, 255u8, 116u8, 241u8, 200u8, 175u8, - 185u8, 229u8, 191u8, 180u8, 37u8, 62u8, 114u8, 226u8, 90u8, 181u8, - 112u8, 7u8, 194u8, 42u8, 190u8, 161u8, 14u8, 9u8, 40u8, 32u8, 223u8, - 118u8, + 172u8, 27u8, 195u8, 188u8, 145u8, 203u8, 190u8, 174u8, 145u8, 43u8, + 253u8, 87u8, 11u8, 229u8, 112u8, 18u8, 57u8, 101u8, 84u8, 235u8, 109u8, + 228u8, 58u8, 129u8, 179u8, 174u8, 245u8, 169u8, 89u8, 240u8, 39u8, + 67u8, ], ) } - #[doc = "Sets the ideal number of validators."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(1)"] + #[doc = "See [`Pallet::set_validator_count`]."] pub fn set_validator_count( &self, new: ::core::primitive::u32, @@ -9766,13 +8369,7 @@ pub mod api { ], ) } - #[doc = "Increments the ideal number of validators upto maximum of"] - #[doc = "`ElectionProviderBase::MaxWinners`."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "Same as [`Self::set_validator_count`]."] + #[doc = "See [`Pallet::increase_validator_count`]."] pub fn increase_validator_count( &self, additional: ::core::primitive::u32, @@ -9789,13 +8386,7 @@ pub mod api { ], ) } - #[doc = "Scale up the ideal number of validators by a factor upto maximum of"] - #[doc = "`ElectionProviderBase::MaxWinners`."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "Same as [`Self::set_validator_count`]."] + #[doc = "See [`Pallet::scale_validator_count`]."] pub fn scale_validator_count( &self, factor: runtime_types::sp_arithmetic::per_things::Percent, @@ -9812,19 +8403,7 @@ pub mod api { ], ) } - #[doc = "Force there to be no new eras indefinitely."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "# Warning"] - #[doc = ""] - #[doc = "The election process starts multiple blocks before the end of the era."] - #[doc = "Thus the election process may be ongoing when this is called. In this case the"] - #[doc = "election will continue until the next era is triggered."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- No arguments."] - #[doc = "- Weight: O(1)"] + #[doc = "See [`Pallet::force_no_eras`]."] pub fn force_no_eras(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Staking", @@ -9838,20 +8417,7 @@ pub mod api { ], ) } - #[doc = "Force there to be a new era at the end of the next session. After this, it will be"] - #[doc = "reset to normal (non-forced) behaviour."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "# Warning"] - #[doc = ""] - #[doc = "The election process starts multiple blocks before the end of the era."] - #[doc = "If this is called just before a new era is triggered, the election process may not"] - #[doc = "have enough blocks to get a result."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- No arguments."] - #[doc = "- Weight: O(1)"] + #[doc = "See [`Pallet::force_new_era`]."] pub fn force_new_era(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Staking", @@ -9864,9 +8430,7 @@ pub mod api { ], ) } - #[doc = "Set the validators who cannot be slashed (if any)."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] + #[doc = "See [`Pallet::set_invulnerables`]."] pub fn set_invulnerables( &self, invulnerables: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -9882,9 +8446,7 @@ pub mod api { ], ) } - #[doc = "Force a current staker to become completely unstaked, immediately."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] + #[doc = "See [`Pallet::force_unstake`]."] pub fn force_unstake( &self, stash: ::subxt::utils::AccountId32, @@ -9904,15 +8466,7 @@ pub mod api { ], ) } - #[doc = "Force there to be a new era at the end of sessions indefinitely."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "# Warning"] - #[doc = ""] - #[doc = "The election process starts multiple blocks before the end of the era."] - #[doc = "If this is called just before a new era is triggered, the election process may not"] - #[doc = "have enough blocks to get a result."] + #[doc = "See [`Pallet::force_new_era_always`]."] pub fn force_new_era_always( &self, ) -> ::subxt::tx::Payload { @@ -9927,11 +8481,7 @@ pub mod api { ], ) } - #[doc = "Cancel enactment of a deferred slash."] - #[doc = ""] - #[doc = "Can be called by the `T::AdminOrigin`."] - #[doc = ""] - #[doc = "Parameters: era and indices of the slashes for that era to kill."] + #[doc = "See [`Pallet::cancel_deferred_slash`]."] pub fn cancel_deferred_slash( &self, era: ::core::primitive::u32, @@ -9949,17 +8499,7 @@ pub mod api { ], ) } - #[doc = "Pay out all the stakers behind a single validator for a single era."] - #[doc = ""] - #[doc = "- `validator_stash` is the stash account of the validator. Their nominators, up to"] - #[doc = " `T::MaxNominatorRewardedPerValidator`, will also receive their rewards."] - #[doc = "- `era` may be any era between `[current_era - history_depth; current_era]`."] - #[doc = ""] - #[doc = "The origin of this call must be _Signed_. Any account can call this function, even if"] - #[doc = "it is not one of the stakers."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- At most O(MaxNominatorRewardedPerValidator)."] + #[doc = "See [`Pallet::payout_stakers`]."] pub fn payout_stakers( &self, validator_stash: ::subxt::utils::AccountId32, @@ -9979,13 +8519,7 @@ pub mod api { ], ) } - #[doc = "Rebond a portion of the stash scheduled to be unlocked."] - #[doc = ""] - #[doc = "The dispatch origin must be signed by the controller."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Time complexity: O(L), where L is unlocking chunks"] - #[doc = "- Bounded by `MaxUnlockingChunks`."] + #[doc = "See [`Pallet::rebond`]."] pub fn rebond( &self, value: ::core::primitive::u128, @@ -10001,18 +8535,7 @@ pub mod api { ], ) } - #[doc = "Remove all data structures concerning a staker/stash once it is at a state where it can"] - #[doc = "be considered `dust` in the staking system. The requirements are:"] - #[doc = ""] - #[doc = "1. the `total_balance` of the stash is below existential deposit."] - #[doc = "2. or, the `ledger.total` of the stash is below existential deposit."] - #[doc = ""] - #[doc = "The former can happen in cases like a slash; the latter when a fully unbonded account"] - #[doc = "is still receiving staking rewards in `RewardDestination::Staked`."] - #[doc = ""] - #[doc = "It can be called by anyone, as long as `stash` meets the above requirements."] - #[doc = ""] - #[doc = "Refunds the transaction fees upon successful execution."] + #[doc = "See [`Pallet::reap_stash`]."] pub fn reap_stash( &self, stash: ::subxt::utils::AccountId32, @@ -10032,17 +8555,7 @@ pub mod api { ], ) } - #[doc = "Remove the given nominations from the calling validator."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "- `who`: A list of nominator stash accounts who are nominating this validator which"] - #[doc = " should no longer be nominating this validator."] - #[doc = ""] - #[doc = "Note: Making this call only makes sense if you first set the validator preferences to"] - #[doc = "block any further nominations."] + #[doc = "See [`Pallet::kick`]."] pub fn kick( &self, who: ::std::vec::Vec< @@ -10060,23 +8573,7 @@ pub mod api { ], ) } - #[doc = "Update the various staking configurations ."] - #[doc = ""] - #[doc = "* `min_nominator_bond`: The minimum active bond needed to be a nominator."] - #[doc = "* `min_validator_bond`: The minimum active bond needed to be a validator."] - #[doc = "* `max_nominator_count`: The max number of users who can be a nominator at once. When"] - #[doc = " set to `None`, no limit is enforced."] - #[doc = "* `max_validator_count`: The max number of users who can be a validator at once. When"] - #[doc = " set to `None`, no limit is enforced."] - #[doc = "* `chill_threshold`: The ratio of `max_nominator_count` or `max_validator_count` which"] - #[doc = " should be filled in order for the `chill_other` transaction to work."] - #[doc = "* `min_commission`: The minimum amount of commission that each validators must maintain."] - #[doc = " This is checked only upon calling `validate`. Existing validators are not affected."] - #[doc = ""] - #[doc = "RuntimeOrigin must be Root to call this function."] - #[doc = ""] - #[doc = "NOTE: Existing nominators and validators will not be affected by this update."] - #[doc = "to kick people under the new limits, `chill_other` should be called."] + #[doc = "See [`Pallet::set_staking_configs`]."] pub fn set_staking_configs( &self, min_nominator_bond: runtime_types::pallet_staking::pallet::pallet::ConfigOp< @@ -10117,32 +8614,7 @@ pub mod api { ], ) } - #[doc = "Declare a `controller` to stop participating as either a validator or nominator."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_, but can be called by anyone."] - #[doc = ""] - #[doc = "If the caller is the same as the controller being targeted, then no further checks are"] - #[doc = "enforced, and this function behaves just like `chill`."] - #[doc = ""] - #[doc = "If the caller is different than the controller being targeted, the following conditions"] - #[doc = "must be met:"] - #[doc = ""] - #[doc = "* `controller` must belong to a nominator who has become non-decodable,"] - #[doc = ""] - #[doc = "Or:"] - #[doc = ""] - #[doc = "* A `ChillThreshold` must be set and checked which defines how close to the max"] - #[doc = " nominators or validators we must reach before users can start chilling one-another."] - #[doc = "* A `MaxNominatorCount` and `MaxValidatorCount` must be set which is used to determine"] - #[doc = " how close we are to the threshold."] - #[doc = "* A `MinNominatorBond` and `MinValidatorBond` must be set and checked, which determines"] - #[doc = " if this is a person that should be chilled because they have not met the threshold"] - #[doc = " bond required."] - #[doc = ""] - #[doc = "This can be helpful if bond requirements are updated, and we need to remove old users"] - #[doc = "who do not satisfy these requirements."] + #[doc = "See [`Pallet::chill_other`]."] pub fn chill_other( &self, controller: ::subxt::utils::AccountId32, @@ -10158,9 +8630,7 @@ pub mod api { ], ) } - #[doc = "Force a validator to have at least the minimum commission. This will not affect a"] - #[doc = "validator who already has a commission greater than or equal to the minimum. Any account"] - #[doc = "can call this."] + #[doc = "See [`Pallet::force_apply_min_commission`]."] pub fn force_apply_min_commission( &self, validator_stash: ::subxt::utils::AccountId32, @@ -10176,10 +8646,7 @@ pub mod api { ], ) } - #[doc = "Sets the minimum amount of commission that each validators must maintain."] - #[doc = ""] - #[doc = "This call has lower privilege requirements than `set_staking_config` and can be called"] - #[doc = "by the `T::AdminOrigin`. Root can always call this."] + #[doc = "See [`Pallet::set_min_commission`]."] pub fn set_min_commission( &self, new: runtime_types::sp_arithmetic::per_things::Perbill, @@ -10198,7 +8665,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_staking::pallet::pallet::Event; pub mod events { use super::runtime_types; @@ -12186,7 +10653,7 @@ pub mod api { use super::runtime_types; #[doc = "Error for the session pallet."] pub type Error = runtime_types::pallet_session::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_session::pallet::Call; pub mod calls { use super::root_mod; @@ -12230,15 +10697,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Sets the session key(s) of the function caller to `keys`."] - #[doc = "Allows an account to set its session key prior to becoming a validator."] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be signed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] - #[doc = " fixed."] + #[doc = "See [`Pallet::set_keys`]."] pub fn set_keys( &self, keys: runtime_types::polkadot_runtime::SessionKeys, @@ -12255,18 +10714,7 @@ pub mod api { ], ) } - #[doc = "Removes any session key(s) of the function caller."] - #[doc = ""] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] - #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] - #[doc = "means being a controller account) or directly convertible into a validator ID (which"] - #[doc = "usually means being a stash account)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] - #[doc = " `T::Keys::key_ids()` which is fixed."] + #[doc = "See [`Pallet::purge_keys`]."] pub fn purge_keys(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Session", @@ -12282,7 +10730,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_session::pallet::Event; pub mod events { use super::runtime_types; @@ -12527,9 +10975,9 @@ pub mod api { pub mod grandpa { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_grandpa::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_grandpa::pallet::Call; pub mod calls { use super::root_mod; @@ -12604,10 +11052,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] pub fn report_equivocation( &self, equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -12631,15 +11076,7 @@ pub mod api { ], ) } - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] pub fn report_equivocation_unsigned( &self, equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -12662,18 +11099,7 @@ pub mod api { ], ) } - #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] - #[doc = ""] - #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] - #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] - #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] - #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] - #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] - #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] - #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] - #[doc = "block of all validators of the new authority set."] - #[doc = ""] - #[doc = "Only callable by root."] + #[doc = "See [`Pallet::note_stalled`]."] pub fn note_stalled( &self, delay: ::core::primitive::u32, @@ -12696,7 +11122,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_grandpa::pallet::Event; pub mod events { use super::runtime_types; @@ -12975,9 +11401,9 @@ pub mod api { pub mod im_online { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_im_online::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_im_online::pallet::Call; pub mod calls { use super::root_mod; @@ -13007,11 +11433,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "## Complexity:"] - #[doc = "- `O(K + E)` where K is length of `Keys` (heartbeat.validators_len) and E is length of"] - #[doc = " `heartbeat.network_state.external_address`"] - #[doc = " - `O(K)`: decoding of length `K`"] - #[doc = " - `O(E)`: decoding/encoding of length `E`"] + #[doc = "See [`Pallet::heartbeat`]."] pub fn heartbeat( &self, heartbeat: runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, @@ -13025,16 +11447,16 @@ pub mod api { signature, }, [ - 191u8, 155u8, 217u8, 65u8, 8u8, 34u8, 41u8, 185u8, 187u8, 199u8, 164u8, - 48u8, 76u8, 123u8, 235u8, 182u8, 85u8, 107u8, 48u8, 158u8, 110u8, - 206u8, 145u8, 119u8, 165u8, 253u8, 27u8, 59u8, 0u8, 112u8, 241u8, - 242u8, + 145u8, 227u8, 53u8, 178u8, 195u8, 173u8, 7u8, 209u8, 148u8, 82u8, + 125u8, 236u8, 128u8, 10u8, 134u8, 114u8, 95u8, 104u8, 111u8, 202u8, + 59u8, 192u8, 178u8, 182u8, 102u8, 86u8, 88u8, 50u8, 92u8, 66u8, 144u8, + 131u8, ], ) } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_im_online::pallet::Event; pub mod events { use super::runtime_types; @@ -13156,17 +11578,14 @@ pub mod api { ], ) } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex` to"] - #[doc = " `WrapperOpaque`."] + #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] pub fn received_heartbeats( &self, _0: impl ::std::borrow::Borrow<::core::primitive::u32>, _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::frame_support::traits::misc::WrapperOpaque< - runtime_types::pallet_im_online::BoundedOpaqueNetworkState, - >, + ::core::primitive::bool, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -13179,22 +11598,18 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 244u8, 195u8, 226u8, 146u8, 31u8, 109u8, 70u8, 31u8, 198u8, 97u8, - 116u8, 249u8, 115u8, 191u8, 13u8, 96u8, 12u8, 200u8, 235u8, 254u8, 3u8, - 36u8, 51u8, 43u8, 224u8, 251u8, 76u8, 197u8, 157u8, 173u8, 125u8, - 161u8, + 123u8, 182u8, 145u8, 49u8, 90u8, 110u8, 80u8, 53u8, 62u8, 45u8, 173u8, + 252u8, 126u8, 163u8, 229u8, 173u8, 54u8, 169u8, 61u8, 128u8, 10u8, + 33u8, 254u8, 78u8, 145u8, 134u8, 235u8, 26u8, 177u8, 55u8, 7u8, 75u8, ], ) } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex` to"] - #[doc = " `WrapperOpaque`."] + #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] pub fn received_heartbeats_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::frame_support::traits::misc::WrapperOpaque< - runtime_types::pallet_im_online::BoundedOpaqueNetworkState, - >, + ::core::primitive::bool, (), (), ::subxt::storage::address::Yes, @@ -13204,10 +11619,9 @@ pub mod api { "ReceivedHeartbeats", Vec::new(), [ - 244u8, 195u8, 226u8, 146u8, 31u8, 109u8, 70u8, 31u8, 198u8, 97u8, - 116u8, 249u8, 115u8, 191u8, 13u8, 96u8, 12u8, 200u8, 235u8, 254u8, 3u8, - 36u8, 51u8, 43u8, 224u8, 251u8, 76u8, 197u8, 157u8, 173u8, 125u8, - 161u8, + 123u8, 182u8, 145u8, 49u8, 90u8, 110u8, 80u8, 53u8, 62u8, 45u8, 173u8, + 252u8, 126u8, 163u8, 229u8, 173u8, 54u8, 169u8, 61u8, 128u8, 10u8, + 33u8, 254u8, 78u8, 145u8, 134u8, 235u8, 26u8, 177u8, 55u8, 7u8, 75u8, ], ) } @@ -13296,9 +11710,9 @@ pub mod api { pub mod democracy { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_democracy::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_democracy::pallet::Call; pub mod calls { use super::root_mod; @@ -13653,15 +12067,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Propose a sensitive action to be taken."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the sender must"] - #[doc = "have funds to cover the deposit."] - #[doc = ""] - #[doc = "- `proposal_hash`: The hash of the proposal preimage."] - #[doc = "- `value`: The amount of deposit (must be at least `MinimumDeposit`)."] - #[doc = ""] - #[doc = "Emits `Proposed`."] + #[doc = "See [`Pallet::propose`]."] pub fn propose( &self, proposal: runtime_types::frame_support::traits::preimages::Bounded< @@ -13681,12 +12087,7 @@ pub mod api { ], ) } - #[doc = "Signals agreement with a particular proposal."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the sender"] - #[doc = "must have funds to cover the deposit, equal to the original deposit."] - #[doc = ""] - #[doc = "- `proposal`: The index of the proposal to second."] + #[doc = "See [`Pallet::second`]."] pub fn second( &self, proposal: ::core::primitive::u32, @@ -13703,13 +12104,7 @@ pub mod api { ], ) } - #[doc = "Vote in a referendum. If `vote.is_aye()`, the vote is to enact the proposal;"] - #[doc = "otherwise it is a vote to keep the status quo."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `ref_index`: The index of the referendum to vote for."] - #[doc = "- `vote`: The vote configuration."] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, ref_index: ::core::primitive::u32, @@ -13729,14 +12124,7 @@ pub mod api { ], ) } - #[doc = "Schedule an emergency cancellation of a referendum. Cannot happen twice to the same"] - #[doc = "referendum."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `CancellationOrigin`."] - #[doc = ""] - #[doc = "-`ref_index`: The index of the referendum to cancel."] - #[doc = ""] - #[doc = "Weight: `O(1)`."] + #[doc = "See [`Pallet::emergency_cancel`]."] pub fn emergency_cancel( &self, ref_index: ::core::primitive::u32, @@ -13752,12 +12140,7 @@ pub mod api { ], ) } - #[doc = "Schedule a referendum to be tabled once it is legal to schedule an external"] - #[doc = "referendum."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `ExternalOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal."] + #[doc = "See [`Pallet::external_propose`]."] pub fn external_propose( &self, proposal: runtime_types::frame_support::traits::preimages::Bounded< @@ -13776,17 +12159,7 @@ pub mod api { ], ) } - #[doc = "Schedule a majority-carries referendum to be tabled next once it is legal to schedule"] - #[doc = "an external referendum."] - #[doc = ""] - #[doc = "The dispatch of this call must be `ExternalMajorityOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal."] - #[doc = ""] - #[doc = "Unlike `external_propose`, blacklisting has no effect on this and it may replace a"] - #[doc = "pre-scheduled `external_propose` call."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::external_propose_majority`]."] pub fn external_propose_majority( &self, proposal: runtime_types::frame_support::traits::preimages::Bounded< @@ -13805,17 +12178,7 @@ pub mod api { ], ) } - #[doc = "Schedule a negative-turnout-bias referendum to be tabled next once it is legal to"] - #[doc = "schedule an external referendum."] - #[doc = ""] - #[doc = "The dispatch of this call must be `ExternalDefaultOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal."] - #[doc = ""] - #[doc = "Unlike `external_propose`, blacklisting has no effect on this and it may replace a"] - #[doc = "pre-scheduled `external_propose` call."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::external_propose_default`]."] pub fn external_propose_default( &self, proposal: runtime_types::frame_support::traits::preimages::Bounded< @@ -13834,22 +12197,7 @@ pub mod api { ], ) } - #[doc = "Schedule the currently externally-proposed majority-carries referendum to be tabled"] - #[doc = "immediately. If there is no externally-proposed referendum currently, or if there is one"] - #[doc = "but it is not a majority-carries referendum then it fails."] - #[doc = ""] - #[doc = "The dispatch of this call must be `FastTrackOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The hash of the current external proposal."] - #[doc = "- `voting_period`: The period that is allowed for voting on this proposal. Increased to"] - #[doc = "\tMust be always greater than zero."] - #[doc = "\tFor `FastTrackOrigin` must be equal or greater than `FastTrackVotingPeriod`."] - #[doc = "- `delay`: The number of block after voting has ended in approval and this should be"] - #[doc = " enacted. This doesn't have a minimum amount."] - #[doc = ""] - #[doc = "Emits `Started`."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::fast_track`]."] pub fn fast_track( &self, proposal_hash: ::subxt::utils::H256, @@ -13872,15 +12220,7 @@ pub mod api { ], ) } - #[doc = "Veto and blacklist the external proposal hash."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `VetoOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal to veto and blacklist."] - #[doc = ""] - #[doc = "Emits `Vetoed`."] - #[doc = ""] - #[doc = "Weight: `O(V + log(V))` where V is number of `existing vetoers`"] + #[doc = "See [`Pallet::veto_external`]."] pub fn veto_external( &self, proposal_hash: ::subxt::utils::H256, @@ -13897,13 +12237,7 @@ pub mod api { ], ) } - #[doc = "Remove a referendum."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Root_."] - #[doc = ""] - #[doc = "- `ref_index`: The index of the referendum to cancel."] - #[doc = ""] - #[doc = "# Weight: `O(1)`."] + #[doc = "See [`Pallet::cancel_referendum`]."] pub fn cancel_referendum( &self, ref_index: ::core::primitive::u32, @@ -13920,26 +12254,7 @@ pub mod api { ], ) } - #[doc = "Delegate the voting power (with some given conviction) of the sending account."] - #[doc = ""] - #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] - #[doc = "time appropriate for the conviction's lock period."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] - #[doc = " - be delegating already; or"] - #[doc = " - have no voting activity (if there is, then it will need to be removed/consolidated"] - #[doc = " through `reap_vote` or `unvote`)."] - #[doc = ""] - #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] - #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] - #[doc = " account is undelegated, the funds will be locked for the corresponding period."] - #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] - #[doc = " be more than the account's current balance."] - #[doc = ""] - #[doc = "Emits `Delegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of referendums the voter delegating to has"] - #[doc = " voted on. Weight is charged as if maximum votes."] + #[doc = "See [`Pallet::delegate`]."] pub fn delegate( &self, to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -13961,18 +12276,7 @@ pub mod api { ], ) } - #[doc = "Undelegate the voting power of the sending account."] - #[doc = ""] - #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] - #[doc = "of the conviction with which the delegation was issued."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] - #[doc = "currently delegating."] - #[doc = ""] - #[doc = "Emits `Undelegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of referendums the voter delegating to has"] - #[doc = " voted on. Weight is charged as if maximum votes."] + #[doc = "See [`Pallet::undelegate`]."] pub fn undelegate(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Democracy", @@ -13986,11 +12290,7 @@ pub mod api { ], ) } - #[doc = "Clears all public proposals."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Root_."] - #[doc = ""] - #[doc = "Weight: `O(1)`."] + #[doc = "See [`Pallet::clear_public_proposals`]."] pub fn clear_public_proposals( &self, ) -> ::subxt::tx::Payload { @@ -14006,13 +12306,7 @@ pub mod api { ], ) } - #[doc = "Unlock tokens that have an expired lock."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account to remove the lock on."] - #[doc = ""] - #[doc = "Weight: `O(R)` with R number of vote of target."] + #[doc = "See [`Pallet::unlock`]."] pub fn unlock( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -14028,33 +12322,7 @@ pub mod api { ], ) } - #[doc = "Remove a vote for a referendum."] - #[doc = ""] - #[doc = "If:"] - #[doc = "- the referendum was cancelled, or"] - #[doc = "- the referendum is ongoing, or"] - #[doc = "- the referendum has ended such that"] - #[doc = " - the vote of the account was in opposition to the result; or"] - #[doc = " - there was no conviction to the account's vote; or"] - #[doc = " - the account made a split vote"] - #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] - #[doc = "funds being available."] - #[doc = ""] - #[doc = "If, however, the referendum has ended and:"] - #[doc = "- it finished corresponding to the vote of the account, and"] - #[doc = "- the account made a standard vote with conviction, and"] - #[doc = "- the lock period of the conviction is not over"] - #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] - #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] - #[doc = "of both the amount locked and the time is it locked for)."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] - #[doc = "registered for referendum `index`."] - #[doc = ""] - #[doc = "- `index`: The index of referendum of the vote to be removed."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_vote`]."] pub fn remove_vote( &self, index: ::core::primitive::u32, @@ -14071,21 +12339,7 @@ pub mod api { ], ) } - #[doc = "Remove a vote for a referendum."] - #[doc = ""] - #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] - #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] - #[doc = "either because the referendum was cancelled, because the voter lost the referendum or"] - #[doc = "because the conviction period is over."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account of the vote to be removed; this account must have voted for"] - #[doc = " referendum `index`."] - #[doc = "- `index`: The index of referendum of the vote to be removed."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_other_vote`]."] pub fn remove_other_vote( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -14102,21 +12356,7 @@ pub mod api { ], ) } - #[doc = "Permanently place a proposal into the blacklist. This prevents it from ever being"] - #[doc = "proposed again."] - #[doc = ""] - #[doc = "If called on a queued public or external proposal, then this will result in it being"] - #[doc = "removed. If the `ref_index` supplied is an active referendum with the proposal hash,"] - #[doc = "then it will be cancelled."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `BlacklistOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The proposal hash to blacklist permanently."] - #[doc = "- `ref_index`: An ongoing referendum whose hash is `proposal_hash`, which will be"] - #[doc = "cancelled."] - #[doc = ""] - #[doc = "Weight: `O(p)` (though as this is an high-privilege dispatch, we assume it has a"] - #[doc = " reasonable value)."] + #[doc = "See [`Pallet::blacklist`]."] pub fn blacklist( &self, proposal_hash: ::subxt::utils::H256, @@ -14137,13 +12377,7 @@ pub mod api { ], ) } - #[doc = "Remove a proposal."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `CancelProposalOrigin`."] - #[doc = ""] - #[doc = "- `prop_index`: The index of the proposal to cancel."] - #[doc = ""] - #[doc = "Weight: `O(p)` where `p = PublicProps::::decode_len()`"] + #[doc = "See [`Pallet::cancel_proposal`]."] pub fn cancel_proposal( &self, prop_index: ::core::primitive::u32, @@ -14159,21 +12393,7 @@ pub mod api { ], ) } - #[doc = "Set or clear a metadata of a proposal or a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must correspond to the `MetadataOwner`."] - #[doc = " - `ExternalOrigin` for an external proposal with the `SuperMajorityApprove`"] - #[doc = " threshold."] - #[doc = " - `ExternalDefaultOrigin` for an external proposal with the `SuperMajorityAgainst`"] - #[doc = " threshold."] - #[doc = " - `ExternalMajorityOrigin` for an external proposal with the `SimpleMajority`"] - #[doc = " threshold."] - #[doc = " - `Signed` by a creator for a public proposal."] - #[doc = " - `Signed` to clear a metadata for a finished referendum."] - #[doc = " - `Root` to set a metadata for an ongoing referendum."] - #[doc = "- `owner`: an identifier of a metadata owner."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + #[doc = "See [`Pallet::set_metadata`]."] pub fn set_metadata( &self, owner: runtime_types::pallet_democracy::types::MetadataOwner, @@ -14193,7 +12413,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_democracy::pallet::Event; pub mod events { use super::runtime_types; @@ -15206,9 +13426,9 @@ pub mod api { pub mod council { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_collective::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_collective::pallet::Call; pub mod calls { use super::root_mod; @@ -15337,30 +13557,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the collective's membership."] - #[doc = ""] - #[doc = "- `new_members`: The new member list. Be nice to the chain and provide it sorted."] - #[doc = "- `prime`: The prime member whose vote sets the default."] - #[doc = "- `old_count`: The upper bound for the previous number of members in storage. Used for"] - #[doc = " weight estimation."] - #[doc = ""] - #[doc = "The dispatch of this call must be `SetMembersOrigin`."] - #[doc = ""] - #[doc = "NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but"] - #[doc = " the weight estimations rely on it to estimate dispatchable weight."] - #[doc = ""] - #[doc = "# WARNING:"] - #[doc = ""] - #[doc = "The `pallet-collective` can also be managed by logic outside of the pallet through the"] - #[doc = "implementation of the trait [`ChangeMembers`]."] - #[doc = "Any call to `set_members` must be careful that the member set doesn't get out of sync"] - #[doc = "with other logic managing the member set."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(MP + N)` where:"] - #[doc = " - `M` old-members-count (code- and governance-bounded)"] - #[doc = " - `N` new-members-count (code- and governance-bounded)"] - #[doc = " - `P` proposals-count (code-bounded)"] + #[doc = "See [`Pallet::set_members`]."] pub fn set_members( &self, new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -15383,15 +13580,7 @@ pub mod api { ], ) } - #[doc = "Dispatch a proposal from a member using the `Member` origin."] - #[doc = ""] - #[doc = "Origin must be a member of the collective."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(B + M + P)` where:"] - #[doc = "- `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = "- `M` members-count (code-bounded)"] - #[doc = "- `P` complexity of dispatching `proposal`"] + #[doc = "See [`Pallet::execute`]."] pub fn execute( &self, proposal: runtime_types::polkadot_runtime::RuntimeCall, @@ -15405,27 +13594,14 @@ pub mod api { length_bound, }, [ - 118u8, 178u8, 220u8, 249u8, 127u8, 175u8, 151u8, 231u8, 41u8, 91u8, - 48u8, 28u8, 181u8, 249u8, 95u8, 131u8, 89u8, 144u8, 70u8, 9u8, 58u8, - 172u8, 78u8, 224u8, 166u8, 166u8, 159u8, 110u8, 248u8, 32u8, 35u8, - 213u8, + 216u8, 185u8, 245u8, 220u8, 244u8, 26u8, 114u8, 10u8, 254u8, 75u8, + 64u8, 229u8, 195u8, 48u8, 61u8, 16u8, 185u8, 129u8, 188u8, 228u8, + 166u8, 252u8, 206u8, 236u8, 92u8, 0u8, 113u8, 196u8, 225u8, 148u8, 5u8, + 22u8, ], ) } - #[doc = "Add a new proposal to either be voted on or executed directly."] - #[doc = ""] - #[doc = "Requires the sender to be member."] - #[doc = ""] - #[doc = "`threshold` determines whether `proposal` is executed directly (`threshold < 2`)"] - #[doc = "or put up for voting."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1)` or `O(B + M + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - branching is influenced by `threshold` where:"] - #[doc = " - `P1` is proposal execution complexity (`threshold < 2`)"] - #[doc = " - `P2` is proposals-count (code-bounded) (`threshold >= 2`)"] + #[doc = "See [`Pallet::propose`]."] pub fn propose( &self, threshold: ::core::primitive::u32, @@ -15441,21 +13617,14 @@ pub mod api { length_bound, }, [ - 196u8, 235u8, 52u8, 130u8, 42u8, 10u8, 1u8, 177u8, 190u8, 43u8, 229u8, - 23u8, 17u8, 69u8, 209u8, 120u8, 238u8, 245u8, 250u8, 237u8, 137u8, - 42u8, 100u8, 193u8, 18u8, 89u8, 81u8, 108u8, 30u8, 0u8, 253u8, 92u8, + 95u8, 215u8, 116u8, 248u8, 230u8, 207u8, 176u8, 74u8, 234u8, 82u8, + 78u8, 234u8, 167u8, 233u8, 93u8, 88u8, 94u8, 144u8, 59u8, 3u8, 88u8, + 139u8, 175u8, 111u8, 255u8, 193u8, 97u8, 43u8, 197u8, 143u8, 68u8, + 217u8, ], ) } - #[doc = "Add an aye or nay vote for the sender to the given proposal."] - #[doc = ""] - #[doc = "Requires the sender to be a member."] - #[doc = ""] - #[doc = "Transaction fees will be waived if the member is voting on any particular proposal"] - #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] - #[doc = "fee."] - #[doc = "## Complexity"] - #[doc = "- `O(M)` where `M` is members-count (code- and governance-bounded)"] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, proposal: ::subxt::utils::H256, @@ -15478,16 +13647,7 @@ pub mod api { ], ) } - #[doc = "Disapprove a proposal, close, and remove it from the system, regardless of its current"] - #[doc = "state."] - #[doc = ""] - #[doc = "Must be called by the Root origin."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "* `proposal_hash`: The hash of the proposal that should be disapproved."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(P) where P is the number of max proposals"] + #[doc = "See [`Pallet::disapprove_proposal`]."] pub fn disapprove_proposal( &self, proposal_hash: ::subxt::utils::H256, @@ -15503,30 +13663,7 @@ pub mod api { ], ) } - #[doc = "Close a vote that is either approved, disapproved or whose voting period has ended."] - #[doc = ""] - #[doc = "May be called by any signed account in order to finish voting and close the proposal."] - #[doc = ""] - #[doc = "If called before the end of the voting period it will only close the vote if it is"] - #[doc = "has enough votes to be approved or disapproved."] - #[doc = ""] - #[doc = "If called after the end of the voting period abstentions are counted as rejections"] - #[doc = "unless there is a prime member set and the prime member cast an approval."] - #[doc = ""] - #[doc = "If the close operation completes successfully with disapproval, the transaction fee will"] - #[doc = "be waived. Otherwise execution of the approved operation will be charged to the caller."] - #[doc = ""] - #[doc = "+ `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed"] - #[doc = "proposal."] - #[doc = "+ `length_bound`: The upper bound for the length of the proposal in storage. Checked via"] - #[doc = "`storage::read` so it is `size_of::() == 4` larger than the pure length."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1 + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - `P1` is the complexity of `proposal` preimage."] - #[doc = " - `P2` is proposal-count (code-bounded)"] + #[doc = "See [`Pallet::close`]."] pub fn close( &self, proposal_hash: ::subxt::utils::H256, @@ -15552,7 +13689,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_collective::pallet::Event; pub mod events { use super::runtime_types; @@ -15741,10 +13878,10 @@ pub mod api { _0.borrow(), )], [ - 121u8, 123u8, 184u8, 84u8, 246u8, 113u8, 189u8, 253u8, 37u8, 96u8, - 99u8, 188u8, 43u8, 159u8, 53u8, 140u8, 148u8, 127u8, 87u8, 178u8, - 240u8, 104u8, 9u8, 10u8, 84u8, 21u8, 217u8, 6u8, 247u8, 69u8, 87u8, - 151u8, + 1u8, 24u8, 41u8, 101u8, 123u8, 154u8, 94u8, 31u8, 199u8, 5u8, 126u8, + 198u8, 32u8, 45u8, 176u8, 214u8, 29u8, 47u8, 226u8, 226u8, 232u8, + 138u8, 155u8, 128u8, 113u8, 171u8, 248u8, 244u8, 59u8, 212u8, 167u8, + 50u8, ], ) } @@ -15763,10 +13900,10 @@ pub mod api { "ProposalOf", Vec::new(), [ - 121u8, 123u8, 184u8, 84u8, 246u8, 113u8, 189u8, 253u8, 37u8, 96u8, - 99u8, 188u8, 43u8, 159u8, 53u8, 140u8, 148u8, 127u8, 87u8, 178u8, - 240u8, 104u8, 9u8, 10u8, 84u8, 21u8, 217u8, 6u8, 247u8, 69u8, 87u8, - 151u8, + 1u8, 24u8, 41u8, 101u8, 123u8, 154u8, 94u8, 31u8, 199u8, 5u8, 126u8, + 198u8, 32u8, 45u8, 176u8, 214u8, 29u8, 47u8, 226u8, 226u8, 232u8, + 138u8, 155u8, 128u8, 113u8, 171u8, 248u8, 244u8, 59u8, 212u8, 167u8, + 50u8, ], ) } @@ -15911,9 +14048,9 @@ pub mod api { pub mod technical_committee { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_collective::pallet::Error2; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_collective::pallet::Call2; pub mod calls { use super::root_mod; @@ -16042,30 +14179,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the collective's membership."] - #[doc = ""] - #[doc = "- `new_members`: The new member list. Be nice to the chain and provide it sorted."] - #[doc = "- `prime`: The prime member whose vote sets the default."] - #[doc = "- `old_count`: The upper bound for the previous number of members in storage. Used for"] - #[doc = " weight estimation."] - #[doc = ""] - #[doc = "The dispatch of this call must be `SetMembersOrigin`."] - #[doc = ""] - #[doc = "NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but"] - #[doc = " the weight estimations rely on it to estimate dispatchable weight."] - #[doc = ""] - #[doc = "# WARNING:"] - #[doc = ""] - #[doc = "The `pallet-collective` can also be managed by logic outside of the pallet through the"] - #[doc = "implementation of the trait [`ChangeMembers`]."] - #[doc = "Any call to `set_members` must be careful that the member set doesn't get out of sync"] - #[doc = "with other logic managing the member set."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(MP + N)` where:"] - #[doc = " - `M` old-members-count (code- and governance-bounded)"] - #[doc = " - `N` new-members-count (code- and governance-bounded)"] - #[doc = " - `P` proposals-count (code-bounded)"] + #[doc = "See [`Pallet::set_members`]."] pub fn set_members( &self, new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -16088,15 +14202,7 @@ pub mod api { ], ) } - #[doc = "Dispatch a proposal from a member using the `Member` origin."] - #[doc = ""] - #[doc = "Origin must be a member of the collective."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(B + M + P)` where:"] - #[doc = "- `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = "- `M` members-count (code-bounded)"] - #[doc = "- `P` complexity of dispatching `proposal`"] + #[doc = "See [`Pallet::execute`]."] pub fn execute( &self, proposal: runtime_types::polkadot_runtime::RuntimeCall, @@ -16110,27 +14216,14 @@ pub mod api { length_bound, }, [ - 118u8, 178u8, 220u8, 249u8, 127u8, 175u8, 151u8, 231u8, 41u8, 91u8, - 48u8, 28u8, 181u8, 249u8, 95u8, 131u8, 89u8, 144u8, 70u8, 9u8, 58u8, - 172u8, 78u8, 224u8, 166u8, 166u8, 159u8, 110u8, 248u8, 32u8, 35u8, - 213u8, + 216u8, 185u8, 245u8, 220u8, 244u8, 26u8, 114u8, 10u8, 254u8, 75u8, + 64u8, 229u8, 195u8, 48u8, 61u8, 16u8, 185u8, 129u8, 188u8, 228u8, + 166u8, 252u8, 206u8, 236u8, 92u8, 0u8, 113u8, 196u8, 225u8, 148u8, 5u8, + 22u8, ], ) } - #[doc = "Add a new proposal to either be voted on or executed directly."] - #[doc = ""] - #[doc = "Requires the sender to be member."] - #[doc = ""] - #[doc = "`threshold` determines whether `proposal` is executed directly (`threshold < 2`)"] - #[doc = "or put up for voting."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1)` or `O(B + M + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - branching is influenced by `threshold` where:"] - #[doc = " - `P1` is proposal execution complexity (`threshold < 2`)"] - #[doc = " - `P2` is proposals-count (code-bounded) (`threshold >= 2`)"] + #[doc = "See [`Pallet::propose`]."] pub fn propose( &self, threshold: ::core::primitive::u32, @@ -16146,21 +14239,14 @@ pub mod api { length_bound, }, [ - 196u8, 235u8, 52u8, 130u8, 42u8, 10u8, 1u8, 177u8, 190u8, 43u8, 229u8, - 23u8, 17u8, 69u8, 209u8, 120u8, 238u8, 245u8, 250u8, 237u8, 137u8, - 42u8, 100u8, 193u8, 18u8, 89u8, 81u8, 108u8, 30u8, 0u8, 253u8, 92u8, + 95u8, 215u8, 116u8, 248u8, 230u8, 207u8, 176u8, 74u8, 234u8, 82u8, + 78u8, 234u8, 167u8, 233u8, 93u8, 88u8, 94u8, 144u8, 59u8, 3u8, 88u8, + 139u8, 175u8, 111u8, 255u8, 193u8, 97u8, 43u8, 197u8, 143u8, 68u8, + 217u8, ], ) } - #[doc = "Add an aye or nay vote for the sender to the given proposal."] - #[doc = ""] - #[doc = "Requires the sender to be a member."] - #[doc = ""] - #[doc = "Transaction fees will be waived if the member is voting on any particular proposal"] - #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] - #[doc = "fee."] - #[doc = "## Complexity"] - #[doc = "- `O(M)` where `M` is members-count (code- and governance-bounded)"] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, proposal: ::subxt::utils::H256, @@ -16183,16 +14269,7 @@ pub mod api { ], ) } - #[doc = "Disapprove a proposal, close, and remove it from the system, regardless of its current"] - #[doc = "state."] - #[doc = ""] - #[doc = "Must be called by the Root origin."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "* `proposal_hash`: The hash of the proposal that should be disapproved."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(P) where P is the number of max proposals"] + #[doc = "See [`Pallet::disapprove_proposal`]."] pub fn disapprove_proposal( &self, proposal_hash: ::subxt::utils::H256, @@ -16208,30 +14285,7 @@ pub mod api { ], ) } - #[doc = "Close a vote that is either approved, disapproved or whose voting period has ended."] - #[doc = ""] - #[doc = "May be called by any signed account in order to finish voting and close the proposal."] - #[doc = ""] - #[doc = "If called before the end of the voting period it will only close the vote if it is"] - #[doc = "has enough votes to be approved or disapproved."] - #[doc = ""] - #[doc = "If called after the end of the voting period abstentions are counted as rejections"] - #[doc = "unless there is a prime member set and the prime member cast an approval."] - #[doc = ""] - #[doc = "If the close operation completes successfully with disapproval, the transaction fee will"] - #[doc = "be waived. Otherwise execution of the approved operation will be charged to the caller."] - #[doc = ""] - #[doc = "+ `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed"] - #[doc = "proposal."] - #[doc = "+ `length_bound`: The upper bound for the length of the proposal in storage. Checked via"] - #[doc = "`storage::read` so it is `size_of::() == 4` larger than the pure length."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1 + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - `P1` is the complexity of `proposal` preimage."] - #[doc = " - `P2` is proposal-count (code-bounded)"] + #[doc = "See [`Pallet::close`]."] pub fn close( &self, proposal_hash: ::subxt::utils::H256, @@ -16257,7 +14311,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_collective::pallet::Event2; pub mod events { use super::runtime_types; @@ -16446,10 +14500,10 @@ pub mod api { _0.borrow(), )], [ - 121u8, 123u8, 184u8, 84u8, 246u8, 113u8, 189u8, 253u8, 37u8, 96u8, - 99u8, 188u8, 43u8, 159u8, 53u8, 140u8, 148u8, 127u8, 87u8, 178u8, - 240u8, 104u8, 9u8, 10u8, 84u8, 21u8, 217u8, 6u8, 247u8, 69u8, 87u8, - 151u8, + 1u8, 24u8, 41u8, 101u8, 123u8, 154u8, 94u8, 31u8, 199u8, 5u8, 126u8, + 198u8, 32u8, 45u8, 176u8, 214u8, 29u8, 47u8, 226u8, 226u8, 232u8, + 138u8, 155u8, 128u8, 113u8, 171u8, 248u8, 244u8, 59u8, 212u8, 167u8, + 50u8, ], ) } @@ -16468,10 +14522,10 @@ pub mod api { "ProposalOf", Vec::new(), [ - 121u8, 123u8, 184u8, 84u8, 246u8, 113u8, 189u8, 253u8, 37u8, 96u8, - 99u8, 188u8, 43u8, 159u8, 53u8, 140u8, 148u8, 127u8, 87u8, 178u8, - 240u8, 104u8, 9u8, 10u8, 84u8, 21u8, 217u8, 6u8, 247u8, 69u8, 87u8, - 151u8, + 1u8, 24u8, 41u8, 101u8, 123u8, 154u8, 94u8, 31u8, 199u8, 5u8, 126u8, + 198u8, 32u8, 45u8, 176u8, 214u8, 29u8, 47u8, 226u8, 226u8, 232u8, + 138u8, 155u8, 128u8, 113u8, 171u8, 248u8, 244u8, 59u8, 212u8, 167u8, + 50u8, ], ) } @@ -16616,9 +14670,9 @@ pub mod api { pub mod phragmen_election { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_elections_phragmen::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_elections_phragmen::pallet::Call; pub mod calls { use super::root_mod; @@ -16735,25 +14789,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Vote for a set of candidates for the upcoming round of election. This can be called to"] - #[doc = "set the initial votes, or update already existing votes."] - #[doc = ""] - #[doc = "Upon initial voting, `value` units of `who`'s balance is locked and a deposit amount is"] - #[doc = "reserved. The deposit is based on the number of votes and can be updated over time."] - #[doc = ""] - #[doc = "The `votes` should:"] - #[doc = " - not be empty."] - #[doc = " - be less than the number of possible candidates. Note that all current members and"] - #[doc = " runners-up are also automatically candidates for the next round."] - #[doc = ""] - #[doc = "If `value` is more than `who`'s free balance, then the maximum of the two is used."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed."] - #[doc = ""] - #[doc = "### Warning"] - #[doc = ""] - #[doc = "It is the responsibility of the caller to **NOT** place all of their balance into the"] - #[doc = "lock and keep some for further operations."] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, votes: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -16770,11 +14806,7 @@ pub mod api { ], ) } - #[doc = "Remove `origin` as a voter."] - #[doc = ""] - #[doc = "This removes the lock and returns the deposit."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed and be a voter."] + #[doc = "See [`Pallet::remove_voter`]."] pub fn remove_voter(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "PhragmenElection", @@ -16788,21 +14820,7 @@ pub mod api { ], ) } - #[doc = "Submit oneself for candidacy. A fixed amount of deposit is recorded."] - #[doc = ""] - #[doc = "All candidates are wiped at the end of the term. They either become a member/runner-up,"] - #[doc = "or leave the system while their deposit is slashed."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed."] - #[doc = ""] - #[doc = "### Warning"] - #[doc = ""] - #[doc = "Even if a candidate ends up being a member, they must call [`Call::renounce_candidacy`]"] - #[doc = "to get their deposit back. Losing the spot in an election will always lead to a slash."] - #[doc = ""] - #[doc = "The number of current candidates must be provided as witness data."] - #[doc = "## Complexity"] - #[doc = "O(C + log(C)) where C is candidate_count."] + #[doc = "See [`Pallet::submit_candidacy`]."] pub fn submit_candidacy( &self, candidate_count: ::core::primitive::u32, @@ -16819,26 +14837,7 @@ pub mod api { ], ) } - #[doc = "Renounce one's intention to be a candidate for the next election round. 3 potential"] - #[doc = "outcomes exist:"] - #[doc = ""] - #[doc = "- `origin` is a candidate and not elected in any set. In this case, the deposit is"] - #[doc = " unreserved, returned and origin is removed as a candidate."] - #[doc = "- `origin` is a current runner-up. In this case, the deposit is unreserved, returned and"] - #[doc = " origin is removed as a runner-up."] - #[doc = "- `origin` is a current member. In this case, the deposit is unreserved and origin is"] - #[doc = " removed as a member, consequently not being a candidate for the next round anymore."] - #[doc = " Similar to [`remove_member`](Self::remove_member), if replacement runners exists, they"] - #[doc = " are immediately used. If the prime is renouncing, then no prime will exist until the"] - #[doc = " next round."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed, and have one of the above roles."] - #[doc = "The type of renouncing must be provided as witness data."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = " - Renouncing::Candidate(count): O(count + log(count))"] - #[doc = " - Renouncing::Member: O(1)"] - #[doc = " - Renouncing::RunnerUp: O(1)"] + #[doc = "See [`Pallet::renounce_candidacy`]."] pub fn renounce_candidacy( &self, renouncing: runtime_types::pallet_elections_phragmen::Renouncing, @@ -16855,22 +14854,7 @@ pub mod api { ], ) } - #[doc = "Remove a particular member from the set. This is effective immediately and the bond of"] - #[doc = "the outgoing member is slashed."] - #[doc = ""] - #[doc = "If a runner-up is available, then the best runner-up will be removed and replaces the"] - #[doc = "outgoing member. Otherwise, if `rerun_election` is `true`, a new phragmen election is"] - #[doc = "started, else, nothing happens."] - #[doc = ""] - #[doc = "If `slash_bond` is set to true, the bond of the member being removed is slashed. Else,"] - #[doc = "it is returned."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be root."] - #[doc = ""] - #[doc = "Note that this does not affect the designated block number of the next election."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Check details of remove_and_replace_member() and do_phragmen()."] + #[doc = "See [`Pallet::remove_member`]."] pub fn remove_member( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -16892,15 +14876,7 @@ pub mod api { ], ) } - #[doc = "Clean all voters who are defunct (i.e. they do not serve any purpose at all). The"] - #[doc = "deposit of the removed voters are returned."] - #[doc = ""] - #[doc = "This is an root function to be used only for cleaning the state."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Check is_defunct_voter() details."] + #[doc = "See [`Pallet::clean_defunct_voters`]."] pub fn clean_defunct_voters( &self, num_voters: ::core::primitive::u32, @@ -16923,7 +14899,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_elections_phragmen::pallet::Event; pub mod events { use super::runtime_types; @@ -17399,9 +15375,9 @@ pub mod api { pub mod technical_membership { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_membership::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_membership::pallet::Call; pub mod calls { use super::root_mod; @@ -17530,9 +15506,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Add a member `who` to the set."] - #[doc = ""] - #[doc = "May only be called from `T::AddOrigin`."] + #[doc = "See [`Pallet::add_member`]."] pub fn add_member( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17549,9 +15523,7 @@ pub mod api { ], ) } - #[doc = "Remove a member `who` from the set."] - #[doc = ""] - #[doc = "May only be called from `T::RemoveOrigin`."] + #[doc = "See [`Pallet::remove_member`]."] pub fn remove_member( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17567,11 +15539,7 @@ pub mod api { ], ) } - #[doc = "Swap out one member `remove` for another `add`."] - #[doc = ""] - #[doc = "May only be called from `T::SwapOrigin`."] - #[doc = ""] - #[doc = "Prime membership is *not* passed from `remove` to `add`, if extant."] + #[doc = "See [`Pallet::swap_member`]."] pub fn swap_member( &self, remove: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17588,10 +15556,7 @@ pub mod api { ], ) } - #[doc = "Change the membership to a new set, disregarding the existing membership. Be nice and"] - #[doc = "pass `members` pre-sorted."] - #[doc = ""] - #[doc = "May only be called from `T::ResetOrigin`."] + #[doc = "See [`Pallet::reset_members`]."] pub fn reset_members( &self, members: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -17607,11 +15572,7 @@ pub mod api { ], ) } - #[doc = "Swap out the sending member for some other key `new`."] - #[doc = ""] - #[doc = "May only be called from `Signed` origin of a current member."] - #[doc = ""] - #[doc = "Prime membership is passed from the origin account to `new`, if extant."] + #[doc = "See [`Pallet::change_key`]."] pub fn change_key( &self, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17628,9 +15589,7 @@ pub mod api { ], ) } - #[doc = "Set the prime member. Must be a current member."] - #[doc = ""] - #[doc = "May only be called from `T::PrimeOrigin`."] + #[doc = "See [`Pallet::set_prime`]."] pub fn set_prime( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17647,9 +15606,7 @@ pub mod api { ], ) } - #[doc = "Remove the prime member if it exists."] - #[doc = ""] - #[doc = "May only be called from `T::PrimeOrigin`."] + #[doc = "See [`Pallet::clear_prime`]."] pub fn clear_prime(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "TechnicalMembership", @@ -17664,7 +15621,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_membership::pallet::Event; pub mod events { use super::runtime_types; @@ -17822,7 +15779,7 @@ pub mod api { use super::runtime_types; #[doc = "Error for the treasury pallet."] pub type Error = runtime_types::pallet_treasury::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_treasury::pallet::Call; pub mod calls { use super::root_mod; @@ -17925,12 +15882,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Put forward a suggestion for spending. A deposit proportional to the value"] - #[doc = "is reserved and slashed if the proposal is rejected. It is returned once the"] - #[doc = "proposal is awarded."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::propose_spend`]."] pub fn propose_spend( &self, value: ::core::primitive::u128, @@ -17948,12 +15900,7 @@ pub mod api { ], ) } - #[doc = "Reject a proposed spend. The original deposit will be slashed."] - #[doc = ""] - #[doc = "May only be called from `T::RejectOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::reject_proposal`]."] pub fn reject_proposal( &self, proposal_id: ::core::primitive::u32, @@ -17969,13 +15916,7 @@ pub mod api { ], ) } - #[doc = "Approve a proposal. At a later time, the proposal will be allocated to the beneficiary"] - #[doc = "and the original deposit will be returned."] - #[doc = ""] - #[doc = "May only be called from `T::ApproveOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = " - O(1)."] + #[doc = "See [`Pallet::approve_proposal`]."] pub fn approve_proposal( &self, proposal_id: ::core::primitive::u32, @@ -17991,14 +15932,7 @@ pub mod api { ], ) } - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "- `origin`: Must be `SpendOrigin` with the `Success` value being at least `amount`."] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The destination account for the transfer."] - #[doc = ""] - #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] - #[doc = "beneficiary."] + #[doc = "See [`Pallet::spend`]."] pub fn spend( &self, amount: ::core::primitive::u128, @@ -18019,19 +15953,7 @@ pub mod api { ], ) } - #[doc = "Force a previously approved proposal to be removed from the approval queue."] - #[doc = "The original deposit will no longer be returned."] - #[doc = ""] - #[doc = "May only be called from `T::RejectOrigin`."] - #[doc = "- `proposal_id`: The index of a proposal"] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(A) where `A` is the number of approvals"] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `ProposalNotApproved`: The `proposal_id` supplied was not found in the approval queue,"] - #[doc = "i.e., the proposal has not been approved. This could also mean the proposal does not"] - #[doc = "exist altogether, thus there is no way it would have been approved in the first place."] + #[doc = "See [`Pallet::remove_approval`]."] pub fn remove_approval( &self, proposal_id: ::core::primitive::u32, @@ -18050,7 +15972,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_treasury::pallet::Event; pub mod events { use super::runtime_types; @@ -18465,9 +16387,9 @@ pub mod api { pub mod conviction_voting { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_conviction_voting::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_conviction_voting::pallet::Call; pub mod calls { use super::root_mod; @@ -18592,15 +16514,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] - #[doc = "otherwise it is a vote to keep the status quo."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `poll_index`: The index of the poll to vote for."] - #[doc = "- `vote`: The vote configuration."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, poll_index: ::core::primitive::u32, @@ -18619,29 +16533,7 @@ pub mod api { ], ) } - #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] - #[doc = "particular class of polls."] - #[doc = ""] - #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] - #[doc = "time appropriate for the conviction's lock period."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] - #[doc = " - be delegating already; or"] - #[doc = " - have no voting activity (if there is, then it will need to be removed/consolidated"] - #[doc = " through `reap_vote` or `unvote`)."] - #[doc = ""] - #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] - #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] - #[doc = " to this function are required."] - #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] - #[doc = " account is undelegated, the funds will be locked for the corresponding period."] - #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] - #[doc = " be more than the account's current balance."] - #[doc = ""] - #[doc = "Emits `Delegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::delegate`]."] pub fn delegate( &self, class: ::core::primitive::u16, @@ -18665,20 +16557,7 @@ pub mod api { ], ) } - #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] - #[doc = ""] - #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] - #[doc = "of the conviction with which the delegation was issued has passed."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] - #[doc = "currently delegating."] - #[doc = ""] - #[doc = "- `class`: The class of polls to remove the delegation from."] - #[doc = ""] - #[doc = "Emits `Undelegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::undelegate`]."] pub fn undelegate( &self, class: ::core::primitive::u16, @@ -18695,15 +16574,7 @@ pub mod api { ], ) } - #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] - #[doc = "class."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `class`: The class of polls to unlock."] - #[doc = "- `target`: The account to remove the lock on."] - #[doc = ""] - #[doc = "Weight: `O(R)` with R number of vote of target."] + #[doc = "See [`Pallet::unlock`]."] pub fn unlock( &self, class: ::core::primitive::u16, @@ -18720,35 +16591,7 @@ pub mod api { ], ) } - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If:"] - #[doc = "- the poll was cancelled, or"] - #[doc = "- the poll is ongoing, or"] - #[doc = "- the poll has ended such that"] - #[doc = " - the vote of the account was in opposition to the result; or"] - #[doc = " - there was no conviction to the account's vote; or"] - #[doc = " - the account made a split vote"] - #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] - #[doc = "funds being available."] - #[doc = ""] - #[doc = "If, however, the poll has ended and:"] - #[doc = "- it finished corresponding to the vote of the account, and"] - #[doc = "- the account made a standard vote with conviction, and"] - #[doc = "- the lock period of the conviction is not over"] - #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] - #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] - #[doc = "of both the amount locked and the time is it locked for)."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] - #[doc = "registered for poll `index`."] - #[doc = ""] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] - #[doc = " which have finished or are cancelled, this must be `Some`."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_vote`]."] pub fn remove_vote( &self, class: ::core::option::Option<::core::primitive::u16>, @@ -18766,22 +16609,7 @@ pub mod api { ], ) } - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] - #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] - #[doc = "either because the poll was cancelled, because the voter lost the poll or"] - #[doc = "because the conviction period is over."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] - #[doc = " `index`."] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: The class of the poll."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_other_vote`]."] pub fn remove_other_vote( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18806,7 +16634,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_conviction_voting::pallet::Event; pub mod events { use super::runtime_types; @@ -19010,9 +16838,9 @@ pub mod api { pub mod referenda { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_referenda::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_referenda::pallet::Call; pub mod calls { use super::root_mod; @@ -19192,15 +17020,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] + #[doc = "See [`Pallet::submit`]."] pub fn submit( &self, proposal_origin: runtime_types::polkadot_runtime::OriginCaller, @@ -19227,14 +17047,7 @@ pub mod api { ], ) } - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] + #[doc = "See [`Pallet::place_decision_deposit`]."] pub fn place_decision_deposit( &self, index: ::core::primitive::u32, @@ -19250,13 +17063,7 @@ pub mod api { ], ) } - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] + #[doc = "See [`Pallet::refund_decision_deposit`]."] pub fn refund_decision_deposit( &self, index: ::core::primitive::u32, @@ -19272,12 +17079,7 @@ pub mod api { ], ) } - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] + #[doc = "See [`Pallet::cancel`]."] pub fn cancel( &self, index: ::core::primitive::u32, @@ -19294,12 +17096,7 @@ pub mod api { ], ) } - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] + #[doc = "See [`Pallet::kill`]."] pub fn kill( &self, index: ::core::primitive::u32, @@ -19316,10 +17113,7 @@ pub mod api { ], ) } - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] + #[doc = "See [`Pallet::nudge_referendum`]."] pub fn nudge_referendum( &self, index: ::core::primitive::u32, @@ -19336,15 +17130,7 @@ pub mod api { ], ) } - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] + #[doc = "See [`Pallet::one_fewer_deciding`]."] pub fn one_fewer_deciding( &self, track: ::core::primitive::u16, @@ -19361,13 +17147,7 @@ pub mod api { ], ) } - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] + #[doc = "See [`Pallet::refund_submission_deposit`]."] pub fn refund_submission_deposit( &self, index: ::core::primitive::u32, @@ -19383,13 +17163,7 @@ pub mod api { ], ) } - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + #[doc = "See [`Pallet::set_metadata`]."] pub fn set_metadata( &self, index: ::core::primitive::u32, @@ -19409,7 +17183,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_referenda::pallet::Event; pub mod events { use super::runtime_types; @@ -20085,9 +17859,9 @@ pub mod api { pub mod whitelist { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_whitelist::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_whitelist::pallet::Call; pub mod calls { use super::root_mod; @@ -20168,6 +17942,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { + #[doc = "See [`Pallet::whitelist_call`]."] pub fn whitelist_call( &self, call_hash: ::subxt::utils::H256, @@ -20184,6 +17959,7 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::remove_whitelisted_call`]."] pub fn remove_whitelisted_call( &self, call_hash: ::subxt::utils::H256, @@ -20200,6 +17976,7 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] pub fn dispatch_whitelisted_call( &self, call_hash: ::subxt::utils::H256, @@ -20222,6 +17999,7 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] pub fn dispatch_whitelisted_call_with_preimage( &self, call: runtime_types::polkadot_runtime::RuntimeCall, @@ -20234,16 +18012,16 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 165u8, 145u8, 232u8, 196u8, 0u8, 120u8, 40u8, 224u8, 54u8, 58u8, 90u8, - 6u8, 161u8, 131u8, 151u8, 169u8, 150u8, 219u8, 126u8, 151u8, 27u8, - 96u8, 237u8, 148u8, 119u8, 137u8, 130u8, 144u8, 133u8, 223u8, 133u8, - 86u8, + 67u8, 177u8, 224u8, 225u8, 229u8, 76u8, 167u8, 239u8, 201u8, 47u8, 1u8, + 73u8, 248u8, 123u8, 100u8, 220u8, 49u8, 190u8, 10u8, 116u8, 81u8, + 209u8, 1u8, 207u8, 206u8, 190u8, 168u8, 180u8, 171u8, 238u8, 132u8, + 145u8, ], ) } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_whitelist::pallet::Event; pub mod events { use super::runtime_types; @@ -20358,9 +18136,9 @@ pub mod api { pub mod claims { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_common::claims::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_common::claims::pallet::Call; pub mod calls { use super::root_mod; @@ -20472,30 +18250,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Make a claim to collect your DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to claim is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message"] - #[doc = " matching the format described above."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim`]."] pub fn claim( &self, dest: ::subxt::utils::AccountId32, @@ -20516,21 +18271,7 @@ pub mod api { ], ) } - #[doc = "Mint a new claim to collect DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The Ethereum address allowed to collect this claim."] - #[doc = "- `value`: The number of DOTs that will be claimed."] - #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "We assume worst case that both vesting and statement is being inserted."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::mint_claim`]."] pub fn mint_claim( &self, who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -20560,32 +18301,7 @@ pub mod api { ], ) } - #[doc = "Make a claim to collect your DOTs by signing a statement."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)(statement)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] - #[doc = "expected according to your purchase arrangement."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message"] - #[doc = " matching the format described above."] - #[doc = "- `statement`: The identity of the statement which is being attested to in the signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim_attest`]."] pub fn claim_attest( &self, dest: ::subxt::utils::AccountId32, @@ -20607,23 +18323,7 @@ pub mod api { ], ) } - #[doc = "Attest to a statement, needed to finalize the claims process."] - #[doc = ""] - #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a `SignedExtension`."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] - #[doc = "and provides a `statement` which is expected for the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `statement`: The identity of the statement which is being attested to in the signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to do pre-validation on `attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::attest`]."] pub fn attest( &self, statement: ::std::vec::Vec<::core::primitive::u8>, @@ -20640,6 +18340,7 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::move_claim`]."] pub fn move_claim( &self, old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -20663,7 +18364,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_common::claims::pallet::Event; pub mod events { use super::runtime_types; @@ -20945,7 +18646,7 @@ pub mod api { use super::runtime_types; #[doc = "Error for the vesting pallet."] pub type Error = runtime_types::pallet_vesting::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_vesting::pallet::Call; pub mod calls { use super::root_mod; @@ -21049,15 +18750,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Unlock any vested funds of the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vest`]."] pub fn vest(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Vesting", @@ -21071,17 +18764,7 @@ pub mod api { ], ) } - #[doc = "Unlock any vested funds of a `target` account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vest_other`]."] pub fn vest_other( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -21098,19 +18781,7 @@ pub mod api { ], ) } - #[doc = "Create a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account receiving the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vested_transfer`]."] pub fn vested_transfer( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -21131,20 +18802,7 @@ pub mod api { ], ) } - #[doc = "Force a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `source`: The account whose funds should be transferred."] - #[doc = "- `target`: The account that should be transferred the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_vested_transfer`]."] pub fn force_vested_transfer( &self, source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -21169,27 +18827,7 @@ pub mod api { ], ) } - #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] - #[doc = "the highest possible start and end blocks. If both schedules have already started the"] - #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] - #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] - #[doc = "unmodified."] - #[doc = ""] - #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] - #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] - #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] - #[doc = "and both will be removed."] - #[doc = ""] - #[doc = "Merged schedule attributes:"] - #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] - #[doc = " current_block)`."] - #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] - #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `schedule1_index`: index of the first schedule to merge."] - #[doc = "- `schedule2_index`: index of the second schedule to merge."] + #[doc = "See [`Pallet::merge_schedules`]."] pub fn merge_schedules( &self, schedule1_index: ::core::primitive::u32, @@ -21211,7 +18849,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_vesting::pallet::Event; pub mod events { use super::runtime_types; @@ -21378,9 +19016,9 @@ pub mod api { pub mod utility { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_utility::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_utility::pallet::Call; pub mod calls { use super::root_mod; @@ -21496,24 +19134,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Send a batch of dispatch calls."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] - #[doc = ""] - #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] - #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] - #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] - #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] - #[doc = "event is deposited."] + #[doc = "See [`Pallet::batch`]."] pub fn batch( &self, calls: ::std::vec::Vec, @@ -21523,25 +19144,13 @@ pub mod api { "batch", types::Batch { calls }, [ - 206u8, 63u8, 238u8, 29u8, 17u8, 76u8, 147u8, 42u8, 207u8, 102u8, 254u8, - 73u8, 66u8, 84u8, 193u8, 60u8, 123u8, 228u8, 202u8, 16u8, 252u8, 116u8, - 254u8, 116u8, 224u8, 201u8, 68u8, 81u8, 83u8, 52u8, 140u8, 162u8, + 77u8, 176u8, 65u8, 208u8, 62u8, 46u8, 243u8, 25u8, 21u8, 163u8, 136u8, + 35u8, 237u8, 84u8, 7u8, 246u8, 18u8, 145u8, 88u8, 23u8, 26u8, 138u8, + 101u8, 206u8, 245u8, 95u8, 167u8, 53u8, 206u8, 47u8, 196u8, 120u8, ], ) } - #[doc = "Send a call through an indexed pseudonym of the sender."] - #[doc = ""] - #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] - #[doc = "use the same filter as the origin of this call."] - #[doc = ""] - #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] - #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] - #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] - #[doc = "in the Multisig pallet instead."] - #[doc = ""] - #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::as_derivative`]."] pub fn as_derivative( &self, index: ::core::primitive::u16, @@ -21555,25 +19164,14 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 198u8, 130u8, 194u8, 65u8, 34u8, 1u8, 245u8, 50u8, 14u8, 19u8, 185u8, - 163u8, 167u8, 10u8, 3u8, 14u8, 86u8, 151u8, 235u8, 254u8, 187u8, 119u8, - 238u8, 234u8, 66u8, 171u8, 240u8, 29u8, 2u8, 12u8, 128u8, 232u8, + 167u8, 253u8, 240u8, 160u8, 45u8, 115u8, 192u8, 78u8, 43u8, 14u8, + 164u8, 226u8, 46u8, 222u8, 226u8, 203u8, 97u8, 166u8, 230u8, 168u8, + 210u8, 196u8, 133u8, 37u8, 213u8, 247u8, 230u8, 143u8, 98u8, 88u8, + 246u8, 207u8, ], ) } - #[doc = "Send a batch of dispatch calls and atomically execute them."] - #[doc = "The whole transaction will rollback and fail if any of the calls failed."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::batch_all`]."] pub fn batch_all( &self, calls: ::std::vec::Vec, @@ -21583,18 +19181,13 @@ pub mod api { "batch_all", types::BatchAll { calls }, [ - 111u8, 232u8, 44u8, 90u8, 148u8, 170u8, 209u8, 220u8, 197u8, 196u8, - 75u8, 202u8, 206u8, 19u8, 42u8, 90u8, 76u8, 85u8, 28u8, 113u8, 182u8, - 62u8, 194u8, 52u8, 54u8, 14u8, 250u8, 178u8, 121u8, 132u8, 52u8, 244u8, + 60u8, 32u8, 11u8, 20u8, 78u8, 183u8, 127u8, 35u8, 234u8, 221u8, 81u8, + 6u8, 234u8, 90u8, 114u8, 47u8, 160u8, 78u8, 241u8, 45u8, 200u8, 71u8, + 216u8, 135u8, 185u8, 227u8, 60u8, 215u8, 119u8, 131u8, 105u8, 168u8, ], ) } - #[doc = "Dispatches a function call with a provided origin."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::dispatch_as`]."] pub fn dispatch_as( &self, as_origin: runtime_types::polkadot_runtime::OriginCaller, @@ -21608,26 +19201,13 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 202u8, 82u8, 213u8, 197u8, 129u8, 136u8, 23u8, 223u8, 214u8, 54u8, - 73u8, 126u8, 227u8, 240u8, 52u8, 222u8, 105u8, 46u8, 255u8, 66u8, - 199u8, 200u8, 2u8, 226u8, 107u8, 98u8, 142u8, 44u8, 135u8, 220u8, 13u8, - 62u8, + 215u8, 96u8, 253u8, 135u8, 162u8, 215u8, 57u8, 11u8, 29u8, 252u8, 69u8, + 209u8, 113u8, 29u8, 127u8, 248u8, 254u8, 187u8, 107u8, 191u8, 174u8, + 100u8, 25u8, 114u8, 126u8, 17u8, 73u8, 44u8, 43u8, 202u8, 76u8, 250u8, ], ) } - #[doc = "Send a batch of dispatch calls."] - #[doc = "Unlike `batch`, it allows errors and won't interrupt."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::force_batch`]."] pub fn force_batch( &self, calls: ::std::vec::Vec, @@ -21637,19 +19217,13 @@ pub mod api { "force_batch", types::ForceBatch { calls }, [ - 5u8, 6u8, 194u8, 167u8, 95u8, 10u8, 18u8, 236u8, 102u8, 157u8, 249u8, - 104u8, 170u8, 77u8, 215u8, 111u8, 95u8, 141u8, 65u8, 43u8, 227u8, - 242u8, 24u8, 19u8, 241u8, 248u8, 191u8, 180u8, 157u8, 145u8, 140u8, - 148u8, + 59u8, 36u8, 137u8, 152u8, 227u8, 218u8, 8u8, 223u8, 44u8, 44u8, 149u8, + 31u8, 249u8, 124u8, 170u8, 185u8, 9u8, 166u8, 147u8, 238u8, 10u8, 58u8, + 229u8, 10u8, 236u8, 171u8, 114u8, 242u8, 255u8, 107u8, 138u8, 59u8, ], ) } - #[doc = "Dispatch a function call with a specified weight."] - #[doc = ""] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Root origin to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = "See [`Pallet::with_weight`]."] pub fn with_weight( &self, call: runtime_types::polkadot_runtime::RuntimeCall, @@ -21663,15 +19237,15 @@ pub mod api { weight, }, [ - 249u8, 241u8, 154u8, 18u8, 125u8, 189u8, 176u8, 39u8, 201u8, 244u8, - 174u8, 187u8, 248u8, 48u8, 44u8, 144u8, 87u8, 67u8, 80u8, 108u8, 136u8, - 181u8, 224u8, 45u8, 146u8, 9u8, 58u8, 132u8, 43u8, 222u8, 36u8, 20u8, + 18u8, 188u8, 157u8, 217u8, 79u8, 197u8, 24u8, 199u8, 167u8, 6u8, 194u8, + 8u8, 54u8, 41u8, 74u8, 47u8, 111u8, 200u8, 76u8, 210u8, 23u8, 125u8, + 14u8, 162u8, 193u8, 217u8, 200u8, 99u8, 57u8, 235u8, 128u8, 244u8, ], ) } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_utility::pallet::Event; pub mod events { use super::runtime_types; @@ -21805,7 +19379,7 @@ pub mod api { pub mod identity { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_identity::pallet::Error; #[doc = "Identity pallet declaration."] pub type Call = runtime_types::pallet_identity::pallet::Call; @@ -22093,16 +19667,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Add a registrar to the system."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] - #[doc = ""] - #[doc = "- `account`: the account of the registrar."] - #[doc = ""] - #[doc = "Emits `RegistrarAdded` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)` where `R` registrar-count (governance-bounded and code-bounded)."] + #[doc = "See [`Pallet::add_registrar`]."] pub fn add_registrar( &self, account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -22119,21 +19684,7 @@ pub mod api { ], ) } - #[doc = "Set an account's identity information and reserve the appropriate deposit."] - #[doc = ""] - #[doc = "If the account already has identity information, the deposit is taken as part payment"] - #[doc = "for the new deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `info`: The identity information."] - #[doc = ""] - #[doc = "Emits `IdentitySet` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(X + X' + R)`"] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)"] - #[doc = " - where `R` judgements-count (registrar-count-bounded)"] + #[doc = "See [`Pallet::set_identity`]."] pub fn set_identity( &self, info: runtime_types::pallet_identity::types::IdentityInfo, @@ -22151,20 +19702,7 @@ pub mod api { ], ) } - #[doc = "Set the sub-accounts of the sender."] - #[doc = ""] - #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] - #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "- `subs`: The identity's (new) sub-accounts."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(P + S)`"] - #[doc = " - where `P` old-subs-count (hard- and deposit-bounded)."] - #[doc = " - where `S` subs-count (hard- and deposit-bounded)."] + #[doc = "See [`Pallet::set_subs`]."] pub fn set_subs( &self, subs: ::std::vec::Vec<( @@ -22184,20 +19722,7 @@ pub mod api { ], ) } - #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] - #[doc = ""] - #[doc = "Payment: All reserved balances on the account are returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "Emits `IdentityCleared` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + S + X)`"] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `S` subs-count (hard- and deposit-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::clear_identity`]."] pub fn clear_identity(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", @@ -22211,27 +19736,7 @@ pub mod api { ], ) } - #[doc = "Request a judgement from a registrar."] - #[doc = ""] - #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] - #[doc = "given."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] - #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] - #[doc = ""] - #[doc = "```nocompile"] - #[doc = "Self::registrars().get(reg_index).unwrap().fee"] - #[doc = "```"] - #[doc = ""] - #[doc = "Emits `JudgementRequested` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + X)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::request_judgement`]."] pub fn request_judgement( &self, reg_index: ::core::primitive::u32, @@ -22248,21 +19753,7 @@ pub mod api { ], ) } - #[doc = "Cancel a previous request."] - #[doc = ""] - #[doc = "Payment: A previously reserved deposit is returned on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] - #[doc = ""] - #[doc = "Emits `JudgementUnrequested` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + X)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::cancel_request`]."] pub fn cancel_request( &self, reg_index: ::core::primitive::u32, @@ -22279,17 +19770,7 @@ pub mod api { ], ) } - #[doc = "Set the fee required for a judgement to be requested from a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fee`: the new fee."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] + #[doc = "See [`Pallet::set_fee`]."] pub fn set_fee( &self, index: ::core::primitive::u32, @@ -22307,17 +19788,7 @@ pub mod api { ], ) } - #[doc = "Change the account associated with a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `new`: the new account ID."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] + #[doc = "See [`Pallet::set_account_id`]."] pub fn set_account_id( &self, index: ::core::primitive::u32, @@ -22334,17 +19805,7 @@ pub mod api { ], ) } - #[doc = "Set the field information for a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fields`: the fields that the registrar concerns themselves with."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] + #[doc = "See [`Pallet::set_fields`]."] pub fn set_fields( &self, index: ::core::primitive::u32, @@ -22363,23 +19824,7 @@ pub mod api { ], ) } - #[doc = "Provide a judgement for an account's identity."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `reg_index`."] - #[doc = ""] - #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] - #[doc = "- `identity`: The hash of the [`IdentityInfo`] for that the judgement is provided."] - #[doc = ""] - #[doc = "Emits `JudgementGiven` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + X)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::provide_judgement`]."] pub fn provide_judgement( &self, reg_index: ::core::primitive::u32, @@ -22405,24 +19850,7 @@ pub mod api { ], ) } - #[doc = "Remove an account's identity and sub-account information and slash the deposits."] - #[doc = ""] - #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] - #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] - #[doc = "manually using `cancel_request`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] - #[doc = ""] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = ""] - #[doc = "Emits `IdentityKilled` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + S + X)`"] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `S` subs-count (hard- and deposit-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::kill_identity`]."] pub fn kill_identity( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -22438,13 +19866,7 @@ pub mod api { ], ) } - #[doc = "Add the given account to the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::add_sub`]."] pub fn add_sub( &self, sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -22462,10 +19884,7 @@ pub mod api { ], ) } - #[doc = "Alter the associated name of the given sub-account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::rename_sub`]."] pub fn rename_sub( &self, sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -22482,13 +19901,7 @@ pub mod api { ], ) } - #[doc = "Remove the given account from the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::remove_sub`]."] pub fn remove_sub( &self, sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -22505,16 +19918,7 @@ pub mod api { ], ) } - #[doc = "Remove the sender as a sub-account."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender (*not* the original depositor)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "super-identity."] - #[doc = ""] - #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] - #[doc = "controller of an account is maliciously registered as a sub-account."] + #[doc = "See [`Pallet::quit_sub`]."] pub fn quit_sub(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", @@ -22530,7 +19934,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_identity::pallet::Event; pub mod events { use super::runtime_types; @@ -23034,9 +20438,9 @@ pub mod api { pub mod proxy { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_proxy::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_proxy::pallet::Call; pub mod calls { use super::root_mod; @@ -23237,15 +20641,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy`]."] pub fn proxy( &self, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23263,22 +20659,13 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 136u8, 248u8, 134u8, 224u8, 164u8, 120u8, 212u8, 244u8, 156u8, 137u8, - 17u8, 57u8, 50u8, 88u8, 91u8, 32u8, 12u8, 224u8, 82u8, 129u8, 146u8, - 223u8, 93u8, 202u8, 130u8, 40u8, 231u8, 46u8, 126u8, 127u8, 201u8, - 154u8, + 171u8, 10u8, 194u8, 30u8, 89u8, 182u8, 54u8, 142u8, 107u8, 66u8, 194u8, + 115u8, 67u8, 5u8, 103u8, 93u8, 51u8, 7u8, 252u8, 55u8, 128u8, 197u8, + 17u8, 156u8, 74u8, 48u8, 223u8, 40u8, 51u8, 55u8, 39u8, 240u8, ], ) } - #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] - #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] + #[doc = "See [`Pallet::add_proxy`]."] pub fn add_proxy( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23300,13 +20687,7 @@ pub mod api { ], ) } - #[doc = "Unregister a proxy account for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] - #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] + #[doc = "See [`Pallet::remove_proxy`]."] pub fn remove_proxy( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23328,12 +20709,7 @@ pub mod api { ], ) } - #[doc = "Unregister all proxy accounts for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] - #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] + #[doc = "See [`Pallet::remove_proxies`]."] pub fn remove_proxies(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Proxy", @@ -23347,24 +20723,7 @@ pub mod api { ], ) } - #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] - #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] - #[doc = ""] - #[doc = "Requires a `Signed` origin."] - #[doc = ""] - #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] - #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] - #[doc = "allow for maximum flexibility."] - #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] - #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] - #[doc = "want to use `0`."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] - #[doc = ""] - #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] - #[doc = "same sender, with the same parameters."] - #[doc = ""] - #[doc = "Fails if there are insufficient funds to pay for deposit."] + #[doc = "See [`Pallet::create_pure`]."] pub fn create_pure( &self, proxy_type: runtime_types::polkadot_runtime::ProxyType, @@ -23386,22 +20745,7 @@ pub mod api { ], ) } - #[doc = "Removes a previously spawned pure proxy."] - #[doc = ""] - #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] - #[doc = "inaccessible."] - #[doc = ""] - #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] - #[doc = "`pure` with corresponding parameters."] - #[doc = ""] - #[doc = "- `spawner`: The account that originally called `pure` to create this account."] - #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] - #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] - #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] - #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] - #[doc = ""] - #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] - #[doc = "account whose `pure` call has corresponding parameters."] + #[doc = "See [`Pallet::kill_pure`]."] pub fn kill_pure( &self, spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23427,21 +20771,7 @@ pub mod api { ], ) } - #[doc = "Publish the hash of a proxy-call that will be made in the future."] - #[doc = ""] - #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] - #[doc = "if the delay associated with the proxy relationship is greater than zero."] - #[doc = ""] - #[doc = "No more than `MaxPending` announcements may be made at any one time."] - #[doc = ""] - #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] - #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::announce`]."] pub fn announce( &self, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23458,16 +20788,7 @@ pub mod api { ], ) } - #[doc = "Remove a given announcement."] - #[doc = ""] - #[doc = "May be called by a proxy account to remove a call they previously announced and return"] - #[doc = "the deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::remove_announcement`]."] pub fn remove_announcement( &self, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23485,16 +20806,7 @@ pub mod api { ], ) } - #[doc = "Remove the given announcement of a delegate."] - #[doc = ""] - #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] - #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `delegate`: The account that previously announced the call."] - #[doc = "- `call_hash`: The hash of the call to be made."] + #[doc = "See [`Pallet::reject_announcement`]."] pub fn reject_announcement( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23515,17 +20827,7 @@ pub mod api { ], ) } - #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "Removes any corresponding announcement(s)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy_announced`]."] pub fn proxy_announced( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -23545,16 +20847,16 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 12u8, 189u8, 0u8, 232u8, 151u8, 222u8, 217u8, 130u8, 186u8, 212u8, - 144u8, 137u8, 55u8, 81u8, 253u8, 63u8, 150u8, 52u8, 246u8, 57u8, 82u8, - 121u8, 233u8, 175u8, 22u8, 171u8, 167u8, 216u8, 221u8, 135u8, 40u8, - 237u8, + 92u8, 39u8, 178u8, 161u8, 128u8, 239u8, 29u8, 145u8, 200u8, 189u8, + 89u8, 198u8, 22u8, 244u8, 222u8, 227u8, 145u8, 146u8, 34u8, 181u8, + 118u8, 140u8, 99u8, 3u8, 102u8, 195u8, 214u8, 126u8, 178u8, 193u8, + 190u8, 13u8, ], ) } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_proxy::pallet::Event; pub mod events { use super::runtime_types; @@ -23900,9 +21202,9 @@ pub mod api { pub mod multisig { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_multisig::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_multisig::pallet::Call; pub mod calls { use super::root_mod; @@ -23998,18 +21300,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] - #[doc = "multi-signature, but do not participate in the approval process."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] + #[doc = "See [`Pallet::as_multi_threshold_1`]."] pub fn as_multi_threshold_1( &self, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -24023,52 +21314,13 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 85u8, 252u8, 181u8, 111u8, 73u8, 191u8, 121u8, 79u8, 167u8, 59u8, - 107u8, 66u8, 196u8, 206u8, 156u8, 114u8, 145u8, 184u8, 113u8, 83u8, - 205u8, 195u8, 196u8, 222u8, 157u8, 177u8, 147u8, 250u8, 43u8, 112u8, - 213u8, 176u8, + 226u8, 172u8, 123u8, 77u8, 159u8, 140u8, 46u8, 141u8, 46u8, 45u8, 98u8, + 81u8, 191u8, 89u8, 131u8, 13u8, 79u8, 171u8, 163u8, 218u8, 146u8, 38u8, + 178u8, 88u8, 155u8, 239u8, 247u8, 241u8, 80u8, 230u8, 254u8, 17u8, ], ) } - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "If there are enough, then dispatch the call."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] - #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] - #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] - #[doc = "may be found in the deposited `MultisigExecuted` event."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S + Z + Call)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- The weight of the `call`."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::as_multi`]."] pub fn as_multi( &self, threshold: ::core::primitive::u16, @@ -24090,42 +21342,14 @@ pub mod api { max_weight, }, [ - 139u8, 231u8, 146u8, 130u8, 22u8, 182u8, 37u8, 110u8, 242u8, 10u8, - 200u8, 68u8, 29u8, 116u8, 237u8, 231u8, 7u8, 85u8, 232u8, 192u8, 180u8, - 187u8, 25u8, 109u8, 90u8, 58u8, 93u8, 164u8, 20u8, 190u8, 120u8, 226u8, + 66u8, 36u8, 54u8, 163u8, 207u8, 134u8, 214u8, 214u8, 241u8, 81u8, + 199u8, 26u8, 57u8, 248u8, 207u8, 249u8, 249u8, 45u8, 212u8, 2u8, 59u8, + 132u8, 114u8, 193u8, 62u8, 66u8, 183u8, 201u8, 5u8, 210u8, 221u8, + 111u8, ], ) } - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::approve_as_multi`]."] pub fn approve_as_multi( &self, threshold: ::core::primitive::u16, @@ -24153,27 +21377,7 @@ pub mod api { ], ) } - #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] - #[doc = "for this operation will be unreserved on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] - #[doc = "transaction for this dispatch."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- One event."] - #[doc = "- I/O: 1 read `O(S)`, one remove."] - #[doc = "- Storage: removes one item."] + #[doc = "See [`Pallet::cancel_as_multi`]."] pub fn cancel_as_multi( &self, threshold: ::core::primitive::u16, @@ -24200,7 +21404,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_multisig::pallet::Event; pub mod events { use super::runtime_types; @@ -24408,9 +21612,9 @@ pub mod api { pub mod bounties { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_bounties::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_bounties::pallet::Call; pub mod calls { use super::root_mod; @@ -24589,18 +21793,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Propose a new bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] - #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] - #[doc = "or slashed when rejected."] - #[doc = ""] - #[doc = "- `curator`: The curator account whom will manage this bounty."] - #[doc = "- `fee`: The curator fee."] - #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] - #[doc = "- `description`: The description of this bounty."] + #[doc = "See [`Pallet::propose_bounty`]."] pub fn propose_bounty( &self, value: ::core::primitive::u128, @@ -24617,13 +21810,7 @@ pub mod api { ], ) } - #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] - #[doc = "and the original deposit will be returned."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::approve_bounty`]."] pub fn approve_bounty( &self, bounty_id: ::core::primitive::u32, @@ -24640,12 +21827,7 @@ pub mod api { ], ) } - #[doc = "Assign a curator to a funded bounty."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::propose_curator`]."] pub fn propose_curator( &self, bounty_id: ::core::primitive::u32, @@ -24668,23 +21850,7 @@ pub mod api { ], ) } - #[doc = "Unassign curator from a bounty."] - #[doc = ""] - #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] - #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] - #[doc = ""] - #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] - #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] - #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] - #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] - #[doc = "we should pick a new curator. In this case the curator should also be slashed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::unassign_curator`]."] pub fn unassign_curator( &self, bounty_id: ::core::primitive::u32, @@ -24701,13 +21867,7 @@ pub mod api { ], ) } - #[doc = "Accept the curator role for a bounty."] - #[doc = "A deposit will be reserved from curator and refund upon successful payout."] - #[doc = ""] - #[doc = "May only be called from the curator."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::accept_curator`]."] pub fn accept_curator( &self, bounty_id: ::core::primitive::u32, @@ -24723,16 +21883,7 @@ pub mod api { ], ) } - #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] - #[doc = "after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to award."] - #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::award_bounty`]."] pub fn award_bounty( &self, bounty_id: ::core::primitive::u32, @@ -24753,14 +21904,7 @@ pub mod api { ], ) } - #[doc = "Claim the payout from an awarded bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to claim."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::claim_bounty`]."] pub fn claim_bounty( &self, bounty_id: ::core::primitive::u32, @@ -24777,15 +21921,7 @@ pub mod api { ], ) } - #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] - #[doc = "the curator deposit will be unreserved if possible."] - #[doc = ""] - #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to cancel."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::close_bounty`]."] pub fn close_bounty( &self, bounty_id: ::core::primitive::u32, @@ -24802,15 +21938,7 @@ pub mod api { ], ) } - #[doc = "Extend the expiry time of an active bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to extend."] - #[doc = "- `remark`: additional information."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::extend_bounty_expiry`]."] pub fn extend_bounty_expiry( &self, bounty_id: ::core::primitive::u32, @@ -24830,7 +21958,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_bounties::pallet::Event; pub mod events { use super::runtime_types; @@ -25273,9 +22401,9 @@ pub mod api { pub mod child_bounties { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_child_bounties::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_child_bounties::pallet::Call; pub mod calls { use super::root_mod; @@ -25431,25 +22559,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Add a new child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of parent"] - #[doc = "bounty and the parent bounty must be in \"active\" state."] - #[doc = ""] - #[doc = "Child-bounty gets added successfully & fund gets transferred from"] - #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] - #[doc = "funds, else the call fails."] - #[doc = ""] - #[doc = "Upper bound to maximum number of active child bounties that can be"] - #[doc = "added are managed via runtime trait config"] - #[doc = "[`Config::MaxActiveChildBountyCount`]."] - #[doc = ""] - #[doc = "If the call is success, the status of child-bounty is updated to"] - #[doc = "\"Added\"."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] - #[doc = "- `value`: Value for executing the proposal."] - #[doc = "- `description`: Text description for the child-bounty."] + #[doc = "See [`Pallet::add_child_bounty`]."] pub fn add_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -25472,21 +22582,7 @@ pub mod api { ], ) } - #[doc = "Propose curator for funded child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be curator of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `curator`: Address of child-bounty curator."] - #[doc = "- `fee`: payment fee to child-bounty curator for execution."] + #[doc = "See [`Pallet::propose_curator`]."] pub fn propose_curator( &self, parent_bounty_id: ::core::primitive::u32, @@ -25510,25 +22606,7 @@ pub mod api { ], ) } - #[doc = "Accept the curator role for the child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this"] - #[doc = "child-bounty."] - #[doc = ""] - #[doc = "A deposit will be reserved from the curator and refund upon"] - #[doc = "successful payout or cancellation."] - #[doc = ""] - #[doc = "Fee for curator is deducted from curator fee of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] - #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::accept_curator`]."] pub fn accept_curator( &self, parent_bounty_id: ::core::primitive::u32, @@ -25548,40 +22626,7 @@ pub mod api { ], ) } - #[doc = "Unassign curator from a child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] - #[doc = "the curator of the parent bounty, or any signed origin."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] - #[doc = "curator, parent bounty must be in active state, for this call to"] - #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] - #[doc = "this call irrespective of the parent bounty state."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin` or the"] - #[doc = "parent bounty curator, we assume that the child-bounty curator is"] - #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] - #[doc = "slashed."] - #[doc = ""] - #[doc = "If the origin is the child-bounty curator, we take this as a sign"] - #[doc = "that they are unable to do their job, and are willingly giving up."] - #[doc = "We could slash the deposit, but for now we allow them to unreserve"] - #[doc = "their deposit and exit without issue. (We may want to change this if"] - #[doc = "it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] - #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] - #[doc = "inactive state of child-bounty curator."] - #[doc = ""] - #[doc = "This allows anyone in the community to call out that a child-bounty"] - #[doc = "curator is not doing their due diligence, and we should pick a new"] - #[doc = "one. In this case the child-bounty curator deposit is slashed."] - #[doc = ""] - #[doc = "State of child-bounty is moved to Added state on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::unassign_curator`]."] pub fn unassign_curator( &self, parent_bounty_id: ::core::primitive::u32, @@ -25602,23 +22647,7 @@ pub mod api { ], ) } - #[doc = "Award child-bounty to a beneficiary."] - #[doc = ""] - #[doc = "The beneficiary will be able to claim the funds after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the parent curator or"] - #[doc = "curator of this child-bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in active state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `beneficiary`: Beneficiary account."] + #[doc = "See [`Pallet::award_child_bounty`]."] pub fn award_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -25641,22 +22670,7 @@ pub mod api { ], ) } - #[doc = "Claim the payout from an awarded child-bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call may be any signed origin."] - #[doc = ""] - #[doc = "Call works independent of parent bounty state, No need for parent"] - #[doc = "bounty to be in active state."] - #[doc = ""] - #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] - #[doc = "paid & curator deposit is unreserved."] - #[doc = ""] - #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] - #[doc = "call. And instance of child-bounty is removed from the state on"] - #[doc = "successful call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::claim_child_bounty`]."] pub fn claim_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -25676,28 +22690,7 @@ pub mod api { ], ) } - #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] - #[doc = "are transferred to parent bounty account. The child-bounty curator"] - #[doc = "deposit may be unreserved if possible."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be either parent curator or"] - #[doc = "`T::RejectOrigin`."] - #[doc = ""] - #[doc = "If the state of child-bounty is `Active`, curator deposit is"] - #[doc = "unreserved."] - #[doc = ""] - #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] - #[doc = "returns `PendingPayout` error."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] - #[doc = "active state, for this child-bounty call to work. For origin"] - #[doc = "T::RejectOrigin execution is forced."] - #[doc = ""] - #[doc = "Instance of child-bounty is removed from the state on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::close_child_bounty`]."] pub fn close_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -25719,7 +22712,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_child_bounties::pallet::Event; pub mod events { use super::runtime_types; @@ -26069,9 +23062,9 @@ pub mod api { pub mod tips { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_tips::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_tips::pallet::Call; pub mod calls { use super::root_mod; @@ -26190,22 +23183,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Report something `reason` that deserves a tip and claim any eventual the finder's fee."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] - #[doc = "`DataDepositPerByte` for each byte in `reason`."] - #[doc = ""] - #[doc = "- `reason`: The reason for, or the thing that deserves, the tip; generally this will be"] - #[doc = " a UTF-8-encoded URL."] - #[doc = "- `who`: The account which should be credited for the tip."] - #[doc = ""] - #[doc = "Emits `NewTip` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)` where `R` length of `reason`."] - #[doc = " - encoding and hashing of 'reason'"] + #[doc = "See [`Pallet::report_awesome`]."] pub fn report_awesome( &self, reason: ::std::vec::Vec<::core::primitive::u8>, @@ -26222,22 +23200,7 @@ pub mod api { ], ) } - #[doc = "Retract a prior tip-report from `report_awesome`, and cancel the process of tipping."] - #[doc = ""] - #[doc = "If successful, the original deposit will be unreserved."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the tip identified by `hash`"] - #[doc = "must have been reported by the signing account through `report_awesome` (and not"] - #[doc = "through `tip_new`)."] - #[doc = ""] - #[doc = "- `hash`: The identity of the open tip for which a tip value is declared. This is formed"] - #[doc = " as the hash of the tuple of the original tip `reason` and the beneficiary account ID."] - #[doc = ""] - #[doc = "Emits `TipRetracted` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`"] - #[doc = " - Depends on the length of `T::Hash` which is fixed."] + #[doc = "See [`Pallet::retract_tip`]."] pub fn retract_tip( &self, hash: ::subxt::utils::H256, @@ -26254,25 +23217,7 @@ pub mod api { ], ) } - #[doc = "Give a tip for something new; no finder's fee will be taken."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must be a"] - #[doc = "member of the `Tippers` set."] - #[doc = ""] - #[doc = "- `reason`: The reason for, or the thing that deserves, the tip; generally this will be"] - #[doc = " a UTF-8-encoded URL."] - #[doc = "- `who`: The account which should be credited for the tip."] - #[doc = "- `tip_value`: The amount of tip that the sender would like to give. The median tip"] - #[doc = " value of active tippers will be given to the `who`."] - #[doc = ""] - #[doc = "Emits `NewTip` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + T)` where `R` length of `reason`, `T` is the number of tippers."] - #[doc = " - `O(T)`: decoding `Tipper` vec of length `T`. `T` is charged as upper bound given by"] - #[doc = " `ContainsLengthBound`. The actual cost depends on the implementation of"] - #[doc = " `T::Tippers`."] - #[doc = " - `O(R)`: hashing and encoding of reason of length `R`"] + #[doc = "See [`Pallet::tip_new`]."] pub fn tip_new( &self, reason: ::std::vec::Vec<::core::primitive::u8>, @@ -26295,27 +23240,7 @@ pub mod api { ], ) } - #[doc = "Declare a tip value for an already-open tip."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must be a"] - #[doc = "member of the `Tippers` set."] - #[doc = ""] - #[doc = "- `hash`: The identity of the open tip for which a tip value is declared. This is formed"] - #[doc = " as the hash of the tuple of the hash of the original tip `reason` and the beneficiary"] - #[doc = " account ID."] - #[doc = "- `tip_value`: The amount of tip that the sender would like to give. The median tip"] - #[doc = " value of active tippers will be given to the `who`."] - #[doc = ""] - #[doc = "Emits `TipClosing` if the threshold of tippers has been reached and the countdown period"] - #[doc = "has started."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(T)` where `T` is the number of tippers. decoding `Tipper` vec of length `T`, insert"] - #[doc = " tip and check closing, `T` is charged as upper bound given by `ContainsLengthBound`."] - #[doc = " The actual cost depends on the implementation of `T::Tippers`."] - #[doc = ""] - #[doc = " Actually weight could be lower as it depends on how many tips are in `OpenTip` but it"] - #[doc = " is weighted as if almost full i.e of length `T-1`."] + #[doc = "See [`Pallet::tip`]."] pub fn tip( &self, hash: ::subxt::utils::H256, @@ -26333,19 +23258,7 @@ pub mod api { ], ) } - #[doc = "Close and payout a tip."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "The tip identified by `hash` must have finished its countdown period."] - #[doc = ""] - #[doc = "- `hash`: The identity of the open tip for which a tip value is declared. This is formed"] - #[doc = " as the hash of the tuple of the original tip `reason` and the beneficiary account ID."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- : `O(T)` where `T` is the number of tippers. decoding `Tipper` vec of length `T`. `T`"] - #[doc = " is charged as upper bound given by `ContainsLengthBound`. The actual cost depends on"] - #[doc = " the implementation of `T::Tippers`."] + #[doc = "See [`Pallet::close_tip`]."] pub fn close_tip( &self, hash: ::subxt::utils::H256, @@ -26362,16 +23275,7 @@ pub mod api { ], ) } - #[doc = "Remove and slash an already-open tip."] - #[doc = ""] - #[doc = "May only be called from `T::RejectOrigin`."] - #[doc = ""] - #[doc = "As a result, the finder is slashed and the deposits are lost."] - #[doc = ""] - #[doc = "Emits `TipSlashed` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::slash_tip`]."] pub fn slash_tip( &self, hash: ::subxt::utils::H256, @@ -26390,7 +23294,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_tips::pallet::Event; pub mod events { use super::runtime_types; @@ -26689,7 +23593,7 @@ pub mod api { use super::runtime_types; #[doc = "Error of the pallet that can be returned in response to dispatches."] pub type Error = runtime_types::pallet_election_provider_multi_phase::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_election_provider_multi_phase::pallet::Call; pub mod calls { use super::root_mod; @@ -26800,20 +23704,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Submit a solution for the unsigned phase."] - #[doc = ""] - #[doc = "The dispatch origin fo this call must be __none__."] - #[doc = ""] - #[doc = "This submission is checked on the fly. Moreover, this unsigned solution is only"] - #[doc = "validated when submitted to the pool from the **local** node. Effectively, this means"] - #[doc = "that only active validators can submit this transaction when authoring a block (similar"] - #[doc = "to an inherent)."] - #[doc = ""] - #[doc = "To prevent any incorrect solution (and thus wasted time/weight), this transaction will"] - #[doc = "panic if the solution submitted by the validator is invalid in any way, effectively"] - #[doc = "putting their authoring reward at risk."] - #[doc = ""] - #[doc = "No deposit or reward is associated with this submission."] + #[doc = "See [`Pallet::submit_unsigned`]."] pub fn submit_unsigned( &self, raw_solution: runtime_types::pallet_election_provider_multi_phase::RawSolution< @@ -26835,11 +23726,7 @@ pub mod api { ], ) } - #[doc = "Set a new value for `MinimumUntrustedScore`."] - #[doc = ""] - #[doc = "Dispatch origin must be aligned with `T::ForceOrigin`."] - #[doc = ""] - #[doc = "This check can be turned off by setting the value to `None`."] + #[doc = "See [`Pallet::set_minimum_untrusted_score`]."] pub fn set_minimum_untrusted_score( &self, maybe_next_score: ::core::option::Option< @@ -26858,14 +23745,7 @@ pub mod api { ], ) } - #[doc = "Set a solution in the queue, to be handed out to the client of this pallet in the next"] - #[doc = "call to `ElectionProvider::elect`."] - #[doc = ""] - #[doc = "This can only be set by `T::ForceOrigin`, and only when the phase is `Emergency`."] - #[doc = ""] - #[doc = "The solution is not checked for any feasibility and is assumed to be trustworthy, as any"] - #[doc = "feasibility check itself can in principle cause the election process to fail (due to"] - #[doc = "memory/weight constrains)."] + #[doc = "See [`Pallet::set_emergency_election_result`]."] pub fn set_emergency_election_result( &self, supports: ::std::vec::Vec<( @@ -26884,15 +23764,7 @@ pub mod api { ], ) } - #[doc = "Submit a solution for the signed phase."] - #[doc = ""] - #[doc = "The dispatch origin fo this call must be __signed__."] - #[doc = ""] - #[doc = "The solution is potentially queued, based on the claimed score and processed at the end"] - #[doc = "of the signed phase."] - #[doc = ""] - #[doc = "A deposit is reserved and recorded for the solution. Based on the outcome, the solution"] - #[doc = "might be rewarded, slashed, or get all or a part of the deposit back."] + #[doc = "See [`Pallet::submit`]."] pub fn submit( &self, raw_solution: runtime_types::pallet_election_provider_multi_phase::RawSolution< @@ -26912,10 +23784,7 @@ pub mod api { ], ) } - #[doc = "Trigger the governance fallback."] - #[doc = ""] - #[doc = "This can only be called when [`Phase::Emergency`] is enabled, as an alternative to"] - #[doc = "calling [`Call::set_emergency_election_result`]."] + #[doc = "See [`Pallet::governance_fallback`]."] pub fn governance_fallback( &self, maybe_max_voters: ::core::option::Option<::core::primitive::u32>, @@ -26938,7 +23807,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_election_provider_multi_phase::pallet::Event; pub mod events { use super::runtime_types; @@ -27694,9 +24563,9 @@ pub mod api { pub mod voter_list { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_bags_list::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_bags_list::pallet::Call; pub mod calls { use super::root_mod; @@ -27741,16 +24610,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Declare that some `dislocated` account has, through rewards or penalties, sufficiently"] - #[doc = "changed its score that it should properly fall into a different bag than its current"] - #[doc = "one."] - #[doc = ""] - #[doc = "Anyone can call this function about any potentially dislocated account."] - #[doc = ""] - #[doc = "Will always update the stored score of `dislocated` to the correct score, based on"] - #[doc = "`ScoreProvider`."] - #[doc = ""] - #[doc = "If `dislocated` does not exists, it returns an error."] + #[doc = "See [`Pallet::rebag`]."] pub fn rebag( &self, dislocated: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -27767,14 +24627,7 @@ pub mod api { ], ) } - #[doc = "Move the caller's Id directly in front of `lighter`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and can only be called by the Id of"] - #[doc = "the account going in front of `lighter`."] - #[doc = ""] - #[doc = "Only works if"] - #[doc = "- both nodes are within the same bag,"] - #[doc = "- and `origin` has a greater `Score` than `lighter`."] + #[doc = "See [`Pallet::put_in_front_of`]."] pub fn put_in_front_of( &self, lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -27793,7 +24646,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_bags_list::pallet::Event; pub mod events { use super::runtime_types; @@ -28032,9 +24885,9 @@ pub mod api { pub mod nomination_pools { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_nomination_pools::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_nomination_pools::pallet::Call; pub mod calls { use super::root_mod; @@ -28454,16 +25307,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Stake funds with a pool. The amount to bond is transferred from the member to the"] - #[doc = "pools account and immediately increases the pools bond."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "* An account can only be a member of a single pool."] - #[doc = "* An account cannot join the same pool multiple times."] - #[doc = "* This call will *not* dust the member account, so the member must have at least"] - #[doc = " `existential deposit + amount` in their account."] - #[doc = "* Only a pool with [`PoolState::Open`] can be joined"] + #[doc = "See [`Pallet::join`]."] pub fn join( &self, amount: ::core::primitive::u128, @@ -28480,13 +25324,7 @@ pub mod api { ], ) } - #[doc = "Bond `extra` more funds from `origin` into the pool to which they already belong."] - #[doc = ""] - #[doc = "Additional funds can come from either the free balance of the account, of from the"] - #[doc = "accumulated rewards, see [`BondExtra`]."] - #[doc = ""] - #[doc = "Bonding extra funds implies an automatic payout of all pending rewards as well."] - #[doc = "See `bond_extra_other` to bond pending rewards of `other` members."] + #[doc = "See [`Pallet::bond_extra`]."] pub fn bond_extra( &self, extra: runtime_types::pallet_nomination_pools::BondExtra< @@ -28505,14 +25343,7 @@ pub mod api { ], ) } - #[doc = "A bonded member can use this to claim their payout based on the rewards that the pool"] - #[doc = "has accumulated since their last claimed payout (OR since joining if this is their first"] - #[doc = "time claiming rewards). The payout will be transferred to the member's account."] - #[doc = ""] - #[doc = "The member will earn rewards pro rata based on the members stake vs the sum of the"] - #[doc = "members in the pools stake. Rewards do not \"expire\"."] - #[doc = ""] - #[doc = "See `claim_payout_other` to caim rewards on bahalf of some `other` pool member."] + #[doc = "See [`Pallet::claim_payout`]."] pub fn claim_payout(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "NominationPools", @@ -28525,37 +25356,7 @@ pub mod api { ], ) } - #[doc = "Unbond up to `unbonding_points` of the `member_account`'s funds from the pool. It"] - #[doc = "implicitly collects the rewards one last time, since not doing so would mean some"] - #[doc = "rewards would be forfeited."] - #[doc = ""] - #[doc = "Under certain conditions, this call can be dispatched permissionlessly (i.e. by any"] - #[doc = "account)."] - #[doc = ""] - #[doc = "# Conditions for a permissionless dispatch."] - #[doc = ""] - #[doc = "* The pool is blocked and the caller is either the root or bouncer. This is refereed to"] - #[doc = " as a kick."] - #[doc = "* The pool is destroying and the member is not the depositor."] - #[doc = "* The pool is destroying, the member is the depositor and no other members are in the"] - #[doc = " pool."] - #[doc = ""] - #[doc = "## Conditions for permissioned dispatch (i.e. the caller is also the"] - #[doc = "`member_account`):"] - #[doc = ""] - #[doc = "* The caller is not the depositor."] - #[doc = "* The caller is the depositor, the pool is destroying and no other members are in the"] - #[doc = " pool."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "If there are too many unlocking chunks to unbond with the pool account,"] - #[doc = "[`Call::pool_withdraw_unbonded`] can be called to try and minimize unlocking chunks."] - #[doc = "The [`StakingInterface::unbond`] will implicitly call [`Call::pool_withdraw_unbonded`]"] - #[doc = "to try to free chunks if necessary (ie. if unbound was called and no unlocking chunks"] - #[doc = "are available). However, it may not be possible to release the current unlocking chunks,"] - #[doc = "in which case, the result of this call will likely be the `NoMoreChunks` error from the"] - #[doc = "staking system."] + #[doc = "See [`Pallet::unbond`]."] pub fn unbond( &self, member_account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -28575,12 +25376,7 @@ pub mod api { ], ) } - #[doc = "Call `withdraw_unbonded` for the pools account. This call can be made by any account."] - #[doc = ""] - #[doc = "This is useful if their are too many unlocking chunks to call `unbond`, and some"] - #[doc = "can be cleared by withdrawing. In the case there are too many unlocking chunks, the user"] - #[doc = "would probably see an error like `NoMoreChunks` emitted from the staking system when"] - #[doc = "they attempt to unbond."] + #[doc = "See [`Pallet::pool_withdraw_unbonded`]."] pub fn pool_withdraw_unbonded( &self, pool_id: ::core::primitive::u32, @@ -28600,25 +25396,7 @@ pub mod api { ], ) } - #[doc = "Withdraw unbonded funds from `member_account`. If no bonded funds can be unbonded, an"] - #[doc = "error is returned."] - #[doc = ""] - #[doc = "Under certain conditions, this call can be dispatched permissionlessly (i.e. by any"] - #[doc = "account)."] - #[doc = ""] - #[doc = "# Conditions for a permissionless dispatch"] - #[doc = ""] - #[doc = "* The pool is in destroy mode and the target is not the depositor."] - #[doc = "* The target is the depositor and they are the only member in the sub pools."] - #[doc = "* The pool is blocked and the caller is either the root or bouncer."] - #[doc = ""] - #[doc = "# Conditions for permissioned dispatch"] - #[doc = ""] - #[doc = "* The caller is the target and they are not the depositor."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "If the target is the depositor, the pool will be destroyed."] + #[doc = "See [`Pallet::withdraw_unbonded`]."] pub fn withdraw_unbonded( &self, member_account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -28638,23 +25416,7 @@ pub mod api { ], ) } - #[doc = "Create a new delegation pool."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `amount` - The amount of funds to delegate to the pool. This also acts of a sort of"] - #[doc = " deposit since the pools creator cannot fully unbond funds until the pool is being"] - #[doc = " destroyed."] - #[doc = "* `index` - A disambiguation index for creating the account. Likely only useful when"] - #[doc = " creating multiple pools in the same extrinsic."] - #[doc = "* `root` - The account to set as [`PoolRoles::root`]."] - #[doc = "* `nominator` - The account to set as the [`PoolRoles::nominator`]."] - #[doc = "* `bouncer` - The account to set as the [`PoolRoles::bouncer`]."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "In addition to `amount`, the caller will transfer the existential deposit; so the caller"] - #[doc = "needs at have at least `amount + existential_deposit` transferrable."] + #[doc = "See [`Pallet::create`]."] pub fn create( &self, amount: ::core::primitive::u128, @@ -28678,12 +25440,7 @@ pub mod api { ], ) } - #[doc = "Create a new delegation pool with a previously used pool id"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "same as `create` with the inclusion of"] - #[doc = "* `pool_id` - `A valid PoolId."] + #[doc = "See [`Pallet::create_with_pool_id`]."] pub fn create_with_pool_id( &self, amount: ::core::primitive::u128, @@ -28710,13 +25467,7 @@ pub mod api { ], ) } - #[doc = "Nominate on behalf of the pool."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the pool nominator or the pool"] - #[doc = "root role."] - #[doc = ""] - #[doc = "This directly forward the call to the staking pallet, on behalf of the pool bonded"] - #[doc = "account."] + #[doc = "See [`Pallet::nominate`]."] pub fn nominate( &self, pool_id: ::core::primitive::u32, @@ -28736,16 +25487,7 @@ pub mod api { ], ) } - #[doc = "Set a new state for the pool."] - #[doc = ""] - #[doc = "If a pool is already in the `Destroying` state, then under no condition can its state"] - #[doc = "change again."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be either:"] - #[doc = ""] - #[doc = "1. signed by the bouncer, or the root role of the pool,"] - #[doc = "2. if the pool conditions to be open are NOT met (as described by `ok_to_be_open`), and"] - #[doc = " then the state of the pool can be permissionlessly changed to `Destroying`."] + #[doc = "See [`Pallet::set_state`]."] pub fn set_state( &self, pool_id: ::core::primitive::u32, @@ -28762,10 +25504,7 @@ pub mod api { ], ) } - #[doc = "Set a new metadata for the pool."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the bouncer, or the root role of the"] - #[doc = "pool."] + #[doc = "See [`Pallet::set_metadata`]."] pub fn set_metadata( &self, pool_id: ::core::primitive::u32, @@ -28782,17 +25521,7 @@ pub mod api { ], ) } - #[doc = "Update configurations for the nomination pools. The origin for this call must be"] - #[doc = "Root."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `min_join_bond` - Set [`MinJoinBond`]."] - #[doc = "* `min_create_bond` - Set [`MinCreateBond`]."] - #[doc = "* `max_pools` - Set [`MaxPools`]."] - #[doc = "* `max_members` - Set [`MaxPoolMembers`]."] - #[doc = "* `max_members_per_pool` - Set [`MaxPoolMembersPerPool`]."] - #[doc = "* `global_max_commission` - Set [`GlobalMaxCommission`]."] + #[doc = "See [`Pallet::set_configs`]."] pub fn set_configs( &self, min_join_bond: runtime_types::pallet_nomination_pools::ConfigOp< @@ -28832,13 +25561,7 @@ pub mod api { ], ) } - #[doc = "Update the roles of the pool."] - #[doc = ""] - #[doc = "The root is the only entity that can change any of the roles, including itself,"] - #[doc = "excluding the depositor, who can never change."] - #[doc = ""] - #[doc = "It emits an event, notifying UIs of the role change. This event is quite relevant to"] - #[doc = "most pool members and they should be informed of changes to pool roles."] + #[doc = "See [`Pallet::update_roles`]."] pub fn update_roles( &self, pool_id: ::core::primitive::u32, @@ -28868,13 +25591,7 @@ pub mod api { ], ) } - #[doc = "Chill on behalf of the pool."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the pool nominator or the pool"] - #[doc = "root role, same as [`Pallet::nominate`]."] - #[doc = ""] - #[doc = "This directly forward the call to the staking pallet, on behalf of the pool bonded"] - #[doc = "account."] + #[doc = "See [`Pallet::chill`]."] pub fn chill( &self, pool_id: ::core::primitive::u32, @@ -28890,15 +25607,7 @@ pub mod api { ], ) } - #[doc = "`origin` bonds funds from `extra` for some pool member `member` into their respective"] - #[doc = "pools."] - #[doc = ""] - #[doc = "`origin` can bond extra funds from free balance or pending rewards when `origin =="] - #[doc = "other`."] - #[doc = ""] - #[doc = "In the case of `origin != other`, `origin` can only bond extra pending rewards of"] - #[doc = "`other` members assuming set_claim_permission for the given member is"] - #[doc = "`PermissionlessAll` or `PermissionlessCompound`."] + #[doc = "See [`Pallet::bond_extra_other`]."] pub fn bond_extra_other( &self, member: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -28918,18 +25627,7 @@ pub mod api { ], ) } - #[doc = "Allows a pool member to set a claim permission to allow or disallow permissionless"] - #[doc = "bonding and withdrawing."] - #[doc = ""] - #[doc = "By default, this is `Permissioned`, which implies only the pool member themselves can"] - #[doc = "claim their pending rewards. If a pool member wishes so, they can set this to"] - #[doc = "`PermissionlessAll` to allow any account to claim their rewards and bond extra to the"] - #[doc = "pool."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `origin` - Member of a pool."] - #[doc = "* `actor` - Account to claim reward. // improve this"] + #[doc = "See [`Pallet::set_claim_permission`]."] pub fn set_claim_permission( &self, permission: runtime_types::pallet_nomination_pools::ClaimPermission, @@ -28945,10 +25643,7 @@ pub mod api { ], ) } - #[doc = "`origin` can claim payouts on some pool member `other`'s behalf."] - #[doc = ""] - #[doc = "Pool member `other` must have a `PermissionlessAll` or `PermissionlessWithdraw` in order"] - #[doc = "for this call to be successful."] + #[doc = "See [`Pallet::claim_payout_other`]."] pub fn claim_payout_other( &self, other: ::subxt::utils::AccountId32, @@ -28965,11 +25660,7 @@ pub mod api { ], ) } - #[doc = "Set the commission of a pool."] - #[doc = "Both a commission percentage and a commission payee must be provided in the `current`"] - #[doc = "tuple. Where a `current` of `None` is provided, any current commission will be removed."] - #[doc = ""] - #[doc = "- If a `None` is supplied to `new_commission`, existing commission will be removed."] + #[doc = "See [`Pallet::set_commission`]."] pub fn set_commission( &self, pool_id: ::core::primitive::u32, @@ -28993,11 +25684,7 @@ pub mod api { ], ) } - #[doc = "Set the maximum commission of a pool."] - #[doc = ""] - #[doc = "- Initial max can be set to any `Perbill`, and only smaller values thereafter."] - #[doc = "- Current commission will be lowered in the event it is higher than a new max"] - #[doc = " commission."] + #[doc = "See [`Pallet::set_commission_max`]."] pub fn set_commission_max( &self, pool_id: ::core::primitive::u32, @@ -29017,10 +25704,7 @@ pub mod api { ], ) } - #[doc = "Set the commission change rate for a pool."] - #[doc = ""] - #[doc = "Initial change rate is not bounded, whereas subsequent updates can only be more"] - #[doc = "restrictive than the current."] + #[doc = "See [`Pallet::set_commission_change_rate`]."] pub fn set_commission_change_rate( &self, pool_id: ::core::primitive::u32, @@ -29043,11 +25727,7 @@ pub mod api { ], ) } - #[doc = "Claim pending commission."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the `root` role of the pool. Pending"] - #[doc = "commission is paid out and added to total claimed commission`. Total pending commission"] - #[doc = "is reset to zero. the current."] + #[doc = "See [`Pallet::claim_commission`]."] pub fn claim_commission( &self, pool_id: ::core::primitive::u32, @@ -30076,9 +26756,9 @@ pub mod api { pub mod fast_unstake { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_fast_unstake::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_fast_unstake::pallet::Call; pub mod calls { use super::root_mod; @@ -30137,24 +26817,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Register oneself for fast-unstake."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the controller account, similar to"] - #[doc = "`staking::unbond`."] - #[doc = ""] - #[doc = "The stash associated with the origin must have no ongoing unlocking chunks. If"] - #[doc = "successful, this will fully unbond and chill the stash. Then, it will enqueue the stash"] - #[doc = "to be checked in further blocks."] - #[doc = ""] - #[doc = "If by the time this is called, the stash is actually eligible for fast-unstake, then"] - #[doc = "they are guaranteed to remain eligible, because the call will chill them as well."] - #[doc = ""] - #[doc = "If the check works, the entire staking data is removed, i.e. the stash is fully"] - #[doc = "unstaked."] - #[doc = ""] - #[doc = "If the check fails, the stash remains chilled and waiting for being unbonded as in with"] - #[doc = "the normal staking system, but they lose part of their unbonding chunks due to consuming"] - #[doc = "the chain's resources."] + #[doc = "See [`Pallet::register_fast_unstake`]."] pub fn register_fast_unstake( &self, ) -> ::subxt::tx::Payload { @@ -30169,13 +26832,7 @@ pub mod api { ], ) } - #[doc = "Deregister oneself from the fast-unstake."] - #[doc = ""] - #[doc = "This is useful if one is registered, they are still waiting, and they change their mind."] - #[doc = ""] - #[doc = "Note that the associated stash is still fully unbonded and chilled as a consequence of"] - #[doc = "calling `register_fast_unstake`. This should probably be followed by a call to"] - #[doc = "`Staking::rebond`."] + #[doc = "See [`Pallet::deregister`]."] pub fn deregister(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "FastUnstake", @@ -30188,9 +26845,7 @@ pub mod api { ], ) } - #[doc = "Control the operation of this pallet."] - #[doc = ""] - #[doc = "Dispatch origin must be signed by the [`Config::ControlOrigin`]."] + #[doc = "See [`Pallet::control`]."] pub fn control( &self, eras_to_check: ::core::primitive::u32, @@ -30208,7 +26863,7 @@ pub mod api { } } } - #[doc = "The events of this pallet."] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_fast_unstake::pallet::Event; pub mod events { use super::runtime_types; @@ -30260,22 +26915,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An internal error happened. Operations will be paused now."] - pub struct InternalError; - impl ::subxt::events::StaticEvent for InternalError { - const PALLET: &'static str = "FastUnstake"; - const EVENT: &'static str = "InternalError"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A batch was partially checked for the given eras, but the process did not finish."] pub struct BatchChecked { pub eras: ::std::vec::Vec<::core::primitive::u32>, @@ -30306,12 +26945,30 @@ pub mod api { const PALLET: &'static str = "FastUnstake"; const EVENT: &'static str = "BatchFinished"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An internal error happened. Operations will be paused now."] + pub struct InternalError; + impl ::subxt::events::StaticEvent for InternalError { + const PALLET: &'static str = "FastUnstake"; + const EVENT: &'static str = "InternalError"; + } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { #[doc = " The current \"head of the queue\" being unstaked."] + #[doc = ""] + #[doc = " The head in itself can be a batch of up to [`Config::BatchSize`] stakers."] pub fn head( &self, ) -> ::subxt::storage::address::Address< @@ -30335,8 +26992,6 @@ pub mod api { #[doc = " The map of all accounts wishing to be unstaked."] #[doc = ""] #[doc = " Keeps track of `AccountId` wishing to unstake and it's corresponding deposit."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] pub fn queue( &self, _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, @@ -30364,8 +27019,6 @@ pub mod api { #[doc = " The map of all accounts wishing to be unstaked."] #[doc = ""] #[doc = " Keeps track of `AccountId` wishing to unstake and it's corresponding deposit."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] pub fn queue_root( &self, ) -> ::subxt::storage::address::Address< @@ -30411,10 +27064,12 @@ pub mod api { } #[doc = " Number of eras to check per block."] #[doc = ""] - #[doc = " If set to 0, this pallet does absolutely nothing."] + #[doc = " If set to 0, this pallet does absolutely nothing. Cannot be set to more than"] + #[doc = " [`Config::MaxErasToCheckPerBlock`]."] #[doc = ""] - #[doc = " Based on the amount of weight available at `on_idle`, up to this many eras of a single"] - #[doc = " nominator might be checked."] + #[doc = " Based on the amount of weight available at [`Pallet::on_idle`], up to this many eras are"] + #[doc = " checked. The checking is represented by updating [`UnstakeRequest::checked`], which is"] + #[doc = " stored in [`Head`]."] pub fn eras_to_check_per_block( &self, ) -> ::subxt::storage::address::Address< @@ -30464,9 +27119,9 @@ pub mod api { pub mod configuration { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_parachains::configuration::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::configuration::pallet::Call; pub mod calls { use super::root_mod; @@ -30904,23 +27559,6 @@ pub mod api { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_downward_message_size"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetUmpServiceTotalWeight { - pub new: runtime_types::sp_weights::weight_v2::Weight, - } - impl ::subxt::blocks::StaticExtrinsic for SetUmpServiceTotalWeight { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_ump_service_total_weight"; - } #[derive( :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, @@ -31165,23 +27803,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetUmpMaxIndividualWeight { - pub new: runtime_types::sp_weights::weight_v2::Weight, - } - impl ::subxt::blocks::StaticExtrinsic for SetUmpMaxIndividualWeight { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_ump_max_individual_weight"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SetPvfCheckingEnabled { pub new: ::core::primitive::bool, } @@ -31271,7 +27892,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SetExecutorParams { pub new: - runtime_types::polkadot_primitives::v4::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, } impl ::subxt::blocks::StaticExtrinsic for SetExecutorParams { const PALLET: &'static str = "Configuration"; @@ -31280,7 +27901,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the validation upgrade cooldown."] + #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] pub fn set_validation_upgrade_cooldown( &self, new: ::core::primitive::u32, @@ -31297,7 +27918,7 @@ pub mod api { ], ) } - #[doc = "Set the validation upgrade delay."] + #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] pub fn set_validation_upgrade_delay( &self, new: ::core::primitive::u32, @@ -31313,7 +27934,7 @@ pub mod api { ], ) } - #[doc = "Set the acceptance period for an included candidate."] + #[doc = "See [`Pallet::set_code_retention_period`]."] pub fn set_code_retention_period( &self, new: ::core::primitive::u32, @@ -31330,7 +27951,7 @@ pub mod api { ], ) } - #[doc = "Set the max validation code size for incoming upgrades."] + #[doc = "See [`Pallet::set_max_code_size`]."] pub fn set_max_code_size( &self, new: ::core::primitive::u32, @@ -31347,7 +27968,7 @@ pub mod api { ], ) } - #[doc = "Set the max POV block size for incoming upgrades."] + #[doc = "See [`Pallet::set_max_pov_size`]."] pub fn set_max_pov_size( &self, new: ::core::primitive::u32, @@ -31363,7 +27984,7 @@ pub mod api { ], ) } - #[doc = "Set the max head data size for paras."] + #[doc = "See [`Pallet::set_max_head_data_size`]."] pub fn set_max_head_data_size( &self, new: ::core::primitive::u32, @@ -31380,7 +28001,7 @@ pub mod api { ], ) } - #[doc = "Set the number of parathread execution cores."] + #[doc = "See [`Pallet::set_parathread_cores`]."] pub fn set_parathread_cores( &self, new: ::core::primitive::u32, @@ -31397,7 +28018,7 @@ pub mod api { ], ) } - #[doc = "Set the number of retries for a particular parathread."] + #[doc = "See [`Pallet::set_parathread_retries`]."] pub fn set_parathread_retries( &self, new: ::core::primitive::u32, @@ -31414,7 +28035,7 @@ pub mod api { ], ) } - #[doc = "Set the parachain validator-group rotation frequency"] + #[doc = "See [`Pallet::set_group_rotation_frequency`]."] pub fn set_group_rotation_frequency( &self, new: ::core::primitive::u32, @@ -31430,7 +28051,7 @@ pub mod api { ], ) } - #[doc = "Set the availability period for parachains."] + #[doc = "See [`Pallet::set_chain_availability_period`]."] pub fn set_chain_availability_period( &self, new: ::core::primitive::u32, @@ -31447,7 +28068,7 @@ pub mod api { ], ) } - #[doc = "Set the availability period for parathreads."] + #[doc = "See [`Pallet::set_thread_availability_period`]."] pub fn set_thread_availability_period( &self, new: ::core::primitive::u32, @@ -31464,7 +28085,7 @@ pub mod api { ], ) } - #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] + #[doc = "See [`Pallet::set_scheduling_lookahead`]."] pub fn set_scheduling_lookahead( &self, new: ::core::primitive::u32, @@ -31481,7 +28102,7 @@ pub mod api { ], ) } - #[doc = "Set the maximum number of validators to assign to any core."] + #[doc = "See [`Pallet::set_max_validators_per_core`]."] pub fn set_max_validators_per_core( &self, new: ::core::option::Option<::core::primitive::u32>, @@ -31498,7 +28119,7 @@ pub mod api { ], ) } - #[doc = "Set the maximum number of validators to use in parachain consensus."] + #[doc = "See [`Pallet::set_max_validators`]."] pub fn set_max_validators( &self, new: ::core::option::Option<::core::primitive::u32>, @@ -31515,7 +28136,7 @@ pub mod api { ], ) } - #[doc = "Set the dispute period, in number of sessions to keep for disputes."] + #[doc = "See [`Pallet::set_dispute_period`]."] pub fn set_dispute_period( &self, new: ::core::primitive::u32, @@ -31532,7 +28153,7 @@ pub mod api { ], ) } - #[doc = "Set the dispute post conclusion acceptance period."] + #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] pub fn set_dispute_post_conclusion_acceptance_period( &self, new: ::core::primitive::u32, @@ -31550,8 +28171,7 @@ pub mod api { ], ) } - #[doc = "Set the no show slots, in number of number of consensus slots."] - #[doc = "Must be at least 1."] + #[doc = "See [`Pallet::set_no_show_slots`]."] pub fn set_no_show_slots( &self, new: ::core::primitive::u32, @@ -31567,7 +28187,7 @@ pub mod api { ], ) } - #[doc = "Set the total number of delay tranches."] + #[doc = "See [`Pallet::set_n_delay_tranches`]."] pub fn set_n_delay_tranches( &self, new: ::core::primitive::u32, @@ -31584,7 +28204,7 @@ pub mod api { ], ) } - #[doc = "Set the zeroth delay tranche width."] + #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] pub fn set_zeroth_delay_tranche_width( &self, new: ::core::primitive::u32, @@ -31600,7 +28220,7 @@ pub mod api { ], ) } - #[doc = "Set the number of validators needed to approve a block."] + #[doc = "See [`Pallet::set_needed_approvals`]."] pub fn set_needed_approvals( &self, new: ::core::primitive::u32, @@ -31616,7 +28236,7 @@ pub mod api { ], ) } - #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] + #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] pub fn set_relay_vrf_modulo_samples( &self, new: ::core::primitive::u32, @@ -31633,7 +28253,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] + #[doc = "See [`Pallet::set_max_upward_queue_count`]."] pub fn set_max_upward_queue_count( &self, new: ::core::primitive::u32, @@ -31650,7 +28270,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at once."] + #[doc = "See [`Pallet::set_max_upward_queue_size`]."] pub fn set_max_upward_queue_size( &self, new: ::core::primitive::u32, @@ -31667,7 +28287,7 @@ pub mod api { ], ) } - #[doc = "Set the critical downward message size."] + #[doc = "See [`Pallet::set_max_downward_message_size`]."] pub fn set_max_downward_message_size( &self, new: ::core::primitive::u32, @@ -31683,24 +28303,7 @@ pub mod api { ], ) } - #[doc = "Sets the soft limit for the phase of dispatching dispatchable upward messages."] - pub fn set_ump_service_total_weight( - &self, - new: runtime_types::sp_weights::weight_v2::Weight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Configuration", - "set_ump_service_total_weight", - types::SetUmpServiceTotalWeight { new }, - [ - 198u8, 49u8, 252u8, 136u8, 11u8, 109u8, 37u8, 234u8, 110u8, 90u8, - 143u8, 149u8, 95u8, 123u8, 73u8, 48u8, 150u8, 28u8, 252u8, 134u8, - 227u8, 236u8, 23u8, 66u8, 154u8, 92u8, 150u8, 218u8, 178u8, 132u8, - 82u8, 111u8, - ], - ) - } - #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] + #[doc = "See [`Pallet::set_max_upward_message_size`]."] pub fn set_max_upward_message_size( &self, new: ::core::primitive::u32, @@ -31717,7 +28320,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of messages that a candidate can contain."] + #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] pub fn set_max_upward_message_num_per_candidate( &self, new: ::core::primitive::u32, @@ -31734,7 +28337,7 @@ pub mod api { ], ) } - #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] + #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] pub fn set_hrmp_open_request_ttl( &self, new: ::core::primitive::u32, @@ -31750,7 +28353,7 @@ pub mod api { ], ) } - #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] + #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] pub fn set_hrmp_sender_deposit( &self, new: ::core::primitive::u128, @@ -31766,8 +28369,7 @@ pub mod api { ], ) } - #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] - #[doc = "channel."] + #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] pub fn set_hrmp_recipient_deposit( &self, new: ::core::primitive::u128, @@ -31784,7 +28386,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] + #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] pub fn set_hrmp_channel_max_capacity( &self, new: ::core::primitive::u32, @@ -31801,7 +28403,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] + #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] pub fn set_hrmp_channel_max_total_size( &self, new: ::core::primitive::u32, @@ -31817,7 +28419,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] + #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] pub fn set_hrmp_max_parachain_inbound_channels( &self, new: ::core::primitive::u32, @@ -31834,7 +28436,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of inbound HRMP channels a parathread is allowed to accept."] + #[doc = "See [`Pallet::set_hrmp_max_parathread_inbound_channels`]."] pub fn set_hrmp_max_parathread_inbound_channels( &self, new: ::core::primitive::u32, @@ -31851,7 +28453,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] + #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] pub fn set_hrmp_channel_max_message_size( &self, new: ::core::primitive::u32, @@ -31868,7 +28470,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] + #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] pub fn set_hrmp_max_parachain_outbound_channels( &self, new: ::core::primitive::u32, @@ -31885,7 +28487,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of outbound HRMP channels a parathread is allowed to open."] + #[doc = "See [`Pallet::set_hrmp_max_parathread_outbound_channels`]."] pub fn set_hrmp_max_parathread_outbound_channels( &self, new: ::core::primitive::u32, @@ -31903,7 +28505,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] + #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] pub fn set_hrmp_max_message_num_per_candidate( &self, new: ::core::primitive::u32, @@ -31919,23 +28521,7 @@ pub mod api { ], ) } - #[doc = "Sets the maximum amount of weight any individual upward message may consume."] - pub fn set_ump_max_individual_weight( - &self, - new: runtime_types::sp_weights::weight_v2::Weight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Configuration", - "set_ump_max_individual_weight", - types::SetUmpMaxIndividualWeight { new }, - [ - 124u8, 187u8, 87u8, 136u8, 129u8, 119u8, 52u8, 135u8, 241u8, 73u8, - 115u8, 215u8, 94u8, 41u8, 8u8, 130u8, 137u8, 142u8, 220u8, 39u8, 96u8, - 88u8, 223u8, 48u8, 222u8, 157u8, 72u8, 170u8, 45u8, 72u8, 28u8, 43u8, - ], - ) - } - #[doc = "Enable or disable PVF pre-checking. Consult the field documentation prior executing."] + #[doc = "See [`Pallet::set_pvf_checking_enabled`]."] pub fn set_pvf_checking_enabled( &self, new: ::core::primitive::bool, @@ -31952,7 +28538,7 @@ pub mod api { ], ) } - #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] + #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] pub fn set_pvf_voting_ttl( &self, new: ::core::primitive::u32, @@ -31969,10 +28555,7 @@ pub mod api { ], ) } - #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] - #[doc = "upgrade taking place."] - #[doc = ""] - #[doc = "See the field documentation for information and constraints for the new value."] + #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] pub fn set_minimum_validation_upgrade_delay( &self, new: ::core::primitive::u32, @@ -31989,8 +28572,7 @@ pub mod api { ], ) } - #[doc = "Setting this to true will disable consistency checks for the configuration setters."] - #[doc = "Use with caution."] + #[doc = "See [`Pallet::set_bypass_consistency_check`]."] pub fn set_bypass_consistency_check( &self, new: ::core::primitive::bool, @@ -32007,7 +28589,7 @@ pub mod api { ], ) } - #[doc = "Set the asynchronous backing parameters."] + #[doc = "See [`Pallet::set_async_backing_params`]."] pub fn set_async_backing_params( &self, new: runtime_types::polkadot_primitives::vstaging::AsyncBackingParams, @@ -32024,10 +28606,10 @@ pub mod api { ], ) } - #[doc = "Set PVF executor parameters."] + #[doc = "See [`Pallet::set_executor_params`]."] pub fn set_executor_params( &self, - new: runtime_types::polkadot_primitives::v4::executor_params::ExecutorParams, + new: runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", @@ -32063,9 +28645,9 @@ pub mod api { "ActiveConfig", vec![], [ - 164u8, 67u8, 83u8, 62u8, 158u8, 33u8, 83u8, 109u8, 221u8, 5u8, 39u8, - 179u8, 247u8, 254u8, 8u8, 1u8, 34u8, 160u8, 41u8, 196u8, 17u8, 145u8, - 24u8, 245u8, 166u8, 96u8, 168u8, 243u8, 189u8, 3u8, 95u8, 176u8, + 89u8, 95u8, 12u8, 140u8, 199u8, 69u8, 117u8, 230u8, 44u8, 83u8, 251u8, + 153u8, 0u8, 172u8, 66u8, 55u8, 233u8, 90u8, 135u8, 33u8, 35u8, 23u8, + 36u8, 91u8, 3u8, 212u8, 213u8, 181u8, 37u8, 171u8, 100u8, 170u8, ], ) } @@ -32081,10 +28663,10 @@ pub mod api { "PendingConfigs", vec![], [ - 123u8, 141u8, 170u8, 164u8, 206u8, 115u8, 189u8, 253u8, 248u8, 82u8, - 252u8, 235u8, 116u8, 173u8, 79u8, 79u8, 204u8, 155u8, 236u8, 233u8, - 48u8, 216u8, 32u8, 10u8, 169u8, 251u8, 126u8, 110u8, 36u8, 21u8, 207u8, - 5u8, + 132u8, 122u8, 170u8, 26u8, 208u8, 3u8, 156u8, 114u8, 149u8, 231u8, + 177u8, 142u8, 254u8, 142u8, 172u8, 209u8, 43u8, 233u8, 218u8, 142u8, + 249u8, 25u8, 39u8, 89u8, 97u8, 165u8, 210u8, 23u8, 170u8, 114u8, 12u8, + 222u8, ], ) } @@ -32117,7 +28699,7 @@ pub mod api { pub mod paras_shared { use super::root_mod; use super::runtime_types; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::shared::pallet::Call; pub mod calls { use super::root_mod; @@ -32161,7 +28743,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), @@ -32183,7 +28765,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), @@ -32206,9 +28788,9 @@ pub mod api { pub mod para_inclusion { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_parachains::inclusion::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::inclusion::pallet::Call; pub mod calls { use super::root_mod; @@ -32220,7 +28802,7 @@ pub mod api { pub struct TransactionApi; impl TransactionApi {} } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_parachains::inclusion::pallet::Event; pub mod events { use super::runtime_types; @@ -32236,10 +28818,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A candidate was backed. `[candidate, head_data]`"] pub struct CandidateBacked( - pub runtime_types::polkadot_primitives::v4::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_primitives::v5::CandidateReceipt<::subxt::utils::H256>, pub runtime_types::polkadot_parachain::primitives::HeadData, - pub runtime_types::polkadot_primitives::v4::CoreIndex, - pub runtime_types::polkadot_primitives::v4::GroupIndex, + pub runtime_types::polkadot_primitives::v5::CoreIndex, + pub runtime_types::polkadot_primitives::v5::GroupIndex, ); impl ::subxt::events::StaticEvent for CandidateBacked { const PALLET: &'static str = "ParaInclusion"; @@ -32257,10 +28839,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A candidate was included. `[candidate, head_data]`"] pub struct CandidateIncluded( - pub runtime_types::polkadot_primitives::v4::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_primitives::v5::CandidateReceipt<::subxt::utils::H256>, pub runtime_types::polkadot_parachain::primitives::HeadData, - pub runtime_types::polkadot_primitives::v4::CoreIndex, - pub runtime_types::polkadot_primitives::v4::GroupIndex, + pub runtime_types::polkadot_primitives::v5::CoreIndex, + pub runtime_types::polkadot_primitives::v5::GroupIndex, ); impl ::subxt::events::StaticEvent for CandidateIncluded { const PALLET: &'static str = "ParaInclusion"; @@ -32278,20 +28860,39 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A candidate timed out. `[candidate, head_data]`"] pub struct CandidateTimedOut( - pub runtime_types::polkadot_primitives::v4::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_primitives::v5::CandidateReceipt<::subxt::utils::H256>, pub runtime_types::polkadot_parachain::primitives::HeadData, - pub runtime_types::polkadot_primitives::v4::CoreIndex, + pub runtime_types::polkadot_primitives::v5::CoreIndex, ); impl ::subxt::events::StaticEvent for CandidateTimedOut { const PALLET: &'static str = "ParaInclusion"; const EVENT: &'static str = "CandidateTimedOut"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some upward messages have been received and will be processed."] + pub struct UpwardMessagesReceived { + pub from: runtime_types::polkadot_parachain::primitives::Id, + pub count: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for UpwardMessagesReceived { + const PALLET: &'static str = "ParaInclusion"; + const EVENT: &'static str = "UpwardMessagesReceived"; + } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_primitives :: v4 :: ValidatorIndex > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: AvailabilityBitfieldRecord < :: core :: primitive :: u32 > , :: subxt :: storage :: address :: Yes , () , :: subxt :: storage :: address :: Yes >{ + #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_primitives :: v5 :: ValidatorIndex > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: AvailabilityBitfieldRecord < :: core :: primitive :: u32 > , :: subxt :: storage :: address :: Yes , () , :: subxt :: storage :: address :: Yes >{ ::subxt::storage::address::Address::new_static( "ParaInclusion", "AvailabilityBitfields", @@ -32351,7 +28952,7 @@ pub mod api { _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::CandidateCommitments< + runtime_types::polkadot_primitives::v5::CandidateCommitments< ::core::primitive::u32, >, ::subxt::storage::address::Yes, @@ -32376,7 +28977,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::CandidateCommitments< + runtime_types::polkadot_primitives::v5::CandidateCommitments< ::core::primitive::u32, >, (), @@ -32400,9 +29001,9 @@ pub mod api { pub mod para_inherent { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_parachains::paras_inherent::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::paras_inherent::pallet::Call; pub mod calls { use super::root_mod; @@ -32421,7 +29022,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Enter { - pub data: runtime_types::polkadot_primitives::v4::InherentData< + pub data: runtime_types::polkadot_primitives::v5::InherentData< runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, runtime_types::sp_runtime::traits::BlakeTwo256, @@ -32435,10 +29036,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] + #[doc = "See [`Pallet::enter`]."] pub fn enter( &self, - data: runtime_types::polkadot_primitives::v4::InherentData< + data: runtime_types::polkadot_primitives::v5::InherentData< runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, runtime_types::sp_runtime::traits::BlakeTwo256, @@ -32493,7 +29094,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::ScrapedOnChainVotes< + runtime_types::polkadot_primitives::v5::ScrapedOnChainVotes< ::subxt::utils::H256, >, ::subxt::storage::address::Yes, @@ -32532,7 +29133,7 @@ pub mod api { ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< - ::std::vec::Vec, + ::std::vec::Vec, >, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -32588,7 +29189,7 @@ pub mod api { ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< ::core::option::Option< - runtime_types::polkadot_primitives::v4::CoreOccupied, + runtime_types::polkadot_primitives::v5::CoreOccupied, >, >, ::subxt::storage::address::Yes, @@ -32692,9 +29293,9 @@ pub mod api { pub mod paras { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_parachains::paras::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::paras::pallet::Call; pub mod calls { use super::root_mod; @@ -32839,8 +29440,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct IncludePvfCheckStatement { - pub stmt: runtime_types::polkadot_primitives::v4::PvfCheckStatement, - pub signature: runtime_types::polkadot_primitives::v4::validator_app::Signature, + pub stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, + pub signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, } impl ::subxt::blocks::StaticExtrinsic for IncludePvfCheckStatement { const PALLET: &'static str = "Paras"; @@ -32849,7 +29450,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the storage for the parachain validation code immediately."] + #[doc = "See [`Pallet::force_set_current_code`]."] pub fn force_set_current_code( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -32867,7 +29468,7 @@ pub mod api { ], ) } - #[doc = "Set the storage for the current parachain head data immediately."] + #[doc = "See [`Pallet::force_set_current_head`]."] pub fn force_set_current_head( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -32885,7 +29486,7 @@ pub mod api { ], ) } - #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] + #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] pub fn force_schedule_code_upgrade( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -32907,7 +29508,7 @@ pub mod api { ], ) } - #[doc = "Note a new block head for para within the context of the current block."] + #[doc = "See [`Pallet::force_note_new_head`]."] pub fn force_note_new_head( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -32924,9 +29525,7 @@ pub mod api { ], ) } - #[doc = "Put a parachain directly into the next session's action queue."] - #[doc = "We can't queue it any sooner than this without going into the"] - #[doc = "initializer..."] + #[doc = "See [`Pallet::force_queue_action`]."] pub fn force_queue_action( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -32943,19 +29542,7 @@ pub mod api { ], ) } - #[doc = "Adds the validation code to the storage."] - #[doc = ""] - #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] - #[doc = "is running for that code, it will be instantly accepted."] - #[doc = ""] - #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] - #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] - #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] - #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the latter"] - #[doc = "prefer to use the `poke_unused_validation_code` dispatchable to raw storage manipulation."] - #[doc = ""] - #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] - #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] + #[doc = "See [`Pallet::add_trusted_validation_code`]."] pub fn add_trusted_validation_code( &self, validation_code: runtime_types::polkadot_parachain::primitives::ValidationCode, @@ -32972,11 +29559,7 @@ pub mod api { ], ) } - #[doc = "Remove the validation code from the storage iff the reference count is 0."] - #[doc = ""] - #[doc = "This is better than removing the storage directly, because it will not remove the code"] - #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] - #[doc = "dispatching."] + #[doc = "See [`Pallet::poke_unused_validation_code`]."] pub fn poke_unused_validation_code( &self, validation_code_hash : runtime_types :: polkadot_parachain :: primitives :: ValidationCodeHash, @@ -32994,12 +29577,11 @@ pub mod api { ], ) } - #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] - #[doc = "enacts the results if that was the last vote before achieving the supermajority."] + #[doc = "See [`Pallet::include_pvf_check_statement`]."] pub fn include_pvf_check_statement( &self, - stmt: runtime_types::polkadot_primitives::v4::PvfCheckStatement, - signature: runtime_types::polkadot_primitives::v4::validator_app::Signature, + stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, + signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Paras", @@ -33014,7 +29596,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_parachains::paras::pallet::Event; pub mod events { use super::runtime_types; @@ -33664,7 +30246,7 @@ pub mod api { _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::UpgradeGoAhead, + runtime_types::polkadot_primitives::v5::UpgradeGoAhead, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -33696,7 +30278,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::UpgradeGoAhead, + runtime_types::polkadot_primitives::v5::UpgradeGoAhead, (), (), ::subxt::storage::address::Yes, @@ -33727,7 +30309,7 @@ pub mod api { _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::UpgradeRestriction, + runtime_types::polkadot_primitives::v5::UpgradeRestriction, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -33759,7 +30341,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::UpgradeRestriction, + runtime_types::polkadot_primitives::v5::UpgradeRestriction, (), (), ::subxt::storage::address::Yes, @@ -34057,7 +30639,7 @@ pub mod api { pub mod initializer { use super::root_mod; use super::runtime_types; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::initializer::pallet::Call; pub mod calls { use super::root_mod; @@ -34086,9 +30668,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] - #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] - #[doc = "chain are valid and should be finalized."] + #[doc = "See [`Pallet::force_approve`]."] pub fn force_approve( &self, up_to: ::core::primitive::u32, @@ -34325,509 +30905,12 @@ pub mod api { } } } - pub mod ump { - use super::root_mod; - use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] - pub type Error = runtime_types::polkadot_runtime_parachains::ump::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] - pub type Call = runtime_types::polkadot_runtime_parachains::ump::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ServiceOverweight { - pub index: ::core::primitive::u64, - pub weight_limit: runtime_types::sp_weights::weight_v2::Weight, - } - impl ::subxt::blocks::StaticExtrinsic for ServiceOverweight { - const PALLET: &'static str = "Ump"; - const CALL: &'static str = "service_overweight"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "Service a single overweight upward message."] - #[doc = ""] - #[doc = "- `origin`: Must pass `ExecuteOverweightOrigin`."] - #[doc = "- `index`: The index of the overweight message to service."] - #[doc = "- `weight_limit`: The amount of weight that message execution may take."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `UnknownMessageIndex`: Message of `index` is unknown."] - #[doc = "- `WeightOverLimit`: Message execution may use greater than `weight_limit`."] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `OverweightServiced`: On success."] - pub fn service_overweight( - &self, - index: ::core::primitive::u64, - weight_limit: runtime_types::sp_weights::weight_v2::Weight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Ump", - "service_overweight", - types::ServiceOverweight { - index, - weight_limit, - }, - [ - 191u8, 141u8, 229u8, 214u8, 12u8, 111u8, 251u8, 4u8, 8u8, 118u8, 217u8, - 193u8, 106u8, 182u8, 233u8, 130u8, 149u8, 201u8, 245u8, 3u8, 81u8, - 217u8, 33u8, 24u8, 198u8, 138u8, 206u8, 141u8, 105u8, 31u8, 81u8, 9u8, - ], - ) - } - } - } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] - pub type Event = runtime_types::polkadot_runtime_parachains::ump::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Upward message is invalid XCM."] - #[doc = "\\[ id \\]"] - pub struct InvalidFormat(pub [::core::primitive::u8; 32usize]); - impl ::subxt::events::StaticEvent for InvalidFormat { - const PALLET: &'static str = "Ump"; - const EVENT: &'static str = "InvalidFormat"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Upward message is unsupported version of XCM."] - #[doc = "\\[ id \\]"] - pub struct UnsupportedVersion(pub [::core::primitive::u8; 32usize]); - impl ::subxt::events::StaticEvent for UnsupportedVersion { - const PALLET: &'static str = "Ump"; - const EVENT: &'static str = "UnsupportedVersion"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Upward message executed with the given outcome."] - #[doc = "\\[ id, outcome \\]"] - pub struct ExecutedUpward( - pub [::core::primitive::u8; 32usize], - pub runtime_types::xcm::v3::traits::Outcome, - ); - impl ::subxt::events::StaticEvent for ExecutedUpward { - const PALLET: &'static str = "Ump"; - const EVENT: &'static str = "ExecutedUpward"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The weight limit for handling upward messages was reached."] - #[doc = "\\[ id, remaining, required \\]"] - pub struct WeightExhausted( - pub [::core::primitive::u8; 32usize], - pub runtime_types::sp_weights::weight_v2::Weight, - pub runtime_types::sp_weights::weight_v2::Weight, - ); - impl ::subxt::events::StaticEvent for WeightExhausted { - const PALLET: &'static str = "Ump"; - const EVENT: &'static str = "WeightExhausted"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some upward messages have been received and will be processed."] - #[doc = "\\[ para, count, size \\]"] - pub struct UpwardMessagesReceived( - pub runtime_types::polkadot_parachain::primitives::Id, - pub ::core::primitive::u32, - pub ::core::primitive::u32, - ); - impl ::subxt::events::StaticEvent for UpwardMessagesReceived { - const PALLET: &'static str = "Ump"; - const EVENT: &'static str = "UpwardMessagesReceived"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The weight budget was exceeded for an individual upward message."] - #[doc = ""] - #[doc = "This message can be later dispatched manually using `service_overweight` dispatchable"] - #[doc = "using the assigned `overweight_index`."] - #[doc = ""] - #[doc = "\\[ para, id, overweight_index, required \\]"] - pub struct OverweightEnqueued( - pub runtime_types::polkadot_parachain::primitives::Id, - pub [::core::primitive::u8; 32usize], - pub ::core::primitive::u64, - pub runtime_types::sp_weights::weight_v2::Weight, - ); - impl ::subxt::events::StaticEvent for OverweightEnqueued { - const PALLET: &'static str = "Ump"; - const EVENT: &'static str = "OverweightEnqueued"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Upward message from the overweight queue was executed with the given actual weight"] - #[doc = "used."] - #[doc = ""] - #[doc = "\\[ overweight_index, used \\]"] - pub struct OverweightServiced( - pub ::core::primitive::u64, - pub runtime_types::sp_weights::weight_v2::Weight, - ); - impl ::subxt::events::StaticEvent for OverweightServiced { - const PALLET: &'static str = "Ump"; - const EVENT: &'static str = "OverweightServiced"; - } - } - pub mod storage { - use super::runtime_types; - pub struct StorageApi; - impl StorageApi { - #[doc = " The messages waiting to be handled by the relay-chain originating from a certain parachain."] - #[doc = ""] - #[doc = " Note that some upward messages might have been already processed by the inclusion logic. E.g."] - #[doc = " channel management messages."] - #[doc = ""] - #[doc = " The messages are processed in FIFO order."] - pub fn relay_dispatch_queues( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "RelayDispatchQueues", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 117u8, 144u8, 164u8, 105u8, 205u8, 216u8, 78u8, 58u8, 222u8, 31u8, - 134u8, 149u8, 46u8, 41u8, 152u8, 160u8, 166u8, 144u8, 206u8, 161u8, - 216u8, 196u8, 3u8, 34u8, 79u8, 78u8, 229u8, 15u8, 106u8, 23u8, 252u8, - 206u8, - ], - ) - } - #[doc = " The messages waiting to be handled by the relay-chain originating from a certain parachain."] - #[doc = ""] - #[doc = " Note that some upward messages might have been already processed by the inclusion logic. E.g."] - #[doc = " channel management messages."] - #[doc = ""] - #[doc = " The messages are processed in FIFO order."] - pub fn relay_dispatch_queues_root( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "RelayDispatchQueues", - Vec::new(), - [ - 117u8, 144u8, 164u8, 105u8, 205u8, 216u8, 78u8, 58u8, 222u8, 31u8, - 134u8, 149u8, 46u8, 41u8, 152u8, 160u8, 166u8, 144u8, 206u8, 161u8, - 216u8, 196u8, 3u8, 34u8, 79u8, 78u8, 229u8, 15u8, 106u8, 23u8, 252u8, - 206u8, - ], - ) - } - #[doc = " Size of the dispatch queues. Caches sizes of the queues in `RelayDispatchQueue`."] - #[doc = ""] - #[doc = " First item in the tuple is the count of messages and second"] - #[doc = " is the total length (in bytes) of the message payloads."] - #[doc = ""] - #[doc = " Note that this is an auxiliary mapping: it's possible to tell the byte size and the number of"] - #[doc = " messages only looking at `RelayDispatchQueues`. This mapping is separate to avoid the cost of"] - #[doc = " loading the whole message queue if only the total size and count are required."] - #[doc = ""] - #[doc = " Invariant:"] - #[doc = " - The set of keys should exactly match the set of keys of `RelayDispatchQueues`."] - pub fn relay_dispatch_queue_size( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - (::core::primitive::u32, ::core::primitive::u32), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "RelayDispatchQueueSize", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 246u8, 251u8, 184u8, 161u8, 3u8, 254u8, 219u8, 108u8, 106u8, 140u8, - 163u8, 118u8, 188u8, 62u8, 148u8, 157u8, 94u8, 70u8, 133u8, 142u8, - 232u8, 152u8, 98u8, 131u8, 241u8, 87u8, 137u8, 61u8, 136u8, 21u8, - 153u8, 50u8, - ], - ) - } - #[doc = " Size of the dispatch queues. Caches sizes of the queues in `RelayDispatchQueue`."] - #[doc = ""] - #[doc = " First item in the tuple is the count of messages and second"] - #[doc = " is the total length (in bytes) of the message payloads."] - #[doc = ""] - #[doc = " Note that this is an auxiliary mapping: it's possible to tell the byte size and the number of"] - #[doc = " messages only looking at `RelayDispatchQueues`. This mapping is separate to avoid the cost of"] - #[doc = " loading the whole message queue if only the total size and count are required."] - #[doc = ""] - #[doc = " Invariant:"] - #[doc = " - The set of keys should exactly match the set of keys of `RelayDispatchQueues`."] - pub fn relay_dispatch_queue_size_root( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - (::core::primitive::u32, ::core::primitive::u32), - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "RelayDispatchQueueSize", - Vec::new(), - [ - 246u8, 251u8, 184u8, 161u8, 3u8, 254u8, 219u8, 108u8, 106u8, 140u8, - 163u8, 118u8, 188u8, 62u8, 148u8, 157u8, 94u8, 70u8, 133u8, 142u8, - 232u8, 152u8, 98u8, 131u8, 241u8, 87u8, 137u8, 61u8, 136u8, 21u8, - 153u8, 50u8, - ], - ) - } - #[doc = " The ordered list of `ParaId`s that have a `RelayDispatchQueue` entry."] - #[doc = ""] - #[doc = " Invariant:"] - #[doc = " - The set of items from this vector should be exactly the set of the keys in"] - #[doc = " `RelayDispatchQueues` and `RelayDispatchQueueSize`."] - pub fn needs_dispatch( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "NeedsDispatch", - vec![], - [ - 50u8, 216u8, 202u8, 249u8, 219u8, 62u8, 14u8, 219u8, 16u8, 53u8, 78u8, - 189u8, 94u8, 99u8, 210u8, 208u8, 122u8, 87u8, 105u8, 3u8, 148u8, 12u8, - 90u8, 60u8, 86u8, 106u8, 56u8, 249u8, 1u8, 21u8, 238u8, 176u8, - ], - ) - } - #[doc = " This is the para that gets will get dispatched first during the next upward dispatchable queue"] - #[doc = " execution round."] - #[doc = ""] - #[doc = " Invariant:"] - #[doc = " - If `Some(para)`, then `para` must be present in `NeedsDispatch`."] - pub fn next_dispatch_round_start_with( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_parachain::primitives::Id, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "NextDispatchRoundStartWith", - vec![], - [ - 162u8, 216u8, 216u8, 238u8, 153u8, 44u8, 124u8, 137u8, 170u8, 63u8, - 254u8, 73u8, 219u8, 221u8, 130u8, 130u8, 63u8, 94u8, 144u8, 250u8, - 168u8, 222u8, 7u8, 17u8, 197u8, 32u8, 104u8, 83u8, 60u8, 18u8, 46u8, - 243u8, - ], - ) - } - #[doc = " The messages that exceeded max individual message weight budget."] - #[doc = ""] - #[doc = " These messages stay there until manually dispatched."] - pub fn overweight( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u64>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ( - runtime_types::polkadot_parachain::primitives::Id, - ::std::vec::Vec<::core::primitive::u8>, - ), - ::subxt::storage::address::Yes, - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "Overweight", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 99u8, 253u8, 98u8, 255u8, 15u8, 188u8, 128u8, 101u8, 165u8, 13u8, 95u8, - 43u8, 18u8, 20u8, 119u8, 235u8, 92u8, 145u8, 78u8, 10u8, 35u8, 88u8, - 23u8, 255u8, 208u8, 237u8, 204u8, 203u8, 207u8, 185u8, 214u8, 37u8, - ], - ) - } - #[doc = " The messages that exceeded max individual message weight budget."] - #[doc = ""] - #[doc = " These messages stay there until manually dispatched."] - pub fn overweight_root( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ( - runtime_types::polkadot_parachain::primitives::Id, - ::std::vec::Vec<::core::primitive::u8>, - ), - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "Overweight", - Vec::new(), - [ - 99u8, 253u8, 98u8, 255u8, 15u8, 188u8, 128u8, 101u8, 165u8, 13u8, 95u8, - 43u8, 18u8, 20u8, 119u8, 235u8, 92u8, 145u8, 78u8, 10u8, 35u8, 88u8, - 23u8, 255u8, 208u8, 237u8, 204u8, 203u8, 207u8, 185u8, 214u8, 37u8, - ], - ) - } - #[doc = "Counter for the related counted storage map"] - pub fn counter_for_overweight( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "CounterForOverweight", - vec![], - [ - 44u8, 249u8, 133u8, 204u8, 169u8, 253u8, 23u8, 157u8, 132u8, 193u8, - 28u8, 178u8, 156u8, 176u8, 206u8, 46u8, 79u8, 254u8, 174u8, 236u8, - 143u8, 219u8, 59u8, 43u8, 36u8, 109u8, 244u8, 206u8, 48u8, 126u8, - 247u8, 0u8, - ], - ) - } - #[doc = " The number of overweight messages ever recorded in `Overweight` (and thus the lowest free"] - #[doc = " index)."] - pub fn overweight_count( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u64, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Ump", - "OverweightCount", - vec![], - [ - 28u8, 72u8, 218u8, 167u8, 253u8, 30u8, 10u8, 51u8, 49u8, 101u8, 86u8, - 26u8, 146u8, 2u8, 153u8, 232u8, 129u8, 38u8, 111u8, 105u8, 246u8, 84u8, - 192u8, 157u8, 193u8, 57u8, 222u8, 122u8, 38u8, 160u8, 56u8, 39u8, - ], - ) - } - } - } - } pub mod hrmp { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_parachains::hrmp::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::hrmp::pallet::Call; pub mod calls { use super::root_mod; @@ -34984,16 +31067,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] - #[doc = "parameters."] - #[doc = ""] - #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] - #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] - #[doc = ""] - #[doc = "These numbers are a subject to the relay-chain configuration limits."] - #[doc = ""] - #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] - #[doc = "change."] + #[doc = "See [`Pallet::hrmp_init_open_channel`]."] pub fn hrmp_init_open_channel( &self, recipient: runtime_types::polkadot_parachain::primitives::Id, @@ -35016,9 +31090,7 @@ pub mod api { ], ) } - #[doc = "Accept a pending open channel request from the given sender."] - #[doc = ""] - #[doc = "The channel will be opened only on the next session boundary."] + #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] pub fn hrmp_accept_open_channel( &self, sender: runtime_types::polkadot_parachain::primitives::Id, @@ -35034,10 +31106,7 @@ pub mod api { ], ) } - #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] - #[doc = "recipient in the channel being closed."] - #[doc = ""] - #[doc = "The closure can only happen on a session change."] + #[doc = "See [`Pallet::hrmp_close_channel`]."] pub fn hrmp_close_channel( &self, channel_id: runtime_types::polkadot_parachain::primitives::HrmpChannelId, @@ -35053,13 +31122,7 @@ pub mod api { ], ) } - #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that"] - #[doc = "a para may have. Normally this happens once per session, but this allows"] - #[doc = "you to trigger the cleanup immediately for a specific parachain."] - #[doc = ""] - #[doc = "Origin must be Root."] - #[doc = ""] - #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data of weighing."] + #[doc = "See [`Pallet::force_clean_hrmp`]."] pub fn force_clean_hrmp( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -35082,12 +31145,7 @@ pub mod api { ], ) } - #[doc = "Force process HRMP open channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP open channel requests, you can use this"] - #[doc = "function process all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of opening channels must be provided as witness data of weighing."] + #[doc = "See [`Pallet::force_process_hrmp_open`]."] pub fn force_process_hrmp_open( &self, channels: ::core::primitive::u32, @@ -35104,12 +31162,7 @@ pub mod api { ], ) } - #[doc = "Force process HRMP close channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP close channel requests, you can use this"] - #[doc = "function process all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of closing channels must be provided as witness data of weighing."] + #[doc = "See [`Pallet::force_process_hrmp_close`]."] pub fn force_process_hrmp_close( &self, channels: ::core::primitive::u32, @@ -35126,14 +31179,7 @@ pub mod api { ], ) } - #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] - #[doc = "or the recipient for that request. The origin must be either of those."] - #[doc = ""] - #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] - #[doc = "already accepted."] - #[doc = ""] - #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] - #[doc = "witness data."] + #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] pub fn hrmp_cancel_open_request( &self, channel_id: runtime_types::polkadot_parachain::primitives::HrmpChannelId, @@ -35154,12 +31200,7 @@ pub mod api { ], ) } - #[doc = "Open a channel from a `sender` to a `recipient` `ParaId` using the Root origin. Although"] - #[doc = "opened by Root, the `max_capacity` and `max_message_size` are still subject to the Relay"] - #[doc = "Chain's configured limits."] - #[doc = ""] - #[doc = "Expected use is when one of the `ParaId`s involved in the channel is governed by the"] - #[doc = "Relay Chain, e.g. a common good parachain."] + #[doc = "See [`Pallet::force_open_hrmp_channel`]."] pub fn force_open_hrmp_channel( &self, sender: runtime_types::polkadot_parachain::primitives::Id, @@ -35185,7 +31226,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_parachains::hrmp::pallet::Event; pub mod events { use super::runtime_types; @@ -35904,7 +31945,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), @@ -35949,7 +31990,7 @@ pub mod api { _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::SessionInfo, + runtime_types::polkadot_primitives::v5::SessionInfo, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -35974,7 +32015,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::SessionInfo, + runtime_types::polkadot_primitives::v5::SessionInfo, (), (), ::subxt::storage::address::Yes, @@ -36043,7 +32084,7 @@ pub mod api { _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -36066,7 +32107,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, (), (), ::subxt::storage::address::Yes, @@ -36088,9 +32129,9 @@ pub mod api { pub mod paras_disputes { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_parachains::disputes::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::disputes::pallet::Call; pub mod calls { use super::root_mod; @@ -36116,6 +32157,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { + #[doc = "See [`Pallet::force_unfreeze`]."] pub fn force_unfreeze(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "ParasDisputes", @@ -36130,7 +32172,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_parachains::disputes::pallet::Event; pub mod events { use super::runtime_types; @@ -36230,7 +32272,7 @@ pub mod api { >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::DisputeState<::core::primitive::u32>, + runtime_types::polkadot_primitives::v5::DisputeState<::core::primitive::u32>, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -36255,7 +32297,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v4::DisputeState<::core::primitive::u32>, + runtime_types::polkadot_primitives::v5::DisputeState<::core::primitive::u32>, (), (), ::subxt::storage::address::Yes, @@ -36282,7 +32324,7 @@ pub mod api { >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -36308,7 +32350,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, (), (), ::subxt::storage::address::Yes, @@ -36408,10 +32450,10 @@ pub mod api { pub mod paras_slashing { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_parachains::disputes::slashing::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_parachains::disputes::slashing::pallet::Call; pub mod calls { @@ -36430,7 +32472,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ReportDisputeLostUnsigned { pub dispute_proof : :: std :: boxed :: Box < runtime_types :: polkadot_runtime_parachains :: disputes :: slashing :: DisputeProof > , pub key_owner_proof : runtime_types :: sp_session :: MembershipProof , } + pub struct ReportDisputeLostUnsigned { + pub dispute_proof: ::std::boxed::Box< + runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } impl ::subxt::blocks::StaticExtrinsic for ReportDisputeLostUnsigned { const PALLET: &'static str = "ParasSlashing"; const CALL: &'static str = "report_dispute_lost_unsigned"; @@ -36438,9 +32485,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { + #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub fn report_dispute_lost_unsigned( &self, - dispute_proof : runtime_types :: polkadot_runtime_parachains :: disputes :: slashing :: DisputeProof, + dispute_proof: runtime_types::polkadot_primitives::v5::slashing::DisputeProof, key_owner_proof: runtime_types::sp_session::MembershipProof, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( @@ -36473,7 +32521,7 @@ pub mod api { >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_runtime_parachains::disputes::slashing::PendingSlashes, + runtime_types::polkadot_primitives::v5::slashing::PendingSlashes, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -36498,7 +32546,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_runtime_parachains::disputes::slashing::PendingSlashes, + runtime_types::polkadot_primitives::v5::slashing::PendingSlashes, (), (), ::subxt::storage::address::Yes, @@ -36566,9 +32614,9 @@ pub mod api { pub mod registrar { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_common::paras_registrar::pallet::Call; pub mod calls { use super::root_mod; @@ -36741,20 +32789,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Register head data and validation code for a reserved Para Id."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin."] - #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] - #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] - #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The origin signed account must reserve a corresponding deposit for the registration. Anything already"] - #[doc = "reserved previously for this para ID is accounted for."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Registered` event is emitted in case of success."] + #[doc = "See [`Pallet::register`]."] pub fn register( &self, id: runtime_types::polkadot_parachain::primitives::Id, @@ -36776,12 +32811,7 @@ pub mod api { ], ) } - #[doc = "Force the registration of a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function must be called by a Root origin."] - #[doc = ""] - #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] - #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] + #[doc = "See [`Pallet::force_register`]."] pub fn force_register( &self, who: ::subxt::utils::AccountId32, @@ -36807,9 +32837,7 @@ pub mod api { ], ) } - #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] - #[doc = ""] - #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be a parathread."] + #[doc = "See [`Pallet::deregister`]."] pub fn deregister( &self, id: runtime_types::polkadot_parachain::primitives::Id, @@ -36825,17 +32853,7 @@ pub mod api { ], ) } - #[doc = "Swap a parachain with another parachain or parathread."] - #[doc = ""] - #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] - #[doc = ""] - #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] - #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] - #[doc = ""] - #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] - #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] - #[doc = "scheduling info (i.e. whether they're a parathread or parachain), auction information"] - #[doc = "and the auction deposit are switched."] + #[doc = "See [`Pallet::swap`]."] pub fn swap( &self, id: runtime_types::polkadot_parachain::primitives::Id, @@ -36853,10 +32871,7 @@ pub mod api { ], ) } - #[doc = "Remove a manager lock from a para. This will allow the manager of a"] - #[doc = "previously locked para to deregister or swap a para without using governance."] - #[doc = ""] - #[doc = "Can only be called by the Root origin or the parachain."] + #[doc = "See [`Pallet::remove_lock`]."] pub fn remove_lock( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -36872,20 +32887,7 @@ pub mod api { ], ) } - #[doc = "Reserve a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] - #[doc = "The origin account is able to register head data and validation code using `register` to create"] - #[doc = "a parathread. Using the Slots pallet, a parathread can then be upgraded to get a parachain slot."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new para ID."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for use."] + #[doc = "See [`Pallet::reserve`]."] pub fn reserve(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Registrar", @@ -36898,10 +32900,7 @@ pub mod api { ], ) } - #[doc = "Add a manager lock from a para. This will prevent the manager of a"] - #[doc = "para to deregister or swap a para."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is unlocked."] + #[doc = "See [`Pallet::add_lock`]."] pub fn add_lock( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -36917,9 +32916,7 @@ pub mod api { ], ) } - #[doc = "Schedule a parachain upgrade."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is unlocked."] + #[doc = "See [`Pallet::schedule_code_upgrade`]."] pub fn schedule_code_upgrade( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -36937,9 +32934,7 @@ pub mod api { ], ) } - #[doc = "Set the parachain's current head."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is unlocked."] + #[doc = "See [`Pallet::set_current_head`]."] pub fn set_current_head( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -36959,7 +32954,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_common::paras_registrar::pallet::Event; pub mod events { use super::runtime_types; @@ -37202,9 +33197,9 @@ pub mod api { pub mod slots { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_common::slots::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_common::slots::pallet::Call; pub mod calls { use super::root_mod; @@ -37270,10 +33265,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to happen"] - #[doc = "independently of any other on-chain mechanism to use it."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::force_lease`]."] pub fn force_lease( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -37300,9 +33292,7 @@ pub mod api { ], ) } - #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::clear_all_leases`]."] pub fn clear_all_leases( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -37318,13 +33308,7 @@ pub mod api { ], ) } - #[doc = "Try to onboard a parachain that has a lease for the current lease period."] - #[doc = ""] - #[doc = "This function can be useful if there was some state issue with a para that should"] - #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] - #[doc = "let them onboard from here."] - #[doc = ""] - #[doc = "Origin must be signed, but can be called by anyone."] + #[doc = "See [`Pallet::trigger_onboard`]."] pub fn trigger_onboard( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -37342,7 +33326,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_common::slots::pallet::Event; pub mod events { use super::runtime_types; @@ -37520,9 +33504,9 @@ pub mod api { pub mod auctions { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_common::auctions::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_common::auctions::pallet::Call; pub mod calls { use super::root_mod; @@ -37594,11 +33578,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Create a new auction."] - #[doc = ""] - #[doc = "This can only happen when there isn't already an auction in progress and may only be"] - #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] - #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] + #[doc = "See [`Pallet::new_auction`]."] pub fn new_auction( &self, duration: ::core::primitive::u32, @@ -37619,22 +33599,7 @@ pub mod api { ], ) } - #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] - #[doc = "parachain."] - #[doc = ""] - #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] - #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] - #[doc = ""] - #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] - #[doc = "funded by) the same account."] - #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] - #[doc = "value of `AuctionCounter`."] - #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] - #[doc = "bid win. This amount is held throughout the range."] + #[doc = "See [`Pallet::bid`]."] pub fn bid( &self, para: runtime_types::polkadot_parachain::primitives::Id, @@ -37661,9 +33626,7 @@ pub mod api { ], ) } - #[doc = "Cancel an in-progress auction."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + #[doc = "See [`Pallet::cancel_auction`]."] pub fn cancel_auction(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Auctions", @@ -37678,7 +33641,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_common::auctions::pallet::Event; pub mod events { use super::runtime_types; @@ -38051,9 +34014,9 @@ pub mod api { pub mod crowdloan { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::polkadot_runtime_common::crowdloan::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::polkadot_runtime_common::crowdloan::pallet::Call; pub mod calls { use super::root_mod; @@ -38250,10 +34213,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period range."] - #[doc = ""] - #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] - #[doc = "by the parachain manager."] + #[doc = "See [`Pallet::create`]."] pub fn create( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38281,8 +34241,7 @@ pub mod api { ], ) } - #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] - #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] + #[doc = "See [`Pallet::contribute`]."] pub fn contribute( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38304,23 +34263,7 @@ pub mod api { ], ) } - #[doc = "Withdraw full balance of a specific contributor."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] - #[doc = ""] - #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement, then the retirement"] - #[doc = "flag must be set. For a fund to be ready for retirement, then:"] - #[doc = "- it must not already be in retirement;"] - #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] - #[doc = "- and either:"] - #[doc = " - the block number must be at least `end`; or"] - #[doc = " - the current lease period must be greater than the fund's `last_period`."] - #[doc = ""] - #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current block"] - #[doc = "number."] - #[doc = ""] - #[doc = "- `who`: The account whose contribution should be withdrawn."] - #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] + #[doc = "See [`Pallet::withdraw`]."] pub fn withdraw( &self, who: ::subxt::utils::AccountId32, @@ -38337,11 +34280,7 @@ pub mod api { ], ) } - #[doc = "Automatically refund contributors of an ended crowdloan."] - #[doc = "Due to weight restrictions, this function may need to be called multiple"] - #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] + #[doc = "See [`Pallet::refund`]."] pub fn refund( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38358,7 +34297,7 @@ pub mod api { ], ) } - #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] + #[doc = "See [`Pallet::dissolve`]."] pub fn dissolve( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38375,9 +34314,7 @@ pub mod api { ], ) } - #[doc = "Edit the configuration for an in-progress crowdloan."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + #[doc = "See [`Pallet::edit`]."] pub fn edit( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38405,9 +34342,7 @@ pub mod api { ], ) } - #[doc = "Add an optional memo to an existing crowdloan contribution."] - #[doc = ""] - #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] + #[doc = "See [`Pallet::add_memo`]."] pub fn add_memo( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38425,9 +34360,7 @@ pub mod api { ], ) } - #[doc = "Poke the fund into `NewRaise`"] - #[doc = ""] - #[doc = "Origin must be Signed, and the fund has non-zero raise."] + #[doc = "See [`Pallet::poke`]."] pub fn poke( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38444,8 +34377,7 @@ pub mod api { ], ) } - #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of a user over to fund a parachain"] - #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] + #[doc = "See [`Pallet::contribute_all`]."] pub fn contribute_all( &self, index: runtime_types::polkadot_parachain::primitives::Id, @@ -38465,7 +34397,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::polkadot_runtime_common::crowdloan::pallet::Event; pub mod events { use super::runtime_types; @@ -38842,9 +34774,9 @@ pub mod api { pub mod xcm_pallet { use super::root_mod; use super::runtime_types; - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub type Error = runtime_types::pallet_xcm::pallet::Error; - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_xcm::pallet::Call; pub mod calls { use super::root_mod; @@ -38941,7 +34873,7 @@ pub mod api { pub struct ForceXcmVersion { pub location: ::std::boxed::Box, - pub xcm_version: ::core::primitive::u32, + pub version: ::core::primitive::u32, } impl ::subxt::blocks::StaticExtrinsic for ForceXcmVersion { const PALLET: &'static str = "XcmPallet"; @@ -39060,6 +34992,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { + #[doc = "See [`Pallet::send`]."] pub fn send( &self, dest: runtime_types::xcm::VersionedMultiLocation, @@ -39079,21 +35012,7 @@ pub mod api { ], ) } - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. The first item should be the currency used to to pay the fee on the"] - #[doc = " `dest` side. May not be empty."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::teleport_assets`]."] pub fn teleport_assets( &self, dest: runtime_types::xcm::VersionedMultiLocation, @@ -39117,22 +35036,7 @@ pub mod api { ], ) } - #[doc = "Transfer some assets from the local chain to the sovereign account of a destination"] - #[doc = "chain and forward a notification XCM."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the"] - #[doc = " `dest` side."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::reserve_transfer_assets`]."] pub fn reserve_transfer_assets( &self, dest: runtime_types::xcm::VersionedMultiLocation, @@ -39156,17 +35060,7 @@ pub mod api { ], ) } - #[doc = "Execute an XCM message from a local, signed, origin."] - #[doc = ""] - #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] - #[doc = "partially."] - #[doc = ""] - #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than the"] - #[doc = "maximum amount of weight that the message could take to be executed, then no execution"] - #[doc = "attempt will be made."] - #[doc = ""] - #[doc = "NOTE: A successful return to this does *not* imply that the `msg` was executed successfully"] - #[doc = "to completion; only that *some* of it was executed."] + #[doc = "See [`Pallet::execute`]."] pub fn execute( &self, message: runtime_types::xcm::VersionedXcm2, @@ -39186,36 +35080,28 @@ pub mod api { ], ) } - #[doc = "Extoll that a particular destination can be communicated with through a particular"] - #[doc = "version of XCM."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The destination that is being described."] - #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] + #[doc = "See [`Pallet::force_xcm_version`]."] pub fn force_xcm_version( &self, location: runtime_types::xcm::v3::multilocation::MultiLocation, - xcm_version: ::core::primitive::u32, + version: ::core::primitive::u32, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "XcmPallet", "force_xcm_version", types::ForceXcmVersion { location: ::std::boxed::Box::new(location), - xcm_version, + version, }, [ - 31u8, 152u8, 219u8, 67u8, 212u8, 13u8, 162u8, 129u8, 151u8, 183u8, - 18u8, 2u8, 5u8, 229u8, 94u8, 37u8, 135u8, 69u8, 111u8, 100u8, 177u8, - 96u8, 57u8, 124u8, 53u8, 172u8, 245u8, 29u8, 156u8, 135u8, 42u8, 125u8, + 152u8, 107u8, 91u8, 62u8, 69u8, 11u8, 101u8, 87u8, 34u8, 11u8, 184u8, + 34u8, 179u8, 114u8, 190u8, 93u8, 47u8, 161u8, 177u8, 121u8, 219u8, + 155u8, 203u8, 253u8, 207u8, 217u8, 134u8, 101u8, 170u8, 31u8, 76u8, + 240u8, ], ) } - #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] - #[doc = "version a destination can accept is unknown)."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] + #[doc = "See [`Pallet::force_default_xcm_version`]."] pub fn force_default_xcm_version( &self, maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, @@ -39232,10 +35118,7 @@ pub mod api { ], ) } - #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] + #[doc = "See [`Pallet::force_subscribe_version_notify`]."] pub fn force_subscribe_version_notify( &self, location: runtime_types::xcm::VersionedMultiLocation, @@ -39253,12 +35136,7 @@ pub mod api { ], ) } - #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] - #[doc = "version changes."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] - #[doc = " notifications which we no longer desire."] + #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] pub fn force_unsubscribe_version_notify( &self, location: runtime_types::xcm::VersionedMultiLocation, @@ -39276,24 +35154,7 @@ pub mod api { ], ) } - #[doc = "Transfer some assets from the local chain to the sovereign account of a destination"] - #[doc = "chain and forward a notification XCM."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the"] - #[doc = " `dest` side."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] pub fn limited_reserve_transfer_assets( &self, dest: runtime_types::xcm::VersionedMultiLocation, @@ -39320,23 +35181,7 @@ pub mod api { ], ) } - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. The first item should be the currency used to to pay the fee on the"] - #[doc = " `dest` side. May not be empty."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_teleport_assets`]."] pub fn limited_teleport_assets( &self, dest: runtime_types::xcm::VersionedMultiLocation, @@ -39363,10 +35208,7 @@ pub mod api { ], ) } - #[doc = "Set or unset the global suspension state of the XCM executor."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `suspended`: `true` to suspend, `false` to resume."] + #[doc = "See [`Pallet::force_suspension`]."] pub fn force_suspension( &self, suspended: ::core::primitive::bool, @@ -39384,7 +35226,7 @@ pub mod api { } } } - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub type Event = runtime_types::pallet_xcm::pallet::Event; pub mod events { use super::runtime_types; @@ -39399,9 +35241,9 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Execution of an XCM message was attempted."] - #[doc = ""] - #[doc = "\\[ outcome \\]"] - pub struct Attempted(pub runtime_types::xcm::v3::traits::Outcome); + pub struct Attempted { + pub outcome: runtime_types::xcm::v3::traits::Outcome, + } impl ::subxt::events::StaticEvent for Attempted { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "Attempted"; @@ -39417,13 +35259,12 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A XCM message was sent."] - #[doc = ""] - #[doc = "\\[ origin, destination, message \\]"] - pub struct Sent( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::v3::Xcm, - ); + pub struct Sent { + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub destination: runtime_types::xcm::v3::multilocation::MultiLocation, + pub message: runtime_types::xcm::v3::Xcm, + pub message_id: [::core::primitive::u8; 32usize], + } impl ::subxt::events::StaticEvent for Sent { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "Sent"; @@ -39441,12 +35282,10 @@ pub mod api { #[doc = "Query response received which does not match a registered query. This may be because a"] #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] - #[doc = ""] - #[doc = "\\[ origin location, id \\]"] - pub struct UnexpectedResponse( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u64, - ); + pub struct UnexpectedResponse { + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + } impl ::subxt::events::StaticEvent for UnexpectedResponse { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "UnexpectedResponse"; @@ -39463,12 +35302,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Query response has been received and is ready for taking with `take_response`. There is"] #[doc = "no registered notification call."] - #[doc = ""] - #[doc = "\\[ id, response \\]"] - pub struct ResponseReady( - pub ::core::primitive::u64, - pub runtime_types::xcm::v3::Response, - ); + pub struct ResponseReady { + pub query_id: ::core::primitive::u64, + pub response: runtime_types::xcm::v3::Response, + } impl ::subxt::events::StaticEvent for ResponseReady { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "ResponseReady"; @@ -39485,13 +35322,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Query response has been received and query is removed. The registered notification has"] #[doc = "been dispatched and executed successfully."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index \\]"] - pub struct Notified( - pub ::core::primitive::u64, - pub ::core::primitive::u8, - pub ::core::primitive::u8, - ); + pub struct Notified { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + } impl ::subxt::events::StaticEvent for Notified { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "Notified"; @@ -39509,15 +35344,13 @@ pub mod api { #[doc = "Query response has been received and query is removed. The registered notification could"] #[doc = "not be dispatched because the dispatch weight is greater than the maximum weight"] #[doc = "originally budgeted by this runtime for the query result."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index, actual weight, max budgeted weight \\]"] - pub struct NotifyOverweight( - pub ::core::primitive::u64, - pub ::core::primitive::u8, - pub ::core::primitive::u8, - pub runtime_types::sp_weights::weight_v2::Weight, - pub runtime_types::sp_weights::weight_v2::Weight, - ); + pub struct NotifyOverweight { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + pub actual_weight: runtime_types::sp_weights::weight_v2::Weight, + pub max_budgeted_weight: runtime_types::sp_weights::weight_v2::Weight, + } impl ::subxt::events::StaticEvent for NotifyOverweight { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyOverweight"; @@ -39534,13 +35367,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Query response has been received and query is removed. There was a general error with"] #[doc = "dispatching the notification call."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index \\]"] - pub struct NotifyDispatchError( - pub ::core::primitive::u64, - pub ::core::primitive::u8, - pub ::core::primitive::u8, - ); + pub struct NotifyDispatchError { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + } impl ::subxt::events::StaticEvent for NotifyDispatchError { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyDispatchError"; @@ -39558,13 +35389,11 @@ pub mod api { #[doc = "Query response has been received and query is removed. The dispatch was unable to be"] #[doc = "decoded into a `Call`; this might be due to dispatch function having a signature which"] #[doc = "is not `(origin, QueryId, Response)`."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index \\]"] - pub struct NotifyDecodeFailed( - pub ::core::primitive::u64, - pub ::core::primitive::u8, - pub ::core::primitive::u8, - ); + pub struct NotifyDecodeFailed { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + } impl ::subxt::events::StaticEvent for NotifyDecodeFailed { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyDecodeFailed"; @@ -39582,13 +35411,12 @@ pub mod api { #[doc = "Expected query response has been received but the origin location of the response does"] #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] - #[doc = ""] - #[doc = "\\[ origin location, id, expected location \\]"] - pub struct InvalidResponder( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u64, - pub ::core::option::Option, - ); + pub struct InvalidResponder { + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + pub expected_location: + ::core::option::Option, + } impl ::subxt::events::StaticEvent for InvalidResponder { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidResponder"; @@ -39610,12 +35438,10 @@ pub mod api { #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] - #[doc = ""] - #[doc = "\\[ origin location, id \\]"] - pub struct InvalidResponderVersion( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u64, - ); + pub struct InvalidResponderVersion { + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + } impl ::subxt::events::StaticEvent for InvalidResponderVersion { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidResponderVersion"; @@ -39632,9 +35458,9 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Received query response has been read and removed."] - #[doc = ""] - #[doc = "\\[ id \\]"] - pub struct ResponseTaken(pub ::core::primitive::u64); + pub struct ResponseTaken { + pub query_id: ::core::primitive::u64, + } impl ::subxt::events::StaticEvent for ResponseTaken { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "ResponseTaken"; @@ -39650,13 +35476,11 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Some assets have been placed in an asset trap."] - #[doc = ""] - #[doc = "\\[ hash, origin, assets \\]"] - pub struct AssetsTrapped( - pub ::subxt::utils::H256, - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::VersionedMultiAssets, - ); + pub struct AssetsTrapped { + pub hash: ::subxt::utils::H256, + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub assets: runtime_types::xcm::VersionedMultiAssets, + } impl ::subxt::events::StaticEvent for AssetsTrapped { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "AssetsTrapped"; @@ -39674,13 +35498,12 @@ pub mod api { #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] - #[doc = ""] - #[doc = "\\[ destination, result, cost \\]"] - pub struct VersionChangeNotified( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u32, - pub runtime_types::xcm::v3::multiasset::MultiAssets, - ); + pub struct VersionChangeNotified { + pub destination: runtime_types::xcm::v3::multilocation::MultiLocation, + pub result: ::core::primitive::u32, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } impl ::subxt::events::StaticEvent for VersionChangeNotified { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionChangeNotified"; @@ -39697,12 +35520,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] - #[doc = ""] - #[doc = "\\[ location, XCM version \\]"] - pub struct SupportedVersionChanged( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u32, - ); + pub struct SupportedVersionChanged { + pub location: runtime_types::xcm::v3::multilocation::MultiLocation, + pub version: ::core::primitive::u32, + } impl ::subxt::events::StaticEvent for SupportedVersionChanged { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "SupportedVersionChanged"; @@ -39719,13 +35540,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] - #[doc = ""] - #[doc = "\\[ location, query ID, error \\]"] - pub struct NotifyTargetSendFail( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u64, - pub runtime_types::xcm::v3::traits::Error, - ); + pub struct NotifyTargetSendFail { + pub location: runtime_types::xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + pub error: runtime_types::xcm::v3::traits::Error, + } impl ::subxt::events::StaticEvent for NotifyTargetSendFail { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyTargetSendFail"; @@ -39742,12 +35561,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] - #[doc = ""] - #[doc = "\\[ location, query ID \\]"] - pub struct NotifyTargetMigrationFail( - pub runtime_types::xcm::VersionedMultiLocation, - pub ::core::primitive::u64, - ); + pub struct NotifyTargetMigrationFail { + pub location: runtime_types::xcm::VersionedMultiLocation, + pub query_id: ::core::primitive::u64, + } impl ::subxt::events::StaticEvent for NotifyTargetMigrationFail { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyTargetMigrationFail"; @@ -39769,12 +35586,10 @@ pub mod api { #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] - #[doc = ""] - #[doc = "\\[ origin location, id \\]"] - pub struct InvalidQuerierVersion( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u64, - ); + pub struct InvalidQuerierVersion { + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + } impl ::subxt::events::StaticEvent for InvalidQuerierVersion { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidQuerierVersion"; @@ -39792,14 +35607,13 @@ pub mod api { #[doc = "Expected query response has been received but the querier location of the response does"] #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] - #[doc = ""] - #[doc = "\\[ origin location, id, expected querier, maybe actual querier \\]"] - pub struct InvalidQuerier( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::primitive::u64, - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub ::core::option::Option, - ); + pub struct InvalidQuerier { + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + pub expected_querier: runtime_types::xcm::v3::multilocation::MultiLocation, + pub maybe_actual_querier: + ::core::option::Option, + } impl ::subxt::events::StaticEvent for InvalidQuerier { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidQuerier"; @@ -39816,12 +35630,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] - #[doc = ""] - #[doc = "\\[ destination location, cost \\]"] - pub struct VersionNotifyStarted( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::v3::multiasset::MultiAssets, - ); + pub struct VersionNotifyStarted { + pub destination: runtime_types::xcm::v3::multilocation::MultiLocation, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } impl ::subxt::events::StaticEvent for VersionNotifyStarted { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionNotifyStarted"; @@ -39836,13 +35649,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "We have requested that a remote chain sends us XCM version change notifications."] - #[doc = ""] - #[doc = "\\[ destination location, cost \\]"] - pub struct VersionNotifyRequested( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::v3::multiasset::MultiAssets, - ); + #[doc = "We have requested that a remote chain send us XCM version change notifications."] + pub struct VersionNotifyRequested { + pub destination: runtime_types::xcm::v3::multilocation::MultiLocation, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } impl ::subxt::events::StaticEvent for VersionNotifyRequested { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionNotifyRequested"; @@ -39858,12 +35670,11 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "We have requested that a remote chain stops sending us XCM version change notifications."] - #[doc = ""] - #[doc = "\\[ destination location, cost \\]"] - pub struct VersionNotifyUnrequested( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::v3::multiasset::MultiAssets, - ); + pub struct VersionNotifyUnrequested { + pub destination: runtime_types::xcm::v3::multilocation::MultiLocation, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } impl ::subxt::events::StaticEvent for VersionNotifyUnrequested { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionNotifyUnrequested"; @@ -39879,12 +35690,10 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] - #[doc = ""] - #[doc = "\\[ paying location, fees \\]"] - pub struct FeesPaid( - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::v3::multiasset::MultiAssets, - ); + pub struct FeesPaid { + pub paying: runtime_types::xcm::v3::multilocation::MultiLocation, + pub fees: runtime_types::xcm::v3::multiasset::MultiAssets, + } impl ::subxt::events::StaticEvent for FeesPaid { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "FeesPaid"; @@ -39900,13 +35709,11 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Some assets have been claimed from an asset trap"] - #[doc = ""] - #[doc = "\\[ hash, origin, assets \\]"] - pub struct AssetsClaimed( - pub ::subxt::utils::H256, - pub runtime_types::xcm::v3::multilocation::MultiLocation, - pub runtime_types::xcm::VersionedMultiAssets, - ); + pub struct AssetsClaimed { + pub hash: ::subxt::utils::H256, + pub origin: runtime_types::xcm::v3::multilocation::MultiLocation, + pub assets: runtime_types::xcm::VersionedMultiAssets, + } impl ::subxt::events::StaticEvent for AssetsClaimed { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "AssetsClaimed"; @@ -40268,7 +36075,7 @@ pub mod api { _2: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord, + runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, @@ -40282,10 +36089,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_2.borrow()), ], [ - 84u8, 68u8, 77u8, 93u8, 197u8, 135u8, 4u8, 75u8, 163u8, 6u8, 230u8, - 249u8, 85u8, 42u8, 202u8, 173u8, 25u8, 188u8, 245u8, 145u8, 114u8, - 106u8, 112u8, 17u8, 155u8, 50u8, 198u8, 174u8, 253u8, 75u8, 40u8, - 145u8, + 100u8, 88u8, 111u8, 249u8, 153u8, 101u8, 193u8, 52u8, 201u8, 73u8, + 121u8, 226u8, 175u8, 108u8, 169u8, 225u8, 10u8, 105u8, 27u8, 5u8, + 174u8, 129u8, 53u8, 59u8, 80u8, 171u8, 133u8, 99u8, 102u8, 148u8, + 206u8, 159u8, ], ) } @@ -40294,7 +36101,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord, + runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, (), (), ::subxt::storage::address::Yes, @@ -40304,10 +36111,10 @@ pub mod api { "RemoteLockedFungibles", Vec::new(), [ - 84u8, 68u8, 77u8, 93u8, 197u8, 135u8, 4u8, 75u8, 163u8, 6u8, 230u8, - 249u8, 85u8, 42u8, 202u8, 173u8, 25u8, 188u8, 245u8, 145u8, 114u8, - 106u8, 112u8, 17u8, 155u8, 50u8, 198u8, 174u8, 253u8, 75u8, 40u8, - 145u8, + 100u8, 88u8, 111u8, 249u8, 153u8, 101u8, 193u8, 52u8, 201u8, 73u8, + 121u8, 226u8, 175u8, 108u8, 169u8, 225u8, 10u8, 105u8, 27u8, 5u8, + 174u8, 129u8, 53u8, 59u8, 80u8, 171u8, 133u8, 99u8, 102u8, 148u8, + 206u8, 159u8, ], ) } @@ -40388,6 +36195,352 @@ pub mod api { } } } + pub mod message_queue { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_message_queue::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_message_queue::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReapPage { pub message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , pub page_index : :: core :: primitive :: u32 , } + impl ::subxt::blocks::StaticExtrinsic for ReapPage { + const PALLET: &'static str = "MessageQueue"; + const CALL: &'static str = "reap_page"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ExecuteOverweight { pub message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , pub page : :: core :: primitive :: u32 , pub index : :: core :: primitive :: u32 , pub weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } + impl ::subxt::blocks::StaticExtrinsic for ExecuteOverweight { + const PALLET: &'static str = "MessageQueue"; + const CALL: &'static str = "execute_overweight"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::reap_page`]."] + pub fn reap_page( + &self, + message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin, + page_index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "MessageQueue", + "reap_page", + types::ReapPage { + message_origin, + page_index, + }, + [ + 249u8, 194u8, 53u8, 213u8, 95u8, 100u8, 212u8, 239u8, 81u8, 202u8, + 106u8, 81u8, 201u8, 156u8, 154u8, 28u8, 222u8, 45u8, 25u8, 233u8, + 166u8, 127u8, 62u8, 64u8, 46u8, 159u8, 202u8, 208u8, 90u8, 12u8, 60u8, + 215u8, + ], + ) + } + #[doc = "See [`Pallet::execute_overweight`]."] + pub fn execute_overweight( + &self, + message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin, + page: ::core::primitive::u32, + index: ::core::primitive::u32, + weight_limit: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "MessageQueue", + "execute_overweight", + types::ExecuteOverweight { + message_origin, + page, + index, + weight_limit, + }, + [ + 228u8, 182u8, 171u8, 224u8, 60u8, 224u8, 190u8, 13u8, 132u8, 62u8, + 212u8, 117u8, 103u8, 23u8, 74u8, 45u8, 173u8, 26u8, 43u8, 95u8, 84u8, + 168u8, 113u8, 63u8, 198u8, 24u8, 161u8, 5u8, 217u8, 68u8, 88u8, 129u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_message_queue::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] + pub struct ProcessingFailed { + pub id: [::core::primitive::u8; 32usize], + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub error: runtime_types::frame_support::traits::messages::ProcessMessageError, + } + impl ::subxt::events::StaticEvent for ProcessingFailed { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "ProcessingFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Message is processed."] + pub struct Processed { + pub id: [::core::primitive::u8; 32usize], + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub weight_used: runtime_types::sp_weights::weight_v2::Weight, + pub success: ::core::primitive::bool, + } + impl ::subxt::events::StaticEvent for Processed { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "Processed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Message placed in overweight queue."] + pub struct OverweightEnqueued { + pub id: [::core::primitive::u8; 32usize], + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub page_index: ::core::primitive::u32, + pub message_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for OverweightEnqueued { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "OverweightEnqueued"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "This page was reaped."] + pub struct PageReaped { + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for PageReaped { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "PageReaped"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "BookStateFor", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 101u8, 219u8, 156u8, 174u8, 20u8, 72u8, 40u8, 71u8, 155u8, 127u8, + 201u8, 72u8, 65u8, 29u8, 95u8, 70u8, 6u8, 97u8, 22u8, 129u8, 165u8, + 66u8, 70u8, 89u8, 170u8, 75u8, 148u8, 121u8, 139u8, 230u8, 20u8, 128u8, + ], + ) + } + #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , () , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "BookStateFor", + Vec::new(), + [ + 101u8, 219u8, 156u8, 174u8, 20u8, 72u8, 40u8, 71u8, 155u8, 127u8, + 201u8, 72u8, 65u8, 29u8, 95u8, 70u8, 6u8, 97u8, 22u8, 129u8, 165u8, + 66u8, 70u8, 89u8, 170u8, 75u8, 148u8, 121u8, 139u8, 230u8, 20u8, 128u8, + ], + ) + } + #[doc = " The origin at which we should begin servicing."] + pub fn service_head( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "ServiceHead", + vec![], + [ + 17u8, 130u8, 229u8, 193u8, 127u8, 237u8, 60u8, 232u8, 99u8, 109u8, + 102u8, 228u8, 124u8, 103u8, 24u8, 188u8, 151u8, 121u8, 55u8, 97u8, + 85u8, 63u8, 131u8, 60u8, 99u8, 12u8, 88u8, 230u8, 86u8, 50u8, 12u8, + 75u8, + ], + ) + } + #[doc = " The map of page indices to pages."] + pub fn pages( + &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin >, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_message_queue::Page<::core::primitive::u32>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "Pages", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 134u8, 234u8, 133u8, 236u8, 120u8, 91u8, 243u8, 213u8, 115u8, 249u8, + 242u8, 242u8, 118u8, 114u8, 113u8, 106u8, 2u8, 32u8, 18u8, 197u8, 57u8, + 105u8, 49u8, 161u8, 171u8, 254u8, 155u8, 34u8, 82u8, 73u8, 126u8, + 210u8, + ], + ) + } + #[doc = " The map of page indices to pages."] + pub fn pages_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_message_queue::Page<::core::primitive::u32>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "Pages", + Vec::new(), + [ + 134u8, 234u8, 133u8, 236u8, 120u8, 91u8, 243u8, 213u8, 115u8, 249u8, + 242u8, 242u8, 118u8, 114u8, 113u8, 106u8, 2u8, 32u8, 18u8, 197u8, 57u8, + 105u8, 49u8, 161u8, 171u8, 254u8, 155u8, 34u8, 82u8, 73u8, 126u8, + 210u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The size of the page; this implies the maximum message size which can be sent."] + #[doc = ""] + #[doc = " A good value depends on the expected message sizes, their weights, the weight that is"] + #[doc = " available for processing them and the maximal needed message size. The maximal message"] + #[doc = " size is slightly lower than this as defined by [`MaxMessageLenOf`]."] + pub fn heap_size(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "MessageQueue", + "HeapSize", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of stale pages (i.e. of overweight messages) allowed before culling"] + #[doc = " can happen. Once there are more stale pages than this, then historical pages may be"] + #[doc = " dropped, even if they contain unprocessed overweight messages."] + pub fn max_stale(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "MessageQueue", + "MaxStale", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The amount of weight (if any) which should be provided to the message queue for"] + #[doc = " servicing enqueued items."] + #[doc = ""] + #[doc = " This may be legitimately `None` in the case that you will call"] + #[doc = " `ServiceQueues::service_queues` manually."] + pub fn service_weight( + &self, + ) -> ::subxt::constants::Address< + ::core::option::Option, + > { + ::subxt::constants::Address::new_static( + "MessageQueue", + "ServiceWeight", + [ + 194u8, 157u8, 162u8, 120u8, 24u8, 204u8, 63u8, 167u8, 187u8, 244u8, + 45u8, 182u8, 177u8, 32u8, 34u8, 72u8, 204u8, 252u8, 202u8, 221u8, + 201u8, 158u8, 136u8, 75u8, 213u8, 102u8, 145u8, 143u8, 88u8, 141u8, + 83u8, 195u8, + ], + ) + } + } + } + } pub mod runtime_types { use super::runtime_types; pub mod bounded_collections { @@ -40586,7 +36739,7 @@ pub mod api { } pub mod traits { use super::runtime_types; - pub mod misc { + pub mod messages { use super::runtime_types; #[derive( :: subxt :: ext :: codec :: Decode, @@ -40598,10 +36751,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct WrapperOpaque<_0>( - #[codec(compact)] pub ::core::primitive::u32, - pub _0, - ); + pub enum ProcessMessageError { + #[codec(index = 0)] + BadFormat, + #[codec(index = 1)] + Corrupt, + #[codec(index = 2)] + Unsupported, + #[codec(index = 3)] + Overweight(runtime_types::sp_weights::weight_v2::Weight), + #[codec(index = 4)] + Yield, + } } pub mod preimages { use super::runtime_types; @@ -40857,37 +37018,28 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Make some on-chain remark."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`"] + #[doc = "See [`Pallet::remark`]."] remark { remark: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Set the number of pages in the WebAssembly environment's heap."] + #[doc = "See [`Pallet::set_heap_pages`]."] set_heap_pages { pages: ::core::primitive::u64 }, #[codec(index = 2)] - #[doc = "Set the new runtime code."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(C + S)` where `C` length of `code` and `S` complexity of `can_set_code`"] + #[doc = "See [`Pallet::set_code`]."] set_code { code: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "Set the new runtime code without doing any checks of the given `code`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(C)` where `C` length of `code`"] + #[doc = "See [`Pallet::set_code_without_checks`]."] set_code_without_checks { code: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] - #[doc = "Set some items of storage."] + #[doc = "See [`Pallet::set_storage`]."] set_storage { items: ::std::vec::Vec<( ::std::vec::Vec<::core::primitive::u8>, @@ -40895,21 +37047,18 @@ pub mod api { )>, }, #[codec(index = 5)] - #[doc = "Kill some items from storage."] + #[doc = "See [`Pallet::kill_storage`]."] kill_storage { keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, }, #[codec(index = 6)] - #[doc = "Kill all storage items with a key that starts with the given prefix."] - #[doc = ""] - #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] - #[doc = "the prefix we are removing to accurately calculate the weight of this function."] + #[doc = "See [`Pallet::kill_prefix`]."] kill_prefix { prefix: ::std::vec::Vec<::core::primitive::u8>, subkeys: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "Make some on-chain remark and emit event."] + #[doc = "See [`Pallet::remark_with_event`]."] remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8>, }, @@ -41005,9 +37154,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct AccountInfo<_0, _1> { pub nonce: _0, - pub consumers: _0, - pub providers: _0, - pub sufficients: _0, + pub consumers: ::core::primitive::u32, + pub providers: ::core::primitive::u32, + pub sufficients: ::core::primitive::u32, pub data: _1, } #[derive( @@ -41073,13 +37222,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -41093,14 +37239,7 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -41114,10 +37253,7 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] - #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] - #[doc = "Multiple calls to this method will replace any existing planned config change that had"] - #[doc = "not been enacted yet."] + #[doc = "See [`Pallet::plan_config_change`]."] plan_config_change { config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, }, @@ -41132,7 +37268,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "An equivocation proof provided as part of an equivocation report is invalid."] @@ -41217,31 +37353,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Declare that some `dislocated` account has, through rewards or penalties, sufficiently"] - #[doc = "changed its score that it should properly fall into a different bag than its current"] - #[doc = "one."] - #[doc = ""] - #[doc = "Anyone can call this function about any potentially dislocated account."] - #[doc = ""] - #[doc = "Will always update the stored score of `dislocated` to the correct score, based on"] - #[doc = "`ScoreProvider`."] - #[doc = ""] - #[doc = "If `dislocated` does not exists, it returns an error."] + #[doc = "See [`Pallet::rebag`]."] rebag { dislocated: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "Move the caller's Id directly in front of `lighter`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and can only be called by the Id of"] - #[doc = "the account going in front of `lighter`."] - #[doc = ""] - #[doc = "Only works if"] - #[doc = "- both nodes are within the same bag,"] - #[doc = "- and `origin` has a greater `Score` than `lighter`."] + #[doc = "See [`Pallet::put_in_front_of`]."] put_in_front_of { lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, @@ -41256,7 +37376,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "A error in the list interface implementation."] @@ -41272,7 +37392,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Moved an account from one bag to another."] @@ -41304,28 +37424,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + #[doc = "See [`Pallet::transfer_allow_death`]."] transfer_allow_death { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 1)] - #[doc = "Set the regular balance of a given account; it also takes a reserved balance but this"] - #[doc = "must be the same as the account's current reserved balance."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] - #[doc = ""] - #[doc = "WARNING: This call is DEPRECATED! Use `force_set_balance` instead."] + #[doc = "See [`Pallet::set_balance_deprecated`]."] set_balance_deprecated { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] @@ -41334,8 +37443,7 @@ pub mod api { old_reserved: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] + #[doc = "See [`Pallet::force_transfer`]."] force_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -41343,70 +37451,38 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + #[doc = "See [`Pallet::transfer_keep_alive`]."] transfer_keep_alive { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] + #[doc = "See [`Pallet::transfer_all`]."] transfer_all { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, keep_alive: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] + #[doc = "See [`Pallet::force_unreserve`]."] force_unreserve { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, amount: ::core::primitive::u128, }, #[codec(index = 6)] - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] + #[doc = "See [`Pallet::upgrade_accounts`]."] upgrade_accounts { who: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 7)] - #[doc = "Alias for `transfer_allow_death`, provided only for name-wise compatibility."] - #[doc = ""] - #[doc = "WARNING: DEPRECATED! Will be released in approximately 3 months."] + #[doc = "See [`Pallet::transfer`]."] transfer { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 8)] - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] + #[doc = "See [`Pallet::force_set_balance`]."] force_set_balance { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] @@ -41423,7 +37499,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Vesting balance too high to send value."] @@ -41466,7 +37542,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "An account was created with some free balance."] @@ -41700,45 +37776,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Propose a new bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] - #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] - #[doc = "or slashed when rejected."] - #[doc = ""] - #[doc = "- `curator`: The curator account whom will manage this bounty."] - #[doc = "- `fee`: The curator fee."] - #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] - #[doc = "- `description`: The description of this bounty."] + #[doc = "See [`Pallet::propose_bounty`]."] propose_bounty { #[codec(compact)] value: ::core::primitive::u128, description: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] - #[doc = "and the original deposit will be returned."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::approve_bounty`]."] approve_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Assign a curator to a funded bounty."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::propose_curator`]."] propose_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -41747,92 +37801,38 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "Unassign curator from a bounty."] - #[doc = ""] - #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] - #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] - #[doc = ""] - #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] - #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] - #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] - #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] - #[doc = "we should pick a new curator. In this case the curator should also be slashed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::unassign_curator`]."] unassign_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "Accept the curator role for a bounty."] - #[doc = "A deposit will be reserved from curator and refund upon successful payout."] - #[doc = ""] - #[doc = "May only be called from the curator."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::accept_curator`]."] accept_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] - #[doc = "after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to award."] - #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::award_bounty`]."] award_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 6)] - #[doc = "Claim the payout from an awarded bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to claim."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::claim_bounty`]."] claim_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] - #[doc = "the curator deposit will be unreserved if possible."] - #[doc = ""] - #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to cancel."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::close_bounty`]."] close_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "Extend the expiry time of an active bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to extend."] - #[doc = "- `remark`: additional information."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::extend_bounty_expiry`]."] extend_bounty_expiry { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -41849,7 +37849,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Proposer's balance is too low."] @@ -41896,7 +37896,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "New bounty proposal."] @@ -41992,28 +37992,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Add a new child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of parent"] - #[doc = "bounty and the parent bounty must be in \"active\" state."] - #[doc = ""] - #[doc = "Child-bounty gets added successfully & fund gets transferred from"] - #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] - #[doc = "funds, else the call fails."] - #[doc = ""] - #[doc = "Upper bound to maximum number of active child bounties that can be"] - #[doc = "added are managed via runtime trait config"] - #[doc = "[`Config::MaxActiveChildBountyCount`]."] - #[doc = ""] - #[doc = "If the call is success, the status of child-bounty is updated to"] - #[doc = "\"Added\"."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] - #[doc = "- `value`: Value for executing the proposal."] - #[doc = "- `description`: Text description for the child-bounty."] + #[doc = "See [`Pallet::add_child_bounty`]."] add_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -42022,21 +38004,7 @@ pub mod api { description: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Propose curator for funded child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be curator of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `curator`: Address of child-bounty curator."] - #[doc = "- `fee`: payment fee to child-bounty curator for execution."] + #[doc = "See [`Pallet::propose_curator`]."] propose_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -42047,25 +38015,7 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Accept the curator role for the child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this"] - #[doc = "child-bounty."] - #[doc = ""] - #[doc = "A deposit will be reserved from the curator and refund upon"] - #[doc = "successful payout or cancellation."] - #[doc = ""] - #[doc = "Fee for curator is deducted from curator fee of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] - #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::accept_curator`]."] accept_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -42073,40 +38023,7 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Unassign curator from a child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] - #[doc = "the curator of the parent bounty, or any signed origin."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] - #[doc = "curator, parent bounty must be in active state, for this call to"] - #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] - #[doc = "this call irrespective of the parent bounty state."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin` or the"] - #[doc = "parent bounty curator, we assume that the child-bounty curator is"] - #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] - #[doc = "slashed."] - #[doc = ""] - #[doc = "If the origin is the child-bounty curator, we take this as a sign"] - #[doc = "that they are unable to do their job, and are willingly giving up."] - #[doc = "We could slash the deposit, but for now we allow them to unreserve"] - #[doc = "their deposit and exit without issue. (We may want to change this if"] - #[doc = "it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] - #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] - #[doc = "inactive state of child-bounty curator."] - #[doc = ""] - #[doc = "This allows anyone in the community to call out that a child-bounty"] - #[doc = "curator is not doing their due diligence, and we should pick a new"] - #[doc = "one. In this case the child-bounty curator deposit is slashed."] - #[doc = ""] - #[doc = "State of child-bounty is moved to Added state on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::unassign_curator`]."] unassign_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -42114,23 +38031,7 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "Award child-bounty to a beneficiary."] - #[doc = ""] - #[doc = "The beneficiary will be able to claim the funds after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the parent curator or"] - #[doc = "curator of this child-bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in active state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `beneficiary`: Beneficiary account."] + #[doc = "See [`Pallet::award_child_bounty`]."] award_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -42139,22 +38040,7 @@ pub mod api { beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 5)] - #[doc = "Claim the payout from an awarded child-bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call may be any signed origin."] - #[doc = ""] - #[doc = "Call works independent of parent bounty state, No need for parent"] - #[doc = "bounty to be in active state."] - #[doc = ""] - #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] - #[doc = "paid & curator deposit is unreserved."] - #[doc = ""] - #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] - #[doc = "call. And instance of child-bounty is removed from the state on"] - #[doc = "successful call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::claim_child_bounty`]."] claim_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -42162,28 +38048,7 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] - #[doc = "are transferred to parent bounty account. The child-bounty curator"] - #[doc = "deposit may be unreserved if possible."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be either parent curator or"] - #[doc = "`T::RejectOrigin`."] - #[doc = ""] - #[doc = "If the state of child-bounty is `Active`, curator deposit is"] - #[doc = "unreserved."] - #[doc = ""] - #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] - #[doc = "returns `PendingPayout` error."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] - #[doc = "active state, for this child-bounty call to work. For origin"] - #[doc = "T::RejectOrigin execution is forced."] - #[doc = ""] - #[doc = "Instance of child-bounty is removed from the state on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::close_child_bounty`]."] close_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -42201,7 +38066,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The parent bounty is not in active state."] @@ -42223,7 +38088,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A child-bounty is added."] @@ -42265,7 +38130,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ChildBounty<_0, _1, _2> { - pub parent_bounty: _2, + pub parent_bounty: ::core::primitive::u32, pub value: _1, pub fee: _1, pub curator_deposit: _1, @@ -42310,68 +38175,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Set the collective's membership."] - #[doc = ""] - #[doc = "- `new_members`: The new member list. Be nice to the chain and provide it sorted."] - #[doc = "- `prime`: The prime member whose vote sets the default."] - #[doc = "- `old_count`: The upper bound for the previous number of members in storage. Used for"] - #[doc = " weight estimation."] - #[doc = ""] - #[doc = "The dispatch of this call must be `SetMembersOrigin`."] - #[doc = ""] - #[doc = "NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but"] - #[doc = " the weight estimations rely on it to estimate dispatchable weight."] - #[doc = ""] - #[doc = "# WARNING:"] - #[doc = ""] - #[doc = "The `pallet-collective` can also be managed by logic outside of the pallet through the"] - #[doc = "implementation of the trait [`ChangeMembers`]."] - #[doc = "Any call to `set_members` must be careful that the member set doesn't get out of sync"] - #[doc = "with other logic managing the member set."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(MP + N)` where:"] - #[doc = " - `M` old-members-count (code- and governance-bounded)"] - #[doc = " - `N` new-members-count (code- and governance-bounded)"] - #[doc = " - `P` proposals-count (code-bounded)"] + #[doc = "See [`Pallet::set_members`]."] set_members { new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, prime: ::core::option::Option<::subxt::utils::AccountId32>, old_count: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Dispatch a proposal from a member using the `Member` origin."] - #[doc = ""] - #[doc = "Origin must be a member of the collective."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(B + M + P)` where:"] - #[doc = "- `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = "- `M` members-count (code-bounded)"] - #[doc = "- `P` complexity of dispatching `proposal`"] + #[doc = "See [`Pallet::execute`]."] execute { proposal: ::std::boxed::Box, #[codec(compact)] length_bound: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Add a new proposal to either be voted on or executed directly."] - #[doc = ""] - #[doc = "Requires the sender to be member."] - #[doc = ""] - #[doc = "`threshold` determines whether `proposal` is executed directly (`threshold < 2`)"] - #[doc = "or put up for voting."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1)` or `O(B + M + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - branching is influenced by `threshold` where:"] - #[doc = " - `P1` is proposal execution complexity (`threshold < 2`)"] - #[doc = " - `P2` is proposals-count (code-bounded) (`threshold >= 2`)"] + #[doc = "See [`Pallet::propose`]."] propose { #[codec(compact)] threshold: ::core::primitive::u32, @@ -42380,15 +38201,7 @@ pub mod api { length_bound: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Add an aye or nay vote for the sender to the given proposal."] - #[doc = ""] - #[doc = "Requires the sender to be a member."] - #[doc = ""] - #[doc = "Transaction fees will be waived if the member is voting on any particular proposal"] - #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] - #[doc = "fee."] - #[doc = "## Complexity"] - #[doc = "- `O(M)` where `M` is members-count (code- and governance-bounded)"] + #[doc = "See [`Pallet::vote`]."] vote { proposal: ::subxt::utils::H256, #[codec(compact)] @@ -42396,42 +38209,10 @@ pub mod api { approve: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "Disapprove a proposal, close, and remove it from the system, regardless of its current"] - #[doc = "state."] - #[doc = ""] - #[doc = "Must be called by the Root origin."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "* `proposal_hash`: The hash of the proposal that should be disapproved."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(P) where P is the number of max proposals"] + #[doc = "See [`Pallet::disapprove_proposal`]."] disapprove_proposal { proposal_hash: ::subxt::utils::H256 }, #[codec(index = 6)] - #[doc = "Close a vote that is either approved, disapproved or whose voting period has ended."] - #[doc = ""] - #[doc = "May be called by any signed account in order to finish voting and close the proposal."] - #[doc = ""] - #[doc = "If called before the end of the voting period it will only close the vote if it is"] - #[doc = "has enough votes to be approved or disapproved."] - #[doc = ""] - #[doc = "If called after the end of the voting period abstentions are counted as rejections"] - #[doc = "unless there is a prime member set and the prime member cast an approval."] - #[doc = ""] - #[doc = "If the close operation completes successfully with disapproval, the transaction fee will"] - #[doc = "be waived. Otherwise execution of the approved operation will be charged to the caller."] - #[doc = ""] - #[doc = "+ `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed"] - #[doc = "proposal."] - #[doc = "+ `length_bound`: The upper bound for the length of the proposal in storage. Checked via"] - #[doc = "`storage::read` so it is `size_of::() == 4` larger than the pure length."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1 + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - `P1` is the complexity of `proposal` preimage."] - #[doc = " - `P2` is proposal-count (code-bounded)"] + #[doc = "See [`Pallet::close`]."] close { proposal_hash: ::subxt::utils::H256, #[codec(compact)] @@ -42451,68 +38232,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call2 { #[codec(index = 0)] - #[doc = "Set the collective's membership."] - #[doc = ""] - #[doc = "- `new_members`: The new member list. Be nice to the chain and provide it sorted."] - #[doc = "- `prime`: The prime member whose vote sets the default."] - #[doc = "- `old_count`: The upper bound for the previous number of members in storage. Used for"] - #[doc = " weight estimation."] - #[doc = ""] - #[doc = "The dispatch of this call must be `SetMembersOrigin`."] - #[doc = ""] - #[doc = "NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but"] - #[doc = " the weight estimations rely on it to estimate dispatchable weight."] - #[doc = ""] - #[doc = "# WARNING:"] - #[doc = ""] - #[doc = "The `pallet-collective` can also be managed by logic outside of the pallet through the"] - #[doc = "implementation of the trait [`ChangeMembers`]."] - #[doc = "Any call to `set_members` must be careful that the member set doesn't get out of sync"] - #[doc = "with other logic managing the member set."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(MP + N)` where:"] - #[doc = " - `M` old-members-count (code- and governance-bounded)"] - #[doc = " - `N` new-members-count (code- and governance-bounded)"] - #[doc = " - `P` proposals-count (code-bounded)"] + #[doc = "See [`Pallet::set_members`]."] set_members { new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, prime: ::core::option::Option<::subxt::utils::AccountId32>, old_count: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Dispatch a proposal from a member using the `Member` origin."] - #[doc = ""] - #[doc = "Origin must be a member of the collective."] - #[doc = ""] - #[doc = "## Complexity:"] - #[doc = "- `O(B + M + P)` where:"] - #[doc = "- `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = "- `M` members-count (code-bounded)"] - #[doc = "- `P` complexity of dispatching `proposal`"] + #[doc = "See [`Pallet::execute`]."] execute { proposal: ::std::boxed::Box, #[codec(compact)] length_bound: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Add a new proposal to either be voted on or executed directly."] - #[doc = ""] - #[doc = "Requires the sender to be member."] - #[doc = ""] - #[doc = "`threshold` determines whether `proposal` is executed directly (`threshold < 2`)"] - #[doc = "or put up for voting."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1)` or `O(B + M + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - branching is influenced by `threshold` where:"] - #[doc = " - `P1` is proposal execution complexity (`threshold < 2`)"] - #[doc = " - `P2` is proposals-count (code-bounded) (`threshold >= 2`)"] + #[doc = "See [`Pallet::propose`]."] propose { #[codec(compact)] threshold: ::core::primitive::u32, @@ -42521,15 +38258,7 @@ pub mod api { length_bound: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Add an aye or nay vote for the sender to the given proposal."] - #[doc = ""] - #[doc = "Requires the sender to be a member."] - #[doc = ""] - #[doc = "Transaction fees will be waived if the member is voting on any particular proposal"] - #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] - #[doc = "fee."] - #[doc = "## Complexity"] - #[doc = "- `O(M)` where `M` is members-count (code- and governance-bounded)"] + #[doc = "See [`Pallet::vote`]."] vote { proposal: ::subxt::utils::H256, #[codec(compact)] @@ -42537,42 +38266,10 @@ pub mod api { approve: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "Disapprove a proposal, close, and remove it from the system, regardless of its current"] - #[doc = "state."] - #[doc = ""] - #[doc = "Must be called by the Root origin."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "* `proposal_hash`: The hash of the proposal that should be disapproved."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(P) where P is the number of max proposals"] + #[doc = "See [`Pallet::disapprove_proposal`]."] disapprove_proposal { proposal_hash: ::subxt::utils::H256 }, #[codec(index = 6)] - #[doc = "Close a vote that is either approved, disapproved or whose voting period has ended."] - #[doc = ""] - #[doc = "May be called by any signed account in order to finish voting and close the proposal."] - #[doc = ""] - #[doc = "If called before the end of the voting period it will only close the vote if it is"] - #[doc = "has enough votes to be approved or disapproved."] - #[doc = ""] - #[doc = "If called after the end of the voting period abstentions are counted as rejections"] - #[doc = "unless there is a prime member set and the prime member cast an approval."] - #[doc = ""] - #[doc = "If the close operation completes successfully with disapproval, the transaction fee will"] - #[doc = "be waived. Otherwise execution of the approved operation will be charged to the caller."] - #[doc = ""] - #[doc = "+ `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed"] - #[doc = "proposal."] - #[doc = "+ `length_bound`: The upper bound for the length of the proposal in storage. Checked via"] - #[doc = "`storage::read` so it is `size_of::() == 4` larger than the pure length."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(B + M + P1 + P2)` where:"] - #[doc = " - `B` is `proposal` size in bytes (length-fee-bounded)"] - #[doc = " - `M` is members-count (code- and governance-bounded)"] - #[doc = " - `P1` is the complexity of `proposal` preimage."] - #[doc = " - `P2` is proposal-count (code-bounded)"] + #[doc = "See [`Pallet::close`]."] close { proposal_hash: ::subxt::utils::H256, #[codec(compact)] @@ -42592,7 +38289,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Account is not a member"] @@ -42635,7 +38332,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error2 { #[codec(index = 0)] #[doc = "Account is not a member"] @@ -42678,7 +38375,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A motion (given hash) has been proposed (by given account) with a threshold (given"] @@ -42737,7 +38434,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event2 { #[codec(index = 0)] #[doc = "A motion (given hash) has been proposed (by given account) with a threshold (given"] @@ -42816,8 +38513,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Votes<_0, _1> { - pub index: _1, - pub threshold: _1, + pub index: ::core::primitive::u32, + pub threshold: ::core::primitive::u32, pub ayes: ::std::vec::Vec<_0>, pub nays: ::std::vec::Vec<_0>, pub end: _1, @@ -42866,18 +38563,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] - #[doc = "otherwise it is a vote to keep the status quo."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `poll_index`: The index of the poll to vote for."] - #[doc = "- `vote`: The vote configuration."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] + #[doc = "See [`Pallet::vote`]."] vote { #[codec(compact)] poll_index: ::core::primitive::u32, @@ -42886,29 +38575,7 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] - #[doc = "particular class of polls."] - #[doc = ""] - #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] - #[doc = "time appropriate for the conviction's lock period."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] - #[doc = " - be delegating already; or"] - #[doc = " - have no voting activity (if there is, then it will need to be removed/consolidated"] - #[doc = " through `reap_vote` or `unvote`)."] - #[doc = ""] - #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] - #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] - #[doc = " to this function are required."] - #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] - #[doc = " account is undelegated, the funds will be locked for the corresponding period."] - #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] - #[doc = " be more than the account's current balance."] - #[doc = ""] - #[doc = "Emits `Delegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::delegate`]."] delegate { class: ::core::primitive::u16, to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -42916,86 +38583,22 @@ pub mod api { balance: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] - #[doc = ""] - #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] - #[doc = "of the conviction with which the delegation was issued has passed."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] - #[doc = "currently delegating."] - #[doc = ""] - #[doc = "- `class`: The class of polls to remove the delegation from."] - #[doc = ""] - #[doc = "Emits `Undelegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::undelegate`]."] undelegate { class: ::core::primitive::u16 }, #[codec(index = 3)] - #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] - #[doc = "class."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `class`: The class of polls to unlock."] - #[doc = "- `target`: The account to remove the lock on."] - #[doc = ""] - #[doc = "Weight: `O(R)` with R number of vote of target."] + #[doc = "See [`Pallet::unlock`]."] unlock { class: ::core::primitive::u16, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 4)] - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If:"] - #[doc = "- the poll was cancelled, or"] - #[doc = "- the poll is ongoing, or"] - #[doc = "- the poll has ended such that"] - #[doc = " - the vote of the account was in opposition to the result; or"] - #[doc = " - there was no conviction to the account's vote; or"] - #[doc = " - the account made a split vote"] - #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] - #[doc = "funds being available."] - #[doc = ""] - #[doc = "If, however, the poll has ended and:"] - #[doc = "- it finished corresponding to the vote of the account, and"] - #[doc = "- the account made a standard vote with conviction, and"] - #[doc = "- the lock period of the conviction is not over"] - #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] - #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] - #[doc = "of both the amount locked and the time is it locked for)."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] - #[doc = "registered for poll `index`."] - #[doc = ""] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] - #[doc = " which have finished or are cancelled, this must be `Some`."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_vote`]."] remove_vote { class: ::core::option::Option<::core::primitive::u16>, index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] - #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] - #[doc = "either because the poll was cancelled, because the voter lost the poll or"] - #[doc = "because the conviction period is over."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] - #[doc = " `index`."] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: The class of the poll."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_other_vote`]."] remove_other_vote { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, class: ::core::primitive::u16, @@ -43012,7 +38615,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Poll is not ongoing."] @@ -43062,7 +38665,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "An account has delegated their vote to another account. \\[who, target\\]"] @@ -43253,18 +38856,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Propose a sensitive action to be taken."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the sender must"] - #[doc = "have funds to cover the deposit."] - #[doc = ""] - #[doc = "- `proposal_hash`: The hash of the proposal preimage."] - #[doc = "- `value`: The amount of deposit (must be at least `MinimumDeposit`)."] - #[doc = ""] - #[doc = "Emits `Proposed`."] + #[doc = "See [`Pallet::propose`]."] propose { proposal: runtime_types::frame_support::traits::preimages::Bounded< runtime_types::polkadot_runtime::RuntimeCall, @@ -43273,24 +38868,13 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 1)] - #[doc = "Signals agreement with a particular proposal."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the sender"] - #[doc = "must have funds to cover the deposit, equal to the original deposit."] - #[doc = ""] - #[doc = "- `proposal`: The index of the proposal to second."] + #[doc = "See [`Pallet::second`]."] second { #[codec(compact)] proposal: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Vote in a referendum. If `vote.is_aye()`, the vote is to enact the proposal;"] - #[doc = "otherwise it is a vote to keep the status quo."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `ref_index`: The index of the referendum to vote for."] - #[doc = "- `vote`: The vote configuration."] + #[doc = "See [`Pallet::vote`]."] vote { #[codec(compact)] ref_index: ::core::primitive::u32, @@ -43299,261 +38883,86 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "Schedule an emergency cancellation of a referendum. Cannot happen twice to the same"] - #[doc = "referendum."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `CancellationOrigin`."] - #[doc = ""] - #[doc = "-`ref_index`: The index of the referendum to cancel."] - #[doc = ""] - #[doc = "Weight: `O(1)`."] + #[doc = "See [`Pallet::emergency_cancel`]."] emergency_cancel { ref_index: ::core::primitive::u32 }, #[codec(index = 4)] - #[doc = "Schedule a referendum to be tabled once it is legal to schedule an external"] - #[doc = "referendum."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `ExternalOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal."] + #[doc = "See [`Pallet::external_propose`]."] external_propose { proposal: runtime_types::frame_support::traits::preimages::Bounded< runtime_types::polkadot_runtime::RuntimeCall, >, }, #[codec(index = 5)] - #[doc = "Schedule a majority-carries referendum to be tabled next once it is legal to schedule"] - #[doc = "an external referendum."] - #[doc = ""] - #[doc = "The dispatch of this call must be `ExternalMajorityOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal."] - #[doc = ""] - #[doc = "Unlike `external_propose`, blacklisting has no effect on this and it may replace a"] - #[doc = "pre-scheduled `external_propose` call."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::external_propose_majority`]."] external_propose_majority { proposal: runtime_types::frame_support::traits::preimages::Bounded< runtime_types::polkadot_runtime::RuntimeCall, >, }, #[codec(index = 6)] - #[doc = "Schedule a negative-turnout-bias referendum to be tabled next once it is legal to"] - #[doc = "schedule an external referendum."] - #[doc = ""] - #[doc = "The dispatch of this call must be `ExternalDefaultOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal."] - #[doc = ""] - #[doc = "Unlike `external_propose`, blacklisting has no effect on this and it may replace a"] - #[doc = "pre-scheduled `external_propose` call."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::external_propose_default`]."] external_propose_default { proposal: runtime_types::frame_support::traits::preimages::Bounded< runtime_types::polkadot_runtime::RuntimeCall, >, }, #[codec(index = 7)] - #[doc = "Schedule the currently externally-proposed majority-carries referendum to be tabled"] - #[doc = "immediately. If there is no externally-proposed referendum currently, or if there is one"] - #[doc = "but it is not a majority-carries referendum then it fails."] - #[doc = ""] - #[doc = "The dispatch of this call must be `FastTrackOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The hash of the current external proposal."] - #[doc = "- `voting_period`: The period that is allowed for voting on this proposal. Increased to"] - #[doc = "\tMust be always greater than zero."] - #[doc = "\tFor `FastTrackOrigin` must be equal or greater than `FastTrackVotingPeriod`."] - #[doc = "- `delay`: The number of block after voting has ended in approval and this should be"] - #[doc = " enacted. This doesn't have a minimum amount."] - #[doc = ""] - #[doc = "Emits `Started`."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::fast_track`]."] fast_track { proposal_hash: ::subxt::utils::H256, voting_period: ::core::primitive::u32, delay: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "Veto and blacklist the external proposal hash."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `VetoOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The preimage hash of the proposal to veto and blacklist."] - #[doc = ""] - #[doc = "Emits `Vetoed`."] - #[doc = ""] - #[doc = "Weight: `O(V + log(V))` where V is number of `existing vetoers`"] + #[doc = "See [`Pallet::veto_external`]."] veto_external { proposal_hash: ::subxt::utils::H256 }, #[codec(index = 9)] - #[doc = "Remove a referendum."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Root_."] - #[doc = ""] - #[doc = "- `ref_index`: The index of the referendum to cancel."] - #[doc = ""] - #[doc = "# Weight: `O(1)`."] + #[doc = "See [`Pallet::cancel_referendum`]."] cancel_referendum { #[codec(compact)] ref_index: ::core::primitive::u32, }, #[codec(index = 10)] - #[doc = "Delegate the voting power (with some given conviction) of the sending account."] - #[doc = ""] - #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] - #[doc = "time appropriate for the conviction's lock period."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] - #[doc = " - be delegating already; or"] - #[doc = " - have no voting activity (if there is, then it will need to be removed/consolidated"] - #[doc = " through `reap_vote` or `unvote`)."] - #[doc = ""] - #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] - #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] - #[doc = " account is undelegated, the funds will be locked for the corresponding period."] - #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] - #[doc = " be more than the account's current balance."] - #[doc = ""] - #[doc = "Emits `Delegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of referendums the voter delegating to has"] - #[doc = " voted on. Weight is charged as if maximum votes."] + #[doc = "See [`Pallet::delegate`]."] delegate { to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, conviction: runtime_types::pallet_democracy::conviction::Conviction, balance: ::core::primitive::u128, }, #[codec(index = 11)] - #[doc = "Undelegate the voting power of the sending account."] - #[doc = ""] - #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] - #[doc = "of the conviction with which the delegation was issued."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] - #[doc = "currently delegating."] - #[doc = ""] - #[doc = "Emits `Undelegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of referendums the voter delegating to has"] - #[doc = " voted on. Weight is charged as if maximum votes."] + #[doc = "See [`Pallet::undelegate`]."] undelegate, #[codec(index = 12)] - #[doc = "Clears all public proposals."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Root_."] - #[doc = ""] - #[doc = "Weight: `O(1)`."] + #[doc = "See [`Pallet::clear_public_proposals`]."] clear_public_proposals, #[codec(index = 13)] - #[doc = "Unlock tokens that have an expired lock."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account to remove the lock on."] - #[doc = ""] - #[doc = "Weight: `O(R)` with R number of vote of target."] + #[doc = "See [`Pallet::unlock`]."] unlock { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 14)] - #[doc = "Remove a vote for a referendum."] - #[doc = ""] - #[doc = "If:"] - #[doc = "- the referendum was cancelled, or"] - #[doc = "- the referendum is ongoing, or"] - #[doc = "- the referendum has ended such that"] - #[doc = " - the vote of the account was in opposition to the result; or"] - #[doc = " - there was no conviction to the account's vote; or"] - #[doc = " - the account made a split vote"] - #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] - #[doc = "funds being available."] - #[doc = ""] - #[doc = "If, however, the referendum has ended and:"] - #[doc = "- it finished corresponding to the vote of the account, and"] - #[doc = "- the account made a standard vote with conviction, and"] - #[doc = "- the lock period of the conviction is not over"] - #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] - #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] - #[doc = "of both the amount locked and the time is it locked for)."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] - #[doc = "registered for referendum `index`."] - #[doc = ""] - #[doc = "- `index`: The index of referendum of the vote to be removed."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_vote`]."] remove_vote { index: ::core::primitive::u32 }, #[codec(index = 15)] - #[doc = "Remove a vote for a referendum."] - #[doc = ""] - #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] - #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] - #[doc = "either because the referendum was cancelled, because the voter lost the referendum or"] - #[doc = "because the conviction period is over."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account of the vote to be removed; this account must have voted for"] - #[doc = " referendum `index`."] - #[doc = "- `index`: The index of referendum of the vote to be removed."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_other_vote`]."] remove_other_vote { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, }, #[codec(index = 16)] - #[doc = "Permanently place a proposal into the blacklist. This prevents it from ever being"] - #[doc = "proposed again."] - #[doc = ""] - #[doc = "If called on a queued public or external proposal, then this will result in it being"] - #[doc = "removed. If the `ref_index` supplied is an active referendum with the proposal hash,"] - #[doc = "then it will be cancelled."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `BlacklistOrigin`."] - #[doc = ""] - #[doc = "- `proposal_hash`: The proposal hash to blacklist permanently."] - #[doc = "- `ref_index`: An ongoing referendum whose hash is `proposal_hash`, which will be"] - #[doc = "cancelled."] - #[doc = ""] - #[doc = "Weight: `O(p)` (though as this is an high-privilege dispatch, we assume it has a"] - #[doc = " reasonable value)."] + #[doc = "See [`Pallet::blacklist`]."] blacklist { proposal_hash: ::subxt::utils::H256, maybe_ref_index: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 17)] - #[doc = "Remove a proposal."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be `CancelProposalOrigin`."] - #[doc = ""] - #[doc = "- `prop_index`: The index of the proposal to cancel."] - #[doc = ""] - #[doc = "Weight: `O(p)` where `p = PublicProps::::decode_len()`"] + #[doc = "See [`Pallet::cancel_proposal`]."] cancel_proposal { #[codec(compact)] prop_index: ::core::primitive::u32, }, #[codec(index = 18)] - #[doc = "Set or clear a metadata of a proposal or a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must correspond to the `MetadataOwner`."] - #[doc = " - `ExternalOrigin` for an external proposal with the `SuperMajorityApprove`"] - #[doc = " threshold."] - #[doc = " - `ExternalDefaultOrigin` for an external proposal with the `SuperMajorityAgainst`"] - #[doc = " threshold."] - #[doc = " - `ExternalMajorityOrigin` for an external proposal with the `SimpleMajority`"] - #[doc = " threshold."] - #[doc = " - `Signed` by a creator for a public proposal."] - #[doc = " - `Signed` to clear a metadata for a finished referendum."] - #[doc = " - `Root` to set a metadata for an ongoing referendum."] - #[doc = "- `owner`: an identifier of a metadata owner."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + #[doc = "See [`Pallet::set_metadata`]."] set_metadata { owner: runtime_types::pallet_democracy::types::MetadataOwner, maybe_hash: ::core::option::Option<::subxt::utils::H256>, @@ -43569,7 +38978,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Value too low"] @@ -43655,7 +39064,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A motion has been proposed by a public account."] @@ -43943,9 +39352,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Submit a solution for the unsigned phase."] # [doc = ""] # [doc = "The dispatch origin fo this call must be __none__."] # [doc = ""] # [doc = "This submission is checked on the fly. Moreover, this unsigned solution is only"] # [doc = "validated when submitted to the pool from the **local** node. Effectively, this means"] # [doc = "that only active validators can submit this transaction when authoring a block (similar"] # [doc = "to an inherent)."] # [doc = ""] # [doc = "To prevent any incorrect solution (and thus wasted time/weight), this transaction will"] # [doc = "panic if the solution submitted by the validator is invalid in any way, effectively"] # [doc = "putting their authoring reward at risk."] # [doc = ""] # [doc = "No deposit or reward is associated with this submission."] submit_unsigned { raw_solution : :: std :: boxed :: Box < runtime_types :: pallet_election_provider_multi_phase :: RawSolution < runtime_types :: polkadot_runtime :: NposCompactSolution16 > > , witness : runtime_types :: pallet_election_provider_multi_phase :: SolutionOrSnapshotSize , } , # [codec (index = 1)] # [doc = "Set a new value for `MinimumUntrustedScore`."] # [doc = ""] # [doc = "Dispatch origin must be aligned with `T::ForceOrigin`."] # [doc = ""] # [doc = "This check can be turned off by setting the value to `None`."] set_minimum_untrusted_score { maybe_next_score : :: core :: option :: Option < runtime_types :: sp_npos_elections :: ElectionScore > , } , # [codec (index = 2)] # [doc = "Set a solution in the queue, to be handed out to the client of this pallet in the next"] # [doc = "call to `ElectionProvider::elect`."] # [doc = ""] # [doc = "This can only be set by `T::ForceOrigin`, and only when the phase is `Emergency`."] # [doc = ""] # [doc = "The solution is not checked for any feasibility and is assumed to be trustworthy, as any"] # [doc = "feasibility check itself can in principle cause the election process to fail (due to"] # [doc = "memory/weight constrains)."] set_emergency_election_result { supports : :: std :: vec :: Vec < (:: subxt :: utils :: AccountId32 , runtime_types :: sp_npos_elections :: Support < :: subxt :: utils :: AccountId32 > ,) > , } , # [codec (index = 3)] # [doc = "Submit a solution for the signed phase."] # [doc = ""] # [doc = "The dispatch origin fo this call must be __signed__."] # [doc = ""] # [doc = "The solution is potentially queued, based on the claimed score and processed at the end"] # [doc = "of the signed phase."] # [doc = ""] # [doc = "A deposit is reserved and recorded for the solution. Based on the outcome, the solution"] # [doc = "might be rewarded, slashed, or get all or a part of the deposit back."] submit { raw_solution : :: std :: boxed :: Box < runtime_types :: pallet_election_provider_multi_phase :: RawSolution < runtime_types :: polkadot_runtime :: NposCompactSolution16 > > , } , # [codec (index = 4)] # [doc = "Trigger the governance fallback."] # [doc = ""] # [doc = "This can only be called when [`Phase::Emergency`] is enabled, as an alternative to"] # [doc = "calling [`Call::set_emergency_election_result`]."] governance_fallback { maybe_max_voters : :: core :: option :: Option < :: core :: primitive :: u32 > , maybe_max_targets : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::submit_unsigned`]."] submit_unsigned { raw_solution : :: std :: boxed :: Box < runtime_types :: pallet_election_provider_multi_phase :: RawSolution < runtime_types :: polkadot_runtime :: NposCompactSolution16 > > , witness : runtime_types :: pallet_election_provider_multi_phase :: SolutionOrSnapshotSize , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_minimum_untrusted_score`]."] set_minimum_untrusted_score { maybe_next_score : :: core :: option :: Option < runtime_types :: sp_npos_elections :: ElectionScore > , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_emergency_election_result`]."] set_emergency_election_result { supports : :: std :: vec :: Vec < (:: subxt :: utils :: AccountId32 , runtime_types :: sp_npos_elections :: Support < :: subxt :: utils :: AccountId32 > ,) > , } , # [codec (index = 3)] # [doc = "See [`Pallet::submit`]."] submit { raw_solution : :: std :: boxed :: Box < runtime_types :: pallet_election_provider_multi_phase :: RawSolution < runtime_types :: polkadot_runtime :: NposCompactSolution16 > > , } , # [codec (index = 4)] # [doc = "See [`Pallet::governance_fallback`]."] governance_fallback { maybe_max_voters : :: core :: option :: Option < :: core :: primitive :: u32 > , maybe_max_targets : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -44011,7 +39420,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A solution was stored with the given compute."] @@ -44204,116 +39613,38 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Vote for a set of candidates for the upcoming round of election. This can be called to"] - #[doc = "set the initial votes, or update already existing votes."] - #[doc = ""] - #[doc = "Upon initial voting, `value` units of `who`'s balance is locked and a deposit amount is"] - #[doc = "reserved. The deposit is based on the number of votes and can be updated over time."] - #[doc = ""] - #[doc = "The `votes` should:"] - #[doc = " - not be empty."] - #[doc = " - be less than the number of possible candidates. Note that all current members and"] - #[doc = " runners-up are also automatically candidates for the next round."] - #[doc = ""] - #[doc = "If `value` is more than `who`'s free balance, then the maximum of the two is used."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed."] - #[doc = ""] - #[doc = "### Warning"] - #[doc = ""] - #[doc = "It is the responsibility of the caller to **NOT** place all of their balance into the"] - #[doc = "lock and keep some for further operations."] + #[doc = "See [`Pallet::vote`]."] vote { votes: ::std::vec::Vec<::subxt::utils::AccountId32>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 1)] - #[doc = "Remove `origin` as a voter."] - #[doc = ""] - #[doc = "This removes the lock and returns the deposit."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed and be a voter."] + #[doc = "See [`Pallet::remove_voter`]."] remove_voter, #[codec(index = 2)] - #[doc = "Submit oneself for candidacy. A fixed amount of deposit is recorded."] - #[doc = ""] - #[doc = "All candidates are wiped at the end of the term. They either become a member/runner-up,"] - #[doc = "or leave the system while their deposit is slashed."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed."] - #[doc = ""] - #[doc = "### Warning"] - #[doc = ""] - #[doc = "Even if a candidate ends up being a member, they must call [`Call::renounce_candidacy`]"] - #[doc = "to get their deposit back. Losing the spot in an election will always lead to a slash."] - #[doc = ""] - #[doc = "The number of current candidates must be provided as witness data."] - #[doc = "## Complexity"] - #[doc = "O(C + log(C)) where C is candidate_count."] + #[doc = "See [`Pallet::submit_candidacy`]."] submit_candidacy { #[codec(compact)] candidate_count: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Renounce one's intention to be a candidate for the next election round. 3 potential"] - #[doc = "outcomes exist:"] - #[doc = ""] - #[doc = "- `origin` is a candidate and not elected in any set. In this case, the deposit is"] - #[doc = " unreserved, returned and origin is removed as a candidate."] - #[doc = "- `origin` is a current runner-up. In this case, the deposit is unreserved, returned and"] - #[doc = " origin is removed as a runner-up."] - #[doc = "- `origin` is a current member. In this case, the deposit is unreserved and origin is"] - #[doc = " removed as a member, consequently not being a candidate for the next round anymore."] - #[doc = " Similar to [`remove_member`](Self::remove_member), if replacement runners exists, they"] - #[doc = " are immediately used. If the prime is renouncing, then no prime will exist until the"] - #[doc = " next round."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed, and have one of the above roles."] - #[doc = "The type of renouncing must be provided as witness data."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = " - Renouncing::Candidate(count): O(count + log(count))"] - #[doc = " - Renouncing::Member: O(1)"] - #[doc = " - Renouncing::RunnerUp: O(1)"] + #[doc = "See [`Pallet::renounce_candidacy`]."] renounce_candidacy { renouncing: runtime_types::pallet_elections_phragmen::Renouncing, }, #[codec(index = 4)] - #[doc = "Remove a particular member from the set. This is effective immediately and the bond of"] - #[doc = "the outgoing member is slashed."] - #[doc = ""] - #[doc = "If a runner-up is available, then the best runner-up will be removed and replaces the"] - #[doc = "outgoing member. Otherwise, if `rerun_election` is `true`, a new phragmen election is"] - #[doc = "started, else, nothing happens."] - #[doc = ""] - #[doc = "If `slash_bond` is set to true, the bond of the member being removed is slashed. Else,"] - #[doc = "it is returned."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be root."] - #[doc = ""] - #[doc = "Note that this does not affect the designated block number of the next election."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Check details of remove_and_replace_member() and do_phragmen()."] + #[doc = "See [`Pallet::remove_member`]."] remove_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, slash_bond: ::core::primitive::bool, rerun_election: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "Clean all voters who are defunct (i.e. they do not serve any purpose at all). The"] - #[doc = "deposit of the removed voters are returned."] - #[doc = ""] - #[doc = "This is an root function to be used only for cleaning the state."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Check is_defunct_voter() details."] + #[doc = "See [`Pallet::clean_defunct_voters`]."] clean_defunct_voters { num_voters: ::core::primitive::u32, num_defunct: ::core::primitive::u32, @@ -44329,7 +39660,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Cannot vote when no candidates or members exist."] @@ -44393,7 +39724,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A new term with new_members. This indicates that enough candidates existed to run"] @@ -44501,41 +39832,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Register oneself for fast-unstake."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the controller account, similar to"] - #[doc = "`staking::unbond`."] - #[doc = ""] - #[doc = "The stash associated with the origin must have no ongoing unlocking chunks. If"] - #[doc = "successful, this will fully unbond and chill the stash. Then, it will enqueue the stash"] - #[doc = "to be checked in further blocks."] - #[doc = ""] - #[doc = "If by the time this is called, the stash is actually eligible for fast-unstake, then"] - #[doc = "they are guaranteed to remain eligible, because the call will chill them as well."] - #[doc = ""] - #[doc = "If the check works, the entire staking data is removed, i.e. the stash is fully"] - #[doc = "unstaked."] - #[doc = ""] - #[doc = "If the check fails, the stash remains chilled and waiting for being unbonded as in with"] - #[doc = "the normal staking system, but they lose part of their unbonding chunks due to consuming"] - #[doc = "the chain's resources."] + #[doc = "See [`Pallet::register_fast_unstake`]."] register_fast_unstake, #[codec(index = 1)] - #[doc = "Deregister oneself from the fast-unstake."] - #[doc = ""] - #[doc = "This is useful if one is registered, they are still waiting, and they change their mind."] - #[doc = ""] - #[doc = "Note that the associated stash is still fully unbonded and chilled as a consequence of"] - #[doc = "calling `register_fast_unstake`. This should probably be followed by a call to"] - #[doc = "`Staking::rebond`."] + #[doc = "See [`Pallet::deregister`]."] deregister, #[codec(index = 2)] - #[doc = "Control the operation of this pallet."] - #[doc = ""] - #[doc = "Dispatch origin must be signed by the [`Config::ControlOrigin`]."] + #[doc = "See [`Pallet::control`]."] control { eras_to_check: ::core::primitive::u32, }, @@ -44550,7 +39856,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The provided Controller account was not found."] @@ -44583,7 +39889,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The events of this pallet."] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A staker was unstaked."] @@ -44599,19 +39905,19 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "An internal error happened. Operations will be paused now."] - InternalError, - #[codec(index = 3)] #[doc = "A batch was partially checked for the given eras, but the process did not finish."] BatchChecked { eras: ::std::vec::Vec<::core::primitive::u32>, }, - #[codec(index = 4)] + #[codec(index = 3)] #[doc = "A batch of a given size was terminated."] #[doc = ""] #[doc = "This is always follows by a number of `Unstaked` or `Slashed` events, marking the end"] #[doc = "of the batch. A new batch will be created upon next block."] BatchFinished { size: ::core::primitive::u32 }, + #[codec(index = 4)] + #[doc = "An internal error happened. Operations will be paused now."] + InternalError, } } pub mod types { @@ -44651,13 +39957,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -44668,15 +39971,7 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -44687,18 +39982,7 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] - #[doc = ""] - #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] - #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] - #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] - #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] - #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] - #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] - #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] - #[doc = "block of all validators of the new authority set."] - #[doc = ""] - #[doc = "Only callable by root."] + #[doc = "See [`Pallet::note_stalled`]."] note_stalled { delay: ::core::primitive::u32, best_finalized_block_number: ::core::primitive::u32, @@ -44714,7 +39998,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Attempt to signal GRANDPA pause when the authority set isn't live"] @@ -44750,7 +40034,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "New authority set has been applied."] @@ -44826,54 +40110,18 @@ pub mod api { #[doc = "Identity pallet declaration."] pub enum Call { #[codec(index = 0)] - #[doc = "Add a registrar to the system."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] - #[doc = ""] - #[doc = "- `account`: the account of the registrar."] - #[doc = ""] - #[doc = "Emits `RegistrarAdded` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)` where `R` registrar-count (governance-bounded and code-bounded)."] + #[doc = "See [`Pallet::add_registrar`]."] add_registrar { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "Set an account's identity information and reserve the appropriate deposit."] - #[doc = ""] - #[doc = "If the account already has identity information, the deposit is taken as part payment"] - #[doc = "for the new deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `info`: The identity information."] - #[doc = ""] - #[doc = "Emits `IdentitySet` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(X + X' + R)`"] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)"] - #[doc = " - where `R` judgements-count (registrar-count-bounded)"] + #[doc = "See [`Pallet::set_identity`]."] set_identity { info: ::std::boxed::Box, }, #[codec(index = 2)] - #[doc = "Set the sub-accounts of the sender."] - #[doc = ""] - #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] - #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "- `subs`: The identity's (new) sub-accounts."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(P + S)`"] - #[doc = " - where `P` old-subs-count (hard- and deposit-bounded)."] - #[doc = " - where `S` subs-count (hard- and deposit-bounded)."] + #[doc = "See [`Pallet::set_subs`]."] set_subs { subs: ::std::vec::Vec<( ::subxt::utils::AccountId32, @@ -44881,43 +40129,10 @@ pub mod api { )>, }, #[codec(index = 3)] - #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] - #[doc = ""] - #[doc = "Payment: All reserved balances on the account are returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "Emits `IdentityCleared` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + S + X)`"] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `S` subs-count (hard- and deposit-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::clear_identity`]."] clear_identity, #[codec(index = 4)] - #[doc = "Request a judgement from a registrar."] - #[doc = ""] - #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] - #[doc = "given."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] - #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] - #[doc = ""] - #[doc = "```nocompile"] - #[doc = "Self::registrars().get(reg_index).unwrap().fee"] - #[doc = "```"] - #[doc = ""] - #[doc = "Emits `JudgementRequested` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + X)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::request_judgement`]."] request_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -44925,34 +40140,10 @@ pub mod api { max_fee: ::core::primitive::u128, }, #[codec(index = 5)] - #[doc = "Cancel a previous request."] - #[doc = ""] - #[doc = "Payment: A previously reserved deposit is returned on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] - #[doc = ""] - #[doc = "Emits `JudgementUnrequested` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + X)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::cancel_request`]."] cancel_request { reg_index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "Set the fee required for a judgement to be requested from a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fee`: the new fee."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] + #[doc = "See [`Pallet::set_fee`]."] set_fee { #[codec(compact)] index: ::core::primitive::u32, @@ -44960,34 +40151,14 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 7)] - #[doc = "Change the account associated with a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `new`: the new account ID."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] + #[doc = "See [`Pallet::set_account_id`]."] set_account_id { #[codec(compact)] index: ::core::primitive::u32, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 8)] - #[doc = "Set the field information for a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fields`: the fields that the registrar concerns themselves with."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] + #[doc = "See [`Pallet::set_fields`]."] set_fields { #[codec(compact)] index: ::core::primitive::u32, @@ -44996,23 +40167,7 @@ pub mod api { >, }, #[codec(index = 9)] - #[doc = "Provide a judgement for an account's identity."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `reg_index`."] - #[doc = ""] - #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] - #[doc = "- `identity`: The hash of the [`IdentityInfo`] for that the judgement is provided."] - #[doc = ""] - #[doc = "Emits `JudgementGiven` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + X)`."] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::provide_judgement`]."] provide_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -45023,70 +40178,29 @@ pub mod api { identity: ::subxt::utils::H256, }, #[codec(index = 10)] - #[doc = "Remove an account's identity and sub-account information and slash the deposits."] - #[doc = ""] - #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] - #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] - #[doc = "manually using `cancel_request`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] - #[doc = ""] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = ""] - #[doc = "Emits `IdentityKilled` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + S + X)`"] - #[doc = " - where `R` registrar-count (governance-bounded)."] - #[doc = " - where `S` subs-count (hard- and deposit-bounded)."] - #[doc = " - where `X` additional-field-count (deposit-bounded and code-bounded)."] + #[doc = "See [`Pallet::kill_identity`]."] kill_identity { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 11)] - #[doc = "Add the given account to the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::add_sub`]."] add_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 12)] - #[doc = "Alter the associated name of the given sub-account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::rename_sub`]."] rename_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 13)] - #[doc = "Remove the given account from the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::remove_sub`]."] remove_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 14)] - #[doc = "Remove the sender as a sub-account."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender (*not* the original depositor)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "super-identity."] - #[doc = ""] - #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] - #[doc = "controller of an account is maliciously registered as a sub-account."] + #[doc = "See [`Pallet::quit_sub`]."] quit_sub, } #[derive( @@ -45099,7 +40213,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Too many subs-accounts."] @@ -45166,7 +40280,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A name was set or reset (which will remove all judgements)."] @@ -45464,14 +40578,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "## Complexity:"] - #[doc = "- `O(K + E)` where K is length of `Keys` (heartbeat.validators_len) and E is length of"] - #[doc = " `heartbeat.network_state.external_address`"] - #[doc = " - `O(K)`: decoding of length `K`"] - #[doc = " - `O(E)`: decoding/encoding of length `E`"] + #[doc = "See [`Pallet::heartbeat`]."] heartbeat { heartbeat: runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, @@ -45488,7 +40598,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Non existent public key."] @@ -45507,7 +40617,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A new heartbeat was received from `AuthorityId`."] @@ -45568,33 +40678,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct BoundedOpaqueNetworkState { - pub peer_id: runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - ::core::primitive::u8, - >, - pub external_addresses: - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - ::core::primitive::u8, - >, - >, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Heartbeat<_0> { pub block_number: _0, - pub network_state: runtime_types::sp_core::offchain::OpaqueNetworkState, - pub session_index: _0, - pub authority_index: _0, - pub validators_len: _0, + pub session_index: ::core::primitive::u32, + pub authority_index: ::core::primitive::u32, + pub validators_len: ::core::primitive::u32, } } pub mod pallet_indices { @@ -45611,85 +40699,29 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Assign an previously unassigned index."] - #[doc = ""] - #[doc = "Payment: `Deposit` is reserved from the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be claimed. This must not be in use."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::claim`]."] claim { index: ::core::primitive::u32 }, #[codec(index = 1)] - #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] - #[doc = "is effectively transferred to the new account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::transfer`]."] transfer { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Free up an index owned by the sender."] - #[doc = ""] - #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] - #[doc = ""] - #[doc = "- `index`: the index to be freed. This must be owned by the sender."] - #[doc = ""] - #[doc = "Emits `IndexFreed` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::free`]."] free { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] - #[doc = "held, then any deposit is reimbursed to its current owner."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `index`: the index to be (re-)assigned."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_transfer`]."] force_transfer { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, freeze: ::core::primitive::bool, }, #[codec(index = 4)] - #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] - #[doc = "deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] - #[doc = "non-frozen account `index`."] - #[doc = ""] - #[doc = "- `index`: the index to be frozen in place."] - #[doc = ""] - #[doc = "Emits `IndexFrozen` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::freeze`]."] freeze { index: ::core::primitive::u32 }, } #[derive( @@ -45702,7 +40734,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The index was not already assigned."] @@ -45730,7 +40762,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A account index was assigned."] @@ -45764,60 +40796,41 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Add a member `who` to the set."] - #[doc = ""] - #[doc = "May only be called from `T::AddOrigin`."] + #[doc = "See [`Pallet::add_member`]."] add_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "Remove a member `who` from the set."] - #[doc = ""] - #[doc = "May only be called from `T::RemoveOrigin`."] + #[doc = "See [`Pallet::remove_member`]."] remove_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 2)] - #[doc = "Swap out one member `remove` for another `add`."] - #[doc = ""] - #[doc = "May only be called from `T::SwapOrigin`."] - #[doc = ""] - #[doc = "Prime membership is *not* passed from `remove` to `add`, if extant."] + #[doc = "See [`Pallet::swap_member`]."] swap_member { remove: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, add: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 3)] - #[doc = "Change the membership to a new set, disregarding the existing membership. Be nice and"] - #[doc = "pass `members` pre-sorted."] - #[doc = ""] - #[doc = "May only be called from `T::ResetOrigin`."] + #[doc = "See [`Pallet::reset_members`]."] reset_members { members: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 4)] - #[doc = "Swap out the sending member for some other key `new`."] - #[doc = ""] - #[doc = "May only be called from `Signed` origin of a current member."] - #[doc = ""] - #[doc = "Prime membership is passed from the origin account to `new`, if extant."] + #[doc = "See [`Pallet::change_key`]."] change_key { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 5)] - #[doc = "Set the prime member. Must be a current member."] - #[doc = ""] - #[doc = "May only be called from `T::PrimeOrigin`."] + #[doc = "See [`Pallet::set_prime`]."] set_prime { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 6)] - #[doc = "Remove the prime member if it exists."] - #[doc = ""] - #[doc = "May only be called from `T::PrimeOrigin`."] + #[doc = "See [`Pallet::clear_prime`]."] clear_prime, } #[derive( @@ -45830,7 +40843,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Already a member."] @@ -45852,7 +40865,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "The given member was added; see the transaction for who."] @@ -45875,6 +40888,134 @@ pub mod api { } } } + pub mod pallet_message_queue { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 0)] # [doc = "See [`Pallet::reap_page`]."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::execute_overweight`]."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Page is not reapable because it has items remaining to be processed and is not old"] + #[doc = "enough."] + NotReapable, + #[codec(index = 1)] + #[doc = "Page to be reaped does not exist."] + NoPage, + #[codec(index = 2)] + #[doc = "The referenced message could not be found."] + NoMessage, + #[codec(index = 3)] + #[doc = "The message was already processed and cannot be processed again."] + AlreadyProcessed, + #[codec(index = 4)] + #[doc = "The message is queued for future execution."] + Queued, + #[codec(index = 5)] + #[doc = "There is temporarily not enough weight to continue servicing messages."] + InsufficientWeight, + #[codec(index = 6)] + #[doc = "This message is temporarily unprocessable."] + #[doc = ""] + #[doc = "Such errors are expected, but not guaranteed, to resolve themselves eventually through"] + #[doc = "retrying."] + TemporarilyUnprocessable, + #[codec(index = 7)] + #[doc = "The queue is paused and no message can be executed from it."] + #[doc = ""] + #[doc = "This can change at any time and may resolve in the future by re-trying."] + QueuePaused, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BookState<_0> { + pub begin: ::core::primitive::u32, + pub end: ::core::primitive::u32, + pub count: ::core::primitive::u32, + pub ready_neighbours: + ::core::option::Option>, + pub message_count: ::core::primitive::u64, + pub size: ::core::primitive::u64, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Neighbours<_0> { + pub prev: _0, + pub next: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Page<_0> { + pub remaining: _0, + pub remaining_size: _0, + pub first_index: _0, + pub first: _0, + pub last: _0, + pub heap: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + } pub mod pallet_multisig { use super::runtime_types; pub mod pallet { @@ -45889,65 +41030,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] - #[doc = "multi-signature, but do not participate in the approval process."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] + #[doc = "See [`Pallet::as_multi_threshold_1`]."] as_multi_threshold_1 { other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "If there are enough, then dispatch the call."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] - #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] - #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] - #[doc = "may be found in the deposited `MultisigExecuted` event."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S + Z + Call)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- The weight of the `call`."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::as_multi`]."] as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -45958,36 +41050,7 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::approve_as_multi`]."] approve_as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -45998,27 +41061,7 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] - #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] - #[doc = "for this operation will be unreserved on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] - #[doc = "transaction for this dispatch."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- One event."] - #[doc = "- I/O: 1 read `O(S)`, one remove."] - #[doc = "- Storage: removes one item."] + #[doc = "See [`Pallet::cancel_as_multi`]."] cancel_as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -46037,7 +41080,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Threshold must be 2 or greater."] @@ -46092,7 +41135,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A new multisig operation has begun."] @@ -46160,7 +41203,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Timepoint<_0> { pub height: _0, - pub index: _0, + pub index: ::core::primitive::u32, } } pub mod pallet_nomination_pools { @@ -46177,79 +41220,27 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Stake funds with a pool. The amount to bond is transferred from the member to the"] - #[doc = "pools account and immediately increases the pools bond."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "* An account can only be a member of a single pool."] - #[doc = "* An account cannot join the same pool multiple times."] - #[doc = "* This call will *not* dust the member account, so the member must have at least"] - #[doc = " `existential deposit + amount` in their account."] - #[doc = "* Only a pool with [`PoolState::Open`] can be joined"] + #[doc = "See [`Pallet::join`]."] join { #[codec(compact)] amount: ::core::primitive::u128, pool_id: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Bond `extra` more funds from `origin` into the pool to which they already belong."] - #[doc = ""] - #[doc = "Additional funds can come from either the free balance of the account, of from the"] - #[doc = "accumulated rewards, see [`BondExtra`]."] - #[doc = ""] - #[doc = "Bonding extra funds implies an automatic payout of all pending rewards as well."] - #[doc = "See `bond_extra_other` to bond pending rewards of `other` members."] + #[doc = "See [`Pallet::bond_extra`]."] bond_extra { extra: runtime_types::pallet_nomination_pools::BondExtra< ::core::primitive::u128, >, }, #[codec(index = 2)] - #[doc = "A bonded member can use this to claim their payout based on the rewards that the pool"] - #[doc = "has accumulated since their last claimed payout (OR since joining if this is their first"] - #[doc = "time claiming rewards). The payout will be transferred to the member's account."] - #[doc = ""] - #[doc = "The member will earn rewards pro rata based on the members stake vs the sum of the"] - #[doc = "members in the pools stake. Rewards do not \"expire\"."] - #[doc = ""] - #[doc = "See `claim_payout_other` to caim rewards on bahalf of some `other` pool member."] + #[doc = "See [`Pallet::claim_payout`]."] claim_payout, #[codec(index = 3)] - #[doc = "Unbond up to `unbonding_points` of the `member_account`'s funds from the pool. It"] - #[doc = "implicitly collects the rewards one last time, since not doing so would mean some"] - #[doc = "rewards would be forfeited."] - #[doc = ""] - #[doc = "Under certain conditions, this call can be dispatched permissionlessly (i.e. by any"] - #[doc = "account)."] - #[doc = ""] - #[doc = "# Conditions for a permissionless dispatch."] - #[doc = ""] - #[doc = "* The pool is blocked and the caller is either the root or bouncer. This is refereed to"] - #[doc = " as a kick."] - #[doc = "* The pool is destroying and the member is not the depositor."] - #[doc = "* The pool is destroying, the member is the depositor and no other members are in the"] - #[doc = " pool."] - #[doc = ""] - #[doc = "## Conditions for permissioned dispatch (i.e. the caller is also the"] - #[doc = "`member_account`):"] - #[doc = ""] - #[doc = "* The caller is not the depositor."] - #[doc = "* The caller is the depositor, the pool is destroying and no other members are in the"] - #[doc = " pool."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "If there are too many unlocking chunks to unbond with the pool account,"] - #[doc = "[`Call::pool_withdraw_unbonded`] can be called to try and minimize unlocking chunks."] - #[doc = "The [`StakingInterface::unbond`] will implicitly call [`Call::pool_withdraw_unbonded`]"] - #[doc = "to try to free chunks if necessary (ie. if unbound was called and no unlocking chunks"] - #[doc = "are available). However, it may not be possible to release the current unlocking chunks,"] - #[doc = "in which case, the result of this call will likely be the `NoMoreChunks` error from the"] - #[doc = "staking system."] + #[doc = "See [`Pallet::unbond`]."] unbond { member_account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -46257,59 +41248,20 @@ pub mod api { unbonding_points: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "Call `withdraw_unbonded` for the pools account. This call can be made by any account."] - #[doc = ""] - #[doc = "This is useful if their are too many unlocking chunks to call `unbond`, and some"] - #[doc = "can be cleared by withdrawing. In the case there are too many unlocking chunks, the user"] - #[doc = "would probably see an error like `NoMoreChunks` emitted from the staking system when"] - #[doc = "they attempt to unbond."] + #[doc = "See [`Pallet::pool_withdraw_unbonded`]."] pool_withdraw_unbonded { pool_id: ::core::primitive::u32, num_slashing_spans: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Withdraw unbonded funds from `member_account`. If no bonded funds can be unbonded, an"] - #[doc = "error is returned."] - #[doc = ""] - #[doc = "Under certain conditions, this call can be dispatched permissionlessly (i.e. by any"] - #[doc = "account)."] - #[doc = ""] - #[doc = "# Conditions for a permissionless dispatch"] - #[doc = ""] - #[doc = "* The pool is in destroy mode and the target is not the depositor."] - #[doc = "* The target is the depositor and they are the only member in the sub pools."] - #[doc = "* The pool is blocked and the caller is either the root or bouncer."] - #[doc = ""] - #[doc = "# Conditions for permissioned dispatch"] - #[doc = ""] - #[doc = "* The caller is the target and they are not the depositor."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "If the target is the depositor, the pool will be destroyed."] + #[doc = "See [`Pallet::withdraw_unbonded`]."] withdraw_unbonded { member_account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, num_slashing_spans: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "Create a new delegation pool."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `amount` - The amount of funds to delegate to the pool. This also acts of a sort of"] - #[doc = " deposit since the pools creator cannot fully unbond funds until the pool is being"] - #[doc = " destroyed."] - #[doc = "* `index` - A disambiguation index for creating the account. Likely only useful when"] - #[doc = " creating multiple pools in the same extrinsic."] - #[doc = "* `root` - The account to set as [`PoolRoles::root`]."] - #[doc = "* `nominator` - The account to set as the [`PoolRoles::nominator`]."] - #[doc = "* `bouncer` - The account to set as the [`PoolRoles::bouncer`]."] - #[doc = ""] - #[doc = "# Note"] - #[doc = ""] - #[doc = "In addition to `amount`, the caller will transfer the existential deposit; so the caller"] - #[doc = "needs at have at least `amount + existential_deposit` transferrable."] + #[doc = "See [`Pallet::create`]."] create { #[codec(compact)] amount: ::core::primitive::u128, @@ -46318,12 +41270,7 @@ pub mod api { bouncer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 7)] - #[doc = "Create a new delegation pool with a previously used pool id"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "same as `create` with the inclusion of"] - #[doc = "* `pool_id` - `A valid PoolId."] + #[doc = "See [`Pallet::create_with_pool_id`]."] create_with_pool_id { #[codec(compact)] amount: ::core::primitive::u128, @@ -46333,53 +41280,25 @@ pub mod api { pool_id: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "Nominate on behalf of the pool."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the pool nominator or the pool"] - #[doc = "root role."] - #[doc = ""] - #[doc = "This directly forward the call to the staking pallet, on behalf of the pool bonded"] - #[doc = "account."] + #[doc = "See [`Pallet::nominate`]."] nominate { pool_id: ::core::primitive::u32, validators: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 9)] - #[doc = "Set a new state for the pool."] - #[doc = ""] - #[doc = "If a pool is already in the `Destroying` state, then under no condition can its state"] - #[doc = "change again."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be either:"] - #[doc = ""] - #[doc = "1. signed by the bouncer, or the root role of the pool,"] - #[doc = "2. if the pool conditions to be open are NOT met (as described by `ok_to_be_open`), and"] - #[doc = " then the state of the pool can be permissionlessly changed to `Destroying`."] + #[doc = "See [`Pallet::set_state`]."] set_state { pool_id: ::core::primitive::u32, state: runtime_types::pallet_nomination_pools::PoolState, }, #[codec(index = 10)] - #[doc = "Set a new metadata for the pool."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the bouncer, or the root role of the"] - #[doc = "pool."] + #[doc = "See [`Pallet::set_metadata`]."] set_metadata { pool_id: ::core::primitive::u32, metadata: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 11)] - #[doc = "Update configurations for the nomination pools. The origin for this call must be"] - #[doc = "Root."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `min_join_bond` - Set [`MinJoinBond`]."] - #[doc = "* `min_create_bond` - Set [`MinCreateBond`]."] - #[doc = "* `max_pools` - Set [`MaxPools`]."] - #[doc = "* `max_members` - Set [`MaxPoolMembers`]."] - #[doc = "* `max_members_per_pool` - Set [`MaxPoolMembersPerPool`]."] - #[doc = "* `global_max_commission` - Set [`GlobalMaxCommission`]."] + #[doc = "See [`Pallet::set_configs`]."] set_configs { min_join_bond: runtime_types::pallet_nomination_pools::ConfigOp< ::core::primitive::u128, @@ -46401,13 +41320,7 @@ pub mod api { >, }, #[codec(index = 12)] - #[doc = "Update the roles of the pool."] - #[doc = ""] - #[doc = "The root is the only entity that can change any of the roles, including itself,"] - #[doc = "excluding the depositor, who can never change."] - #[doc = ""] - #[doc = "It emits an event, notifying UIs of the role change. This event is quite relevant to"] - #[doc = "most pool members and they should be informed of changes to pool roles."] + #[doc = "See [`Pallet::update_roles`]."] update_roles { pool_id: ::core::primitive::u32, new_root: runtime_types::pallet_nomination_pools::ConfigOp< @@ -46421,24 +41334,10 @@ pub mod api { >, }, #[codec(index = 13)] - #[doc = "Chill on behalf of the pool."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the pool nominator or the pool"] - #[doc = "root role, same as [`Pallet::nominate`]."] - #[doc = ""] - #[doc = "This directly forward the call to the staking pallet, on behalf of the pool bonded"] - #[doc = "account."] + #[doc = "See [`Pallet::chill`]."] chill { pool_id: ::core::primitive::u32 }, #[codec(index = 14)] - #[doc = "`origin` bonds funds from `extra` for some pool member `member` into their respective"] - #[doc = "pools."] - #[doc = ""] - #[doc = "`origin` can bond extra funds from free balance or pending rewards when `origin =="] - #[doc = "other`."] - #[doc = ""] - #[doc = "In the case of `origin != other`, `origin` can only bond extra pending rewards of"] - #[doc = "`other` members assuming set_claim_permission for the given member is"] - #[doc = "`PermissionlessAll` or `PermissionlessCompound`."] + #[doc = "See [`Pallet::bond_extra_other`]."] bond_extra_other { member: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, extra: runtime_types::pallet_nomination_pools::BondExtra< @@ -46446,33 +41345,15 @@ pub mod api { >, }, #[codec(index = 15)] - #[doc = "Allows a pool member to set a claim permission to allow or disallow permissionless"] - #[doc = "bonding and withdrawing."] - #[doc = ""] - #[doc = "By default, this is `Permissioned`, which implies only the pool member themselves can"] - #[doc = "claim their pending rewards. If a pool member wishes so, they can set this to"] - #[doc = "`PermissionlessAll` to allow any account to claim their rewards and bond extra to the"] - #[doc = "pool."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `origin` - Member of a pool."] - #[doc = "* `actor` - Account to claim reward. // improve this"] + #[doc = "See [`Pallet::set_claim_permission`]."] set_claim_permission { permission: runtime_types::pallet_nomination_pools::ClaimPermission, }, #[codec(index = 16)] - #[doc = "`origin` can claim payouts on some pool member `other`'s behalf."] - #[doc = ""] - #[doc = "Pool member `other` must have a `PermissionlessAll` or `PermissionlessWithdraw` in order"] - #[doc = "for this call to be successful."] + #[doc = "See [`Pallet::claim_payout_other`]."] claim_payout_other { other: ::subxt::utils::AccountId32 }, #[codec(index = 17)] - #[doc = "Set the commission of a pool."] - #[doc = "Both a commission percentage and a commission payee must be provided in the `current`"] - #[doc = "tuple. Where a `current` of `None` is provided, any current commission will be removed."] - #[doc = ""] - #[doc = "- If a `None` is supplied to `new_commission`, existing commission will be removed."] + #[doc = "See [`Pallet::set_commission`]."] set_commission { pool_id: ::core::primitive::u32, new_commission: ::core::option::Option<( @@ -46481,20 +41362,13 @@ pub mod api { )>, }, #[codec(index = 18)] - #[doc = "Set the maximum commission of a pool."] - #[doc = ""] - #[doc = "- Initial max can be set to any `Perbill`, and only smaller values thereafter."] - #[doc = "- Current commission will be lowered in the event it is higher than a new max"] - #[doc = " commission."] + #[doc = "See [`Pallet::set_commission_max`]."] set_commission_max { pool_id: ::core::primitive::u32, max_commission: runtime_types::sp_arithmetic::per_things::Perbill, }, #[codec(index = 19)] - #[doc = "Set the commission change rate for a pool."] - #[doc = ""] - #[doc = "Initial change rate is not bounded, whereas subsequent updates can only be more"] - #[doc = "restrictive than the current."] + #[doc = "See [`Pallet::set_commission_change_rate`]."] set_commission_change_rate { pool_id: ::core::primitive::u32, change_rate: runtime_types::pallet_nomination_pools::CommissionChangeRate< @@ -46502,11 +41376,7 @@ pub mod api { >, }, #[codec(index = 20)] - #[doc = "Claim pending commission."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be signed by the `root` role of the pool. Pending"] - #[doc = "commission is paid out and added to total claimed commission`. Total pending commission"] - #[doc = "is reset to zero. the current."] + #[doc = "See [`Pallet::claim_commission`]."] claim_commission { pool_id: ::core::primitive::u32 }, } #[derive( @@ -46541,7 +41411,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "A (bonded) pool id does not exist."] @@ -47032,34 +41902,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Register a preimage on-chain."] - #[doc = ""] - #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] - #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] + #[doc = "See [`Pallet::note_preimage`]."] note_preimage { bytes: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Clear an unrequested preimage from the runtime storage."] - #[doc = ""] - #[doc = "If `len` is provided, then it will be a much cheaper operation."] - #[doc = ""] - #[doc = "- `hash`: The hash of the preimage to be removed from the store."] - #[doc = "- `len`: The length of the preimage of `hash`."] + #[doc = "See [`Pallet::unnote_preimage`]."] unnote_preimage { hash: ::subxt::utils::H256 }, #[codec(index = 2)] - #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] - #[doc = ""] - #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] - #[doc = "a user may have paid, and take the control of the preimage out of their hands."] + #[doc = "See [`Pallet::request_preimage`]."] request_preimage { hash: ::subxt::utils::H256 }, #[codec(index = 3)] - #[doc = "Clear a previously made request for a preimage."] - #[doc = ""] - #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] + #[doc = "See [`Pallet::unrequest_preimage`]."] unrequest_preimage { hash: ::subxt::utils::H256 }, } #[derive( @@ -47072,7 +41929,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Preimage is too large to store on-chain."] @@ -47103,7 +41960,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A preimage has been noted."] @@ -47154,18 +42011,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy`]."] proxy { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, force_proxy_type: @@ -47173,82 +42022,31 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] - #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] + #[doc = "See [`Pallet::add_proxy`]."] add_proxy { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::polkadot_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Unregister a proxy account for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] - #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] + #[doc = "See [`Pallet::remove_proxy`]."] remove_proxy { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::polkadot_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Unregister all proxy accounts for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] - #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] + #[doc = "See [`Pallet::remove_proxies`]."] remove_proxies, #[codec(index = 4)] - #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] - #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] - #[doc = ""] - #[doc = "Requires a `Signed` origin."] - #[doc = ""] - #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] - #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] - #[doc = "allow for maximum flexibility."] - #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] - #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] - #[doc = "want to use `0`."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] - #[doc = ""] - #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] - #[doc = "same sender, with the same parameters."] - #[doc = ""] - #[doc = "Fails if there are insufficient funds to pay for deposit."] + #[doc = "See [`Pallet::create_pure`]."] create_pure { proxy_type: runtime_types::polkadot_runtime::ProxyType, delay: ::core::primitive::u32, index: ::core::primitive::u16, }, #[codec(index = 5)] - #[doc = "Removes a previously spawned pure proxy."] - #[doc = ""] - #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] - #[doc = "inaccessible."] - #[doc = ""] - #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] - #[doc = "`pure` with corresponding parameters."] - #[doc = ""] - #[doc = "- `spawner`: The account that originally called `pure` to create this account."] - #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] - #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] - #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] - #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] - #[doc = ""] - #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] - #[doc = "account whose `pure` call has corresponding parameters."] + #[doc = "See [`Pallet::kill_pure`]."] kill_pure { spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::polkadot_runtime::ProxyType, @@ -47259,67 +42057,25 @@ pub mod api { ext_index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "Publish the hash of a proxy-call that will be made in the future."] - #[doc = ""] - #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] - #[doc = "if the delay associated with the proxy relationship is greater than zero."] - #[doc = ""] - #[doc = "No more than `MaxPending` announcements may be made at any one time."] - #[doc = ""] - #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] - #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::announce`]."] announce { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 7)] - #[doc = "Remove a given announcement."] - #[doc = ""] - #[doc = "May be called by a proxy account to remove a call they previously announced and return"] - #[doc = "the deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::remove_announcement`]."] remove_announcement { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 8)] - #[doc = "Remove the given announcement of a delegate."] - #[doc = ""] - #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] - #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `delegate`: The account that previously announced the call."] - #[doc = "- `call_hash`: The hash of the call to be made."] + #[doc = "See [`Pallet::reject_announcement`]."] reject_announcement { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 9)] - #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "Removes any corresponding announcement(s)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy_announced`]."] proxy_announced { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -47338,7 +42094,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "There are too many proxies registered or too many announcements pending."] @@ -47375,7 +42131,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A proxy was executed correctly, with the given."] @@ -47462,18 +42218,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] + #[doc = "See [`Pallet::submit`]."] submit { proposal_origin: ::std::boxed::Box, @@ -47486,74 +42234,28 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] + #[doc = "See [`Pallet::place_decision_deposit`]."] place_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 2)] - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] + #[doc = "See [`Pallet::refund_decision_deposit`]."] refund_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] + #[doc = "See [`Pallet::cancel`]."] cancel { index: ::core::primitive::u32 }, #[codec(index = 4)] - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] + #[doc = "See [`Pallet::kill`]."] kill { index: ::core::primitive::u32 }, #[codec(index = 5)] - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] + #[doc = "See [`Pallet::nudge_referendum`]."] nudge_referendum { index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] + #[doc = "See [`Pallet::one_fewer_deciding`]."] one_fewer_deciding { track: ::core::primitive::u16 }, #[codec(index = 7)] - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] + #[doc = "See [`Pallet::refund_submission_deposit`]."] refund_submission_deposit { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + #[doc = "See [`Pallet::set_metadata`]."] set_metadata { index: ::core::primitive::u32, maybe_hash: ::core::option::Option<::subxt::utils::H256>, @@ -47569,7 +42271,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Referendum is not ongoing."] @@ -47621,7 +42323,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A referendum has been submitted."] @@ -47899,7 +42601,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct TrackInfo<_0, _1> { pub name: ::std::string::String, - pub max_deciding: _1, + pub max_deciding: ::core::primitive::u32, pub decision_deposit: _0, pub prepare_period: _1, pub decision_period: _1, @@ -47924,10 +42626,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Anonymously schedule a task."] + #[doc = "See [`Pallet::schedule`]."] schedule { when: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -47938,13 +42640,13 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "Cancel an anonymously scheduled task."] + #[doc = "See [`Pallet::cancel`]."] cancel { when: ::core::primitive::u32, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Schedule a named task."] + #[doc = "See [`Pallet::schedule_named`]."] schedule_named { id: [::core::primitive::u8; 32usize], when: ::core::primitive::u32, @@ -47956,12 +42658,12 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 3)] - #[doc = "Cancel a named scheduled task."] + #[doc = "See [`Pallet::cancel_named`]."] cancel_named { id: [::core::primitive::u8; 32usize], }, #[codec(index = 4)] - #[doc = "Anonymously schedule a task after a delay."] + #[doc = "See [`Pallet::schedule_after`]."] schedule_after { after: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -47972,7 +42674,7 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 5)] - #[doc = "Schedule a named task after a delay."] + #[doc = "See [`Pallet::schedule_named_after`]."] schedule_named_after { id: [::core::primitive::u8; 32usize], after: ::core::primitive::u32, @@ -47994,7 +42696,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Failed to schedule a call"] @@ -48098,35 +42800,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Sets the session key(s) of the function caller to `keys`."] - #[doc = "Allows an account to set its session key prior to becoming a validator."] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be signed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] - #[doc = " fixed."] + #[doc = "See [`Pallet::set_keys`]."] set_keys { keys: runtime_types::polkadot_runtime::SessionKeys, proof: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Removes any session key(s) of the function caller."] - #[doc = ""] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] - #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] - #[doc = "means being a controller account) or directly convertible into a validator ID (which"] - #[doc = "usually means being a stash account)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] - #[doc = " `T::Keys::key_ids()` which is fixed."] + #[doc = "See [`Pallet::purge_keys`]."] purge_keys, } #[derive( @@ -48167,7 +42850,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "New session has happened. Note that the argument is the session index, not the"] @@ -48194,27 +42877,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Take the origin account as a stash and lock up `value` of its balance. `controller` will"] - #[doc = "be the account that controls it."] - #[doc = ""] - #[doc = "`value` must be more than the `minimum_balance` specified by `T::Currency`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the stash account."] - #[doc = ""] - #[doc = "Emits `Bonded`."] - #[doc = "## Complexity"] - #[doc = "- Independent of the arguments. Moderate complexity."] - #[doc = "- O(1)."] - #[doc = "- Three extra DB entries."] - #[doc = ""] - #[doc = "NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned"] - #[doc = "unless the `origin` falls below _existential deposit_ and gets removed as dust."] + #[doc = "See [`Pallet::bond`]."] bond { - controller: - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, payee: runtime_types::pallet_staking::RewardDestination< @@ -48222,318 +42889,117 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "Add some extra amount that have appeared in the stash `free_balance` into the balance up"] - #[doc = "for staking."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the stash, not the controller."] - #[doc = ""] - #[doc = "Use this if there are additional funds in your stash account that you wish to bond."] - #[doc = "Unlike [`bond`](Self::bond) or [`unbond`](Self::unbond) this function does not impose"] - #[doc = "any limitation on the amount that can be added."] - #[doc = ""] - #[doc = "Emits `Bonded`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::bond_extra`]."] bond_extra { #[codec(compact)] max_additional: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Schedule a portion of the stash to be unlocked ready for transfer out after the bond"] - #[doc = "period ends. If this leaves an amount actively bonded less than"] - #[doc = "T::Currency::minimum_balance(), then it is increased to the full amount."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "Once the unlock period is done, you can call `withdraw_unbonded` to actually move"] - #[doc = "the funds out of management ready for transfer."] - #[doc = ""] - #[doc = "No more than a limited number of unlocking chunks (see `MaxUnlockingChunks`)"] - #[doc = "can co-exists at the same time. If there are no unlocking chunks slots available"] - #[doc = "[`Call::withdraw_unbonded`] is called to remove some of the chunks (if possible)."] - #[doc = ""] - #[doc = "If a user encounters the `InsufficientBond` error when calling this extrinsic,"] - #[doc = "they should call `chill` first in order to free up their bonded funds."] - #[doc = ""] - #[doc = "Emits `Unbonded`."] - #[doc = ""] - #[doc = "See also [`Call::withdraw_unbonded`]."] + #[doc = "See [`Pallet::unbond`]."] unbond { #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "Remove any unlocked chunks from the `unlocking` queue from our management."] - #[doc = ""] - #[doc = "This essentially frees up that balance to be used by the stash account to do"] - #[doc = "whatever it wants."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller."] - #[doc = ""] - #[doc = "Emits `Withdrawn`."] - #[doc = ""] - #[doc = "See also [`Call::unbond`]."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(S) where S is the number of slashing spans to remove"] - #[doc = "NOTE: Weight annotation is the kill scenario, we refund otherwise."] + #[doc = "See [`Pallet::withdraw_unbonded`]."] withdraw_unbonded { num_slashing_spans: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "Declare the desire to validate for the origin controller."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] + #[doc = "See [`Pallet::validate`]."] validate { prefs: runtime_types::pallet_staking::ValidatorPrefs, }, #[codec(index = 5)] - #[doc = "Declare the desire to nominate `targets` for the origin controller."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- The transaction's complexity is proportional to the size of `targets` (N)"] - #[doc = "which is capped at CompactAssignments::LIMIT (T::MaxNominations)."] - #[doc = "- Both the reads and writes follow a similar pattern."] + #[doc = "See [`Pallet::nominate`]."] nominate { targets: ::std::vec::Vec< ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, >, }, #[codec(index = 6)] - #[doc = "Declare no desire to either validate or nominate."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- Contains one read."] - #[doc = "- Writes are limited to the `origin` account key."] + #[doc = "See [`Pallet::chill`]."] chill, #[codec(index = 7)] - #[doc = "(Re-)set the payment target for a controller."] - #[doc = ""] - #[doc = "Effects will be felt instantly (as soon as this function is completed successfully)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- Contains a limited number of reads."] - #[doc = "- Writes are limited to the `origin` account key."] - #[doc = "---------"] + #[doc = "See [`Pallet::set_payee`]."] set_payee { payee: runtime_types::pallet_staking::RewardDestination< ::subxt::utils::AccountId32, >, }, #[codec(index = 8)] - #[doc = "(Re-)set the controller of a stash."] - #[doc = ""] - #[doc = "Effects will be felt instantly (as soon as this function is completed successfully)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the stash, not the controller."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(1)"] - #[doc = "- Independent of the arguments. Insignificant complexity."] - #[doc = "- Contains a limited number of reads."] - #[doc = "- Writes are limited to the `origin` account key."] - set_controller { - controller: - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, + #[doc = "See [`Pallet::set_controller`]."] + set_controller, #[codec(index = 9)] - #[doc = "Sets the ideal number of validators."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(1)"] + #[doc = "See [`Pallet::set_validator_count`]."] set_validator_count { #[codec(compact)] new: ::core::primitive::u32, }, #[codec(index = 10)] - #[doc = "Increments the ideal number of validators upto maximum of"] - #[doc = "`ElectionProviderBase::MaxWinners`."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "Same as [`Self::set_validator_count`]."] + #[doc = "See [`Pallet::increase_validator_count`]."] increase_validator_count { #[codec(compact)] additional: ::core::primitive::u32, }, #[codec(index = 11)] - #[doc = "Scale up the ideal number of validators by a factor upto maximum of"] - #[doc = "`ElectionProviderBase::MaxWinners`."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "Same as [`Self::set_validator_count`]."] + #[doc = "See [`Pallet::scale_validator_count`]."] scale_validator_count { factor: runtime_types::sp_arithmetic::per_things::Percent, }, #[codec(index = 12)] - #[doc = "Force there to be no new eras indefinitely."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "# Warning"] - #[doc = ""] - #[doc = "The election process starts multiple blocks before the end of the era."] - #[doc = "Thus the election process may be ongoing when this is called. In this case the"] - #[doc = "election will continue until the next era is triggered."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- No arguments."] - #[doc = "- Weight: O(1)"] + #[doc = "See [`Pallet::force_no_eras`]."] force_no_eras, #[codec(index = 13)] - #[doc = "Force there to be a new era at the end of the next session. After this, it will be"] - #[doc = "reset to normal (non-forced) behaviour."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "# Warning"] - #[doc = ""] - #[doc = "The election process starts multiple blocks before the end of the era."] - #[doc = "If this is called just before a new era is triggered, the election process may not"] - #[doc = "have enough blocks to get a result."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- No arguments."] - #[doc = "- Weight: O(1)"] + #[doc = "See [`Pallet::force_new_era`]."] force_new_era, #[codec(index = 14)] - #[doc = "Set the validators who cannot be slashed (if any)."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] + #[doc = "See [`Pallet::set_invulnerables`]."] set_invulnerables { invulnerables: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 15)] - #[doc = "Force a current staker to become completely unstaked, immediately."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] + #[doc = "See [`Pallet::force_unstake`]."] force_unstake { stash: ::subxt::utils::AccountId32, num_slashing_spans: ::core::primitive::u32, }, #[codec(index = 16)] - #[doc = "Force there to be a new era at the end of sessions indefinitely."] - #[doc = ""] - #[doc = "The dispatch origin must be Root."] - #[doc = ""] - #[doc = "# Warning"] - #[doc = ""] - #[doc = "The election process starts multiple blocks before the end of the era."] - #[doc = "If this is called just before a new era is triggered, the election process may not"] - #[doc = "have enough blocks to get a result."] + #[doc = "See [`Pallet::force_new_era_always`]."] force_new_era_always, #[codec(index = 17)] - #[doc = "Cancel enactment of a deferred slash."] - #[doc = ""] - #[doc = "Can be called by the `T::AdminOrigin`."] - #[doc = ""] - #[doc = "Parameters: era and indices of the slashes for that era to kill."] + #[doc = "See [`Pallet::cancel_deferred_slash`]."] cancel_deferred_slash { era: ::core::primitive::u32, slash_indices: ::std::vec::Vec<::core::primitive::u32>, }, #[codec(index = 18)] - #[doc = "Pay out all the stakers behind a single validator for a single era."] - #[doc = ""] - #[doc = "- `validator_stash` is the stash account of the validator. Their nominators, up to"] - #[doc = " `T::MaxNominatorRewardedPerValidator`, will also receive their rewards."] - #[doc = "- `era` may be any era between `[current_era - history_depth; current_era]`."] - #[doc = ""] - #[doc = "The origin of this call must be _Signed_. Any account can call this function, even if"] - #[doc = "it is not one of the stakers."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- At most O(MaxNominatorRewardedPerValidator)."] + #[doc = "See [`Pallet::payout_stakers`]."] payout_stakers { validator_stash: ::subxt::utils::AccountId32, era: ::core::primitive::u32, }, #[codec(index = 19)] - #[doc = "Rebond a portion of the stash scheduled to be unlocked."] - #[doc = ""] - #[doc = "The dispatch origin must be signed by the controller."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- Time complexity: O(L), where L is unlocking chunks"] - #[doc = "- Bounded by `MaxUnlockingChunks`."] + #[doc = "See [`Pallet::rebond`]."] rebond { #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 20)] - #[doc = "Remove all data structures concerning a staker/stash once it is at a state where it can"] - #[doc = "be considered `dust` in the staking system. The requirements are:"] - #[doc = ""] - #[doc = "1. the `total_balance` of the stash is below existential deposit."] - #[doc = "2. or, the `ledger.total` of the stash is below existential deposit."] - #[doc = ""] - #[doc = "The former can happen in cases like a slash; the latter when a fully unbonded account"] - #[doc = "is still receiving staking rewards in `RewardDestination::Staked`."] - #[doc = ""] - #[doc = "It can be called by anyone, as long as `stash` meets the above requirements."] - #[doc = ""] - #[doc = "Refunds the transaction fees upon successful execution."] + #[doc = "See [`Pallet::reap_stash`]."] reap_stash { stash: ::subxt::utils::AccountId32, num_slashing_spans: ::core::primitive::u32, }, #[codec(index = 21)] - #[doc = "Remove the given nominations from the calling validator."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ by the controller, not the stash."] - #[doc = ""] - #[doc = "- `who`: A list of nominator stash accounts who are nominating this validator which"] - #[doc = " should no longer be nominating this validator."] - #[doc = ""] - #[doc = "Note: Making this call only makes sense if you first set the validator preferences to"] - #[doc = "block any further nominations."] + #[doc = "See [`Pallet::kick`]."] kick { who: ::std::vec::Vec< ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, >, }, #[codec(index = 22)] - #[doc = "Update the various staking configurations ."] - #[doc = ""] - #[doc = "* `min_nominator_bond`: The minimum active bond needed to be a nominator."] - #[doc = "* `min_validator_bond`: The minimum active bond needed to be a validator."] - #[doc = "* `max_nominator_count`: The max number of users who can be a nominator at once. When"] - #[doc = " set to `None`, no limit is enforced."] - #[doc = "* `max_validator_count`: The max number of users who can be a validator at once. When"] - #[doc = " set to `None`, no limit is enforced."] - #[doc = "* `chill_threshold`: The ratio of `max_nominator_count` or `max_validator_count` which"] - #[doc = " should be filled in order for the `chill_other` transaction to work."] - #[doc = "* `min_commission`: The minimum amount of commission that each validators must maintain."] - #[doc = " This is checked only upon calling `validate`. Existing validators are not affected."] - #[doc = ""] - #[doc = "RuntimeOrigin must be Root to call this function."] - #[doc = ""] - #[doc = "NOTE: Existing nominators and validators will not be affected by this update."] - #[doc = "to kick people under the new limits, `chill_other` should be called."] + #[doc = "See [`Pallet::set_staking_configs`]."] set_staking_configs { min_nominator_bond: runtime_types::pallet_staking::pallet::pallet::ConfigOp< @@ -48560,47 +43026,17 @@ pub mod api { >, }, #[codec(index = 23)] - #[doc = "Declare a `controller` to stop participating as either a validator or nominator."] - #[doc = ""] - #[doc = "Effects will be felt at the beginning of the next era."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_, but can be called by anyone."] - #[doc = ""] - #[doc = "If the caller is the same as the controller being targeted, then no further checks are"] - #[doc = "enforced, and this function behaves just like `chill`."] - #[doc = ""] - #[doc = "If the caller is different than the controller being targeted, the following conditions"] - #[doc = "must be met:"] - #[doc = ""] - #[doc = "* `controller` must belong to a nominator who has become non-decodable,"] - #[doc = ""] - #[doc = "Or:"] - #[doc = ""] - #[doc = "* A `ChillThreshold` must be set and checked which defines how close to the max"] - #[doc = " nominators or validators we must reach before users can start chilling one-another."] - #[doc = "* A `MaxNominatorCount` and `MaxValidatorCount` must be set which is used to determine"] - #[doc = " how close we are to the threshold."] - #[doc = "* A `MinNominatorBond` and `MinValidatorBond` must be set and checked, which determines"] - #[doc = " if this is a person that should be chilled because they have not met the threshold"] - #[doc = " bond required."] - #[doc = ""] - #[doc = "This can be helpful if bond requirements are updated, and we need to remove old users"] - #[doc = "who do not satisfy these requirements."] + #[doc = "See [`Pallet::chill_other`]."] chill_other { controller: ::subxt::utils::AccountId32, }, #[codec(index = 24)] - #[doc = "Force a validator to have at least the minimum commission. This will not affect a"] - #[doc = "validator who already has a commission greater than or equal to the minimum. Any account"] - #[doc = "can call this."] + #[doc = "See [`Pallet::force_apply_min_commission`]."] force_apply_min_commission { validator_stash: ::subxt::utils::AccountId32, }, #[codec(index = 25)] - #[doc = "Sets the minimum amount of commission that each validators must maintain."] - #[doc = ""] - #[doc = "This call has lower privilege requirements than `set_staking_config` and can be called"] - #[doc = "by the `T::AdminOrigin`. Root can always call this."] + #[doc = "See [`Pallet::set_min_commission`]."] set_min_commission { new: runtime_types::sp_arithmetic::per_things::Perbill, }, @@ -48633,7 +43069,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Not a controller account."] @@ -48725,7 +43161,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "The era payout has been set; the first balance is the validator-payout; the second is"] @@ -49057,24 +43493,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Set the current time."] - #[doc = ""] - #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] - #[doc = "phase, if this call hasn't been invoked by that time."] - #[doc = ""] - #[doc = "The timestamp should be greater than the previous one by the amount specified by"] - #[doc = "`MinimumPeriod`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Inherent`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] - #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)`). (because of `DidUpdate::take` in"] - #[doc = " `on_finalize`)"] - #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] + #[doc = "See [`Pallet::set`]."] set { #[codec(compact)] now: ::core::primitive::u64, @@ -49096,67 +43518,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Report something `reason` that deserves a tip and claim any eventual the finder's fee."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] - #[doc = "`DataDepositPerByte` for each byte in `reason`."] - #[doc = ""] - #[doc = "- `reason`: The reason for, or the thing that deserves, the tip; generally this will be"] - #[doc = " a UTF-8-encoded URL."] - #[doc = "- `who`: The account which should be credited for the tip."] - #[doc = ""] - #[doc = "Emits `NewTip` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R)` where `R` length of `reason`."] - #[doc = " - encoding and hashing of 'reason'"] + #[doc = "See [`Pallet::report_awesome`]."] report_awesome { reason: ::std::vec::Vec<::core::primitive::u8>, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "Retract a prior tip-report from `report_awesome`, and cancel the process of tipping."] - #[doc = ""] - #[doc = "If successful, the original deposit will be unreserved."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the tip identified by `hash`"] - #[doc = "must have been reported by the signing account through `report_awesome` (and not"] - #[doc = "through `tip_new`)."] - #[doc = ""] - #[doc = "- `hash`: The identity of the open tip for which a tip value is declared. This is formed"] - #[doc = " as the hash of the tuple of the original tip `reason` and the beneficiary account ID."] - #[doc = ""] - #[doc = "Emits `TipRetracted` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`"] - #[doc = " - Depends on the length of `T::Hash` which is fixed."] + #[doc = "See [`Pallet::retract_tip`]."] retract_tip { hash: ::subxt::utils::H256 }, #[codec(index = 2)] - #[doc = "Give a tip for something new; no finder's fee will be taken."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must be a"] - #[doc = "member of the `Tippers` set."] - #[doc = ""] - #[doc = "- `reason`: The reason for, or the thing that deserves, the tip; generally this will be"] - #[doc = " a UTF-8-encoded URL."] - #[doc = "- `who`: The account which should be credited for the tip."] - #[doc = "- `tip_value`: The amount of tip that the sender would like to give. The median tip"] - #[doc = " value of active tippers will be given to the `who`."] - #[doc = ""] - #[doc = "Emits `NewTip` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(R + T)` where `R` length of `reason`, `T` is the number of tippers."] - #[doc = " - `O(T)`: decoding `Tipper` vec of length `T`. `T` is charged as upper bound given by"] - #[doc = " `ContainsLengthBound`. The actual cost depends on the implementation of"] - #[doc = " `T::Tippers`."] - #[doc = " - `O(R)`: hashing and encoding of reason of length `R`"] + #[doc = "See [`Pallet::tip_new`]."] tip_new { reason: ::std::vec::Vec<::core::primitive::u8>, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -49164,58 +43538,17 @@ pub mod api { tip_value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "Declare a tip value for an already-open tip."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must be a"] - #[doc = "member of the `Tippers` set."] - #[doc = ""] - #[doc = "- `hash`: The identity of the open tip for which a tip value is declared. This is formed"] - #[doc = " as the hash of the tuple of the hash of the original tip `reason` and the beneficiary"] - #[doc = " account ID."] - #[doc = "- `tip_value`: The amount of tip that the sender would like to give. The median tip"] - #[doc = " value of active tippers will be given to the `who`."] - #[doc = ""] - #[doc = "Emits `TipClosing` if the threshold of tippers has been reached and the countdown period"] - #[doc = "has started."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(T)` where `T` is the number of tippers. decoding `Tipper` vec of length `T`, insert"] - #[doc = " tip and check closing, `T` is charged as upper bound given by `ContainsLengthBound`."] - #[doc = " The actual cost depends on the implementation of `T::Tippers`."] - #[doc = ""] - #[doc = " Actually weight could be lower as it depends on how many tips are in `OpenTip` but it"] - #[doc = " is weighted as if almost full i.e of length `T-1`."] + #[doc = "See [`Pallet::tip`]."] tip { hash: ::subxt::utils::H256, #[codec(compact)] tip_value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "Close and payout a tip."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "The tip identified by `hash` must have finished its countdown period."] - #[doc = ""] - #[doc = "- `hash`: The identity of the open tip for which a tip value is declared. This is formed"] - #[doc = " as the hash of the tuple of the original tip `reason` and the beneficiary account ID."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- : `O(T)` where `T` is the number of tippers. decoding `Tipper` vec of length `T`. `T`"] - #[doc = " is charged as upper bound given by `ContainsLengthBound`. The actual cost depends on"] - #[doc = " the implementation of `T::Tippers`."] + #[doc = "See [`Pallet::close_tip`]."] close_tip { hash: ::subxt::utils::H256 }, #[codec(index = 5)] - #[doc = "Remove and slash an already-open tip."] - #[doc = ""] - #[doc = "May only be called from `T::RejectOrigin`."] - #[doc = ""] - #[doc = "As a result, the finder is slashed and the deposits are lost."] - #[doc = ""] - #[doc = "Emits `TipSlashed` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::slash_tip`]."] slash_tip { hash: ::subxt::utils::H256 }, } #[derive( @@ -49228,7 +43561,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The reason given is just too big."] @@ -49259,7 +43592,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A new tip suggestion has been opened."] @@ -49320,7 +43653,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,"] @@ -49423,71 +43756,36 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Put forward a suggestion for spending. A deposit proportional to the value"] - #[doc = "is reserved and slashed if the proposal is rejected. It is returned once the"] - #[doc = "proposal is awarded."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::propose_spend`]."] propose_spend { #[codec(compact)] value: ::core::primitive::u128, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "Reject a proposed spend. The original deposit will be slashed."] - #[doc = ""] - #[doc = "May only be called from `T::RejectOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::reject_proposal`]."] reject_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Approve a proposal. At a later time, the proposal will be allocated to the beneficiary"] - #[doc = "and the original deposit will be returned."] - #[doc = ""] - #[doc = "May only be called from `T::ApproveOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = " - O(1)."] + #[doc = "See [`Pallet::approve_proposal`]."] approve_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "- `origin`: Must be `SpendOrigin` with the `Success` value being at least `amount`."] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The destination account for the transfer."] - #[doc = ""] - #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] - #[doc = "beneficiary."] + #[doc = "See [`Pallet::spend`]."] spend { #[codec(compact)] amount: ::core::primitive::u128, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 4)] - #[doc = "Force a previously approved proposal to be removed from the approval queue."] - #[doc = "The original deposit will no longer be returned."] - #[doc = ""] - #[doc = "May only be called from `T::RejectOrigin`."] - #[doc = "- `proposal_id`: The index of a proposal"] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(A) where `A` is the number of approvals"] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `ProposalNotApproved`: The `proposal_id` supplied was not found in the approval queue,"] - #[doc = "i.e., the proposal has not been approved. This could also mean the proposal does not"] - #[doc = "exist altogether, thus there is no way it would have been approved in the first place."] + #[doc = "See [`Pallet::remove_approval`]."] remove_approval { #[codec(compact)] proposal_id: ::core::primitive::u32, @@ -49532,7 +43830,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "New proposal."] @@ -49616,100 +43914,37 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Send a batch of dispatch calls."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] - #[doc = ""] - #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] - #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] - #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] - #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] - #[doc = "event is deposited."] + #[doc = "See [`Pallet::batch`]."] batch { calls: ::std::vec::Vec, }, #[codec(index = 1)] - #[doc = "Send a call through an indexed pseudonym of the sender."] - #[doc = ""] - #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] - #[doc = "use the same filter as the origin of this call."] - #[doc = ""] - #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] - #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] - #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] - #[doc = "in the Multisig pallet instead."] - #[doc = ""] - #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::as_derivative`]."] as_derivative { index: ::core::primitive::u16, call: ::std::boxed::Box, }, #[codec(index = 2)] - #[doc = "Send a batch of dispatch calls and atomically execute them."] - #[doc = "The whole transaction will rollback and fail if any of the calls failed."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::batch_all`]."] batch_all { calls: ::std::vec::Vec, }, #[codec(index = 3)] - #[doc = "Dispatches a function call with a provided origin."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::dispatch_as`]."] dispatch_as { as_origin: ::std::boxed::Box, call: ::std::boxed::Box, }, #[codec(index = 4)] - #[doc = "Send a batch of dispatch calls."] - #[doc = "Unlike `batch`, it allows errors and won't interrupt."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::force_batch`]."] force_batch { calls: ::std::vec::Vec, }, #[codec(index = 5)] - #[doc = "Dispatch a function call with a specified weight."] - #[doc = ""] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Root origin to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = "See [`Pallet::with_weight`]."] with_weight { call: ::std::boxed::Box, weight: runtime_types::sp_weights::weight_v2::Weight, @@ -49725,7 +43960,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Too many calls batched."] @@ -49741,7 +43976,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Batch of dispatches did not complete fully. Index of first failing dispatch given, as"] @@ -49787,48 +44022,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Unlock any vested funds of the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vest`]."] vest, #[codec(index = 1)] - #[doc = "Unlock any vested funds of a `target` account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vest_other`]."] vest_other { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 2)] - #[doc = "Create a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account receiving the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vested_transfer`]."] vested_transfer { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< @@ -49837,20 +44042,7 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "Force a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `source`: The account whose funds should be transferred."] - #[doc = "- `target`: The account that should be transferred the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_vested_transfer`]."] force_vested_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -49860,27 +44052,7 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] - #[doc = "the highest possible start and end blocks. If both schedules have already started the"] - #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] - #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] - #[doc = "unmodified."] - #[doc = ""] - #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] - #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] - #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] - #[doc = "and both will be removed."] - #[doc = ""] - #[doc = "Merged schedule attributes:"] - #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] - #[doc = " current_block)`."] - #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] - #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `schedule1_index`: index of the first schedule to merge."] - #[doc = "- `schedule2_index`: index of the second schedule to merge."] + #[doc = "See [`Pallet::merge_schedules`]."] merge_schedules { schedule1_index: ::core::primitive::u32, schedule2_index: ::core::primitive::u32, @@ -49925,7 +44097,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "The amount vested has been updated. This could indicate a change in funds available."] @@ -49990,19 +44162,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] + #[doc = "See [`Pallet::whitelist_call`]."] whitelist_call { call_hash: ::subxt::utils::H256 }, #[codec(index = 1)] + #[doc = "See [`Pallet::remove_whitelisted_call`]."] remove_whitelisted_call { call_hash: ::subxt::utils::H256 }, #[codec(index = 2)] + #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] dispatch_whitelisted_call { call_hash: ::subxt::utils::H256, call_encoded_len: ::core::primitive::u32, call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] + #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] dispatch_whitelisted_call_with_preimage { call: ::std::boxed::Box, }, @@ -50017,7 +44193,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The preimage of the call hash could not be loaded."] @@ -50045,7 +44221,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] CallWhitelisted { call_hash: ::subxt::utils::H256 }, @@ -50078,29 +44254,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] + #[doc = "See [`Pallet::send`]."] send { dest: ::std::boxed::Box, message: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. The first item should be the currency used to to pay the fee on the"] - #[doc = " `dest` side. May not be empty."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::teleport_assets`]."] teleport_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -50108,22 +44271,7 @@ pub mod api { fee_asset_item: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Transfer some assets from the local chain to the sovereign account of a destination"] - #[doc = "chain and forward a notification XCM."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the"] - #[doc = " `dest` side."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::reserve_transfer_assets`]."] reserve_transfer_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -50131,79 +44279,35 @@ pub mod api { fee_asset_item: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Execute an XCM message from a local, signed, origin."] - #[doc = ""] - #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] - #[doc = "partially."] - #[doc = ""] - #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than the"] - #[doc = "maximum amount of weight that the message could take to be executed, then no execution"] - #[doc = "attempt will be made."] - #[doc = ""] - #[doc = "NOTE: A successful return to this does *not* imply that the `msg` was executed successfully"] - #[doc = "to completion; only that *some* of it was executed."] + #[doc = "See [`Pallet::execute`]."] execute { message: ::std::boxed::Box, max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 4)] - #[doc = "Extoll that a particular destination can be communicated with through a particular"] - #[doc = "version of XCM."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The destination that is being described."] - #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] + #[doc = "See [`Pallet::force_xcm_version`]."] force_xcm_version { location: ::std::boxed::Box, - xcm_version: ::core::primitive::u32, + version: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] - #[doc = "version a destination can accept is unknown)."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] + #[doc = "See [`Pallet::force_default_xcm_version`]."] force_default_xcm_version { maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] - #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] + #[doc = "See [`Pallet::force_subscribe_version_notify`]."] force_subscribe_version_notify { location: ::std::boxed::Box, }, #[codec(index = 7)] - #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] - #[doc = "version changes."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] - #[doc = " notifications which we no longer desire."] + #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] force_unsubscribe_version_notify { location: ::std::boxed::Box, }, #[codec(index = 8)] - #[doc = "Transfer some assets from the local chain to the sovereign account of a destination"] - #[doc = "chain and forward a notification XCM."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the"] - #[doc = " `dest` side."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] limited_reserve_transfer_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -50212,23 +44316,7 @@ pub mod api { weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 9)] - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send"] - #[doc = " from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be"] - #[doc = " an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. The first item should be the currency used to to pay the fee on the"] - #[doc = " `dest` side. May not be empty."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_teleport_assets`]."] limited_teleport_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -50237,10 +44325,7 @@ pub mod api { weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 10)] - #[doc = "Set or unset the global suspension state of the XCM executor."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `suspended`: `true` to suspend, `false` to resume."] + #[doc = "See [`Pallet::force_suspension`]."] force_suspension { suspended: ::core::primitive::bool }, } #[derive( @@ -50253,7 +44338,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The desired destination was unreachable, generally because there is a no way of routing"] @@ -50316,7 +44401,7 @@ pub mod api { #[doc = "A remote lock with the corresponding data could not be found."] LockNotFound, #[codec(index = 19)] - #[doc = "The unlock operation cannot succeed because there are still users of the lock."] + #[doc = "The unlock operation cannot succeed because there are still consumers of the lock."] InUse, } #[derive( @@ -50329,95 +44414,83 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Execution of an XCM message was attempted."] - #[doc = ""] - #[doc = "\\[ outcome \\]"] - Attempted(runtime_types::xcm::v3::traits::Outcome), + Attempted { + outcome: runtime_types::xcm::v3::traits::Outcome, + }, #[codec(index = 1)] #[doc = "A XCM message was sent."] - #[doc = ""] - #[doc = "\\[ origin, destination, message \\]"] - Sent( - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::v3::Xcm, - ), + Sent { + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + destination: runtime_types::xcm::v3::multilocation::MultiLocation, + message: runtime_types::xcm::v3::Xcm, + message_id: [::core::primitive::u8; 32usize], + }, #[codec(index = 2)] #[doc = "Query response received which does not match a registered query. This may be because a"] #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] - #[doc = ""] - #[doc = "\\[ origin location, id \\]"] - UnexpectedResponse( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u64, - ), + UnexpectedResponse { + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + }, #[codec(index = 3)] #[doc = "Query response has been received and is ready for taking with `take_response`. There is"] #[doc = "no registered notification call."] - #[doc = ""] - #[doc = "\\[ id, response \\]"] - ResponseReady(::core::primitive::u64, runtime_types::xcm::v3::Response), + ResponseReady { + query_id: ::core::primitive::u64, + response: runtime_types::xcm::v3::Response, + }, #[codec(index = 4)] #[doc = "Query response has been received and query is removed. The registered notification has"] #[doc = "been dispatched and executed successfully."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index \\]"] - Notified( - ::core::primitive::u64, - ::core::primitive::u8, - ::core::primitive::u8, - ), + Notified { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + }, #[codec(index = 5)] #[doc = "Query response has been received and query is removed. The registered notification could"] #[doc = "not be dispatched because the dispatch weight is greater than the maximum weight"] #[doc = "originally budgeted by this runtime for the query result."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index, actual weight, max budgeted weight \\]"] - NotifyOverweight( - ::core::primitive::u64, - ::core::primitive::u8, - ::core::primitive::u8, - runtime_types::sp_weights::weight_v2::Weight, - runtime_types::sp_weights::weight_v2::Weight, - ), + NotifyOverweight { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + actual_weight: runtime_types::sp_weights::weight_v2::Weight, + max_budgeted_weight: runtime_types::sp_weights::weight_v2::Weight, + }, #[codec(index = 6)] #[doc = "Query response has been received and query is removed. There was a general error with"] #[doc = "dispatching the notification call."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index \\]"] - NotifyDispatchError( - ::core::primitive::u64, - ::core::primitive::u8, - ::core::primitive::u8, - ), + NotifyDispatchError { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + }, #[codec(index = 7)] #[doc = "Query response has been received and query is removed. The dispatch was unable to be"] #[doc = "decoded into a `Call`; this might be due to dispatch function having a signature which"] #[doc = "is not `(origin, QueryId, Response)`."] - #[doc = ""] - #[doc = "\\[ id, pallet index, call index \\]"] - NotifyDecodeFailed( - ::core::primitive::u64, - ::core::primitive::u8, - ::core::primitive::u8, - ), + NotifyDecodeFailed { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + }, #[codec(index = 8)] #[doc = "Expected query response has been received but the origin location of the response does"] #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] - #[doc = ""] - #[doc = "\\[ origin location, id, expected location \\]"] - InvalidResponder( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u64, - ::core::option::Option< + InvalidResponder { + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + expected_location: ::core::option::Option< runtime_types::xcm::v3::multilocation::MultiLocation, >, - ), + }, #[codec(index = 9)] #[doc = "Expected query response has been received but the expected origin location placed in"] #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] @@ -50426,65 +44499,52 @@ pub mod api { #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] - #[doc = ""] - #[doc = "\\[ origin location, id \\]"] - InvalidResponderVersion( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u64, - ), + InvalidResponderVersion { + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + }, #[codec(index = 10)] #[doc = "Received query response has been read and removed."] - #[doc = ""] - #[doc = "\\[ id \\]"] - ResponseTaken(::core::primitive::u64), + ResponseTaken { query_id: ::core::primitive::u64 }, #[codec(index = 11)] #[doc = "Some assets have been placed in an asset trap."] - #[doc = ""] - #[doc = "\\[ hash, origin, assets \\]"] - AssetsTrapped( - ::subxt::utils::H256, - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::VersionedMultiAssets, - ), + AssetsTrapped { + hash: ::subxt::utils::H256, + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + }, #[codec(index = 12)] #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] - #[doc = ""] - #[doc = "\\[ destination, result, cost \\]"] - VersionChangeNotified( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u32, - runtime_types::xcm::v3::multiasset::MultiAssets, - ), + VersionChangeNotified { + destination: runtime_types::xcm::v3::multilocation::MultiLocation, + result: ::core::primitive::u32, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, #[codec(index = 13)] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] - #[doc = ""] - #[doc = "\\[ location, XCM version \\]"] - SupportedVersionChanged( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u32, - ), + SupportedVersionChanged { + location: runtime_types::xcm::v3::multilocation::MultiLocation, + version: ::core::primitive::u32, + }, #[codec(index = 14)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] - #[doc = ""] - #[doc = "\\[ location, query ID, error \\]"] - NotifyTargetSendFail( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u64, - runtime_types::xcm::v3::traits::Error, - ), + NotifyTargetSendFail { + location: runtime_types::xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + error: runtime_types::xcm::v3::traits::Error, + }, #[codec(index = 15)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] - #[doc = ""] - #[doc = "\\[ location, query ID \\]"] - NotifyTargetMigrationFail( - runtime_types::xcm::VersionedMultiLocation, - ::core::primitive::u64, - ), + NotifyTargetMigrationFail { + location: runtime_types::xcm::VersionedMultiLocation, + query_id: ::core::primitive::u64, + }, #[codec(index = 16)] #[doc = "Expected query response has been received but the expected querier location placed in"] #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] @@ -50493,68 +44553,57 @@ pub mod api { #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] - #[doc = ""] - #[doc = "\\[ origin location, id \\]"] - InvalidQuerierVersion( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u64, - ), + InvalidQuerierVersion { + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + }, #[codec(index = 17)] #[doc = "Expected query response has been received but the querier location of the response does"] #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] - #[doc = ""] - #[doc = "\\[ origin location, id, expected querier, maybe actual querier \\]"] - InvalidQuerier( - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::primitive::u64, - runtime_types::xcm::v3::multilocation::MultiLocation, - ::core::option::Option< + InvalidQuerier { + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + expected_querier: runtime_types::xcm::v3::multilocation::MultiLocation, + maybe_actual_querier: ::core::option::Option< runtime_types::xcm::v3::multilocation::MultiLocation, >, - ), + }, #[codec(index = 18)] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] - #[doc = ""] - #[doc = "\\[ destination location, cost \\]"] - VersionNotifyStarted( - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::v3::multiasset::MultiAssets, - ), + VersionNotifyStarted { + destination: runtime_types::xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, #[codec(index = 19)] - #[doc = "We have requested that a remote chain sends us XCM version change notifications."] - #[doc = ""] - #[doc = "\\[ destination location, cost \\]"] - VersionNotifyRequested( - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::v3::multiasset::MultiAssets, - ), + #[doc = "We have requested that a remote chain send us XCM version change notifications."] + VersionNotifyRequested { + destination: runtime_types::xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, #[codec(index = 20)] #[doc = "We have requested that a remote chain stops sending us XCM version change notifications."] - #[doc = ""] - #[doc = "\\[ destination location, cost \\]"] - VersionNotifyUnrequested( - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::v3::multiasset::MultiAssets, - ), + VersionNotifyUnrequested { + destination: runtime_types::xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, #[codec(index = 21)] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] - #[doc = ""] - #[doc = "\\[ paying location, fees \\]"] - FeesPaid( - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::v3::multiasset::MultiAssets, - ), + FeesPaid { + paying: runtime_types::xcm::v3::multilocation::MultiLocation, + fees: runtime_types::xcm::v3::multiasset::MultiAssets, + }, #[codec(index = 22)] #[doc = "Some assets have been claimed from an asset trap"] - #[doc = ""] - #[doc = "\\[ hash, origin, assets \\]"] - AssetsClaimed( - ::subxt::utils::H256, - runtime_types::xcm::v3::multilocation::MultiLocation, - runtime_types::xcm::VersionedMultiAssets, - ), + AssetsClaimed { + hash: ::subxt::utils::H256, + origin: runtime_types::xcm::v3::multilocation::MultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -50613,11 +44662,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RemoteLockedFungibleRecord { + pub struct RemoteLockedFungibleRecord<_0> { pub amount: ::core::primitive::u128, pub owner: runtime_types::xcm::VersionedMultiLocation, pub locker: runtime_types::xcm::VersionedMultiLocation, - pub users: ::core::primitive::u32, + pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + _0, + ::core::primitive::u128, + )>, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -50766,7 +44818,7 @@ pub mod api { } pub mod polkadot_primitives { use super::runtime_types; - pub mod v4 { + pub mod v5 { use super::runtime_types; pub mod assignment_app { use super::runtime_types; @@ -50830,12 +44882,12 @@ pub mod api { PrecheckingMaxMemory(::core::primitive::u64), #[codec(index = 5)] PvfPrepTimeout( - runtime_types::polkadot_primitives::v4::PvfPrepTimeoutKind, + runtime_types::polkadot_primitives::v5::PvfPrepTimeoutKind, ::core::primitive::u64, ), #[codec(index = 6)] PvfExecTimeout( - runtime_types::polkadot_primitives::v4::PvfExecTimeoutKind, + runtime_types::polkadot_primitives::v5::PvfExecTimeoutKind, ::core::primitive::u64, ), #[codec(index = 7)] @@ -50853,7 +44905,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ExecutorParams( pub ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::executor_params::ExecutorParam, + runtime_types::polkadot_primitives::v5::executor_params::ExecutorParam, >, ); } @@ -50871,13 +44923,94 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct UncheckedSigned<_0, _1> { pub payload: _0, - pub validator_index: runtime_types::polkadot_primitives::v4::ValidatorIndex, + pub validator_index: runtime_types::polkadot_primitives::v5::ValidatorIndex, pub signature: - runtime_types::polkadot_primitives::v4::validator_app::Signature, + runtime_types::polkadot_primitives::v5::validator_app::Signature, #[codec(skip)] pub __subxt_unused_type_params: ::core::marker::PhantomData<_1>, } } + pub mod slashing { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisputeProof { + pub time_slot: + runtime_types::polkadot_primitives::v5::slashing::DisputesTimeSlot, + pub kind: + runtime_types::polkadot_primitives::v5::slashing::SlashingOffenceKind, + pub validator_index: runtime_types::polkadot_primitives::v5::ValidatorIndex, + pub validator_id: + runtime_types::polkadot_primitives::v5::validator_app::Public, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisputesTimeSlot { + pub session_index: ::core::primitive::u32, + pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PendingSlashes { + pub keys: ::subxt::utils::KeyedVec< + runtime_types::polkadot_primitives::v5::ValidatorIndex, + runtime_types::polkadot_primitives::v5::validator_app::Public, + >, + pub kind: + runtime_types::polkadot_primitives::v5::slashing::SlashingOffenceKind, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum SlashingOffenceKind { + #[codec(index = 0)] + ForInvalid, + #[codec(index = 1)] + AgainstValid, + } + } pub mod validator_app { use super::runtime_types; #[derive( @@ -50931,9 +45064,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct BackedCandidate<_0> { pub candidate: - runtime_types::polkadot_primitives::v4::CommittedCandidateReceipt<_0>, + runtime_types::polkadot_primitives::v5::CommittedCandidateReceipt<_0>, pub validity_votes: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::ValidityAttestation, + runtime_types::polkadot_primitives::v5::ValidityAttestation, >, pub validator_indices: ::subxt::utils::bits::DecodedBits< ::core::primitive::u8, @@ -50965,7 +45098,7 @@ pub mod api { runtime_types::polkadot_parachain::primitives::ValidationCode, >, pub head_data: runtime_types::polkadot_parachain::primitives::HeadData, - pub processed_downward_messages: _0, + pub processed_downward_messages: ::core::primitive::u32, pub hrmp_watermark: _0, } #[derive( @@ -50981,12 +45114,12 @@ pub mod api { pub struct CandidateDescriptor<_0> { pub para_id: runtime_types::polkadot_parachain::primitives::Id, pub relay_parent: _0, - pub collator: runtime_types::polkadot_primitives::v4::collator_app::Public, - pub persisted_validation_data_hash: _0, - pub pov_hash: _0, - pub erasure_root: _0, - pub signature: runtime_types::polkadot_primitives::v4::collator_app::Signature, - pub para_head: _0, + pub collator: runtime_types::polkadot_primitives::v5::collator_app::Public, + pub persisted_validation_data_hash: ::subxt::utils::H256, + pub pov_hash: ::subxt::utils::H256, + pub erasure_root: ::subxt::utils::H256, + pub signature: runtime_types::polkadot_primitives::v5::collator_app::Signature, + pub para_head: ::subxt::utils::H256, pub validation_code_hash: runtime_types::polkadot_parachain::primitives::ValidationCodeHash, } @@ -51003,23 +45136,23 @@ pub mod api { pub enum CandidateEvent<_0> { #[codec(index = 0)] CandidateBacked( - runtime_types::polkadot_primitives::v4::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, runtime_types::polkadot_parachain::primitives::HeadData, - runtime_types::polkadot_primitives::v4::CoreIndex, - runtime_types::polkadot_primitives::v4::GroupIndex, + runtime_types::polkadot_primitives::v5::CoreIndex, + runtime_types::polkadot_primitives::v5::GroupIndex, ), #[codec(index = 1)] CandidateIncluded( - runtime_types::polkadot_primitives::v4::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, runtime_types::polkadot_parachain::primitives::HeadData, - runtime_types::polkadot_primitives::v4::CoreIndex, - runtime_types::polkadot_primitives::v4::GroupIndex, + runtime_types::polkadot_primitives::v5::CoreIndex, + runtime_types::polkadot_primitives::v5::GroupIndex, ), #[codec(index = 2)] CandidateTimedOut( - runtime_types::polkadot_primitives::v4::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, runtime_types::polkadot_parachain::primitives::HeadData, - runtime_types::polkadot_primitives::v4::CoreIndex, + runtime_types::polkadot_primitives::v5::CoreIndex, ), } #[derive( @@ -51033,8 +45166,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CandidateReceipt<_0> { - pub descriptor: runtime_types::polkadot_primitives::v4::CandidateDescriptor<_0>, - pub commitments_hash: _0, + pub descriptor: runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, + pub commitments_hash: ::subxt::utils::H256, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51047,8 +45180,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CommittedCandidateReceipt<_0> { - pub descriptor: runtime_types::polkadot_primitives::v4::CandidateDescriptor<_0>, - pub commitments: runtime_types::polkadot_primitives::v4::CandidateCommitments< + pub descriptor: runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, + pub commitments: runtime_types::polkadot_primitives::v5::CandidateCommitments< ::core::primitive::u32, >, } @@ -51076,7 +45209,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum CoreOccupied { #[codec(index = 0)] - Parathread(runtime_types::polkadot_primitives::v4::ParathreadEntry), + Parathread(runtime_types::polkadot_primitives::v5::ParathreadEntry), #[codec(index = 1)] Parachain, } @@ -51092,9 +45225,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum CoreState<_0, _1> { #[codec(index = 0)] - Occupied(runtime_types::polkadot_primitives::v4::OccupiedCore<_0, _1>), + Occupied(runtime_types::polkadot_primitives::v5::OccupiedCore<_0, _1>), #[codec(index = 1)] - Scheduled(runtime_types::polkadot_primitives::v4::ScheduledCore), + Scheduled(runtime_types::polkadot_primitives::v5::ScheduledCore), #[codec(index = 2)] Free, } @@ -51132,9 +45265,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum DisputeStatement { #[codec(index = 0)] - Valid(runtime_types::polkadot_primitives::v4::ValidDisputeStatementKind), + Valid(runtime_types::polkadot_primitives::v5::ValidDisputeStatementKind), #[codec(index = 1)] - Invalid(runtime_types::polkadot_primitives::v4::InvalidDisputeStatementKind), + Invalid(runtime_types::polkadot_primitives::v5::InvalidDisputeStatementKind), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51150,9 +45283,9 @@ pub mod api { pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub session: ::core::primitive::u32, pub statements: ::std::vec::Vec<( - runtime_types::polkadot_primitives::v4::DisputeStatement, - runtime_types::polkadot_primitives::v4::ValidatorIndex, - runtime_types::polkadot_primitives::v4::validator_app::Signature, + runtime_types::polkadot_primitives::v5::DisputeStatement, + runtime_types::polkadot_primitives::v5::ValidatorIndex, + runtime_types::polkadot_primitives::v5::validator_app::Signature, )>, } #[derive( @@ -51208,18 +45341,18 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct InherentData<_0> { pub bitfields: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::signed::UncheckedSigned< - runtime_types::polkadot_primitives::v4::AvailabilityBitfield, - runtime_types::polkadot_primitives::v4::AvailabilityBitfield, + runtime_types::polkadot_primitives::v5::signed::UncheckedSigned< + runtime_types::polkadot_primitives::v5::AvailabilityBitfield, + runtime_types::polkadot_primitives::v5::AvailabilityBitfield, >, >, pub backed_candidates: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::BackedCandidate< + runtime_types::polkadot_primitives::v5::BackedCandidate< ::subxt::utils::H256, >, >, pub disputes: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::DisputeStatementSet, + runtime_types::polkadot_primitives::v5::DisputeStatementSet, >, pub parent_header: _0, } @@ -51249,21 +45382,21 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct OccupiedCore<_0, _1> { pub next_up_on_available: ::core::option::Option< - runtime_types::polkadot_primitives::v4::ScheduledCore, + runtime_types::polkadot_primitives::v5::ScheduledCore, >, pub occupied_since: _1, pub time_out_at: _1, pub next_up_on_time_out: ::core::option::Option< - runtime_types::polkadot_primitives::v4::ScheduledCore, + runtime_types::polkadot_primitives::v5::ScheduledCore, >, pub availability: ::subxt::utils::bits::DecodedBits< ::core::primitive::u8, ::subxt::utils::bits::Lsb0, >, - pub group_responsible: runtime_types::polkadot_primitives::v4::GroupIndex, + pub group_responsible: runtime_types::polkadot_primitives::v5::GroupIndex, pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub candidate_descriptor: - runtime_types::polkadot_primitives::v4::CandidateDescriptor<_0>, + runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51295,7 +45428,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ParathreadClaim( pub runtime_types::polkadot_parachain::primitives::Id, - pub runtime_types::polkadot_primitives::v4::collator_app::Public, + pub runtime_types::polkadot_primitives::v5::collator_app::Public, ); #[derive( :: subxt :: ext :: codec :: Decode, @@ -51308,7 +45441,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ParathreadEntry { - pub claim: runtime_types::polkadot_primitives::v4::ParathreadClaim, + pub claim: runtime_types::polkadot_primitives::v5::ParathreadClaim, pub retries: ::core::primitive::u32, } #[derive( @@ -51325,7 +45458,7 @@ pub mod api { pub parent_head: runtime_types::polkadot_parachain::primitives::HeadData, pub relay_parent_number: _1, pub relay_parent_storage_root: _0, - pub max_pov_size: _1, + pub max_pov_size: ::core::primitive::u32, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51341,7 +45474,7 @@ pub mod api { pub accept: ::core::primitive::bool, pub subject: runtime_types::polkadot_parachain::primitives::ValidationCodeHash, pub session_index: ::core::primitive::u32, - pub validator_index: runtime_types::polkadot_primitives::v4::ValidatorIndex, + pub validator_index: runtime_types::polkadot_primitives::v5::ValidatorIndex, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51388,7 +45521,7 @@ pub mod api { pub struct ScheduledCore { pub para_id: runtime_types::polkadot_parachain::primitives::Id, pub collator: ::core::option::Option< - runtime_types::polkadot_primitives::v4::collator_app::Public, + runtime_types::polkadot_primitives::v5::collator_app::Public, >, } #[derive( @@ -51404,14 +45537,14 @@ pub mod api { pub struct ScrapedOnChainVotes<_0> { pub session: ::core::primitive::u32, pub backing_validators_per_candidate: ::std::vec::Vec<( - runtime_types::polkadot_primitives::v4::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, ::std::vec::Vec<( - runtime_types::polkadot_primitives::v4::ValidatorIndex, - runtime_types::polkadot_primitives::v4::ValidityAttestation, + runtime_types::polkadot_primitives::v5::ValidatorIndex, + runtime_types::polkadot_primitives::v5::ValidityAttestation, )>, )>, pub disputes: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::DisputeStatementSet, + runtime_types::polkadot_primitives::v5::DisputeStatementSet, >, } #[derive( @@ -51426,21 +45559,21 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SessionInfo { pub active_validator_indices: - ::std::vec::Vec, + ::std::vec::Vec, pub random_seed: [::core::primitive::u8; 32usize], pub dispute_period: ::core::primitive::u32, - pub validators: runtime_types::polkadot_primitives::v4::IndexedVec< - runtime_types::polkadot_primitives::v4::ValidatorIndex, - runtime_types::polkadot_primitives::v4::validator_app::Public, + pub validators: runtime_types::polkadot_primitives::v5::IndexedVec< + runtime_types::polkadot_primitives::v5::ValidatorIndex, + runtime_types::polkadot_primitives::v5::validator_app::Public, >, pub discovery_keys: ::std::vec::Vec, pub assignment_keys: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::assignment_app::Public, + runtime_types::polkadot_primitives::v5::assignment_app::Public, >, - pub validator_groups: runtime_types::polkadot_primitives::v4::IndexedVec< - runtime_types::polkadot_primitives::v4::GroupIndex, - ::std::vec::Vec, + pub validator_groups: runtime_types::polkadot_primitives::v5::IndexedVec< + runtime_types::polkadot_primitives::v5::GroupIndex, + ::std::vec::Vec, >, pub n_cores: ::core::primitive::u32, pub zeroth_delay_tranche_width: ::core::primitive::u32, @@ -51523,9 +45656,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum ValidityAttestation { #[codec(index = 1)] - Implicit(runtime_types::polkadot_primitives::v4::validator_app::Signature), + Implicit(runtime_types::polkadot_primitives::v5::validator_app::Signature), #[codec(index = 2)] - Explicit(runtime_types::polkadot_primitives::v4::validator_app::Signature), + Explicit(runtime_types::polkadot_primitives::v5::validator_app::Signature), } } pub mod vstaging { @@ -51909,8 +46042,6 @@ pub mod api { Paras(runtime_types::polkadot_runtime_parachains::paras::pallet::Call), #[codec(index = 57)] Initializer(runtime_types::polkadot_runtime_parachains::initializer::pallet::Call), - #[codec(index = 59)] - Ump(runtime_types::polkadot_runtime_parachains::ump::pallet::Call), #[codec(index = 60)] Hrmp(runtime_types::polkadot_runtime_parachains::hrmp::pallet::Call), #[codec(index = 62)] @@ -51929,6 +46060,118 @@ pub mod api { Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Call), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Call), + #[codec(index = 100)] + MessageQueue(runtime_types::pallet_message_queue::pallet::Call), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RuntimeError { + #[codec(index = 0)] + System(runtime_types::frame_system::pallet::Error), + #[codec(index = 1)] + Scheduler(runtime_types::pallet_scheduler::pallet::Error), + #[codec(index = 10)] + Preimage(runtime_types::pallet_preimage::pallet::Error), + #[codec(index = 2)] + Babe(runtime_types::pallet_babe::pallet::Error), + #[codec(index = 4)] + Indices(runtime_types::pallet_indices::pallet::Error), + #[codec(index = 5)] + Balances(runtime_types::pallet_balances::pallet::Error), + #[codec(index = 7)] + Staking(runtime_types::pallet_staking::pallet::pallet::Error), + #[codec(index = 9)] + Session(runtime_types::pallet_session::pallet::Error), + #[codec(index = 11)] + Grandpa(runtime_types::pallet_grandpa::pallet::Error), + #[codec(index = 12)] + ImOnline(runtime_types::pallet_im_online::pallet::Error), + #[codec(index = 14)] + Democracy(runtime_types::pallet_democracy::pallet::Error), + #[codec(index = 15)] + Council(runtime_types::pallet_collective::pallet::Error), + #[codec(index = 16)] + TechnicalCommittee(runtime_types::pallet_collective::pallet::Error2), + #[codec(index = 17)] + PhragmenElection(runtime_types::pallet_elections_phragmen::pallet::Error), + #[codec(index = 18)] + TechnicalMembership(runtime_types::pallet_membership::pallet::Error), + #[codec(index = 19)] + Treasury(runtime_types::pallet_treasury::pallet::Error), + #[codec(index = 20)] + ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Error), + #[codec(index = 21)] + Referenda(runtime_types::pallet_referenda::pallet::Error), + #[codec(index = 23)] + Whitelist(runtime_types::pallet_whitelist::pallet::Error), + #[codec(index = 24)] + Claims(runtime_types::polkadot_runtime_common::claims::pallet::Error), + #[codec(index = 25)] + Vesting(runtime_types::pallet_vesting::pallet::Error), + #[codec(index = 26)] + Utility(runtime_types::pallet_utility::pallet::Error), + #[codec(index = 28)] + Identity(runtime_types::pallet_identity::pallet::Error), + #[codec(index = 29)] + Proxy(runtime_types::pallet_proxy::pallet::Error), + #[codec(index = 30)] + Multisig(runtime_types::pallet_multisig::pallet::Error), + #[codec(index = 34)] + Bounties(runtime_types::pallet_bounties::pallet::Error), + #[codec(index = 38)] + ChildBounties(runtime_types::pallet_child_bounties::pallet::Error), + #[codec(index = 35)] + Tips(runtime_types::pallet_tips::pallet::Error), + #[codec(index = 36)] + ElectionProviderMultiPhase( + runtime_types::pallet_election_provider_multi_phase::pallet::Error, + ), + #[codec(index = 37)] + VoterList(runtime_types::pallet_bags_list::pallet::Error), + #[codec(index = 39)] + NominationPools(runtime_types::pallet_nomination_pools::pallet::Error), + #[codec(index = 40)] + FastUnstake(runtime_types::pallet_fast_unstake::pallet::Error), + #[codec(index = 51)] + Configuration( + runtime_types::polkadot_runtime_parachains::configuration::pallet::Error, + ), + #[codec(index = 53)] + ParaInclusion(runtime_types::polkadot_runtime_parachains::inclusion::pallet::Error), + #[codec(index = 54)] + ParaInherent( + runtime_types::polkadot_runtime_parachains::paras_inherent::pallet::Error, + ), + #[codec(index = 56)] + Paras(runtime_types::polkadot_runtime_parachains::paras::pallet::Error), + #[codec(index = 60)] + Hrmp(runtime_types::polkadot_runtime_parachains::hrmp::pallet::Error), + #[codec(index = 62)] + ParasDisputes(runtime_types::polkadot_runtime_parachains::disputes::pallet::Error), + #[codec(index = 63)] + ParasSlashing( + runtime_types::polkadot_runtime_parachains::disputes::slashing::pallet::Error, + ), + #[codec(index = 70)] + Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error), + #[codec(index = 71)] + Slots(runtime_types::polkadot_runtime_common::slots::pallet::Error), + #[codec(index = 72)] + Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Error), + #[codec(index = 73)] + Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Error), + #[codec(index = 99)] + XcmPallet(runtime_types::pallet_xcm::pallet::Error), + #[codec(index = 100)] + MessageQueue(runtime_types::pallet_message_queue::pallet::Error), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -52013,8 +46256,6 @@ pub mod api { ParaInclusion(runtime_types::polkadot_runtime_parachains::inclusion::pallet::Event), #[codec(index = 56)] Paras(runtime_types::polkadot_runtime_parachains::paras::pallet::Event), - #[codec(index = 59)] - Ump(runtime_types::polkadot_runtime_parachains::ump::pallet::Event), #[codec(index = 60)] Hrmp(runtime_types::polkadot_runtime_parachains::hrmp::pallet::Event), #[codec(index = 62)] @@ -52029,6 +46270,8 @@ pub mod api { Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Event), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Event), + #[codec(index = 100)] + MessageQueue(runtime_types::pallet_message_queue::pallet::Event), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -52040,12 +46283,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RuntimeHoldReason {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SessionKeys { pub grandpa: runtime_types::sp_consensus_grandpa::app::Public, pub babe: runtime_types::sp_consensus_babe::app::Public, pub im_online: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - pub para_validator: runtime_types::polkadot_primitives::v4::validator_app::Public, - pub para_assignment: runtime_types::polkadot_primitives::v4::assignment_app::Public, + pub para_validator: runtime_types::polkadot_primitives::v5::validator_app::Public, + pub para_assignment: runtime_types::polkadot_primitives::v5::assignment_app::Public, pub authority_discovery: runtime_types::sp_authority_discovery::app::Public, } } @@ -52065,14 +46319,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Create a new auction."] - #[doc = ""] - #[doc = "This can only happen when there isn't already an auction in progress and may only be"] - #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] - #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] + #[doc = "See [`Pallet::new_auction`]."] new_auction { #[codec(compact)] duration: ::core::primitive::u32, @@ -52080,22 +46330,7 @@ pub mod api { lease_period_index: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] - #[doc = "parachain."] - #[doc = ""] - #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] - #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] - #[doc = ""] - #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] - #[doc = "funded by) the same account."] - #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] - #[doc = "value of `AuctionCounter`."] - #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] - #[doc = "bid win. This amount is held throughout the range."] + #[doc = "See [`Pallet::bid`]."] bid { #[codec(compact)] para: runtime_types::polkadot_parachain::primitives::Id, @@ -52109,9 +46344,7 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Cancel an in-progress auction."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + #[doc = "See [`Pallet::cancel_auction`]."] cancel_auction, } #[derive( @@ -52124,7 +46357,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "This auction is already in progress."] @@ -52158,7 +46391,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "An auction started. Provides its index and the block number where it will begin to"] @@ -52227,54 +46460,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Make a claim to collect your DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to claim is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message"] - #[doc = " matching the format described above."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim`]."] claim { dest: ::subxt::utils::AccountId32, ethereum_signature: runtime_types::polkadot_runtime_common::claims::EcdsaSignature, }, #[codec(index = 1)] - #[doc = "Mint a new claim to collect DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The Ethereum address allowed to collect this claim."] - #[doc = "- `value`: The number of DOTs that will be claimed."] - #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "We assume worst case that both vesting and statement is being inserted."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::mint_claim`]."] mint_claim { who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, value: ::core::primitive::u128, @@ -52288,32 +46484,7 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "Make a claim to collect your DOTs by signing a statement."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)(statement)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] - #[doc = "expected according to your purchase arrangement."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message"] - #[doc = " matching the format described above."] - #[doc = "- `statement`: The identity of the statement which is being attested to in the signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim_attest`]."] claim_attest { dest: ::subxt::utils::AccountId32, ethereum_signature: @@ -52321,27 +46492,12 @@ pub mod api { statement: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "Attest to a statement, needed to finalize the claims process."] - #[doc = ""] - #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a `SignedExtension`."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] - #[doc = "and provides a `statement` which is expected for the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `statement`: The identity of the statement which is being attested to in the signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to do pre-validation on `attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::attest`]."] attest { statement: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] + #[doc = "See [`Pallet::move_claim`]."] move_claim { old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -52358,7 +46514,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Invalid Ethereum signature."] @@ -52390,7 +46546,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Someone claimed some DOTs."] @@ -52466,13 +46622,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period range."] - #[doc = ""] - #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] - #[doc = "by the parachain manager."] + #[doc = "See [`Pallet::create`]."] create { #[codec(compact)] index: runtime_types::polkadot_parachain::primitives::Id, @@ -52488,8 +46641,7 @@ pub mod api { ::core::option::Option, }, #[codec(index = 1)] - #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] - #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] + #[doc = "See [`Pallet::contribute`]."] contribute { #[codec(compact)] index: runtime_types::polkadot_parachain::primitives::Id, @@ -52499,48 +46651,26 @@ pub mod api { ::core::option::Option, }, #[codec(index = 2)] - #[doc = "Withdraw full balance of a specific contributor."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] - #[doc = ""] - #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement, then the retirement"] - #[doc = "flag must be set. For a fund to be ready for retirement, then:"] - #[doc = "- it must not already be in retirement;"] - #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] - #[doc = "- and either:"] - #[doc = " - the block number must be at least `end`; or"] - #[doc = " - the current lease period must be greater than the fund's `last_period`."] - #[doc = ""] - #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current block"] - #[doc = "number."] - #[doc = ""] - #[doc = "- `who`: The account whose contribution should be withdrawn."] - #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] + #[doc = "See [`Pallet::withdraw`]."] withdraw { who: ::subxt::utils::AccountId32, #[codec(compact)] index: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 3)] - #[doc = "Automatically refund contributors of an ended crowdloan."] - #[doc = "Due to weight restrictions, this function may need to be called multiple"] - #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] + #[doc = "See [`Pallet::refund`]."] refund { #[codec(compact)] index: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 4)] - #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] + #[doc = "See [`Pallet::dissolve`]."] dissolve { #[codec(compact)] index: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 5)] - #[doc = "Edit the configuration for an in-progress crowdloan."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + #[doc = "See [`Pallet::edit`]."] edit { #[codec(compact)] index: runtime_types::polkadot_parachain::primitives::Id, @@ -52556,23 +46686,18 @@ pub mod api { ::core::option::Option, }, #[codec(index = 6)] - #[doc = "Add an optional memo to an existing crowdloan contribution."] - #[doc = ""] - #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] + #[doc = "See [`Pallet::add_memo`]."] add_memo { index: runtime_types::polkadot_parachain::primitives::Id, memo: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 7)] - #[doc = "Poke the fund into `NewRaise`"] - #[doc = ""] - #[doc = "Origin must be Signed, and the fund has non-zero raise."] + #[doc = "See [`Pallet::poke`]."] poke { index: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 8)] - #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of a user over to fund a parachain"] - #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] + #[doc = "See [`Pallet::contribute_all`]."] contribute_all { #[codec(compact)] index: runtime_types::polkadot_parachain::primitives::Id, @@ -52590,7 +46715,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The current lease period is more than the first lease period."] @@ -52672,7 +46797,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Create a new crowdloaning campaign."] @@ -52756,11 +46881,9 @@ pub mod api { pub cap: _1, pub last_contribution: runtime_types::polkadot_runtime_common::crowdloan::LastContribution<_2>, - pub first_period: _2, - pub last_period: _2, - pub fund_index: _2, - #[codec(skip)] - pub __subxt_unused_type_params: ::core::marker::PhantomData<_3>, + pub first_period: _3, + pub last_period: _3, + pub fund_index: ::core::primitive::u32, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -52776,7 +46899,7 @@ pub mod api { #[codec(index = 0)] Never, #[codec(index = 1)] - PreEnding(_0), + PreEnding(::core::primitive::u32), #[codec(index = 2)] Ending(_0), } @@ -52795,23 +46918,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Register head data and validation code for a reserved Para Id."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin."] - #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] - #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] - #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The origin signed account must reserve a corresponding deposit for the registration. Anything already"] - #[doc = "reserved previously for this para ID is accounted for."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Registered` event is emitted in case of success."] + #[doc = "See [`Pallet::register`]."] register { id: runtime_types::polkadot_parachain::primitives::Id, genesis_head: runtime_types::polkadot_parachain::primitives::HeadData, @@ -52819,12 +46929,7 @@ pub mod api { runtime_types::polkadot_parachain::primitives::ValidationCode, }, #[codec(index = 1)] - #[doc = "Force the registration of a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function must be called by a Root origin."] - #[doc = ""] - #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] - #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] + #[doc = "See [`Pallet::force_register`]."] force_register { who: ::subxt::utils::AccountId32, deposit: ::core::primitive::u128, @@ -52834,72 +46939,37 @@ pub mod api { runtime_types::polkadot_parachain::primitives::ValidationCode, }, #[codec(index = 2)] - #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] - #[doc = ""] - #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be a parathread."] + #[doc = "See [`Pallet::deregister`]."] deregister { id: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 3)] - #[doc = "Swap a parachain with another parachain or parathread."] - #[doc = ""] - #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] - #[doc = ""] - #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] - #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] - #[doc = ""] - #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] - #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] - #[doc = "scheduling info (i.e. whether they're a parathread or parachain), auction information"] - #[doc = "and the auction deposit are switched."] + #[doc = "See [`Pallet::swap`]."] swap { id: runtime_types::polkadot_parachain::primitives::Id, other: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 4)] - #[doc = "Remove a manager lock from a para. This will allow the manager of a"] - #[doc = "previously locked para to deregister or swap a para without using governance."] - #[doc = ""] - #[doc = "Can only be called by the Root origin or the parachain."] + #[doc = "See [`Pallet::remove_lock`]."] remove_lock { para: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 5)] - #[doc = "Reserve a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] - #[doc = "The origin account is able to register head data and validation code using `register` to create"] - #[doc = "a parathread. Using the Slots pallet, a parathread can then be upgraded to get a parachain slot."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new para ID."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for use."] + #[doc = "See [`Pallet::reserve`]."] reserve, #[codec(index = 6)] - #[doc = "Add a manager lock from a para. This will prevent the manager of a"] - #[doc = "para to deregister or swap a para."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is unlocked."] + #[doc = "See [`Pallet::add_lock`]."] add_lock { para: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 7)] - #[doc = "Schedule a parachain upgrade."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is unlocked."] + #[doc = "See [`Pallet::schedule_code_upgrade`]."] schedule_code_upgrade { para: runtime_types::polkadot_parachain::primitives::Id, new_code: runtime_types::polkadot_parachain::primitives::ValidationCode, }, #[codec(index = 8)] - #[doc = "Set the parachain's current head."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is unlocked."] + #[doc = "See [`Pallet::set_current_head`]."] set_current_head { para: runtime_types::polkadot_parachain::primitives::Id, new_head: runtime_types::polkadot_parachain::primitives::HeadData, @@ -52915,7 +46985,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The ID is not registered."] @@ -52971,7 +47041,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] Registered { @@ -53024,13 +47094,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to happen"] - #[doc = "independently of any other on-chain mechanism to use it."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::force_lease`]."] force_lease { para: runtime_types::polkadot_parachain::primitives::Id, leaser: ::subxt::utils::AccountId32, @@ -53039,20 +47106,12 @@ pub mod api { period_count: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::clear_all_leases`]."] clear_all_leases { para: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 2)] - #[doc = "Try to onboard a parachain that has a lease for the current lease period."] - #[doc = ""] - #[doc = "This function can be useful if there was some state issue with a para that should"] - #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] - #[doc = "let them onboard from here."] - #[doc = ""] - #[doc = "Origin must be signed, but can be called by anyone."] + #[doc = "See [`Pallet::trigger_onboard`]."] trigger_onboard { para: runtime_types::polkadot_parachain::primitives::Id, }, @@ -53067,7 +47126,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The parachain ID is not onboarding."] @@ -53086,7 +47145,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A new `[lease_period]` is beginning."] @@ -53125,9 +47184,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Set the validation upgrade cooldown."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Set the validation upgrade delay."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "Set the acceptance period for an included candidate."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Set the max validation code size for incoming upgrades."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Set the max POV block size for incoming upgrades."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Set the max head data size for paras."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "Set the number of parathread execution cores."] set_parathread_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Set the number of retries for a particular parathread."] set_parathread_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Set the parachain validator-group rotation frequency"] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "Set the availability period for parachains."] set_chain_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 10)] # [doc = "Set the availability period for parathreads."] set_thread_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "Set the maximum number of validators to assign to any core."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "Set the maximum number of validators to use in parachain consensus."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "Set the dispute period, in number of sessions to keep for disputes."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "Set the dispute post conclusion acceptance period."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "Set the no show slots, in number of number of consensus slots."] # [doc = "Must be at least 1."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "Set the total number of delay tranches."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "Set the zeroth delay tranche width."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "Set the number of validators needed to approve a block."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "Sets the maximum items that can present in a upward dispatch queue at once."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "Sets the maximum total size of items that can present in a upward dispatch queue at once."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "Set the critical downward message size."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 26)] # [doc = "Sets the soft limit for the phase of dispatching dispatchable upward messages."] set_ump_service_total_weight { new : runtime_types :: sp_weights :: weight_v2 :: Weight , } , # [codec (index = 27)] # [doc = "Sets the maximum size of an upward message that can be sent by a candidate."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "Sets the maximum number of messages that a candidate can contain."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "Sets the number of sessions after which an HRMP open channel request expires."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] # [doc = "channel."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 35)] # [doc = "Sets the maximum number of inbound HRMP channels a parathread is allowed to accept."] set_hrmp_max_parathread_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 38)] # [doc = "Sets the maximum number of outbound HRMP channels a parathread is allowed to open."] set_hrmp_max_parathread_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 40)] # [doc = "Sets the maximum amount of weight any individual upward message may consume."] set_ump_max_individual_weight { new : runtime_types :: sp_weights :: weight_v2 :: Weight , } , # [codec (index = 41)] # [doc = "Enable or disable PVF pre-checking. Consult the field documentation prior executing."] set_pvf_checking_enabled { new : :: core :: primitive :: bool , } , # [codec (index = 42)] # [doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] # [doc = "upgrade taking place."] # [doc = ""] # [doc = "See the field documentation for information and constraints for the new value."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "Setting this to true will disable consistency checks for the configuration setters."] # [doc = "Use with caution."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "Set the asynchronous backing parameters."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: vstaging :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "Set PVF executor parameters."] set_executor_params { new : runtime_types :: polkadot_primitives :: v4 :: executor_params :: ExecutorParams , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_parathread_cores`]."] set_parathread_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_parathread_retries`]."] set_parathread_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_chain_availability_period`]."] set_chain_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 10)] # [doc = "See [`Pallet::set_thread_availability_period`]."] set_thread_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 35)] # [doc = "See [`Pallet::set_hrmp_max_parathread_inbound_channels`]."] set_hrmp_max_parathread_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 38)] # [doc = "See [`Pallet::set_hrmp_max_parathread_outbound_channels`]."] set_hrmp_max_parathread_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 41)] # [doc = "See [`Pallet::set_pvf_checking_enabled`]."] set_pvf_checking_enabled { new : :: core :: primitive :: bool , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: vstaging :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v5 :: executor_params :: ExecutorParams , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -53138,7 +47197,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The new value for a configuration parameter is invalid."] @@ -53156,50 +47215,48 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct HostConfiguration<_0> { - pub max_code_size: _0, - pub max_head_data_size: _0, - pub max_upward_queue_count: _0, - pub max_upward_queue_size: _0, - pub max_upward_message_size: _0, - pub max_upward_message_num_per_candidate: _0, - pub hrmp_max_message_num_per_candidate: _0, + pub max_code_size: ::core::primitive::u32, + pub max_head_data_size: ::core::primitive::u32, + pub max_upward_queue_count: ::core::primitive::u32, + pub max_upward_queue_size: ::core::primitive::u32, + pub max_upward_message_size: ::core::primitive::u32, + pub max_upward_message_num_per_candidate: ::core::primitive::u32, + pub hrmp_max_message_num_per_candidate: ::core::primitive::u32, pub validation_upgrade_cooldown: _0, pub validation_upgrade_delay: _0, pub async_backing_params: runtime_types::polkadot_primitives::vstaging::AsyncBackingParams, - pub max_pov_size: _0, - pub max_downward_message_size: _0, - pub ump_service_total_weight: runtime_types::sp_weights::weight_v2::Weight, - pub hrmp_max_parachain_outbound_channels: _0, - pub hrmp_max_parathread_outbound_channels: _0, + pub max_pov_size: ::core::primitive::u32, + pub max_downward_message_size: ::core::primitive::u32, + pub hrmp_max_parachain_outbound_channels: ::core::primitive::u32, + pub hrmp_max_parathread_outbound_channels: ::core::primitive::u32, pub hrmp_sender_deposit: ::core::primitive::u128, pub hrmp_recipient_deposit: ::core::primitive::u128, - pub hrmp_channel_max_capacity: _0, - pub hrmp_channel_max_total_size: _0, - pub hrmp_max_parachain_inbound_channels: _0, - pub hrmp_max_parathread_inbound_channels: _0, - pub hrmp_channel_max_message_size: _0, + pub hrmp_channel_max_capacity: ::core::primitive::u32, + pub hrmp_channel_max_total_size: ::core::primitive::u32, + pub hrmp_max_parachain_inbound_channels: ::core::primitive::u32, + pub hrmp_max_parathread_inbound_channels: ::core::primitive::u32, + pub hrmp_channel_max_message_size: ::core::primitive::u32, pub executor_params: - runtime_types::polkadot_primitives::v4::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, pub code_retention_period: _0, - pub parathread_cores: _0, - pub parathread_retries: _0, + pub parathread_cores: ::core::primitive::u32, + pub parathread_retries: ::core::primitive::u32, pub group_rotation_frequency: _0, pub chain_availability_period: _0, pub thread_availability_period: _0, - pub scheduling_lookahead: _0, + pub scheduling_lookahead: ::core::primitive::u32, pub max_validators_per_core: ::core::option::Option<_0>, pub max_validators: ::core::option::Option<_0>, - pub dispute_period: _0, + pub dispute_period: ::core::primitive::u32, pub dispute_post_conclusion_acceptance_period: _0, - pub no_show_slots: _0, - pub n_delay_tranches: _0, - pub zeroth_delay_tranche_width: _0, - pub needed_approvals: _0, - pub relay_vrf_modulo_samples: _0, - pub ump_max_individual_weight: runtime_types::sp_weights::weight_v2::Weight, + pub no_show_slots: ::core::primitive::u32, + pub n_delay_tranches: ::core::primitive::u32, + pub zeroth_delay_tranche_width: ::core::primitive::u32, + pub needed_approvals: ::core::primitive::u32, + pub relay_vrf_modulo_samples: ::core::primitive::u32, pub pvf_checking_enabled: ::core::primitive::bool, - pub pvf_voting_ttl: _0, + pub pvf_voting_ttl: ::core::primitive::u32, pub minimum_validation_upgrade_delay: _0, } } @@ -53217,9 +47274,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] + #[doc = "See [`Pallet::force_unfreeze`]."] force_unfreeze, } #[derive( @@ -53232,7 +47290,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Duplicate dispute statement sets provided."] @@ -53272,7 +47330,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A dispute has been initiated. \\[candidate hash, dispute location\\]"] @@ -53309,9 +47367,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] report_dispute_lost_unsigned { dispute_proof : :: std :: boxed :: Box < runtime_types :: polkadot_runtime_parachains :: disputes :: slashing :: DisputeProof > , key_owner_proof : runtime_types :: sp_session :: MembershipProof , } , } + #[codec(index = 0)] + #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] + report_dispute_lost_unsigned { + dispute_proof: ::std::boxed::Box< + runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -53322,7 +47388,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The key ownership proof is invalid."] @@ -53345,58 +47411,6 @@ pub mod api { DuplicateSlashingReport, } } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct DisputeProof { pub time_slot : runtime_types :: polkadot_runtime_parachains :: disputes :: slashing :: DisputesTimeSlot , pub kind : runtime_types :: polkadot_runtime_parachains :: disputes :: slashing :: SlashingOffenceKind , pub validator_index : runtime_types :: polkadot_primitives :: v4 :: ValidatorIndex , pub validator_id : runtime_types :: polkadot_primitives :: v4 :: validator_app :: Public , } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct DisputesTimeSlot { - pub session_index: ::core::primitive::u32, - pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct PendingSlashes { pub keys : :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v4 :: ValidatorIndex , runtime_types :: polkadot_primitives :: v4 :: validator_app :: Public > , pub kind : runtime_types :: polkadot_runtime_parachains :: disputes :: slashing :: SlashingOffenceKind , } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum SlashingOffenceKind { - #[codec(index = 0)] - ForInvalid, - #[codec(index = 1)] - AgainstValid, - } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -53445,90 +47459,48 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] - #[doc = "parameters."] - #[doc = ""] - #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] - #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] - #[doc = ""] - #[doc = "These numbers are a subject to the relay-chain configuration limits."] - #[doc = ""] - #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] - #[doc = "change."] + #[doc = "See [`Pallet::hrmp_init_open_channel`]."] hrmp_init_open_channel { recipient: runtime_types::polkadot_parachain::primitives::Id, proposed_max_capacity: ::core::primitive::u32, proposed_max_message_size: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Accept a pending open channel request from the given sender."] - #[doc = ""] - #[doc = "The channel will be opened only on the next session boundary."] + #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] hrmp_accept_open_channel { sender: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 2)] - #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] - #[doc = "recipient in the channel being closed."] - #[doc = ""] - #[doc = "The closure can only happen on a session change."] + #[doc = "See [`Pallet::hrmp_close_channel`]."] hrmp_close_channel { channel_id: runtime_types::polkadot_parachain::primitives::HrmpChannelId, }, #[codec(index = 3)] - #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that"] - #[doc = "a para may have. Normally this happens once per session, but this allows"] - #[doc = "you to trigger the cleanup immediately for a specific parachain."] - #[doc = ""] - #[doc = "Origin must be Root."] - #[doc = ""] - #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data of weighing."] + #[doc = "See [`Pallet::force_clean_hrmp`]."] force_clean_hrmp { para: runtime_types::polkadot_parachain::primitives::Id, inbound: ::core::primitive::u32, outbound: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "Force process HRMP open channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP open channel requests, you can use this"] - #[doc = "function process all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of opening channels must be provided as witness data of weighing."] + #[doc = "See [`Pallet::force_process_hrmp_open`]."] force_process_hrmp_open { channels: ::core::primitive::u32 }, #[codec(index = 5)] - #[doc = "Force process HRMP close channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP close channel requests, you can use this"] - #[doc = "function process all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of closing channels must be provided as witness data of weighing."] + #[doc = "See [`Pallet::force_process_hrmp_close`]."] force_process_hrmp_close { channels: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] - #[doc = "or the recipient for that request. The origin must be either of those."] - #[doc = ""] - #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] - #[doc = "already accepted."] - #[doc = ""] - #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] - #[doc = "witness data."] + #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] hrmp_cancel_open_request { channel_id: runtime_types::polkadot_parachain::primitives::HrmpChannelId, open_requests: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "Open a channel from a `sender` to a `recipient` `ParaId` using the Root origin. Although"] - #[doc = "opened by Root, the `max_capacity` and `max_message_size` are still subject to the Relay"] - #[doc = "Chain's configured limits."] - #[doc = ""] - #[doc = "Expected use is when one of the `ParaId`s involved in the channel is governed by the"] - #[doc = "Relay Chain, e.g. a common good parachain."] + #[doc = "See [`Pallet::force_open_hrmp_channel`]."] force_open_hrmp_channel { sender: runtime_types::polkadot_parachain::primitives::Id, recipient: runtime_types::polkadot_parachain::primitives::Id, @@ -53546,7 +47518,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "The sender tried to open a channel to themselves."] @@ -53616,7 +47588,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Open HRMP channel requested."] @@ -53710,7 +47682,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call {} #[derive( :: subxt :: ext :: codec :: Decode, @@ -53722,7 +47694,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Validator indices are out of order or contains duplicates."] @@ -53825,37 +47797,43 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A candidate was backed. `[candidate, head_data]`"] CandidateBacked( - runtime_types::polkadot_primitives::v4::CandidateReceipt< + runtime_types::polkadot_primitives::v5::CandidateReceipt< ::subxt::utils::H256, >, runtime_types::polkadot_parachain::primitives::HeadData, - runtime_types::polkadot_primitives::v4::CoreIndex, - runtime_types::polkadot_primitives::v4::GroupIndex, + runtime_types::polkadot_primitives::v5::CoreIndex, + runtime_types::polkadot_primitives::v5::GroupIndex, ), #[codec(index = 1)] #[doc = "A candidate was included. `[candidate, head_data]`"] CandidateIncluded( - runtime_types::polkadot_primitives::v4::CandidateReceipt< + runtime_types::polkadot_primitives::v5::CandidateReceipt< ::subxt::utils::H256, >, runtime_types::polkadot_parachain::primitives::HeadData, - runtime_types::polkadot_primitives::v4::CoreIndex, - runtime_types::polkadot_primitives::v4::GroupIndex, + runtime_types::polkadot_primitives::v5::CoreIndex, + runtime_types::polkadot_primitives::v5::GroupIndex, ), #[codec(index = 2)] #[doc = "A candidate timed out. `[candidate, head_data]`"] CandidateTimedOut( - runtime_types::polkadot_primitives::v4::CandidateReceipt< + runtime_types::polkadot_primitives::v5::CandidateReceipt< ::subxt::utils::H256, >, runtime_types::polkadot_parachain::primitives::HeadData, - runtime_types::polkadot_primitives::v4::CoreIndex, + runtime_types::polkadot_primitives::v5::CoreIndex, ), + #[codec(index = 3)] + #[doc = "Some upward messages have been received and will be processed."] + UpwardMessagesReceived { + from: runtime_types::polkadot_parachain::primitives::Id, + count: ::core::primitive::u32, + }, } } #[derive( @@ -53868,8 +47846,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AggregateMessageOrigin { + #[codec(index = 0)] + Ump(runtime_types::polkadot_runtime_parachains::inclusion::UmpQueueId), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct AvailabilityBitfieldRecord<_0> { - pub bitfield: runtime_types::polkadot_primitives::v4::AvailabilityBitfield, + pub bitfield: runtime_types::polkadot_primitives::v5::AvailabilityBitfield, pub submitted_at: _0, } #[derive( @@ -53883,9 +47875,9 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CandidatePendingAvailability<_0, _1> { - pub core: runtime_types::polkadot_primitives::v4::CoreIndex, + pub core: runtime_types::polkadot_primitives::v5::CoreIndex, pub hash: runtime_types::polkadot_core_primitives::CandidateHash, - pub descriptor: runtime_types::polkadot_primitives::v4::CandidateDescriptor<_0>, + pub descriptor: runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, pub availability_votes: ::subxt::utils::bits::DecodedBits< ::core::primitive::u8, ::subxt::utils::bits::Lsb0, @@ -53896,7 +47888,21 @@ pub mod api { >, pub relay_parent_number: _1, pub backed_in_number: _1, - pub backing_group: runtime_types::polkadot_primitives::v4::GroupIndex, + pub backing_group: runtime_types::polkadot_primitives::v5::GroupIndex, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum UmpQueueId { + #[codec(index = 0)] + Para(runtime_types::polkadot_parachain::primitives::Id), } } pub mod initializer { @@ -53913,12 +47919,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] - #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] - #[doc = "chain are valid and should be finalized."] + #[doc = "See [`Pallet::force_approve`]."] force_approve { up_to: ::core::primitive::u32 }, } } @@ -53934,10 +47938,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct BufferedSessionChange { pub validators: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::validator_app::Public, + runtime_types::polkadot_primitives::v5::validator_app::Public, >, pub queued: ::std::vec::Vec< - runtime_types::polkadot_primitives::v4::validator_app::Public, + runtime_types::polkadot_primitives::v5::validator_app::Public, >, pub session_index: ::core::primitive::u32, } @@ -53976,75 +47980,56 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Set the storage for the parachain validation code immediately."] + #[doc = "See [`Pallet::force_set_current_code`]."] force_set_current_code { para: runtime_types::polkadot_parachain::primitives::Id, new_code: runtime_types::polkadot_parachain::primitives::ValidationCode, }, #[codec(index = 1)] - #[doc = "Set the storage for the current parachain head data immediately."] + #[doc = "See [`Pallet::force_set_current_head`]."] force_set_current_head { para: runtime_types::polkadot_parachain::primitives::Id, new_head: runtime_types::polkadot_parachain::primitives::HeadData, }, #[codec(index = 2)] - #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] + #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] force_schedule_code_upgrade { para: runtime_types::polkadot_parachain::primitives::Id, new_code: runtime_types::polkadot_parachain::primitives::ValidationCode, relay_parent_number: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Note a new block head for para within the context of the current block."] + #[doc = "See [`Pallet::force_note_new_head`]."] force_note_new_head { para: runtime_types::polkadot_parachain::primitives::Id, new_head: runtime_types::polkadot_parachain::primitives::HeadData, }, #[codec(index = 4)] - #[doc = "Put a parachain directly into the next session's action queue."] - #[doc = "We can't queue it any sooner than this without going into the"] - #[doc = "initializer..."] + #[doc = "See [`Pallet::force_queue_action`]."] force_queue_action { para: runtime_types::polkadot_parachain::primitives::Id, }, #[codec(index = 5)] - #[doc = "Adds the validation code to the storage."] - #[doc = ""] - #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] - #[doc = "is running for that code, it will be instantly accepted."] - #[doc = ""] - #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] - #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] - #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] - #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the latter"] - #[doc = "prefer to use the `poke_unused_validation_code` dispatchable to raw storage manipulation."] - #[doc = ""] - #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] - #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] + #[doc = "See [`Pallet::add_trusted_validation_code`]."] add_trusted_validation_code { validation_code: runtime_types::polkadot_parachain::primitives::ValidationCode, }, #[codec(index = 6)] - #[doc = "Remove the validation code from the storage iff the reference count is 0."] - #[doc = ""] - #[doc = "This is better than removing the storage directly, because it will not remove the code"] - #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] - #[doc = "dispatching."] + #[doc = "See [`Pallet::poke_unused_validation_code`]."] poke_unused_validation_code { validation_code_hash: runtime_types::polkadot_parachain::primitives::ValidationCodeHash, }, #[codec(index = 7)] - #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] - #[doc = "enacts the results if that was the last vote before achieving the supermajority."] + #[doc = "See [`Pallet::include_pvf_check_statement`]."] include_pvf_check_statement { - stmt: runtime_types::polkadot_primitives::v4::PvfCheckStatement, + stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, signature: - runtime_types::polkadot_primitives::v4::validator_app::Signature, + runtime_types::polkadot_primitives::v5::validator_app::Signature, }, } #[derive( @@ -54057,7 +48042,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Para is not registered in our system."] @@ -54093,10 +48078,6 @@ pub mod api { #[doc = "The given PVF does not exist at the moment of process a vote."] PvfCheckSubjectInvalid, #[codec(index = 11)] - #[doc = "The PVF pre-checking statement cannot be included since the PVF pre-checking mechanism"] - #[doc = "is disabled."] - PvfCheckDisabled, - #[codec(index = 12)] #[doc = "Parachain cannot currently schedule a code upgrade."] CannotUpgradeCode, } @@ -54110,7 +48091,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] + #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Current code has been updated for a Para. `para_id`"] @@ -54230,7 +48211,7 @@ pub mod api { ::core::primitive::u8, ::subxt::utils::bits::Lsb0, >, - pub age: _0, + pub age: ::core::primitive::u32, pub created_at: _0, pub causes: ::std::vec::Vec< runtime_types::polkadot_runtime_parachains::paras::PvfCheckCause<_0>, @@ -54284,12 +48265,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] + #[doc = "See [`Pallet::enter`]."] enter { - data: runtime_types::polkadot_primitives::v4::InherentData< + data: runtime_types::polkadot_primitives::v5::InherentData< runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, runtime_types::sp_runtime::traits::BlakeTwo256, @@ -54307,7 +48288,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] + #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] #[doc = "Inclusion inherent called more than once per block."] @@ -54348,7 +48329,7 @@ pub mod api { Parachain, #[codec(index = 1)] Parathread( - runtime_types::polkadot_primitives::v4::collator_app::Public, + runtime_types::polkadot_primitives::v5::collator_app::Public, ::core::primitive::u32, ), } @@ -54363,10 +48344,10 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CoreAssignment { - pub core: runtime_types::polkadot_primitives::v4::CoreIndex, + pub core: runtime_types::polkadot_primitives::v5::CoreIndex, pub para_id: runtime_types::polkadot_parachain::primitives::Id, pub kind: runtime_types::polkadot_runtime_parachains::scheduler::AssignmentKind, - pub group_idx: runtime_types::polkadot_primitives::v4::GroupIndex, + pub group_idx: runtime_types::polkadot_primitives::v5::GroupIndex, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -54395,7 +48376,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct QueuedParathread { - pub claim: runtime_types::polkadot_primitives::v4::ParathreadEntry, + pub claim: runtime_types::polkadot_primitives::v5::ParathreadEntry, pub core_offset: ::core::primitive::u32, } } @@ -54413,131 +48394,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call {} } } - pub mod ump { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] - pub enum Call { - #[codec(index = 0)] - #[doc = "Service a single overweight upward message."] - #[doc = ""] - #[doc = "- `origin`: Must pass `ExecuteOverweightOrigin`."] - #[doc = "- `index`: The index of the overweight message to service."] - #[doc = "- `weight_limit`: The amount of weight that message execution may take."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `UnknownMessageIndex`: Message of `index` is unknown."] - #[doc = "- `WeightOverLimit`: Message execution may use greater than `weight_limit`."] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `OverweightServiced`: On success."] - service_overweight { - index: ::core::primitive::u64, - weight_limit: runtime_types::sp_weights::weight_v2::Weight, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tCustom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/)\n\t\t\tof this pallet.\n\t\t\t"] - pub enum Error { - #[codec(index = 0)] - #[doc = "The message index given is unknown."] - UnknownMessageIndex, - #[codec(index = 1)] - #[doc = "The amount of weight given is possibly not enough for executing the message."] - WeightOverLimit, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] - pub enum Event { - #[codec(index = 0)] - #[doc = "Upward message is invalid XCM."] - #[doc = "\\[ id \\]"] - InvalidFormat([::core::primitive::u8; 32usize]), - #[codec(index = 1)] - #[doc = "Upward message is unsupported version of XCM."] - #[doc = "\\[ id \\]"] - UnsupportedVersion([::core::primitive::u8; 32usize]), - #[codec(index = 2)] - #[doc = "Upward message executed with the given outcome."] - #[doc = "\\[ id, outcome \\]"] - ExecutedUpward( - [::core::primitive::u8; 32usize], - runtime_types::xcm::v3::traits::Outcome, - ), - #[codec(index = 3)] - #[doc = "The weight limit for handling upward messages was reached."] - #[doc = "\\[ id, remaining, required \\]"] - WeightExhausted( - [::core::primitive::u8; 32usize], - runtime_types::sp_weights::weight_v2::Weight, - runtime_types::sp_weights::weight_v2::Weight, - ), - #[codec(index = 4)] - #[doc = "Some upward messages have been received and will be processed."] - #[doc = "\\[ para, count, size \\]"] - UpwardMessagesReceived( - runtime_types::polkadot_parachain::primitives::Id, - ::core::primitive::u32, - ::core::primitive::u32, - ), - #[codec(index = 5)] - #[doc = "The weight budget was exceeded for an individual upward message."] - #[doc = ""] - #[doc = "This message can be later dispatched manually using `service_overweight` dispatchable"] - #[doc = "using the assigned `overweight_index`."] - #[doc = ""] - #[doc = "\\[ para, id, overweight_index, required \\]"] - OverweightEnqueued( - runtime_types::polkadot_parachain::primitives::Id, - [::core::primitive::u8; 32usize], - ::core::primitive::u64, - runtime_types::sp_weights::weight_v2::Weight, - ), - #[codec(index = 6)] - #[doc = "Upward message from the overweight queue was executed with the given actual weight"] - #[doc = "used."] - #[doc = ""] - #[doc = "\\[ overweight_index, used \\]"] - OverweightServiced( - ::core::primitive::u64, - runtime_types::sp_weights::weight_v2::Weight, - ), - } - } - } } pub mod sp_arithmetic { use super::runtime_types; @@ -55137,35 +48997,6 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Signature(pub [::core::primitive::u8; 64usize]); } - pub mod offchain { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaqueMultiaddr(pub ::std::vec::Vec<::core::primitive::u8>); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaqueNetworkState { - pub peer_id: runtime_types::sp_core::OpaquePeerId, - pub external_addresses: - ::std::vec::Vec, - } - } pub mod sr25519 { use super::runtime_types; pub mod vrf { @@ -55229,17 +49060,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaquePeerId(pub ::std::vec::Vec<::core::primitive::u8>); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Void {} } pub mod sp_inherents { @@ -56259,6 +50079,8 @@ pub mod api { CannotCreateHold, #[codec(index = 8)] NotExpendable, + #[codec(index = 9)] + Blocked, } #[derive( :: subxt :: ext :: codec :: Decode, diff --git a/testing/integration-tests/src/full_client/frame/balances.rs b/testing/integration-tests/src/full_client/frame/balances.rs index 4c4dc99ba8..35e4a0ab03 100644 --- a/testing/integration-tests/src/full_client/frame/balances.rs +++ b/testing/integration-tests/src/full_client/frame/balances.rs @@ -269,12 +269,10 @@ async fn storage_total_issuance() { async fn storage_balance_lock() -> Result<(), subxt::Error> { let bob_signer = dev::bob(); let bob: AccountId32 = dev::bob().public_key().into(); - let charlie: AccountId32 = dev::charlie().public_key().into(); let ctx = test_context().await; let api = ctx.client(); let tx = node_runtime::tx().staking().bond( - charlie.into(), 100_000_000_000_000, runtime_types::pallet_staking::RewardDestination::Stash, ); diff --git a/testing/integration-tests/src/full_client/frame/contracts.rs b/testing/integration-tests/src/full_client/frame/contracts.rs index fc2ee41340..47d3bea9e0 100644 --- a/testing/integration-tests/src/full_client/frame/contracts.rs +++ b/testing/integration-tests/src/full_client/frame/contracts.rs @@ -22,10 +22,12 @@ struct ContractsTestContext { type Hash = ::Hash; type AccountId = ::AccountId; +/// A dummy contract which does nothing at all. const CONTRACT: &str = r#" (module - (func (export "call")) + (import "env" "memory" (memory 1 1)) (func (export "deploy")) + (func (export "call")) ) "#; diff --git a/testing/integration-tests/src/full_client/frame/staking.rs b/testing/integration-tests/src/full_client/frame/staking.rs index d7eeb06611..7d285faa8a 100644 --- a/testing/integration-tests/src/full_client/frame/staking.rs +++ b/testing/integration-tests/src/full_client/frame/staking.rs @@ -35,39 +35,39 @@ fn default_validator_prefs() -> ValidatorPrefs { } #[tokio::test] -async fn validate_with_controller_account() { - let ctx = test_context().await; - let api = ctx.client(); - - let alice = dev::alice(); - - let tx = node_runtime::tx() - .staking() - .validate(default_validator_prefs()); - - api.tx() - .sign_and_submit_then_watch_default(&tx, &alice) - .await - .unwrap() - .wait_for_finalized_success() - .await - .expect("should be successful"); -} - -#[tokio::test] -async fn validate_not_possible_for_stash_account() -> Result<(), Error> { +async fn validate_with_stash_account() { let ctx = test_context().await; let api = ctx.client(); let alice_stash = get_from_seed("Alice//stash"); + let tx = node_runtime::tx() + .staking() + .validate(default_validator_prefs()); + + api.tx() + .sign_and_submit_then_watch_default(&tx, &alice_stash) + .await + .unwrap() + .wait_for_finalized_success() + .await + .expect("should be successful"); +} + +#[tokio::test] +async fn validate_not_possible_for_controller_account() -> Result<(), Error> { + let ctx = test_context().await; + let api = ctx.client(); + + let alice = dev::alice(); + let tx = node_runtime::tx() .staking() .validate(default_validator_prefs()); let announce_validator = api .tx() - .sign_and_submit_then_watch_default(&tx, &alice_stash) + .sign_and_submit_then_watch_default(&tx, &alice) .await? .wait_for_finalized_success() .await; @@ -80,41 +80,41 @@ async fn validate_not_possible_for_stash_account() -> Result<(), Error> { } #[tokio::test] -async fn nominate_with_controller_account() { - let ctx = test_context().await; - let api = ctx.client(); - - let alice = dev::alice(); - let bob = dev::bob(); - - let tx = node_runtime::tx() - .staking() - .nominate(vec![bob.public_key().to_address()]); - - api.tx() - .sign_and_submit_then_watch_default(&tx, &alice) - .await - .unwrap() - .wait_for_finalized_success() - .await - .expect("should be successful"); -} - -#[tokio::test] -async fn nominate_not_possible_for_stash_account() -> Result<(), Error> { +async fn nominate_with_stash_account() { let ctx = test_context().await; let api = ctx.client(); let alice_stash = get_from_seed("Alice//stash"); let bob = dev::bob(); + let tx = node_runtime::tx() + .staking() + .nominate(vec![bob.public_key().to_address()]); + + api.tx() + .sign_and_submit_then_watch_default(&tx, &alice_stash) + .await + .unwrap() + .wait_for_finalized_success() + .await + .expect("should be successful"); +} + +#[tokio::test] +async fn nominate_not_possible_for_controller_account() -> Result<(), Error> { + let ctx = test_context().await; + let api = ctx.client(); + + let alice = dev::alice(); + let bob = dev::bob(); + let tx = node_runtime::tx() .staking() .nominate(vec![bob.public_key().to_address()]); let nomination = api .tx() - .sign_and_submit_then_watch_default(&tx, &alice_stash) + .sign_and_submit_then_watch_default(&tx, &alice) .await .unwrap() .wait_for_finalized_success() @@ -129,7 +129,7 @@ async fn nominate_not_possible_for_stash_account() -> Result<(), Error> { } #[tokio::test] -async fn chill_works_for_controller_only() -> Result<(), Error> { +async fn chill_works_for_stash_only() -> Result<(), Error> { let ctx = test_context().await; let api = ctx.client(); @@ -142,14 +142,14 @@ async fn chill_works_for_controller_only() -> Result<(), Error> { .staking() .nominate(vec![bob_stash.public_key().to_address()]); api.tx() - .sign_and_submit_then_watch_default(&nominate_tx, &alice) + .sign_and_submit_then_watch_default(&nominate_tx, &alice_stash) .await? .wait_for_finalized_success() .await?; let ledger_addr = node_runtime::storage() .staking() - .ledger(alice.public_key().to_account_id()); + .ledger(alice_stash.public_key().to_account_id()); let ledger = api .storage() .at_latest() @@ -163,7 +163,7 @@ async fn chill_works_for_controller_only() -> Result<(), Error> { let chill = api .tx() - .sign_and_submit_then_watch_default(&chill_tx, &alice_stash) + .sign_and_submit_then_watch_default(&chill_tx, &alice) .await? .wait_for_finalized_success() .await; @@ -176,7 +176,7 @@ async fn chill_works_for_controller_only() -> Result<(), Error> { let is_chilled = api .tx() - .sign_and_submit_then_watch_default(&chill_tx, &alice) + .sign_and_submit_then_watch_default(&chill_tx, &alice_stash) .await? .wait_for_finalized_success() .await? @@ -193,11 +193,9 @@ async fn tx_bond() -> Result<(), Error> { let alice = dev::alice(); - let bond_tx = node_runtime::tx().staking().bond( - dev::bob().public_key().into(), - 100_000_000_000_000, - RewardDestination::Stash, - ); + let bond_tx = node_runtime::tx() + .staking() + .bond(100_000_000_000_000, RewardDestination::Stash); let bond = api .tx() diff --git a/testing/integration-tests/src/full_client/metadata/validation.rs b/testing/integration-tests/src/full_client/metadata/validation.rs index a263378ccf..e10e953d76 100644 --- a/testing/integration-tests/src/full_client/metadata/validation.rs +++ b/testing/integration-tests/src/full_client/metadata/validation.rs @@ -4,8 +4,9 @@ use crate::{node_runtime, test_context, TestContext}; use frame_metadata::v15::{ - ExtrinsicMetadata, PalletCallMetadata, PalletMetadata, PalletStorageMetadata, - RuntimeMetadataV15, StorageEntryMetadata, StorageEntryModifier, StorageEntryType, + CustomMetadata, ExtrinsicMetadata, OuterEnums, PalletCallMetadata, PalletMetadata, + PalletStorageMetadata, RuntimeMetadataV15, StorageEntryMetadata, StorageEntryModifier, + StorageEntryType, }; use scale_info::{ build::{Fields, Variants}, @@ -76,12 +77,23 @@ fn pallets_to_metadata(pallets: Vec) -> Metadata { v15_to_metadata(RuntimeMetadataV15::new( pallets, ExtrinsicMetadata { - ty: meta_type::>(), version: 0, signed_extensions: vec![], + address_ty: meta_type::<()>(), + call_ty: meta_type::(), + signature_ty: meta_type::<()>(), + extra_ty: meta_type::<()>(), }, meta_type::<()>(), vec![], + OuterEnums { + call_enum_ty: meta_type::<()>(), + event_enum_ty: meta_type::<()>(), + error_enum_ty: meta_type::<()>(), + }, + CustomMetadata { + map: Default::default(), + }, )) } @@ -114,7 +126,7 @@ async fn constant_values_are_not_validated() { // Modify the metadata. let metadata = modified_metadata(api.metadata(), |md| { - let mut existential = md + let existential = md .pallets .iter_mut() .find(|pallet| pallet.name == "Balances") diff --git a/testing/test-runtime/build.rs b/testing/test-runtime/build.rs index bdd45d08bc..3d3513dc81 100644 --- a/testing/test-runtime/build.rs +++ b/testing/test-runtime/build.rs @@ -37,7 +37,7 @@ async fn run() { // Download metadata from binary. Avoid Subxt dep on `subxt::rpc::types::Bytes`and just impl here. // This may at least prevent this script from running so often (ie whenever we change Subxt). - const V15_METADATA_VERSION: u32 = u32::MAX; + const V15_METADATA_VERSION: u32 = 15; let bytes = V15_METADATA_VERSION.encode(); let version: String = format!("0x{}", hex::encode(&bytes)); let raw: String = { diff --git a/testing/ui-tests/src/utils/mod.rs b/testing/ui-tests/src/utils/mod.rs index 5200b42d69..798c602a8f 100644 --- a/testing/ui-tests/src/utils/mod.rs +++ b/testing/ui-tests/src/utils/mod.rs @@ -7,8 +7,8 @@ mod metadata_test_runner; use frame_metadata::{ v15::{ - ExtrinsicMetadata, PalletMetadata, PalletStorageMetadata, RuntimeMetadataV15, - StorageEntryMetadata, + CustomMetadata, ExtrinsicMetadata, OuterEnums, PalletMetadata, PalletStorageMetadata, + RuntimeMetadataV15, StorageEntryMetadata, }, RuntimeMetadataPrefixed, }; @@ -24,9 +24,12 @@ pub fn generate_metadata_from_pallets_custom_dispatch_error RuntimeMetadataPrefixed { // We don't care about the extrinsic type. let extrinsic = ExtrinsicMetadata { - ty: meta_type::<()>(), version: 0, signed_extensions: vec![], + address_ty: meta_type::<()>(), + call_ty: meta_type::<()>(), + signature_ty: meta_type::<()>(), + extra_ty: meta_type::<()>(), }; // Construct metadata manually from our types (See `RuntimeMetadataV15::new()`). @@ -41,10 +44,13 @@ pub fn generate_metadata_from_pallets_custom_dispatch_error()); - registry.register_type(&meta_type::()); - registry.register_type(&meta_type::()); + let runtime_call = registry.register_type(&meta_type::()); + let runtime_event = registry.register_type(&meta_type::()); + let runtime_error = registry.register_type(&meta_type::()); // Metadata needs to contain this DispatchError, since codegen looks for it. registry.register_type(&meta_type::()); @@ -55,6 +61,14 @@ pub fn generate_metadata_from_pallets_custom_dispatch_error